IOS應用本地化小結

2021-06-10 01:30:58 字數 1421 閱讀 9011

幾經艱辛,專案終於到達尾聲,在上週給遊戲增加了簡體中文的本地化支援,這次本地化的內容主要有應用的名稱、字串和資源,ios在本地化的支援還是很友好的,最後來個簡單的小結吧。因專案是在xcode4上開發,本文的操作也是基於xcode4,在xcode3上,部分操作應該會有所不同。

開啟專案的「info「屬性編輯介面時,我們可以看到」localizations「一欄,如下圖所示,這就是設定專案本地化支援語言的地方,在這裡我們可以加入簡體中文(chinese(zh-hans))、正體中文(chinese(zh-hant))等語種的支援。

乙個xcode專案可以建立多個target,每個target代表乙個不同的應用(產品),而且每個target都有自己的info.plist配置檔案,應用程式名(安裝後在ios裝置上顯示的名稱)是在info.plist配置檔案裡設定。

加入多個語種後,infoplist.strings檔案下會多出乙個三角箭頭,展開後,可以看到每個語種都會對應乙個「infoplist.strings」檔案(下圖所示),選中乙個檔案,改變「cfbundledisplayname」的值,這樣就可以實現在不同的語言環境下顯示不同名稱的效果了。

cocoa框架內建了兩個常用的巨集來實現字串的本地化:

nslocalizedstring(key, comment)  

根據裝置當前的語言環境自動載入對應的資源檔案「localizable.strings」,再返回資源檔案裡key的值,如果不存在「localizable.strings」檔案,或者key不存在,會返回key本身。

nslocalizedstringfromtable(key, tbl, comment)  

根據裝置當前的語言環境自動載入對應的資源檔案tbl,再返回資源檔案裡key的值,如果不存在tbl檔案,或者key不存在,會返回key本身。

我們只要把字串定義在strings資源檔案裡,像應用程式名的本地化操作一樣,對strings資源檔案進行本地化操作,再用使用上面2個巨集讀取,就可以實現字串本地化顯示了:

//從檔案「localizable.strings」裡讀取key為「localizable demo」的值 

nsstring *title = nslocalizedstring(@

"localizable demo"

, nil);   

//從檔案「mystrings.string」裡讀取key為「test」的值 

nsstring *teststring = nslocalizedstringfromtable(@

"test"

, @"mystrings"

, nil);  

選中需要本地化的資源檔案 -> 開啟右邊工具欄(utilites) -> 在「localization」欄目加入需要支援的語言。xcode會把資源檔案拷貝到新加入語言的的目錄下,把準備好的本地化檔案替換掉xcode自動拷貝的檔案即可。

demo

iOS 字串本地化與應用名本地化

新建infoplist.strings檔案 在file inspector面板中 新增 新增english和base兩個版本 新增乙個鍵值對cfbundledisplayname programenglishname 在 base 版本中 新增cfbundledisplayname 程式中文名 類似...

iOS 語言本地化

建立localizable.strings檔案 localizable.strings新增支援語言 編寫兩個檔案中的字段 通過key value方式 通過 nslocalizedstring 相應字段 nil 獲取本地化之後的檔案。版的本地化語言實現 storyboard版的本地化語言實現 得到當前...

本地化 日誌本地化

目錄 概要執行時日誌 國際化與本地化 定義你的本地化日誌資訊mymsg enum package org.skzr.logging basename charset utf 8 value org.skzr.logging.msglocallog public enum mymsg 定義國際化檔案o...