Ich habe einen Teil meiner Anwendung lokalisiert, indem ich ein base.lproj-Storyboard und 3 String-Dateien dafür erstellt habe. Es war vor einem Monat und danach habe ich der App einen neuen Ansichts-Controller hinzugefügt, aber die Schaltflächen und Beschriftungen dieses Controllers werden nicht in Zeichenfolgendateien angezeigt
Ist es möglich, diese 3 an das Storyboard angehängten String-Dateien zu aktualisieren, oder muss ich mithilfe von NSLocalizableString und Localizable.strings programmgesteuert neue String-Übersetzungen hinzufügen?
Antworten:
Es gibt zwei Möglichkeiten:
Option 1
Xcode kann die Datei "neu laden", indem die Datei entweder in einen Dateityp [Interface Builder Cocoa Touch Storyboard] oder einen Dateityp [Localizable Strings] konvertiert wird .
Option 2
Verwenden Sie ibtool, um die Zeichenfolgen in Ihrem Storyboard zu extrahieren.
Öffnen Sie die Terminal-Anwendung
Suchen Sie Ihr Base.lproj-Verzeichnis
Verwenden Sie diese Zeile, um die Zeichenfolgen zu extrahieren:
ibtool MainStoryboard.storyboard --generate-strings-file file_name.strings
Nachdem ibtool die Zeichenfolgen in file_name.strings extrahiert hat, können Sie sie kopieren und in Ihre ursprüngliche .strings-Datei einfügen
Besuchen Sie für weitere Informationen: https://conyac.cc/business/columns/localization_guide_ios
quelle
Schauen Sie sich BartyCrouch an , es löst Ihr Problem perfekt. Außerdem ist es Open Source , wird aktiv gewartet und kann einfach installiert und in Ihr Projekt integriert werden.
Installieren Sie BartyCrouch über Homebrew :
Alternativ können Sie es auch über Mint installieren :
Aktualisieren Sie Ihre Storyboards / XIBs Strings-Dateien schrittweise:
Dies wird genau das tun, wonach Sie gesucht haben.
Um Ihre Storyboards / XIBs Strings-Dateien im Laufe der Zeit auf dem neuesten Stand zu halten, empfehle ich dringend, ein Build-Skript hinzuzufügen (Anweisungen zum Hinzufügen eines Build-Skripts finden Sie hier ):
Zusätzlich zur schrittweisen Aktualisierung Ihrer Storyboards / XIBs-Strings-Dateien wird dadurch auch sichergestellt, dass Ihre
Localizable.strings
Dateien mit neu hinzugefügten Schlüsseln im Code aktualisiert bleibenNSLocalizedString
und Warnungen für doppelte Schlüssel oder leere Werte angezeigt werden.Weitere Informationen finden Sie unter BartyCrouch auf GitHub oder in diesem ausführlichen Artikel .
quelle
Sie können Ihrer Lokalisierungsdatei manuell einen Schlüssel hinzufügen. Sie finden das Schlüsselobjekt, indem Sie es im Storyboard-Editor auswählen. Werfen wir einen Blick
Object-ID
in den Identitätsinspektor. Es sieht so aus"nwc-b2-19c"
Aktualisieren Sie Ihre Lokalisierung oder fügen Sie eine Übersetzung hinzu. Zum Beispiel :
quelle
Dieser ist nicht jedermanns Sache, erfordert jedoch keine zusätzlichen Werkzeuge im Terminal und ist für kleine manuelle Änderungen einfach. (Berücksichtigen Sie dies nicht, wenn Sie Ihren Prozess automatisieren möchten.)
Schritt 0: Einrichtung der Storyboard-Sprache
Dieser Schritt wird nur einmal ausgeführt.
Wenn ich jetzt etwas zum Storyboard hinzufüge, mache ich Folgendes
Schritt 1: Fügen Sie die englische lokalisierbare Zeichenfolgendatei hinzu
Markieren Sie einfach die englische Werbebuchung.
Dadurch wird eine völlig neue englisch lokalisierbare Zeichenfolgendatei mit allen Zeilen erstellt
Schritt 2: Kopieren Sie die neuen Werbebuchungen in die anderen Sprachdateien
und übersetze sie
Schritt 3: Deaktivieren Sie Englisch und entfernen Sie die entsprechende lokalisierbare Zeichenfolgendatei
Die Datei wurde nur benötigt, um die neuen Werbebuchungen abzurufen
Dies ist ein einfacher und schneller Vorgang, alles wird im Storyboard-Editor erledigt
Bearbeiten:
Dieser Prozess funktioniert sehr gut mit kleinen Storyboards. Zum Beispiel habe ich ein auf Registerkarten basierendes Projekt und für jede Registerkarte ein Storyboard.
Suchen Sie nach "Storyboard-Referenz", um Tutorials zu finden.
Gutes Beispiel: Storyboard-Referenz in Xcode, wo sollen wir sie verwenden?
Jedes kleine Storyboard muss also nur wenige Zeichenfolgen lokalisieren.
quelle
Schließlich bestand meine Lösung darin, die vorherigen Übersetzungen (rudimentär, aber effektiv) zu kopieren und in eine neue Datei einzufügen, die durch Deaktivieren und Aktivieren des Kontrollkästchens Lokalisierungssprache erstellt wurde.
Dies wäre in einigen Fällen wie meinem nützlich, wenn Sie nur einen oder zwei Texte ändern müssen.
quelle
Ich denke, der beste Weg ist die Verwendung integrierter Export / Import-Lokalisierungen:
PS Wenn Sie nicht im XLIFF-Editor bearbeiten möchten und Schritt 3 übersprungen haben, kann XCode keine neuen Zeichenfolgen speichern. Öffnen Sie in diesem Fall .xliff im XLIFF-Editor, speichern Sie es ohne Änderungen erneut und importieren Sie eine neue Datei.
quelle
/* Class = "UILabel"; text = "a basic text"; ObjectID = "HFW-aN-MTb"; */
, die neue Bezeichnung wird jedoch NICHT in der Datei Main.strings erstellt. Dann habe ich die .xliff-Datei bearbeitet, um eine Übersetzung für das neue Label hinzuzufügen. Ich habe es wieder importiert. Das neue Label wird jetzt in die Datei Main.strings eingefügt.Wenn Sie in Ihr Storyboard klicken, z. B. Main.storyboard ... Auf der rechten Seite sehen Sie das Lokalisierungsmenü (siehe beigefügtes Bild). Wenn Sie eine Linguage deaktivieren und erneut aktivieren, wird die Datei erneut generiert. Normalerweise kopiere ich den Inhalt, generiere die Datei erneut und füge dann den Inhalt ein, den ich kopiert habe und der bereits übersetzt wurde.
Auf diese Weise aktualisiere ich das Wörterbuch.
quelle
Ich habe dort ein riesiges Storyboard mit vielen Strings. Zwei Sprachen basieren auf Englisch und einem weiteren Arabisch. Die Aufgabe bestand darin, dem Storyboard einige Felder und Beschriftungen hinzuzufügen und diese ohne Skripte und NSLocalizableStrings zu lokalisieren.
Für mich hat als nächstes geholfen:
Erstens : Stellen Sie sicher, dass Sie Git haben, um unerwartete Änderungen zu verhindern.
Editor
->Export For Localization...
. Speichern Sie die Datei ar.xliff irgendwo.quelle
Es gibt
eine App,ein Befehlszeilentool von Apple namens AppleGlot , das die inkrementelle Lokalisierung unterstützt. Ich habe es noch nicht ausprobiert, aber es sieht genauso aus wie das Tool, nach dem Sie gesucht haben (vor einiger Zeit).quelle
appleglot
Tool arbeitet mit endgültigen Anwendungspaketen. Es ist ein völlig anderer Ansatz für Übersetzungsanwendungen.Hier ist ein Skript, mit dem Sie Zeichenfolgen aus Storyboards und Xibs extrahieren und mit vorhandenen Übersetzungen zusammenführen können.
Um das Skript beim Erstellen eines Projekts automatisch auszuführen, legen Sie das Skript in Ihrem Projektstammverzeichnis ab und fügen Sie einer Zielerstellungsphase in Ihren Projekteinstellungen eine Phase " Skript ausführen" mit der folgenden Zeile hinzu.
Sie können das Skript auch manuell auf dem Terminal ausführen, wenn Sie möchten.
Das Skript wird ausgeführt,
ibtool
während Tha Leang antwortete. Es wird auch ausgeführtgenstrings
, um Zeichenfolgen zu extrahieren und zusammenzuführen, dieNSLocalizedString
in Ihrem Quellcode markiert sind . Das Skript basiert auf einem Skript in diesem Beitrag , das Zeichenfolgen nach dem Ausführen zusammenführtgenstrings
.quelle
Der einfachste und weniger riskante Ansatz besteht darin, einfach die Objekt-ID aus dem Storyboard zu kopieren und einen neuen Schlüssel für den Schlüssel in der lokalisierten Datei hinzuzufügen, wie im folgenden Beispiel dargestellt:
1: Kopieren Sie die Objekt-ID wie folgt aus dem Storyboard für die Komponente:
2: Fügen Sie einen neuen Schlüssel in die lokalisierte Datei wie folgt hinzu:
Hinweis: Dies ist ein weniger riskanter Ansatz, wenn Sie nur wenige Komponenten aktualisieren möchten. Andernfalls können Sie eine lokalisierte Datei für das Storyboard neu erstellen.
quelle
Xlifftool ist als Mac-App verfügbar und funktioniert gut. Es zeigt alle übersetzbaren Zeichenfolgen und Objekte aus info.plist, lokalisierbaren Zeichenfolgen und dem Storyboard.
Laden Sie es hier für den Mac herunter: https://itunes.apple.com/lv/app/xlifftool/id1074282695?mt=12
Schritt 1: Wählen Sie in Xcode Ihren Projektordner im Projektnavigator aus. Wählen Sie dann Editor / Export für Lokalisierung ...
Ihre übersetzbaren Zeichenfolgen werden in einer xliff-Datei in der Sprache enthalten sein, die Sie für die Lokalisierung in Xcode ausgewählt haben.
Schritt 2: Öffnen Sie diese Datei mit xlifftool und übersetzen oder aktualisieren Sie Ihre Übersetzungen, die dort zuvor durchgeführt wurden.
Schritt 3: Laden Sie dann mit Editor / Import Localizations wieder in Ihr Projekt hoch ...
quelle
Dies ist meine einfache Möglichkeit, neuen Text von Storyboard oder XIB auf Lokalisierungszeichenfolge zu aktualisieren
1- Verwenden Sie dieses Skript http://tredje.se/dev/trouble/?x=entry:entry150917-204052
2- Wählen Sie Ihre Lokalisierungszeichenfolge aus , die Sie aktualisieren möchten, und wechseln Sie Ihre Sprachzeichenfolge von "Lokalisierungszeichenfolge" zu "Interface Builder Storyboard".
3- schalte es zurück :)
Getan.
quelle
Option 1
Xcode kann die Datei neu laden, indem die Datei entweder in einen
[Interface Builder Cocoa Touch Storyboard]
Dateityp oder einen[Localizable Strings]
Dateityp konvertiert wird .Wählen Sie Ihre Basis-Storyboard-Datei im Projektnavigator aus. Suchen Sie den Abschnitt Lokalisierung im Dateiinspektor . Wenn Ihre Datei derzeit eine ist
[Localizable Strings]
, ändern Sie sie in[Interface Builder Cocoa Touch Storyboard]
oder umgekehrt.Xcode sollte Ihr Storyboard auf die aktuelle Version konvertiert haben und dabei Ihre alten Lokalisierungsbemühungen beibehalten. Hier können Sie die Datei auf den ursprünglichen Dateityp zurücksetzen, wenn Sie möchten.
Option 2
Verwenden Sie diese Option
ibtool
, um die Zeichenfolgen in Ihrem Storyboard zu extrahieren.Öffnen Sie die Terminal-Anwendung.
Suchen Sie Ihr
Base.lproj
Verzeichnis.Verwenden Sie diese Zeile, um die Zeichenfolgen zu extrahieren:
Nachdem ibtool die Zeichenfolgen extrahiert hat
file_name.strings
, können Sie sie kopieren und in Ihre Originaldatei einfügen.strings
.quelle