iOS應用的國際化i18n

2021-07-01 23:40:13 字數 1782 閱讀 8403

m

ios應用的國際化,主要分為3個部分:

下面我就來一一說明。

info.plist 檔案的國際化

我們使用xcode 4.5 建立乙個新專案,會自動建立乙個 en.lproj 目錄,這個目錄下存放的就是需要國際化的檔案(預設為英文)。下面,我們還需要建立中文國際化支援。

1. 建立名為 zh-hans.lproj 的目錄

2. 在專案的 info.plist 檔案中增加配置 localizations, 新增英文和中文的支援:english, chinese(simplified)

3. 將 en.lproj/infoplist.strings 檔案拷貝到 zh-hans.lproj/infoplist.strings 檔案中。

4. 將 zh-hans.lproj 目錄新增到專案。注意要選擇 add to targets

5. 選擇 file -> info -> localization 為對應的語言

在 infoplist.strings 檔案中,我們可以國際化一些應用資訊,例如:

cfbundledisplayname 應用顯示名稱。這樣我們就可以根據不同的語言,顯示不同語言的應用名。

的 key summary 部分。

.xib 檔案的國際化

我們已經建立了乙個英文的xib檔案,在 en.lproj 檔案下。然後,需要使用命令列來操作:

1. 將 .xib檔案 中的文字提取,另存為 .strings檔案。

ibtool --generate-strings-file mainviewcontroller.strings mainviewcontroller.xib

2. 將 mainviewcontroller.strings 拷貝到 zh-hans.lproj 目錄下,然後漢化該檔案中的文字

3. 執行命令,根據英文的 .xib檔案 和 .strings漢化檔案 生成乙個漢化後的 .xib 檔案

ibtool --strings-file zh-hans.lproj/mainviewcontroller.strings --write zh-hans.lproj/mainviewcontroller.xib en.lproj/mainviewcontroller.xib

4. 將生成的這個 .xib 檔案新增到專案中的 zh-hans.lproj 分組下,注意要選擇 add to targets

5. 選擇 file -> info -> localization 為對應的語言

至此,xib檔案的漢化已經完成。

.m 檔案的國際化

1. **中,凡是需要國際化的文字,都使用 nslocalizedstring 函式,例如 

nslocalizedstring(@"hello_world", @"hello world!");

2. 執行命令,將所有 .m 檔案中需要漢化的文字都提取出來,並放入 en.lproj 資料夾下

genstrings -o en.lproj *.m

此時,會自動生成 localizable.strings 檔案。接著將該檔案也拷貝到 zh-hans.lproj 資料夾下去。這個檔案就是需要漢化的內容

3. 將 .strings 檔案新增到專案中相應的漢化目錄下,注意要選擇 add to targets

4. 選擇 file -> info -> localization 為對應的語言

然後,我們執行程式,通過修改系統語言發現,檔案顯示名稱、.xib檔案 和 .m檔案 都可以自動切換顯示語言了。

附上示例:

iOS應用的國際化i18n

ios應用的國際化,主要分為3個部分 下面我就來一一說明。info.plist 檔案的國際化 我們使用xcode 4.5 建立乙個新專案,會自動建立乙個 en.lproj 目錄,這個目錄下存放的就是需要國際化的檔案 預設為英文 下面,我們還需要建立中文國際化支援。1.建立名為 zh hans.lpr...

iOS應用的國際化i18n

ios應用的國際化,主要分為3個部分 info.plist 檔案的國際化 xib檔案的國際化 m檔案的國際化 下面我就來一一說明。info.plist 檔案的國際化 我們使用xcode 4.5 建立乙個新專案,會自動建立乙個 en.lproj 目錄,這個目錄下存放的就是需要國際化的檔案 預設為英文 ...

react Taro 使用i18n國際化

npm install react i18next i18next i18next browser languagedetector 新建index.jsx import languagedetector from i18next browser languagedetector import i1...