Swift iOS macOS 如何 Localize StoryBoard,StoryBoard 本地化,添加多語言支持,基於 String
本地化主要包含兩個部分:代碼中文本的本地化
和 StoryBoard 中文本的本地化
iOS
和 macOS
是一樣的
這裏只介紹 StoryBoard
的本地化,代碼中文本的本地化
請參閱這篇文章的前半部分,懶得說了
前言:StoryBoard 的本地化分爲兩種方式
一種是基於一個 StoryBoard
文件,摘取其中的字符串生成不同語言的 .string
文件,來實現多語言支持
一種是基於多個 StoryBoard
文件,每個語言都對應一個文件,這樣做很麻煩,只要改一處就需要改多個文件
所以我們只說基於多個 .string
文件的本地化操作
一、項目概覽
有這樣一個項目,結構是這樣的,目前沒有實現多語言支持,也就是本文中所謂的 本地化
Localization
,這些詞都是一個意思。
二、給項目添加多語言支持
點擊左側項目,選擇 [Project]
點選該項目,切到 [Info]
標籤,點擊下面的 [Localizations]
添加你需要支持的語言,如圖:
此時點選左側項目欄中的 main.storyboard 文件,會看到右側會有多種語言支持,點選你需要支持的語言。
再點開 main.storyboard
右側的箭頭時會看到下面多出兩個文件 Main.string(English)
Main.string(Chinese_Simple)
,這裏面就包含了該 storybaord 文件中所有的字符串。
如圖:
其實你還可以看到
Localization.string
文件下面也有兩個語言文件,這個是用於程序代碼中使用的字符串,具體查看開篇提到的那個教程文章
三、翻譯對應的文本
打開上面生成的文件,會看到如下的內容,進行翻譯即可
四、編譯調試不同語言下的呈現狀態
我們完成了多語言支持,那麼如何調試呢? xcode
有相應的功能,來設置調試時的系統語言來,來實現調試應用在不同語言狀態下的狀態。
[點擊項目名]
選擇 [Edit Schema]
然後 [Run]
- [Info]
- [Language]
選擇語言即可,這樣再運行,就會顯示對應語言的狀態了
五、效果
以下是我這個應用在實現多語言支持後的效果: 中文
和 英文
六、重要:修改 StoryBoard 之後如何添加新詞
前面做的已經很好,但如果你修改了 StoryBoard
,添加或刪除了部分字符串後,如何修改呢?
對應的 .string
中的字符串並不會跟着變,新加的字符串也不會自己出現在 .string
文件中。
此時我們就需要手動進行一下一系列操作,來把新的字符串添加到對應的語言中,讓我們開始:
1. 導出最新版的字符串
點擊 項目名
,選擇 [Editor]
菜單中的 [Export for Localization]
即可將當前 StroyBoard
和 Info.plist
對應的字符串都導出,然後選擇保存位置
2. 修改對應的翻譯文件
打開導出的文件夾看到如下結構,主要是修改其中的 xxx.xcloc/Localized Contents/xxx.xliff
文件,裏面包含所有需要翻譯的字符串
打開看一下
裏面 <source>
標籤中的文本是原文本, <target>
中的文本是翻譯後的文本
對於新添加的一些東西,是沒有<target>
這個標籤的,需要手動添加內容
爲了方便查找哪些沒有翻譯,Command + F 搜索正則 </source>\n *<note>
,就可以很容易定位到沒有翻譯的地方了,添加相應內容即可
3. 導入修改後的翻譯文件
點擊 項目名
,選擇 [Editor]
菜單中的 [Import Localization]
,選擇你剛纔修改的文件目錄即可導入
導入後會看到 .string
裏面已經添加了對應的翻譯條目
如果有些內容沒有翻譯,它會提示你哪些沒有被翻譯,以如下的方式展示,再根據指示回去修改即可
七、結
截圖累死我了,不留下個贊就走,不太合適吧 😄