假设您有一个包含菜肴的菜单,每道菜都应该以多种语言提供(法语、英语、阿拉伯语……)。Dish类包含一个列表Language类型对象。classDish{ListlanguagesvoidaddLanguage(Languagelg){...}}classLanguage{getDescription(){}}classFrenchextendsLanguage{}classMenu{Listdishes}如何避免使用instanceof什么时候需要对那道菜的特定语言的描述?我是否应该在dish类中为每种语言定义一个get方法:getFrench()、getArabic(),..?或者我
我有一个Action类,我想获取我的应用程序的语言环境并在此处更改它,但我不知道如何做,也找不到答案。我可以使用super.getLocale().toString();获取当前语言环境但是我不知道如何设置语言环境。publicclassLoginActionextendsActionSupport{privateStringlogin;privateStringpassword;privateStringlanguage;@OverridepublicStringexecute()throwsException{Stringresult=Factory.INSTANCE.getUse
在Java8中使用特定的Locale格式化LocalDate可以像这样实现:DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT).withLocale(myLocale).format(value);DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).withLocale(myLocale).format(value);DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG).withLocale(myLocale).format(v
我正在使用java.util.ResourceBundle类和属性文件对Web应用程序进行本地化。我有两个语言环境,fr_FR和en_US,我想使用en_US作为默认值,所以我编写了以下文件:messages_fr_FR.properties和fr_FR消息messages.properties包含en_US消息我的问题是ResourceBundle.getBundle(BUNDLE_NAME,locale)方法回退Locale.getDefault()在使用默认属性文件之前,这意味着如果JVMLocale设置为fr_FR,ResourceBundle.getBundle("name"
我正在尝试使用SimpleDateFormat读取表示希腊日期时间的字符串(例如“28Μαρτίου2014,14:00”),但它会抛出java.text。ParseException:无法解析的日期:“28μαρτίου2014,14:00”错误。这是一个示例代码:Localelocale=newLocale("el-GR");SimpleDateFormatformatter=newSimpleDateFormat("ddMMMMyyyy,HH:mm",locale);try{sDate=(Date)formatter.parse("28Μαρτίου2014,14:00");}c
我想打印所有可用语言的排序波兰语名称。importjava.util.*;publicclassTmp{publicstaticvoidmain(String...args){Locale.setDefault(newLocale("pl","PL"));Locale[]locales=Locale.getAvailableLocales();ArrayListlangs=newArrayList();for(Localeloc:locales){Stringlng=loc.getDisplayLanguage();if(!lng.trim().equals("")&&!langs.c
我想使用数据库来存储i18n键/值对,以便我们可以在运行时修改/重新加载i18n数据。有没有人这样做过?或者有人知道如何实现这个吗?我已经阅读了几个关于此的主题,但我还没有看到可行的解决方案。我特别指的是一些可以与jSTL标签一起工作的东西,比如我认为这将涉及扩展ResourceBundle,但是当我尝试这样做时,我遇到了与jSTL标签获取资源包的方式有关的问题。 最佳答案 在danb的帮助下,我终于搞定了。这是我的资源包类和资源包控制类。我使用了@[danb]的这段代码。ResourceBundlebundle=ResourceB
我正在生成一个语言环境列表并使用java.util.Locale打印出它们的本地显示语言(即将ja_JP打印为日本语)。我注意到zh_CN(简体中文)和zh_TW(繁体中文)都本地化为中文,而不是简体中文和繁体中文。有没有办法让这些语言环境包含简体和繁体的前缀字符,而无需硬编码zh_CN应该是简体中文,zh_TW应该是繁体中文?我知道我可以打印出语言+国家(即中文(中国),但这并不完全相同。这是一个java片段,证明它们是相同的:importjava.util.Locale;publicfinalclasstest{publicstaticvoidmain(String[]args){
我有这些代码行:Locale[]cosas=Locale.getAvailableLocales();for(inti=0;i我得到这个列表:ms_MYar_QAis_ISfi_FIplen_MTit_CHnl_BEar_SAar_IQes_PRes_CLfide_ATdaen_GBes_PAsrar_YEmk_MKmken_CAvi_VNnl_NLes_USzh_CNes_HNen_USfrtharar_MAlvdein_IDhren_ZAko_KRar_TNinjasr_RSbe_BYzh_TWar_SDptisja_JP_JP_#u-ca-japanesees_BOar_DZms
我们有一个案例,其中运行使用1.8.0_092的Java8应用程序的PC从Locale.getDefault()返回null。虽然处理这个很简单,但我更担心返回null,因为documentation对于该方法并不表示null是可能的。我们没有从java命令行设置语言环境,也没有在任何地方调用setDefault()。此安装中Locale.getDefault()会返回null可能有什么问题?我没有正确阅读Java文档吗? 最佳答案 查看JDK1.8.0_092的源代码,我看到Locale.getDefault()返回的值来场def