국제화는 JavaScript에서 어떻게 작동합니까?


143

JavaScript로 국제화를 다루는 방법이 궁금합니다. 나는 봤지만 설득력있는 답변을 얻지 못했습니다 :

  • JavaScript는 국제화를 기본적으로 지원합니까?
  • JavaScript에서 i18n이란 무엇입니까?
  • 달력, 통화, 날짜 등을 처리하는 방법은 무엇입니까?

이미 JavaScript 내부의 국제화를 읽었습니다 .


Microsoft는 최근 jquery 세계화 플러그인을 출시했습니다. 자세한 내용은 여기
Adeel

답변:


161

레거시 브라우저의 현지화 지원이 좋지 않습니다. 원래 ECMAScript언어 사양의 문구는 다음과 같습니다.

Number.prototype.toLocaleString ()
호스트 환경의 현재 로케일 규칙에 따라 형식이 지정된 Number 값을 나타내는 문자열 값을 생성합니다. 이 함수는 구현에 따라 다르며 toString 과 동일한 것을 반환하는 것이 허용되지만 권장되지는 않습니다 .

사양에 정의 된 모든 현지화 방법은 "구현에 따라 다름"으로 정의되므로 많은 불일치가 발생합니다. 이 경우 Chrome Opera 및 Safari는와 동일한 것을 반환합니다 .toString(). Firefox와 IE는 로케일 형식의 문자열을 반환하며, IE에는 천 단위 구분 기호도 포함되어 있습니다 (통화 문자열에 적합). Chrome은 최근 고정 소수점이 없지만 수천으로 구분 된 문자열을 반환하도록 업데이트되었습니다.

현대 환경의 경우ECMAScript를 국제화 API 사양 , 보완 ECMA 스크립트 언어 사양은, 문자열 비교에 대한 더 나은 지원을 제공하는 새로운 표준, 번호가 서식하고, 날짜와 시간 포맷; 또한 언어 사양에서 해당 기능을 수정합니다. 소개는 여기 에서 찾을 수 있습니다 . 구현은 다음에서 사용할 수 있습니다.

  • 크롬 24
  • Firefox 29
  • 인터넷 익스플로러 11
  • 오페라 15

호환성 구현 인 Intl.js 도 있습니다. API는 아직 존재하지 않는 환경에서 API를 제공합니다.

현재 언어를 얻기위한 사양이 없기 때문에 사용자가 선호하는 언어를 결정하는 데 여전히 문제가 남아 있습니다. 각 브라우저는 언어 문자열을 얻는 방법을 구현하지만 사용자의 운영 체제 언어 또는 브라우저의 언어를 기반으로 할 수 있습니다.

// navigator.userLanguage for IE, navigator.language for others
var lang = navigator.language || navigator.userLanguage;

이를위한 좋은 해결 방법은 Accept-Language 헤더를 서버에서 클라이언트로 덤프하는 것입니다. JavaScript로 형식이 지정된 경우 국제화 API 생성자로 전달되어 자동으로 최상의 (또는 첫 번째 지원되는) 로캘을 선택합니다.

즉, 브라우저를 사용하여 작업을 수행 할 수 없기 때문에 많은 작업을 직접 수행하거나 프레임 워크 / 라이브러리를 사용해야 합니다.

현지화를위한 다양한 라이브러리 및 플러그인 :

  • 기타 :

자유롭게 추가 / 편집하십시오.


13
기여하는 모든 사람들에게 감사합니다. 예전 답변을 읽고 무언가를 배울 수 있다고 생각한 적이 없었습니다. 국제화 API 사양의 업데이트를 볼 수있어서 기쁩니다. 정말 훌륭하고 Chrome에서 테스트 드라이브를 테스트해야합니다.
Andy E

1
훌륭한 편집에 감사드립니다. : 아마도 FF28 - 모질라 곧) 현대 toLocaleString을 (제공 할 수와 같은 긍정적, 그것은 보이는 bugzilla.mozilla.org/show_bug.cgi?id=769871
크리스 아담스

1
i18next.com는 이제 상단에 내장 번역 관리와 함께 제공 locize.com -뿐만 아니라 악기 국제화에 대한 코드 - 당신은 완벽한 번역 과정을 해결해야하는 경우이 큰 승리가 될 수 있습니다. Plus에는 멋진 Incontext Editor 기능이 있습니다 ...
jamuhl

12

Mozilla는 최근 멋진 L20n 또는 현지화 2.0을 출시했습니다. 그들의 말로 L20n은

성별, 복수, 활용 및 기타 자연 언어의 기발한 요소를 처리하는 데 사용되는 공개 소스, 현지화 관련 스크립팅 언어

그들의 js 구현은 github L20n 저장소에 있습니다.


현지화가 필요한 프로젝트를 시작했으며 L20n도 사용하기로 결정했습니다.). 그래서 RequireJS 를 사용하는 경우 RequireJS ( github.com/fernandogmar/L20n-RequireJS ) 용 L20n 플러그인의 첫 번째 버전을 작성했습니다 . 나에게도 도움이되기를 바랍니다. 어떤 제안이라도 환영합니다.
Fernando Gm

0

그중 일부는 네이티브이며 나머지는 라이브러리를 통해 사용할 수 있습니다.

예를 들어 Datejs 는 훌륭한 국제 날짜 라이브러리입니다.

나머지는 언어 번역에 관한 것이며 JavaScript는 기본적으로 유니 코드와 호환됩니다 (모든 주요 브라우저).


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.