public StringEntry(string stringId, string val, LocalizedStringList group, LocalizedString baseString) { _stringId = stringId; _val = val; Group = group; Base = baseString; }
private static string[] ToStringList(this LocalizedStringList @this, IAppSettingsService appSettings) { return(appSettings.Locale == "en" ? @this?.En : appSettings.Locale == "id" ? @this?.Id : throw new NotImplementedException()); }
/// <summary> /// Wraps the strings in a <see cref="LocalizedStringList" />. /// </summary> /// <param name="list">The list to wrap.</param> /// <returns>The wrapped strings.</returns> private IEnumerable <StringEntry> WrapStrings(LocalizedStringList list) { return(list.Strings.Select(s => { string stringIdName = _cache.StringIDs.GetString(s.Key) ?? s.Key.ToString(); string adjustedStr = ReplaceSymbols(s.Value); var entry = new StringEntry(stringIdName, adjustedStr, list, s); return entry; })); }
private void cbLocaleGroups_SelectionChanged_1(object sender, SelectionChangedEventArgs e) { var group = cbLocaleGroups.SelectedItem as NamedStringList; if (group != null) { _currentGroup = group.Base; _stringView.CurrentGroup = group.Base; _stringView.Refresh(); lvLocales.CanUserAddRows = (group.Base != null); ShowCurrentItem(); } }
private void FixUnicListReferences(DataBlock block, ITag tag, IWriter buffer, IStream stream) { foreach (DataBlockUnicListFixup fixup in block.UnicListFixups) { var pack = _languageCache.LoadLanguage((GameLanguage)fixup.LanguageIndex, stream); var stringList = new LocalizedStringList(tag); foreach (var str in fixup.Strings) { var id = InjectStringID(str.StringID); stringList.Strings.Add(new LocalizedString(id, str.String)); } pack.AddStringList(stringList); } }
/// <summary> /// Builds the string list table. /// </summary> /// <param name="reader">The stream to read strings from.</param> private void BuildStringLists(IReader reader) { List <LocalizedString> table = _language.LoadStrings(reader); // Extract each group's section of the string table into a separate list foreach (ThirdGenMultilingualStringList group in _groups) { int startIndex = group.Ranges[_languageIndex].StartIndex; int size = group.Ranges[_languageIndex].Size; List <LocalizedString> strings = table.Skip(startIndex).Take(size).ToList(); var list = new LocalizedStringList(group.Tag, strings); _stringLists.Add(list); } StringLists = _stringLists.AsReadOnly(); }
/// <summary> /// Merges a <see cref="LocalizedStringList"/> with string list information for a language. /// </summary> /// <param name="stringList">The string list.</param> /// <param name="languageIndex">Index of the language.</param> /// <param name="startIndex">The index where strings in the list will start at.</param> /// <returns>The number of strings in the string list.</returns> private int MergeStringList(LocalizedStringList stringList, int languageIndex, int startIndex) { // TODO: Assert that the tag exists FourthGenMultilingualStringList group; _groupsByTag.TryGetValue(stringList.SourceTag, out group); if (group == null) { // Create a new string list // Assume there's going to be at least one group already and use that to get the number of languages... // TODO: Read this from build info or something var ranges = _groupsByTag.Values.First().Ranges.Select(r => new StringRange(0, 0)).ToArray(); group = new FourthGenMultilingualStringList(stringList.SourceTag, ranges, _buildInfo); _groupsByTag[stringList.SourceTag] = group; } group.Ranges[languageIndex].StartIndex = startIndex; group.Ranges[languageIndex].Size = stringList.Strings.Count; return(stringList.Strings.Count); }