Separates the default language for contacts from the site language
authorVangelis Pantazis <v.pantazis@ixiam.com>
Sun, 16 May 2021 08:04:40 +0000 (09:04 +0100)
committerVangelis Pantazis <v.pantazis@ixiam.com>
Sun, 16 May 2021 08:04:40 +0000 (09:04 +0100)
CRM/Admin/Form/Setting/Localization.php
CRM/Contact/Form/Edit/CommunicationPreferences.php
CRM/Contact/Form/Inline/CommunicationPreferences.php

index 037e3aee6adc6bc607df3e2015be4e4dde59c09d..53a26fe99bbc2678a7343c7d97ccf2d7a05298a2 100644 (file)
@@ -354,11 +354,13 @@ class CRM_Admin_Form_Setting_Localization extends CRM_Admin_Form_Setting {
    * @return array
    */
   public static function getDefaultLanguageOptions() {
-    return [
+    $availableOptions = [
       '*default*' => ts('Use default site language'),
       'undefined' => ts('Leave undefined'),
       'current_site_language' => ts('Use language in use at the time'),
     ];
+    $availableLanguages = array_merge($availableOptions, CRM_Admin_Form_Setting_Localization::getDefaultLocaleOptions());
+    return $availableLanguages;
   }
 
 }
index 007522afbf5721a6570bddc6bf033f4d389b1f79..b5c9def4b55da1bff90459858d504ef3a32d43a6 100644 (file)
@@ -144,8 +144,11 @@ class CRM_Contact_Form_Edit_CommunicationPreferences {
 
     // CRM-7119: set preferred_language to default if unset
     if (empty($defaults['preferred_language'])) {
-      $config = CRM_Core_Config::singleton();
-      $defaults['preferred_language'] = $config->lcMessages;
+      if ($form->_action == CRM_Core_Action::ADD) {
+        if (($defContactLanguage = CRM_Core_I18n::getContactDefaultLanguage()) != FALSE) {
+          $defaults['preferred_language'] = $defContactLanguage;
+        }
+      }
     }
 
     if (empty($defaults['communication_style_id'])) {
index c53d75ef57111b1472a0263a6aa6a743f2aca4ca..262cf491dca1f76ac66a901677eff930ec4c7ea8 100644 (file)
@@ -44,8 +44,11 @@ class CRM_Contact_Form_Inline_CommunicationPreferences extends CRM_Contact_Form_
 
     // CRM-7119: set preferred_language to default if unset
     if (empty($defaults['preferred_language'])) {
-      $config = CRM_Core_Config::singleton();
-      $defaults['preferred_language'] = $config->lcMessages;
+      if ($form->_action == CRM_Core_Action::ADD) {
+        if (($defContactLanguage = CRM_Core_I18n::getContactDefaultLanguage()) != FALSE) {
+          $defaults['preferred_language'] = $defContactLanguage;
+        }
+      }
     }
 
     // CRM-19135: where CRM_Core_BAO_Contact::getValues() set label as a default value instead of reserved 'value',