diff --git a/Greenshot/Greenshot.csproj b/Greenshot/Greenshot.csproj
index 503159ddf..ea44e89e2 100644
--- a/Greenshot/Greenshot.csproj
+++ b/Greenshot/Greenshot.csproj
@@ -275,9 +275,9 @@
Always
-
+
Always
-
+
Always
diff --git a/GreenshotPlugin/Core/LanguageHelper.cs b/GreenshotPlugin/Core/LanguageHelper.cs
index 8d668a80f..a7958c0b3 100644
--- a/GreenshotPlugin/Core/LanguageHelper.cs
+++ b/GreenshotPlugin/Core/LanguageHelper.cs
@@ -279,6 +279,21 @@ namespace GreenshotPlugin.Core {
LOG.Error("Error trying for read directory " + path, e);
}
}
+
+ if (loadedLanguages.Count == 0) {
+ // Try to force internal english
+ try {
+ LOG.Info("No languages found, using embedded en-US.");
+ using (Stream stream = Assembly.GetCallingAssembly().GetManifestResourceStream("Greenshot.Languages.language-en-US.xml")) {
+ LanguageConfiguration languageConfig = LanguageConfiguration.Load(stream);
+ if (languageConfig != null) {
+ loadedLanguages.Add(languageConfig);
+ }
+ }
+ } catch (Exception ie) {
+ LOG.Error("Can't read internal 'Greenshot.Languages.language-en-US.xml'", ie);
+ }
+ }
return loadedLanguages;
}
@@ -499,39 +514,60 @@ namespace GreenshotPlugin.Core {
/// loads a language configuration from a file path
///
public static LanguageConfiguration Load(string path) {
- LanguageConfiguration ret = null;
+ LanguageConfiguration languageConfiguration = null;
try {
- XmlDocument doc = new XmlDocument();
- doc.Load(path);
- XmlNodeList nodes = doc.GetElementsByTagName("language");
- if(nodes.Count > 0) {
- ret = new LanguageConfiguration();
- ret.File = path;
- XmlNode node = nodes.Item(0);
- ret.Description = node.Attributes["description"].Value;
- ret.Ietf = node.Attributes["ietf"].Value;
- ret.Version = node.Attributes["version"].Value;
- if (node.Attributes["languagegroup"] != null) {
- string languageGroup = node.Attributes["languagegroup"].Value;
- ret.LanguageGroup = languageGroup.ToLower();
- }
-
- XmlNodeList resourceNodes = doc.GetElementsByTagName("resource");
- ret.Resources = new List(resourceNodes.Count);
- foreach(XmlNode resourceNode in resourceNodes) {
- Resource res = new Resource();
- res.Name = resourceNode.Attributes["name"].Value;
- res.Text = resourceNode.InnerText;
- ret.Resources.Add(res);
- }
- } else {
- throw new XmlException("Root element is missing");
- }
+ XmlDocument xmlDocument = new XmlDocument();
+ xmlDocument.Load(path);
+ languageConfiguration = ProcessXML(xmlDocument);
+ languageConfiguration.File = path;
} catch(Exception e) {
LOG.Error("Could not load language file "+path, e);
}
- return ret;
-
+ return languageConfiguration;
+ }
+
+ ///
+ /// loads a language configuration from a stream
+ ///
+ public static LanguageConfiguration Load(Stream stream) {
+ LanguageConfiguration languageConfiguration = null;
+ try {
+ XmlDocument xmlDocument = new XmlDocument();
+ xmlDocument.Load(stream);
+ languageConfiguration = ProcessXML(xmlDocument);
+ languageConfiguration.File = "internal";
+ } catch(Exception e) {
+ LOG.Error("Could not load internal language file", e);
+ }
+ return languageConfiguration;
+ }
+
+ private static LanguageConfiguration ProcessXML(XmlDocument xmlDocument) {
+ LanguageConfiguration languageConfiguration = null;
+ XmlNodeList nodes = xmlDocument.GetElementsByTagName("language");
+ if(nodes.Count > 0) {
+ languageConfiguration = new LanguageConfiguration();
+ XmlNode node = nodes.Item(0);
+ languageConfiguration.Description = node.Attributes["description"].Value;
+ languageConfiguration.Ietf = node.Attributes["ietf"].Value;
+ languageConfiguration.Version = node.Attributes["version"].Value;
+ if (node.Attributes["languagegroup"] != null) {
+ string languageGroup = node.Attributes["languagegroup"].Value;
+ languageConfiguration.LanguageGroup = languageGroup.ToLower();
+ }
+
+ XmlNodeList resourceNodes = xmlDocument.GetElementsByTagName("resource");
+ languageConfiguration.Resources = new List(resourceNodes.Count);
+ foreach(XmlNode resourceNode in resourceNodes) {
+ Resource res = new Resource();
+ res.Name = resourceNode.Attributes["name"].Value;
+ res.Text = resourceNode.InnerText;
+ languageConfiguration.Resources.Add(res);
+ }
+ } else {
+ throw new XmlException("Root element is missing");
+ }
+ return languageConfiguration;
}
}
diff --git a/GreenshotPlugin/IniFile/IniConfig.cs b/GreenshotPlugin/IniFile/IniConfig.cs
index 20b31450f..321bdebcd 100644
--- a/GreenshotPlugin/IniFile/IniConfig.cs
+++ b/GreenshotPlugin/IniFile/IniConfig.cs
@@ -73,9 +73,7 @@ namespace IniFile {
}
string forcedIni = Path.Combine(applicationStartupPath, applicationName + INI_EXTENSION);
if (!File.Exists(forcedIni)) {
- using (File.Create(forcedIni)) {
-
- }
+ using (File.Create(forcedIni)) {}
}
}