JavaScript로 국제화를 다루는 방법이 궁금합니다. 나는 봤지만 설득력있는 답변을 얻지 못했습니다 :
- JavaScript는 국제화를 기본적으로 지원합니까?
- JavaScript에서 i18n이란 무엇입니까?
- 달력, 통화, 날짜 등을 처리하는 방법은 무엇입니까?
이미 JavaScript 내부의 국제화를 읽었습니다 .
JavaScript로 국제화를 다루는 방법이 궁금합니다. 나는 봤지만 설득력있는 답변을 얻지 못했습니다 :
이미 JavaScript 내부의 국제화를 읽었습니다 .
답변:
레거시 브라우저의 현지화 지원이 좋지 않습니다. 원래 ECMAScript
언어 사양의 문구는 다음과 같습니다.
Number.prototype.toLocaleString ()
호스트 환경의 현재 로케일 규칙에 따라 형식이 지정된 Number 값을 나타내는 문자열 값을 생성합니다. 이 함수는 구현에 따라 다르며 toString 과 동일한 것을 반환하는 것이 허용되지만 권장되지는 않습니다 .
사양에 정의 된 모든 현지화 방법은 "구현에 따라 다름"으로 정의되므로 많은 불일치가 발생합니다. 이 경우 Chrome Opera 및 Safari는와 동일한 것을 반환합니다 .toString()
. Firefox와 IE는 로케일 형식의 문자열을 반환하며, IE에는 천 단위 구분 기호도 포함되어 있습니다 (통화 문자열에 적합). Chrome은 최근 고정 소수점이 없지만 수천으로 구분 된 문자열을 반환하도록 업데이트되었습니다.
현대 환경의 경우 는 ECMAScript를 국제화 API 사양 , 보완 ECMA 스크립트 언어 사양은, 문자열 비교에 대한 더 나은 지원을 제공하는 새로운 표준, 번호가 서식하고, 날짜와 시간 포맷; 또한 언어 사양에서 해당 기능을 수정합니다. 소개는 여기 에서 찾을 수 있습니다 . 구현은 다음에서 사용할 수 있습니다.
호환성 구현 인 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 저장소에 있습니다.
https://github.com/wikimedia/jquery.i18n 다른 라이브러리를 사용해 볼 수도 있습니다 .
매개 변수 대체 및 복수형 외에도 일부 언어에 필요한 맞춤 문법 규칙의 고유 한 기능인 성별을 지원합니다.