public static void ExportText() { MapLoader l = MapLoader.Loader; string filePath = l.gameDataBinFolder + "/localization_" + Settings.s.CmdModeName + ".json"; if (l is Loader.R2ROMLoader) { Loader.R2ROMLoader rl = l as Loader.R2ROMLoader; ROM.Localization rloc = rl.localizationROM; if (rloc != null) { var output = Enumerable.Range(0, rloc.languageTables.Length).Select(ind => new { Language = rloc.languageTables?[ind].name ?? ("Language " + ind), Text = rloc.languageTables?[ind].textTable.Value?.strings.Select(s => s.Value?.ToString() ?? ""), Binary = rloc.languageTables?[ind].binaryTable.Value?.strings.Select(s => s.Value?.ToString() ?? "") }); string json = JsonConvert.SerializeObject(output, Formatting.Indented); Util.ByteArrayToFile(filePath, Encoding.UTF8.GetBytes(json)); } } else { LocalizationStructure loc = l.localization; if (loc != null) { var output = new { Common = new { Entries = loc.misc.entries }, Languages = Enumerable.Range(0, loc.num_languages).Select(ind => new { Language = l.languages?[ind] ?? ("Language " + ind), LanguageLocalized = l.languages_loc?[ind] ?? ("Language " + ind), Entries = loc.languages[ind].entries }) }; string json = JsonConvert.SerializeObject(output, Formatting.Indented); Util.ByteArrayToFile(filePath, Encoding.UTF8.GetBytes(json)); } } }
protected override AdvancedDropdownItem BuildRoot() { var root = new AdvancedDropdownItem(name); LocalizationStructure loc = MapLoader.Loader.localization; root.AddChild(new AdvancedDropdownItem("-1 - None")); if (loc != null) { if (loc.languages != null && loc.languages.Length > 0 && loc.languages[0].entries.Length > 0) { AdvancedDropdownItem lang = new AdvancedDropdownItem("Localized Text"); root.AddChild(lang); for (int i = 0; i < loc.languages[0].entries.Length; i++) { lang.AddChild(new AdvancedDropdownItem( i.ToString() // ID + " - " + (loc.languages[0].entries[i] == null ? "null" : loc.languages[0].entries[i].Replace("\n", "\\n")) // Text )); } } if (loc.misc.entries != null && loc.misc.entries.Length > 0) { AdvancedDropdownItem misc = new AdvancedDropdownItem("Misc Text"); root.AddChild(misc); for (int i = 0; i < loc.misc.entries.Length; i++) { misc.AddChild(new AdvancedDropdownItem( (20000 + i).ToString() // ID + " - " + loc.misc.entries[i].Replace("\n", "\\n") // Text )); } } } else if (MapLoader.Loader is OpenSpace.Loader.R2ROMLoader) { OpenSpace.Loader.R2ROMLoader l = MapLoader.Loader as OpenSpace.Loader.R2ROMLoader; OpenSpace.ROM.LanguageTable[] langs = l.localizationROM?.languageTables; if (langs != null && langs.Length > 0) { int i = 0; AdvancedDropdownItem misc = new AdvancedDropdownItem(langs[0].name); root.AddChild(misc); for (int j = 0; j < langs[0].num_txtTable; j++) { misc.AddChild(new AdvancedDropdownItem( i.ToString() // ID + " - " + langs[0].textTable.Value.strings[j].Value?.ToString().Replace("\n", "\\n") // Text )); i++; } for (int j = 0; j < langs[0].num_binaryTable; j++) { misc.AddChild(new AdvancedDropdownItem( i.ToString() // ID + " - " + langs[0].binaryTable.Value.strings[j].Value?.ToString().Replace("\n", "\\n") // Text )); i++; } if (langs.Length > 1) { AdvancedDropdownItem lang = new AdvancedDropdownItem(langs[1].name); root.AddChild(lang); for (int j = 0; j < langs[1].num_txtTable; j++) { lang.AddChild(new AdvancedDropdownItem( i.ToString() // ID + " - " + langs[1].textTable.Value.strings[j].Value?.ToString().Replace("\n", "\\n") // Text )); i++; } for (int j = 0; j < langs[1].num_binaryTable; j++) { lang.AddChild(new AdvancedDropdownItem( i.ToString() // ID + " - " + langs[1].binaryTable.Value.strings[j].Value?.ToString().Replace("\n", "\\n") // Text )); i++; } } } } return(root); }