有没有办法覆盖res / values中的strings.xml?

时间:2011-12-07 15:31:52

标签: android string translation

假设我有两个strings.xml个文件 - 一个用于英语,一个用于丹麦语。

虽然大多数用户可能对丹麦语翻译感到满意,但有些人不太喜欢英语翻译。

有没有办法覆盖Android默认的字符串资源选择?我希望有一个设置可以让用户忽略任何特定于语言的字符串资源,并且只能默认返回英语。

2 个答案:

答案 0 :(得分:5)

将您的默认Locale设置为English

public class MyApplication extends Application
{
    private Locale locale = null;

    @Override
    public void onConfigurationChanged(Configuration newConfig)
    {
        super.onConfigurationChanged(newConfig);
        if (locale != null)
        {
            newConfig.locale = locale;
            Locale.setDefault(locale);
            getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
        }
    }

    @Override
    public void onCreate()
    {
        super.onCreate();

        Configuration config = getBaseContext().getResources().getConfiguration();

        locale = new Locale("en-US");
        Locale.setDefault(locale);
        config.locale = locale;
        getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());

    }
}

答案 1 :(得分:1)

一种选择是更改应用内的区域设置

Changing Locale within the app itself

Locale appLoc = new Locale("en");
Locale.setDefault(appLoc);
Configuration appConfig = new Configuration();
appConfig.locale = appLoc;
getBaseContext().getResources().updateConfiguration(appConfig,
         getBaseContext().getResources().getDisplayMetrics());