From adbc99df96ffc503deb604890b7d6e873000e296 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Thu, 13 Oct 2016 21:08:15 +0200 Subject: [PATCH] [DEBUG] correct the language translation error --- ewol/context/Context.hpp | 1 - ewol/translate.cpp | 32 +++++++++++++++++++++++- ewol/widget/Manager.cpp | 2 +- tools/platform_test/appl/MainWindows.cpp | 4 +-- 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/ewol/context/Context.hpp b/ewol/context/Context.hpp index 40820f82..1dd202eb 100644 --- a/ewol/context/Context.hpp +++ b/ewol/context/Context.hpp @@ -104,7 +104,6 @@ namespace ewol { */ void forceRedrawAll(); - // TODO : Later ... /** * @brief This is to transfert the event from one widget to another one * @param source the widget where the event came from diff --git a/ewol/translate.cpp b/ewol/translate.cpp index ca354bb8..185eca08 100644 --- a/ewol/translate.cpp +++ b/ewol/translate.cpp @@ -145,6 +145,7 @@ class LocalInstanceTranslation { if (m_translateLoadad == true) { return; } + EWOL_VERBOSE("Load Translation MAJOR='" << m_major << "' LANG='" << m_language << "' default=" << m_languageDefault ); // start parse language for Major: auto itMajor = m_listPath.find(m_major); if (itMajor != m_listPath.end()) { @@ -237,7 +238,35 @@ const std::string& ewol::translate::getLanguage() { } void ewol::translate::autoDetectLanguage() { - EWOL_INFO("Auto-detect language of system"); + EWOL_VERBOSE("Auto-detect language of system"); + std::string nonameLocalName = std::locale(std::locale(), new std::ctype).name(); + std::string userLocalName = std::locale("").name(); + std::string globalLocalName = std::locale().name(); + + EWOL_VERBOSE(" The default locale is '" << globalLocalName << "'"); + EWOL_VERBOSE(" The user's locale is '" << userLocalName << "'"); + EWOL_VERBOSE(" A nameless locale is '" << nonameLocalName << "'"); + + std::string lang = nonameLocalName; + if ( lang == "*" + || lang == "") { + lang = userLocalName; + } + if ( lang == "*" + || lang == "") { + lang = globalLocalName; + } + if ( lang == "C" + || lang == "" + || lang.size() < 2) { + lang = "EN"; + } + lang = std::string(lang.begin(), lang.begin()+2); + lang = etk::toupper(lang); + EWOL_INFO("Select Language : '" << lang << "'"); + getInstanceTranslation().setLanguage(lang); + return; + // dead code ... #if defined(__TARGET_OS__Linux) char *s = getenv("LANG"); if (s == nullptr || strlen(s) < 2) { @@ -251,6 +280,7 @@ void ewol::translate::autoDetectLanguage() { } #else EWOL_INFO("Can not auto-detect language ..."); + getInstanceTranslation().setLanguage("EN"); #endif } diff --git a/ewol/widget/Manager.cpp b/ewol/widget/Manager.cpp index c3e17452..d9581ff8 100644 --- a/ewol/widget/Manager.cpp +++ b/ewol/widget/Manager.cpp @@ -73,7 +73,7 @@ void ewol::widget::Manager::focusKeep(ewol::WidgetShared _newWidget) { // nothing to do ... return; } - EWOL_VERBOSE("focusKeep=" << _newWidget->getId() ); + EWOL_DEBUG("focusKeep=" << _newWidget->getId() ); //elog::displayBacktrace(); auto focusWidgetCurrent = m_focusWidgetCurrent.lock(); if (_newWidget == focusWidgetCurrent) { diff --git a/tools/platform_test/appl/MainWindows.cpp b/tools/platform_test/appl/MainWindows.cpp index 8d0493c1..741d1cdd 100644 --- a/tools/platform_test/appl/MainWindows.cpp +++ b/tools/platform_test/appl/MainWindows.cpp @@ -49,7 +49,7 @@ void appl::MainWindows::init() { externSubBind(m_composer, ewol::widget::Button, "appl-move", signalPressed, sharedFromThis(), &appl::MainWindows::onCallbackMove); externSubBind(m_composer, ewol::widget::Button, "appl-full-screen", signalValue, sharedFromThis(), &appl::MainWindows::onCallbackFullScreen); - m_listConnection.push_back(getObjectManager().periodicCall.connect(this, &appl::MainWindows::forceFocusCall)); + //m_listConnection.push_back(getObjectManager().periodicCall.connect(this, &appl::MainWindows::forceFocusCall)); keepFocus(); //shortCutAdd("F12", "menu:reloade-shader"); //signalShortcut.connect(sharedFromThis(), &appl::MainWindows::onCallbackShortCut); @@ -118,6 +118,6 @@ bool appl::MainWindows::onEventEntry(const ewol::event::Entry& _event) { } void appl::MainWindows::forceFocusCall(const ewol::event::Time& _event) { - keepFocus(); + //keepFocus(); }