Localizable.strings - данные не могут быть прочитаны, потому что они не в правильном формате

Если я скопирую что-нибудь из textedit или web и вставлю это в локализуемый файл, это покажет эту ошибку компиляции. Если я ввожу их в локализуемый файл, это не выдает никакой ошибки. Я заверяю вас, что я использую правильный формат и ';' в файле.

"New" = "New";
"In Progress" = "In Progress";
"Waiting" = "Waiting";
"Closed" = "Closed";

Ответ 1

Похоже, что SVN имеет некоторые проблемы с этим файлом. Как он считает, это бинарный файл. Он вставляет много непечатаемых символов между каждым символом. Я все еще не мог найти правильное решение. Просто измените файлы Localizable.string с рабочего компьютера, чтобы избежать каких-либо проблем с ним.

Обновление: обновление клиента SVN (smartSVN) до последней версии решило проблему. Кажется, один из моих коллег использовал более старую версию. Когда он зафиксировал изменение в локализуемом файле, это вызвало ошибку.

Ответ 2

  • Используйте plutil из терминала:

вам нужно запустить его для каждой версии локализованного файла. Например

  • cd в корневой каталог проекта
  • cd eb.lproj - вы можете заменить это на   любая локализация, с которой вы работаете.
  • plutil -lint Localizable.strings

Когда вы запустите шаг 3, вам либо будет показана ошибка, сообщая вам, что не так с вашим файлом. Или вам будет сказано, что файл ОК

Ответ 3

Для меня отсутствовали полуколоны. Если вы используете инструмент для генерации файла .strings, убедитесь, что нет скрытых кавычек, которые могут "съесть" разделительные полуколоны.

Ответ 4

pl & lt; Localizable.strings лучше, чем plutil -lint Localizable.strings

Журнал покажет что-то вроде этого

2019-08-14 16: 39: 34.066 pl [21007: 428513] CFPropertyListCreateFromXMLData(): синтаксический анализатор старого стиля: отсутствует точка с запятой в словаре в строке 427. Разбор будет прекращен. Перерыв на _CFPropertyListMissingSemicolon для отладки. 2019-08-14 16: 39: 34.068 pl [21007: 428513] CFPropertyListCreateFromXMLData(): синтаксический анализатор старого стиля: отсутствует точка с запятой в словаре в строке 427. Разбор будет прекращен. Перерыв на _CFPropertyListMissingSemicolon для отладки. 2019-08-14 16: 39: 34.071 pl [21007: 428513] *** Список свойств синтаксического анализа ASCII: NSParseErrorException Error Domain = NSCocoaErrorDomain Code = 3840 "Неожиданный символ/в строке 1" UserInfo = {NSDebugDescription = Неожиданный символ /at строка 1, kCFPropertyListOldStyleParsingError = Ошибка домена = NSCocoaErrorDomain Код = 3840 "Отсутствует"; в строке 427" UserInfo = {NSDebugDescription = Отсутствует ';' на линии 427}}

Ответ 5

У меня была такая же проблема, и я решил ее, комментируя или удаляя неиспользуемые строки в файле Localizable.String:)

Ответ 6

В моем случае я пропустил "=" между парой строк. Даже плутил не помог мне обнаружить строку ошибки. Я вручную проверил каждую пару строк. :/

Ответ 7

Ваш синтаксис кажется прекрасным, единственное, что я вижу, может "сломать" ваш файл и вызвать эту ошибку - символ цитаты. Обязательно используйте reqular one ", но не в любой другой форме, например .

Ответ 8

Также убедитесь, что имя файла строк всегда Localizable.strings

Ответ 9

Однажды у меня была похожая ошибка, и оказалось, что в середине файла был 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

Кажется, ваш info.plist не в правильной форме. проверьте его правильно. У меня тоже была такая же проблема. Я решил это, изменив свой info.plist.

Ответ 11

У меня была похожая проблема, когда я не экранировал строковое значение с помощью обратной косой черты \ для одного из моих строковых значений.

До:

"INVALID_NUMBER" = "Кажется, вы вводите неверный номер. Номер должен начинаться с" 0 "или" 7 "";

Обновлено:

"INVALID_NUMBER" = "Кажется, вы вводите неверный номер. Номер должен начинаться с \" 0\"или \" 7\"";

Обратная косая черта требуется, когда вы хотите отобразить кавычки "

Пожалуйста, ознакомьтесь с разделом Как включить кавычки в строки

Ответ 12

У меня только что был такой опыт:

  • внешний переводчик выполняет работу внутри Visual Code или других текстовых редакторов
  • Файлы не работают и выдают ошибку, подобную этой: (тестирование с помощью plutil -lint)

    Localizable.strings: Unexpected character " at line 1 CardRatingView.strings: Unexpected character/at line 2

Я просто создал новый файл в XCode и скопировал все содержимое файла, и вдруг все заработало правильно.

Я предполагаю, что что-то может пойти не так/повреждать сам файл при работе с другими текстовыми редакторами.

Ответ 13

Я столкнулся с этой проблемой, все мое форматирование было правильным. Проверка на наличие недопустимых символов с помощью plutil -lint Localizable.strings и использование библиотек ruby, таких как "utf8_utils" также не "utf8_utils" найти недопустимые символы. НО, когда я вставил содержимое Localizable.strings в приложение Terminal при запуске irb, оно показало мне странные символы.

"PercentComplete" = "%d procent gennemført";

Вставить в IRB:

"PercentComplete"\U+FFC2\U+FFA0= "%d procent gennemf\U+FFC3\U+FFB8rt";

Затем все, что мне нужно было сделать, это заменить регулярное выражение, чтобы исправить эти странные символы пробела: \U+FFC2\U+FFA0

Ответ 14

в моем случае синтаксическая ошибка вроде отсутствует "

Ответ 15

Если Unexpected character " at line 1, and it is the first string like "app_name"="Any Name" показано что-то вроде Unexpected character " at line 1, and it is the first string like "app_name"="Any Name"

Убедитесь, что файл UTF16