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

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

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

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



답변

레거시 브라우저의 현지화 지원이 좋지 않습니다. 원래 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 생성자로 전달되어 자동으로 최상의 (또는 첫 번째 지원되는) 로캘을 선택합니다.

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

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

  • 기타 :

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


답변

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

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

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


답변

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

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

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


답변

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

매개 변수 대체 및 복수형 외에도 일부 언어에 필요한 맞춤 문법 규칙의 고유 한 기능인 성별을 지원합니다.


답변