Vic*_*nte 4 internationalization inform7
如果我希望我的故事可以使用多种语言播放,是否有任何方法可以从故事中“提取”文字以将其翻译成英语以外的其他语言?
我在想什么,就像Java Web应用程序中的属性文件一样。
并不是的。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使用对象的源代码名称,因为您不希望英文名称在翻译的游戏中匹配。