這篇文章大概是目前你可以看到的最簡單的本地化教程。
廣告
Swift iOS開發小書 ,幫你快速上手開發 epub.ituring.com.cn/946
目標
本地化的意義,在於iOS切換不同語言時,App可以隨同改變,用指定的語言顯示應用。iOS提供了一套用來國際化的工具。本文就來解析它。
希望是程式碼傳入一個字串,在不同語言情況下,顯示不同內容。具體說:
print (NSLocalizedString("Welcome", comment: "Welcome"))複製程式碼
在語言為英語是,可以列印出:
Welcome english複製程式碼
在語言為漢語時,可以列印出:
歡迎 zh-Hans複製程式碼
準備工程和字串檔案
我們先幹起來。第一步是建立一個Single View app的工程。然後首先進入工程目錄,隨即執行如下命令,建立用於不同語言的字串檔案:
mkdir Base.lproj
touch Base.lproj/Localizable.strings
echo `"Welcome" = "welcome base";` > Base.lproj/Localizable.strings
mkdir en.lproj
touch en.lproj/Localizable.strings
echo `"Welcome" = "Welcome english";` > en.lproj/Localizable.strings
mkdir zh-Hans.lproj
touch zh-Hans.lproj/Localizable.strings
echo `"Welcome" = "歡迎 zh-Hans";` > zh-Hans.lproj/Localizable.strings複製程式碼
這樣,zh-Hans.lproj/Localizable.strings的內容,使用cat zh-Hans.lproj/Localizable.strings
可以看出是:
"Welcome" = "歡迎 zh-Hans";複製程式碼
引號很重要,分號也很重要,寫錯了,就玩不出來了。.strings
類的檔案目的就是為了建立字串和本地文字的關係,只是改變語言後可以變化的資料基礎。
檔案有了,下面是把它們加入工程,做法就是選擇工程,點選滑鼠右鍵,點選選單add files to
,多選檔案目錄清單為:
Base.lproj
en.lproj
zh-Hans.lproj複製程式碼
終於到程式碼
隨即,貼上程式碼到
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
print (NSLocalizedString("Welcome", comment: "Welcome"))
return true
}
}複製程式碼
執行,如果你此時的模擬器使用的語言為中文的話,那麼應該可以看到如下內容列印在控制檯:
歡迎 zh-Hans複製程式碼
一個本地化,不外乎是字串對應表,然後查表的操作,水果公司也能搞得這麼複雜,我也是服了。你看看如下參考,就知道我的意思了:
目標
本地化的意義,在於iOS切換不同語言時,App可以隨同改變,用指定的語言顯示應用。iOS提供了一套用來國際化的工具。本文就來解析它。
希望是程式碼傳入一個字串,在不同語言情況下,顯示不同內容。具體說:
print (NSLocalizedString("Welcome", comment: "Welcome"))複製程式碼
在語言為英語是,可以列印出:
Welcome english複製程式碼
在語言為漢語時,可以列印出:
歡迎 zh-Hans複製程式碼
準備工程和字串檔案
我們先幹起來。第一步是建立一個Single View app的工程。然後首先進入工程目錄,隨即執行如下命令,建立用於不同語言的字串檔案:
mkdir Base.lproj
touch Base.lproj/Localizable.strings
echo `"Welcome" = "welcome base";` > Base.lproj/Localizable.strings
mkdir en.lproj
touch en.lproj/Localizable.strings
echo `"Welcome" = "Welcome english";` > en.lproj/Localizable.strings
mkdir zh-Hans.lproj
touch zh-Hans.lproj/Localizable.strings
echo `"Welcome" = "歡迎 zh-Hans";` > zh-Hans.lproj/Localizable.strings複製程式碼
這樣,zh-Hans.lproj/Localizable.strings的內容,使用cat zh-Hans.lproj/Localizable.strings
可以看出是:
"Welcome" = "歡迎 zh-Hans";複製程式碼
引號很重要,分號也很重要,寫錯了,就玩不出來了。.strings
類的檔案目的就是為了建立字串和本地文字的關係,只是改變語言後可以變化的資料基礎。
檔案有了,下面是把它們加入工程,做法就是選擇工程,點選滑鼠右鍵,點選選單add files to
,多選檔案目錄清單為:
Base.lproj
en.lproj
zh-Hans.lproj複製程式碼
終於到程式碼
隨即,貼上程式碼到
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
print (NSLocalizedString("Welcome", comment: "Welcome"))
return true
}
}複製程式碼
執行,如果你此時的模擬器使用的語言為中文的話,那麼應該可以看到如下內容列印在控制檯:
歡迎 zh-Hans複製程式碼
一個本地化,不外乎是字串對應表,然後查表的操作,水果公司也能搞得這麼複雜,我也是服了。
- locale.strings太容易出錯並且程式碼容易亂七八糟,有人建議使用plist替代: medium.com/@dcordero/a…
- nshipster.com/nslocalized…
- www.jianshu.com/p/b13945381…