2016-01-22 161 views
4

如何爲多種語言製作字符串?多語言iOS應用程序

我想要這個規則更多的語言。

localNotification.alertBody = "You have received \(Int(msg)) new messages" 

我想這一點:

U_Have = 「你必須接受」; (英文)

U_Have =「U heeft」; (荷蘭語)

New_msg =「new messages」; (英文)

New_msg =「nieuwe berichten」; (荷蘭)

我認爲它會看起來LIK這樣的:

localNotification.alertBody = "U_Have \(Int(msg)) New_msg" 

但我怎麼能做出這可能與雨燕爲iOS?

+1

通過使用本地化,而不是通過代碼,你看着的iOS本地化使用Xcode的應用程序?如果推送消息來自服務器,您可能必須在那裏進行本地化。 – luk2302

回答

1

你正在做什麼 - 翻譯單詞而不是整個短語 - 在某些語言中出現嚴重錯誤。

關於本地化和最佳實踐有很多文獻。去,有一個閱讀,也許開始here

1

嘗試某事像這樣:

func getSystemLanguage() -> String{ 
     var Language: String = "en" 

     if let preferredLanguage = NSLocale.preferredLanguages()[0] as String? { 
      Language = preferredLanguage 
      if(Language.rangeOfString("en") == nil && Language.rangeOfString("da") == nil){ 
       Language = "en"; 
      } 

      if Language.rangeOfString("en") != nil { 
       Language = "en"; 
      } 

      if(Language.rangeOfString("da") != nil){ 
       Language = "da" 
      } 
     } 
     return Language 
    } 

然後:

if(getSystemLanguage == "da"){ 
U_Have = "U heeft"; (Dutch) 
} else { 
U_Have = "You have receive"; (English) 
} 

我強烈建議你把所有的字符串在一個文件中,並做某事喜歡這樣,因爲如果你不你」就會有很多工作如果U添加一個新的語言:

class LocalizedStrings { 
class func getVariable(Variable: String) -> String{ 

      var Key: String = "Key" 
      switch (Variable) { 
      case "Test": 
       if(Logic.getSystemLanguage() == "da"){ 
        Key = "Dutch" 
        return Key 
       } else { 
        Key = "English" 
        return Key 
       } 
     default: 
     return "NotFound" 
      } 
      } 
     } 

然後:

LocalizedString.getVariable("Test") 

如果你只是想本地化你的故事板設置字符串就容易多了:

+1

爲什麼你推薦不使用'NSLocalizedString()'和蘋果公司推出的accomanying工具?不使用現有的服務方式,編寫自定義代碼很少是一個好主意。另外,請記住不要本​​地化短語的部分內容,而要整個短語,尤其是涉及到內插。否則,它肯定會出現可怕的錯誤。 – SmokeDispenser

+0

事實是我沒有考慮NSLocalizedStrings,而是使用這個邏輯來提醒我,並且我引用了它。我沒有遇到任何問題,但我的項目並不大。我認爲你是NSLocalizedStrings可能是更好的解決方案,但我還沒有嘗試過。我會在下次嘗試。 – Godlike