Change locale to be handled at start of each process.
authorBartlomiej Gajda <b.gajda@samsung.com>
Fri, 6 Feb 2015 14:55:31 +0000 (15:55 +0100)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Tue, 10 Jul 2018 06:57:09 +0000 (06:57 +0000)
[Note] This is better place to handle both process locale files,
  and it doesn't use hardcoded paths.
Reviewed by: Jaesik Chang, Piotr Grad

Change-Id: I8fa12fa3411f3dd48bda5997d6c49ab36301b530
Signed-off-by: Bartlomiej Gajda <b.gajda@samsung.com>
tizen_src/impl/content_main_delegate_efl.cc
tizen_src/impl/renderer/content_renderer_client_efl.cc
tizen_src/impl/selection_controller_efl.cc
tizen_src/impl/web_process_content_main_delegate_efl.cc

index e691679..9c1b8c3 100644 (file)
 #include "gpu/gpu_thread_override_efl.h"
 #include "paths_efl.h"
 
+#if defined(OS_TIZEN)
+#include "vconf/vconf.h"
+#include <libintl.h>
+#include "paths_efl.h"
+#include "base/path_service.h"
+#include <unistd.h>
+#endif
+
 namespace content {
 
 std::string SubProcessPath() {
@@ -84,9 +92,24 @@ ContentBrowserClient* ContentMainDelegateEfl::CreateContentBrowserClient() {
   return client_.get();
 }
 
+
+#if defined(OS_TIZEN)
+void platformLanguageChanged(keynode_t* keynode, void* data) {
+  base::FilePath locale_dir;
+  PathService::Get(PathsEfl::DIR_LOCALE, &locale_dir);
+  setlocale(LC_ALL, vconf_get_str(VCONFKEY_LANGSET));
+  bindtextdomain("WebKit", locale_dir.value().c_str());
+}
+#endif
+
 bool ContentMainDelegateEfl::BasicStartupComplete(int* /*exit_code*/) {
   content::SetContentClient(&content_client_);
   PathsEfl::Register();
+
+#if defined(OS_TIZEN)
+  platformLanguageChanged(0, 0);
+  vconf_notify_key_changed(VCONFKEY_LANGSET, platformLanguageChanged, 0);
+#endif
   return false;
 }
 
index 4f909ef..6a075ed 100644 (file)
@@ -190,13 +190,6 @@ void ContentRendererClientEfl::GetNavigationErrorStrings(
     std::string* error_html,
     base::string16* error_description) {
   if (error_html) {
-#if defined(OS_TIZEN)
-    base::FilePath locale_dir;
-    PathService::Get(PathsEfl::DIR_LOCALE, &locale_dir);
-
-    setlocale(LC_ALL, vconf_get_str(VCONFKEY_LANGSET));
-    bindtextdomain("WebKit", locale_dir.value().c_str());
-#endif
 
     std::string errorHead = std::string(dgettext(
         "WebKit", "IDS_WEBVIEW_HEADER_THIS_WEBPAGE_IS_NOT_AVAILABLE"));
index f42d410..a04d9e1 100644 (file)
@@ -10,9 +10,6 @@
 
 #include <Edje.h>
 
-// FIXME: To use BLINK_TEXT_DIR, following line needs to be modified later.
-#define WEBKIT_TEXT_DIR "/usr/share/chromium-efl/locale"
-
 namespace content {
 
 static const int menuHeight = 140;// The Height fo the context menu.
@@ -44,8 +41,6 @@ SelectionControllerEfl::SelectionControllerEfl(EWebView* parent_view)
   evas_object_event_callback_add(parent_view_->evas_object(), EVAS_CALLBACK_MOVE, &EvasParentViewMoveCallback, this);
 
 #if defined(OS_TIZEN)
-  setlocale(LC_ALL, vconf_get_str(VCONFKEY_LANGSET));
-  bindtextdomain("WebKit", WEBKIT_TEXT_DIR);
   vconf_notify_key_changed(VCONFKEY_LANGSET, PlatformLanguageChanged, this);
 #endif
 }
@@ -63,9 +58,6 @@ bool SelectionControllerEfl::GetSelectionStatus() const {
 
 #if defined(OS_TIZEN)
 void SelectionControllerEfl::PlatformLanguageChanged(keynode_t* keynode, void* data) {
-  setlocale(LC_ALL, vconf_get_str(VCONFKEY_LANGSET));
-  bindtextdomain("WebKit", WEBKIT_TEXT_DIR);
-
   SelectionControllerEfl* selection_controller = static_cast<SelectionControllerEfl*>(data);
   if (!selection_controller)
     return;
index 167f680..107dd07 100644 (file)
 #include "paths_efl.h"
 #include "renderer/content_renderer_client_efl.h"
 #include "common/content_client_efl.h"
+#if defined(OS_TIZEN)
+#include <libintl.h>
+#include <unistd.h>
+#include "vconf/vconf.h"
+#endif
 
 namespace content {
 
@@ -28,8 +33,24 @@ void WebProcessContentMainDelegateEfl::PreSandboxStartup() {
   ui::ResourceBundle::InitSharedInstanceWithPakPath(pak_file);
 }
 
+#if defined(OS_TIZEN)
+void webPlatformLanguageChanged(keynode_t* keynode, void* data) {
+  base::FilePath locale_dir;
+  PathService::Get(PathsEfl::DIR_LOCALE, &locale_dir);
+  setlocale(LC_ALL, vconf_get_str(VCONFKEY_LANGSET));
+  bindtextdomain("WebKit", locale_dir.value().c_str());
+  // Note: in case when someone will use IDS_BR_* from WebProcess this needs to be enabled
+  // or those strings have to be moved to chromium locale files.
+  // bindtextdomain("browser", "/usr/apps/org.tizen.browser/res/locale");
+}
+#endif
+
 bool WebProcessContentMainDelegateEfl::BasicStartupComplete(int* exit_code) {
   PathsEfl::Register();
+#if defined(OS_TIZEN)
+  webPlatformLanguageChanged(0, 0);
+  vconf_notify_key_changed(VCONFKEY_LANGSET, webPlatformLanguageChanged, 0);
+#endif
   ContentClientEfl* content_client = new ContentClientEfl();
   content::SetContentClient(content_client);
   return false;