diff --git a/CRM/Utils/System/Drupal8.php b/CRM/Utils/System/Drupal8.php index 858b9eee2b7d..b1f58b0c3c4b 100644 --- a/CRM/Utils/System/Drupal8.php +++ b/CRM/Utils/System/Drupal8.php @@ -650,4 +650,19 @@ public function postURL($action) { return $this->url($current_path); } + /** + * Function to return current language of Drupal8 + * + * @return string + */ + public function getLanguage() { + // Drupal might not be bootstrapped if being called by the REST API. + if (!class_exists('Drupal')) { + return NULL; + } + + return \Drupal::languageManager()->getCurrentLanguage()->getId(); + } + + } diff --git a/CRM/Utils/System/DrupalBase.php b/CRM/Utils/System/DrupalBase.php index 9be10ddef13b..6c1eebcd6b53 100644 --- a/CRM/Utils/System/DrupalBase.php +++ b/CRM/Utils/System/DrupalBase.php @@ -450,25 +450,25 @@ public function getUFLocale() { // return CiviCRM’s xx_YY locale that either matches Drupal’s Chinese locale // (for CRM-6281), Drupal’s xx_YY or is retrieved based on Drupal’s xx // sometimes for CLI based on order called, this might not be set and/or empty - global $language; + $language = $this->getCurrentLanguage(); if (empty($language)) { return NULL; } - if ($language->language == 'zh-hans') { + if ($language == 'zh-hans') { return 'zh_CN'; } - if ($language->language == 'zh-hant') { + if ($language == 'zh-hant') { return 'zh_TW'; } - if (preg_match('/^.._..$/', $language->language)) { - return $language->language; + if (preg_match('/^.._..$/', $language)) { + return $language; } - return CRM_Core_I18n_PseudoConstant::longForShort(substr($language->language, 0, 2)); + return CRM_Core_I18n_PseudoConstant::longForShort(substr($language, 0, 2)); } /** @@ -664,4 +664,14 @@ private function parseDrupalSiteNameFromRequest($flagFile = '') { } } + /** + * Function to return current language of Drupal + * + * @return string + */ + public function getCurrentLanguage() { + global $language; + return (!empty($language->language)) ? $language->language : $language; + } + }