1 #region MIT license
2 //
3 // MIT license
4 //
5 // Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
6 //
7 // Permission is hereby granted, free of charge, to any person obtaining a copy
8 // of this software and associated documentation files (the "Software"), to deal
9 // in the Software without restriction, including without limitation the rights
10 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 // copies of the Software, and to permit persons to whom the Software is
12 // furnished to do so, subject to the following conditions:
13 //
14 // The above copyright notice and this permission notice shall be included in
15 // all copies or substantial portions of the Software.
16 //
17 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23 // THE SOFTWARE.
24 //
25 #endregion
26 
27 using System.Globalization;
28 using DbLinq.Factory;
29 
30 namespace DbLinq.Language.Implementation
31 {
32     /// <summary>
33     /// LanguageWords factory
34     /// </summary>
35     internal class Languages : ILanguages
36     {
37         /// <summary>
38         /// Loads the specified language related to given culture info.
39         /// </summary>
40         /// <param name="cultureInfo">The culture info.</param>
41         /// <returns></returns>
Load(CultureInfo cultureInfo)42         public ILanguageWords Load(CultureInfo cultureInfo)
43         {
44             var objectFactory = ObjectFactory.Current;
45             // uses the factory to enumerate ILanguageWords implementations
46             foreach (var languageType in objectFactory.GetImplementations(typeof(ILanguageWords)))
47             {
48                 // checks for instance, but doesn't load it here
49                 // (loading is slow)
50                 var language = (ILanguageWords)objectFactory.Get(languageType);
51                 if (language.Supports(cultureInfo))
52                 {
53                     // if we have the right language, we load it
54                     language.Load();
55                     return language;
56                 }
57             }
58             return null;
59         }
60     }
61 }