天天看點

安卓國際化【多語言以及不同語言下的圖檔适配】

前言:

在一些場合中,比如即将到來的冬奧會,我們做的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之後,比較相似,貼一個别的部落客的(侵權删)

安卓國際化【多語言以及不同語言下的圖檔适配】

二.多語言圖檔适配

圖檔和文字的操作基本類似,隻需保持兩個檔案夾的的圖檔資源命名一緻即可。但是在擷取圖檔資源時系統會根據語言在兩個檔案夾中選擇,當我們的環境是英文時,如果英文檔案夾中沒有所需要的圖檔檔案,則會用中文檔案夾中的圖檔替換。

安卓國際化【多語言以及不同語言下的圖檔适配】

繼續閱讀