2016-06-01 5 views
2

i durch Schreiben Sie den folgenden Code die Lokalisierung auf Arabisch zu setzen versucht:Änderung AppleLanguage in Haupt auf Arabisch, aber immer noch UIUserInterfaceLayoutDirectionLeftToRight

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

@autoreleasepool 
    { 
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"ar-EG", nil] forKey:@"AppleLanguages"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
    } 

ich den AppleLanguages ​​in AppDelegate holen und sicherstellen, dass es erfolgreich zurückgegeben ar-EG als erste Sprache im Array, aber beim ersten Lauf der App ist die Sprache Richtung immer noch UIUserInterfaceLayoutDirectionLeftToRight und ändert sich nicht UIUserInterfaceLayoutDirectionRightToLeft wie es im zweiten Lauf tut. der erste Lauf gelingt das Ändern der Layout-Richtung nur auf dem iPhone 6s.

Irgendwelche Ideen Jungs.

Antwort

1

Fügen Sie diese in Ihrem AppDelegate oder Controller-übergeordnete Ansicht, wenn Sie eine haben:

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) 

if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9.0")) { 
    [[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft]; 
} 

Und einen dieser Bibliotheken verwenden, die die Sprachen im laufenden Betrieb zu lokalisieren, und es wird auf iOS 9 gut arbeiten (und mehr) .

Hinweis: Für iOS 8 können Sie eine Warnmeldung hinzufügen, die dem Benutzer mitteilt, dass Konfigurationen noch stattfinden müssen und ihn zum Neustart auffordert oder sogar "exit (0)" beim Klicken auf OK ausführt und beim Klicken geöffnet bleibt stornieren. Aber seit iOS 9 hat den größeren Anteil am Markt, so dass es nicht viel für Ihre App passieren wird, denke ich.

0

Ich musste ähnliche Probleme mit benutzerdefinierten Sprachen in iOS 6 - 9 beheben - die sich von Ihrem Fall unterscheiden können. Meine Ergebnisse waren, dass die einzige zuverlässige Möglichkeit, Apps konsistent in eine (neue) Sprache für das gesamte Spektrum von Geräten zu zwingen, ein App-Neustart ist. Beenden und starten Sie die App programmgesteuert neu. In diesen Fällen musste die Sprachauswahl als eine Benutzerwahl implementiert werden. Wir wurden abgelehnt, weil wir beim ersten Start nicht in der Sprache des Geräts laufen.

+0

Ich denke nicht, dass es eine gute Möglichkeit ist, das Problem zu lösen, und Apple lehnt die App möglicherweise ab, weil Sie den Neustart erzwingen. –

+0

Ich stimme Ihnen vollkommen zu. Es sollte eine bessere Lösung geben und vielleicht jemand hier hat es. Wir verwenden den Neustart-Mechanismus mit Ansagen und dergleichen in mehreren Apps und wurden deswegen nicht abgewiesen. – caxix

Verwandte Themen