如何設置ios應用程序支持的語言?例如,我使用NSDate獲取當天的日子。如果設備語言不是我支持的語言,NSDateFormatter會以設備語言返回「day」,但如果我不支持該語言,我想要獲得英語。ios應用程序本地化
我知道有一種方法可以使用NSLocal獲得特定語言的一天,但我不想這樣做,因爲我需要轉換其他字符串。
如何設置ios應用程序支持的語言?例如,我使用NSDate獲取當天的日子。如果設備語言不是我支持的語言,NSDateFormatter會以設備語言返回「day」,但如果我不支持該語言,我想要獲得英語。ios應用程序本地化
我知道有一種方法可以使用NSLocal獲得特定語言的一天,但我不想這樣做,因爲我需要轉換其他字符串。
蘋果documentation涵蓋了這個很清楚。我知道所有你需要的是「day」這個詞,但是如果你這樣做,以下內容將幫助你包含任何語言的任何詞:
1)你需要將所有的詞(String
s)放在你的應用到一個單獨的.swift
文件中。每個字應該在此字符串轉換爲設備設置每個設備的NSLocal
一套本地化的字符串函數返回:
struct Localization {
static let all: String = {
return getLocalized("All")
}()
static let allMedia: String = {
return getLocalized("All Media")
}()
static let back: String = {
return getLocalized("Back")
}()
// ...and do this for each string
}
2)該文件還應該包含一個靜態函數,將字符串轉換:
static func getLocalized(_ string: String) -> String {
return NSLocalizedString(string, comment: "")
}
在這裏,NSLocalizedString(
方法將爲您做所有的繁重工作。如果將在您的項目中查看.XLIFF
文件(我們將做到這一點),並根據設備NSLocale
獲取正確的字符串。此方法還包含一個「註釋」,以告訴語言翻譯器如何處理與您一起傳遞的「字符串」參數。
3)檢查您放入.swift
文件中的所有字符串,需要將每個字符串包含到.XLIFF
file中。這是語言專家需要查看的文件,並在.XLIFF
中包含每個字符串的正確翻譯字。正如我之前所說,這是一旦包含在您的項目中的文件,NSLocalizedString(
方法將搜索此文件併爲您獲取正確的翻譯字符串。
就是這樣!
如果我需要使用CLGeocoder獲取用戶所在城市,該怎麼辦?它以設備語言返回用戶的城市。我只需要使用我支持的語言。 –