我正在看一个开源的QT4游戏(http://cockatrice.de),它使用QTranslator进行国际化。然而,每一个涉及玩家的短语都使用男性代词(“他的手”,“他的牌”,“他做某事”等)。
我解决这个问题的第一个想法是用一个设置为正确的性别代词的变量来替换“他的”或“他”的每个实例,但我不知道这会对翻译产生什么影响。但对于翻译/国际化,这可能会中断,特别是如果代词的性别影响到短语的其余部分。
以前有没有其他人解决过这种问题?有没有可能至少在简单的语言(比如英语)中把代词和短语分开呢?翻译文件是否必须包含每个性别代词的每个短语的副本?(至少是翻译文件大小的两倍)?
下面是它当前设置的一些示例代码:
调用源:
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>发布于 2011-03-20 19:24:05
也许可以拆分:
tr("his hand")进入:
tr("his").append("hand")然后把“他的”,“她的”,“它的”...分开来看。但是在像意大利语这样有人称后缀的语言中会有一些问题...
替代方案:
tr("his hand");
tr("her hand");
//...并把它们全部翻译出来。
编辑:显示的第二个选项也用于许多其他游戏中(如oolite,...),因为这是确保不会出现问题的唯一方法(如后缀而不是前缀...)在其他语言中。
顺便说一句,当Konami或任天堂意识到你正在创建一个开源的Yu-Gi-Oh!/Pokemon竞技场时,他们会说什么?没有人会买他们的卡:-P
https://stackoverflow.com/questions/5320063
复制相似问题