PHP*_*Pst 9 php locale calendar internationalization
如您所知,ICU支持以下日历:
Japanese
Buddhist
Chinese
Persian
Indian
Islamic
Hebrew
Indian
Coptic
Ethiopic
Run Code Online (Sandbox Code Playgroud)
但是,IntlDateFormatter只将日历格式的格式转换为语言环境,并且不会自动转换日历,但可以向其发送日历,它可以完成.问题是我必须手动为每个区域设置找出日历系统.
如何从区域设置字符串中获取日历类型.例如发送fa_IR我需要获得'persian',所以将它发送到IntleDateFormatter以生成该语言环境的数据字符串.
简而言之; 你不能。为什么?
让我们看一下这两个对象是什么:
IntlDateFormatter是为执行各种区域设置感知操作而构建的国际化扩展的一部分。这些操作包括日期格式化程序和区域设置感知日历。
Locale class是用于获取语言、文化或特定区域行为的标识符。
尽管它们是同一扩展的一部分,但它们是正交的,如此处所述。这意味着您无法确定其中之一。这一说法在 ICU 项目提供的用户指南中得到了进一步证明。
... 目前,除了兼容性语言环境 th_TH_TRADITIONAL 和 ja_JP_TRADITIONAL 之外,所有语言环境都默认为公历。如果提供了“calendar”关键字,则该值将覆盖该区域设置的默认值。
正如引用所述,任何区域设置都默认为公历,除非提供“calendar”关键字,他们无法从自动提供的区域设置中派生日历。
您的问题的解决方案很可能是通过您自己构建包装器来找到的。互联网上有一些软件包可以帮助您解决此问题,但它离您真正想要的还差得很远。如果您需要保存日期,请将其另存为时间戳并以用户所需的格式显示,后者是指您可以自由地实施某些帐户设置或类似的设置。
GlobalizeJS是我在寻求答案时找到灵感的一个模块。有一个未解决的问题描绘了一幅有趣的图画,说明了正确的做法是多么困难。以阿拉伯联合酋长国(AE)为例,他们有五种日历偏好;公历、伊斯兰古拉、伊斯兰、伊斯兰民法和伊斯兰表格。我会让用户决定他们更喜欢哪个日历,这样它对他们来说最有用。
祝你好运!
| 归档时间: |
|
| 查看次数: |
201 次 |
| 最近记录: |