多语言iOS应用程序

时间:2016-01-22 13:19:43

标签: ios swift multilingual

如何为多语言创建字符串?

我希望此规则适用于更多语言。

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

我想要这个:

U_Have =“你收到了”; (英文)

U_Have =“U heeft”; (荷兰)

New_msg =“新消息”; (英文)

New_msg =“nieuwe berichten”; (荷兰)

我认为这看起来很像:

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

但是如何使用Swift for iOS实现这一目标呢?

2 个答案:

答案 0 :(得分:2)

你想要做什么 - 翻译单词而不是整个短语 - 在某些语言中出现了严重错误。

关于地方化和最佳实践的文献很多。去,读一读,也许开始here

答案 1 :(得分: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)
}

我强烈建议你把所有字符串都放在一个文件中并做这样的事情,因为如果你不这样做,如果你添加一种新语言就会有很多工作:

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")

如果您只想本地化在故事板中设置的字符串,则更容易:

相关问题