我用3种语言写网站,即英语,阿拉伯语和波斯语。我试图用相对语言向用户显示该网站。例如,如果浏览器语言是阿拉伯语,那么网站将以阿拉伯语显示,如果是波斯语,则将显示波斯语网站
这是我到目前为止所做的:
private Locale locale(){
Locale locale=null;
if(country == null){
locale = request.getLocale();
if(locale.equals("ar")){
locale = new Locale("ar", "AE");
}
else if(locale.equals("fa")){
locale = new Locale("fa", "IR");
}
else if(locale.equals("en")){
language = "en";
locale = new Locale("en", "US");
}
}else{
locale = new Locale(language, country);
}
System.out.println("return---locale=>"+locale);
return locale;
}
此方法打印locale=>ar
ResourceBundle rb = ResourceBundle.getBundle("LabelBundles.Labels",locale());
if(country == null){}
阻止无效,else{
工作正常。
locale = new Locale(language, country);
}
2)locale = request.getLocale();
输出为“ar”而locale = new Locale();
需要两个language
_ COUNTRY
值,那么为什么只有没有国家/地区才会将输出设为“ar”?
请提前建议并表示感谢
答案 0 :(得分:0)
request.getLocale()返回Locale,而不是String。所以
locale.equals("ar")
将始终为false:只有String可以等于String。并且只有Locale可以等于Locale。
你可以这样做
if (locale.getLanguage().equals("ar"))
关于你的第二个问题,它当然由the javadoc回答。如果您阅读它,您将了解区域设置是一种语言,+一个可选的国家/地区,+一个可选的变体。并且有一个构造函数只使用一种语言作为参数。
阅读javadoc。这就是你学习的方式。