14

私は、定義された言語を持つ必要があるマイクロブログ プラットフォームでメッセージのスキーマを設計しています。これらのメッセージは、多くのノード間のネットワーク全体に分散されるため、スキーマをコンパクトにしながら完全に多言語にする必要があります。

IETF 言語コード(enなど)を使用en-AUしますが、効率化のために特定の表現方法があるかどうかを知る必要があります。言語タグには複数の標準がありますが、現在の仕様RFC 5646は、以前の標準との下位互換性を維持することによって複雑になっています。複数のサブタグがあるため、スペース要件が正確にはわかりません。

IETF 言語コードを表現する最もスペース効率の良い方法は何ですか?

4

1 に答える 1

19

ロケール コードを処理するための IETF 仕様は確かに業界の「ベスト コモン プラクティス」であると思いますが、下位互換性などを維持するために妥協がないわけではありません。最も重要な国際化ライブラリと標準 (Unicode、ICU) で使用されているため、ニーズに合わせて調整することをお勧めします。

BCP47/RFC5646セクション 4.4.1では、35 文字のタグの長さを推奨しています。

   language      =  8 ; longest allowed registered value
                      ;   longer than primary+extlang
                      ;   which requires 7 characters
   script        =  5 ; if not suppressed: see Section 4.1
   region        =  4 ; UN M.49 numeric region code
                      ;   ISO 3166-1 codes require 3
   variant1      =  9 ; needs 'language' as a prefix
   variant2      =  9 ; very rare, as it needs
                      ;   'language-variant1' as a prefix

   total         = 35 characters

              Figure 7: Derivation of the Limit on Tag Length

ただし、(日付や時刻の形式などのロケールに依存するデータの一部を示す地域情報ではなく) 言語とスクリプトのみに関心がある場合は、最大 13 文字で間に合わせることができます。

実際には、ほとんどのタグは言語の 2 文字だけになります。私が定期的に扱い、スクリプト サブタグを必要とする唯一の一般的な例はsr-Latn、and sr-Cyrl(それぞれ、ラテン語またはキリル文字で書かれたセルビア語)、zh-Hant(繁体字中国語)、およびzh-Hans(簡体字中国語) です。また、ほとんどの場合、これらのロケール コードの実世界の例のほとんどが 17 文字の制限に収まる必要があることを意味するバリアントは必要ありません。

于 2013-07-25T16:12:36.130 に答える