From 2e14a8fe20f14d0a9dc4de185751972a5430b414 Mon Sep 17 00:00:00 2001
From: Marianne Gagnon <auria.mg@gmail.com>
Date: Sat, 17 Jan 2015 19:19:25 -0500
Subject: [PATCH] Do not crash if user config contains an invalid langage,
 fixes #1905

---
 src/utils/translation.cpp | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/utils/translation.cpp b/src/utils/translation.cpp
index 4233d4d84..d00572760 100644
--- a/src/utils/translation.cpp
+++ b/src/utils/translation.cpp
@@ -38,6 +38,7 @@
 #  include <fribidi/fribidi.h>
 #endif
 
+#include "config/user_config.hpp"
 #include "io/file_manager.hpp"
 #include "utils/constants.hpp"
 #include "utils/log.hpp"
@@ -234,13 +235,20 @@ Translations::Translations() //: m_dictionary_manager("UTF-16")
         }
         else
         {
-            Log::verbose("translation", "Language '%s'.",
-                          Language::from_env(language).get_name().c_str());
-
-            m_current_language_name = Language::from_env(language).get_name() ;
-
-            m_dictionary = m_dictionary_manager.get_dictionary(
-                                                Language::from_env(language) );
+            Language& tgtLang = Language::from_env(language);
+            if (!tgtLang)
+            {
+                Log::warn("Translation", "Unsupported langage '%s'", language.c_str());
+                UserConfigParams::m_language = "system";
+                m_current_language_name = "Default language";
+                m_dictionary = m_dictionary_manager.get_dictionary();
+            }
+            else
+            {
+                m_current_language_name = tgtLang.get_name();
+                Log::verbose("translation", "Language '%s'.", m_current_language_name.c_str());
+                m_dictionary = m_dictionary_manager.get_dictionary(tgtLang);
+            }
         }
     }
     else