繁体   English   中英

无法获得亚美尼亚月份名称

[英]Can't get armenian months names

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

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

我尝试了许多其他缩写,如“hye”或“arm”,但没有任何作用。 其他语言如俄语“ru”工作正常。 我不知道我做错了什么

JDK8中有一个增强功能,其中CLDR的基于XML的语言环境数据已合并到JDK 8版本中,但默认情况下禁用它。 所以,如果你带参数运行代码-Djava.locale.providers=CLDR或添加相同的通过java.locale.providers System.property在你的代码, hy: Armenian hy_AM: Armenian将得到支持。

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

在浏览了Oracles网站后,我找到了支持的倦怠和Locale_ID列表。 JDK7 Locale不支持您想要的萎靡不振。

http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html

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

这是Locale.Builder的javadoc

https://docs.oracle.com/javase/8/docs/api/java/util/Locale.Builder.html

使用以下代码,您可以打印出所有受支持的Calendar语言环境(按languageTag排序):

Locale[] locales = Calendar.getAvailableLocales();
Arrays.sort(locales, Comparator.comparing(Locale::toLanguageTag));
for (Locale locale : locales)
    System.out.print(" " + locale.toLanguageTag());

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

ar ar-AE ar-BH ar-DZ ar-EG ar-IQ ar-JO ar-KW ar-LB ar-LY ar-MA ar-OM ar-QA ar-SA ar-SD ar-SY ar-TN ar -YE be-BY bg bg-BG ca ca-ES cs cs-CZ da da-DK de de-AT de-CH de-DE de-GR de-LU el el-CY el-GR en en-AU en -CA en-GB en-IE en-IN en-MT en-NZ en-PH en-SG en-US en-ZA es ​​es-AR es-BO es-CL es-CO es-CR es-CU es- DO es-EC es-ES es-GT es-HN es-MX es-NI es-PA es-PE es-PR es-PY es-SV es-US es-UY es-VE et et-EE fi fi FI fr fr-FR fr-CA fr-CH fr-FR fr-LU ga ga-IE he he-IL hi hi-IN hr hr-HR hu hu-HU id id-ID is-IS it it-CH it -ITa ja-JP ja-JP-u-ca-japanese-x-lvariant-JP ko -o lt lt-LT lv lv-LV mk mk-MK ms ms-MY mt mt-MT nl nl-BE nl -NL nn-NO no no-NO pl pl-PL pt -t pt-PT ro-RO ru ru-RU sk sk-SK sl sl-SI sq sq-AL sr sr-BA sr-CS sr-Latn sr-Latn-BA sr-Latn-ME sr-Latn-RS sr-ME sr-RS sv sv-SE th th-TH th-TH-u-nu-thai-x-lvariant-TH tr tr-TR uk uk -UA und vi vi-VN zh zh-CN zh-HK zh-SG zh-TW

编辑:

使用Oracle Java 8和附加选项-Djava.locale.providers=CLDRPallavi的回答所示 ,结果列表包含亚美尼亚语区域设置(“hy”):

a af af NA-NA agq ak am ar-AE ar-BH ar-DZ ar-EG ar-IQ ar-JO ar-KW ar-LB ar-LY ar-MA ar-OM ar-QA ar-SA ar- SD ar-SY ar-TN ar-YE as as az az-Cyrl bas be-BY bem bez bg bg-BG bm bn bn-IN bo br brx bs byn ca ca-ES cgg chr cs cs-CZ cy da da -DK dav de de-AT de-CH de-DE de-GR de-LI de-LU dje dua dyo dz e e e el el-CY el-GR en en-AU en-BE en-BW en-BZ en- CA en-Dsrt en-GB en-HK en-IE en-IN en-JM en-MT en-NA en-NZ en-PH en-PK en-SG en-TT en-US en-US-POSIX en- ZA en-ZW eo es es-419 es-AR es-BO es-CL es-es es-CR es-CU es-DO es-EC es-ES es-GQ es-GT es-HN es-MX es- NI es-PA es-PE es-PR es-PY es-SV es-US es-UY es-VE et et-EE eu ewo fa fa-AF ff fi fi-FI fil fr fr BE-fr fr -CH fr-FR fr-LU fur ga ga-IE gd gl gsw gu guz gv ha haw he he-IL hi hi-IN hr hr-HR hu hu-hu hy ia id id-ID ig ii is-IS it it-CH it-IT ja ja-JP ja-JP-u-ca-japanese-x-lvariant-JP jmc ka kab kam kde kea khq ki kk kl kln km kn ko ko-KR kok ksb ksf ksh kw lag lg ln lo lt LT LT lu lu lu lu LV LV LV LV m m m m m m m m m m m m m m m m m m m m m m m m m m ms ms-BN ms-MY mt mt-MT mua my naq nb nd ne-IN nl nl-BE nl-NL nmg nn nn-NO no no-no nr nso nus nyn om or pa pa-Arab pl pl-PL ps pt -t pt-PT rm rn ro-RO rof ru ru-RU ru-UA rw rwk saq sbp se se se se sg shi shi-Tfng si sk sk-SK sl sl-SI sn so sq sq-AL sr sr-BA sr-CS sr-Cyrl-BA sr-Latn sr-Latn-BA sr-Latn-ME sr-Latn-RS sr-ME sr-RS ss s s st sv sv-FI sv-SE sw sw-KE swc ta te te th th TH TH TH TH TH T T T T T T T T T T T T T T T U U U U U U U U U U U U U U U U U U U U U U u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u -Latn vai vai-Latn ve vi vi-VN vun wae wal xh xog yav yo zh zh-CN zh-HK zh-Hans-HK zh-Hans-MO zh-Hans-SG zh-Hant zh-Hant-HK zh- Hant-MO zh-SG zh-TW zu

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

但是,如果您使用的是Java-7 ,则可以通过服务加载器机制设置专用于亚美尼亚语的自己的DateFormatSymbolsProvider

您将需要META-INF / services-subdirectory中的文件,就像这个名字一样:

META-INF/services/java.text.spi.DateFormatSymbolsProvider

并且此文件的内容应包含这样的行(请将名称调整为上面提到的服务提供者的真实实现类):

mypackage.MyImplementationOfDateFormatSymbolsProvider

一旦您创建了包含此META-INF子结构的相应jar库,就会查询亚美尼亚语的新服务提供商。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM