2016-01-25 3 views
16

Kann jemand bitte die xliff:g für Zeichenfolgen/Lokalisierung erklären.Wie man Android xliff verwendet: g

Ich verstehe, dass xliff:g nichts in die <> Dinge übersetzen soll, aber ich bin verwirrt, wie genau ich das im Code verwenden würde.

Ein Beispiel, das ich in meinem Fall haben, ist die Praxis spanische Übersetzungen, die ich habe ist:

<string name="order_quantity">Cantidad: <xliff:g id="quantity" example="2">%d/xliff:g</string> 

ich jetzt lokalisiert werden Strings mit xliff:g arbeiten versuche. Was ist id hier und was macht es? Und wie heißt es?

Auch was ist das %d und was macht es? Was ist der Sinn von example? Wie würde ich das überhaupt in Code umschreiben?

Warum kann jemand nur noch der folgende Code die folgende xml einzufügen:

<string name="quant">Quantity: </string> 

in Java wie folgt:

getString(R.string.quant) + quantity 

so auf diese Weise es concactenates die Menge Variable in die getString ?

Antwort

24

Minor Tippfehler in Ihrem Beispiel, sollte es einen schließenden Tag sein:

<string name="order_quantity">Cantidad: <xliff:g id="quantity" example="2">%d</xliff:g></string> 

Das id Attribut nur verwendet wird, um festzustellen, was die Substitution Parameter darstellt (in Ihrem Fall, es stellt die Menge). Es ist wie Sie sagten, eine Notiz, und nicht tatsächlich programmgesteuert verwendet.

Wenn in Android Studio Code Faltung für Zeichenfolgen aktiviert ist, wird in der ID ersetzt, wenn die ausgeblendete Zeichenfolge angezeigt wird. Sie würden so etwas sehen:

// This... 
mTextView.setText(getString(R.string.order_quantity, 2)); 

// Will show as this when folded: 
mTextView.setText("Cantidad: {quantity}"); 

Wie für Ihre zweite Frage, warum nicht einfach String-Verkettung verwenden? In anderen Sprachen wird die Ersetzung möglicherweise nicht am Ende der Zeichenfolge ausgeführt. Sie könnte so etwas wie:

values/strings.xml 
    <string name="order_quantity">%d items</string> 

values-es/strings.xml 
    <string name="order_quantity">Cantidad: %d</string> 

So Sie, dass in diesem Fall sehen können, einfach die Saiten angehängt würden zusammen nicht geben Sie ein gültiges Ergebnis.

+0

Entschuldigung. Ich habe es getippt. Es ist korrekt in der tatsächlichen xml: p –

+0

Auch ich wollte das Java, nicht die XML verketten. Also im Grunde die übersetzte Zeichenfolge in der XML-Datei und dann verketten Sie den Wert im Java. –

+0

Noch einmal, das würde nicht funktionieren, da sich in meinem Beispiel der Substitutionsparameter an einer anderen Position befindet (z. B. 3 Elemente vs. Elemente: 3). – kcoppock

Verwandte Themen