2009-05-22 2 views
13

Мне нужно локализовать приложение для разработки на английском языке & Испанский.Как упростить локализацию iPhone?

Несмотря на то, что я следую примеру использования Apple NSLocalizedString &, создайте nibs для обоих, я уже потерял дорожку новой строки, которую нужно локализовать и с удивлением обнаружил, что мне нужно переделать наконечники на испанском языке, когда я измените мастер.

(Так же, как это http://www.gigliwood.com/weblog/Cocoa/A_Great_Need_for_Be.html)

Интересно, существуют ли лучше/альтернативный/более автоматизированный способ.

Я знаю использование gettext & poedit и интересно, можно ли что-то подобное использовать.

Если у вас есть какой-либо скрипт или инструмент для этого.

ответ

17

Здесь действительно нелегко исправить ситуацию. Для каждого языка должны быть индивидуально размещены НИБ. В какой-то мере это улучшает общий пользовательский интерфейс, потому что разные языки на самом деле часто нуждаются в разной компоновке, чтобы выглядеть лучше. Русские и немецкие языки являются «более крупными» в экранной недвижимости, чем английский. Китайцы часто могут быть намного меньше, а другой макет выглядит лучше с китайскими иероглифами. Арабский и иврит - справа налево и могут нуждаться в радикальных изменениях в макете. Автоматическая компоновка проста, но достигается благодаря тому, что на всех языках различаются уровни уродливости. Когда дается выбор между легким для разработчика и уродливым против сложного для разработчика и красивым, Apple почти всегда выбирает последнее. Тем не менее, Apple все еще не сделала это почти так же легко, как только могли.

Итак, первый урок здесь - сохранить ваши NIB простой. Это проще на iPhone, чем на Mac, потому что iPhone не имеет привязок, а iPhone NIB вообще проще в любом случае. Вы также можете использовать текстовую инъекцию для NIB, которые имеют очень небольшое количество текста (например, название). «Текстовая инъекция» - это причудливый способ сказать «использовать розетку для метки и установить ее в локализованный текст при загрузке представления».

ibtool может вытаскивать струны из NIB, а также втыкать их обратно, что может быть полезно. Я использовал iLocalize, что полезно для работы с контрактными локализаторами, но на самом деле не помогает с проблемой, о которой вы говорите.

Я попытался избавиться от NIB и просто использовать код, думая, что это упростит ситуацию, но на самом деле этого не произошло. Легче было изложить каждый язык в NIB, чем придумать логику компоновки, которая хорошо смотрится на всех языках (см. Первый абзац). Ввод текста полезен только в нескольких местах. Если вы можете разделить свои NIB на те, которые должны быть локализованы, а те, которые этого не делают, это может быть полезно. На iPhone я обнаружил, что менее половины моих NIB фактически имеют в них текстовые или локализованные изображения.

Конечно, вы должны прочитать Internationalization Programming Topics, но я сожалею, что на ваш вопрос действительно нет простого ответа. Продукты доставки, локализованные на 19 языках, я чувствую вашу боль.

2

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

Если вы использовали ibtool для генерации строки из наконечников

ibtool --generate-строка-файл

Вы можете импортировать их в новые наконечники для каждого языка.

ibtool --import-строка-файл

Этих инструменты командной строки, чтобы они скрипты. Взгляните на 'man ibtool'

2

Что я делаю, так это то, что я создаю IBOutlets для всего текста ui в моем файле nib (UILabel, UITextField, UITextView и т. Д.), И я назначаю его свойства text/placeHolder желаемой NSLocalizaedString программно ,

Учитывая, что я предоставил переводы определенной строки в разных языках, переведенная версия текста появится в файле nib при изменении локали iPhone.

Надежды другие считают это полезным

Смежные вопросы