1.建立多国语言文件夹,比如通常国际化我们只要在res/目录下在重新定义values-国家编号,如values-zh-rCN简体汉语,values-zh-rTW繁体,values-jp日语等。建立这些文件以后就可以自动国际化了,也就是说会根据机器的系统语言设定来更改app的语言。
2.但如果我们要在app中提供更改语言的接口又该如何实现呢?
public static final String LAN_CHINESE = "zh";
public static final String LAN_ENGLISH = "en";
Button btnAChangeLanguage, btnNextPage;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnAChangeLanguage = (Button) findViewById(R.id.btnChangeLan);
btnNextPage = (Button) findViewById(R.id.btnNextPage);
btnAChangeLanguage.setOnClickListener(this);
btnNextPage.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v == btnAChangeLanguage) {
Locale locale = null;
if (getResources().getConfiguration().locale.getLanguage()
.equalsIgnoreCase(LAN_CHINESE)) {
locale = new Locale(LAN_ENGLISH);
} else if (getResources().getConfiguration().locale.getLanguage()
.equalsIgnoreCase(LAN_ENGLISH)) {
locale = new Locale(LAN_CHINESE);
}
// Resources resources = getResources();
// Configuration config = resources.getConfiguration();
// DisplayMetrics dm = resources .getDisplayMetrics();
// config.locale = Locale.SIMPLIFIED_CHINESE;
// resources.updateConfiguration(config, dm);
Resources resources = getResources();
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
locale.getLanguage();
DisplayMetrics dm = resources .getDisplayMetrics();
getBaseContext().getResources().updateConfiguration(config, dm);
Intent i = new Intent(this, D_multiLanguageActivity.class);
startActivity(i);
finish();
} else if (v == btnNextPage) {
Intent i = new Intent(this, ResultPage.class);
startActivity(i);
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}