我正在开发和应用并希望翻译一些文本,问题是我想在QML中处理复数形式。
在c ++中,处理复数的方法很简单:
int n = messages.count();
showMessage(tr("%n message(s) saved", 0, n));
并且会毫无问题地翻译
源: https://doc.qt.io/qt-5/i18n-source-translation.html#handling-plurals
当我尝试使用QML时也不行。在仔细审查了一些文献和一些评论后,我发现了一个"解决方案",它实际上是人们报告错误。
var second = qsTr("%b radios", "0", map.radio).arg(map.radio)
当我lupdate时,在QtLinguistic中,出现了复数和单数形式的两个字段,但在应用程序中不起作用。
我尝试了几项修改,例如:
var a = map.totalSongs;
var first = qsTr("%a songs", "0", parseInt(a))
var second = qsTr("%b radios", "0", map.radio)
var first = qsTr("%a songs", "0", parseInt(a)).arg(map.totalSongs)
var second = qsTr("%b radios", "0", map.radio).arg(map.radio)
var first = qsTr("%a songs", "0", a)
var second = qsTr("%b radios", "0", b)
在QtLinguistic im写作翻译:
%b radio - Singular
%b radios - Plural
任何修改都无效。
有人可以告诉我如何使用qstr()来处理复数吗?
其他相关问题: 让我们说我想要一个文本"%1首歌曲 - %2无线电",其中西班牙语应该导致
//As example
if(%1 = 10 && %2 = 10) => "10 canciones - radios"
else if(%1 = 1 && %2 = 10) => "1 cancion - 10 radios"
else if(%1 = 10 && %2 = 1) => "10 canciones - 1 radio"
怎么做?我认为qstr()或tr()无法处理这种情况。,但只想与你们核实:D
提前致谢
答案 0 :(得分:3)
我无法接受这不起作用,所以我更进一步寻找解决方案,似乎很明显,但我不这么认为。
无效
var a = map.totalSongs;
var first = qsTr("%a songs", "0", a)
有效,因为我们使用变量N
var n = map.radio;
var first = qsTr("%n songs", "0", n)