#iphone #cocoa #ios #xcode4
#iPhone #cocoa #iOS #xcode4
Вопрос:
когда я переключаюсь с xcode3 на xode4, я обнаружил, что для нескольких строк в приложении мне приходится компилировать его дважды, чтобы сделать его локализованным … У кого-нибудь когда-нибудь была такая же проблема?
Ответ №1:
Я видел, как это происходило, когда на файл strings дважды ссылались на этапе сборки «Ресурсы». Xcode не предупредит вас, когда это произойдет, и это может вызвать странное или неопределенное поведение. Просмотрите все этапы сборки и убедитесь, что файл находится только в одном месте.
Комментарии:
1. На мой файл localizable.strings есть ссылка только один раз, но другой файл localizable.strings из фреймворка sharekit, который есть у меня в проекте, также содержит файл localizable.strings. Не удается их удалить
2. Вы могли бы попробовать переименовать один из файлов Localizable.strings во что-то другое.
Ответ №2:
Если у вас, как и у меня, есть два локализуемых файла.strings (поскольку вы используете некоторые дополнительные фреймворки (например, ShareKit), которые сами используют файлы Localizable.strings), то вы также можете выполнить следующее:
-
Переименуйте дополнительные
Localizable.strings
файлы в sth. какRenamedFile.strings
чтобы в итоге был <= 1 файл Localizable.strings. -
Найдите и замените все вхождения
NSLocalizedString(key, description);
связано с переименованным файлом.строки с
NSLocalizedStringFromTable(key, @"RenamedFile", description);
Пример:
Допустим, у вас есть
(A) ваш собственный файл Localizable.strings
(B) и файл Localizable.strings, потому что вы используете ShareKit, который также имеет собственные локализации.
-
Переименовать
Localizable.strings
ShareKit вShareKit.strings
(при использовании Git и Xcode 4 у меня возникли некоторые проблемы с переименованием файлов, но это было решаемо). -
Найдите все вхождения NSLocalizedString в папке ShareKit (должно быть 3) и замените их:
NSLocalizedString(key, key);
->NSLocalizedStringFromTable(key, @"ShareKit", key);
NSLocalizedString(@"Disconnect from Facebook", @"Accessibility label");
->NSLocalizedStringFromTable(@"Disconnect from Facebook", @"ShareKit", @"Accessibility label");
NSLocalizedString(@"Connect to Facebook", @"Accessibility label");
->NSLocalizedStringFromTable(@"Connect to Facebook", @"ShareKit", @"Accessibility label");