前情提要

  在Android应用程序中, 可以轻松更改语言, 以适应国际化标准

  一些用户拥有多种语言习惯, 因此, 应用程序不能依赖设备默认语言环境, 必须提供更改显示语言的程序功能

  本文章探寻持久化语言

相关类

  - JDK类

java.util.Local

  - Android SDK类 

android.content.res.Resources

android.content.res.Configuration

操作步骤

  首先我们知道values下的strings.xml是通用字符串, 如果你的应用程序流向没有提供本地化支持的国家, 那么这可能就是这些国家用户看到的字符串了, 通常是English

  其它本地化支持命名规则为 values-语言代号-r区域代号, 如

    * 日语 values-ja-rJP, 对应 Locale.JAPAN     !注意  Locale.JAPANESE (x)

    * 繁体中文 values-zh-rTW, 对应 Locale.TRADITIONAL_CHINESE 或 Locale.TAIWAN 

 

android 国际化 Android国际化Java_android 国际化

  接下来使用 Resources 对象的 updateConfiguration() 方法更新本地语言

public class App extends Application {
    public static Context app = null;
    public static Locale dflocale = null;

    @Override
    public void onCreate() {
        super.onCreate();
        app = this;
        locale();
    }

    // 更改本地化語言
    private void locale() {
        Resources res = getResources();
        Configuration cf = res.getConfiguration();
        dflocale = Locale.getDefault();
        Log.e("默認語言", dflocale.toString());  


        cf.locale = Locale.TRADITIONAL_CHINESE; // 台灣中文
        res.updateConfiguration(cf, res.getDisplayMetrics());
    }
}

 

public class Test {
    public static void test() {
        Resources rs = App.app.getResources();
        Configuration config = rs.getConfiguration();

        config.locale = App.dflocale;
        rs.updateConfiguration(config, rs.getDisplayMetrics());
        String s = rs.getString(R.string.app_name);
        Log.e("默認語言", s);

        config.locale = Locale.JAPAN;
        rs.updateConfiguration(config, rs.getDisplayMetrics());
        s = rs.getString(R.string.app_name);
        Log.e("日語", s);
    }
}

android 国际化 Android国际化Java_Android_02

 

android 国际化 Android国际化Java_Android_03