CRM_Core_I18n::crm_translate_raw - Don't lookup $config->lcMessages for every string
authorTim Otten <totten@civicrm.org>
Sat, 12 Sep 2015 03:22:49 +0000 (20:22 -0700)
committerTim Otten <totten@civicrm.org>
Thu, 17 Sep 2015 22:49:30 +0000 (15:49 -0700)
Accessing `$config` is now be a little slower, and this function accounted
for about half of all calls.

CRM/Core/I18n.php

index b0a8ad5ed3b64872fde31fc5983dec80e4ded9ef..36d3ccbdc3092410dec8e99ad878b8e7c9b5e1b4 100644 (file)
@@ -50,6 +50,11 @@ class CRM_Core_I18n {
    */
   private $_extensioncache = array();
 
+  /**
+   * @var string
+   */
+  private $locale;
+
   /**
    * A locale-based constructor that shouldn't be called from outside of this class (use singleton() instead).
    *
@@ -59,6 +64,7 @@ class CRM_Core_I18n {
    * @return \CRM_Core_I18n
    */
   public function __construct($locale) {
+    $this->locale = $locale;
     if ($locale != '' and $locale != 'en_US') {
       $config = CRM_Core_Config::singleton();
 
@@ -336,16 +342,15 @@ class CRM_Core_I18n {
     }
 
     // do all wildcard translations first
-    $config = CRM_Core_Config::singleton();
-    if (!isset(Civi::$statics[__CLASS__][$config->lcMessages])) {
-      if ($config->dsn && !CRM_Core_Config::isUpgradeMode()) {
-        Civi::$statics[__CLASS__][$config->lcMessages] = CRM_Core_BAO_WordReplacement::getLocaleCustomStrings($config->lcMessages);
+    if (!isset(Civi::$statics[__CLASS__][$this->locale])) {
+      if (defined('CIVICRM_DSN') && !CRM_Core_Config::isUpgradeMode()) {
+        Civi::$statics[__CLASS__][$this->locale] = CRM_Core_BAO_WordReplacement::getLocaleCustomStrings($this->locale);
       }
       else {
-        Civi::$statics[__CLASS__][$config->lcMessages] = array();
+        Civi::$statics[__CLASS__][$this->locale] = array();
       }
     }
-    $stringTable = Civi::$statics[__CLASS__][$config->lcMessages];
+    $stringTable = Civi::$statics[__CLASS__][$this->locale];
 
     $exactMatch = FALSE;
     if (isset($stringTable['enabled']['exactMatch'])) {