自定义一个游戏的语言
一个游戏带着它作者把它翻译成的那些语言交付。在游戏编辑器的 语言 标签页上,你可以覆盖那些字符串、修一处翻译、调整措辞以匹配你的产品,或添加一个游戏没交付的语言,而这个改动应用到渲染出的游戏上。
语言自定义从 Alpha 套餐起可用(Alpha、Troop、Apex)。
设置语言字符串
在一个站点密钥(或团队)的 游戏 页上打开游戏,然后是 语言 标签页。游戏提供的每种语言是一个预设,每个预设是一组命名的字符串(游戏内的标签和消息)。编辑你想改的那些字符串;其余的留着,它们就保持游戏的内置措辞。
语言字段始终是纯文本。除了词语,没有别的可挑。
一种语言在运行时如何被选中
每个语言预设携带一个 语言标签(en、es、fr 等等),预设按那个标签分组。挑一个分两个阶段发生。
先是组件决定要请求哪种语言:
- 组件的
locale属性,如果页面设了一个(明确的作者意图)。 - 否则,访客的浏览器语言(他们偏好语言中的第一个)。
- 否则什么都没有,服务器回退到游戏的默认。
然后服务器在合并你的覆盖之后(站点密钥盖过团队、团队盖过游戏的内置集合),按这个顺序把那种语言与预设匹配:
- 一个精确的标签匹配(
pt-BR找到pt-BR预设)。 - 基础语言(
pt-BR回退到一个pt预设)。 - 你标为 默认 的那个预设。
- 游戏的第一个预设。
所以一个带任何预设的游戏总是渲染出真实文本,绝不渲染原始的键。你在编辑器里把每种语言里的一个预设标为默认。
在 <caputchin-game> 元素上你还可以传一个内联的 locale 对象:一个写作属性值的 JSON 对象,例如 locale='{"start":"Go!"}'。组件把它作为那次挂载的语言信号发给服务器,服务器解析它并把它叠在解析出的预设之上,于是你的内联字符串胜过上面的一切(包括你的团队和站点密钥覆盖)。它是你自己标记的一个属性,所以它在任何套餐上都能用。复选框式的 <caputchin-widget> 不接受一个内联 locale;它的 locale 属性只接受一个语言标签或预设名。这种逐嵌入的撰写为什么免费,见 我们的理念。
文本方向(从左到右或从右到左)自动从语言标签派生,所以一种从右到左的语言无需额外设置就能正确渲染。
添加或扩展一种语言
你可以扩展游戏交付的任何语言:新预设从你扩展的那个继承每一个字符串,而你只覆盖你改的那些。要添加一个游戏没交付的语言,就用那种语言的标签创建一个预设并填入字符串。
什么适用,以及在哪里
语言覆盖在服务器上解析,最具体者胜:一个站点密钥的预设胜过团队的预设,团队的预设又胜过游戏的内置语言。访客的浏览器语言选中他们看到哪个解析出的预设。