Android国际化,简体和繁体切换

原理:

  • 不同语言的资源的实现,即string.xml的实现
  • 利用Locale改变系统的语言设置

首先:配置不同语言版本的资源

Android国际化,简体和繁体切换_第1张图片

1、创建values文件夹,不同国家的文件夹名字不一样 

Android国际化,简体和繁体切换_第2张图片

2、根据需要选择建立对应语言的资源文件夹,文件夹名称系统会自动生成 

Android国际化,简体和繁体切换_第3张图片

3、在对应的资源文件夹下面新建string.xml文件,不同语言的字符串资源的名称要一样,如下面的中文和繁体:

//简体资源

    语言


//繁体资源

    語言

通过以上步骤,资源文件已经准备好,接下去就是改变系统的语言环境,这就需要用到Locale

1、在MyApplication中设置

    /**
     * 初始化国际化语言,繁体字和简体字
     */
    private void initI18() {
        Resources resources = getResources();
        DisplayMetrics dm = resources.getDisplayMetrics();
        Configuration config = resources.getConfiguration();
        if (LanguageUtil.getCountry(getApplicationContext()).equals("TW")) {
            config.locale = Locale.TAIWAN;
        } else {
            config.locale = Locale.CHINESE;
        }
        resources.updateConfiguration(config, dm);
    }
这里需要注意的是,我是获取手机系统设置的语言,去判断简体或繁体。如果手机设置的是繁体,App为繁体,其他App是简体。实现简体或繁体,是通过获取国家去判断,当国家代码是TW时,代表的是台湾,即繁体字。

2、LanguageUtil代码

public class LanguageUtil {

    /**
     * 获取手机设置的语言国家
     * @param context
     * @return
     */
    public static String getCountry(Context context) {

        String country;
        Resources resources = context.getResources();
        //在7.0以上和7.0一下获取国家的方式有点不一样
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            //  大于等于24即为7.0及以上执行内容
            country = resources.getConfiguration().getLocales().get(0).getCountry();
        } else {
            //  低于24即为7.0以下执行内容
            country = resources.getConfiguration().locale.getCountry();
        }

        return country;
    }
}

通过以上步骤,就可以实现多语言了,需要其他语言,思路完全一致。

你可能感兴趣的:(Android)