gpt4 book ai didi

javascript - 如何处理月份名称变化 - Angular 日期本地化

转载 作者:搜寻专家 更新时间:2023-11-01 04:30:19 24 4
gpt4 key购买 nike

我最近遇到了一个问题 - 在我的 Angular 应用程序的某些部分中,我必须以以下格式显示日期:MMMM yyyy,以及 Angular UI Bootstrap 的某些组件中框架。

基本问题是在某些语言中,主格和属格中月份的拼写不同。在我的例子中是波兰语、乌克兰语和俄语。

默认情况下,MMMM 代表属格中的月份名称,这通常是有道理的。

尽管我注意到在 Russian 的 Angular 语言环境文件中和 Polish语言有一个属性 STANDALONEMONTH ,正如我所见,它代表主格中的月份名称。 (尽管 Ukrainian 的文件缺少该部分)

虽然我不太确定如何使用它们。我的基本建议是为 dateFilter 使用装饰器。

所以问题是 - 是否有一个标准的 Angular 处理月份名称变形的方法,或者一个常用的解决方法,以便第三方库使用 $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) 中也有一个大小写正确的月份名称。虽然我不太确定它们在任何地方都被使用 - 无法找到用法,或者我可能遗漏了一些东西。

最佳答案

当我前段时间在 Angular 1.3 中处理类似问题时,我在内置语言环境服务中找不到任何内容,所以我通过手动创建一个包含正确大小写的翻译列表并通过以下方式引用来解决这个问题月号,类似于 {{monthNamesNominative[monthNumber]}},其中 var monthNamesNominative = ['Январь', 'Февраль', ...]。这里的额外好处是您可以直接控制字符串,如果您需要稍微不同的大小写,则不必进行额外的跳转。

话虽如此,Angular 1.5 中的语言环境服务在主格中有带月份名称的 LLLL 标记,并且似乎在你问这个问题四天后 bug Angular 中阻止其正确使用的问题已修复,从 1.5.1 版开始使用它可能会更好。

关于javascript - 如何处理月份名称变化 - Angular 日期本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35253058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com