i18n与Inform 7可能

Vic*_*nte 4 internationalization inform7

如果我希望我的故事可以使用多种语言播放,是否有任何方法可以从故事中“提取”文字以将其翻译成英语以外的其他语言?

我在想什么,就像Java Web应用程序中的属性文件一样。

Jes*_*rew 5

并不是的。Inform 7编译器本身会执行一些操作:将代码转换为Inform 6时,它会Constant在生成的代码中提取所有字符串文字作为指令。但是编辑生成的代码只会带来麻烦,除非您100%确信游戏已完成并且永远不会在I7中进行编辑。

您可以尝试通过将所有字符串文字移至替换短语来手动国际化游戏。所以代替:

Home is a room. "This is your house."
Run Code Online (Sandbox Code Playgroud)

您将拥有:

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

To say home description: say "This is your house."
Run Code Online (Sandbox Code Playgroud)

然后,您可以将所有这些“说”定义放入扩展中,并通过创建扩展的翻译版本来本地化游戏。

但是,这些替换仅适用于output。要国际化与玩家输入匹配的文本(例如对象名称,主题和动词语法),您需要将相关的定义和规则移至扩展名中。

例如,对于对象名称:

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

[in the English extension]
Understand "widget" as the widget.
Run Code Online (Sandbox Code Playgroud)

请注意,在匹配玩家输入时,请使用“私有名称”来阻止Inform使用对象的源代码名称,因为您不希望英文名称在翻译的游戏中匹配。