using System.Text.Json; using Ananta.Server.Configuration; namespace Ananta.Server.ClientData.Client4229938; /// /// Chinese → English name mapping for the debug panel spawn lists. The tables are generated /// by VaultTool/build_translation.py (word segmentation + single-char fallback) over the /// AgentConfig / UrbanDiversityPOIActionConfig name columns; unknown names fall back to the /// original string. /// internal static class NameTranslator { private static readonly Lazy> Agents = new(() => Load("agent_names_en.json")); private static readonly Lazy> PoiActions = new(() => Load("poi_actions_en.json")); public static string Agent(string? name) => Translate(Agents.Value, name); public static string PoiAction(string? name) => Translate(PoiActions.Value, name); private static string Translate(Dictionary table, string? name) { if (string.IsNullOrWhiteSpace(name)) return name ?? string.Empty; return table.TryGetValue(name, out var en) && !string.IsNullOrWhiteSpace(en) ? en : name; } private static Dictionary Load(string file) { try { var root = PrivateServerConfigStore.ResolveProjectPath(PrivateServerConfigStore.Current.Paths.ClientConfigs); var path = Path.Combine(root, file); if (!File.Exists(path)) return []; using var doc = JsonDocument.Parse(File.ReadAllText(path)); var dict = new Dictionary(); foreach (var p in doc.RootElement.EnumerateObject()) dict[p.Name] = p.Value.GetString() ?? string.Empty; return dict; } catch { return []; } } }