android多語言
⑴ Android中的多國語言是怎麼實現的
雖然Android 從 2.3 開始已經支持50種以上的語言,但是不是每種語言都有字體可以顯示。遇到一個新需求,
有客戶要求對 hindi 語言的支持。於是上 網找了一些資料,發現網上介紹的大部分是如何替換默認字體,就
是替換./frameworks/base/data/fonts /DroidSansFallback.ttf,但是替換完之後,中文就無法正常顯示。其實
只要有下面幾個步驟,就可以實現新曾加一種語言的顯示支持:
1. 需要有可以顯示 hindi 語言的字體,我在網上下載了一個:DroidHindi.ttf
2. 需要修改的地方主要有
1) 將下載的字體文件拷貝到:./frameworks/base/data/fonts/
2) 修改./frameworks/base/data/fonts/Android.mk,將 DroidHindi.ttf 添加到 _from:
3) Hindi 的語言代碼是 hi_IN,修改./device/qcom/common/common.mk,將 hindi 的語言代碼加進去,
這樣在你的設置->語言和鍵盤->選擇語言裡面就可以看見 hindi 語言了:
4) 修改./external/skia/src/ports/SkFontHost_android.cpp,將 DroidHindi.ttf 加進去。網上 介紹的很多
方法都沒有提到這一步,如果沒有這一步的話,添加的語言是不生效的,顯示的是亂碼,因為 android 無法
找到 hindi 語言可以顯示的字體, 還是會選擇默認字體去顯示。修改的地方為:
5) 去./build/target/proct/full.mk 看看系統選擇的是哪個語言列表,我的是:
$(call inherit-proct, build/target/proct/languages_small.mk)
那我就去修改./build/target/proct/languages_small.mk,若這里顯示的是 languages_full.mk,那麼
就修改./build/target/proct/languages_full.mk 文件,修改如下:
PRODUCT_LOCALES := en_US en_GB fr_FR hi_IN it_IT de_DE es_ES
6)在 external/icu4c/studata 下的 Android.mk 下添加
$(if $(findingstringhi,$(PRODUCT_LOCALS)),large)\
3. 剩下的就是重新編譯一下,然後 flash 到手機或模擬器上就可以了。
⑵ 如何刪除android setting語言列表中多餘的語言(只要中文和英文)
你好,需要手機獲取root許可權後,用固件管家對多於的語言包刪除,有可能會引起系統其他應用讀取問題,因為缺少字型檔支持而崩潰。
⑶ android studio多語言本地化 translation editor 表格中的多國語言數據如何快速獲取存或其他快速獲取方式
Ctrl+A Ctrl+C不行嗎?
另外strings.xml的XML格式貌似是XLIFF,可以用專業的翻譯工具如SDL trados或smartCAT打開,應該比excel好一些。
然後有個插件叫 「Android Strings.xml To CSV Converter」可以把 strings.xml轉成逗號分隔值格式在excel上打開,可以試試。
⑷ Android 8.0 以上怎麼設置多語言
1.添加多語言文件 在不同的 value 文件夾下(例如 value 、value-en、values-zh-rTW 文件夾)添加不同語言的 string.xml 文件,我們的項目添加了英文、簡體中文、繁體中文三種語言,如下圖所示: Project模式:
⑸ android locale有多少種語言
http://blog.csdn.net/weihan1314/article/details/32327587
⑹ 安卓手機如何添加多國語言
添加方法是有的,網上可以找到很多。不過很麻煩,以下以添加波斯語為例給你簡單的說下:
1、在sdkDemo.mk 中添加語言和國家的國際化的縮寫代碼,如伊朗:IR表示,波斯語用fa表示,這是國際化的標准,不可以隨便寫的。如果不知道國家與地區的縮寫,可以去網上找找。
PRODUCT_LOCALES:= fa_IR en_US zh_CN en_GB fr_FR it_IT es_ES ……..
sdkDemo.mk的路徑為:gingerbread\device\rockchip\sdkDemo\sdkDemo.mk.
2、在framework/base/data/font目錄下添加波斯語的字型檔,如DroidSansArabic.ttf
3、字型檔加完後,就要去調用字型檔了,調用字型檔的文件是在external/skia/src/ports/SKFontHost-android.app下,
static constFontInitRec gSystemFonts[] = {
{ "DroidSans.ttf", gSansNames },
………
{
"DroidSansArabic.ttf",
gFBNames },
4、字型檔准備好了,還有一些makefile需要修改了。在external/icu4c/studata/ Android.mk下:
config := $(word1, \
$(if $(findstringar,$(PRODUCT_LOCALES)),large) \
$(if
$(findstring fa,$(PRODUCT_LOCALES)),large) \
5、 在frameworks/base/core/res/res/下新增加一個values-fa-rIR的文件夾,並新建一個strings.xml文件。
6、上面五步加完後,在settingsàLanguage&keyboardàSelect language列表下就會出現波斯語這個選項了,但是選了波斯語後,並沒有出現波斯語文字。這時就需要在相應的APP下的res/下新建values-fa-rIR的文件夾,並翻譯strings.xml文件即可。如主app的strings.xml路徑為:gingerbread\packages\apps\Desktop2D_mbx_new\res\values-fa-rIR\strings.xml
最後,以上所有內容都加好後,一定要記得:
Make clean
Make prebuild
Make
建議你還是刷新ROM來解決吧!
⑺ android 多語言怎麼轉換
1.添加多語言文件
在不同的 value 文件夾下(例如 value 、value-en、values-zh-rTW 文件夾)添加不同語言的 string.xml 文件,我們的項目添加了英文、簡體中文、繁體中文三種語言,如下圖所示:
Project模式:
Android模式:
其中英文需要翻譯,繁體如果沒有專門翻譯的話,可以找個簡繁轉換網站,直接將簡體中文轉成繁體中文,推薦一個網站:
http://www.vifo.com.cn/fanti/
下面我只講解簡體中文和英文的做法;
2.現在我們可以在activity啟動裡面(onCreate()或者onResume())獲取系統的語言:
Locale locale = Locale.getDefault();
String language = locale.getLanguage();
language就是我們從系統拿到的語言,這里如果是中文,拿到的是「zh」,如果是英文是「cn」;
protected void showLanguage(String language) {
//設置應用語言類型
Resources resources = getResources();
Configuration config = resources.getConfiguration();
DisplayMetrics dm = resources.getDisplayMetrics();
if (language.equals("zh")) {
config.locale = Locale.SIMPLIFIED_CHINESE;
} else {
config.locale = Locale.ENGLISH;
}
resources.updateConfiguration(config, dm);
//保存設置語言的類型(這個裡面我先保存一下,下面會講到他的用處)
PreferenceUtil.commitString("language", language);
}
⑻ android開發中怎麼設置多語言版本
android多語言實現必須是將strings.xml放在不同的文件夾目錄下,由安卓系統自動去載入文字資源。
1.Android 中要實現國際化比較簡單,字元串國際化:只要在 res 文件夾下新建對應語言的 values 文件夾就好了。
例如:
英語環境下的,文件夾命名為:values-en
美國英文環境:values-en-rUS
中文環境為:values-zh
大陸地區中文環境:values-zh-cn
2.eclipse 下新建 Android 項目時,會在 res 目錄下自動創建一個默認語言環境的文件夾 : values 。
3.當某一個資源沒有在語言環境的對應的資源集合中找到時,就會使用 values 下的資源。若某一個語言環境沒有在項目中定義語言環境,那麼也會使用 values 下的資源。
⑼ Android如何實現多語言支持
無非是 把文字寫在strings.xml文件里咯,拿中英說吧,
中文(簡體):values-zh-rCN
中文(台灣):values-zh-rTW
中文(香港):values-zh-rHK
英文(美國):values-en-rUS
英文(英國):values-en-rGB
可以參考這里android多語言支持
還有一點細節需要處理的是控制項的大小,英文單詞或片語長度肯定是和中文不一樣的,比如Button的背景、寬高等,注意用wrap_content,最好加上 minWidth, minHeight, 或者代碼判斷系統語言,然後代碼控制控制項的寬高
⑽ android 怎麼實現應用多語言切換
添加多語言文件
在不同的 value 文件夾下(例如 value 、value-en、values-zh-rTW 文件夾)添加不同語言的 string.xml 文件,我們的項目添加了英文、簡體中文、繁體中文三種語言,如下圖所示:
Project模式:
Android模式:
其中英文需要翻譯,繁體如果沒有專門翻譯的話,可以找個簡繁轉換網站,直接將簡體中文轉成繁體中文,推薦一個網站:
http://www.vifo.com.cn/fanti/
下面我只講解簡體中文和英文的做法;
2.現在我們可以在activity啟動裡面(onCreate()或者onResume())獲取系統的語言:
Locale locale = Locale.getDefault();
String language = locale.getLanguage();1212
language就是我們從系統拿到的語言,這里如果是中文,拿到的是「zh」,如果是英文是「cn」;
3.拿到了系統語言,那麼我們就要通過系統語言的判斷改變我們app對應的系統語言:
protected void showLanguage(String language) {
//設置應用語言類型
Resources resources = getResources();
Configuration config = resources.getConfiguration();
DisplayMetrics dm = resources.getDisplayMetrics();
if (language.equals("zh")) {
config.locale = Locale.SIMPLIFIED_CHINESE;
} else {
config.locale = Locale.ENGLISH;
}
resources.updateConfiguration(config, dm);
//保存設置語言的類型(這個裡面我先保存一下,下面會講到他的用處)
PreferenceUtil.commitString("language", language);
}
這樣子,如果你的手機開始的時候系統是中文,那麼你的app就是中文,如果開始的時候系統是英文,那麼你的app就是英文,這個只是適用開始的時候語言就已經設定好了,但是如果你現在的app用的是中文,app沒有退出的情況下,直接去把系統設置成英文,那麼你返回到你的app的時候並不會是英文,依然是中文,必須在程序退出之後,再進來的時候才會成為英文,這樣子的體驗一點都不好,那麼我們怎麼樣才能做到你改系統語言,我的app就跟著去改變呢,所謂的動態改變。那麼我們可以這樣子做。
@Override
protected void onResume() {
super.onResume();
String LAN = PreferenceUtil.getString("language","");
Locale locale = Locale.getDefault();
String language = locale.getLanguage();
Log.i("語言————————",language);
if(!language.equals("")){
if(!LAN.equals(language)){
freshView();//重新啟動MainActivity
}
}
showLanguage(language);
}
private void freshView(){
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}2223
首先PreferenceUtil這個是我自己寫的工具類,就是SharedPreferences存儲,在onResume()裡面,重要的就是做個判斷,拿到的language是不是和之前保存系統的language一樣,如果不一樣,重新啟動MainActivity,這樣子就做到了重新獲取系統language。