2016-01-25 13 views
16

有人可以爲字符串/本地化解釋xliff:g如何使用Android xliff:g

據我所知,xliff:g不應該翻譯<>內的任何東西,但我很困惑我該如何在代碼中使用它。

一個例子,我有我的情況是實踐西班牙語翻譯,我有有:

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

我現在試圖讓本地化與xliff:g字符串工作。 什麼是id這是什麼?它有什麼作用?它叫什麼?

又是什麼%d它有什麼作用? example是什麼意思?另外,如果有的話,我會如何將它稱爲代碼?

爲什麼不能有人只是將下面的代碼插入下面的XML:

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

成Java像這樣:

getString(R.string.quant) + quantity 

所以這樣它concactenates數量可變進getString ?在你的榜樣

回答

24

小錯字,應該有一個關閉標籤:該id屬性只是用來識別替代參數表示的含義

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

(在你的情況下,它代表的數量)。就像你說的那樣,一個音符,而不是以編程方式實際使用。

也就是說,在Android Studio中,如果您爲字符串啓用了代碼摺疊,則它會在顯示摺疊字符串時替換ID。你會看到這樣的:

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

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

至於你的第二個問題,爲什麼不直接使用字符串連接?在其他語言中,替換可能不會在字符串的末尾進行。你可能有這樣的事情:

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

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

所以你可以看到,在這種情況下,只需追加串在一起,不會給你一個有效的結果。

+0

對不起。我手工輸入它。它在實際的xml中是正確的:p –

+0

另外我打算連接java,而不是xml。所以基本上在xml中有翻譯的字符串,然後連接java中的值。 –

+0

同樣,這不起作用,因爲在我的例子中,替代參數處於不同的位置(例如3個項目vs 3個項目)。 – kcoppock