Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何处理月份名称变化-角度日期本地化_Javascript_Angularjs_Date_Localization_Angular Bootstrap - Fatal编程技术网

Javascript 如何处理月份名称变化-角度日期本地化

Javascript 如何处理月份名称变化-角度日期本地化,javascript,angularjs,date,localization,angular-bootstrap,Javascript,Angularjs,Date,Localization,Angular Bootstrap,我最近遇到了一个问题——在angular应用程序的某些部分,我必须以以下格式显示日期:MMMM-yyyy,以及框架的某些组件 基本问题是,在某些语言中,主格和属格的月份拼写不同。就我而言,那将是波兰人、乌克兰人和俄罗斯人 默认情况下,MMMM在属格格中表示月份名称,这通常是有意义的 虽然我注意到在和语言的angular locale文件中有一个属性STANDALONEMONTH,如我所见,它在Naminative中表示月份名称。(尽管的文件缺少该部分) 虽然我不太确定如何利用这些。 我的基本建议

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

基本问题是,在某些语言中,主格和属格的月份拼写不同。就我而言,那将是波兰人、乌克兰人和俄罗斯人

默认情况下,
MMMM
在属格格中表示月份名称,这通常是有意义的

虽然我注意到在和语言的angular locale文件中有一个属性
STANDALONEMONTH
,如我所见,它在Naminative中表示月份名称。(尽管的文件缺少该部分)

虽然我不太确定如何利用这些。 我的基本建议是为
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 locale文件中有一个适当大小写的月份名称(
STANDALONEMONTH
)。虽然我不太确定它们是否在任何地方使用过,但无法找到用法,或者可能我遗漏了一些内容。

我在Angular 1.3中处理类似问题时,在内置的locale服务中找不到任何内容,因此,我已经通过手动创建一个列表来解决了这个问题,列表中有适当的翻译,并按月份编号引用这些翻译,类似于
{monthnamesnaminative[monthNumber]}
其中
var monthnamesnaminative=['。这里的额外好处是,您可以直接控制字符串,如果您需要稍微不同的资本化,则不必进行额外的跳跃


话虽如此,Angular 1.5中的locale服务在主格中有带月名的
LLLL
标记,并且在您提出此问题四天后,似乎已修复了Angular中阻止其正确使用的问题,从版本1.5.1开始使用它可能会更好

不太清楚为什么如果包含了适当的
$locale
资源,您就看不到适当的值。可能需要一个演示help@charlietfl我得到了正确的价值观。当然在某种程度上。你说得对,我再举几个例子。谢谢。我个人对这些语言的细微差别都不熟悉。我可以想象,尽管许多其他人也遇到过这种情况。你检查过github的问题了吗?@charlietfl是的,我检查过angularjs和AngularUI/引导问题。尽管如此,由于angular locale文件中有一个
STANDALONEMONTH
属性,我想这种情况已经得到了处理。我正试图找出是否有一种处理这些问题的标准方法,因为我找不到。“在区域设置文件中有一个属性standaronemonth。尽管我不太确定如何使用这些属性。”在angular中,我可以看到新的日期元素'LLLL':一年中的独立月份(1-12月)。文档版本显示为v1.5.1-build.4664(快照)版本。在早期文档中,没有“LLLL”元素。在下一个公共构建中可能会添加“LLLL”。我认为语言环境文件刚刚修复。