2012-12-21 47 views
4

iOS如何在翻譯後的字符串或語言的語言環境中顯示語言列表。原生iOS語言翻譯字符串及其語言代碼標識(LCID)

  • 是否存在與之相關的LCID?
  • 如果是這樣,我在哪裏可以找到它的映射?
  • 它是如何工作的?
  • 有沒有可以指向我的API或任何文檔?

我附上什麼,我實際上意味着一個截圖: enter image description here

所有我能找到的就是這個link

更新: 我要實現的是這樣的:

  • 我可以在哪裏將國家與其語言進行映射,這是實際的在它的語言環境中。那麼是否存在一種LCID類型的東西,我可以在其中映射它並使用iOS API使用LCID獲取該Locale字符串?

  • 樣機低於
    enter image description here

+0

@MartinR它做到了!仍然在做一些研究!一旦我相信我會接受你的答案。因爲這些語言都在Web服務器上,並且本地化來自那裏作爲Web服務,所以我需要將這些服務器上的LCID映射到iOS上的區域設置ID。希望有一些像LCID這樣的普遍公約。但正如有人提到的那樣,它只是一個Windows術語! – aliasgar

回答

9

你可以得到翻譯的語言的語言列表的地區與下面的代碼:

的Objective-C:

NSArray *languages = [NSLocale preferredLanguages]; 
for (NSString *lang in languages) 
{ 
    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:lang]; 
    NSString *translated = [locale displayNameForKey:NSLocaleIdentifier value:lang]; 
    NSLog(@"%@, %@", lang, translated); 
} 

斯威夫特:

let languages = NSLocale.preferredLanguages() 
for lang in languages { 
    let locale = NSLocale(localeIdentifier: lang) 
    let translated = locale.displayNameForKey(NSLocaleIdentifier, value: lang)! 
    print("\(lang), \(translated)") 
} 

輸出:

en, English 
fr, français 
de, Deutsch 
ja, 日本語 
nl, Nederlands 
... 

我希望這會回答您的問題的第一部分,並可能有助於第二部分。


斯威夫特3更新:

let languages = NSLocale.preferredLanguages 
for lang in languages { 
    let locale = NSLocale(localeIdentifier: lang) 
    let translated = locale.displayName(forKey: NSLocale.Key.identifier, value: lang)! 
    print("\(lang), \(translated)") 
} 
2

的LCID是Windows的概念。 iOS上沒有這種東西。語言通常由ISO 639-1或639-2語言代碼標識。

從您構建問題的方式來看,我認爲最好先閱讀Apple的internationalization and localization文檔。 NSLocale將成爲你的朋友。

+0

這三個鏈接都已死亡。 – kurtzbot

+0

@kurtzbot鏈接已修復。 –