2017-06-19 100 views
1

如何設置ios應用程序支持的語言?例如,我使用NSDate獲取當天的日子。如果設備語言不是我支持的語言,NSDateFormatter會以設備語言返回「day」,但如果我不支持該語言,我想要獲得英語。ios應用程序本地化

我知道有一種方法可以使用NSLocal獲得特定語言的一天,但我不想這樣做,因爲我需要轉換其他字符串。

回答

0

蘋果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文件中的所有字符串,需要將每個字符串包含到.XLIFFfile中。這是語言專家需要查看的文件,並在.XLIFF中包含每個字符串的正確翻譯字。正如我之前所說,這是一旦包含在您的項目中的文件,NSLocalizedString(方法將搜索此文件併爲您獲取正確的翻譯字符串。

就是這樣!

+0

如果我需要使用CLGeocoder獲取用戶所在城市,該怎麼辦?它以設備語言返回用戶的城市。我只需要使用我支持的語言。 –