iphone - welche - ios 12 was ist neu




Festlegen der Standardsprache für die iPhone App beim ersten Start (2)

Ich entwickle eine Anwendung, die zwei Sprachen unterstützen soll: Englisch und Französisch. Da die englische Übersetzung noch nicht fertig ist, möchten wir sie nur auf Französisch bereitstellen und später eine englische Übersetzung hinzufügen.

Das Problem ist, dass ich die englische Sprache nicht aus meinem Code streichen möchte, da einige Teile schon fertig sind, es gibt verschiedene NIBs für diese Sprache etc. Stattdessen möchte ich nur, dass die englische Sprache in meiner App vorübergehend deaktiviert ist.

Was ich getan habe, ist, dass ich diesen Code als erste Anweisung von

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

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

Es funktioniert gut, bis auf eine Sache. Wenn Sie die Anwendung zum ersten Mal nach der Installation starten, ist sie immer noch auf Englisch. Das liegt wahrscheinlich daran, dass AppleLanguages Präferenz noch nicht festgelegt wurde. Nachdem ich die Anwendung beendet und neu gestartet habe, wird sie korrekt in Französisch angezeigt.

Kennt jemand eine Korrektur, so dass die französische Sprache auch beim ersten Durchlauf angewendet wurde?


Ich stieß auf das gleiche Problem, und die einzige Möglichkeit, das Problem zu beheben, war, den Code in der frühesten Phase der App zu haben, also in 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;
 }

Ich bin mir nicht wirklich sicher, ob es eine gute Übung ist, aber es hat in meinem Fall wie erwartet funktioniert.


Klingt chaotisch. Warum nicht einfach die unvollendeten englischen Ressourcen vom Ziel entfernen, damit sie nicht bereitgestellt werden? Haben Sie sich auch die Einstellung CFBundleDevelopmentRegion in Info.plist angesehen?







internationalization