Здесь действительно не легко исправить. NIB должны быть индивидуально оформлены для каждого языка. В некоторой степени это улучшает общий пользовательский интерфейс, потому что разные языки на самом деле часто нуждаются в разной компоновке, чтобы выглядеть лучше. Русский и немецкий гораздо более крупные языки экранной недвижимости, чем английский. Китайский часто может быть намного меньше, и другой дизайн выглядит лучше с китайскими иероглифами. Арабский и иврит расположены справа налево и могут потребовать радикальных изменений в макете. Автоматизированная верстка проста, но достигается за счет того, что она может быть разной на разных языках. Предоставляя выбор между простым для разработчика и уродливым, а не трудным для разработчика и красивым, Apple почти всегда выбирает последнее. Тем не менее, Apple до сих пор не сделала это так легко, как они могли.
Итак, первый урок здесь - сохранить ваши NIB простыми . На iPhone это проще, чем на Mac, потому что у iPhone нет привязок, а в любом случае NIB для iPhone проще. Вы также можете использовать инъекцию текста для NIB, которые имеют очень небольшое количество текста (например, заголовок). «Внедрение текста» - это причудливый способ сказать «используйте выход для метки и установите его для локализованного текста при загрузке представления».
ibtool может извлекать строки из NIB, а также вставлять их обратно, что может быть полезно. Я использовал iLocalize, который полезен для работы с локализаторами контрактов, но не помогает решить проблему, о которой вы говорите.
Я пытался избавиться от NIB и просто использовать код, думая, что это облегчит ситуацию, но на самом деле это не так. Было проще выложить каждый язык в NIB, чем придумать логику компоновки, которая бы хорошо выглядела на всех языках (см. Первый абзац). Инъекция текста была полезна только в нескольких местах. Если вы можете разделить свои NIB на те, которые должны быть локализованы, и те, которые этого не делают, это может быть полезно. На iPhone я обнаружил, что в действительности менее половины моих NIB содержат текст или локализованные изображения.
Конечно, вы должны прочитать Темы программирования интернационализации , но мне жаль говорить, что на самом деле нет простого ответа на вашу проблему. Доставка товаров локализована на 19 языков, я чувствую вашу боль.