Qt中多个复数的本地化

时间:2018-08-17 06:41:16

标签: qt

对于一个简单的句子,我可以使用%n来生成复数的本地化规则。例如。 showMessage(tr("%n message(s) saved", "", msgCount));。在Qt中,我还可以使用%1%2等来翻译带有位置参数的文本,例如showMessage(tr("file %1 was copied to directory %2").arg(fileName).arg(dirPath));

有没有一种方法可以将这两种方法结合起来用于包含多个复数的句子showMessage(tr("found %n1 file(s) in %n2 directorie(s)").arg(fileCount).arg(dirCount));?请注意,我只是组成了这些%n1%n2,我知道这可能并非如此。还是?还是我必须以某种方式将较复杂的句子拆分为较简单的术语,然后将复数形式一一翻译?

1 个答案:

答案 0 :(得分:0)

在对这个问题进行了更彻底的思考之后,我想我是胡说八道。这是一个组合问题。如果有2个可以单数或复数形式的术语,我们将需要提供2 x 2 = 4个翻译。如果有3个术语,则为9个。但是在某些语言中,存在更多形式的复数形式(“ paucal”或其他形式),因此组合的数量将迅速激增。我相信这就是为什么我找不到此问题的Qt API的原因。如果您知道一些技巧,请告诉我。我想出的唯一解决方案是以一种巧妙的方式分割文本并按每个部分进行翻译。