7

マイクロブロギングプラットフォームでメッセージ用のスキーマを設計していますが、これには定義済みの言語が必要です。これらのメッセージは多くのノード間でネットワークに分散されるため、スキーマをコンパクトにする必要がありますが、それでも完全に多言語にする必要があります。IETF言語コードにはどのようなデータ型を使用する必要がありますか?

IETF language codesenen-AUなど)を使用しますが、効率を高めるために具体的な表現方法があるかどうかを知る必要があります。言語タグには複数の標準がありますが、現在の仕様RFC 5646は、以前の標準との下位互換性を維持することによって畳み込まれています。複数のサブタグがあるので、私はスペース要件を正確に理解していません。

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

答えて

9

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

BCP47/RFC5646 section 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-Latnsr-Cyrl(それぞれ、ラテンまたはキリル文字で書かれたセルビア語)、zh-Hant(繁体字中国語)、zh-Hans(簡体字中国語)です。また、ほとんどの場合、これらのロケールコードの実際の例のほとんどが17文字の制限に該当することを意味するバリエーションは必要ありません。

関連する問題