Файлы Localizable.strings .. в xcode4 - PullRequest
39 голосов
/ 16 апреля 2011

В 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" = "Basic"

"LOCAL_APP_LAST_UPDATED_DATE" = "2011/04/20"

"LOCAL_MAIN_MENU_TITLE" = "Главное меню"

В моем исходном коде

NSLocalizedString( @"LOCAL_MAIN_MENU_TITLE", @"" );

Сообщение об ошибке,

Копировать .strings файл Проверка ошибок не удалось: данные не могут быть прочитаны потому что он был поврежден.

Ответы [ 12 ]

93 голосов
/ 16 апреля 2011

Я предполагаю, Xcode 4 здесь.Дважды проверьте, что он показывает для кодировки в каждом из файлов Localization.string в инспекторе файлов.Когда у меня возникла эта ошибка, это было связано с тем, что один из файлов читался как Mac Roman вместо UTF-16.Как только я изменил кодировку, предупреждение исчезло.Поначалу меня сводило с ума то, что предупреждение появлялось только в Xcode 4. Xcode 3 не давал его.

У вас также есть проблема с форматированием файла .string.Все строки должны заканчиваться точкой с запятой.

"LOCAL_APP_GRADE" = "Basic";
"LOCAL_APP_LAST_UPDATED_DATE" = "2011/04/20";
"LOCAL_MAIN_MENU_TITLE" = "Main Menu"; 

Хотя я не думаю, что это является причиной предупреждения.По крайней мере, я никогда не видел предупреждение за это.Обычно это проявляется только во время выполнения, когда LOCAL_MAIN_MENU_TITLE отображается в приложении вместо главного меню.Было бы неплохо, если бы процесс сборки проверял точки с запятой.Легко пропустить добавление одного при редактировании файлов.

64 голосов
/ 23 июня 2014

за яблоко:

Если вы столкнулись с проблемами во время тестирования и обнаружили, что функции и макросы для извлечения строк всегда возвращают один и тот же ключ (в отличие от переведенного значения), запустите инструмент / usr / bin / plutil на ваш файл строк. Файл строк по сути является файлом списка свойств отформатирован особым образом. Запустить плутиль с опцией -lint можно раскрыть скрытые символы или другие ошибки, которые мешают строки от того, чтобы быть восстановленным правильно.

Запустите окно консоли, перейдите в папку проекта и выполните:

/usr/bin/plutil -lint ja.lproj/Localizable.strings

(очевидно, замените правильное имя языковой папки). Это точно скажет вам, где проблема!

18 голосов
/ 10 марта 2015

Все строки в файле .strings должны заканчиваться точкой с запятой.У меня это сработало.

7 голосов
/ 26 мая 2014

У меня была такая же проблема сегодня после импорта локализаций из Apple Notes, и причина была очень тонкой. Стандартные двойные кавычки были заменены косыми двойными кавычками.

Косая двойная кавычка: ”

Стандартная двойная кавычка: "

3 голосов
/ 17 мая 2011

Я боролся с этой же ошибкой, и в итоге у меня возникла пара похожих проблем, но с разными деталями. Во-первых, даже если кажется, что внутренний инструмент Xcode «builtin-copyStrings» должен быть в состоянии обрабатывать файлы UTF-16 с прямым или прямым порядком байтов, на самом деле он работает только с прямым порядком байтов. Моя теория заключается в том, что он выполняет какой-то дополнительный шаг проверки (возможно, с использованием утилиты командной строки plutil), чего раньше не было в Xcode 3, и этот инструмент вызывает все, кроме UTF-16 с прямым порядком байтов. Хотя не совсем уверен.

Второй трюк заключается в том, что вам нужно убедиться, что ваши строковые файлы сохранены с no BOM (Byte Order Marker). Я выполнил некоторое редактирование своих файлов .strings в BBEdit, в результате чего была сохранена спецификация в файл, и это также, по-видимому, привело к подгонке Xcode 4 под ключ. Сам Xcode, похоже, не имеет никакого способа удалить BOM из файла, поэтому это нужно сделать в текстовом редакторе, таком как BBEdit или TextWrangler, который может сделать это за вас.

2 голосов
/ 15 января 2019

В Xcode 10.1 одна пропущенная точка с запятой останавливает компиляцию с этой ошибкой:

Localizable.strings: чтение не удалось: не удалось разобрать список свойств, потому что входные данные были в неверном формате

Кстати, вы можете узнать, является ли ошибка общей для вашего файла (проблема с кодировкой) или специфической для одной или нескольких строк, временно удалив большую часть содержимого файла. Затем вы можете найти проблему, постепенно добавляя содержимое, пока ошибка не вернется.

0 голосов
/ 22 ноября 2017

Убедитесь, что вы объявили строку в следующем формате:

"YOUR_STRING_LABEL" = "Your message";

Примечание: Не забудьте Кавычки ("), Знак равенства (=) и Точка с запятой (;) в конце .

0 голосов
/ 25 августа 2017

Моя проблема была в том, что я забыл ; в одной из строк

0 голосов
/ 09 июля 2015

Похоже, это стандартное сообщение об ошибке чтения файла строк.

В моем случае это была двоеточие (сила привычки) вместо знака равенства:

"key1" = "String1";
"key2" : "String2";
"key3" = "String3";

Изменил его на = и все работало нормально.

0 голосов
/ 04 мая 2014

У меня была эта проблема. Мое исправление? Добавьте новую строку вверху файла. Странно, но у меня это сработало.

Так что вместо того, чтобы вверху моего файла было это:

/* comment */
"LOCAL_APP_GRADE" = "Basic"

Я должен был сделать:

[newline]
/* comment */
"LOCAL_APP_GRADE" = "Basic"

(Не удается правильно отформатировать - не набирайте 'newline', просто нажмите return!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...