Local
基本信息
| 属性 | 值 |
|---|---|
| 类名 | myessentials.localization.api.Local |
| 类型 | class,1 个 public static final String + 4 个方法 |
| 默认语言 | en_US(defaultLocalization) |
| 启用版本 | Minecraft 1.7.10 |
功能
加载并查询单个 .lang 文件,提供「外部文件 → jar 内资源 → en_US 兜底」三级查找。
构造器
public Local(String filePath, String lang, String classPath, Class clazz)
| 参数 | 本 mod 的实参 |
|---|---|
filePath |
config/MyEssentials-Core/localization/ |
lang |
Config.instance.localization.get()(默认 en_US) |
classPath |
/myessentials/localization/ |
clazz |
MyEssentialsCore.class |
实现要点
getReader()的三级回退:new File(filePath + lang + ".lang")存在且非目录 →FileInputStream;- 否则
clazz.getResourceAsStream(classPath + lang + ".lang"); - 仍为 null →
clazz.getResourceAsStream(classPath + "en_US.lang"), 并LOG.warn("Reverting to en_US.lang because {} does not exist!", ...)。
- 三级全失败时返回的
InputStream为 null, 随后new InputStreamReader(null)抛NullPointerException—— 源码没有对这种情况的保护。 - 本 mod 实际提供了
src/main/resources/myessentials/localization/en_US.lang, 故第 3 级在本 mod 中总能找到。 - 内部用
HashMap<String, String>缓存解析结果, 以BufferedReader+InputStreamReader逐行读取。 - 4 个方法包含构造器、
getReader(private)、load(private)与 1 个查询方法。
相关条目
- LocalManager - 全局注册表
- Config -
localization配置项的提供方 - MyEssentialsCore - 构造本类
- ChatComponentFormatted - 聊天格式化会用到本地化