Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改翻译应用程序的区域设置_Java_Android - Fatal编程技术网

Java 更改翻译应用程序的区域设置

Java 更改翻译应用程序的区域设置,java,android,Java,Android,我有一个应用程序,我已经翻译了es_es和en_US的@strings。问题是我不希望他们考虑到位置而改变。我的意思是:如果手机的语言环境是“es AR”或“cat_es”,我希望它是西班牙语,如果语言环境不是“es_XX”或“XX_es”,我希望它是英语。为了注意这些情况,我有以下布尔值: countryES =("ES".equals(Locale.getDefault().getCountry())|| "es".equals(Locale.getDefault().getLanguag

我有一个应用程序,我已经翻译了es_es和en_US的@strings。问题是我不希望他们考虑到位置而改变。我的意思是:如果手机的语言环境是“es AR”或“cat_es”,我希望它是西班牙语,如果语言环境不是“es_XX”或“XX_es”,我希望它是英语。为了注意这些情况,我有以下布尔值:

 countryES =("ES".equals(Locale.getDefault().getCountry())|| "es".equals(Locale.getDefault().getLanguage()));
如果应用程序必须以西班牙语显示,则此变量为true;如果应用程序必须以英语显示,则此变量为false。由于我已经使用android studio的“Locale in Editor”进行了翻译,我想知道如何更改本地语言,如下所示:

if(countryES)
{
    //Change local to es_ES
} 
else
{
     //Change local to en_US
}

最后,对我起作用的是以下几点(尽管可能还有其他选择):


只需使用
es
en
,而不使用
-rXY
作为文件夹名称。并删除文件夹中的所有其他值。两个选项中的一个(默认选项)可以设置为不带任何后缀。对不起,你能用另一种方式解释吗?我不理解你的建议。你的
strings.xml
文件位于你的
值xy rZK
中。只需从文件夹名称中删除
-rZK
部分即可。是的,但如果位置是一个或另一个,则可以使用一个字符串包,但这不是我想要的。问题是,考虑到我的变量,我想更改系统的位置配置以使用一些字符串或其他字符串,这就是我要做的(目前有5种语言)。您可以在首选项中选择语言,并在更新区域设置后重新启动活动。它立即起作用。下次启动应用程序时,它会读取首选项并相应地设置区域设置。
if(countryES)
{
    //Change local to es_ES
   Locale localeEs = new Locale("es");
                Locale.setDefault(localeEs);
                Configuration configEs = new Configuration();
                configEs.locale = localeEs;
                getBaseContext().getResources().updateConfiguration(configEs, getBaseContext().getResources().getDisplayMetrics());
} 
else
{
     //Change local to en_US
   Locale localeEs = new Locale("en");
                Locale.setDefault(localeEs);
                Configuration configEs = new Configuration();
                configEs.locale = localeEs;
                getBaseContext().getResources().updateConfiguration(configEs, getBaseContext().getResources().getDisplayMetrics());
}