【发布时间】:2016-02-07 11:47:44
【问题描述】:
我最近遇到了一个问题 - 在我的 Angular 应用程序的某些部分中,我必须以以下格式显示日期:MMMM yyyy,以及在 Angular UI Bootstrap 框架的某些组件中。
基本问题是在某些语言中,主格和属格中的月份拼写不同。就我而言,应该是波兰语、乌克兰语和俄语。
默认情况下,MMMM 代表属格中的月份名称,这通常是有道理的。
虽然我注意到在Russian 和Polish 语言的角度语言环境文件中,有一个属性STANDALONEMONTH,正如我所见,它代表主格中的月份名称。 (尽管Ukrainian 的文件缺少该部分)
虽然我不太确定如何使用这些。
我的基本建议是为dateFilter 使用装饰器。
所以问题是 - 是否有一个标准的方式来处理月份名称变形处理,或者常用的解决方法,以便使用 $locale 的第三方库将使用正确的月份名称.
示例
date: '2016-01-20'
en-us:
'dd MMMM yyyy' -> '20 January 2016'
'MMMM yyyy' -> 'January 2016'
uk-ua:
'dd MMMM yyyy' -> '20 січня 2016' // genitive case - it is fine
'MMMM yyyy' -> 'січня 2016' // wrong: should be 'січень 2016'
pl-pl:
'dd MMMM yyyy' -> '20 stycznia 2016' // genitive case - it is fine
'MMMM yyyy' -> 'stycznia 2016' // wrong: should be 'styczeń 2016'
如您所见 - 对于乌克兰语和波兰语,月份的名称在这两种情况下应该有不同的结尾。对于波兰语和俄语,在 Angular 语言环境文件 (STANDALONEMONTH) 中有一个正确大小写的月份名称。虽然我不太确定它们是否可以在任何地方使用 - 无法找到用途,或者我可能遗漏了一些东西。
【问题讨论】:
-
不太清楚为什么如果您包含正确的
$locale资源,您看不到正确的值。演示可能会有所帮助 -
@charlietfl 我得到了正确的值。当然在某种程度上。你是对的,我将添加示例。谢谢。
-
我个人甚至不熟悉这些语言的细微差别。我可以想象,尽管许多其他人都遇到了这个问题。你检查过github问题吗?
-
@charlietfl 是的,我检查了 angularjs 和 angular-ui/bootstrap 问题。不过,由于 Angular 语言环境文件中有一个
STANDALONEMONTH属性 - 我想这种情况已经得到处理。我试图弄清楚是否有处理这些问题的标准方法,因为我找不到任何方法。 -
“在语言环境文件中有一个属性 STANDALONEMONTH。虽然我不太确定如何使用这些属性。” 在角度 docs 我可以看到新日期元素“LLLL”:一年中的独立月份(1 月至 12 月)。文档版本显示为 v1.5.1-build.4664(快照)构建。在早期的文档中没有“LLLL”元素。可能会在下一个公共版本中添加“LLLL”。我认为语言环境文件刚刚修复。
标签: javascript angularjs date localization angular-bootstrap