2018年5月26日

Android - App多語言切換適配

想將App發佈在不同國家,如果因為各地語言不同而看不懂內容,使用率也會受到影響,想要讓App支援不同語言設定非常簡單,對宅貓來說最大的難處應該是宅貓外語不太好orz


注意:你App內顯示的字不應直接打上去,應添加在string然後引用,否則無法做到語言切換


以最普遍的英文作為例子,新建一個values-en file,建立string.xml把你原本在string的所有內容製作一個英文版本


這時候,App已經會根據系統設置來顯示語言,即是說如果你的手機系統語言是英文,App就會自動轉換成英文顯示,你也可以加入設定功能來手動選擇語言


在activity_main.xml加入一個按鈕,這個很簡單不詳細講

然後在MainActivity,java加入以下代碼
(1)
setLanguage();

(2)
Button language = (Button) findViewById(R.id.language);

language.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setSingleChoiceItems(new String[]{"中文", "English"},
getSharedPreferences("Language", Context.MODE_PRIVATE).getInt("Language",0),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogInterface, int i) {

SharedPreferences preferences = getSharedPreferences("Language", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("Language",i);
editor.apply();
dialogInterface.dismiss();

Intent intent = new Intent(MainActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
});


(3)
private void setLanguage() {

SharedPreferences preferences = getSharedPreferences("Language", Context.MODE_PRIVATE);
int language = preferences.getInt("Language", 0);

Resources resources = getResources();
DisplayMetrics displayMetrics = resources.getDisplayMetrics();
Configuration configuration = resources.getConfiguration();

switch (language){
case 0:
configuration.setLocale(Locale.CHINESE);
break;
case 1:
configuration.setLocale(Locale.ENGLISH);
break;
default:
break;
}
resources.updateConfiguration(configuration,displayMetrics);
}


完成!現在按下按鈕就可以選擇語言,選擇後整個App都會顯示選擇的語言,日後再開啟App也會自動顯示最後使用時顯示的語言。





~~~ 歡迎留言一起討論交流^^ ~~~

沒有留言:

張貼留言