誰かが文字列/ローカライズの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>
into Javaのように:
getString(R.string.quant) + quantity
そのようにして、量変数をgetString
に連結しますか?
あなたの例のマイナーなタイプミス、終了タグがあるはずです:
<string name="order_quantity">Cantidad: <xliff:g id="quantity" example="2">%d</xliff:g></string>
id
属性は、置換パラメーターが何を表すかを識別するためにのみ使用されます(この場合、量を表します)。あなたが言ったように、メモであり、実際にはプログラムで使用されていません。
つまり、Android Studioでは、文字列に対してコード折りたたみを有効にしている場合、折りたたまれた文字列を表示するときにIDに置き換えられます。次のように表示されます。
// This...
mTextView.setText(getString(R.string.order_quantity, 2));
// Will show as this when folded:
mTextView.setText("Cantidad: {quantity}");
2番目の質問については、なぜ文字列の連結を使用しないのですか?他の言語では、置換が文字列の最後にない場合があります。次のようなものがあります:
values/strings.xml
<string name="order_quantity">%d items</string>
values-es/strings.xml
<string name="order_quantity">Cantidad: %d</string>
したがって、この場合、文字列を単に追加するだけでは有効な結果が得られないことがわかります。
%dは、メモリの一部を整数として表すために使用されます。次のように、いくつかの数値を標準出力に出力するために最も一般的に使用されます。
#include <stdio.h>
int main()
{
int n = 42;
printf("The answer to life, universe and everything is %d", n);
return 0;
}
数字や文字列などを単純に連結するJavaとは異なり、Cはこの%somethingを使用して、何が書き込まれているかを示します。 %dは、たとえばprintf()で、コンマの後に引数(この場合はn)があり、intとして表されることを示します。
形式指定子の完全なリストについては、 Cプログラミングのすべての形式指定子 のリストを参照してください