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