原生iOS解决方案
Language SDK 使用文档
Language SDK 是一个应用语言切换框架,通过 LanguageController 类可实现对应用语言的初始化和修改,获取应用当前语言码和系统语言码。
引入
工程根目录的 build.gradle:
allprojects {
repositories {
maven { url 'http://artifactory.jd.com/libs-releases-local/' }
}
}
module build.gradle:
dependencies {
compile 'com.jingdong.wireless.jdsdk:android-sdk-language:1.7.5'
}
初始化语言
在每个 Activity 和 Application 的 attachBaseContext()
方法中通过 LanguageController.createLanguageContext()
设置语言,
@Override
public void attachBaseContext(Context base) {
super.attachBaseContext(base = LanguageController.createLanguageContext(base));
...
}
- SDK 会从 SharedPreferences 中获取应用保存的语言设置,如果没有相关设置时将使用 "follow_system" (跟随系统);
- 如果 SharedPreferences 中没有相关设置时不希望应用跟随系统,可以使用带两个参数的
LanguageController.createLanguageContext(Context, String)
,第二个参数为默认语言码,在没有语言相关设置时会使用; - SDK 内部提供了四种语言码(将跟随系统也视为一种语言码):
LanguageController.LANGUAGE_CODE_EN_US
(en_US, 英文)LanguageController.LANGUAGE_CODE_ZH_CN
(zh_CN, 中文)LanguageController.LANGUAGE_CODE_TH_TH
(th_TH, 泰文)LanguageController.LANGUAGE_CODE_FOLLOW_SYSTEM
(follow_system, 跟随系统)
- 你还可以设置其他语言码
说明
语言码:每种语言的标识,由语言和国家两部分组成,类中涉及到的语言码均是“languagecountry”形式,如
zh_CN
(简体中文),zh
(小写)代表中文,CN
(大写)代表中国,两者用 `` (下划线)连接
切换语言
LanguageController.setAppLanguageCode(Context context, String languageSetting, String classNameOfActivityToResart)
LanguageController.setAppLanguageCode(Context context, String languageSetting, Class classOfActivityToResart)
应用可通过上面两个方法改变语言:
- 第一个参数为当前上下文;
- 第二个参数为要切换的语言码;
- 第三个参数为 Activity 的class对象或全称类名(应为应用的首页)
更新语言后 SDK 会销毁所有 Activity 并启动第三个参数指定的 Activity
其他接口介绍
LanguageController 类其他接口:
方法 | 参数 | 返回值 |
---|---|---|
public static String getDefaultLanguageSetting() | 获取应用默认语言码,如果没有设置返回 follow_system |
|
public static String getLanguageCodeSetting(Context) | 上下文对象 | 获取应用当前的语言设置 |
public static String getAppLanguageCode(Context) | 上下文对象 | 获取应用当前使用的语言码 |
public static boolean isAppCurrentLanguage(Context, String) | 上下文对象,语言码 | 判断应用是否在使用指定语言 |
public static String getSystemLanguageCode() | 获取系统语言码 | |
public static boolean isSystemCurrentLanguage(String) | 语言码 | 判断系统是否在使用指定语言 |
混淆配置
如果项目打包时需要混淆代码,请在混淆配置文件中添加如下配置:
# Language sdk
-keep class com.jingdong.sdk.language.** {*;}