Я не думаю, что вы можете связать строки каким-либо образом.
Я бы порекомендовал сделать это в коде в viewDidLoad
.
Обратите внимание, что строковые константы не очень хороши для текстов в пользовательском интерфейсе.
EDIT:
Xibs имеют свою собственную систему локализации, но я не думаю, что это очень хорошо. Это в основном означает создание нового xib для каждого языка. Если вы поддерживаете только один язык, просто поместите свои строки в xib, и проблема решена.
ПРИМЕЧАНИЕ. Следующее - идея для моего текущего проекта, и я еще не реализовал ее, но я предполагаю, что это позволит нам легко добавлять новые языковые переводы.
Моей идеей для лучшей локализации xib является определение IBOutlet для каждого локализуемого компонента (например, myButton1, myTextField1), а затем запись файла с локализованными строками (xml, properties, plist whatever), где каждая строка связана с именем IBOutlet , например:
myXib1.myButton1.selected.title = This is a button.
myXib1.myTextField1.placeholder = "This is text field placeholder"
Затем вы должны написать метод, который принимает имя XIb, находит текущий язык и проходит через все строки свойств для данного XIb. Он может использовать [NSObject performSelector:]
для доступа к добытчикам IBOutlet:
id localizableView = [self performSelector:NSSelectorFromString(@"myButton1")];
и вы вызываете этот метод из viewDidLoad
(или создать класс UILocalizedController, который вызывает его автоматически, и все контроллеры будут его потомком).
Также обратите внимание, что существует класс NSLocalizedString
, который должен помочь вам в локализации.
Благодарим вас за ответ. Как вы думаете, что было бы лучше? Использование констант в качестве ключей к строкам, хранящимся в файле .strings? Любая другая идея не программировать строки? – Tobold
Ответ обновлен. Короче говоря, если у вас есть только один язык, забудьте о константах и поместите все в xib. Если вы думаете об i18n, прочитайте расширенный ответ. – Sulthan