第一中文网

第六十章 基岩版的jn文本(破200收藏纪念) (第2/4页)

天才一秒记住【第一中文网】地址:www.dyzww.cc

你会惊奇地发现执行指令后,没有任何的文本输出,也没有任何的报错信息。

这是为什么呢?因为selector的值必须是个目标选择器,你这样填就相当于要输出玩家hellominecraft的名称,而游戏中又没有叫做hellominecraft的玩家,自然就不会输出。但如果真的有一个叫做hellominecraft的玩家且在线,就会正常输出『hellominecraft』。

translate组件是这五个组件中最难的一个,因为它有些涉及到minecraft的模组、资源包开发。为何这么说?因为translate组件可以让一段文字以目标玩家的语言输出。

在学习translate的用法之前,我们要了解一个东西:本地化键(也称『翻译识别符』)

每一种语言都有自己对应的语言文件,比如美式英语对应的就是en_us.lang,中文简体对应的就是zh_cn.lang。游戏中同一个地方的文本会翻译成不同的语言。这时候问题来了:我们该如何在不同的语言文件中正确找到用于这个地方的文本呢?

这时候本地化键就出场了。

把一个地方的文本在不同语言中的翻译都绑定到一串不变的Id上,根据Id找到对应的翻译文本,不就解决这个问题了吗?

举个例子,在下面两个不同的语言文件中分别有这么一行:

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“:“dea

本章未完,请点击下一章继续阅读!若浏览器显示没有新章节了,请尝试点击右上角↗️或右下角↘️的菜单,退出阅读模式即可,谢谢!

如遇章节错误,请点击报错(无需登陆)

新书推荐

都市超品仙医 活在两个世界 大秦:这个太子总想着造反 与其说瞎话不如 穿越万界:神功自动满级 诛神乾坤 多子多福,仙女都被他抢了怎么办