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 languagesList = new HashMap(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); } }