-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy pathLocalizationConfiguration.cs
More file actions
105 lines (95 loc) · 3.51 KB
/
LocalizationConfiguration.cs
File metadata and controls
105 lines (95 loc) · 3.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
// Copyright (C) 2011 Xtensive LLC.
// All rights reserved.
// For conditions of distribution and use, see license.
// Created by: Dmitri Maximov
// Created: 2012.07.06
using System.Configuration;
using System.Globalization;
namespace Xtensive.Orm.Localization.Configuration
{
/// <summary>
/// The configuration of the localization extension.
/// </summary>
[Serializable]
public class LocalizationConfiguration
{
/// <summary>
/// Default SectionName value:
/// "<see langword="Xtensive.Orm.Localization" />".
/// </summary>
public const string DefaultSectionName = "Xtensive.Orm.Localization";
/// <summary>
/// Gets or sets the default culture.
/// </summary>
/// <value>The default culture.</value>
public CultureInfo DefaultCulture { get; private set; }
/// <summary>
/// Loads the <see cref="LocalizationConfiguration"/>
/// from application configuration file (section with <see cref="DefaultSectionName"/>).
/// </summary>
/// <returns>
/// The <see cref="LocalizationConfiguration"/>.
/// </returns>
public static LocalizationConfiguration Load()
{
return Load(DefaultSectionName);
}
/// <summary>
/// Loads the <see cref="LocalizationConfiguration"/>
/// from application configuration file (section with <paramref name="sectionName"/>).
/// </summary>
/// <param name="sectionName">Name of the section.</param>
/// <returns>
/// The <see cref="LocalizationConfiguration"/>.
/// </returns>
public static LocalizationConfiguration Load(string sectionName)
{
var section = (ConfigurationSection) ConfigurationManager.GetSection(sectionName);
return GetConfigurationFromSection(section);
}
/// <summary>
/// Loads the <see cref="LocalizationConfiguration"/>
/// from given configuration (section with <see cref="DefaultSectionName"/>).
/// </summary>
/// <param name="configuration">The configuration to load from.</param>
/// <returns>
/// The <see cref="LocalizationConfiguration"/>.
/// </returns>
public static LocalizationConfiguration Load(System.Configuration.Configuration configuration)
{
return Load(configuration, DefaultSectionName);
}
/// <summary>
/// Loads the <see cref="LocalizationConfiguration"/>
/// from application configuration file (section with <paramref name="sectionName"/>).
/// </summary>
/// <param name="configuration">The configuration to load from.</param>
/// <param name="sectionName">Name of the section.</param>
/// <returns>
/// The <see cref="LocalizationConfiguration"/>.
/// </returns>
public static LocalizationConfiguration Load(System.Configuration.Configuration configuration, string sectionName)
{
var section = (ConfigurationSection) configuration.GetSection(sectionName);
return GetConfigurationFromSection(section);
}
private static LocalizationConfiguration GetConfigurationFromSection(ConfigurationSection configurationSection)
{
var result = new LocalizationConfiguration();
result.DefaultCulture = Thread.CurrentThread.CurrentCulture;
string cultureName = configurationSection==null
? string.Empty
: configurationSection.DefaultCulture.Name;
if (string.IsNullOrEmpty(cultureName))
return result;
try {
var culture = new CultureInfo(cultureName);
result.DefaultCulture = culture;
}
catch (CultureNotFoundException)
{
}
return result;
}
}
}