2011-01-03 17 views
1

Ich muss meine Anwendung lokalisieren, und ich brauche auch, dass der Übersetzer einfachen Zugriff auf die Dateien hat, die er übersetzen muss. Ich sehe, dass Interface-Dateien (die .xib s und die Strings in ihnen) in Sprachen unterteilt sind.Lokalisierung in Cocoa

Die Lösung wäre das manuelle Neuschreiben aller .xib s? Und was, wenn einige Zeichenketten programmatisch in der Anwendung angezeigt werden? Vielleicht brauche ich etwas wie einen globalen Parameter, der der Anwendung sagt, welche Sprache eingestellt ist. Wie auch immer, ich denke, dass Mac-Anwendungen automatisch das richtige .xib anzeigen, abhängig von der Systemsprache.

Gibt es ein "bestes" zu tun, wenn mit übersetzbaren Schnittstellen programmiert wird?

Antwort

5

Was ich denke, Sie brauchen, ist Lokalisierung.

Wo Sie Zeichenfolgen in Ihrem Code verwenden:

  • Erstellen Sie eine neue Localizable.strings-Datei (Datei -> Neue Datei -> iOS -> Ressourcen -> Strings-Datei)

  • Wählen Sie diese Einstellung Datei und Zeige Dateiinspektor (Befehl + Option + 1)

  • Klicken Sie auf die Schaltfläche Hinzufügen unter Lokalisierung und fügen Sie eine Standardsprache (ich erwarte Englisch) und die anderen Sprachen, die Sie wollen.

  • Sie werden feststellen, dass sich neben Ihrer Datei Localizable.strings ein kleiner Pfeil befindet. Wenn Sie darauf klicken, können Sie die Sprachen sehen, die Sie hinzugefügt haben.

  • Für jede Phrase, die Sie übersetzen wollen, verwenden Sie die folgende Syntax:

    "key" = "value";
    "hello" = "bonjour";

  • In Ihrem Code, wo Sie die Übersetzung verwenden möchten, verwenden Sie NSLocalizedString(@"hello", @"hello"); (Der zweite Parameter ist ein Kommentar, es spielt keine Rolle, welchen Wert Sie hier verwenden)

Wenn es um nibs kommt, müssen Sie manuell die Saiten ändern und neu zu ordnen, die Textfelder usw. in jeder Feder.

Hoffe, das hilft!

+0

Ich weiß nicht, ob es wichtig ist, oder ich habe etwas falsch gemacht, aber alle diese Schritte sind korrekt, außer dass ich es nicht zum Arbeiten bringen konnte, indem ich die Zeichenkettendatei "Localization.strings" nannte. Aber als ich "Localizable.strings" stattdessen verwendet habe, hat es perfekt funktioniert. – Katie

+0

Guter Ort .. Ich bearbeitet. –