標籤:
在IOS的開發過程中,很多時候組件都是拖拉出來,直接在故事版(storyboard)上直接使用,而並沒有做輸出關聯,或者有些UILabel只做顯示,不會進行修改。所以在這種不會在代碼中修改的情況下,就需要用到故事版的國際化,
在xcode4.5之前,如果做故事版的國際化,是要維護多個storyboard,但在xcode4.5之後,國際化storyboard做國際化,就變成了一個storyboard,多個語言設定檔
其中Main.storyboard為真實的故事版檔案,Main.strings(Chinese(Simplified)) 和 Main.strings(English)檔案為設定檔,根據支援不同的語言版本,會有不同的翻譯
看看下面的例子:
Main.storyboard(Base):
這裡我們需要把kiss的文字做國際化,這裡是個UIButton,點擊需要國際化的控制項,然後選擇右邊的屬性,可以看到空間的object ID,這個ID就等於組件的國際化Key,然後在相應的國際化檔案當中,修改它的value即可
Main.strings(English)檔案
Main.strings(Chinese(Simplified))檔案
其中國際化文字檔中的object ID後跟的normalTitle為組件的屬性名稱
這裡我在這裡分享一下使用故事版國際化的弊端,如有補充可以在留言給我,互相學習,看看下面我說的弊端有沒有改進的方法
- 故事版的國際化暫時沒有同步機制,就是當你添加了一個新的組件,you按鈕,相應的國際化檔案,沒有同步更新,需要手動再次查看object ID,然後進行添加
- 複用性不強,假如有多個相同值得時候,重複編寫多遍,例如,我現在有兩個按鈕,按鈕的文字都為瀏覽,但是我需要在國際化檔案當中添加兩個object ID
- 沒有一份文檔說明所有國際化話組件的屬性名稱,如果normalTitle,這種屬性,沒有可以提示到底這個屬性的名稱是什麼
這給個建議,可以解決以上3個弊端問題
- 方法一:可以在整個程式基本完成後再做故事版的國際化
- 方法二:可以重新建立國際化檔案
IOS開發之國際化篇第三章:故事版文本國際化