① 如何在android APP中設置系統語言
設置達到的效果
在設置界面打開切換語言的界面,選擇語言後重啟 HomeActivity,語言切換完成,下次重新打開 App ,也是用戶設置的語言。
工具
編程軟體;
實現步驟
在不同的 value 文件夾下添加不同語言的string.xml文件,項目添加了英文、簡體中文、繁體中文三種語言,如下圖所示:
② android應用內怎麼設置語言切換
1.在工程res文件下添加對應語種的values文件,ar:阿拉伯語, en:英語 zh_rCN: 簡體中文
截圖如下:
2 .在功能清單文件中對要進行切換acitivity 進行配置添加
android:configChanges="locale"
3.對語言選擇的處理
public class MainActivity extends Activity {
Context context = MainActivity.this;;
int languageId;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
read();//設置
setContentView(R.layout.main);
findViewById(R.id.btn_change).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
save();
}
});
}
//保存
private void save() {
String[] languages = { "默認", "CN", "EN" };
AlertDialog.Builder builder = new AlertDialog.Builder(context,
android.R.style.Animation_Dialog);
builder.setTitle("選擇語言");
final SharedPreferences languagePre = context.getSharedPreferences(
"language_choice", context.MODE_PRIVATE);
final int id = languagePre.getInt("id", 0);
builder.setSingleChoiceItems(languages, id,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int index) {
switch (index) {
case 0:
// 系統默認語言
languageId = 0;
break;
case 1:
// 簡體中文
languageId = 1;
break;
case 2:
// 英語
languageId = 2;
break;
case 3:
// 阿拉伯語
languageId = 3;
break;
default:
break;
}
languagePre.edit().putInt("id", languageId).commit();
}
});
// 保存
builder.setPositiveButton("保存", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
((Activity) context).finish();
Intent intent = new Intent();
intent.setClass(context, MainActivity.class);
context.startActivity(intent);
}
});
builder.show();
}
//讀取
private void read() {
SharedPreferences languagePre = getSharedPreferences("language_choice",
Context.MODE_PRIVATE);
int id = languagePre.getInt("id", 0);
Log.d("MainActivity", "langauge_id=" + id);
Toast.makeText(context, "langauge_id=" + id, Toast.LENGTH_LONG).show();
// 應用內配置語言
Resources resources = getResources();// 獲得res資源對象
Configuration config = resources.getConfiguration();// 獲得設置對象
DisplayMetrics dm = resources.getDisplayMetrics();// 獲得屏幕參數:主要是解析度,像素等。
switch (id) {
case 0:
config.locale = Locale.getDefault(); // 系統默認語言
break;
case 1:
config.locale = Locale.SIMPLIFIED_CHINESE; // 簡體中文
break;
case 2:
config.locale = Locale.ENGLISH; // 英文
break;
default:
config.locale = Locale.getDefault();
break;
}
resources.updateConfiguration(config, dm);
}
}
③ Android切換系統語言會做哪些操作
以MIUI系統為例,來說明一下切換系統語言步驟:
1、打開手機設置應用頁面,選擇「系統高級設置」選項。
④ Android11海外版怎麼改成中文版
通過設置修改成中文版。
第一步:打開手機主界面,找到「設置」(settings)圖標。
第二步:在「設置」中找到「高級設置」(advanced settings)選項。
第三步:點開「高級設置"(advanced settings),找到「語言和輸入法」(language&input)。
第四步:在「語言和輸入法」(language&input)中,找到「語言和地區」(language_ion)設置選項。
第五步:點開「語言和地區」(language_ion)設置選項,我們看到現在的語言是英語切換成中文即可。
2020 年 9 月 14 日,ColorOS 以線上的形式舉辦了海外發布會,基於 Android 11 的 ColorOS 11 海外版正式亮相。全新的 ColorOS 11 在設計、效率和安全等方面都有不同程度的提升,為全球 OPPO 用戶帶來更極致的體驗。
⑤ Android國際化多語言切換
關於App國際化,之前有講到國際化資源、字元換、布局相關,想要了解的猛戳 用力抱一下APP國際化 。借著本次重構多語言想跟大家聊一下多語言切換,多語言切換對於一款國際化App來講是重中之重,並非難事,但是若要做好也是一件不容易的事情。
當我們做了系統的配置更改,比如說切換了系統導航或者說更改了深色模式,那麼我們一般的處理是也是要對Application作出處理。
如果項目中有用到ApplicationContext去getString(@StringRes int id)實現載入的提示語,那麼如果只是單純的重啟界面則無法讓當前的提示語跟隨當前切換的語言,所以我們要麼重啟整個應用,要麼對ApplicationContext中的Local也作出相應的更新方可,這里有一點問題,雖然Android N之後updateConfiguration是過時方法,官方給出使用createConfigurationContext代替,但是更新ApplicationContext的Local發現無效使用老版本updateConfiguration正常。
如果你發現你的應用廣播通知欄適配無效,那就是context中的Local在切換語言是並未及時更新Local,這里調試一下便知,如果是Applicaiton注冊的廣播,那麼多半情況下是沒有更新ApplicationContext的Local所導致的。
多語言適配基本步驟大概就是如此了,下面看一下適配的細節問題。
[圖片上傳失敗...(image-b42d06-1640685147639)]
還有一點Android N之後,手機系統的語言配置選項已經不是單選了,改為一個列表了,具體可以參考手機設置中的語言和輸入法,所以 setLocal(@Nullable Locale loc) 方法建議不要再使用了,我相信很多人還在用,正確的用法應該是 setLocals(@Nullable LocaleList locales) ,需要傳遞一個集合。
當你的應用使用的是androidx.appcompat:appcompat:1.2.0及以上時,BaseActivity中需要實現下面方法。
這套方案目前不在推薦,直接去替換attatchBaseContext()中的context則可,經過測試是完全正常的。
以下則是多語言操作的工具類,現在提供出來,需要的朋友可以自行進行改造。
⑥ 如何實現Android切換系統語言功能
如果想獲取手機的當前系統語言,可以通過Locale類獲取,主要方法:Locale.getDefault().getLanguage(),返回的是es或者zh;通過Locale.getDefault().getCountry()獲取當前國家或地區,返回為CN或US;如果當前手機設置為中文-中國,則使用此方法返回zh-CN,同理可得到其他語言與地區的信息。 查看原帖>>