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 个查询方法。
相关条目