设计非特定语言应用程序,例如规划本地化

时间:2010-08-26 06:31:53

标签: localization internationalization

制作了这个社区维基:3

我正在开发一个基本的RPG,我从一开始的目标之一是确保我的程序是非特定语言的。基本上,在我设计或开始编程任何菜单之前,我想确保我可以加载并使用支持的语言显示它们,这样我就不会对值进行硬编码。

(这将使我免受许多移民的影响)

对于这个例子,让我们使用西方的从左到右的语言。英语,西班牙语,德语,法语,意大利语。

这是我所拥有的基本例子。
一个XML文件包含对话的映射和设计。

<conversation>
<dialog>line1</dialog>
<dialog>line2</dialog>
</conversation>

其他XML文件包含定义。

<mappings language="English">
<line1>This is line 1 in English!</line1>
<line2>Other lines are contained in language-separated xml files</line2>
</mappings>

嘿。除了我忘记了英语不会将性别分配给他们的语言,而其他语言也这样做的事实,这将是很有效的。所以,如果一个句子可能足够英语,我可能需要用其他语言的两个句子,一个用于覆盖男性时态,另一个用于覆盖女性时态。

解决这个问题最常用的方法是什么?现在,我已经考虑过制作不同的映射表,一个用于男性紧张的句子,而另一个表格只用于女性时态。或者只是阅读不同的定义表。

另一个踢球者将基于我的游戏数据设计。我从来没有想过,但我可能需要在我的游戏项目和角色中存储他们的性别,以便我可以使用正确的句子。然而,其他语言也可能有他们自己需要考虑的特定怪癖(不过幸运的是,据我所知,意大利语和西班牙语相对相似,法语可能也是如此。)

所以,显然这是我面前的一项艰巨任务。我应该考虑哪些其他设计考虑因素?是的,我认为静态类最容易。在启动时配置所选语言,输入输入并希望返回一个字符串。

任何想法(想要提出想法:P)

2 个答案:

答案 0 :(得分:0)

至于性别,您可以尝试鼓励翻译人员使用非性别特定的翻译(这通常可以在商业应用程序中使用,但在这里可能是不可能的。)

您可能也遇到过其他地方的问题。其他(非英语)语言具有多种复数形式。例如:“你的团队获得了2把剑”。无论你实际收到多少剑,无论是5或1000,用英语,你总会得到一个复数句子。但在许多语言中并非如此。

答案 1 :(得分:0)

有两种方法可以解决这个问题:蛮力并试图变得聪明。蛮力意味着编写每个可能的行并将其包含在XML文件中。这是很多工作,但它会奏效。

尝试聪明地进入深水,相当快,特别是如果你试图涵盖很多语言。

您需要保留有关字符的更多信息而不是性别。例如,在俄语中,根据您是非正式的还是正式的(或与多个人交谈),有不同的词语意为“你”,动词结尾也是不同的。根据形式,有“请通过面包”的不同翻译。在其他语言中,正确的翻译取决于社会地位。

正如pawel_dyda指出的那样,有一些问题,有单数,复数和可能是双重的情况。其他语言也使用不同的单词顺序:“箭头每个都是X铜币,因此要购买Y箭头,你需要Z银”可能需要你跟踪数字的顺序。

Visual C ++和MFC带有实际上相当不错的国际化设施。您将字符串保存在资源文件中,并且可以替换数字等,同时保持订单不同的语言。

在网络上查找“国际化”(通常缩写为“i18n”)。那里有很多东西。

相关问题