| | |
| | | import android.os.Build; |
| | | import android.os.LocaleList; |
| | | import android.text.TextUtils; |
| | | import android.util.DisplayMetrics; |
| | | |
| | | import java.util.Locale; |
| | | |
| | | public class LanguageUtil { |
| | | private static String defaultLanguage = ""; |
| | | |
| | | public static void setDefaultLanguage(String language) { |
| | | defaultLanguage = language; |
| | | } |
| | | |
| | | //获取语言 |
| | | public static String getLanguage() { |
| | | return SPUtils.Companion.instance().getString("language", defaultLanguage); |
| | | } |
| | | |
| | | //设置语言 |
| | | public static void saveLanguage(Context context, String language) { |
| | | SPUtils.Companion.instance().put("language", language).apply(); |
| | | LanguageUtil.changeAppLanguage(context, language, ""); |
| | | } |
| | | |
| | | private static Locale getLocaleByLanguage(String language) { |
| | | if (TextUtils.isEmpty(language)) { |
| | | return Locale.FRENCH; |
| | |
| | | * @param context |
| | | * @param newLanguage 想要切换的语言类型 比如 Const.Language.ENGLISH ,"zh" |
| | | */ |
| | | public static void changeAppLanguage(Context context, String newLanguage, String country) { |
| | | private static void changeAppLanguage(Context context, String newLanguage, String country) { |
| | | if (TextUtils.isEmpty(newLanguage)) { |
| | | return; |
| | | } |
| | |
| | | configuration.locale = locale; |
| | | resources.updateConfiguration(configuration, resources.getDisplayMetrics()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 如果是7.0以下,我们需要调用changeAppLanguage方法, |
| | | * 如果是7.0及以上系统,直接把我们想要切换的语言类型保存在SharedPreferences中,然后重新启动MainActivity即可 |
| | | */ |
| | | public static void setLanguage(String language, String country, Context appContext) { |
| | | if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { |
| | | changeAppLanguage(appContext, language, country); |
| | | } |
| | | SPUtils.Companion.instance().put("language", language); |
| | | SPUtils.Companion.instance().put("country", country); |
| | | } |
| | | |
| | | |
| | | public static void set(boolean isEnglish, Context context) { |
| | | Configuration configuration = context.getResources().getConfiguration(); |
| | | DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); |
| | | if (isEnglish) { |
| | | //设置英文 |
| | | configuration.locale = Locale.ENGLISH; |
| | | } else { |
| | | //设置中文 |
| | | configuration.locale = Locale.SIMPLIFIED_CHINESE; |
| | | } |
| | | //更新配置 |
| | | context.getResources().updateConfiguration(configuration, displayMetrics); |
| | | } |
| | | } |