aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2017-08-18 02:04:21 -0400
committerGitHub <noreply@github.com>2017-08-18 02:04:21 -0400
commitc58db90c950c766321615eca236557d87b8d1b74 (patch)
tree80f1823f901bdadad6af4fce8d36d9b73f79c0fb /Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs
parentd5a9db3af77b06a355558165a984328e35555279 (diff)
parent883399caeba54da4c9f3e15e639f8fd72f5b559e (diff)
Merge pull request #2827 from MediaBrowser/dev
Dev
Diffstat (limited to 'Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs')
-rw-r--r--Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs91
1 files changed, 91 insertions, 0 deletions
diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs
new file mode 100644
index 000000000..1d605cc47
--- /dev/null
+++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs
@@ -0,0 +1,91 @@
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Reflection;
+using System.Text.RegularExpressions;
+using System.Linq;
+using System;
+
+namespace NLangDetect.Core.Utils
+{
+ public static class Messages
+ {
+ private static readonly Dictionary<string, string> _messages;
+
+ static Messages()
+ {
+ _messages = LoadMessages();
+ }
+
+ public static string getString(string key)
+ {
+ string value;
+
+ return
+ _messages.TryGetValue(key, out value)
+ ? value
+ : string.Format("!{0}!", key);
+ }
+
+ private static Dictionary<string, string> LoadMessages()
+ {
+ var manifestName = typeof(Messages).Assembly.GetManifestResourceNames().FirstOrDefault(i => i.IndexOf("messages.properties", StringComparison.Ordinal) != -1) ;
+
+ Stream messagesStream =
+ typeof(Messages).Assembly
+ .GetManifestResourceStream(manifestName);
+
+ if (messagesStream == null)
+ {
+ throw new InternalException(string.Format("Couldn't get embedded resource named '{0}'.", manifestName));
+ }
+
+ using (messagesStream)
+ using (var sr = new StreamReader(messagesStream))
+ {
+ var messages = new Dictionary<string, string>();
+
+ while (!sr.EndOfStream)
+ {
+ string line = sr.ReadLine();
+
+ if (string.IsNullOrEmpty(line))
+ {
+ continue;
+ }
+
+ string[] keyValue = line.Split('=');
+
+ if (keyValue.Length != 2)
+ {
+ throw new InternalException(string.Format("Invalid format of the 'Messages.properties' resource. Offending line: '{0}'.", line.Trim()));
+ }
+
+ string key = keyValue[0];
+ string value = UnescapeUnicodeString(keyValue[1]);
+
+ messages.Add(key, value);
+ }
+
+ return messages;
+ }
+ }
+
+ /// <remarks>
+ /// Taken from: http://stackoverflow.com/questions/1615559/converting-unicode-strings-to-escaped-ascii-string/1615860#1615860
+ /// </remarks>
+ private static string UnescapeUnicodeString(string s)
+ {
+ if (s == null)
+ {
+ return null;
+ }
+
+ return
+ Regex.Replace(
+ s,
+ @"\\u(?<Value>[a-zA-Z0-9]{4})",
+ match => ((char)int.Parse(match.Groups["Value"].Value, NumberStyles.HexNumber)).ToString());
+ }
+ }
+}