Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
Android正在更改中文和繁体中文的地区设置,但不起作用_Android_String_Localization - Fatal编程技术网

Android正在更改中文和繁体中文的地区设置,但不起作用

Android正在更改中文和繁体中文的地区设置,但不起作用,android,string,localization,Android,String,Localization,在我的应用程序中,我可以选择从中文转换为繁体中文 我使用的是spinner,位置1是中文,位置2是繁体中文。选择位置1时,以下是切换语言的代码 if (pos == 0) { langSelected ="en"; } else if (pos == 1) { langSelected ="zh"; } else if (pos == 2) { langSelected ="zh-rTW"; } Locale loc

在我的应用程序中,我可以选择从中文转换为繁体中文

我使用的是spinner,位置1是中文,位置2是繁体中文。选择位置1时,以下是切换语言的代码

if (pos == 0) 
{
   langSelected ="en";
}               
else if (pos == 1) 
{
   langSelected ="zh";
}               
else if (pos == 2)
{
  langSelected ="zh-rTW";
}
Locale locale = new Locale(lang);           
Locale.setDefault(locale);
android.content.res.Configuration config = new android.content.res.Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());

@Override
public void onConfigurationChanged(android.content.res.Configuration newConfig) 
{
    super.onConfigurationChanged(newConfig);
    if (locale != null){
        newConfig.locale = locale;
        Locale.setDefault(locale);
        getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
     }
}
使用spinner从英文切换到中文时,会加载正确的语言,但加载繁体中文(zh rTW)时,只加载中文文本

我在values zh中有我的简体中文文本,因为我在values zh rTW中加载了繁体中文文本

每种语言的应用程序名称都不同,因此我也尝试从设备设置更改语言,现在也可以用简体中文正确加载,但不能加载繁体中文。但在这里,应用程序名称更改为繁体中文,即应用程序名称从值zh rTW加载


哪里出了问题,我是否必须更改繁体中文文件夹?

根据我的经验,简体中文最好使用值zh rCN,繁体中文最好使用值zh rTW。此外,这可能已经是您在代码的其他地方所做的事情,手动更改区域设置需要重新加载活动才能生效。因此,一个简单的
Finish()
StartActivity()
就足够了。

我知道这是一篇迟发的帖子,但希望它能帮助别人

解决方案是简单地使用国家名称创建区域设置。这意味着
Locale
类已经声明了一些静态Locale。例如:-

中国地区-

台湾地区-

简言之,解决办法是:-

Locale locale;
if(lang.equals("zh-rTW"))
    locale = Locale.TAIWAN;
else(lang.equals("zh-rCN")
    locale = Locale.CHINA;
else
    //handle other languages

此代码更改简体中文和繁体中文的区域设置:

public void setAppLocale(Context context, String languageCode, String countryCode){
    Resources resources = context.getResources();
    Locale locale = new Locale(languageCode, countryCode);
    Locale.setDefault(locale);
    Configuration configuration = new Configuration();
    configuration.setLocale(locale);
    resources.updateConfiguration(configuration, resources.getDisplayMetrics());
}

你找到解决办法了吗?