无法将浏览器区域设置设置为java ResourceBundle

时间:2017-01-06 19:25:45

标签: java utf-8 resourcebundle

我用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”?

请提前建议并表示感谢

1 个答案:

答案 0 :(得分:0)

request.getLocale()返回Locale,而不是String。所以

locale.equals("ar")

将始终为false:只有String可以等于String。并且只有Locale可以等于Locale。

你可以这样做

if (locale.getLanguage().equals("ar"))

关于你的第二个问题,它当然由the javadoc回答。如果您阅读它,您将了解区域设置是一种语言,+一个可选的国家/地区,+一个可选的变体。并且有一个构造函数只使用一种语言作为参数。

阅读javadoc。这就是你学习的方式。