function LocaleThemeAlterHooks::jsAlter

Same name and namespace in other branches
  1. main core/modules/locale/src/Hook/LocaleThemeAlterHooks.php \Drupal\locale\Hook\LocaleThemeAlterHooks::jsAlter()

Implements hook_js_alter().

Attributes

#[Hook('js_alter')]

File

core/modules/locale/src/Hook/LocaleThemeAlterHooks.php, line 27

Class

LocaleThemeAlterHooks
Hook theme alter implementations for locale.

Namespace

Drupal\locale\Hook

Code

public function jsAlter(array &$javascript, AttachedAssetsInterface $assets, LanguageInterface $language) : void {
  $files = [];
  foreach ($javascript as $item) {
    if (isset($item['type']) && $item['type'] == 'file') {
      // Ignore the JS translation placeholder file.
      if ($item['data'] === 'core/modules/locale/locale.translation.js') {
        continue;
      }
      $files[] = $item['data'];
    }
  }
  // Replace the placeholder file with the actual JS translation file.
  $placeholderFile = 'core/modules/locale/locale.translation.js';
  if (isset($javascript[$placeholderFile])) {
    if ($translationFile = ($this->localeJs)()
      ->jsTranslate($files, $language)) {
      $jsTranslationAsset =& $javascript[$placeholderFile];
      $jsTranslationAsset['data'] = $translationFile;
    }
    else {
      // If no translation file exists, then remove the placeholder JS asset.
      unset($javascript[$placeholderFile]);
    }
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.