NSLocalizedString ist nicht standardmäßig auf die Basissprache eingestellt

9

Ich habe das folgende Problem mit einem kleinen iOS 7 Projekt, auf dem ich die Lokalisierungsfähigkeiten teste.

  • Ich habe ein Standardprojekt mit einem VC, in dem ich einen Button in der Mitte der Szene habe
  • in meinem VC habe ich ein IBOutlet zu meinem Button namens myButton
  • in der viewDidLoad-Methode des VC Ich setze den Titel der Buttons:
%Vor%
  • Ich habe das Localizable.strings-Dateiende generiert und es für die Lokalisierung für die folgenden Sprachen aktiviert: Base, Dutch
  • Der Inhalt jeder Datei lautet wie folgt:

/ * Mein Kommentar zu meinem Button * / "MY_BUTTON"="Meine [VALUE] Taste"; WERT = Basis, Niederländisch; Also sollten die Labels My Base Button & amp sein; Mein niederländischer Knopf

Problem: Wenn ich meine App mit der Sprache des Simulators als Niederländisch starte, ist das Label (wie erwartet) "My Dutch Button". Wenn ich es in Englisch starte, lautet das Label "My Base Button" (irgendwie ok ...)

Wenn ich es jedoch mit der auf Französisch eingestellten Sprache des Telefons starte, und ich hatte es zuvor auf Niederländisch eingestellt, wird die Beschriftung der Schaltfläche nicht standardmäßig auf Basis eingestellt und stattdessen wird wieder "Meine niederländische Schaltfläche"

angezeigt

Irgendwelche Gedanken dazu?

Danke

    
tufyx 13.02.2014, 12:56
quelle

3 Antworten

4

Die Reihenfolge der Standardsprachen ist eine Benutzereinstellung unter OSX und nicht editierbar (AFAIK) unter iOS
ABER trotzdem eingehalten!

der App wurde das Array AppleLanguages ​​(oder so ..) übergeben, das die zu testenden Sprachen angibt. Das NSLocalizedString-Makro wird versuchen, jede Sprache in dem Array in der Reihenfolge zu laden, in der sie angezeigt werden, bis sie ein funktionierendes finden und dann das

verwendet

vergleichen: Erzwingen, dass NSLocalizedString eine bestimmte Sprache verwendet

    
Daij-Djan 13.02.2014, 14:42
quelle
3

Ich habe die folgende Klasse erstellt, die ein Fallback auf eine anpassbare Sprache unterstützt. In meinem Fall verwende ich Base.lproj als Datei für meine Standardsprachinhalte.

StringUtilities.h

%Vor%

StringUtilities.m

%Vor%

Verwendung

Importieren Sie die Headerdatei und verwenden Sie das Makro GetLocalizedString anstelle von NSLocalizedString Makro.

%Vor%     
Dirk 30.11.2014 07:29
quelle
0

Ich habe ein Äquivalent in Swift:

%Vor%     
samwize 24.01.2018 06:18
quelle