Я работаю над локализацией своего приложения и добавлением NSLocalizedString()
по всему моему коду, где строка будет отображаться на экране. Вопрос в том, что у меня есть UIPickerview
, который показывает 12 элементов, и я бы хотел локализовать его, а не добавлять разные языковые строки в основные данные. Это то, что у меня есть, что возвращает названия. Как я могу локализовать его?Как я могу локализовать названия/текст uipickerview
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [self.items objectAtIndex:row];
}
Идет ли это работать?
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
NSString *localizedTitle = [NSString stringWithFormat:NSLocalizedString(@"%@", @"Item Name"),[self.items objectAtIndex:row]];
return localizedTitle;
}
У меня должен быть список всех элементов в файле Localizable.strings?
Заранее благодарен!
Спасибо за ответ! Я не хочу использовать основные данные для локализации. Я хотел бы использовать только Localizable.strings для локализации. Эти слова будут использоваться во множестве разных мест в приложении и хотели бы, чтобы он был установлен один раз и не имел разных таблиц в основных данных для каждого языка. – Yan
Тогда самый простой способ добиться этого - сделать ключи в Localizable.strings чтобы иметь такой порядок: picker_1_0 = "some_value"; picker_2_0 = "some_value" и т. д. Затем, когда UIPickerView dataSource вызывает - (NSString *) pickerView: (UIPickerView *) pickerView titleForRow: (NSInteger) строка для компонента Component: (NSInteger), вы используете локализацию таким образом NSLocalizedString ("", [ NSString stringWithFormat: @ "picker_% d_% d", row, component]); Используя его таким образом, у вас будут ключи, заказанные в порядке, которым это требует UIPickerView. –
Значит ли это, что все сборщики будут иметь те же значения, которые берутся из файла строк? – Yan