aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.Frontend/MonoGameLanguageProvider.cs
diff options
context:
space:
mode:
authorMichael <[email protected]>2017-07-04 17:57:29 -0400
committerMichael <[email protected]>2017-07-04 17:57:29 -0400
commit2adb8859edb95921e8f6d3cbb41fdc349825d6f8 (patch)
treeaa1780fe7f8e2c7ab759429aa53717d7a14ca7ef /ShiftOS.Frontend/MonoGameLanguageProvider.cs
parent5515881e922de087f4e0f5db51ae681bcd7f70d6 (diff)
downloadshiftos_thereturn-2adb8859edb95921e8f6d3cbb41fdc349825d6f8.tar.gz
shiftos_thereturn-2adb8859edb95921e8f6d3cbb41fdc349825d6f8.tar.bz2
shiftos_thereturn-2adb8859edb95921e8f6d3cbb41fdc349825d6f8.zip
abandon system.drawing for anything other than text
Diffstat (limited to 'ShiftOS.Frontend/MonoGameLanguageProvider.cs')
-rw-r--r--ShiftOS.Frontend/MonoGameLanguageProvider.cs106
1 files changed, 106 insertions, 0 deletions
diff --git a/ShiftOS.Frontend/MonoGameLanguageProvider.cs b/ShiftOS.Frontend/MonoGameLanguageProvider.cs
new file mode 100644
index 0000000..9010cfa
--- /dev/null
+++ b/ShiftOS.Frontend/MonoGameLanguageProvider.cs
@@ -0,0 +1,106 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json;
+using ShiftOS.Engine;
+
+namespace ShiftOS.Frontend
+{
+ public class MonoGameLanguageProvider : ILanguageProvider
+ {
+ private string resourcesPath
+ {
+ get
+ {
+ return System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "ShiftOS", "languages");
+ }
+ }
+
+ public string[] GetAllLanguages()
+ {
+ if (!System.IO.Directory.Exists(resourcesPath))
+ {
+ System.IO.Directory.CreateDirectory(resourcesPath);
+ }
+ return System.IO.Directory.GetFiles(resourcesPath).Where(x => x.ToLower().EndsWith(".lang")).ToArray();
+
+ }
+
+ public string GetCurrentTranscript()
+ {
+ string lang = Objects.UserConfig.Get().Language;
+ if (string.IsNullOrWhiteSpace(lang))
+ {
+ lang = "english";
+ var conf = Objects.UserConfig.Get();
+ conf.Language = lang;
+ System.IO.File.WriteAllText("servers.json", JsonConvert.SerializeObject(conf, Formatting.Indented));
+ }
+ string foundPath = GetAllLanguages().FirstOrDefault(x => x.ToLower().EndsWith(lang + ".lang"));
+ //Update the english file.
+ System.IO.File.WriteAllText(System.IO.Path.Combine(resourcesPath, "english.lang"), Properties.Resources.strings_en);
+ //Update the french language pack.
+ System.IO.File.WriteAllText(System.IO.Path.Combine(resourcesPath, "french.lang"), Properties.Resources.strings_fr);
+
+ if (!System.IO.File.Exists(foundPath))
+ {
+ lang = "english";
+ var conf = Objects.UserConfig.Get();
+ conf.Language = lang;
+ System.IO.File.WriteAllText("servers.json", JsonConvert.SerializeObject(conf, Formatting.Indented));
+ return Properties.Resources.strings_en;
+ }
+ else
+ {
+ return System.IO.File.ReadAllText(foundPath);
+ }
+
+ }
+
+ public string GetLanguagePath()
+ {
+ var lang = Objects.UserConfig.Get().Language;
+ if (string.IsNullOrWhiteSpace(lang) || !System.IO.File.Exists(System.IO.Path.Combine(resourcesPath, lang + ".lang")))
+ {
+ lang = "english";
+ var conf = Objects.UserConfig.Get();
+ conf.Language = lang;
+ System.IO.File.WriteAllText("servers.json", JsonConvert.SerializeObject(conf, Formatting.Indented));
+ System.IO.File.WriteAllText(System.IO.Path.Combine(resourcesPath, lang + ".lang"), Properties.Resources.strings_en);
+ }
+ return GetAllLanguages().FirstOrDefault(x => x.ToLower().EndsWith(lang + ".lang"));
+ }
+
+ public List<string> GetJSONTranscripts()
+ {
+ var strings = new List<string>();
+ foreach (var path in GetAllLanguages())
+ strings.Add(System.IO.File.ReadAllText(path));
+ return strings;
+ }
+
+ public void WriteDefaultTranscript()
+ {
+ if (!System.IO.Directory.Exists(resourcesPath))
+ System.IO.Directory.CreateDirectory(resourcesPath);
+
+ //Update the english file.
+ System.IO.File.WriteAllText(System.IO.Path.Combine(resourcesPath, "english.lang"), Properties.Resources.strings_en);
+ //Update the french language pack.
+ System.IO.File.WriteAllText(System.IO.Path.Combine(resourcesPath, "french.lang"), Properties.Resources.strings_fr);
+ }
+
+ public void WriteTranscript()
+ {
+ System.IO.File.WriteAllText(GetLanguagePath(), GetCurrentTranscript());
+ }
+
+ private string getDefault()
+ {
+ return Properties.Resources.strings_en;
+ }
+
+ }
+}