1 /* 2 * "GEDKeeper", the personal genealogical database editor. 3 * Copyright (C) 2009-2020 by Sergey V. Zhdanovskih. 4 * 5 * This file is part of "GEDKeeper". 6 * 7 * This program is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 21 using System.Collections.Generic; 22 using GDModel; 23 using GKCore.Interfaces; 24 25 namespace GKCore.Cultures 26 { 27 /// <summary> 28 /// 29 /// </summary> 30 public static class CulturesPool 31 { 32 private static readonly Dictionary<GDMLanguageID, ICulture> fCultures = new Dictionary<GDMLanguageID, ICulture>(); 33 34 DefineCulture(GDMLanguageID langID)35 public static ICulture DefineCulture(GDMLanguageID langID) 36 { 37 ICulture result; 38 if (!fCultures.TryGetValue(langID, out result)) { 39 result = CreateCulture(langID); 40 fCultures.Add(langID, result); 41 } 42 return result; 43 } 44 CreateCulture(GDMLanguageID langID)45 private static ICulture CreateCulture(GDMLanguageID langID) 46 { 47 ICulture culture; 48 switch (langID) { 49 case GDMLanguageID.Russian: 50 case GDMLanguageID.Ukrainian: 51 case GDMLanguageID.Kazakh: 52 culture = new RussianCulture(); 53 break; 54 55 case GDMLanguageID.Polish: 56 culture = new PolishCulture(); 57 break; 58 59 case GDMLanguageID.German: 60 culture = new GermanCulture(); 61 break; 62 63 case GDMLanguageID.Swedish: 64 culture = new SwedishCulture(); 65 break; 66 67 case GDMLanguageID.Icelandic: 68 culture = new IcelandCulture(); 69 break; 70 71 case GDMLanguageID.Armenian: 72 culture = new ArmenianCulture(); 73 break; 74 75 case GDMLanguageID.Turkish: 76 culture = new TurkishCulture(); 77 break; 78 79 case GDMLanguageID.French: 80 culture = new FrenchCulture(); 81 break; 82 83 case GDMLanguageID.Italian: 84 culture = new ItalianCulture(); 85 break; 86 87 case GDMLanguageID.Czech: 88 culture = new CzechCulture(); 89 break; 90 91 case GDMLanguageID.Cantonese: 92 case GDMLanguageID.Mandrin: 93 culture = new ChineseCulture(); 94 break; 95 96 case GDMLanguageID.English: 97 default: 98 culture = new BritishCulture(); 99 break; 100 } 101 102 culture.Language = langID; 103 return culture; 104 } 105 } 106 } 107