Android 中英文切换工具类

public class ChangeLanguageHelper {

    public static final int LANGUAGE_CHINA = 1;
    public static final int LANGUAGE_ENGLISH = 2;
    public static final int LANGUAGE_DEFAULT = 0;

    private static Context mContext = null;
    private static String country = null;

    private static String mLanguage = "";

    private static Resources mResources;
    private static Locale mDefaultLocale;

    public static void init(Context context) {
        mResources = context.getResources();
        country = context.getResources().getConfiguration().locale.getCountry();

        mContext = context.getApplicationContext();
        int appLanguage = Configure.getAppLanguage();
        changeLanguage(appLanguage);
    }

    /**
     * 获取当前字符串资源的内容
     */
    public static String getStringById(int id) {
        String string;
        if (mLanguage != null && !"".equals(mLanguage)) {
            string = mResources.getString(id, mLanguage);
        } else {
            string = mResources.getString(id, "");
        }

        if (string != null && string.length() > 0) {
            return string;
        }
        return "";
    }

    public static void changeLanguage(int language) {

        boolean isChangeLanguage = false;
        if (language != Configure.getAppLanguage()) {
            isChangeLanguage = true;
        }

        Configuration config = mResources.getConfiguration();     // 获得设置对象
        DisplayMetrics dm = mResources.getDisplayMetrics();       // 获得屏幕参数:主要是分辨率,像素等。
        switch (language) {
            case LANGUAGE_CHINA:
                config.locale = Locale.SIMPLIFIED_CHINESE;     // 中文
                config.setLayoutDirection(Locale.SIMPLIFIED_CHINESE);
                mLanguage = "zh-CN";
                country = "CN";
                Configure.setAppLanguage(LANGUAGE_CHINA);
                break;
            case LANGUAGE_ENGLISH:
                config.locale = Locale.ENGLISH;   // 英文
                config.setLayoutDirection(Locale.ENGLISH);
                mLanguage = "en";
                country = "US";
                Configure.setAppLanguage(LANGUAGE_ENGLISH);
                break;
            case LANGUAGE_DEFAULT:

                country = Locale.getDefault().getCountry();

                if ("US".equals(country) || "GB".equals(country)) {
                    mDefaultLocale = Locale.ENGLISH;
                } else {
                    mDefaultLocale = Locale.SIMPLIFIED_CHINESE;
                }

                config.locale = mDefaultLocale;         // 系统默认语言
                config.setLayoutDirection(mDefaultLocale);
                Configure.setAppLanguage(LANGUAGE_DEFAULT);
                break;
        }
        mResources.updateConfiguration(config, dm);

        if (isChangeLanguage) {
            EventBus.getDefault().post(new AppEvent.ChangeLanguage());
        }
    }

    public static boolean getDefaultLanguage() {
        return ("CN".equals(country));
    }
}

猜你喜欢

转载自blog.csdn.net/meng326125/article/details/85681551
今日推荐