2014-02-12 14 views
9

Ich muss zwei Schlüssel von info.plist lokalisieren: NSLocationUsageDescription und NSCameraUsageDescription. Also habe ich versucht, eine neue Datei mit dem Namen InfoPlist.strings zu erstellen, und dann habe ich sie lokalisiert, aber die App zeigt immer Zeichenfolgen an, die in der Datei info.plist gespeichert sind. Was ist los mit dir?Kann info.plist Strings nicht lokalisieren

Offizielle Dokumentation von Information Property List Key Reference

Lokalisierte Werte sind nicht in der Info.plist Datei selbst gespeichert. Stattdessen speichern Sie die Werte für eine bestimmte Lokalisation in einer Zeichenfolgendatei mit dem Namen InfoPlist.strings. Sie legen diese Datei in das gleiche sprachspezifische Projektverzeichnis, das Sie zum Speichern anderer Ressourcen für die gleiche Lokalisierung verwenden. Der Inhalt der Datei InfoPlist.strings enthält die einzelnen Schlüssel, die Sie lokalisieren möchten, und den entsprechend übersetzten Wert. Die Routinen, die Schlüssel Werte in der Info.plist-Datei suchen, berücksichtigen die Spracheinstellungen des Benutzers und geben die lokalisierte Version des Schlüssels (aus der entsprechenden InfoPlist.strings-Datei) zurück, wenn eine vorhanden ist. Wenn eine lokalisierte Version eines Schlüssels nicht vorhanden ist, geben die Routinen den Wert in der Info.plist-Datei zurück.

Meine InfoPlist.strings Datei:

NSCameraUsageDescription = "hello"; 
NSLocationUsageDescription = "hello hello"; 
+0

Haben Sie die Sprache des iPhone-Simulators geändert? Wechseln Sie aus der App Einstellungen, nicht aus dem Schema. – scottphc

+0

InfoPlist.strings verwenden http://stackoverflow.com/questions/25736700/how-to-localise-a-string-inside-the-ios-info-plist-file – onmyway133

Antwort

5

Bitte überprüfen Sie in der generierten Anwendungspaket, ob die Datei wirklich dort gespeichert ist, und es wird an die richtige Stelle setzen. Normalerweise ist dies der fehlende Schritt.

Gehen Sie einfach in die Projekteinstellungen öffnen „Build Phases“ und sehen, ob kann die Datei in „Copy Bundle-Ressourcen“ zu finden

+0

Guter Punkt! Für mich wurde InfoPlist.string ignoriert, bis ich es manuell zu Copy Bundle Resources hinzufügte – cyanide

0

Die Datei innerhalb eines Verzeichnisses sein muss, welche die Sprache, zum Beispiel en.lproj

0

In der Tat war mein Problem, dass ich die NSLocationWhenInUseUsageDescription Konstante falsch geschrieben hatte, so natürlich wurde es nicht berücksichtigt.

0

Manchmal müssen Sie zuerst eine Reinigung vornehmen, klicken Sie auf Menü -> Produkt -> Reinigen.

Sometimes you have to make a Clean first

3

Ihre plist-Datei mehrere Versionen für jede Sprache haben können Ihre Anwendung unterstützt. In Utilities \ Datei-Inspektor (rechts) klicken Sie auf "Localize":

enter image description here

Und dann wählen Sie die Sprachen ihre eigenen Versionen haben wollen:

enter image description here

Danach Sie können jede Plist-Datei eingeben und bearbeiten, wie Sie möchten.

+0

ok, ich habe die Datei "someinfo.plist", die als "info.plist" funktioniert, muss aber in den Projekteinstellungen angegeben werden (Abschnitt "Packaging") . Wie kann man einen Pfad angeben, wenn er lokalisiert ist? –

+1

Es ist automatisch. Für jede Sprache wird deine App das relevante plist verwenden. Wenn es keine gibt (es gibt keine Plist-Datei für die aktuelle Sprache) - Ihre App wird die Basis verwenden. – yonivav

0

Seit iOS 10 müssen Sie die Datenschutzschlüssel zu Ihrer Info.plist hinzufügen.

<key>NSPhotoLibraryUsageDescription</key> 
<string>Please allow access to the photo library.</string> 

Natürlich müssen Sie noch die Tasten lokalisiert werden (und Sie können die Anwendung des Info.plist nicht lokalisieren). Sie fügen diese Vertraulichkeitsschlüssel auch den InfoPlist.strings hinzu, die wiederum lokalisiert sind.

"NSPhotoLibraryUsageDescription" = "Please allow access to the photo library."; 
Verwandte Themen