Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift:NSLocalizedString(键、字符串)不能与AlertController一起使用-如何使用正确的方法?_Ios_Swift_Localization_Nslocalizedstring - Fatal编程技术网

Ios Swift:NSLocalizedString(键、字符串)不能与AlertController一起使用-如何使用正确的方法?

Ios Swift:NSLocalizedString(键、字符串)不能与AlertController一起使用-如何使用正确的方法?,ios,swift,localization,nslocalizedstring,Ios,Swift,Localization,Nslocalizedstring,我正在尝试本地化我的应用程序,我在“信息”选项卡下设置了两种语言的本地化。Xcode在Main.storyboard下创建了两个名为Main.strings(英语)和Main.strings(德语)的新文件 现在,当我更改这些文件中的不同元素(Xcode为按钮、标签、标题等创建的元素)时,一切正常 但我还需要定位一个警报控制器。以下是我所做的,但这不起作用,我也不知道为什么,因为就搜索引擎的帮助而言,我是用正确的方式做的: 在两种语言的Main.strings文件中,我在文件底部的Xcode c

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

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

但我还需要定位一个警报控制器。以下是我所做的,但这不起作用,我也不知道为什么,因为就搜索引擎的帮助而言,我是用正确的方式做的:

在两种语言的Main.strings文件中,我在文件底部的Xcode created元素下添加了以下内容:

"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添加的键。因此,在这种情况下,控制器显示:

  • 警觉的
  • 警报信息
  • 取消
但是Xcode不会从我在两个Main.strings文件中添加的键中提取相应的字符串。如果我将“alert”键更改为“test”,控制器将显示单词test

那么,我做错了什么?如何解决这个问题? 我必须在Main.strings文件中指定我没有指定的内容,还是必须链接到这些文件?因为在Main.strings中更改所有Xcode生成的元素都是有效的,所以我认为这个过程是完全自动的?
谢谢。

映射应该在“Localizable.strings”中您检查了NSLocalizedString的返回值了吗?这是两种语言创建的Xcode文件之外的另一个文件?(Main.strings)?这就是我所知道的,另请参见请注意,这不是UIAlertController的问题。谢谢!令人惊讶的是,这是有效的!但我会把这些文件放在哪里(特别是当我有多个不同语言的文件时)?我在之前的评论中添加了一个苹果文档的链接。“将Localizable.strings文件添加到所有语言文件夹。”