2016-01-22 77 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