1. ホーム
  2. javascript

[解決済み] JavaScriptの国際化はどのように行われるのですか?

2022-05-12 06:25:20

質問

JavaScriptで国際化を行うにはどうしたらいいのでしょうか。ググってみたのですが、納得のいく回答が得られません。

  • JavaScript は国際化のネイティブ サポートを持っていますか?
  • JavaScript の国際化とは何ですか?
  • カレンダー、通貨、日付などをどのように扱うか?

私はすでに JavaScript内部の国際化 .

どのように解決するのですか?

レガシーブラウザのローカライズサポートは貧弱です。 元々、これは ECMAScript 言語仕様にある次のようなフレーズが原因でした。

Number.prototype.toLocaleString()を使用します。

ホスト環境の現在のロケールの規則に従ってフォーマットされたNumberの値を表す文字列値を生成します。 の値を表す文字列を生成する。この関数は実装に依存しています。 と同じものを返すことは許されますが、推奨されません。 toString .

仕様で定義されているすべてのローカライゼーション メソッドは "実装依存" として定義されており、多くの不整合が発生しています。 この例では、Chrome、Opera、Safari は同じものを返します。 .toString() . Firefox と IE はロケール形式の文字列を返し、IE には 1000 のセパレータ (通貨文字列に最適) も含まれています。 Chrome は最近更新され、固定小数点はありませんが、千単位で区切られた文字列が返されるようになりました。

モダンな環境のために というように ECMAScript 国際化 API 仕様 は、ECMAScript 言語仕様を補完する新しい規格で、文字列比較、数値フォーマット、日付と時刻のフォーマットをより良くサポートするもので、言語仕様の対応する関数も修正されています。その紹介は はこちら . で実装が可能です。

  • クローム 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としてフォーマットされた場合、Internationalization APIのコンストラクタに渡すことができ、自動的に最適な(または最初にサポートされた)ロケールを選びます。

要するに、多くの作業を自分で行うか、あるいは フレームワーク/ライブラリ を使用する必要があります。なぜなら、ブラウザに頼ることはできないからです。

ローカライズのための様々なライブラリやプラグインです。

  • その他

自由に追加/編集してください。