// This project is licensed under the BSD 3-Clause license. // See the LICENSE file in the project root for more information. namespace CSTNet; public class UIText : IUIText { string Language { get; set; } = "english"; public string[] BasePath { get; set; } = { AppContext.BaseDirectory, "uitext" }; public UIText() { } /// /// Loads the language file. /// /// Language to load public UIText(string language) { Language = language; } /// /// Loads the language file. /// /// Language to load /// Base directory for the language files. public UIText(string language, params string[] baseBath) { Language = language; BasePath = baseBath; } /// /// Get the text for the given id and key. /// /// The id of the text. /// The key of the text. /// The text for the given id and key. public string GetText(int id, int key) => GetText(id, key.ToString()); /// /// Get the text for the given id and key. /// /// The id of the text. /// The key of the text. /// The text for the given id and key. public string GetText(int id, string key) { var basePath = Path.Combine(BasePath); var langPath = Path.Combine(basePath, $"{Language}.dir"); var files = Directory.GetFiles(langPath); foreach (var file in files) { if (!file.Contains(".cst")) continue; var ids = Path.GetFileName(file); var second = ids.IndexOf("_", 1, StringComparison.InvariantCultureIgnoreCase); if (second == -1) continue; ids = ids.Substring(1, second - 1); if (ids != id.ToString()) continue; var content = File.ReadAllText(file); return CST.Parse(content, key); } return "***MISSING***"; } }