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