设置应用语言

package com.cnmobl.utils;

import java.util.Locale;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.preference.PreferenceManager;
import android.util.DisplayMetrics;
/**
 * 
 *   应用设置
 * 
 *
 */
public class LanguageSettingUtil {
	//单例模式-
    private static LanguageSettingUtil instance;
    private Context context;
    //存储当前系统的language设置-
    private String defaultLanguage;
    //存储当前系统Locale-
    private Locale defaultLocale;
    
	public final static String ENGLISH = "en";
    public final static String CHINESE = "zh";

    private LanguageSettingUtil(Context paramContext) {
        //得到系统语言-
        Locale localLocale = Locale.getDefault();
        this.defaultLocale = localLocale;

        //保存系统语言到defaultLanguage
        String str = this.defaultLocale.getLanguage();
        this.defaultLanguage = str;

        this.context = paramContext;
    }

    //检验自身是否被创建-
    public static LanguageSettingUtil get() {
        if (instance == null)
            throw new IllegalStateException("language setting not initialized yet");
        return instance;
    }

    //初始化-
    public static void init(Context paramContext) {
        if (instance == null) {
            instance = new LanguageSettingUtil(paramContext);
        }
    }

    // 创建Configuration-
    private Configuration getUpdatedLocaleConfig(String paramString) {
        Configuration localConfiguration = context.getResources().getConfiguration();
        Locale localLocale = getLocale(paramString);
        localConfiguration.locale = localLocale;
        return localConfiguration;
    }

    //得到APP配置文件目前的语言设置-
    public String getLanguage() {
        SharedPreferences localSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this.context);
        //如果当前程序没有设置language属性就返回系统语言,如果有,就返回以前的-
        return localSharedPreferences.getString("language",
                this.defaultLanguage);
    }

    //如果配置文件中没有语言设置-
    public Locale getLocale() {
        String str = getLanguage();
        return getLocale(str);
    }

    //创建新Locale并覆盖原Locale-
    public Locale getLocale(String paramString) {
        Locale localLocale = new Locale(paramString);
        Locale.setDefault(localLocale);
        return localLocale;
    }

    //刷新显示配置-
    public void refreshLanguage() {
        String str = getLanguage();
        Resources localResources = this.context.getResources();
        if (!localResources.getConfiguration().locale.getLanguage().equals(str)) {
            Configuration localConfiguration = getUpdatedLocaleConfig(str);
            // A structure describing general information about a display, such
            // as its size, density, and font scaling.
            DisplayMetrics localDisplayMetrics = localResources.getDisplayMetrics();
            localResources.updateConfiguration(localConfiguration,localDisplayMetrics);
        }
    }

    //设置系统语言-
    public void saveLanguage(String paramString) {
        PreferenceManager.getDefaultSharedPreferences(this.context).edit().putString("language", paramString).commit();
    }

    //保存系统的语言设置到SharedPreferences-
    public void saveSystemLanguage() {
        PreferenceManager.getDefaultSharedPreferences(this.context).edit().putString("PreSysLanguage", this.defaultLanguage).commit();
    }

    public void checkSysChanged(String cuerSysLanguage) {
        //如果系统语言设置发生变化-
        if (!cuerSysLanguage.equals(PreferenceManager.getDefaultSharedPreferences(this.context).getString("PreSysLanguage", "zh"))) {
            //如果系统保存了this对象,就在这里修改defaultLanguage的值为当前系统语言cuerSysLanguage
            this.defaultLanguage = cuerSysLanguage;
            saveLanguage(cuerSysLanguage);
            saveSystemLanguage();
        }
    }
}




/* 设置语言*/
 	public static void setLanguage(Context context){
 		sharedPreferences = context.getSharedPreferences(context.getPackageName(), 0);
 		int index = sharedPreferences.getInt("recordType", 0);
		if(index == 0 || index == 1){
			// 自动设置语言 ,不做操作
		}else if(index == 2 ){
			// 中文
			change("zh",context);
		} else if(index == 3){
			// 英文
			change("en",context);
		}
 	}
 	
 	
    public static void change(String language,Context context){
		LanguageSettingUtil.init(context);// 初始化
		languageSetting = LanguageSettingUtil.get();// 检查是否已经初始化
        languageSetting.saveLanguage(language);// 设置为"en"语言
        LanguageSettingUtil.get().refreshLanguage();// 刷新
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值