Настройка языка по умолчанию для приложения iPhone при первом запуске - PullRequest
0 голосов
/ 31 мая 2010

Я разрабатываю приложение, которое должно поддерживать два языка: английский и французский. Однако, поскольку перевод на английский язык еще не сделан, мы хотим развернуть его только на французском языке, а позже добавим перевод на английский.

Проблема в том, что я не хочу удалять английский язык из моего кода, так как некоторые части уже сделаны, есть разные NIB для этого языка и т. Д. Вместо этого я бы просто хотел, чтобы английский язык был временно отключен в моем коде. приложение.

Я сделал этот код в качестве первой инструкции

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSArray arrayWithObjects:@"fr", nil] forKey:@"AppleLanguages"];
[defaults synchronize];

Работает нормально, кроме одной вещи. При первом запуске приложения после установки оно остается на английском языке. Это, вероятно, потому что предпочтение AppleLanguages еще не было установлено для него. После того, как я вышел из приложения и запустил его снова, он корректно отображается на французском языке.

Кто-нибудь знает исправление, чтобы французский язык применялся также при первом запуске?

Ответы [ 2 ]

11 голосов
/ 25 августа 2010

Я столкнулся с той же проблемой, и единственный путь, которым я мог ее исправить, - это иметь кусок кода на самой ранней стадии приложения, то есть в main.c:

 int main(int argc, char *argv[]) {

     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
     [defaults setObject:[NSArray arrayWithObjects:@"fr", nil] forKey:@"AppleLanguages"];
     [defaults synchronize];

     int retVal = UIApplicationMain(argc, argv, nil, nil);

     [pool release];
     return retVal;
 }

Я не совсем уверен, что это хорошая практика, но в моем случае это сработало как положено.

3 голосов
/ 03 июня 2010

Звучит грязно. Почему бы просто не снять незаконченные английские ресурсы с цели, чтобы они не были развернуты? Кроме того, вы смотрели на настройку CFBundleDevelopmentRegion в Info.plist?

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