多语言支持

基本信息

属性 值
类 alexiil.mods.load.Translation(已标注 @Deprecated)
加载入口 Translation.addTranslations(File coremodLocation)
默认语言 en_US
语言目录 assets/betterloadingscreen/lang/

加载流程

  1. LoadingScreenLoadPlugin.injectData 拿到 coremodLocation → Translation.addTranslations(coremodLocation)。
  2. addTranslations 扫描语言目录:
    • 开发环境(coremodLocation 是目录):直接 addTranslation(locale, reader) 读取 assets/betterloadingscreen/lang/<locale>.lang。
    • jar 文件:JarFile.entries() 找 assets/betterloadingscreen/lang/<locale>.lang,通过 JarEntry 读取。
  3. 读 options.txt 拿 Minecraft 当前语言(默认 en_US)。
  4. 选定 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)。

相关条目