2014-05-17 9 views
7

I erstellen Schlepptau Localizable.strings Dateien ein für Englisch und die zweite für arabisch:NSLocalizedString den Schlüssel zurückgeben anstelle des Wertes

/* The number 1 */ 
"LABEL_ONE" = "label number one"; 

ich diesen Code bin mit dem String-Wert zu erhalten:

[self.Lable1 setText:NSLocalizedString(@"LABEL_ONE", @"The number 1")]; 

aber die App zeigt "LABEL_ONE" anstelle von "Label Nummer eins"? Was ist das Problem? Danke

+0

mögliches Duplikat von [NSLocalizedString ruft nur den Schlüssel ab, nicht den Wert in Localizable.strings (IOS)] (http://stackoverflow.com/questions/9251177/nslocalizedstring-only-retrieves-the-key-not-the -value-in-localizable-strings) – bummi

+0

Es könnte wegen Simulator auftreten. Probieren Sie das iPhone aus. Ich hoffe, es wird funktionieren. –

Antwort

5

Ihr Code ist korrekt, also ist das Problem woanders.

Hier sind einige Möglichkeiten:

  1. Die Localized.strings Datei nicht in das Anwendungspaket kopiert wird. Um zu überprüfen, diesen Fokus auf der Localized.strings Datei mit dem ‚Project Navigator‘ und stellen Sie sicher, dass Ihr Ziel überprüft wird auf der rechten Seite unter ‚Ziel Mitgliedschaft‘
  2. Es gibt einige Syntax Fragen innerhalb der Localized.strings Datei, dh fehlenden ;
  3. Der Code, den Sie zitiert haben, wird nicht ausgeführt. Um zu überprüfen, setzen Sie einen Haltepunkt und sehen, ob es erreicht wird oder einige Debug-Protokolle verwenden ...
  4. Die Zeichenfolge erscheint in der Localized.strings für Arabisch, aber fehlt für Englisch.
+0

Entschuldigung, welche Zeichenfolge fehlt für English? (Punkt 4) – user3648409

+0

Was ich unter (4) verstehe ist, dass "LABEL_ONE" = "Label Nummer eins"; erscheint in der arabischen Localizable.strings aber nicht in der englischen Datei. –

0

Ihr Problem ist sehr einfach:

Die App die Datei nicht mit Übersetzungen finden.

So müssen Sie sicher sein, dass Sie die lokalisierbaren Dateien mit dem richtigen Namen (zB en für Englisch) und auch, dass in Ihrem Gerät (oder Simulator) erstellen Sie eingestellt haben 1 der von Ihnen vorbereitet Sprachen in diesen Dateien.

Andernfalls die Datei nicht gefunden wird und der Schlüssel anstelle des Werts zurückgegeben wird.

+0

Ich habe Tow-Dateien localizable.strings (Englisch) und localisable.strings (arabisch), xcode erzeugt dies, wenn ich in der Projektinfo Lokalisierung hinzufüge !! – user3648409

+0

Und welche Sprache haben Sie auf Ihrem Gerät eingestellt? und hast du das Wort in beide Dateien geschrieben? –

+0

jetzt benutze ich den Simulator nicht ein echtes Gerät! Ja, ich schreibe das Wort in beide Dateien – user3648409

0

versuchen Sie diese Antwort es ist Arbeit für mich Ich hatte Probleme mit diesem auf dem iOS-Simulator. Ich löschte die Localization.strings-Datei im Simulator-Verzeichnis

(/ Benutzer/(mich)/Bibliothek/Application Support/iPhone Simulator/5.0/Anwendungen/(etc)/(Projekt)/(application.app)

von hier kopiert

https://stackoverflow.com/a/11657945

0

In meinem Fall das Projekt Reinigung zunächst nach i18n Einführung, um sie zu lösen.

3

Ihre String-Dateien Name Localizable.strings sein.

1

Zusätzlich zur obersten Antwort muss die Lokalisierungsdatei Localizable.strings heißen und sonst nichts.

0

Suchen Sie nach Komma (,) in Ihrem.Datei Strings

Ich hatte die folgende Zeile:

"Changed your mind?" = "¿Cambiaste de opinión?";, 

Und irgendwie, dass die Zusammenstellung gemacht gelingen, auch der Befehl plutil -lint Localizable.strings sagte, es war in Ordnung. Nachdem ich das gleiche Komma aus jeder Datei in dieser Zeile genommen habe, kann der Compiler jetzt Fehler erkennen.

Das Problem zuvor war die Kompilierung erfolgreich, aber wegen des Kommas war die .strings-Datei eigentlich falsch, also nichts nach dem Komma gelesen wurde. Ich weiß nicht, ob das Komma in .strings-Dateien verwendet werden kann.

Hinweis: plutil -lint Localizable.strings auf dem Terminal tu Debug .strings Dateien verwendet wird, wie Xcode kann nicht sagen, wo die .strings Kompilation wen falsch.