Skip to content

自定义语言与国际化 ​

UltiTools 内置中英文支持,你也可以自定义语言文件。

设置语言 ​

编辑 plugins/UltiTools/config.yml:

yaml
language: "zh"  # zh 中文, en 英文

修改后执行 /ul reload 生效。

自定义消息文本(6.3.0 起) ​

不要直接修改官方语言文件

官方语言文件归 UltiTools 所有,直接修改的官方文件每次启动都会被恢复为自带版本。 要自定义文本,请复制官方文件、改名,并在主配置中选择新名称。

官方语言文件在哪里 ​

内容目录官方文件
UltiTools 本身的消息plugins/UltiTools/lang/zh.json、en.json
各模块的消息plugins/UltiTools/pluginConfig/<模块名>/lang/zh.json/en.json 或 zh.yml/en.yml(视模块而定)

三步自定义 ​

  1. 复制:在要修改的目录里,把官方文件复制一份,新名称以语言代码加连字符开头,扩展名不变。扩展名前的名称必须以 ASCII 字母或数字开头,并且只能包含 ASCII 字母、数字、- 和 _;例如 zh.myserver 会被拒绝,自定义文件也不会被读取。例如把 zh.json 复制为 zh-myserver.json。

  2. 修改:编辑这个副本,只保留你要改的条目也可以。

  3. 选择:在 plugins/UltiTools/config.yml 中设置:

    yaml
    language: "zh-myserver"

    然后重启服务器或执行 /ul reload。

这一个设置同时作用于 UltiTools 和所有模块。想改哪个模块的文本,就在哪个模块的 lang/ 目录里放一份同名副本;没有这份副本的模块继续使用官方中文。

副本里缺少的文本 ​

副本中没有的条目会使用名称开头对应的官方语言补充:zh-myserver 用官方 zh,en-myserver 用官方 en。所以副本可以只写你改动的几行,其余文本照常显示。

名称不以已有语言代码开头时(例如 myserver),缺少的文本使用英文,控制台会有警告提示改名:UltiTools 自身一条,每个使用这项回退的模块也各有一条。

升级后,如果副本里某条文本的 %s/%d 个数与新版官方文本不同、同一参数位置的占位符类型变了(例如 %s 改为 %d 或反过来,即使个数相同),或缺少官方文本中的某个占位符(如 {PLAYER};你自己添加的占位符会保留),这一条会改用官方文本,控制台会有一行警告写明文件和条目;你的文件不会被修改,请按新版官方文件更新这一条。

请给副本起一个模块不会自带的名称,例如 zh-myserver。直接用 en、zh 之外的语言代码(如 fr)可能与将来某个版本自带的语言文件同名,到那时你的文件会被当作官方文件恢复(原文件保留为 .bak)。

你的文件不会被覆盖 ​

自定义文件(如 zh-myserver.json)是你的文件:无论启动、/ul reload、升级还是更新模块,UltiTools 都不会写入、替换或备份它。写入模块配置文件的说明注释也会使用你的自定义措辞。要删除或改名自定义文件,请先把 language 切回官方语言代码,并在自定义文件仍存在时重启或执行 /ul reload;否则这些注释可能保留自定义措辞。

直接修改了官方文件会怎样 ​

每次启动时,与自带版本不同的官方文件会被恢复为自带版本,你修改过的文件保留在同一目录下,名为 <文件名>.bak(已存在时依次为 .1.bak、.2.bak……,不会覆盖已有文件)。控制台会输出一行提示,说明文件已恢复、备份在哪里,并提醒你改用上面的方法。/ul reload 也会这样处理 UltiTools 的官方文件和各模块当前使用语言的官方文件。

要找回修改,请把 .bak 文件复制为自定义文件(例如 zh-myserver.json)并在主配置中选择它。不要把 .bak 改回原名:下次启动它还会被恢复。

只读或符号链接的官方文件不会被恢复,控制台会有一行说明。

6.3.0 之前的版本

6.3.0 之前,UltiTools 自身的消息不读取磁盘上的语言文件,模块也不支持自定义名称;直接修改模块的官方语言文件会被保留。从 6.2.x 升级后的首次启动会恢复各模块所有自带语言中被修改的官方文件,不只是当前选用的语言。请在每个模块的 lang/ 目录中查找 .bak 文件,再按上面的方法复制为自定义文件。

贡献者

页面历史

基于 MIT 许可发布