Локализация iPhone с помощью sqlite? - PullRequest
1 голос
/ 11 августа 2009

Как текст в базе данных локализован для iPhone? Примеры, которые я видел, содержат жестко закодированные строки в файле .m или .xib. Например:

NSString firstName = NSLocalizedString(@"First Name", @"This is the first name");

Что произойдет, если строки, которые вам нужно локализовать, находятся в базе данных? Я не нашел обсуждения этого типа локализации. Тем не менее, я думаю, что это очень распространено, учитывая, что многие приложения для iPhone используют sqlite.

Ответы [ 2 ]

2 голосов
/ 11 августа 2009

NSLocalizedString - это просто макрос препроцессора, который превращается в вызов NSBundle localizedStringForKey: value: table: - поэтому вы можете использовать строки, извлекаемые во время выполнения, вместо жестко закодированной строки и передать это NSBundle. Недостатком, конечно, является то, что нет быстрого способа составить список всех строк, которые нужны переводчику для локализации.

Пример:

NSString *key = fetchKeyFromDB(...);
NSString *localizedString = [[NSBundle mainBundle] localizedStringForKey:key value:@"default string" table:nil];
0 голосов
/ 11 августа 2009

Мне просто интересно то же самое, и я не смог найти упоминания о том, как с этим справились (и, следовательно, как я оказался на этом посту). В общем, я думал, что у вас могут быть разные базы данных для каждого поддерживаемого языка. Возможно, по-прежнему следуйте общим рекомендациям по интернационализации / локализации и создайте отдельный каталог для каждого языка поддержки, например en.lproj и it.lproj, а затем назовите ваши базы данных как «en_data.db» и «it_data.db» (или любое другое соглашение об именах вы предпочитаете) и поместите их в соответствующие каталоги. Хитрость заключается в том, чтобы затем определить язык выполнения в приложении и загрузить соответствующую базу данных для этого языка. Опять же, это всего лишь предположение, я никогда не делал это на практике (как я уже говорил, мне было интересно то же самое)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...