public override void Put(ResourceKey key, ResourceValue value, bool noFallback) { IResourceTable contextsTable = value.GetTable(); for (int i = 0; contextsTable.GetKeyAndValue(i, key, value); ++i) { CapitalizationContextUsage usage; if (!contextUsageTypeMap.TryGetValue(key.ToString(), out usage)) { continue; } int[] intVector = value.GetInt32Vector(); if (intVector.Length < 2) { continue; } int titlecaseInt = (outerInstance.capitalization == DisplayContext.CapitalizationForUIListOrMenu) ? intVector[0] : intVector[1]; if (titlecaseInt == 0) { continue; } outerInstance.capitalizationUsage[(int)usage] = true; hasCapitalizationUsage = true; } }
/// <summary> /// Currencies%variant{ /// TRY{"TL"} /// } /// </summary> internal void ConsumeCurrenciesVariantTable(ResourceKey key, ResourceValue value) { // Note: This data is used for parsing but not formatting. Debug.Assert(parsingData != null); IResourceTable table = value.GetTable(); for (int i = 0; table.GetKeyAndValue(i, key, value); i++) { string isoCode = key.ToString(); parsingData.symbolToIsoCode[value.GetString()] = isoCode; } }
/// <summary> /// CurrencyUnitPatterns{ /// other{"{0} {1}"} /// ... /// } /// </summary> internal void ConsumeCurrencyUnitPatternsTable(ResourceKey key, ResourceValue value) { Debug.Assert(unitPatterns != null); IResourceTable table = value.GetTable(); for (int i = 0; table.GetKeyAndValue(i, key, value); i++) { String pluralKeyword = key.ToString(); if (unitPatterns.Get(pluralKeyword) == null) { unitPatterns[pluralKeyword] = value.GetString(); } } }
internal void ConsumeCurrencyPluralsEntry(ResourceKey key, ResourceValue value) { Debug.Assert(pluralsData != null); IResourceTable pluralsTable = value.GetTable(); for (int j = 0; pluralsTable.GetKeyAndValue(j, key, value); j++) { StandardPlural?plural = StandardPluralUtil.OrNullFromString(key.ToString()); if (plural == null) { throw new ICUException("Could not make StandardPlural from keyword " + key); } if (pluralsData[1 + (int)plural] == null) { pluralsData[1 + (int)plural] = value.GetString(); } } }
/// <summary> /// CurrencyPlurals{ /// BYB{ /// one{"Belarusian new rouble (1994–1999)"} /// other{"Belarusian new roubles (1994–1999)"} /// } /// ... /// } /// </summary> internal void ConsumeCurrencyPluralsTable(ResourceKey key, ResourceValue value) { // The full CurrencyPlurals table is consumed for parsing only. Debug.Assert(parsingData != null); IResourceTable table = value.GetTable(); for (int i = 0; table.GetKeyAndValue(i, key, value); i++) { string isoCode = key.ToString(); IResourceTable pluralsTable = value.GetTable(); for (int j = 0; pluralsTable.GetKeyAndValue(j, key, value); j++) { StandardPlural?plural = StandardPluralUtil.OrNullFromString(key.ToString()); if (plural == null) { throw new ICUException("Could not make StandardPlural from keyword " + key); } parsingData.nameToIsoCode[value.GetString()] = isoCode; } } }
/// <summary> /// Currencies{ /// ... /// USD{ /// "US$", => symbol /// "US Dollar", => display name /// } /// ... /// ESP{ /// "₧", => symbol /// "pesseta espanyola", => display name /// { /// "¤ #,##0.00", => currency-specific pattern /// ",", => currency-specific grouping separator /// ".", => currency-specific decimal separator /// } /// } /// ... /// } /// </summary> internal void ConsumeCurrenciesTable(ResourceKey key, ResourceValue value) { // The full Currencies table is consumed for parsing only. Debug.Assert(parsingData != null); IResourceTable table = value.GetTable(); for (int i = 0; table.GetKeyAndValue(i, key, value); i++) { string isoCode = key.ToString(); if (value.Type != UResourceType.Array) { throw new ICUException("Unexpected data type in Currencies table for " + isoCode); } IResourceArray array = value.GetArray(); parsingData.symbolToIsoCode[isoCode] = isoCode; // Add the ISO code itself as a symbol array.GetValue(0, value); parsingData.symbolToIsoCode[value.GetString()] = isoCode; array.GetValue(1, value); parsingData.nameToIsoCode[value.GetString()] = isoCode; } }
internal void ConsumeCurrenciesEntry(ResourceKey key, ResourceValue value) { Debug.Assert(formattingData != null); string isoCode = key.ToString(); if (value.Type != UResourceType.Array) { throw new ICUException("Unexpected data type in Currencies table for " + isoCode); } IResourceArray array = value.GetArray(); if (formattingData.symbol == null) { array.GetValue(0, value); formattingData.symbol = value.GetString(); } if (formattingData.displayName == null) { array.GetValue(1, value); formattingData.displayName = value.GetString(); } // If present, the third element is the currency format info. // TODO: Write unit test to ensure that this data is being used by number formatting. if (array.Length > 2 && formattingData.formatInfo == null) { array.GetValue(2, value); IResourceArray formatArray = value.GetArray(); formatArray.GetValue(0, value); string formatPattern = value.GetString(); formatArray.GetValue(1, value); string decimalSeparator = value.GetString(); formatArray.GetValue(2, value); string groupingSeparator = value.GetString(); formattingData.formatInfo = new CurrencyFormatInfo( isoCode, formatPattern, decimalSeparator, groupingSeparator); } }