Ответ 1
Может быть так же просто, как отсутствующая точка с запятой в конце строки.
Как определить локализованные строки в XCode 4?
Я предположил, что могу просто добавить языки в InfoPlist.strings, используя свойство "Локализация" (Инспектор файлов, правая панель).
... и затем введите "ключ" = "значение" в каждой локализованной версии.
Но я не могу построить проект. Я получаю эту ошибку: -
Скопировать файл .strings Ошибка проверки правильности: данные не могут быть прочитаны, потому что они повреждены.
Преобразование текстовой кодировки в UTF 16 не устраняет проблему. Также не прекращается Xcode и не запускается снова.
Q1: Как исправить эти ошибки сборки?
По какой-то случайности мне удалось получить тестовое приложение для запуска добавления InfoPlist.strings(французский) и (английский). Я не получил ошибку в файле французских строк, но я сделал это с англичанами. Поэтому я оставил только английский, и просто поставлю параметр во французском. Однако в симуляторе, установленном на французский язык, параметр не был поднят. Он вернул значение по умолчанию, указанное в NSLocalizedString()
Q2: Как заставить его работать, даже если исправлены ошибки сборки?
Может быть так же просто, как отсутствующая точка с запятой в конце строки.
У меня была такая же проблема с поиском ошибок в файле локализации...
Просто используйте инструмент plutil в терминале для преобразования файла, и вы получите правильное сообщение об ошибке с номером строки.
plutil -lint Localizable.strings
Ответ
plutil [74058: 707] CFPropertyListCreateFromXMLData(): парсинг в стиле старого стиля: отсутствует точка с запятой в словаре на линии 422. Анализ будет отменен. Перерыв на _CFPropertyListMissingSemicolon для отладки. Localizable.strings: Неожиданный символ "в строке 1
да только трал через 500 переводов
Обратите внимание, что KISS во второй строке находится в двойных кавычках, которые являются ВНУТРИ других ДВОЙНЫХ ЦИТАТОВ ОШИБКА
"Before using KISS Remixer, you must agree to the terms and conditions of use." = "Vor der Nutzung des Remixers "KISS" müssen Sie die Allgemeinen Geschäftsbedingungen akzeptieren.";
Это нормально
"Before using KISS Remixer, you must agree to the terms and conditions of use." = "Vor der Nutzung des Remixers KISS müssen Sie die Allgemeinen Geschäftsbedingungen akzeptieren.";
как это (замените одиночными кавычками ВНУТРИ ДВОЙНОЙ)
"Before using KISS Remixer, you must agree to the terms and conditions of use." = "Vor der Nutzung des Remixers 'KISS' müssen Sie die Allgemeinen Geschäftsbedingungen akzeptieren.";
TIP ИСПОЛЬЗУЙТЕ BINARY SEARCH, чтобы найти строку нарушения.
UTF-16 Little Endian Изменено это только на "UTF-16" 10. Очистка сборки/сборки ОШИБКА ОШИБКИ
Где-то в файле
/* popup message */
"Save mix" = "Enregistrer le mixage";
/* popup message */
"Save mix" = "Enregistrer le mixage"
НЕПРАВИЛЬНО
/* popup message */
"Save mix" = "Enregistrer le "mix" age"
ПРАВАЯ
/* popup message */
"Save mix" = "Enregistrer le mixage"
ТАКЖЕ ПРАВО
/* popup message */
"Save mix" = "Enregistrer le 'mix'age"
Проверьте кодировку файла. Это часто вызвано расширенными символами (например, акцентированными символами) и кодировкой не UTF. В частности, есть ошибка в XCode 4, что если вы копируете акцентированные символы в файл строк из Safari, он затем сохранит как западную версию Mac OS.
Жаль, что синтаксический анализатор XCode не может понять это.
Вы также можете скопировать текст в Text Wrangler (что-то, что я делаю после получения файла от переводчика), чтобы проверить правильно цитированные строки или запустить проверку регулярных выражений для точек с запятой. Синтаксическая раскраска в Text Wrangler будет показывать строки с неверным цитированием (или неправильно экранированные), где в настоящее время нет редактора строк XCode.
В моем случае plutil -lint Localizable.strings
не помогло, потому что появившееся сообщение об ошибке было "Unexpected character " at line 1
", когда реальная ошибка была "
вместо "
в строке 2340.
В моем случае это была проблема "цитаты", скопированной с веб-сайта, которая не была принята.
Я должен был обнаружить, что из подсветки синтаксиса не работает, но я просто прочитал исходный "знак котировки, ключ, знак цитаты, знак равенства, знак котировки, значение, знак котировки... yup okay".
Если вы используете двойную кавычку "" в своей локализации, не забудьте избежать их, используя обратную косую черту.
Нужно проверять синтаксис вроде этого
"Recharge_Data" = "Data";
1) "" должно быть на месте.
2) = следует проверить.
3); должен быть там в конце заявления.
У меня была та же проблема. У меня был файл с локализацией около 60 страниц, и у меня было только одно "слишком много", чтобы понять, что
У меня была бы такая же проблема для большого локализованного файла за час и применить все вышеперечисленные шаги не решит мою проблему, в конце концов, что я сделал, девайся локализовать файл на некоторые диапазоны (части), скажем, a, b, c... и вырезать эти строки из файла и сохранить их в текстовом файле, снова построить проект, если только до тех пор, пока я не дойду до точки, где осталось только часть-k, я обнаружил, что по ошибке Я нажал f на моей клавиатуре. он решил. Я знаю, что это не решение, но может помочь кому-то вроде меня:)
Мой друг сделал перевод для меня в Windows. Я обнаружил, что изменение кодировки не помогает, так что я сделал: я прокомментировал все строки, а затем я раскомментировал несколько и нажал cmd-B, чтобы выяснить, какие строки имеют проблемы. Затем я переписал строки проблем вручную, после чего он работал.