Почему мой файл XIB не локализуется (iPhone)?

Ситуация: я запускаю XCode, создаю новый проект для iPhone (приложение просмотра) и загружаю файл XIB в IB. Я манипулирую представлением (добавляя метку со строкой «привет»), сохраняю, строю, запускаю приложение, все в порядке. Сейчас я локализую XIB. Что я делаю: щелкаю правой кнопкой мыши по xib-файлу, добавляя желаемый язык, и после этого у меня есть два файла XIB в моем XCode. Выглядит абсолютно идеально, как это показано в моей книге по программированию для iPhone («ранчо больших ботаников»). Я меняю метку в обоих XIB на другую строку, скажем «доброе утро!».

Проблема: теперь я очищаю и перестраиваю приложение - но он всегда показывает старый XIB-файл, всегда строку «hello». Даже когда я меняю настройки iphone на другие языки, я всегда получаю строку «привет». Но XIB с надписью "hello" нигде в моем xcode не существует!

Какие-нибудь подсказки для меня? Это сводит меня с ума - и я просто надеюсь, что упускаю одну простую вещь.

Я использую XCode 3.2.3 и SDK 4.0

Заранее большое спасибо!


person peace97    schedule 12.10.2010    source источник


Ответы (5)


Необходимо выполнить несколько шагов, в том числе:

  • ibtool --generate-strings-file Example.strings en.lpoj / Example.xib
  • genstrings -o en.lproj * .m
  • перевод файла ресурсов
  • ibtool --strings-file fr.lproj / Example.strings en.lproj / Example.xib –write fr.lproj / Example.xib
  • перетащите переведенный файл ресурсов в проект (в нужное место).

Полное описание шагов см. В руководстве по локализации iPhone. + скриншоты.

person ICanLocalize    schedule 13.10.2010
comment
Спасибо за вашу помощь. К сожалению, это не решило проблему. Но: это помогло мне, еще лучше определив проблему. Даже когда я удаляю файл XIB в приведенном выше примере (используя xcode или старую добрую командную строку), файл XIB все еще отображается в симуляторе. Возникает вопрос: как избавиться от XIB? Я ожидал ошибки во время компиляции или во время выполнения - но ничего. Все еще показывает старый XIB? Но почему? Какие-нибудь подсказки для меня? - person peace97; 13.10.2010
comment
Хорошо - подумав в течение 2-5 минут, суть в следующем: когда не удаляет приложение на iPhone-Simulator, кажется, что Simulator удерживает XIB-файл. После удаления приложения я получаю ожидаемую ошибку времени выполнения - person peace97; 13.10.2010
comment
Хорошо - вот и все: пропустил удаление приложения на iPhone-симуляторе. После локализации приложения мне пришлось удалить его на симуляторе iPhone, затем сделать чистую + сборку, и все в порядке. - person peace97; 13.10.2010
comment
Подтверждаю тот же глючный дефект устройства. Мне пришлось как удалить приложение с устройства, так и выполнить чистую перестройку, чтобы увидеть локализованный файл xib. Это действительно странно, но это так. - person 18446744073709551615; 19.11.2011

Симулятор iPhone и устройство содержат кэш NIB. его легко очистить на симуляторе, поскольку его можно удалить, но я пытаюсь понять, как очистить этот кеш на устройстве, не удаляя приложение.

person zambono    schedule 06.01.2011
comment
Вы не можете этого сделать, но пока ваше приложение перестраивается, у вас есть время удалить приложение с устройства / симулятора. По крайней мере, у меня это работает, потому что приложение достаточно большое ... - person 18446744073709551615; 19.11.2011

Попробуй это:

  1. Убедитесь, что вы добавили параметр Localitations на вкладку «Информация» файла проекта.
  2. Окно - Органайзер - Выберите свой проект - Удалить производные данные
  3. Проект Чистый
  4. Удалить приложение с вашего устройства
  5. Беги снова.
person Vlad    schedule 07.07.2014

В моем случае мне пришлось перезапустить xcode в дополнение к удалению приложения на симуляторе, чтобы заставить его работать.

person Bedevere    schedule 24.04.2013

В Xcode есть ошибка, когда дело доходит до локализованных строк в файле xib. Вместо того, чтобы заменять локализованные строки фактическими строками xib, Xcode сохраняет исходные строки xib. Все, что вам нужно сделать, это преобразовать файл Localizable Strings в файл Interface Builder. Вы можете сделать это в разделе «Локализация» в свойствах файла конструктора интерфейсов.

Надеюсь это поможет!

person Offek    schedule 02.09.2016