2009-08-20 10 views
1

Wie können Sie Ihre Kakao-App verwenden ein bestimmtes Gebietsschema/Lokalisierung das ist anders als die aktuelle Gebietsschema sagt?Verwenden Sie spezifische Lokalisierung in Cocoa App

Meine App hat eine Reihe von Lokalisierungen und ich möchte in der Lage sein, die Lokalisierung zu wählen, die die App in einer Konfigurationsdatei verwendet. Wie kann ich Cocoa mitteilen, welche der Lokalisierungen verwendet werden soll?

+0

Fügen Sie nur eine Lokalisierung für die Konfigurationsdatei hinzu. –

+0

[Dies] [1] kann Ihnen helfen. Es ist der beste Weg, denke ich! Viel Glück. [1]: http://stackoverflow.com/questions/26594222/detect-localization-xcode-6-mac-cocoa –

Antwort

1

Setzen Sie das Array AppleLanguages in den Benutzerstandardeinstellungen der Anwendung so, dass es das Format enthält, das Sie am liebsten verwenden würden, und geben Sie in den Standardeinstellungen ebenfalls eine entsprechende AppleLocale Zeichenfolge an. Nachdem das gesagt wurde, warum eine Lokalisierung verwenden, die nicht die ist, die der Benutzer bevorzugt?

+0

Das Konzept eines "user" ist für diese App irreführend, da es annimmt, Der Benutzer besitzt die Maschine. Dies ist eine App im Kiosk-Stil, die auf der Hardware meines Unternehmens ausgeführt wird und immer auf das gleiche Gebietsschema eingestellt ist. Es gibt eine zentrale Konfiguration, die alle Einstellungen vorgibt, einschließlich der Sprache der Benutzeroberfläche. –

+0

Ein Grund ist, Lokalisierungsänderungen zu testen, z. B. um sicherzustellen, dass eine von einem Localizer empfangene Zeichenfolge in das Steuerelement passt, auf der sie in der Benutzeroberfläche angezeigt wird, oder um sicherzustellen, dass bei der Wiederholung einer Nicht-String-Bearbeitung mehrere Elemente nicht unterbrochen wurden Lokalisierung einer Feder. –

+0

@Peter: Ja, das mache ich selbst. Aber das ist nicht der Anwendungsfall, den ich aus der Frage abgeleitet habe. –

0

habe ich versucht, „AppleLocale“ und „AppleLanguages“ mit so etwas wie die folgende Einstellung:

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"en"] forKey:@"AppleLanguages"]; 
[[NSUserDefaults standardUserDefaults] setObject:@"en_US" forKey:@"AppleLocale"]; 

Es tat nichts, aber immer noch die Sprache und das Gebietsschema aus dem Systemeinstellungen verwendet werden.

+2

Scheint zu funktionieren, aber nur nach dem Neustart des Programms. Bedeutung: Zum ersten Mal, wenn das Programm mit geänderten Einstellungen startet, werden die Benutzereinstellungen mit dem obigen Code festgelegt. Nachfolgende Aufrufe von NSLocalizedString verwenden die neu eingestellte Sprache/Gebietsschema jedoch nicht, bis ich das Programm neu starte. –

1

nach MAAD-Antwort. ich in meiner App getestet und den einzigen Schlüssel, AppleLanguages ist beeinflusst

so

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"en"] forKey:@"AppleLanguages"]; 

genug ist.

Denken Sie daran, Ihre App neu zu starten, damit die Benutzerstandardeinstellungen wirksam werden.

2

Hmmm könnte es sein, dass AppleLocale ein 'en' und kein 'en_US' erwartet?

‚en‘ funktioniert bei mir im Terminal so ... Ich sehe nicht, warum es nicht die gleiche Zeichenfolge für Sie da sein sollte auch, wenn es in Ihrer Anwendung Einstellung

defaults write com.mycompany .myproduct AppleLocale 'en'