}
if ($enabled === NULL) {
- $config = CRM_Core_Config::singleton();
+ $languageLimit = Civi::settings()->get('languageLimit');
$enabled = [];
- if (isset($config->languageLimit) and $config->languageLimit) {
+ if ($languageLimit) {
foreach ($all as $code => $name) {
- if (in_array($code, array_keys($config->languageLimit))) {
+ if (array_key_exists($code, $languageLimit)) {
$enabled[$code] = $name;
}
}
* The params of the translation (if any).
* - domain: string|array a list of translation domains to search (in order)
* - context: string
+ * - skip_translation: flag (do only escape/replacement, skip the actual translation)
*
* @return string
* the translated string
$raw = !empty($params['raw']);
unset($params['raw']);
- if (!empty($domain)) {
- // It might be prettier to cast to an array, but this is high-traffic stuff.
- if (is_array($domain)) {
- foreach ($domain as $d) {
- $candidate = $this->crm_translate_raw($text, $d, $count, $plural, $context);
- if ($candidate != $text) {
- $text = $candidate;
- break;
+ if (!isset($params['skip_translation'])) {
+ if (!empty($domain)) {
+ // It might be prettier to cast to an array, but this is high-traffic stuff.
+ if (is_array($domain)) {
+ foreach ($domain as $d) {
+ $candidate = $this->crm_translate_raw($text, $d, $count, $plural, $context);
+ if ($candidate != $text) {
+ $text = $candidate;
+ break;
+ }
}
}
+ else {
+ $text = $this->crm_translate_raw($text, $domain, $count, $plural, $context);
+ }
}
else {
- $text = $this->crm_translate_raw($text, $domain, $count, $plural, $context);
+ $text = $this->crm_translate_raw($text, NULL, $count, $plural, $context);
}
}
- else {
- $text = $this->crm_translate_raw($text, NULL, $count, $plural, $context);
- }
// replace the numbered %1, %2, etc. params if present
if (count($params) && !$raw) {
* the translated string
*/
function ts($text, $params = []) {
- static $areSettingsAvailable = FALSE;
+ static $bootstrapReady = FALSE;
static $lastLocale = NULL;
static $i18n = NULL;
static $function = NULL;
}
// When the settings become available, lookup customTranslateFunction.
- if (!$areSettingsAvailable) {
- $areSettingsAvailable = (bool) \Civi\Core\Container::getBootService('settings_manager');
- if ($areSettingsAvailable) {
+ if (!$bootstrapReady) {
+ $bootstrapReady = (bool) \Civi\Core\Container::isContainerBooted();
+ if ($bootstrapReady) {
+ // just got ready: determine whether there is a working custom translation function
$config = CRM_Core_Config::singleton();
if (isset($config->customTranslateFunction) and function_exists($config->customTranslateFunction)) {
$function = $config->customTranslateFunction;
}
}
+ else {
+ // don't _translate_ anything until bootstrap has progressed enough
+ $params['skip_translation'] = 1;
+ }
}
$activeLocale = CRM_Core_I18n::getLocale();