xcode4中的Localizable.strings文件..

| 在xcode4中,(到目前为止,我一直使用v4.0.1,昨天下载了v4.0.2。) 我制作了Localizable.string文件并编译了我的项目。 (如您所知,我的源代码 使用NSLocalizedString宏函数。) 但是我的项目无法使用Localizable.string文件进行编译。如果我更改所有代码 在要注释的文件中(例如-> //),我的项目已完全编译。 结果,问题是Localizable.string文件。我在Google上搜索了它, 我发现UTF-8文件(Localizable.string)更改为UTF-16。尽管我尝试过这种方法,但这种方法也行不通。 此刻,许多人正在尝试使用Localizable.string文件。但是他们可能 解决这个我做不到的问题。因为没有关于这个问题的问题 很多。 ================================================== ============= 在Localizable.string文件中,   \“ LOCAL_APP_GRADE \” = \“基本\”      \“ LOCAL_APP_LAST_UPDATED_DATE \” =   \“ 2011/04/20 \”      \“ LOCAL_MAIN_MENU_TITLE \” = \“主菜单\” 在我的源代码中
NSLocalizedString( @\"LOCAL_MAIN_MENU_TITLE\", @\"\" );
错误信息,   复制.strings文件错误验证   失败:无法读取数据   因为它已损坏。     
已邀请:
我在这里假设Xcode 4。仔细检查文件检查器中每个Localization.string文件的编码显示内容。当我遇到该错误时,这是​​由于其中一个文件被读取为Mac Roman而不是UTF-16。一旦更改了编码,警告就会消失。起初让我发疯的是该警告仅在Xcode 4中发生。Xcode3没有给出警告。 您的.string文件的格式也有问题。所有行应以分号结尾。
\"LOCAL_APP_GRADE\" = \"Basic\";
\"LOCAL_APP_LAST_UPDATED_DATE\" = \"2011/04/20\";
\"LOCAL_MAIN_MENU_TITLE\" = \"Main Menu\"; 
我不认为这是警告的原因。至少我从未见过警告。它通常仅在运行时在本地显示LOCAL_MAIN_MENU_TITLE而不是在主菜单中显示。如果构建过程确实检查了分号,那就太好了。编辑文件时很容易错过添加一个文件的麻烦。     
每个苹果:   如果您在测试过程中遇到问题并发现该功能   和用于检索字符串的宏始终返回相同的键   (而不是转换后的值),请运行/ usr / bin / plutil工具   您的字符串文件。字符串文件本质上是一个属性列表文件   以特殊方式格式化。使用-lint选项运行plutil可以   发现隐藏的字符或其他阻止字符串的错误   从正确检索。 启动控制台窗口,进入您的项目文件夹,然后执行以下操作:
/usr/bin/plutil -lint ja.lproj/Localizable.strings
(显然替换正确的语言文件夹名称)。这将准确告诉您问题出在哪里!     
.strings文件中的所有行均应以分号结尾。它为我工作。     
从Apple Notes导入本地化版本后,今天我遇到了同样的问题,原因确实很微妙。标准双引号已被替换为斜双引号。 斜双引号:” 标准双引号:“     
我一直在为这个错误而苦苦挣扎,最终遇到了两个类似的问题,但是细节不同。首先,即使看上去Xcode的内部\“ internal-copyStrings \”工具应该能够处理Little-Endian或Big-Endian UTF-16文件,它实际上只能处理Big-Endian。我的理论是它正在运行一些额外的验证步骤(也许使用plutil命令行实用程序),这在Xcode 3中是不曾发生过的,并且该工具禁止在大端字节UTF-16上使用。虽然不完全确定。 第二个技巧是,您需要确保在保存字符串文件时没有BOM(字节顺序标记)。我在BBEdit中对.strings文件进行了一些编辑,最终将BOM表保存到该文件中,这似乎也使Xcode 4变得更加合适。 Xcode本身似乎没有从文件中删除BOM的方法,因此必须在文本编辑器(如BBEdit或TextWrangler)中完成,该编辑器可以为您执行此操作。     
使用Xcode 10.1,一个缺少的分号将停止编译,并出现以下错误:   Localizable.strings:读取失败:无法解析属性列表,因为   输入的数据格式无效 顺便说一句,您可以通过临时删除大部分文件内容来确定错误是文件的普遍错误(编码问题)还是特定于一行或多行的错误。然后,您可以通过逐步添加内容直到错误返回来查找问题。     
也许您有类似以下内容: \“ Bla \” = \“ bla \” ;; 注意重复;符号。如果有,它将可以正确编译,但在运行时将失败。     
与此相关-手动将字符串合并到Localizable.strings中时要小心-我设法从NSLocalizedString()宏复制/粘贴两个字符串,以便Localizable.strings条目采用以下形式:
\"KEY\" = \"STRING\", @\"COMMENT STRING COPIED ACROSS ALSO, IN ERROR\";
建筑物上的位
,@\"xxx\"
导致我得到错误:   读取失败:由于数据不正确,因此无法读取数据   格式。 在这种情况下,对ѭ5进行快速搜索有助于确定我这样做的位置。     
我有这个问题。我的解决办法?在文件顶部添加换行符。奇怪,但它对我有用。 因此,而不是在我的文件顶部具有以下内容:
/* comment */
\"LOCAL_APP_GRADE\" = \"Basic\"
我必须做:
[newline]
/* comment */
\"LOCAL_APP_GRADE\" = \"Basic\"
(无法正确设置格式-不要键入\'newline \',只需按回车键即可!)     
看起来这是读取字符串文件时出错的标准消息。 在我的情况下,它是一个(习惯惯性)冒号而不是等号:
\"key1\" = \"String1\";
\"key2\" : \"String2\";
\"key3\" = \"String3\";
将其更改为“ 9”,一切正常。     
我的问题是,我忘了其中一行中的10英镑     
确保以以下格式声明了字符串:
\"YOUR_STRING_LABEL\" = \"Your message\";
注意:不要忘了最后使用引号(\“),等号(=)和分号(;)。     

要回复问题请先登录注册