gpt4 book ai didi

java - 为什么 ResourceBundle.getBundle(String, Locale) 会忽略 Locale?

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

我在向我的网站添加多语言时遇到了一些问题。

它在带有 jSTL 的 .jsp 文件上运行良好,但是当我尝试使用 Java 代码获取翻译时,它会忽略 Locale 参数,并使用客户端浏览器区域设置。

我有:

两个属性文件:dictionary.properties,包含:validate.firstname.empty=您必须输入名字dictionary_nl.properties,包含:validate.firstname.empty=U heeft geen voornaam ingevuld

还有这段 Java 代码:

public List<String> validate(UserForm user, Locale locale)
{
List<String> errors = new ArrayList<>();
ResourceBundle resources = ResourceBundle.getBundle("dictionary", new Locale("en"));

if (user.getFirstName() == null || user.getFirstName().trim().isEmpty())
{
errors.add(resources.getString("validate.firstname.empty"));
}
return errors;
}

出于测试目的,我在 getBundle 中插入了一个新的 Locale 实例,但如果我的浏览器设置为荷兰语,它仍然返回荷兰语翻译,如果浏览器设置为英语。

最佳答案

实际上 getBundle() 不会忽略语言环境,它只是在您的配置中似乎忽略了它

因为您的配置中没有 dictionary_en.properties 文件,语言“en”的 Locale 将不会影响 ResourceBundle 文件搜索。

改为使用 new Locale("nl") 进行测试,无论您在浏览器中设置何种语言,您都将始终获得荷兰语翻译。

文档中的更多详细信息:
http://docs.oracle.com/javase/6/docs/api/java/util/ResourceBundle.html#getBundle%28java.lang.String,%20java.util.Locale,%20java.lang.ClassLoader%29

关于java - 为什么 ResourceBundle.getBundle(String, Locale) 会忽略 Locale?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20240946/

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