Локализация приложения для iPhone - английские проблемы?

У меня есть приложение, которое я перевожу в набор различных языков. Проблема состоит в том, что приложение будет иметь несколько различных значений в Австралии, чем будет в Новой Зеландии, которые являются оба англоязычными странами.

Я создал en_AU и en_NZ файл языка, но они оба используют стандартный английский файл. Я удалил английский файл языка, но он продолжает происходить...

Какие-либо идеи о том, как я могу заставить это работать?

Спасибо,

- d

18
задан dewberry 22 July 2010 в 11:55
поделиться

1 ответ

В локализациях iPhone (или это локализации?) Не учитывается регион, установленный пользователем (например, Великобритания, Австралия, Новая Зеландия). По умолчанию доступен только один «английский» перевод. Однако вы можете взломать вещи, чтобы заставить его использовать другую настройку перевода - я только что сделал это для выбора между «английским» (США) и «en_GB» (британский английский).

В вашем main.m, измените его так, чтобы он выглядел примерно так, как показано ниже (добавьте свои собственные тесты для Новой Зеландии или Австралии)

int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

// Set up the locale jiggery pokery
NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];
NSString *locale = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode];
if ([language isEqualToString:@"en"] && [locale isEqualToString:@"GB"]) {
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en_GB", @"en", nil] forKey:@"AppleLanguages"];
}

int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;

}

Это выталкивает язык пользователя (например, "en") в язык NSString, а локаль пользователя ( например, NZ, GB, AU) в локаль NSString. Если они (в моем случае) совпадают с en и GB, то я устанавливаю настройки языка по умолчанию для пользователей как «en_GB», а затем «en».

Затем в вашем приложении делегируется метод application: didFinishLaunchingWithOptions, который вы хотите удалить этот параметр NSUserDefaults, который вы только что установили с помощью кода

    [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"AppleLanguages"];

На этом этапе можно безопасно удалить, потому что вся инициализация пакета завершена. Теперь ваше приложение должно использовать файл Localization.strings в каталоге en_GB.lproj.

Это немного ужасное хакерское решение, но оно работает для меня.

39
ответ дан 30 November 2019 в 06:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: