-
Notifications
You must be signed in to change notification settings - Fork 576
Expand file tree
/
Copy pathLocRM.cs
More file actions
128 lines (109 loc) · 3.58 KB
/
Copy pathLocRM.cs
File metadata and controls
128 lines (109 loc) · 3.58 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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using System.Xml.Serialization;
using iSpyApplication.Utilities;
namespace iSpyApplication
{
public static class LocRm
{
private static Translations _translationsList;
private static readonly Hashtable Res = new Hashtable();
private static bool _inited;
public static List<TranslationsTranslationSet> TranslationSets => TranslationsList.TranslationSet.ToList();
private static Translations TranslationsList
{
get
{
if (_translationsList != null)
return _translationsList;
var s = new XmlSerializer(typeof (Translations));
string p = Program.AppDataPath + @"\XML\Translations.xml";
#if DEBUG
p = Program.AppPath+ @"\XML\Translations.xml";
#endif
using (var fs = new FileStream(p, FileMode.Open))
{
fs.Position = 0;
using (TextReader reader = new StreamReader(fs))
{
_translationsList = (Translations)s.Deserialize(reader);
}
}
return _translationsList;
}
}
public static void Reset()
{
_translationsList = null;
_inited = false;
}
public static string GetString(string identifier)
{
return GetString(identifier, MainForm.Conf.Language);
}
public static string GetString(string identifier, string languageCode)
{
if (!_inited)
{
Init();
}
identifier = identifier.ToLower();
try
{
return Res[languageCode+"."+identifier].ToString();
}
catch (NullReferenceException)
{
Logger.LogErrorToFile("No Translation for token " + identifier);
if (MainForm.Conf.Language != "en")
{
Res.Add(languageCode+"."+identifier, identifier);
return identifier;
}
}
catch
{
//possible threading error where language is reset
}
return identifier;
}
public static void SetString(Control ctrl, string identifier)
{
ctrl.Text = GetString(identifier);
}
public static void SetString(MenuItem ctrl, string identifier)
{
ctrl.Text = GetString(identifier);
}
public static void SetString(ToolStripStatusLabel ctrl, string identifier)
{
ctrl.Text = GetString(identifier);
}
private static void Init()
{
if (MainForm.Conf.Language == "NotSet")
{
MainForm.Conf.Language = CultureInfo.CurrentCulture.Name.ToLower().Split('-')[0];
var ts = TranslationSets.FirstOrDefault(p => p.CultureCode == MainForm.Conf.Language);
if (ts == null)
{
MainForm.Conf.Language = "en";
}
}
Res.Clear();
foreach (var ls in TranslationSets)
{
foreach (var t in ls.Translation)
{
Res.Add((ls.CultureCode+"."+t.Token.ToLower()),t.Value);
}
}
_inited = true;
}
}
}