举个例子,在下面两个不同的语言文件中分别有这么一行:
en_us.lang:
server.help.getgold=You can get gold by selling items and playing games.For example, you may get 500 coins if you win a game of Bed War.#
zh_cn.lang:
server.help.getgold=您可以通过售卖物品、玩小游戏来获得金币。比如当你赢得一局起床战争时,您可能会获得500枚金币。#
我们只需要在需要用到这一串文本的地方放上『server.help.getgold』,游戏就会自动根据不同的语言将这一串本地化键替换成对应语言的文本。
JSON文本内的translate组件就是干这行的。在translate的值内写上本地化键,游戏就会根据不同的语言将对应的内容呈现出来。比如:
{“rawtext“:[{“translate“:“server.help.getgold“}]}
如果你使用的是中文简体,最终这将会输出:『您可以通过售卖物品、玩小游戏来获得金币。比如当您赢得一局起床战争时,你可能会获得500枚金币。』
如果你使用的是美式英语,这反而会输出:『You can get gold by selling items and playing games.For example, you may get 500 coins if you win a game of Bed War.』
现在你明白了吗?
(注:上面这个server.help.getgold本地化键是编的,但接下来的几个本地化键都是真实存在于游戏中的。)
translate的使用肯定没有这么简单,这只是最基础的用法而已。有时候,本地化键对应的文本内会有一些特殊的部分。比如『death.attack.onFire』,如果你只是这么用它:
{“rawtext“:[{“translate“:“death.attack.onFire“}]}
最终它会输出:
%1$s 被烧死了
这是怎么回事?因为我们没有指定死亡的东西是什么。如果我们要指定,就得用到translate的配套组件:with
with的值是由多个文本组成的列表。至于为什么是个列表,是因为有些时候会有多个特殊的部分,这时候就需要使用列表来分别指定每个部分是什么。
我们待会再研究具有多个特殊部分的情况。先来试试使用with指定死亡的东西是『张三』:
{“rawtext“:[{“translate“:“death.attack.onFire“,“with“:[“张三“]}]}
这将会输出:张三被烧死了
现在我们再来看看有多个特殊部分的情况:
{“rawtext“:[{“translate“:“death.attack.arrow.item“}]}
这将会输出:%1$s 被%2$s 用%3$s 射杀
这句话虽然很短,但有三个特殊的部分。如何正确指定这三个特殊部分呢?按照从左到右的顺序指定:
{“rawtext“:[{“translate“:“death.attack.arrow.item“,“with“:[“枯藤“,“老树“,“昏鸦“]}]}
这会输出:枯藤被老树用昏鸦射杀
一般情况下,特殊部分会按照从左到右的顺序一一对应列表内的元素。在上面的例子中,%1$s最靠左,“枯藤”也在列表的最左边,因此%1$s就被“枯藤”替换了。剩下的%2$s和%3$s同理。
这就是translate组件一般的用法。除了这个用法外,translate还能被当做text组件一样用,且比text组件多出了一个没啥用的功能:自定义特殊部分
特殊部分有两种自定义的格式:
%%s
%%#(#为列表内元素从左到右排列的序号)
先来说说%%s。%%s的用法和上面的%1$s、%2$s之类的一模一样,都是从左到右一一对应。比如:
{“rawtext“:[{“translate“:“你好%%s!这里有一些关于%%s的说明。“,“with“:[“新手“,“空岛战争“]}]}
这会输出:你好新手!这里有一些关于空岛战争的说明。
本小章还未完,请点击下一页继续阅读后面精彩内容!
喜欢Minecraft指令手册请大家收藏:(m.2yq.org)Minecraft指令手册爱言情更新速度全网最快。