User Tools

Site Tools


zh_cn:tutorial:lang

This is an old revision of the document!


名字翻译

请注意,您的商品具有奇怪的显示名称,例如item.tutorial.my_item? 这是因为您的物品名称没有使用游戏选择的语言进行翻译。 翻译用于为单个字符串支持多种不同的语言。

创建一个语言文件

你可以使用语言文件为游戏内的可翻译字符串提供翻译。你需要创建的文件的名称应当是语言代码,参见此链接。英语是en_us,简体中文是zh_cn,台湾繁体中文是zh_tw,香港繁体中文是zh_hk,文言文是lzh。有了语言代码后,在 resources/assets/模组id/lang/ 的位置创建JSON文件,例如英文翻译的文件位置是 resources/assets/tutorial/lang/en_us.json

添加翻译

创建语言文件后,您可以使用此基本模板添加翻译:

resources/assets/tutorial/lang/zh_cn.json
{
  "item.tutorial.my_item": "我的物品",
  "item.tutorial.my_awesome.item": "我的物品真棒",
  [...]
}

其中第一个字符串是任何可翻译的字符串(例如物品名称或TranslatableText)。如果您按照Wiki教程进行操作,请记住将模组id更改为`tutorial`或你自己的模组的id。

使用自定义可翻译文本

每当函数接受 Text 时,您可以选择提供一个new LiteralText(),这意味着 Minecraft 将按原样使用构造函数参数中的字符串。但是,这是不可取的,因为如果这样做,将很难将文本翻译成另一种语言。 这就是为什么每当需要 Text 对象时,都应给它一个带有翻译键的 new TranslatableText(),然后在语言文件中翻译该键。例如,添加工具提示时,可在物品类的子类执行以下操作:

@Override
public void appendTooltip(ItemStack itemStack, World world, List<Text> tooltip, TooltipContext tooltipContext) {
    tooltip.add(new TranslatableText("item.tutorial.fabric_item.tooltip"));
}

然后在语言文件中添加:

resources/assets/tutorial/lang/zh_cn.json
{
  "item.tutorial.fabric_item.tooltip": "我的工具提示"
}

当游戏语言为简体中文时,该工具的提示将显示为“我的工具提示”!

向可翻译文本添加动态值

假设您希望文本根据某些变量(例如当前日期和月份)进行更改。 对于动态数字,我们在您希望数字显示在lang条目值中的位置放一个%d,例如:

resources/assets/tutorial/lang/zh_cn.json
{
  "item.tutorial.fabric_item.tooltip": "我在第%d天和第%d天的工具提示" 
}

然后,我们按照字符串在文本中出现的顺序传递在字符串中使用的变量。 首先是天,然后是月:

int currentDay = 4;
int currentMonth = 7;
tooltip.add(new TranslatableText("item.tutorial.fabric_item.tooltip", currentDay, currentMonth));

And the tooltip will be displayed as “My Tooltip in day 4, and month 7”. In order to pass a string, we use %s instead of %d. If you want for it to literally show %, use %%. For more information, see Java String.format (it works the same way).

添加新行

对于Mojang来说,使\ n工作太困难了,因此,要使字符串具有多行,必须将翻译键拆分为多个键:

resources/assets/tutorial/lang/zh_cn.json
{
  "item.tutorial.fabric_item.tooltip_1": "第一行我的工具提示" 
  "item.tutorial.fabric_item.tooltip_2": "第二行我的工具提示" 
}

然后分别添加TranslatableText部分:

tooltip.add(new TranslatableText("item.tutorial.fabric_item.tooltip_1"));
tooltip.add(new TranslatableText("item.tutorial.fabric_item.tooltip_2"));

And the tooltip will be displayed as:

第一行我的工具提示
第二行我的工具提示

翻译格式

您注册的对象的翻译的格式为

<object-type>.<modid>.<registry-id>
对象类型 格式 例子
方块
block.<modid>.<registry-id>
"block.tutorial.example_block": "Example Block"  
物品
 item.<modid>.<registry-id> 
 "item.tutorial.my_item": "My Item"
物品组
 itemGroup.<modid>.<registry-id>
 "itemGroup.tutorial.my_group": "My Group"
流体
 fluid.<modid>.<registry-id> 
声音事件
 sound_event.<modid>.<registry-id> 
状态效果
 mob_effect.<modid>.<registry-id> 
附魔
 enchantment.<modid>.<registry-id> 
实体类型
 entity_type.<modid>.<registry-id> 
药水
 potion.<modid>.<registry-id> 
生物群系
 biome.<modid>.<registry-id> 

对于不在此列表中的类型,请参见net.minecraft.util.registry.Registry.java

zh_cn/tutorial/lang.1637060537.txt.gz · Last modified: 2021/11/16 11:02 by solidblock