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