语言列表, 语言api
//存储语言名称,语言locale
class LocaleData{
String lable;
Locale mLocale;
LocaleData( String lable,Locale mLocale){
}
}
1. 语言列表
public LocaleData[] initLanguage(){
String[] locales ;
LocaleData[] array2 ;
(1)设置固定语言列表
Class imputMethod = Class.forName("com.android.internal.inputmethod.InputMethodUtils");
Method lagunage = imputMethod.getMethod("constructLocaleFromString",String.class);
Locale zh_locale = lagunage.invoke(imputMethod,"zh_CN");
Locale en_locale = lagunage.invoke(imputMethod,"en_US");
array2[0] = new LocaleData();
array2[1] = new LocaleData();
(2) 获取系统当前支持的语言
Class localePicker = Class.forName("com.android.internal.app.LocalePicker");
Method method = localePicker.getMethod("getLocales");
LocaleList userlocales =(LocaleList)method.invoke(localePicker);
Method method1 = localePicker.getMethod("getSupportedLocales",Context.class);
locales = (String[]) method1.invoke(localePicker,this);
array2 = new LocaleData[locales.length];
for(int y=0;y<locales.length;y++){
//生成语言列表数组
array2[y] = new LocaleData(Locale.forLanguageTag(locales[y]).getDisplayName(Locale.forLanguageTag(locales[y])), Locale.forLanguageTag(locales[y]) );
}
//(3) 获取本地所有语言
//Locale[] ll = Locale.getAvailableLocales();
return array2;
}
2. 根据语言显示 demo 字样
Locale locale = ((LocaleData)Apater.getItem(Apater.getSelectedIndex())).getLocale();
xx.setText(getLocaleStringResource(locale,"demo", mcontext));
public String getLocaleStringResource(Locale requestedLocale, int resourceId, Context context){
if(android.os.Build.VERSION.SDK_INT >= 17){
Configuration config = new Configuration(context.getResources().getConfiguration());
config.setLocale(requestedLocale);
return context.createConfigurationContext(config).getText(resourceId).toString();
}
Resources resource = context.getResources();
Configuration conf = resource.getConfigutation();
Locale saveLocale = conf.locale;
conf.locale = requestedLocale;
resources.updateConfiguration(conf,null);
String result = resources.getString(resourceId);
conf.locale = saveLocale;
resources.updateConfiguration(conf,null);
return result;
}
//更新语言方法
Runnable updateLaunage = new Runnable(){
public void run(){
//如果当前选择的语言
if(mCurrentLocale != null){
//通过反射的方式获取设置语言对象
Class localePicker = Class.forName("com.android.internal.app.LocalePicker");
Method method = localePicker.getMethod("updateLocale", Locale.class);
method.invoke(localePicker,mCurrentLocale);
}
}
}