package com.hdl.photovoltaic.utils;
|
|
import android.content.Context;
|
import android.content.Intent;
|
import android.content.res.Configuration;
|
import android.content.res.Resources;
|
import android.os.Build;
|
import android.os.LocaleList;
|
import android.text.TextUtils;
|
import android.util.DisplayMetrics;
|
|
|
import java.util.Locale;
|
|
/**
|
* 多语言适配
|
*/
|
public class LocalManageUtil {
|
|
public static final String zh = "zh";//中文
|
public static final String en = "en";//英文
|
|
// private static Locale mLocale;
|
|
/**
|
* 获取系统的locale
|
*
|
* @return Locale对象
|
*/
|
public static Locale getSystemLocale(Context context) {
|
Locale locale;
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
locale = LocaleList.getDefault().get(0);
|
} else {
|
locale = Locale.getDefault();
|
}
|
return locale;
|
}
|
//
|
// public static Context setLocal(Context context) {
|
// return updateResources(context, mLocale);
|
// }
|
//
|
// public static Context updateResources(Context context, Locale locale) {
|
// if (locale == null) {
|
// return context;
|
// }
|
// LocalManageUtil.mLocale = locale;
|
// Locale.setDefault(locale);
|
//
|
// Resources res = context.getResources();
|
// Configuration config = new Configuration(res.getConfiguration());
|
// config.setLocale(locale);
|
// context = context.createConfigurationContext(config);
|
// return context;
|
// }
|
|
|
/**
|
* 应用内切换语言
|
*
|
* @param language language (zh:汉语;en:英语)
|
* @param context 上下文
|
*/
|
public static void changeAppLanguage(String language, Context context) {
|
Locale locale = getLocale(language);
|
updateResources(locale, context);
|
}
|
|
|
/**
|
* 获取系统当前语言
|
*
|
* @return _
|
*/
|
public static Locale getDefaultLocale() {
|
return Resources.getSystem().getConfiguration().locale;
|
}
|
|
/**
|
* 获取Locale
|
*
|
* @param language (zh:汉语;en:英语)
|
* @return Locale
|
*/
|
public static Locale getLocale(String language) {
|
try {
|
if (TextUtils.isEmpty(language)) {
|
return getDefaultLocale();
|
}
|
return new Locale(language);
|
} catch (Exception e) {
|
return getDefaultLocale();
|
}
|
|
|
}
|
|
/**
|
* 更新资源数据
|
*
|
* @param locale 语言实体类
|
* @param context 上下文
|
* @return -
|
*/
|
private static void updateResources(Locale locale, Context context) {
|
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
|
//7.0以下系统
|
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
|
Configuration configuration = context.getResources().getConfiguration();
|
configuration.setLocale(locale);
|
context.getResources().updateConfiguration(configuration, metrics);
|
// Locale.setDefault(locale);
|
} else {
|
//7.0及以上系统
|
Configuration configuration = context.getResources().getConfiguration();
|
configuration.setLocale(locale);
|
configuration.setLocales(new LocaleList(locale));
|
context.createConfigurationContext(configuration);
|
}
|
|
}
|
|
/**
|
* 设置当前APP的语言模式
|
*
|
* @param context 上下文
|
*/
|
private static void setCurrLanguageMode(Context context) {
|
String language = SharedPreUtils.getSharedPreferencesKey("languege");
|
Locale local = getLocale(language);
|
Resources res = context.getResources();
|
DisplayMetrics dm = res.getDisplayMetrics();
|
Configuration conf = res.getConfiguration();
|
conf.locale = local;
|
res.updateConfiguration(conf, dm);
|
}
|
|
}
|