Android – 多語言支持

1似扔、字符串本地化如何工作

默認情況下发乔,Android將英語作為主要語言并加載string資源從res?values?strings.xml气筋。當你要添加另一種語言的支持,你需要通過添加一個連字符和ISO語言代碼創(chuàng)建一個values的文件夾连锯。例如归苍,如果你想添加支持法國,你應該創(chuàng)建一個文件夾命名值values-FR和保持strings.xml文件的所有字符串翻譯成法語了运怖。

簡言之拼弃,本地化該如下操作:
1、當用戶改變設備通過Settings ? Language & Input摇展,Android操作系統(tǒng)本身的應用程序檢查適當?shù)恼Z言資源吻氧。(假設用戶正在選擇法語)
2、如果應用程序支持選定的語言吗购,Android將在項目中查找值(ISO語言代碼)文件夾中的字符串資源医男。(法國它加載values-FR /strings。XML字符串值)
3捻勉、如果支持的語言strings.xml錯過任何字符串值镀梭,Android總加載失去的字符串從values/ strings.xml
所以它是強制性的踱启,默認的stings.xml文件應該包含所有的字符串值給應用程序使用报账,以防止其他語言的strings丟失字符串研底。

正確的做法:
在支持多種語言時,在定義字符串時應該考慮下面的做法透罢“窕蓿總是聲明在strings.xml字符串中。

<string name="note_email">Enter your email address</string>

當你引用在xml中時羽圃,使用@string符號

<TextView ...   android:text="@string/note_email"  />

當在Java代碼中乾胶,用R.string

emailNote.setText(R.string.note_email);

錯誤的做法:
不要硬編碼在Java代碼或xml中,這樣對多語言支持是困難的朽寞。

<TextView ...   android:text="Enter your email address"  />
emailNote.setText("Enter your email address");  

2识窿、如何使用values文件

好了,說了這么多脑融,咱們該看看如何正確添加values文件了喻频。下面是正確的英語語言字符串支持。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="welcome">Welcome!</string>
    <string name="email">Email Address</string>
    <string name="password">Password</string>
    <string name="login">Login</string>
    <string name="signup">Don\'t have account? Sign Up</string>
</resources>

現(xiàn)在需要在res文件中添加values-de, values-fr, values-hi, values-ja肘迎,values-zh和一個string.xml在每一個文件夾中甥温。

你的項目看起來應該像這樣一旦你創(chuàng)建所需的文件/文件夾。

多語言支持.png

翻譯為現(xiàn)在的字符串的語言和他們在適當?shù)牡胤降膕trings.xml文件。

德語 values-de/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="welcome">Willkommen!</string>
    <string name="email">Email Addresse</string>
    <string name="password">passowrd</string>
    <string name="login">Login</string>
    <string name="signup">müssen nicht angemeldet? Anmeldung</string>
</resources>

法語 values-fr/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>    
    <string name="welcome">accueil</string>
    <string name="email">adresse e-mail</string>
    <string name="password">mot de passe</string>
    <string name="login">connexion</string>
    <string name="signup">Ne pas avoir un compte? signer</string>
</resources>

英語 values/strings.xml

    <string name="welcome">Welcome!</string>
    <string name="email">Email Address</string>
    <string name="password">Password</string>
    <string name="login">Login</string>
    <string name="signup">Don\'t have account? Sign Up</string>

中文 values-zh/strings

    <string name="welcome">歡迎!</string>
    <string name="email">請輸入郵箱地址</string>
    <string name="password">請輸入密碼</string>
    <string name="login">登錄</string>
    <string name="signup">沒有賬戶? 快速注冊</string>

布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/bg_gradient"
                >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:gravity="center"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="40dp"
            android:text="@string/welcome"
            android:textColor="@color/white"
            android:textSize="45dp"
            android:textStyle="bold" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bg_form_rounded"
            android:orientation="vertical" >

            <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="10dp"
                android:background="@null"
                android:hint="@string/email"
                android:padding="5dp"
                android:singleLine="true"/>

            <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="@null"
                android:hint="@string/password"
                android:inputType="textPassword"
                android:padding="5dp" />
        </LinearLayout>

        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="25dp"
            android:background="@drawable/bg_button_rounded"
            android:text="@string/login"
            android:textColor="@color/white"/>
    </LinearLayout>

    <TextView android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:text="@string/signup"
              android:layout_alignParentBottom="true"
              android:gravity="center_horizontal"
              android:layout_marginBottom="25dp"
              android:textColor="@color/white"/>

</RelativeLayout>

最終效果如下:

效果圖.png

3、測試其他語言

為了顯示其他語言,按照下面的步驟父晶。
1。在設備進入Settings ? Language & Input
2币狠。選擇語言藤肢,選擇在應用程序支持你的語言。

中文支持.png
法語支持.png
德語支持.png

4跺讯、Android本地化語言 ISO 代碼

下面的表是ISO語言代碼枢贿,Android支持的語言。

Language    Locale  values/strings.xml
German        de    values-de/strings.xml
Chinese       zh    values-zh/strings.xml
Czech         cs    values-cs/strings.xml
Dutch         nl    values-nl/strings.xml
French        fr    values-fr/strings.xml
Italian       it    values-it/strings.xml
Japanese      ja    values-ja/strings.xml
Korean        ko    values-ko/strings.xml
Polish        pl    values-pl/strings.xml
Russian       ru    values-ru/strings.xml
Spanish       es    values-es/strings.xml
Arabic        ar    values-ar/strings.xml
Bulgarian     bg    values-bg/strings.xml
Catalan       ca    values-ca/strings.xml
Croatian      hr    values-hr/strings.xml
Danish        da    values-da/strings.xml
Finnish       fi    values-fi/strings.xml
Greek         el    values-el/strings.xml
Hebrew        iw    values-iw/strings.xml
Hindi         hi    values-hi/strings.xml
Hungarian     hu    values-hu/strings.xml
Indonesian    in    values-in/strings.xml
Latvian       lv    values-lv/strings.xml
Lithuanian    lt    values-lt/strings.xml
Norwegian     nb    values-nb/strings.xml
Portuguese    pt    values-pt/strings.xml
Romanian      ro    values-ro/strings.xml
Serbian       sr    values-sr/strings.xml
Slovak        sk    values-sk/strings.xml
Slovenian     sl    values-sl/strings.xml
Swedish       sv    values-sv/strings.xml
Tagalog       tl    values-tl/strings.xml
Thai          th    values-th/strings.xml
Turkish       tr    values-tr/strings.xml
Ukrainian     uk    values-uk/strings.xml
Vietnamese    vi    values-vi/strings.xml

來源: http://bit.ly/1qYfHDL
好了刀脏,到這里就結(jié)束了局荚,今天是中秋節(jié)。

大家中秋快樂愈污!

快樂生活耀态!快樂工作!快樂編程暂雹!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末首装,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子杭跪,更是在濱河造成了極大的恐慌仙逻,老刑警劉巖驰吓,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異系奉,居然都是意外死亡檬贰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門缺亮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翁涤,“玉大人,你說我怎么就攤上這事萌踱∶匝” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵虫蝶,是天一觀的道長章咧。 經(jīng)常有香客問我,道長能真,這世上最難降的妖魔是什么赁严? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮粉铐,結(jié)果婚禮上疼约,老公的妹妹穿的比我還像新娘。我一直安慰自己蝙泼,他們只是感情好程剥,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著汤踏,像睡著了一般织鲸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上溪胶,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天搂擦,我揣著相機與錄音,去河邊找鬼哗脖。 笑死瀑踢,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的才避。 我是一名探鬼主播橱夭,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桑逝!你這毒婦竟也來了棘劣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤肢娘,失蹤者是張志新(化名)和其女友劉穎呈础,沒想到半個月后舆驶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡而钞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年沙廉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片臼节。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡撬陵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出网缝,到底是詐尸還是另有隱情巨税,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布粉臊,位于F島的核電站草添,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏扼仲。R本人自食惡果不足惜远寸,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望屠凶。 院中可真熱鬧驰后,春花似錦、人聲如沸矗愧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唉韭。三九已至夜涕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間纽哥,已是汗流浹背钠乏。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留春塌,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓簇捍,卻偏偏與公主長得像只壳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子暑塑,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容