前言:
在一些場合中,比如即将到來的冬奧會,我們做的APP就可能需要面對别的國家的使用者,這個時候如果你的APP隻支援中文那就太尴尬了。廢話不多說:
一.多語言文字适配
我們用英文舉例,首先在我們的app\src\main\res目錄下建立values-en檔案夾,然後在該檔案夾下建立一個叫做strings的xml檔案,用來存放英文string資源。如果你的命名是正确的,那麼你的strings檔案上會出現一面小國旗,如下圖。這裡我們需要注意兩點:
1.我們預設的原來的那個檔案夾隐含的意思是values-ch,兩個檔案夾中的strings檔案的内容(name)應該一緻,否則編譯器會提示錯誤,例如:
<string name="choose_language">"Choice language"</string>//這個是values-en裡的資源
<string name="choose_language">"選擇語言"</string>//這個是原來的values檔案夾中的資源
2.在情況1時,當有一些資源你覺得在英文環境下不需要使用,當放在原來的檔案夾下還會報錯,那我們可以在原來的values檔案夾下建立一個叫做donottranslate.xml的檔案,将不需要翻譯的資源拷貝到其中。檔案結構如下:
3.安卓7.0之前:
1.1.第一步:
private void chooseLanguage(Locale locale) {
Resources resources = getResources();
DisplayMetrics dm = resources.getDisplayMetrics();
Configuration config = resources.getConfiguration();
config.locale = locale;
resources.updateConfiguration(config, dm);
reStart();
}
private void reStart() {
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
2.在安卓7.0之後,比較相似,貼一個别的部落客的(侵權删)
二.多語言圖檔适配
圖檔和文字的操作基本類似,隻需保持兩個檔案夾的的圖檔資源命名一緻即可。但是在擷取圖檔資源時系統會根據語言在兩個檔案夾中選擇,當我們的環境是英文時,如果英文檔案夾中沒有所需要的圖檔檔案,則會用中文檔案夾中的圖檔替換。