86

We are creating multi-language subsites on our website.

I would like to use the 2-letter language codes. Spanish and French are easy. They will get URLs like:

mydomain.com/es
mydomain.com/fr

but I run into a problem with Traditional and Simplified chinese. Are there standards for which 2 letter codes to use for these languages?

mydomain.com/zh
mydomain.com/?
4

4 に答える 4

183

@dkarp は優れた一般的な回答を提供します。中国語に関する詳細をいくつか追加します。

中国語が主要な文字言語である国がいくつかあります。両者の主な違いは簡体字か繁体字かですが、地域によって多少の違い(語彙など)もあります。これらを区別する標準的な方法は、国コードを使用することです。たとえばzh_CN、中国本土、zh_SGシンガポール、zh_TW台湾、zh_HK香港などです。

中国本土とシンガポールは簡体字を使用し、その他は繁体字を使用しています。中国と台湾は人口が最も多い 2 つであるため、ウェブサイトの簡体字バージョンと繁体字バージョンを区別するためzh_CNzh_TWよく使用されます。

技術的にはより正確ですが、実際には一般的に使用されていませんが、異なる国を区別することが意味のあるまれなケースを除いて、zh_HANS(一般的な) 簡体字と繁体字に使用することです。zh_HANT

于 2011-02-04T04:40:02.747 に答える
39

これには確かに標準的な表現があります。人々はあなたが見ているのとまったく同じ問題に遭遇したため、言語は同じで方言や文字が異なるため、2 文字の言語コードを 2 文字の地域コードで拡張しました。したがって、 に普遍的なフランス語のページがあるかもしれませんが、mydomain.com/frフランス系カナダ人の読者向けに国際化すると、mydomain.com/fr_CA(カナダ) とmydomain.com/fr_FR(フランス) が残る可能性があります。一部のプラットフォームでは、アンダースコアの代わりにダッシュを使用して、言語と地域コードを区切ります (したがってfr-CAfr-FR)。

簡体字中国語の標準ロケールはzh_CN. 繁体字中国語の標準ロケールはzh_TW.

実際のBCP 47標準ドキュメントを参照することをためらっています。詳細が少し重く、読みやすさが少し軽くなっているからです。Java で使用されているような標準のロケール識別子を使用するだけで問題ありません。

于 2011-02-04T04:01:11.863 に答える
3

言語はそれが話されている場所に依存しているため (doh!)、言語とロケール コードはその現実を反映しています。zhは基本的な言語コードですが、これには と の 2 つの主要な形式があるため、 と がありますがzh_Hanszh_Hantこれらは言語コードにすぎず、ロケールではありません。

ロケーション固有

特定の場所でどの言語が使用されているかを完全に指定するには、国コードの接尾辞を付ける必要があるためzh_Hans_HKzh_Hant_HK香港で話されている簡体字中国語と繁体字中国語をそれぞれ と にします。

実際には、国コードよりも具体的なものが多くの国で必要とされることが多いのが現実ですが、これにより、CLDR などのデータベースの複雑さとメンテナンスが指数関数的に増加する可能性が高く、IP から場所の詳細抽出など、データベースにフィードするためのサポート インフラストラクチャも増加する可能性があります。 、一般的に利用可能ではないか、十分に正確ではありません。

固定テキスト

現在、コードがユーザー インターフェイスで使用する固定文字列のセット、またはサイトのページ セット全体を指定するだけの場合、言語が異なる場所がいくつかない限り、国のサフィックスは実際には必要ありません。まったく別のリソースセットを作成するのに十分な (場所に基づく情報)。

リソース セットが大きくなればなるほど、ロケールに基づく言語コードが必要になる可能性が高くなります [このコンテキストでは、真のロケールではなく単なる言語属性なので、好きなように呼ぶことができます!]。必要な場合にのみ行う必要があります。

オンザフライ値

ただし、日付、時刻、通貨、数値などの特定の変数値をオンザフライでフォーマットしたい場合は、そのような機能をサポートするすべてのツール (Unicode CLDR データに基づくツールなど) がそれらを期待しているため、ロケールが重要になります。これらのロケールは、社内で生成された UI 言語を使用するように設定されているコードとは別の設定である必要があります。ただし、既知のロケールごとにリソース セットを作成し、うんざりするほど維持したい場合を除きます。

ブラウザ言語ツール

入力ボックスのように編集可能な Web ページのロケールを指定し、フィールドの属性または css でスペルチェックが有効になっている場合、ブラウザの言語ツールはそのロケールに従ってフィールドのスペルチェックを行うことに注意してください。

基準

リソースセットが提供するものを明確にする必要があるため、次のことを考慮してください。

  • 固定弦?言語のみ。
  • オンザフライでフォーマットしますか? ロケール。
  • 閲覧環境でスペルチェック?ロケール。
  • ページ全体/サブサイト? 言語のみ。大幅に異なるコンテンツが必要な場合はロケール (言語バリアントとして)。

メンテナンスのオーバーヘッドを最小限に抑えるスプレッドシート

スプレッドシートを使用して、各言語コードに親コードがある UI 文字列を保持し、そのバージョンの文字列のセルに、親から文字列を取得する数式が含まれるようにします。その言語と文字列のカスタム文字列を作成するには、セルの数式を正確なテキストで上書きするだけです。これにより、リソースのメンテナンスの量が最小限に抑えられます。最後に、各言語の完全なリソース ファイルを生成するマクロを実行します。

于 2017-01-07T04:09:55.077 に答える