package com.doumee.keyCabinet.utils;
|
|
import android.content.Context;
|
import android.content.res.Configuration;
|
import android.content.res.Resources;
|
import android.os.Build;
|
import android.text.TextUtils;
|
import android.util.DisplayMetrics;
|
|
import com.yuyh.library.imgsel.utils.LogUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import java.util.HashMap;
|
import java.util.Locale;
|
|
/**
|
* 功能描述:修改app内部的语言工具类
|
*/
|
public class LanguageUtil {
|
|
/*语言类型:
|
* 此处支持3种语言类型,更多可以自行添加。
|
* */
|
|
private static HashMap<String, Locale> languagesList = new HashMap<String, Locale>(2) {{
|
put("zh", Locale.CHINESE);
|
put("ru", new Locale("ru"));
|
}};
|
|
/**
|
* 修改语言
|
*
|
* @param context 上下文
|
* @param language 例如修改为 英文传“en”,参考上文字符串常量
|
* @param cls 要跳转的类(一般为入口类), Class<?> cls
|
*/
|
public static void changeAppLanguage(Context context, String language) {
|
if(StringUtils.isEmpty(language)){
|
language = "zh";
|
}
|
Resources resources = context.getResources();
|
Configuration configuration = resources.getConfiguration();
|
// app locale 默认简体中文
|
Locale locale = getLocaleByLanguage(language);
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
configuration.setLocale(locale);
|
} else {
|
configuration.locale = locale;
|
}
|
DisplayMetrics dm = resources.getDisplayMetrics();
|
resources.updateConfiguration(configuration, dm);
|
|
LogUtils.e("设置的语言:" + language);
|
//finish();
|
// 重启app
|
/*Intent intent = new Intent(context, cls);
|
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
context.startActivity(intent);*/
|
//加载动画
|
//activity.overridePendingTransition(R.anim.anim_right_in, R.anim.anim_left_out);
|
//activity.overridePendingTransition(0, 0);
|
}
|
|
/**
|
* 获取指定语言的locale信息,如果指定语言不存在
|
* 返回本机语言,如果本机语言不是语言集合中的一种,返回英语
|
*/
|
private static Locale getLocaleByLanguage(String language) {
|
if (isContainsKeyLanguage(language)) {
|
return languagesList.get(language);
|
} else {
|
Locale locale = Locale.getDefault();
|
for (String key : languagesList.keySet()) {
|
if (TextUtils.equals(languagesList.get(key).getLanguage(), locale.getLanguage())) {
|
return locale;
|
}
|
}
|
}
|
return Locale.CHINESE;
|
}
|
|
/**
|
* 如果此映射包含指定键的映射关系,则返回 true
|
*/
|
private static boolean isContainsKeyLanguage(String language) {
|
return languagesList.containsKey(language);
|
}
|
|
}
|