Kann ich den link ein uilabel, um eine lokalisierbare Zeichenfolge im Interface Builder?
habe gegoogelt, aber keine Lösung gefunden:
Grundsätzlich habe ich eine Lokalisierbare.Saiten set, die ich verwende in meinem code. Allerdings wäre es wirklich lieb, wenn ich irgendwie könnte, nur beziehen sich diese Werte in meinem XIB ' s auch, so dass ich vermeiden kann, dass Sie eine lästige XIB pro Sprache...
Ist das möglich?
Wenn Sie denken (wie ich), dass die Lokalisierung Ihrer IB Dateien mit dem ibtool oder durch die Verknüpfung Ihrer Komponenten in code zu Komplex ist, überprüfen Sie heraus diese Bibliothek: github.com/angelolloqui/AGi18n, Es fügt nur einige Magie, um translate alle Elemente Laufzeit: transparent für den Entwickler, und bietet auch einige Befehle zum extrahieren der Etiketten von Ihrem IB-Dateien in der Localizable.strings für jede Sprache. HAFTUNGSAUSSCHLUSS: ich bin der Entwickler der Bibliothek
InformationsquelleAutor Mathias | 2011-09-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man implementieren Sie eine Unterklasse von UILabel und haben es automatisch ziehen Sie den lokalisierten Wert, wenn es initialisiert wird, die aus der Feder.
In der XIB-Sie würden dann einfach die token (oder englischen text, wenn Sie bevorzugen) und haben UILabel ziehen Sie den lokalisierten text aus diesem Wert.
eine Unterklasse von UILabel pro lokalisierbare label vielleicht habe ich in meiner app? Das klingt ein wenig overkill für mich :-S
Ich glaube, Sie hat nicht bekommen, was Claus vorschlägt : sollten Sie nur tun, ein UILabel Unterklasse, die in awakeFromNib wird der text dann haben Sie das label an, und verwenden Sie es als Schlüssel, um die lokalisierte Zeichenfolge automatisch. Ich habe gerade implementiert und es funktioniert perfekt. Dies sollte wirklich die akzeptierte Antwort !
Base-Internationalisierung stellt eine Möglichkeit zur Vermeidung von Unterklassen UILabel für die Lokalisierung Zwecke.
Ich denke, dies ist genauer: rshankar.com/...
InformationsquelleAutor Claus Broch
Präsentiere ich Euch die swifty Weg
1. Erstellen Sie eine Unterklasse von UILabel
2. Legen Sie die class zu werden LocalizedLabel in IB
3. Geben Sie Ihren Schlüssel aus Lokalisierbar.strings direkt in IB
Voila, nun verbringen Sie weniger Zeit auf die Erstellung nutzlos IBOutlets nur dafür, dass es eine lokalisierbare UILabel.
HINWEIS
Dies nicht machen, wird die lokalisierte Zeichenfolge Karte in den interface builder, sondern nur die "wichtigsten". So beim Bau der TextView ist, denken Sie daran, Einschränkungen entsprechend
InformationsquelleAutor Ibrahim Yildirim
Gibt es keine Möglichkeit, dann aus der
Localizable.strings
direkt mit den Interface Builder.Der Grund, möchten Sie vielleicht zu übersetzen, die Feder ist, da die Länge der Wörter variieren in jeder Sprache. So dass Sie zum ändern des Layouts Sie nib pro Sprache.
Was Sie könnte legen Sie Sie in den
viewDidLoad
Methode IhrerUIViewController
.Alternativ, wenn Sie nicht wollen, zu haben IBOutlets für jede Ihrer Bezeichnungen, nur um der übersetzungen, Sie können tags verwenden, statt.
Es gibt einen besseren Weg. Schauen Sie sich meine Antwort
Veraltete Antwort. Sie wollen mit Basis Internationalisierung mit auto-layout-constraints.
InformationsquelleAutor rckoenes
NSLocalizedString
hat den Vorteil, dass Sie einfach zu implementieren. Die Gefahr ist, dass Sie möglicherweise vergessen, fügen Sie einen Eintrag für ein neues Gui-element.Können Sie
itool
dump der Text aus der original-xib-Datei, übersetzen Sie diese weggeworfen Streicher und laden Sie dann die übersetzte Zeichenkette in die andere Sprache-xib-Datei.Gibt es einige Vorteile dieser Methode im Vergleich zu
NSLocalizedString
.Beim erstellen einer XIB-setzen Sie ihn auf " lokalisiert (wie zuvor), dann laufen
itool
gegen das original xib zum extrahieren der strings.Übersetzen Sie die strings-Datei in der gewünschten Sprache laden Sie dann die übersetzung in der lokalisierten xib.
Wenn Sie google für
ibtool --generate-strings-file
sollten Sie ein paar tutorials und Beispiele.Die syntax sollte so ähnlich wie:
$xibfile.strings
im Resources/English.lproj-Verzeichnis enthält die original (englische Sprache) Saiten. Die übersetzten$xibfile.strings
gehen muss in der entsprechendenxx.lproj
- Verzeichnis.Wenn Sie das hinzufügen eines buildscripts zu xcode dann das laden der übersetzung genannt werden bei jedem build.
InformationsquelleAutor Olaf
IB nicht verwenden, strings aus Lokalisierbar.strings, aber es gibt auch eine option namens Base-Internationalisierung.
In kurzen: Sie können erstellen Sie separate .strings-Datei im Anhang xib/storyboard für jede gewünschte Sprache. Im Ergebnis haben Sie xib-mit eigenen übersetzungen für jede Sprache. So kann es duplizieren einige der Werte, die Sie haben in
Lokalisierbar.Streicher, aber es ist klarer Weise, als durch den code kopieren oder xib-Dateien.
Entnehmen Sie bitte denApple-Dokumentation über die Base-Internationalisierung.
Dass die Vervielfältigung nicht vermieden werden können? Ich bin ein noob bei iOS, und ich finde Android ist die Lösung für dieses problem viel eleganter. Wenn Sie lokalisieren das storyboard, die Start-Bildschirm und halten Sie ein .strings-Datei, die Sie haben könnten die gleichen Saiten 3 mal. TROCKENE Fehler genau dort.
InformationsquelleAutor skyylex
Kann man dies im code:
Aber ich glaube nicht, dass es einen Weg gibt, es zu tun mit nur Federn, andere als die Lokalisierung der gesamten Feder. Ich habe sicherlich nicht einen anderen Weg gefunden in die Vergangenheit.
Was macht Sie sagen, dass? Dies ist noch möglich
"Ich glaube nicht, dass es einen Weg gibt, es zu tun mit nur Federn, andere als die Lokalisierung des gesamten Feder" ist falsch.
InformationsquelleAutor James Webster
Das von Apple unterstützte Weg, um die Lokalisierung der .xib-Datei. Diese ermöglichen es Ihnen, zu lokalisieren, die den text und das layout für jede Sprache/Land.
InformationsquelleAutor picciano
Anderen swifty Weg, aber mit der Erweiterung :
Dann werden Sie in der Lage zu schreiben, die Lokalisierung Schlüssel direkt von der IB, und es wird lokalisiert, und zur Laufzeit.
InformationsquelleAutor Christophe Boivin
Dies ist meine version. Hoffe, es hilft.
InformationsquelleAutor Tomas Cordoba