381 Stimmen

Wie lokalisiert man einen String innerhalb der iOS info.plist-Datei?

Wie Sie vielleicht wissen, erfordert iOS 8 den Schlüssel NSLocationWhenInUseUsageDescription, um den Standort des Benutzers zu verwenden. Ich habe diesen Schlüssel und einige allgemeine Informationen in meine Info-Datei hinzugefügt. Bildbeschreibung hier eingeben

Wie kann ich Übersetzungszeichenfolgen in der Plist-Datei verwenden?

-- Update --

Ich habe bereits eine lokalisierte Zeichenfolge. Ich frage mich nur, ob ich so etwas verwenden kann wie NSLocalizedString(MYSTRING,nil) in der Plist-Zeichenfolge. Ich weiß, dass ich mehrere Info.plist-Dateien für die Lokalisierung erstellen kann, aber ich frage mich, ob es einen einfacheren Weg gibt.

697voto

Fahri Azimov Punkte 11104

Sie sollten die InfoPlist.strings-Datei (behalten Sie beide I & P groß) verwenden, um Werte von Info.plist zu lokalisieren. Gehen Sie dazu zu Datei->Neu->Datei, wählen Sie unter dem Ressource-Tab von iOS Strings-Datei aus, nennen Sie sie InfoPlist und erstellen Sie sie. Öffnen Sie sie und fügen Sie die Info.plist-Werte ein, die Sie lokalisieren möchten, wie:

"NSLocationWhenInUseUsageDescription" = "Beschreibung davon";

Jetzt können Sie die InfoPlist.strings-Datei mit Übersetzungen lokalisieren.

Wählen Sie die Lokalisierungsoptionen aus oder aktivieren Sie die Lokalisierung, wenn nötig,

Editor auf der rechten Seite

Sie sollten die Datei auch im Editor auf der linken Seite sehen können.

Editor auf der linken Seite

HINWEIS: Beim Testen der Lokalisierungen auf dem Simulator müssen Sie die Sprache auf dem Simulator selbst ändern, nicht nur die Sprache im Xcode-Ziel. (Credits an John Webb)

Hier finden Sie die offizielle Dokumentation für die Lokalisierung von Info.plist-Schlüsseln.

Credits an Marco, danke für das Hinzufügen der Bilder zu dieser Antwort!

45voto

Zvi Punkte 2088

Alles oben Genannte hat bei mir nicht funktioniert (Xcode 7.3), also las ich die Apple-Referenz darüber, wie es gemacht wird, und es ist viel einfacher als oben beschrieben. Laut Apple:

Lokalisierte Werte werden nicht in der Info.plist-Datei selbst gespeichert. Stattdessen speichern Sie die Werte für eine bestimmte Lokalisierung in einer Strings-Datei mit dem Namen InfoPlist.strings. Sie platzieren diese Datei in dem selben sprachspezifischen Projektverzeichnis, das Sie für die Speicherung anderer Ressourcen für die gleiche Lokalisierung nutzen.

Dementsprechend habe ich eine Strings-Datei namens InfoPlist.strings erstellt und sie im xx.lproj-Ordner der "xx"-Sprache platziert (und sie dem Projekt mit Datei->Dateien hinzufügen ... hinzugefügt). Das ist alles. Keine Notwendigkeit für den Schlüssel "Localized resources can be mixed" = YES und keine Notwendigkeit für InfoPlist.strings in base.lproj oder en.lproj.

Die Anwendung verwendet den Info.plist-Schlüssel-Wert als Standardwert, wenn sie keinen Schlüssel in der sprachspezifischen Datei finden kann. Daher habe ich meinen englischen Wert in der Info.plist-Datei platziert und den übersetzten Wert in der sprachspezifischen Datei, getestet und alles funktioniert.

Insbesondere ist es nicht notwendig, InfoPlist.strings zu lokalisieren (was eine Version der Datei in base.lproj, en.lproj und xx.lproj erstellt), und in meinem Fall hat es nicht funktioniert, das zu tun.

44voto

Costas Bakoulias Punkte 867

Schritt für Schritt Info.plist lokalisieren:

  1. Suchen Sie im Xcode den Ordner Ressourcen (befindet sich im Stammverzeichnis)
  2. Wählen Sie den Ordner Ressourcen aus
  3. Drücken Sie dann im Hauptmenü auf Datei -> Neu -> Datei...
  4. Wählen Sie im Abschnitt "Ressource" die Strings-Datei aus und klicken Sie auf Weiter
  5. Schreiben Sie dann im Feld Speichern als NUR InfoPlist ("I" groß und "P" groß - das l nach dem P sollte nicht groß sein)
  6. Dann klicken Sie auf Erstellen
  7. Wählen Sie dann die Datei InfoPlist.strings aus, die im Ressourcenordner erstellt wurde, und drücken Sie im Menü rechts die Schaltfläche "Lokalisieren"
  8. Wählen Sie dann das Projekt aus dem Projekt-Navigator und wählen Sie das Projekt aus der Projektliste aus
  9. In dem Informationsregister am unteren Rand können Sie beliebig viele Sprachen hinzufügen (es befindet sich im Abschnitt Lokalisierungen)
  10. Die Sprache können Sie im Ressourcenordner sehen
  11. Um die Werte ("Schlüssel") aus der info.plist-Datei zu lokalisieren, können Sie diese mit einem Texteditor öffnen und alle Schlüssel, die Sie lokalisieren möchten, erhalten
  12. Schreiben Sie jeden Schlüssel wie im obigen Beispiel in einer InfoPlist.strings-Datei

"NSLocationAlwaysAndWhenInUseUsageDescription" = "blabla";

"NSLocationAlwaysUsageDescription" = "blabla2";

Das war alles, jetzt haben Sie Ihre info.plist-Datei lokalisiert!

37voto

Giuseppe Beccari Punkte 377

Tipps

  1. Denken Sie daran, dass der iOS Simulator standardmäßig Ihre Systemsprache verwendet. Bitte ändern Sie die Sprache (und Region) auch in den Einstellungen des iOS Simulators, um Ihre Übersetzungen zu testen.

  2. Die Lokalisierungszeichenfolge (siehe Apple-Dokumente hier) sollte sein

    NSLocationWhenInUseUsageDescription = "Beschreibung davon";

    und nicht (mit Anführungszeichen "...")

    "NSLocationWhenInUseUsageDescription" = "Beschreibung davon";

33voto

ofundefined Punkte 1773

Für das neuere Xcode 12 / 13 /...

1. Erstellen Sie eine neue InfoPlist.string Datei in Ihrem Projekt.

Wählen Sie Ihr Projekt aus, klicken Sie mit der rechten Maustaste und wählen Sie Neue Datei

Wählen Sie den Dateityp 'Strings Datei'

Benennen Sie es 'InfoPlist' und erstellen Sie es

2. Wählen Sie Ihre Datei aus, und Sie sollten die rechte Seitenleiste-Option "Lokalisieren" sehen.

Wählen Sie Lokalisieren in der rechten Seitenleiste

Fertig.

3. Wenn Sie weitere Sprachen in Ihrem Projekt hinzufügen möchten, gehen Sie zu Info >> Lokalisierungen

Es wird automatisch eine Kopie Ihrer "InfoPlist.string" für die neuen Sprachen erstellt, die Sie hinzufügen.

Fügen Sie weitere Sprachen zu Ihrem Projekt hinzu.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X