public int LoadLocalization(ELanguage language = ELanguage.English, CancellationToken cancellationToken = default) { var regex = new Regex($"^{GameName}/.+/{GetLanguageCode(language)}/.+.locres$", RegexOptions.IgnoreCase | RegexOptions.Compiled); LocalizedResources.Clear(); var i = 0; foreach (var file in Files.Where(x => regex.IsMatch(x.Key))) { cancellationToken.ThrowIfCancellationRequested(); if (!file.Value.TryCreateReader(out var archive)) { continue; } var locres = new FTextLocalizationResource(archive); foreach (var entries in locres.Entries) { cancellationToken.ThrowIfCancellationRequested(); if (!LocalizedResources.ContainsKey(entries.Key.Str)) { LocalizedResources[entries.Key.Str] = new Dictionary <string, string>(); } foreach (var keyValue in entries.Value) { cancellationToken.ThrowIfCancellationRequested(); LocalizedResources[entries.Key.Str][keyValue.Key.Str] = keyValue.Value.LocalizedString; i++; } } } return(i); }