1. 程式人生 > >代碼中字符串的本地化

代碼中字符串的本地化

中文 字符串賦值 繁體中文 步驟 inf 法語 只需要 能夠 app名

  • 所謂字符串本地化,就是指App內的字符串在不同的語言環境下顯示不同的內容。
  • 比如,"主頁"這個字符串在中文語言環境下顯示“主頁”,在英語環境下顯示“home”。下面就開始進行字符串本地化。
  • 其實字符本地化和App名稱本地化過程如出一轍,只是創建的文件名成不一樣(連同後綴一起,文件名必須是Localizable.strings),其他步驟完全相同。
  • 為了能夠讓大家徹底了解,此處還是會把步驟一一貼出來。

1、準備操作流程

  • 1.1 創建

    • 和應用名稱本地化一樣,首先需要command + N,選擇iOS -> Resource -> Strings File
      技術分享圖片
  • 1.2 命名要求

    • 文件名必須命名為Localizable
    • 備註:因本人電腦取消隱藏文件後綴名,所以會自動補全.strings後綴名。
      技術分享圖片
  • 1.3 創建結果

    • 文件創建成功,查看Xcode左側導航列表,發現多了一個名為Localizable.strings的文件,如下圖:
      技術分享圖片
  • 1.4 選擇需要本地化的語言

    • 選中Localizable.strings文件,在Xcode的File inspection中點擊Localize,目的是選擇我們需要本地化的語言(和本地化App名稱同理),如下圖:
      技術分享圖片
    • 依次選擇English->Localize,如下圖:
      技術分享圖片
  • 1.5 選擇我們需要本地化的語言

    • 然後勾選French、Chinese(zh-Hans)、Chinese(zh-Hant)、Korean,如下圖:
      技術分享圖片
    • 然後我們發現Xcode右側的File inspection變成了下圖的樣式:
      技術分享圖片
  • 1.6 配置結果

    • 此時,Xcode左側的Localizable.stirings左側多了一個箭頭,展開後,如下圖所示:
      技術分享圖片

2、開始國際化

  • 2.1 然後我們只需要在Localizable.strings下對應的文件中,分別以Key-Value的形式,為代碼中每一個需要本地化的字符串賦值,如下圖:

    • 英語
      技術分享圖片
    • 法語
      技術分享圖片
    • 簡體中文
      技術分享圖片
    • 繁體中文
      技術分享圖片
    • 韓語
      技術分享圖片
  • 2.2 使用

    • 本地化代碼中的字符串,如下圖:
      技術分享圖片
    • 我們只需要使用Foundation框架自帶的NSLocalizedString(key, comment)這個宏根據Key獲取對應的字符串,然後賦值給代碼中的字符串。
    // NSLocalizedString(key, comment) 本質
    // NSlocalizeString 第一個參數是內容,根據第一個參數去對應語言的文件中取對應的字符串,第二個參數將會轉化為字符串文件裏的註釋,可以傳nil,也可以傳空字符串@""。

3、國際化結果

  • 不同語言環境下運行效果,如下圖:
  • 英語環境下:

    技術分享圖片
  • 法語環境下:

    技術分享圖片
  • 簡體中文環境下:

    技術分享圖片
  • 繁體中文環境下:

    技術分享圖片
  • 韓語環境下:

    技術分享圖片
  • 如此一來,我們就實現了代碼中字符串的本地化。

4、技巧

  • 其實,我們不需要給Localizable.strings(English)文件添加Key-Value。
  • 原因如下:系統根據某個key去獲取對應的字符串時,如果沒有找到,那麽就會以key作為value返回。
  • 所以如果我們在Localizable.strings(English)文件中沒有添加 click = "hit";那麽在english環境下btn最終顯示的title會是click.
  • 切換語言無需在模擬器中設置,只需要在Xcode中進行如下設置: Edit->Scheme->Run->Arguments Passed On Launch ->-AppleLanguages (語言代碼)。
  • 例如,我們模擬器此時雖然是韓語,如果通過上述步驟設置為zh-Hans,那麽語言環境將會變為漢語,如下圖:
    技術分享圖片
    技術分享圖片
  • 運行效果:
    技術分享圖片
  • 如此一來,切換語言變得更加簡單,無需在模擬器的設置中進行繁瑣的語言切換。

代碼中字符串的本地化