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

来源:互联网 发布:数据清洗包括什么 编辑:程序博客网 时间:2024/05/17 22:14

一般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;    }

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

原创粉丝点击