如果我从textedit或web复制某些内容并将其粘贴到可本地化的文件中,则会显示此编译错误。如果我在可本地化的文件中键入它,它不会显示任何错误。我向你保证我使用了正确的格式和';'在文件中。
"New" = "New";
"In Progress" = "In Progress";
"Waiting" = "Waiting";
"Closed" = "Closed";
答案 0 :(得分:93)
您必须为每个版本的可本地化文件运行它。 E.g
cd
到您的项目根目录cd eb.lproj
- 您可以将其替换为
您正在使用的任何本地化。 plutil -lint Localizable.strings
当您运行第3步时,您将看到错误,告诉您文件有什么问题。或者你会被告知文件没问题
答案 1 :(得分:23)
对我而言,它缺少半冒号。如果您使用工具生成.strings
文件,请确保没有可以“吃”的未转义引号。划界的冒号。
答案 2 :(得分:9)
pl
日志将显示类似这样的内容
2019-08-14 16:39:34.066 pl [21007:428513] CFPropertyListCreateFromXMLData():老式plist解析器:第427行的字典中缺少分号。解析将被放弃。中断_CFPropertyListMissingSemicolon进行调试。 2019-08-14 16:39:34.068 pl [21007:428513] CFPropertyListCreateFromXMLData():老式plist解析器:第427行的字典中缺少分号。解析将被放弃。中断_CFPropertyListMissingSemicolon进行调试。 2019-08-14 16:39:34.071 pl [21007:428513] ***解析ASCII属性列表的异常:NSParseErrorException错误域= NSCocoaErrorDomain代码= 3840“意外字符/在第1行” UserInfo = {NSDebugDescription =意外字符/在第1行第1行,kCFPropertyListOldStyleParsingError =错误域= NSCocoaErrorDomain代码= 3840“缺少';'在第427行上” UserInfo = {NSDebugDescription = Missing';'在线427}}
答案 3 :(得分:4)
可能有多种原因:
<<<<<<< HEAD
,=======
和>>>>>>>
。
请注意,plutil -lint Localizable.strings
返回了OK
,指向第4点!
答案 4 :(得分:3)
我有同样的问题,我通过在 Localizable.String 文件中评论或删除未使用的字符串来解决它。
答案 5 :(得分:2)
我知道这个问题是很久以前问过的,但是我的情况和解决方案有点不同。 今天,我遇到了同样的问题,但是当我尝试使用
检查该问题时plutil -lint Localizable.strings
我的状态为 OK ,这表示一切正常,然后我尝试使用查找问题
pl
但是我再次打印出文件文本,没有提到任何错误,然后我尝试了一个技巧,对我有用。
就是这样,XCode向我显示了行号问题,而问题是我将DéjàVerified文本作为指定行的键,这可以帮助我识别和解决问题,希望它将节省时间。
干杯!
答案 6 :(得分:2)
就我而言,我在字符串对之间缺少“ =”。甚至plutil也无法帮助我发现错误行。我手动检查了每个字符串对。 :/
答案 7 :(得分:1)
还要确保字符串文件名始终为Localizable.strings
答案 8 :(得分:1)
如果缺少“;”在Localizable.string文件中所有行的末尾,可能会发生此错误。
例如:- “ header_text” =“当前语言”; “ change_language” =“更改语言”;
“ header_text” =“වත්මන්භාෂාව”; “ change_language” =“භාෂාවවෙනස්”;
答案 9 :(得分:1)
我曾经有一个类似的错误,结果是文件中间有一个URL,如下所示:
// Some Comment 1
"Some key 1" = "Some value 1";
http://...whatever...
// Some Comment 2
"Some key 2" = "Some value 2";
在该文件上调用plutil -lint
时,输出为:
Unexpected character / at line 1
好吧,第一个字符确实是/
,因为文件以注释开头,但是在删除URL后问题得以解决;或将其变成实际上应该是的注释。请注意,URL不在字符串文件开头附近,而是在6000行字符串文件中间。我只能通过浏览提交历史记录并始终查看更改来找到它。
答案 10 :(得分:1)
你的语法似乎很好,我唯一能看到的就是&#34;打破&#34;您的文件并导致此错误是引号字符。请确保使用reqular one "
,而不是像″
这样的任何其他形式。
答案 11 :(得分:0)
如果显示类似Unexpected character " at line 1, and it is the first string like "app_name"="Any Name"
检查文件是否为UTF16
答案 12 :(得分:0)
我遇到了这个问题,所有格式都正确。使用plutil -lint Localizable.strings
和使用"utf8_utils"
之类的ruby库检查非法字符在查找非法字符时也无效。但是当我在运行irb
时将Localizable.strings内容粘贴到终端应用程序中时,确实显示了奇怪的字符。
"PercentComplete" = "%d procent gennemført";
粘贴到irb中:
"PercentComplete"\U+FFC2\U+FFA0= "%d procent gennemf\U+FFC3\U+FFB8rt";
然后我要做的就是用正则表达式替换来修复那些奇怪的空白字符:\U+FFC2\U+FFA0
答案 13 :(得分:0)
我只是有这种经历:
文件无法正常工作,并出现如下错误:(使用plutil -lint进行测试)
df <- data.frame(df, stringsAsFactors = FALSE)
我刚刚在XCode中创建了一个新文件,然后复制并粘贴了所有文件内容,突然一切正常。
我猜想在与其他文本编辑器一起工作时可能出问题/损坏了文件本身。
答案 14 :(得分:0)
我遇到了类似的问题,我没有使用反斜杠\
转义字符串值,因为我的字符串值之一。
<强>之前:强>
“INVALID_NUMBER”=“您似乎输入的号码无效。号码应以”0“或”7“开头;
<强>更新强>
“INVALID_NUMBER”=“您似乎输入的号码无效。号码应以\”0 \“或\”7 \“”开头;
如果要显示引号"
答案 15 :(得分:0)
感谢plutil的建议,我知道要使其生效,您还必须删除任何\或*,而不是将其视为注释,并且,重要的是,添加;。到文件末尾。 Xcode 11.5。
答案 16 :(得分:0)
看来你的info.plist格式不正确。检查一下。我也有同样的问题。我通过修改我的info.plist解决了这个问题。
答案 17 :(得分:0)
如果 pl 和 plutil 显示没有问题,请检查文件的编码。我有两次类似的问题,在我的情况下是由于不正确的编码,尽管我不知道它是如何改变的(我实际上在 X-Code 的文件中间添加了一行)。在某些编辑器(我使用 Android Studio)中从 UTF-16LE 转换为 UTF-16BE 解决了这个问题。
答案 18 :(得分:0)
这可能是因为翻译文件格式错误。
您可以下载一个名为 Localizable 的 Mac 软件。
你只需要将Localizable.strings拖到软件中,它就会告诉你文件中哪一行可能有问题,这很有用。它为我节省了很多时间。现在分享给大家。
希望对你有帮助。
答案 19 :(得分:0)
对我来说,我的代码中有一个 NSLocalizedString 包含字符串插值,例如NSLocalizedString("\(product.price ?? "")per_month")
。当我导出本地化时,它被添加到我的字符串文件中,然后格式错误。它让我失望,因为我在 Xcode 中的字符串文件看起来不错,但实际上该文件作为导出本地化过程的一部分进行了更新,并且错误在那里蔓延。
如果有人遇到同样的问题,请尝试分别调用 genstrings 并查看新生成的文件格式是否正确。请确保先保存您的字符串,因为这会覆盖您的字符串文件:find ./ -name "*.swift" -print0 | xargs -0 genstrings -SwiftUI -o en.lproj
答案 20 :(得分:-2)
似乎SVN对此文件存在一些问题。因为它认为它是一个二进制文件。它在每个字符之间插入了许多不可打印的字符。我仍然找不到合适的解决方案。只需更改生产PC中的Localizable.string文件,以避免出现任何问题。
更新:将SVN客户端(smartSVN)更新到最新版本解决了这个问题。似乎我的一位同事正在使用旧版本。当他将更改提交到可本地化的文件时,它会导致错误。