2010-06-21 7 views
134

JavaScript로 국제화를 처리하는 방법을 알고 싶습니다. 나는 봤지만 대답에 대한 설득력이 부족하지 않다.JavaScript에서 국제화는 어떻게 작동합니까?

  • JavaScript는 국제화를 기본적으로 지원합니까?
  • JavaScript에서 i18n이란 무엇입니까?
  • 캘린더, 통화, 날짜 등을 다루는 방법은 무엇입니까?

나는 이미 Internationalization inside JavaScript을 읽었습니다.

+0

마이크로 소프트에 있습니다. 자세한 내용은 [여기] (http://weblogs.asp.net/scottgu/archive/2010/06/10/jquery-globalization-plugin-from-microsoft.aspx) – Adeel

답변

149

레거시 브라우저에서 지역화 지원이 좋지 않습니다. 원래,이 때문에 다음과 같이 ECMA 스크립트 언어 사양의 문구로했다 :

Number.prototype.toLocaleString()를
가 에 따라 형식이 숫자의 값을 나타내는 문자열 값을 생성합니다 호스트 환경의 현재 로케일 관례. 이 함수는 구현에 의존하고, toString과 같은 것을 돌려주는 것이 허용되고 있습니다 만, 권장하지는 않습니다 ( ).

사양에 정의 된 모든 현지화 방법은 "구현에 따라 다름"으로 정의되어 많은 불일치가 발생합니다. 이 경우 Chrome Opera와 Safari는 .toString()과 동일한 결과를 반환합니다. Firefox와 IE는 로케일 형식의 문자열을 반환하며 Internet Explorer는 심지어 1000 단위 구분 기호 (통화 문자열에 적합)를 포함합니다. 고정 소수점이 없더라도 Chrome은 최근 수천 개의 구분 된 문자열을 반환하도록 업데이트되었습니다. ECMAScript Internationalization API spec, ECMA 스크립트 언어 사양을 보완하는 새로운 표준, 더 나은 문자열 비교에 대한 지원, 서식 번호, 날짜 및 시간 서식을 제공 현대 환경를 들어

; 또한 언어 스펙의 해당 기능을 수정합니다. 소개는 here입니다. 구현에 사용할 수 있습니다

  • 크롬 24
  • 파이어 폭스 29
  • 인터넷 익스플로러 11
  • 오페라 15

의 API를 제공하는 호환성 구현, Intl.js가 있는데, 환경이 아직 존재하지 않는 환경.

현재 언어를 가져 오기위한 사양이 없으므로 사용자의 기본 언어를 결정하는 것이 문제가됩니다.각 브라우저 언어 문자열을 얻을 수있는 방법을 구현하지만이 사용자의 운영 체제 언어를 기반으로 할 수 또는 브라우저의 단지 언어 :

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

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

요약하면 많은 작업을 직접 처리하거나 framework/library을 사용해야합니다. 브라우저를 사용하여 작업을 수행 할 수 없기 때문입니다. 현지화

다양한 라이브러리와 플러그인 : open community (NO 순서) 프로그램와 유지

부담없이 추가/편집하십시오.

+10

모든 사람들에게 기여 덕분에; 나는 나의 옛 대답을 읽음으로써 무언가를 배울 수 있다고 생각하지 못했습니다. 국제화 API 스펙에 대한 업데이트를 보니 기쁘다. 정말 대단하다. Chrome에서 테스트 해 보자. –

+0

훌륭한 편집을 해주셔서 감사합니다. 긍정적 인 말로, 모질라는 곧 현대의 toLocaleString()을 출시 할 것으로 보인다. - 아마도 FF28 : https://bugzilla.mozilla.org/show_bug.cgi?id=769871 –

+0

http://i18next.com은 이제 최상위 http://locize.com을 기반으로하는 번역 관리 - i18n을위한 코드를 계측하는 것뿐만 아니라 전체 번역 프로세스를 해결해야하는 경우 큰 이점이 될 수 있습니다. 플러스 좋은 Incontext 편집기 기능이 있습니다 ... – jamuhl

0

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

예를 들어 Datejs은 좋은 국제 날짜 라이브러리입니다.

나머지는 단지 언어 변환 뿐이며 JavaScript는 기본적으로 유니 코드 호환이 가능합니다 (모든 주요 브라우저는 물론).

+2

Datejs는 오래된 것입니다. 더 나은 시도 http://momentjs.com/ – jamuhl

0

https://github.com/wikimedia/jquery.i18n 다른 라이브러리를 사용해 볼 수도 있습니다.

매개 변수 대체 및 여러 개의 복수형 외에도 일부 언어에서 필요로하는 사용자 지정 문법 규칙의 고유 한 기능인 성별을 지원합니다.

10

모질라는 최근 멋진 L20n 또는 현지화 2.0을 발표했습니다.그들 자신의 말로 L20n은

입니다. 젠더, 복수형, 활용체 및 다른 자연어의 대부분을 처리하는 데 사용되는 오픈 소스, 현지화 관련 스크립팅 언어입니다.

그들의 JS 구현은 최근 JQuery와 세계화 플러그인을 발표했다 github L20n repository.

+0

나는 현지화가 필요한 프로젝트를 시작했고 우리는 L20n도 사용하기로 결정했습니다. 그래서 RequireJS (https://github.com/fernandogmar/L20n-RequireJS)를위한 L20n Plugin의 첫 번째 버전을 wrotten 했으므로 RequireJS를 사용할 경우에 대비하여 도움이되기를 바랍니다. 어떤 제안이라도 환영 할 것입니다. –

관련 문제