Localizable.strings - 无法读取数据,因为它的格式不正确

问题描述 投票:29回答:12

如果我从textedit或web复制某些内容并将其粘贴到可本地化的文件中,则会显示此编译错误。如果我在可本地化的文件中键入它,它不会显示任何错误。我向你保证我使用了正确的格式和';'在文件中。

"New" = "New";
"In Progress" = "In Progress";
"Waiting" = "Waiting";
"Closed" = "Closed";
ios xcode ios11 localizable.strings
12个回答
99
投票
  • 使用终端的plutil:

你必须为每个版本的可本地化文件运行它。例如

  1. cd进入你的项目根目录
  2. cd eb.lproj - 您可以将其替换为您正在使用的任何本地化。
  3. plutil -lint Localizable.strings

当您运行第3步时,您将看到一个错误,告诉您文件有什么问题。或者你会被告知文件没问题


0
投票

我刚刚有这样的经历:

  • 外部翻译在Visual Code或其他文本编辑器中完成工作
  • 文件无法正常工作并出现如下错误:(使用plutil -lint进行测试) Localizable.strings: Unexpected character " at line 1 CardRatingView.strings: Unexpected character / at line 2

我刚刚在XCode中创建了一个新文件并复制粘贴了所有文件内容,突然一切正常。

我想在与其他文本编辑器一起工作时,某些内容可能会出错/破坏文件本身。


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


-1
投票

如果显示像Unexpected character " at line 1, and it is the first string like "app_name"="Any Name"的东西

检查文件是否为UTF16


-2
投票

似乎SVN对此文件存在一些问题。因为它认为它是一个二进制文件。它在每个字符之间插入了许多不可打印的字符。我仍然找不到合适的解决方案。只需更改生产PC中的Localizable.string文件,以避免任何问题。

更新:将SVN客户端(smartSVN)更新到最新版本解决了该问题。似乎我的一位同事正在使用旧版本。当他将更改提交到可本地化的文件时,它会导致错误。


27
投票

对我来说,它缺少了分号。如果您使用工具生成.strings文件,请确保没有可以“吃掉”分隔分号的未转义引号。


3
投票

我有同样的问题,我通过评论或删除我的Localizable.String文件中未使用的字符串解决它:)


3
投票

就我而言,我在字符串对之间缺少“=”。甚至plutil都没有帮助我发现错误行。我手动检查了每个字符串对。 :/


2
投票

你的语法似乎很好,我能看到的唯一的东西可以“破坏”你的文件,导致这个错误是引用字符。确保使用reqular one ",而不是像这样的任何其他形式。


1
投票

还要确保字符串文件名始终为Localizable.strings


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行字符串文件的中间。我只能通过浏览提交历史记录找到它,并始终查看更改。


0
投票

看来你的info.plist格式不正确。检查一下。我也有同样的问题。我通过修改我的info.plist解决了这个问题。


0
投票

我有类似的问题,我没有用反斜杠\转义字符串值为我的字符串的值之一。

之前:

“INVALID_NUMBER”=“您似乎输入了无效号码。号码应以”0“或”7“开头;

更新:

“INVALID_NUMBER”=“您似乎输入了无效的号码。号码应以\”0 \“或\”7 \“”开头;

如果要显示引号",则需要使用反斜杠

请快速浏览一下How to include Quotation mark in strings

© www.soinside.com 2019 - 2024. All rights reserved.