关于Android应用内多语言切换的问题

一般Android多语言的切换,是通过在不同的语言环境下加载不同的资源。在不同的res/value-xx下放置不同语言的strings.xml实现字符的本地化,而这个value-xx目录的选择是根据Resource中的Configuration.Locale这项的值来决定的。这里说明除了一般切换外遇到的另外两种情况。
1.需求:不根据Android系统的Locale配置来改变应用的语言。这里我们可以直接调用Android开放的接口:

public static void alterSystemLanguage(Context context, String language) {
        if (context == null || TextUtils.isEmpty(language)) {
            return;
        }

        Resources resources = context.getResources();
        Configuration config = resources.getConfiguration();
        if (Locale.SIMPLIFIED_CHINESE.getLanguage().equals(language)) {
            config.locale = Locale.SIMPLIFIED_CHINESE;
        } else {
            config.locale = new Locale(language);
        }
        resources.updateConfiguration(config, null);
    }

2.需求:应用不随系统字体的改变而改变。这样也能避免当字体变大或者变小时对布局的影响,这里只需要重写getResources()方法即可。

@Override
    public Resources getResources() {
        Resources res = super.getResources();
        Configuration config = new Configuration();
        config.setToDefaults();
        res.updateConfiguration(config, res.getDisplayMetrics());
        return res;
    }

目前对多语言的切换需求接触到的只有以上,有其他的大家可以提出来。

你可能感兴趣的:(View)