本地化无法在活动中

时间:2016-04-27 19:38:43

标签: android localization

我有一个问题,我有英语和西班牙语的资源。我已将语言环境设置如下:

 private Settings settings;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        settings = new Settings(LoadingScreenActivity.this);
        if(settings.isSpanish()){
            String languageToLoad  = "es"; // your language
            Locale locale = new Locale(languageToLoad);
            Locale.setDefault(locale);
            Configuration config = new Configuration();
            config.locale = locale;
        }
        setContentView(R.layout.activity_loading_screen);

我也在清单中设置了这个:

android:configChanges="locale|orientation|keyboardHidden|screenSize"

settings.isSpanish返回true。布局仍然显示英文文本,而不是西班牙语。

1 个答案:

答案 0 :(得分:0)

我可以通过onResume

执行此操作
@Override
protected void onResume() {
    super.onResume();
    settings = new Settings(WheelActivity.this);
    Log.e("isSpanish", String.valueOf(settings.isSpanish()));
    if(settings.isSpanish()){
        String languageToLoad  = "es"; // your language
        Locale locale = new Locale(languageToLoad);
        Locale.setDefault(locale);
        Configuration config = new Configuration();
        config.locale = locale;
        getBaseContext().getResources().updateConfiguration(config,
                getBaseContext().getResources().getDisplayMetrics());
    }
}

我认为它不是关于onResume而是这部分

getBaseContext().getResources().updateConfiguration(config,
            getBaseContext().getResources().getDisplayMetrics());

虽然我必须在所有活动中这样做。我不确定这是否是正确的方法。将等待更好的解决方案。