CRM-16355 - reminders in multilingual sites fix
authorSamuel Vanhove <samuel@symbiotic.coop>
Tue, 31 May 2016 21:12:31 +0000 (17:12 -0400)
committerSamuel Vanhove <samuel@symbiotic.coop>
Mon, 26 Sep 2016 19:18:22 +0000 (15:18 -0400)
CRM/Core/BAO/ActionSchedule.php
CRM/Core/I18n.php

index 09d5998093c6dd42d1d00e1bdca9268a26ec915b..f432e5aaf241febb3a5fc14862e4058ef007c0fb 100644 (file)
@@ -425,8 +425,12 @@ FROM civicrm_action_schedule cas
    * @param $preferred_language
    */
   public static function setCommunicationLanguage($communication_language, $preferred_language) {
-    $config = CRM_Core_Config::singleton();
-    $language = $config->lcMessages;
+    $i18n = CRM_Core_I18n::singleton();
+
+    // FIXME: convert to getLocale when https://issues.civicrm.org/jira/browse/CRM-18362 is fixed
+    global $tsLocale;
+    $currentLocale = $tsLocale;
+    $language = $currentLocale;
 
     // prepare the language for the email
     if ($communication_language == CRM_Core_I18n::AUTO) {
@@ -440,13 +444,12 @@ FROM civicrm_action_schedule cas
 
     // language not in the existing language, use default
     $languages = CRM_Core_I18n::languages(TRUE);
-    if (!in_array($language, $languages)) {
-      $language = $config->lcMessages;
+    if (!array_key_exists($language, $languages)) {
+      $language = $currentLocale;
     }
 
     // change the language
-    $i18n = CRM_Core_I18n::singleton();
-    $i18n->setLanguage($language);
+    $i18n->setLocale($language);
   }
 
   /**
index 93ceaa510f79ca6393446a379c743f20a9ec5487..f5d55ccc7e66abc73201e5cc4f94969194f6386c 100644 (file)
@@ -583,7 +583,7 @@ class CRM_Core_I18n {
       setlocale(LC_MESSAGES, $locale);
       setlocale(LC_CTYPE, $locale);
 
-      bindtextdomain('civicrm', $config->gettextResourceDir);
+      bindtextdomain('civicrm', CRM_Core_I18n::getResourceDir());
       bind_textdomain_codeset('civicrm', 'UTF-8');
       textdomain('civicrm');
 
@@ -595,7 +595,11 @@ class CRM_Core_I18n {
       require_once 'PHPgettext/streams.php';
       require_once 'PHPgettext/gettext.php';
 
-      $mo_file = $config->gettextResourceDir . $language . DIRECTORY_SEPARATOR . 'LC_MESSAGES' . DIRECTORY_SEPARATOR . 'civicrm.mo';
+      $mo_file = CRM_Core_I18n::getResourceDir() . $locale . DIRECTORY_SEPARATOR . 'LC_MESSAGES' . DIRECTORY_SEPARATOR . 'civicrm.mo';
+      if (!file_exists($mo_file)) {
+        // fallback to pre-4.5 mode
+        $mo_file = CRM_Core_I18n::getResourceDir() . $locale . DIRECTORY_SEPARATOR . 'civicrm.mo';
+      }
 
       $streamer = new FileReader($mo_file);
       $this->_phpgettext = new gettext_reader($streamer);