2014-12-10 4 views
11

Ich verwende Base Internationalisierung für XIB/Storyboard-Dateien und die "Export for Localization" -Methode mit XLIFF-Dateien für Übersetzer.Einige XIB/Storyboard-Strings als nicht lokalisierbar markieren

Ich habe einige Beschriftungen, Schaltflächen usw., die Text haben, der übersetzt werden sollte, aber ich habe auch Beschriftungen, wo wir einen Platzhaltertext verwenden (wie ein vollständiger Name), damit Sie sehen können, wie die Ansicht aussehen würde mit Daten gefüllt, aber diese Etiketten haben immer ihren Text kommen von einer Steckdose programmatisch.

Gibt es eine Möglichkeit, die Eigenschaft .text dieses Labels zu markieren, die in der XIB als nicht lokalisierbar festgelegt ist, sodass sie nicht in den XLIFF-Dateien (oder den resultierenden .strings) endet.

Ich weiß, dass ich den Text entfernen kann - ich dachte auch über ein Präfix (wie @ "! DNL!") Zu bedeuten, dass der Übersetzer nicht lokalisieren sollte, aber ich hoffe, dass es nur einen Standard gibt Weg, dies zu tun.

+0

Es sieht aus wie das nicht möglich ist. Ich habe einen Radar gemeldet (19232051) für den Fall, dass jemand in Zukunft auf diese Frage stößt und sehen möchte, ob er umgesetzt wurde. –

Antwort

1

Dies ist jetzt möglich mit dem Befehlszeilenprogramm BartyCrouch, das ich vor kurzem geschrieben habe, um this problem zu lösen (siehe Installationsanweisungen in my answer zu diesem Thread).

BartyCrouch läuft ibtool für Sie und führt zusätzliche Verarbeitung über die resultierende Datei .strings. Es schließt Sichten von der Übersetzung aus, wenn Sie #bc-ignore! in Ihren Wert in Ihrer internationalisierten Storyboard/XIB-Basisdatei aufnehmen.

Bitte überprüfen Sie die related section within the README on GitHub für detaillierte Informationen.

3

Es stellt sich heraus, dass der Lokalisierungsexport von Xcode zugeordnete Zeichenfolgen im Storyboard ignoriert.

Legen Sie einfach den Texttyp für jede Beschriftung/Schaltfläche, die Sie ausschließen möchten, auf Attributed im Attribute Inspector fest.

enter image description here

Dies gibt Ihnen eine zugeschrieben Zeichenfolge anstatt einen einfachen String, der soweit ich weiß, keine Auswirkungen hat, abgesehen von der (leeren) Liste von Attributen, die jetzt im Speicher gehalten werden muss.

2

Ich füge einen Hinweis "DNL" zum Feld "Kommentar für Localizer" in der Registerkarte Identität. Dann laufe ich diesen Befehl, um automatisch alle diese Elemente aus der XLIFF zu entfernen:

xmlstarlet ed -d "//*[contains(text(), 'Note = \"DNL\"')]/.." en.xliff > out.xliff 

Grundsätzlich ist es mit xmlstarlet (die über Homebrew heruntergeladen werden kann), um alle Elemente zu finden, die den Text enthalten Note = "DNL", und dann löschen das übergeordnete Element dieses Elements aus dem XLIFF.

In Kombination mit xcodebuild -exportLocalizations verwenden, können Sie ein ziemlich einfaches Skript machen für Ihre XLIFFs Erzeugung:

xcodebuild -exportLocalizations -localizationPath build -project ProjectName.xcodeproj 
xmlstarlet ed -d "//*[contains(text(), 'Note = \"DNL\"')]/.." build/en.xliff > build/out.xliff 
Verwandte Themen