前情提要
在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
* 繁体中文 values-zh-rTW, 对应 Locale.TRADITIONAL_CHINESE
接下来使用 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); } }