using System.Collections.Generic; namespace PKHeX.Core; /// /// String Translation Utility /// public static class RibbonStrings { private static readonly Dictionary RibbonNames = new(); /// /// Resets the Ribbon Dictionary to use the supplied set of Ribbon (Property) Names. /// /// Array of strings that are tab separated with Property Name, \t, and Display Name. public static void ResetDictionary(IEnumerable lines) { // Don't clear existing keys on reset; only update. // A language will have the same keys (hopefully), only with differing values. foreach (var line in lines) { var index = line.IndexOf('\t'); if (index < 0) continue; var name = line[..index]; var text = line[(index + 1)..]; RibbonNames[name] = text; } } /// /// Returns the Ribbon Display Name for the corresponding ribbon property name. /// /// Ribbon property name /// Ribbon display name public static string GetName(string propertyName) { // Throw an exception with the requested property name as the message, rather than an ambiguous "key not present" message. // We should ALWAYS have the key present as the input arguments are not user-defined, rather, they are from PKM property names. if (!RibbonNames.TryGetValue(propertyName, out string value)) throw new KeyNotFoundException(propertyName); return value; } }