Java Can';我没有亚美尼亚人的名字

Java Can';我没有亚美尼亚人的名字,java,localization,calendar,locale,Java,Localization,Calendar,Locale,我想打印亚美尼亚月份的名字,但不起作用。这是我的代码: Locale loc = new Locale("hy"); Calendar cal = Calendar.getInstance(loc); System.out.println(cal.getDisplayName(Calendar.MONTH, Calendar.LONG_STANDALONE, loc)); 我试过很多其他的缩写词,比如“hye”或“arm”,但都不管用。其他语言,如俄语“ru”也可以。我不知道我做错了什么浏览O

我想打印亚美尼亚月份的名字,但不起作用。这是我的代码:

Locale loc = new Locale("hy");
Calendar cal = Calendar.getInstance(loc);
System.out.println(cal.getDisplayName(Calendar.MONTH, Calendar.LONG_STANDALONE, loc));

我试过很多其他的缩写词,比如“hye”或“arm”,但都不管用。其他语言,如俄语“ru”也可以。我不知道我做错了什么

浏览Oracles网站后,我发现了一个支持的语言和区域设置ID列表。JDK7语言环境似乎不支持您想要的语言


不支持此语言,但您可以按照指南创建自己的语言环境

这是
Locale.Builder

有一个示例,其中CLDR基于XML的语言环境数据已合并到JDK 8版本中,但默认情况下它是禁用的。 因此,如果您使用参数
-Djava.locale.providers=CLDR
运行代码,或者通过代码中的
java.locale.providers
系统.property
添加参数,则将支持
hy:amerian hy_AM:amerian

使用,默认情况下启用CLDR区域设置数据。因此,代码将在不添加任何系统属性的情况下运行。
希望这有帮助。

使用以下代码,您可以打印出所有受支持的
日历
区域设置(按languageTag排序):

不幸的是,在我的OracleJava8中,列表中没有亚美尼亚语言环境(以“hy”开头)

我们可以通过bg-bg-ca-ES-cs-CZ-da-DK-de-CH-de-de-de-GR-de-de-GR-de-el-CY-en-en-en-en-en-en-en-en-en-en-en-en-en-en-en-en-en-en-en-en-en-en-en-en-ZA-ES-ES-ES-e-e-e-e-e-e-e-e-e-e-e-e-e-e-e-e-e-c-e-e-e-e-e-e-e-e-e-e-e-e-e-e-e-e-如果你的身份证上写的是你的身份证,你的身份证上写的是你的身份证,你的身份证上写的是你的身份证吗如图所示,这是一个标准的空间,它是一个标准的空间,一个标准的空间,一个标准的空间,一个标准的空间,一个标准的空间,一个标准的空间,一个标准的空间,一个标准的空间,一个标准的空间,一个标准的空间,一个标准的空间,一个标准的空间,一个标准的空间

编辑: 使用Oracle Java 8和附加选项
-Djava.locale.providers=CLDR
,如中所建议 结果列表包含亚美尼亚语言环境(“hy”):

这是一个很好的例子,它是一个很好的例子。它是一个很好的例子。它是一个很好的例子。它是一个很好的例子。它是一个很好的例子在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内,在新西兰境内我的名字是什么?我的名字是什么?我的名字是什么?我的名字是什么?我的名字是什么在nl nl nl nl N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N这是一个很好的例子,它的意思是:你可以把你的名字改成中文,你可以把你的名字改成中文,也可以把你的名字改成中文


@Pallavi的答案对于Java-8和Java-9是正确的

但是,如果您使用的是Java-7,那么您可以通过设置自己的亚美尼亚语言专业版

您需要META-INF/services子目录中的一个文件,其名称如下:

META-INF/services/java.text.spi.DateFormatSymbolsProvider
此文件的内容应包含如下行(请根据上述服务提供商的实际实现类调整名称):

一旦您使用这个META-INF子结构创建了一个合适的jar库,亚美尼亚语的新服务提供者也将被查询


关于所需的文本资源,我已经将CLDR-v30-resources导入到我自己的库Time4J中。也许您可以从for Armenian(也包含用于月名的独立表单)中获利,并为您自己的服务提供商使用部分内容。

您是否按照我的回答中的建议使用参数-Djava.locale.providers=CLDR运行代码?您肯定会在列表中看到hy。@Pallavi我运行代码时没有使用此选项。感谢您指出。创建
Locale
-对象如何也会创建缺少的文本资源?我不认为,那么请告诉我和其他人如何向
Locale.Builder
提供有关亚美尼亚月份名称的任何信息(OP最终想要实现的目标)。我在API中没有看到关于这个主题的任何提示。我的印象是:您的答案与OP的问题并没有真正的联系。我不会在0之前编写一个准备好实现的代码,其他答案也指出有许多其他的方法来实现这一点。所以是的,在这个问题的时候,进化不再和我的答案有关。
META-INF/services/java.text.spi.DateFormatSymbolsProvider
mypackage.MyImplementationOfDateFormatSymbolsProvider