支援多語系的方法

魏巍
8 min readJan 24, 2018

--

本文章想要介紹怎麼讓您的 APP 支援多語系。比方說我有一個專案英語的版本看起來像這樣:上面有一個文字標籤寫著 Hello。然後是一個文字輸入框,裡面寫了 World。接著是一顆按鈕,寫了 save。然後是一個國旗。按下 save 按鈕會跳出警告控制器,裡面會顯示 Hello World,按下 OK 警告控制器就會消失。

如果想要支援多語系的話很簡單,有很多跟多語系相關的設定是我們可以學的。請先選到 Project,在下面的 Localizaitons 這邊按下加號。比方說這個範例除了要支援英語以外,也要支援德語,就選German。

之後,跳出來的對話框全選,按下 finish 按鈕,現在就要開始多語系的設定:

a)App 顯示名稱支援多語系

請選到右邊的 info.plist。在最下方一列按加號,加一列設定。加入 applicaiton has localized display name。之後在右邊選 YES。

新增一個檔案,在 Resource 分類下,選到 String File,新增一個字串檔案。

這個檔案裡面要存 App 顯示名稱的的翻譯,請命名成 InfoPlist。(請注意,這個檔名一定命名成 InfoPlist)

在左邊欄選到這個檔案的時候,在右邊欄選看起來好像文件的 Icon,然後按下面的 localize,就可以幫設定App顯示名稱的檔案做多國語系的設定。跳出來的對話框選 Localize,

把 German 這邊打勾。(打勾左邊就會出現三角形。)

把三角形打開,先選到英文,裡面加入一行程式碼:(請記得最後要打一個分號。)

CFBundleDisplayName = "Hello";

打完之後如圖。這個意思是說,在英文語系的手機中,這個 App 的名字要叫做 Hello。(截圖沒有分號,但是記得叫加分號歐)

接下來選擇德文的版本,在德語版本也加上一行差不多一樣的程式碼:

CFBundleDisplayName = "Hello";

這個意思是說,在德語語系的手機中,這個 App 的名字要叫做 Hallo。

現在執行程式的話,按 Home 鍵,您就會發現 App顯示的名字是 Hello。如果把語系改成德文的話,就會發現在德語的情況下,顯示的是德語 H-a-l-l-o 的版本。

b)Main.Storyboard 上顯示文字的多語系設定

如果要讓 Main.Storyboard 設定畫面這些文字在不同語言也會顯示不同的文字的話,請選到 Main. storyboard。然後右邊欄,選好像文件的 Icon,把語言 english 打勾。

把左邊的 Main.storyboard 打開,選到英文版本的話,就會看到是英文的版本的文字。

選到德文版本之後,翻譯一下,這樣等下轉換語系的時候,畫面上的文字就是德文的了。

c)顯示圖片支援多語系

目前畫面上的美國國旗,這是一個 ImageView,顯示的圖片檔案是「Flag.png」。請注意,這個圖片不是放在 Asset.XCasset 裡面。所以如果您的圖片也要支援多語系的話,匯入專案的時候,要放在 Asset.XCasset的外面。

選到要支援多語系的圖檔,選 localize。跳出來的對話框選 localize,

把 english 跟 German 都打勾就好了。

請先關掉這個專案,到您存檔的地方,就會發現這時有一個「en.lproj」的資料夾,也有一個「de.lproj」的資料夾,「en.lproj」的資料夾,是放英文的資料;「de.lproj」的資料夾,則是德語版本的資料夾。如果點進目前德語資料夾的話,會發現裡面的圖是美國的國旗。如果想要在德語版本顯示德國國旗的話,就請把德國的國旗拉進這個資料夾中,取代美國的國旗。(請注意,圖檔的名稱要一樣。)

d)程式內的文字支援多語系

目前在這個程式按下按鈕,會跳出警告控制器,裡面會秀出 Hello World。如果要設定跳出來德語的版本是德語的文字的話,做法是先新增一個檔案,在 resource 分類下,選 String File,新增一個字串的檔案。

檔名請命名成 Localizable。(這個檔案的名字也請命名成一樣的檔名)

這個檔案就是設定程式裡面碰到的文字在不同語言應該分別秀出什麼字串。請先在這個檔案裡面請先寫 Hello World 等於 Hello World。
(記得最後要打分號。然後先存檔。)

請按右邊的 localize,跳出來的對話框再按 localize。

把右邊的德語打勾。

把左邊欄的 Localizable.string 的三角形打開來的話,會發現有兩個子檔案。一個是是英文的,裡面設定,碰到 Hello World 就顯示 Hello World。

另外一個是德文的設定,這邊請改成,碰到 Hello World ,就顯示 Hello Welt。

回到程式碼當中,把要支援多語系的字串改成 NSLocalizedString。

請編譯跟執行這個程式。英語版本看起來想這樣。

然後按 home 鍵,選到設定, settings,選一般 General,選 Other Language 語言,加入德文,Deutch,按 Done,

當語言是德文的時候,按 home 鍵,滑到範例的 app,您看到顯示的名字就是德語版的 Hallo, H-A-L-L-O。

按下啟動的話,語言就會變成德語顯示,圖片也會變成德文。

以上就是如何支援多語系的方法,要調回英文的話,就還是選 Einstellung, 也就是設定,iPhone Sprache 選 English,然後選 fertig 就好了。
(跳出來的對話框選 english vervandern)

支援多語系的方法,您學會了嗎?如果學會的話,請您試試看用同樣的方法,在 app 裡增加支援中文的功能吧?感謝大家讀到這邊,如果您喜歡這個短片的話,歡迎訂閱。另外,我在 Facebook 有開一個學習 SWIFT 的粉絲團,每天在那邊我都會分享我學到的 iPhone 開發技巧,也歡迎加入。

--

--

魏巍

Swift 講師、作家,以及開發者。 獨立開發 iPhone 與 Android 程式與遊戲,已經上架 40 款App,從企畫、美術、寫程式全部都一手包辦。其中最有名的包括年初上架登上App Store排行榜免費遊戲第一名的「黃色小鴨爆炸了」;與一年前免費遊戲榜第二名的「指認嫌疑犯」。 提供手機程式和遊戲開發課程,