2016-01-25 11 views
16

Qualcuno può spiegare lo xliff:g per stringhe/localizzazione.Come utilizzare Android xliff: g

Capisco che lo xliff:g non debba tradurre nulla all'interno delle cose <>, ma sono confuso da come esattamente lo userei nel codice.

Un esempio che ho nel mio caso è la pratica traduzioni in spagnolo che ho ha:

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

Ora sto cercando di ottenere stringhe con xliff:g per lavorare localizzato. Che cos'è id qui e cosa fa? E come si chiama?

Inoltre cos'è %d e cosa fa? Qual è il punto di example? Inoltre, come lo chiamerei codice, se non del tutto?

Perché qualcuno non può solo fare il seguente codice per inserire il seguente codice XML:

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

in Java in questo modo:

getString(R.string.quant) + quantity 

in modo che modo si concactenates la variabile quantità nella getString ?

risposta

24

errore di battitura minore nel tuo esempio, ci dovrebbe essere un tag di chiusura:

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

L'attributo id è solo utilizzato per identificare ciò che la sostituzione di parametro rappresenta (nel tuo caso, essa rappresenta la quantità). È come hai detto tu, una nota, e non effettivamente utilizzata a livello di programmazione.

Detto questo, in Android Studio, se si dispone di Code Folding abilitato per le stringhe, esso verrà sostituito nell'ID quando mostra la stringa compressa. Vedreste qualcosa di simile:

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

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

Per quanto riguarda la seconda domanda, perché non basta usare concatenazione di stringhe? In altre lingue, la sostituzione potrebbe non andare alla fine della stringa. Si potrebbe avere qualcosa di simile:

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

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

Così si può vedere che in questo caso, semplicemente aggiungendo le stringhe insieme non si darebbe un risultato valido.

+0

Mi dispiace. L'ho battuto a mano. È corretto nel xml attuale: p –

+0

Inoltre intendevo concatenare java, non l'xml. Quindi in pratica hanno la stringa tradotta nell'xml e quindi concatenano il valore in java. –

+0

Anche in questo caso, ciò non funzionerebbe poiché nel mio esempio, il parametro di sostituzione si trova in una posizione diversa (ad esempio 3 articoli vs articoli: 3). – kcoppock