首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何翻译Qt's QTranslator中的性别代词

如何翻译Qt's QTranslator中的性别代词
EN

Stack Overflow用户
提问于 2011-03-16 09:34:48
回答 1查看 446关注 0票数 7

我正在看一个开源的QT4游戏(http://cockatrice.de),它使用QTranslator进行国际化。然而,每一个涉及玩家的短语都使用男性代词(“他的手”,“他的牌”,“他做某事”等)。

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

以前有没有其他人解决过这种问题?有没有可能至少在简单的语言(比如英语)中把代词和短语分开呢?翻译文件是否必须包含每个性别代词的每个短语的副本?(至少是翻译文件大小的两倍)?

下面是它当前设置的一些示例代码:

调用源:

代码语言:javascript
复制
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);

英文翻译文件:

代码语言:javascript
复制
  <message>
    <location filename="../src/cardzone.cpp" line="51"/>
    <source>his hand</source>
    <comment>nominative</comment>
    <translation type="unfinished"></translation>
</message>
EN

回答 1

Stack Overflow用户

发布于 2011-03-20 19:24:05

也许可以拆分:

代码语言:javascript
复制
tr("his hand")

进入:

代码语言:javascript
复制
tr("his").append("hand")

然后把“他的”,“她的”,“它的”...分开来看。但是在像意大利语这样有人称后缀的语言中会有一些问题...

替代方案:

代码语言:javascript
复制
tr("his hand");
tr("her hand");
//...

并把它们全部翻译出来。

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

顺便说一句,当Konami或任天堂意识到你正在创建一个开源的Yu-Gi-Oh!/Pokemon竞技场时,他们会说什么?没有人会买他们的卡:-P

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5320063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档