本地化字符串(Localizable.strings)导致属性列表(plist)解析错误

20

我刚刚在我的Xcode项目中将文件Localizable.strings本地化,以便将我的应用程序本地化到几种不同的语言。然而,使用标准的“key = value”格式编辑了每个文件后,我收到了以下解析错误,它没有指定一个文件,这使得很难跟踪它指的是什么。

CFPropertyListCreateFromXMLData():旧样式的plist解析器:字典中缺少分号(Missing semicolon in dictionary on line 10)。解析将被放弃。断点_CFPropertyListMissingSemicolon以进行调试。

我已经查看了每个*.strings文件,特别是第10行,并且未发现任何有趣或相关的问题。请问我哪里做错了。

这是我项目中Localizable.strings文件的样例。所有其他文件都遵循相同的格式。

"Enter URL" = "Voer adres in"
"Headers" = "Koppen"
"Key" = "sleutel"
"Value" = "waarde"
"Parameters" = "Parameters"
"Tap to add a new line" = "Tik om een nieuwe lijn toe te voegen"
"Perform request" = "Verzoek Uitvoeren"
"Response" = "Antwoord"
"Received Headers" = "Ontvangen Koppen"
"Error" = "Fout"
"Loading" = "Verzoek aan het versturen"

我随后使用NSLocalizedString()来提供翻译后的字符串。

5个回答

45

正如错误信息所述,您在每行末尾缺少分号。

"foo" = "bar";

正确格式是什么


确保所有引号都被转义,"foo" = ""引号" bar"; ("plutil" 退出码为1) - TouchBoarder

3
"Enter URL" = "Voer adres in";
"Headers" = "Koppen";
"Key" = "sleutel";
"Value" = "waarde";
"Parameters" = "Parameters";
"Tap to add a new line" = "Tik om een nieuwe lijn toe te voegen";
"Perform request" = "Verzoek Uitvoeren";
"Response" = "Antwoord";
"Received Headers" = "Ontvangen Koppen";
"Error" = "Fout";
"Loading" = "Verzoek aan het versturen";

这是正确的公式


1
该消息也可能是由于在行尾使用冒号(:)而不是分号(;)导致的。请确保每行末尾都有分号(;),并且没有冒号(:)。

0
在我的情况下,错误是由于缺少引号引起的。
"CFBundleDisplayName" = myTestApp";

0

Swift 4

确保所有应用程序文件的Localizable.strings不要超过一页,只有一页。

local.string 英语 "hi" = "hi";

local.string 阿拉伯语 "hi" = "هاي";

使用

并将此扩展放入您的应用程序中。

extension String {
    var localizedLized: String {
        return NSLocalizedString(self, comment: "")
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接