Swift:NSLocalizedString(key,string)不能与AlertController一起使用 - 如何使用正确的方式?

时间:2017-10-29 11:49:59

标签: ios swift localization nslocalizedstring

我正在尝试本地化我的应用,并且我已在“信息”标签下设置了两种语言的本地化。 Xcode在Main.storyboard下创建了两个名为Main.strings(英语)和Main.strings(德语)的新文件。

现在,当我更改这些文件中的不同元素(Xcode为按钮,标签,标题等创建的元素)时,一切正常。

但我也需要本地化一个警报控制器。这是我做的,但这不起作用,我不知道为什么,因为到目前为止搜索引擎的帮助,我做到了正确的方式:

在两种语言的Main.strings文件中,我在文件底部的Xcode创建的元素下添加了这个:

"alert" = "Nothing to Share!";
"message" = "You must enter a value and hit SPLIT to share with your friends.";
"cancel" = "Cancel";

(and obviously the same for the German Main.Strings file)

在我的viewController中,我添加了这样的警报控制器:

let alertTitle = NSLocalizedString("alert", comment: "")
let alertMessage = NSLocalizedString("message", comment: "")
let cancelButtonText = NSLocalizedString("cancel", comment: "")

let alert = UIAlertController(title: alertTitle, message: alertMessage, preferredStyle: .alert)
let cancelAction = UIAlertAction(title: cancelButtonText, style: UIAlertActionStyle.cancel, handler: nil)
alert.addAction(cancelAction)
present(alert, animated: true, completion: nil)

警报控制器工作正常,但它显示我为NSLocalizedString添加的键。因此,在这种情况下,控制器显示:

  • alert
  • alertmessage
  • 取消

但是Xcode没有从我在两个Main.Strings文件中添加的键中提取相应的字符串。如果我将“警报”键更改为“测试”,则控制器将显示单词test。

那么我在这里做错了什么以及如何解决这个问题? 我是否必须在Main.strings文件中指定我没有或我必须链接到这些文件的内容?由于改变了Main.strings中所有Xcode生成的元素,我虽然这个过程是完全自动的吗? 感谢。

0 个答案:

没有答案