C++ 如何翻译Qt'中的性别代词;s-QTranslator

C++ 如何翻译Qt'中的性别代词;s-QTranslator,c++,qt,internationalization,qt4,C++,Qt,Internationalization,Qt4,我正在看一个开源的QT4游戏(),它使用QTranslator进行国际化。然而,每一个提到玩家的短语都使用男性代词(“他的手”、“他的牌组”、“他做什么什么什么的”,等等) 我解决这个问题的第一个想法是用一个设置为正确的性别代词的变量替换“his”或“he”的每个实例,但我不知道这会如何影响翻译。但对于翻译/国际化,这可能会中断,特别是如果代词的性别影响短语的其余部分 以前有其他人处理过这种问题吗?至少用简单的语言(比如英语,在这种情况下)能把代词和短语分开吗?翻译文件是否必须包含每个性别代词的

我正在看一个开源的QT4游戏(),它使用QTranslator进行国际化。然而,每一个提到玩家的短语都使用男性代词(“他的手”、“他的牌组”、“他做什么什么什么的”,等等)

我解决这个问题的第一个想法是用一个设置为正确的性别代词的变量替换“his”或“he”的每个实例,但我不知道这会如何影响翻译。但对于翻译/国际化,这可能会中断,特别是如果代词的性别影响短语的其余部分

以前有其他人处理过这种问题吗?至少用简单的语言(比如英语,在这种情况下)能把代词和短语分开吗?翻译文件是否必须包含每个性别代词的每个短语的副本?(至少翻倍翻译文件的大小)

当前设置的一些示例代码:

呼叫来源:

case CaseNominative: return hisOwn ? tr("his hand", "nominative") : tr("%1's hand", "nominative").arg(ownerName);
case CaseGenitive: return hisOwn ? tr("of his hand", "genitive") : tr("of %1's hand", "genitive").arg(ownerName);
case CaseAccusative: return hisOwn ? tr("his hand", "accusative") : tr("%1's hand", "accusative").arg(ownerName);
英文翻译文件:

  <message>
    <location filename="../src/cardzone.cpp" line="51"/>
    <source>his hand</source>
    <comment>nominative</comment>
    <translation type="unfinished"></translation>
</message>

他的手
主格的
可能拆分:

tr("his hand")
进入:

然后翻译“他的”、“她”、“它”。。。分别地。 但是在像意大利语这样的语言中会有一些问题,其中有个人后缀

备选方案:

tr("his hand");
tr("her hand");
//...
把它们都翻译过来

编辑:显示的第二种选择也用于许多其他游戏(如oolite,…),因为这是确保在其他语言中不会出现问题(如后缀而不是前缀…)的唯一方法


顺便说一句,当Konami或任天堂意识到你正在创建一个开源游戏时,他们会怎么说呢/口袋妖怪游戏场?没有人会买他们的卡:-P

注意,在某些语言中,性别取决于拥有的对象,而不是所有者。法语就是这样一种语言。
tr("his hand");
tr("her hand");
//...