/// <summary> /// adds a new commodity the the dictionary /// </summary> /// <param name="commodity"></param> /// <param name="language"></param> private void addCommodity(string commodity, enLanguage language) { dsCommodities ownCommodities = new dsCommodities(); if(File.Exists(@".\Data\Commodities_own.xml")) ownCommodities.ReadXml(@".\Data\Commodities_own.xml"); dsCommodities.NamesRow newCommodity = (dsCommodities.NamesRow)_commodities.Names.NewRow(); dsCommodities.NamesRow newOwnCommodity = (dsCommodities.NamesRow)ownCommodities.Names.NewRow(); foreach (enLanguage availableLanguage in Enum.GetValues(typeof(enLanguage))) newOwnCommodity[availableLanguage.ToString()] = Program.COMMODITY_NOT_SET; newOwnCommodity[language.ToString()] = commodity; foreach (enLanguage availableLanguage in Enum.GetValues(typeof(enLanguage))) newCommodity[availableLanguage.ToString()] = newOwnCommodity[availableLanguage.ToString()]; // add to both dictionaries ownCommodities.Names.AddNamesRow(newOwnCommodity); _commodities.Names.AddNamesRow(newCommodity); // save to "own" file ownCommodities.WriteXml(@".\Data\Commodities_own_new.xml"); FileSaver.rotateSaveFiles(@".\Data\Commodities_own.xml"); // reload in working array loadCommodities(RegulatedNoiseSettings.Language); }
/// <summary> /// prepares the commoditylevels in the correct language /// </summary> /// <param name="Language"></param> private void loadCommodityLevels(enLanguage Language) { dsCommodities.LevelsRow[] Level; CommodityLevel.Clear(); for (int i = 0; i <= 2; i++) { if (i == 0) Level = (dsCommodities.LevelsRow[])_commodities.Levels.Select("ID=" + (byte)enCommodityLevel.LOW); else if (i == 1) Level = (dsCommodities.LevelsRow[])_commodities.Levels.Select("ID=" + (byte)enCommodityLevel.MED); else Level = (dsCommodities.LevelsRow[])_commodities.Levels.Select("ID=" + (byte)enCommodityLevel.HIGH); if (Language == enLanguage.eng) CommodityLevel.Add(Level[0].ID, Level[0].eng); else if (Language == enLanguage.ger) CommodityLevel.Add(Level[0].ID, Level[0].ger); else CommodityLevel.Add(Level[0].ID, Level[0].fra); } }
/// <summary> /// prepares the commodities in the correct language /// </summary> /// <param name="Language"></param> public string getLocalizedCommodity(enLanguage Language, string CommodityName) { string BaseName = String.Empty; List<dsCommodities.NamesRow> currentCommodity = _commodities.Names.Where(x => ((x.eng.Equals(CommodityName, StringComparison.InvariantCultureIgnoreCase)) || (x.ger.Equals(CommodityName, StringComparison.InvariantCultureIgnoreCase)) || (x.fra.Equals(CommodityName, StringComparison.InvariantCultureIgnoreCase)))).ToList(); if (currentCommodity.Count() > 0) { switch (Language) { case enLanguage.eng: BaseName = currentCommodity[0].eng; break; case enLanguage.ger: BaseName = currentCommodity[0].ger; break; case enLanguage.fra: BaseName = currentCommodity[0].fra; break; } } return BaseName; }
/// <summary> /// prepares the commodities in the correct language /// </summary> /// <param name="Language"></param> public string getCommodityBasename(enLanguage Language, string CommodityName) { string BaseName = Program.COMMODITY_NOT_SET; dsCommodities.NamesRow[] currentCommodity = null; switch (Language) { case enLanguage.eng: currentCommodity = (dsCommodities.NamesRow[])(_commodities.Names.Select("eng='" + EscapeLikeValue(CommodityName) + "'")); break; case enLanguage.ger: currentCommodity = (dsCommodities.NamesRow[])(_commodities.Names.Select("ger='" + EscapeLikeValue(CommodityName) + "'")); break; case enLanguage.fra: currentCommodity = (dsCommodities.NamesRow[])(_commodities.Names.Select("fra='" + EscapeLikeValue(CommodityName) + "'")); break; } if (currentCommodity.Count() > 0) BaseName = currentCommodity[0].eng; return BaseName; }
/// <summary> /// prepares the commodities in the correct language /// </summary> /// <param name="Language"></param> private void loadCommodities(enLanguage Language) { KnownCommodityNames.Clear(); foreach (dsCommodities.NamesRow currentCommodity in _commodities.Names) KnownCommodityNames.Add(currentCommodity[Enum.GetName(typeof(enLanguage), Language)].ToString()); }
/// <summary> /// adds objects for not yet existing localized commodities /// </summary> internal void addLocalized2RN(dsCommodities.NamesDataTable localizedCommodities) { EDCommoditiesExt EDCommodity = null; enLanguage foundLanguage = enLanguage.eng; bool changed = false; foreach (dsCommodities.NamesRow localizedItem in localizedCommodities) { // look if the name is available at least in one language foreach (enLanguage availableLanguage in Enum.GetValues(typeof(enLanguage))) { foundLanguage = availableLanguage; EDCommodity = m_Commodities.Find(x => x.Name.Equals(localizedItem[availableLanguage.ToString()].ToString(), StringComparison.InvariantCultureIgnoreCase)); if (EDCommodity != null) { break; } } if (EDCommodity != null) { // found if ((foundLanguage != enLanguage.eng) && (localizedItem.eng != Program.COMMODITY_NOT_SET)) { // it's not the base(=english) name, but the base(=english) name is available -> change this EDCommodity.Name = localizedItem.eng; changed = true; } } else { // not found, add it with the available EDCommodity = new EDCommoditiesExt(); EDCommodity.Name = localizedItem.eng; if (EDCommodity.Name == Program.COMMODITY_NOT_SET) { // base(=english) name not available, get the next existing name foreach (enLanguage availableLanguage in Enum.GetValues(typeof(enLanguage))) { if (localizedItem[availableLanguage.ToString()].ToString() != Program.COMMODITY_NOT_SET) { // got it -> break EDCommodity.Name = localizedItem[availableLanguage.ToString()].ToString(); break; } } } EDCommodity.Id = m_Commodities.Max(x => x.Id) + 1; EDCommodity.AveragePrice = -1; m_Commodities.Add(EDCommodity); changed = true; } if (changed) { saveRNCommodityData(@"./Data/commodities_RN.json", true); } } }