Internationalization 它';有可能是i18n和Inform 7

Internationalization 它';有可能是i18n和Inform 7,internationalization,inform7,Internationalization,Inform7,如果我想让我的故事能够以多种语言播放,有没有办法从故事中“提取”文本,以便将其翻译成英语以外的其他语言 我想的是java web应用程序中的属性文件。不太可能。Inform 7编译器自己做了一些工作:当它将代码翻译为Inform 6时,它会将生成的代码中的所有字符串文本提取为常量指令。但是编辑生成的代码只是自找麻烦,除非你100%确定游戏已经完成,并且永远不会在I7中编辑 您可以尝试通过将所有字符串文字移动到替换短语来手动国际化游戏。因此,不是: Home is a room. "This is

如果我想让我的故事能够以多种语言播放,有没有办法从故事中“提取”文本,以便将其翻译成英语以外的其他语言


我想的是java web应用程序中的属性文件。

不太可能。Inform 7编译器自己做了一些工作:当它将代码翻译为Inform 6时,它会将生成的代码中的所有字符串文本提取为
常量
指令。但是编辑生成的代码只是自找麻烦,除非你100%确定游戏已经完成,并且永远不会在I7中编辑

您可以尝试通过将所有字符串文字移动到替换短语来手动国际化游戏。因此,不是:

Home is a room. "This is your house."
你应该:

Home is a room. "[home description]".

To say home description: say "This is your house."
然后,您可以将所有这些“要说”的定义放在扩展中,并通过创建扩展的翻译版本来本地化游戏

然而,这些替换只对输出有效。要国际化与播放器输入相匹配的文本(如对象名称、主题和动词语法),需要将相关定义和规则移动到扩展中

例如,对于对象名称:

[in the main game code]
The widget is a thing. It is privately-named.

[in the English extension]
Understand "widget" as the widget.
请注意,在匹配玩家输入时,使用“private named”可以阻止Inform使用对象的源代码名,因为您不希望在翻译的游戏中匹配英文名称