2010-05-31 3 views
0

Je développe une application qui devrait prendre en charge deux langues: l'anglais et le français. Cependant, comme la traduction en anglais n'est pas encore terminée, nous voulons la déployer en français seulement et, plus tard, ajouter la traduction en anglais plus tard. Le problème est que je ne veux pas enlever la langue anglaise de mon code puisque certaines parties sont déjà faites, il y a différentes NIB pour cette langue etc. Au lieu de cela je voudrais juste que l'anglais soit désactivé temporairement dans mon applicationDéfinition de la langue par défaut pour l'application iPhone lors de la première exécution

Ce que je fait est que je mets ce code comme la première instruction de

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

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

Il fonctionne très bien, sauf pour une chose. Lorsque vous lancez l'application pour la première fois après l'installation, il est toujours en anglais. C'est probablement parce que la préférence AppleLanguages n'était pas encore définie pour cela. Après avoir quitté l'application et l'avoir redémarrée, elle s'affiche correctement en français.

Est-ce que quelqu'un connaît un correctif pour que la langue française ait été appliquée aussi lors de la première exécution?

Répondre

3

Sons désordonnés. Pourquoi ne pas simplement décocher les ressources anglaises inachevées de la cible, afin qu'elles ne soient pas déployées? En outre, avez-vous examiné le paramètre CFBundleDevelopmentRegion dans Info.plist?

10

je suis tombé sur la même question, et la seule façon que je pouvais résoudre ce problème était d'avoir le morceau de code le plus tôt dans l'application, par exemple dans 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; 
} 

Je suis pas vraiment sûr que c'est une bonne pratique mais ça a marché comme prévu dans mon cas.

+0

après avoir mis cela en main.m, il montre app chaque fois en français – Heena

+0

cela fonctionne et est une meilleure réponse que l'autre. –

+1

J'ai un problème pour implémenter cette solution: Voir http://stackoverflow.com/questions/22448407/set-default-language-at-first-run-ios Une idée pourquoi? – Antzi

Questions connexes