多语言支持
基本信息
| 属性 | 值 |
|---|---|
| 类 | alexiil.mods.load.Translation(已标注 @Deprecated) |
| 加载入口 | Translation.addTranslations(File coremodLocation) |
| 默认语言 | en_US |
| 语言目录 | assets/betterloadingscreen/lang/ |
加载流程
LoadingScreenLoadPlugin.injectData拿到coremodLocation→Translation.addTranslations(coremodLocation)。addTranslations扫描语言目录:- 开发环境(
coremodLocation是目录):直接addTranslation(locale, reader)读取assets/betterloadingscreen/lang/<locale>.lang。 - jar 文件:
JarFile.entries()找assets/betterloadingscreen/lang/<locale>.lang,通过JarEntry读取。
- 开发环境(
- 读
options.txt拿 Minecraft 当前语言(默认en_US)。 - 选定
currentTranslation:options选的语言存在 → 用之;- 否则回退
en_US; - 都没有 → 报错并把所有
translate()退化到failure(默认字符串)。
翻译键查询
public static String translate(String toTranslate, String failure) {
if (StatCollector.canTranslate(toTranslate)) {
return StatCollector.translateToLocal(toTranslate); // 优先 Minecraft 内置
}
if (currentTranslation != null) return currentTranslation.translateInternal(toTranslate, failure);
return failure;
}
- 优先使用 Minecraft 的
StatCollector(即assets/betterloadingscreen/lang/*.lang自动注入到 Minecraft 语言系统)。 - 没命中 → 走
Translation内部 map。 - 都没有 → 返回
failure默认字符串。
支持的语言
| Locale 文件 | 用途 |
|---|---|
en_US.lang |
英语(默认) |
de_DE.lang |
德语 |
pl_PL.lang |
波兰语 |
pt_BR.lang |
葡萄牙语(巴西) |
ru_RU.lang |
俄语 |
tr_TR.lang |
土耳其语 |
zh_CN.lang |
简体中文 |
翻译键(来自 en_US.lang)
| 键 | 默认值 |
|---|---|
betterloadingscreen.state.minecraft_init |
Minecraft Initializing |
betterloadingscreen.state.construction |
Construction |
betterloadingscreen.state.pre_initialization |
Pre Initialization |
betterloadingscreen.state.initialization |
Initialization |
betterloadingscreen.state.post_initialization |
Post Initialization |
betterloadingscreen.state.completed |
Completed |
betterloadingscreen.state.reloading_resource_packs |
Reloading Resource Packs |
betterloadingscreen.memory_usage |
Memory usage: %5d/%5d MB |
betterloadingscreen.loading |
loading |
alexiillib.gui.contributors |
Contributors |
alexiillib.gui.commits |
Changelog history |
alexiillib.config.title |
Main Configuration File |
alexiillib.gui.config.help.0..3 |
内置帮助文本(4 段) |
数值
| 字段 | 值 |
|---|---|
| 默认 locale | en_US |
使用场景
FMLProgressTracker.Stage.translate():Translation.translate("betterloadingscreen.state." + nameKey, fallbackName)。MinecraftDisplayer.memory_usage:构造时用String.format("betterloadingscreen.memory_usage", used, max)显示内存条。BetterLoadingScreen.minecraftDisplayFirstProgress:Translation.translate("betterloadingscreen.state.minecraft_init", "Minecraft Initializing")。
已知限制
Translation类已被@Deprecated标记;后续重写应该直接用 Minecraft 的StatCollector(实际上translate已经优先走StatCollector,BLS 自身翻译机制只是冗余 fallback)。
相关条目
- FML 生命周期阶段 - 使用
betterloadingscreen.state.*键 - Coremod 安装 - injectData 加载翻译