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