3

是否有国际(或广泛使用的)标准代码来指定日历系统的名称?

我正在开发一个应用程序,该应用程序(除其他外)在多个日历系统中存储和显示历史日期,例如公历、犹太历、回历等。存储日期时,我需要能够说出它所在的日历系统。

我可以发明自己的系统,但是否已经存在类似于 ISO 639 的语言?经过相当长的搜索后,我无法找到任何东西,但也许我一直在使用错误的术语。

4

1 回答 1

3

有效问题;最好不要对此类事情使用任意代码。

您可以简单地使用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>

但您也可以调整 CLDR 数据定义中使用的方法,该方法包括使用名为RFC6067的BCP47(“用于识别语言的标签”)的扩展,用于“使用语言标签识别基于 Unicode 区域设置的变体。“单例”标识符因为这个扩展是'u'”。例如,泰语语言由 标识。因此,将语言环境标识为 Thai 并支持佛教日历:thth-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; IE

  { 'year': 1392, 'month': 6 , 'day': 31 , 'calendar': 'en-u-ca-persian' }
于 2013-09-22T04:01:51.353 回答