有人能解释一下字符串/本地化的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因此,它将数量变量连接到getString中
发布于 2016-01-26 08:21:09
在你的例子中有一个小的拼写错误,应该有一个结束标记:
<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}");至于你的第二个问题,为什么不直接使用字符串连接呢?在其他语言中,替换可能不会出现在字符串的末尾。你可以有类似这样的东西:
values/strings.xml
<string name="order_quantity">%d items</string>
values-es/strings.xml
<string name="order_quantity">Cantidad: %d</string>因此,您可以看到,在这种情况下,简单地将字符串附加在一起不会给出有效的结果。
发布于 2019-04-07 10:58:32
%d用于将内存的一部分表示为整数。它最常用于将一些数字打印到标准输出,如下所示:
#include <stdio.h>
int main()
{
int n = 42;
printf("The answer to life, universe and everything is %d", n);
return 0;
}与Java不同,在Java中,您可以简单地连接数字和字符串等,而C使用这个%来表示正在编写的内容。%d表示,例如,在printf()中,逗号后面将有一个参数(在我们的例子中是n),它应该表示为int。
https://stackoverflow.com/questions/35004433
复制相似问题