在http://doc.qt.io/qt-5/qstring.html#arg中关于QString的文档说:
使用arg()函数的优点是,与sprintf()相比,编号占位符的顺序可以更改,如果应用程序的字符串被翻译成其他语言,但每个arg()仍将替换最低编号的未替换占位符,无论它出现在哪里。
这是什么意思?请给出一个例子进行解释。
在http://doc.qt.io/qt-5/qstring.html#arg中关于QString的文档说:
使用arg()函数的优点是,与sprintf()相比,编号占位符的顺序可以更改,如果应用程序的字符串被翻译成其他语言,但每个arg()仍将替换最低编号的未替换占位符,无论它出现在哪里。
这是什么意思?请给出一个例子进行解释。
int day = 1;
int month = 12;
int year = 2010;
QString dateString = QString(tr("date is %1/%2/%3")).arg(month).arg(day).arg(year);
// dateString == "date is 12/1/2010";
使用德语翻译“日期是:%3.%2.%1”:dateString = “日期是:2010.12.1”
QString(...)
是完全多余的。 - SlySven假设我们从以下内容开始:
QString format("%1: %2 %3);
然后调用:
format.arg("something");
新的格式为:
"something: %1 %2"
这意味着您可以逐步构建字符串。
通过Qt的翻译机制,可以改变位置标记的顺序,例如:
format = tr("Hi, %1, I hope you are %2");
并将其添加到您的翻译表中,对于不同的语言,参数顺序也有所不同。
补充sje397的回答:
在国际化应用程序时,您可以有这样一个字符串:
QString formatInAnOtherLanguage("%3 %1 %2");
formatInAnOtherLanguage.arg("something");
formatInAnOtherLanguage将会是
"%3 something %2"