2015-11-27 7 views
9

Wenn ein Xcode-Projekt von iOS-App neu erstellt wird, in das Projekt (nicht Ziel) setzen wir sehen können, dass es Use Base internationalization standardmäßig aktiviert ist, und es gibt zwei Dateien für die Development Language lokalisiert, welche English standardmäßig (eine für Main.storyboard ist und eine für LaunchScreen.storyboard, die sich beide im Verzeichnis Base.lproj befinden). Im folgenden sehen Sie den Screenshot:Wie stelle ich eine andere Sprache als Englisch als Entwicklungssprache und Basislokalisierung ein?

Xcode default project localization setting

(Der Einfachheit halber werde ich nur Main.storyboard ab sofort erwähnen.)

Und in der Lokalisierungsabschnitt Main.storyboard ‚s der rechten Seitenwand, können wir sehen, dass Die Base Lokalisierung ist standardmäßig aktiviert und es gibt auch eine English Lokalisierung, die standardmäßig deaktiviert ist. Im folgenden sehen Sie den Screenshot:

storyboard default localization setting

Und im Ziel der Info.plist gibt ein Schlüssel Localization native development region (das heißt CFBundleDevelopmentRegion) und dessen Standardwert ist en benannt ist. Im folgenden sehen Sie den Screenshot:

Localization native development region

Wenn ich es richtig verstanden habe, mit diesen Standardeinstellungen, Entwickler kann nur schreiben Englisch in der Base Lokalisierung von Main.storyboard und lassen Sie die English Lokalisierung als nicht markiert. Wenn die App an eine andere Sprache angepasst werden muss, kann der Entwickler eine Lokalisierung in der Projektlokalisierungseinstellung hinzufügen und im Popup-Dialogfeld Main.storyboard auswählen. Im folgenden sehen Sie den Screenshot:

add localization

Nehmen Chinese (Simplified) als ein Beispiel, wird dies zur Folge haben in einem neu erstellten Verzeichnis zh-Hans.lproj mit einer Main.strings Datei in seinem Inneren. (Der Einfachheit halber werde ich es als Chinese anstelle von Chinese (Simplified) bezeichnen.) Entwickler muss nur die englischen Strings innerhalb dieser Datei ins Chinesische übersetzen (das neu erstellte Main.strings im Verzeichnis zh-Hans.lproj hat standardmäßig alle englischen Texte dupliziert von der Main.storyboard in Base.lproj). Mit diesen Einstellungen wird das Feld Language in der Beschreibung dieser App im AppStore auf Englisch aufgeführt (von Base, weil Englisch development language ist) und Chinesisch (von Chinese). Wenn auf dem Endgerät des Endbenutzers die Systemsprache Englisch/Chinesisch (oder Englisch/Chinesisch ist die bevorzugte Sprache) ist, verwendet die App die entsprechende Sprachressource (für Englisch verwenden Sie die Base Lokalisierung; für Chinesisch verwenden Sie die Chinese Lokalisierung). Für alle anderen Spracheinstellungen wird Englisch als Ausweichsprache verwendet, da CFBundleDevelopmentRegionen ist, also Base Lokalisierung verwendet wird.

Also meine erste Frage wird sein, ist das obige Verständnis richtig? Zusammenfassend, mit development language Englisch ist, müssen wir English Lokalisierung für Storyboard-Dateien nicht aktivieren. Verwenden Sie einfach die Base Lokalisierung und schreiben Sie Englisch direkt in die Storyboard-Dateien. Wir müssen lediglich die Lokalisierung für andere Sprachen als Englisch hinzufügen. (Eigentlich scheint es problematisch, wenn wir die English Lokalisierung aktivieren.Wenn English Lokalisierung aktiviert ist, dann müssen wir die Texte in Base.lproj/Main.storyboard und en.lproj/Main.strings halten beides.)

Wenn das obige Verständnis richtig ist, meine zweite Frage wird, wie Internationalisierung in umgekehrter Art und Weise zu erreichen? Das heißt, wenn ich Chinese als development language verwenden und Chinesisch in der Base Lokalisierung schreiben und nur Lokalisierung für andere Sprachen als Chinese hinzufügen möchte, ist es möglich und wie man das in Xcode macht? Ich kann keinen Weg finden, die development language in der Projekteinstellung zu ändern, um zu behaupten, dass die Base Lokalisierung in dem Projekt Chinese anstatt English ist.

+0

Dies bedeutet, dass Sie Base (englisch) und chinesische Sprache. Wenn Sie sie übersetzen möchten, müssen Sie Texte in beiden Sprachzeichenfolgen setzen. Wenn die Sprache von den Einstellungen geändert wird, legt die App die übersetzte Zeichenfolge fest. Wenn Sie die Sprache über Ihre App (Gebietsschema) festlegen möchten, können Sie LocalizationSystem verwenden. https://github.com/rudensm/LocalizationSystem – Stefan

+0

Bitte stellen Sie die Sprache nicht aus Ihrer App ein. Sie fragen nur nach Fehlern und einem Wartungs-Albtraum. – lensovet

Antwort

11

Ihr Verständnis ist größtenteils korrekt. Eine kleine Klarstellung: Wenn der Benutzer in einer dritten Sprache wie Russisch läuft, ist es nicht unbedingt wahr, dass die App in Englisch läuft. Stattdessen wird die App in der ersten Sprache ausgeführt, die der Benutzer bevorzugt. Ab iOS 8 können Benutzer eine Liste der bevorzugten Sprachen wie "Russisch, Französisch, Chinesisch, Englisch" haben. Im Fall dieses hypothetischen Benutzers würde die App tatsächlich auf Chinesisch laufen, da sie früher in der Liste als Englisch ist.

Um Ihre Frage bezüglich der Änderung der Entwicklungssprache zu beantworten, ist dies nicht einfach zu tun, aber kann getan werden. Speziell:

  1. Fügen Sie zuerst die Sprache hinzu, die Ihre Basissprache sein soll. Deaktivieren Sie alle Dateien, die Xcode Ihnen zur Verfügung stellt.
  2. Ändern Sie in der Info.plist (wie Sie beobachtet haben) die Entwicklungsregion in die Sprache, die Ihre Basissprache sein soll. Beachten Sie, dass die Eigenschaft ein bisschen falsch benannt ist, da ihr Wert ein Sprachcode (mit einem optionalen Ländercode) sein sollte, anstatt einen Regions- oder Ländercode.
  3. Schließen Sie Ihr Projekt in Xcode. Öffnen Sie in einem anderen Code-Editor projectname.xcodeproj/project.pbxproj und suchen Sie nach developmentRegion. Sie sollten eine Zeile wie developmentRegion = English; sehen. Ändern Sie dies, um auf die gleiche Sprache zu verweisen, die Sie in Ihre Datei Info.plist eingegeben haben.
  4. Öffnen Sie das Projekt in Xcode. Gehen Sie alle lokalisierbaren Dateien durch und aktivieren Sie die Kontrollkästchen neben Englisch, um die lokalisierbaren Ressourcen zu generieren. Beachten Sie, dass Xcode für Storyboards und Xibs möglicherweise ein Storyboard anstelle einer Zeichenfolgendatei erstellt. Ändern Sie in diesem Fall den Dateityp in eine Zeichenkettendatei.

Hier ist ein Beispiel für das Ergebnis für mich fr als Basissprache:

Project info

File info

+0

Ich hatte nicht die Option, alle Dateien zu entfernen, die xcode mir anbietet. Also verließ ich das Mittagessen-Bildschirm, und nachdem ich den Prozess beendet habe, möchte ich nur zum Mittagessen Bildschirm und deaktivieren Sie die Datei aus dem rechten Menü. –

Verwandte Themen