Локализованные строки Xcode 4 ... Скопировать файл .strings Ошибка проверки ошибки - PullRequest
65 голосов
/ 12 апреля 2011

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

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

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

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

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

Преобразование кодировки текста в UTF 16 не решает проблему. Ни один не выходит из Xcode и запускает его снова.

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

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

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

Ответы [ 12 ]

237 голосов
/ 14 апреля 2011

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

98 голосов
/ 24 июля 2013

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

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

plutil -lint Localizable.strings

Ответ

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

14 голосов
/ 29 марта 2012

да, только что перебрал 500 переводов

обратите внимание, что ПОЦЕЛУЙ во второй строке заключен в двойные кавычки, которые ВНУТРИ других ДВОЙНЫХ ЦИТАТ ERROR

"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 ИСПОЛЬЗУЙТЕ БИНАРНЫЙ ПОИСК, чтобы найти оскорбительную строку.

  1. получить локализованные файлы обратно от переводчика.
  2. скопируйте все строки Loclaizable.string в локализованные папки вашего проекта.
  3. Открыть XCODE
  4. Очистить все - в iOS Device / все симуляторы
  5. Сложение
  6. Копировать файл .strings Ошибка проверки не удалась: данные не удалось прочитать, поскольку они были повреждены.
  7. Открыть журнал навигатора
  8. Посмотрите, какой из переводов поврежден.
  9. Я открыл 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"

RIGHT

/* popup message */
"Save mix" = "Enregistrer le mixage"

ТАКЖЕ ПРАВО

/* popup message */
"Save mix" = "Enregistrer le 'mix'age"
  • помните, что в файле может быть несколько ошибок Я нашел "KISS" в двойных двойных кавычках в двух местах
8 голосов
/ 21 апреля 2011

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

7 голосов
/ 17 октября 2011

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

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

4 голосов
/ 05 ноября 2014

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

2 голосов
/ 31 декабря 2014

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

2 голосов
/ 20 декабря 2011

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

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

1 голос
/ 12 августа 2015

Нужно проверить синтаксис следующим образом:

"Recharge_Data" = "Data";

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

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

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

0 голосов
/ 20 февраля 2014

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

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