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

Not able to set browser locale to java 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{<br> locale = new Locale(语言, 国家); } 工作正常。

2) locale = request.getLocale(); 输出是 "ar" 而 locale = new Locale(); 需要两个值,即 language_COUNTRY 所以为什么输出为 "ar"只有没有国家?

敬请指教,敬请期待

request.getLocale() returns 语言环境,而不是字符串。所以

locale.equals("ar")

永远是假的:只有一个字符串可以等于一个字符串。并且只有 Locale 可以等于 Locale。

但是你可以

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

关于你的第二个问题,the javadoc当然已经回答了。如果您阅读它,您将了解到语言环境是一种语言,+ 一个可选的国家,+ 一个可选的变体。并且有一个仅以一种语言作为参数的构造函数。

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