18034727885
2026-07-09 f35664f0ad753df3dc4ca3b47c2f91263973af34
xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/LanguageUtil.java
@@ -6,11 +6,27 @@
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;
@@ -46,7 +62,7 @@
     * @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;
        }
@@ -64,32 +80,5 @@
            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);
    }
}