Локализованные строки XCode 4... Скопировать файл .strings Ошибка проверки правильности

Как определить локализованные строки в XCode 4?

Я предположил, что могу просто добавить языки в InfoPlist.strings, используя свойство "Локализация" (Инспектор файлов, правая панель).

... и затем введите "ключ" = "значение" в каждой локализованной версии.

Но я не могу построить проект. Я получаю эту ошибку: -

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

Преобразование текстовой кодировки в UTF 16 не устраняет проблему. Также не прекращается Xcode и не запускается снова.

Q1: Как исправить эти ошибки сборки?

По какой-то случайности мне удалось получить тестовое приложение для запуска добавления InfoPlist.strings(французский) и (английский). Я не получил ошибку в файле французских строк, но я сделал это с англичанами. Поэтому я оставил только английский, и просто поставлю параметр во французском. Однако в симуляторе, установленном на французский язык, параметр не был поднят. Он вернул значение по умолчанию, указанное в NSLocalizedString()

Q2: Как заставить его работать, даже если исправлены ошибки сборки?

Ответ 1

Может быть так же просто, как отсутствующая точка с запятой в конце строки.

Ответ 2

У меня была такая же проблема с поиском ошибок в файле локализации...

Просто используйте инструмент plutil в терминале для преобразования файла, и вы получите правильное сообщение об ошибке с номером строки.

plutil -lint Localizable.strings

Ответ

plutil [74058: 707] CFPropertyListCreateFromXMLData(): парсинг в стиле старого стиля: отсутствует точка с запятой в словаре на линии 422. Анализ будет отменен. Перерыв на _CFPropertyListMissingSemicolon для отладки. Localizable.strings: Неожиданный символ "в строке 1

Ответ 3

да только трал через 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, чтобы найти строку нарушения.

  • получить локализованные файлы обратно от переводчика.
  • скопируйте все Loclaizable.strings в локализованные папки проекта.
  • Открыть XCODE
  • Очистить все устройства iOS/все симуляторы
  • Построить
  • Скопировать файл .strings Ошибка проверки подлинности: данные не могли быть прочитаны, потому что они были повреждены.
  • Откройте навигатор журнала
  • Посмотрите, какой из переводов поврежден.
  • Я открыл Localizable.strings в TextWrangler Внизу на панели инструментов Переводчик отправил обратно Файл UTF-16 как

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"
  • помните, что в файле может быть более одной ошибки Я нашел "KISS" в двойных двойных кавычках в двух местах.

Ответ 4

Проверьте кодировку файла. Это часто вызвано расширенными символами (например, акцентированными символами) и кодировкой не UTF. В частности, есть ошибка в XCode 4, что если вы копируете акцентированные символы в файл строк из Safari, он затем сохранит как западную версию Mac OS.

Ответ 5

Жаль, что синтаксический анализатор XCode не может понять это.

Вы также можете скопировать текст в Text Wrangler (что-то, что я делаю после получения файла от переводчика), чтобы проверить правильно цитированные строки или запустить проверку регулярных выражений для точек с запятой. Синтаксическая раскраска в Text Wrangler будет показывать строки с неверным цитированием (или неправильно экранированные), где в настоящее время нет редактора строк XCode.

Ответ 6

В моем случае plutil -lint Localizable.strings не помогло, потому что появившееся сообщение об ошибке было "Unexpected character " at line 1", когда реальная ошибка была " вместо " в строке 2340.

Ответ 7

В моем случае это была проблема "цитаты", скопированной с веб-сайта, которая не была принята.

Я должен был обнаружить, что из подсветки синтаксиса не работает, но я просто прочитал исходный "знак котировки, ключ, знак цитаты, знак равенства, знак котировки, значение, знак котировки... yup okay".

Ответ 8

Если вы используете двойную кавычку "" в своей локализации, не забудьте избежать их, используя обратную косую черту.

Ответ 9

Нужно проверять синтаксис вроде этого

"Recharge_Data" = "Data";

1) "" должно быть на месте.

2) = следует проверить.

3); должен быть там в конце заявления.

Ответ 10

У меня была та же проблема. У меня был файл с локализацией около 60 страниц, и у меня было только одно "слишком много", чтобы понять, что

Ответ 11

У меня была бы такая же проблема для большого локализованного файла за час и применить все вышеперечисленные шаги не решит мою проблему, в конце концов, что я сделал, девайся локализовать файл на некоторые диапазоны (части), скажем, a, b, c... и вырезать эти строки из файла и сохранить их в текстовом файле, снова построить проект, если только до тех пор, пока я не дойду до точки, где осталось только часть-k, я обнаружил, что по ошибке Я нажал f на моей клавиатуре. он решил. Я знаю, что это не решение, но может помочь кому-то вроде меня:)

Ответ 12

Мой друг сделал перевод для меня в Windows. Я обнаружил, что изменение кодировки не помогает, так что я сделал: я прокомментировал все строки, а затем я раскомментировал несколько и нажал cmd-B, чтобы выяснить, какие строки имеют проблемы. Затем я переписал строки проблем вручную, после чего он работал.