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