有効な質問です。そのようなものに任意のコードを使用しないことは常に良いことです。
CLDR が使用する属性の値をname
単純に使用できます。
<key name="ca" description="Calendar algorithm key" alias="calendar">
<type name="buddhist" description="Thai Buddhist calendar"/>
<type name="chinese" description="Traditional Chinese calendar"/>
<type name="coptic" description="Coptic calendar"/>
...
<type name="islamicc" description="Civil (algorithmic) Arabic calendar" deprecated="true" preferred="islamic-civil" alias="islamic-civil"/>
</key>
しかし、 「言語タグを使用して Unicode ロケールベースのバリエーションを識別するために、RFC6067と呼ばれる BCP47 (「言語を識別するためのタグ」)の拡張を使用することからなる、CLDR データ定義で使用された方法を適応させることもできます。「シングルトン」識別子この拡張子は「u」です。たとえば、タイ語は で識別されます。したがって、仏暦をサポートするタイ語としてロケールを識別します。th
th-u-ca-buddhist
th-u-ca-buddhist
| | |
| | +--> Calendar name (values in CLDR bcp47/calendar.xml).
| +-----> 2 char key defining extension to follow (here "ca" for calendar).
+--------> Identifies that extension U values are to follow.
さらにいくつかの拡張使用例:
fa-u-ca-islamic-rgsa
: イスラム暦のペルシア語、サウジアラビアの目撃情報。
fa-u-ca-persian
: ペルシャ暦のペルシア語。
fa_AF-u-ca-persian
: ペルシャ暦のペルシア語 (アフガニスタン)。
明らかに、それが含まれているカレンダーの日付と識別子を保存するだけの場合は、en
;を使用できます。すなわち
{ 'year': 1392, 'month': 6 , 'day': 31 , 'calendar': 'en-u-ca-persian' }