翻译链路日志:OfficialTranslations.lookUp + MaterialTranslator.translate/translateWithFallback 每步打印日志,跟踪翻译路径
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package Sdf1_login;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import java.net.URI;
|
||||
import java.net.URLEncoder;
|
||||
import java.net.http.HttpClient;
|
||||
@@ -63,22 +65,33 @@ public class MaterialTranslator {
|
||||
public static String translate(String materialName) {
|
||||
if (materialName == null || materialName.isEmpty()) return "";
|
||||
String key = materialName.toUpperCase();
|
||||
if (cache.containsKey(key)) return cache.get(key);
|
||||
|
||||
// 缓存命中
|
||||
if (cache.containsKey(key)) {
|
||||
Bukkit.getLogger().info("[翻译] translate 缓存命中: " + materialName + " → " + cache.get(key));
|
||||
return cache.get(key);
|
||||
}
|
||||
|
||||
// 1. 官方翻译(基于原始 Material 名 GRASS_BLOCK → block.minecraft.grass_block)
|
||||
Bukkit.getLogger().info("[翻译] translate 查官方: " + materialName);
|
||||
String official = OfficialTranslations.lookUp(materialName);
|
||||
if (official != null && !official.isEmpty()) {
|
||||
Bukkit.getLogger().info("[翻译] translate 官方命中: " + materialName + " → " + official);
|
||||
cache.put(key, official);
|
||||
return official;
|
||||
}
|
||||
|
||||
// 2. 机翻兜底
|
||||
String readable = toReadable(key);
|
||||
Bukkit.getLogger().info("[翻译] translate 官方未命中,走机翻: " + materialName + " → readable=" + readable);
|
||||
String zh = translateWithFallback(readable);
|
||||
if (zh != null && !zh.isEmpty()) {
|
||||
Bukkit.getLogger().info("[翻译] translate 机翻成功: " + materialName + " → " + zh);
|
||||
cache.put(key, zh);
|
||||
return zh;
|
||||
}
|
||||
|
||||
Bukkit.getLogger().info("[翻译] translate 全部失败,返回可读英文: " + readable);
|
||||
return readable; // fallback 可读英文
|
||||
}
|
||||
|
||||
@@ -121,6 +134,7 @@ public class MaterialTranslator {
|
||||
* 多源翻译,按优先级尝试,失败自动降级
|
||||
*/
|
||||
private static String translateWithFallback(String text) {
|
||||
Bukkit.getLogger().info("[翻译] 机翻开始降级轮询: \"" + text + "\"");
|
||||
for (TranslationSource source : SOURCES) {
|
||||
try {
|
||||
String result = null;
|
||||
@@ -136,12 +150,16 @@ public class MaterialTranslator {
|
||||
break;
|
||||
}
|
||||
if (result != null && !result.isEmpty()) {
|
||||
Bukkit.getLogger().info("[翻译] 机翻 " + source.name + " 成功: \"" + text + "\" → \"" + result + "\"");
|
||||
return result;
|
||||
} else {
|
||||
Bukkit.getLogger().warning("[翻译] 机翻 " + source.name + " 返回空结果,降级下一源");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// 该源失败,尝试下一个
|
||||
Bukkit.getLogger().warning("[翻译] 机翻 " + source.name + " 异常: " + e.getClass().getSimpleName() + ": " + e.getMessage());
|
||||
}
|
||||
}
|
||||
Bukkit.getLogger().warning("[翻译] 机翻全部源失败,返回 null");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -90,18 +90,32 @@ public class OfficialTranslations {
|
||||
if (materialName == null || materialName.isEmpty()) return null;
|
||||
String lower = materialName.toLowerCase(Locale.ROOT);
|
||||
|
||||
// 日志:当前 map 状态
|
||||
Bukkit.getLogger().info("[翻译] officialLookUp: " + materialName
|
||||
+ " | map已加载=" + isLoaded() + " 条目数=" + map.size());
|
||||
|
||||
// 1. 精确匹配(部分 key 可直接用)
|
||||
String val = map.get(lower);
|
||||
if (val != null) return val;
|
||||
if (val != null) {
|
||||
Bukkit.getLogger().info("[翻译] officialLookUp 命中(精确): " + lower + " → " + val);
|
||||
return val;
|
||||
}
|
||||
|
||||
// 2. block.minecraft.<name>
|
||||
val = map.get("block.minecraft." + lower);
|
||||
if (val != null) return val;
|
||||
if (val != null) {
|
||||
Bukkit.getLogger().info("[翻译] officialLookUp 命中(block): " + lower + " → " + val);
|
||||
return val;
|
||||
}
|
||||
|
||||
// 3. item.minecraft.<name>
|
||||
val = map.get("item.minecraft." + lower);
|
||||
if (val != null) return val;
|
||||
if (val != null) {
|
||||
Bukkit.getLogger().info("[翻译] officialLookUp 命中(item): " + lower + " → " + val);
|
||||
return val;
|
||||
}
|
||||
|
||||
Bukkit.getLogger().info("[翻译] officialLookUp 未命中: " + lower + ",将走机翻兜底");
|
||||
return null; // 未命中 -> 调用者走机翻
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user