Android应用程序国际化

时间:2022-10-21 21:38:17

前情提要

  在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.*

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应用程序国际化

参考:  Android App 多语言切换