locale_translate_batch_refresh

locale_translate_batch_refresh(&$context)

Implements callback_batch_operation().

Refreshes translations after importing strings.

Parameters

array|\ArrayAccess $context.: Contains a list of strings updated and information about the progress.

File

core/modules/locale/locale.bulk.inc, line 299
Mass import-export and batch import functionality for Gettext .po files.

Code

function locale_translate_batch_refresh(&$context) {
  if (!isset($context['sandbox']['refresh'])) {
    $strings = $langcodes = array();
    if (isset($context['results']['stats'])) {
      // Get list of unique string identifiers and language codes updated.
      $langcodes = array_unique(array_values($context['results']['languages']));
      foreach ($context['results']['stats'] as $report) {
        $strings = array_merge($strings, $report['strings']);
      }
    }
    if ($strings) {
      // Initialize multi-step string refresh.
      $context['message'] = t('Updating translations for JavaScript and default configuration.');
      $context['sandbox']['refresh']['strings'] = array_unique($strings);
      $context['sandbox']['refresh']['languages'] = $langcodes;
      $context['sandbox']['refresh']['names'] = array();
      $context['results']['stats']['config'] = 0;
      $context['sandbox']['refresh']['count'] = count($strings);

      // We will update strings on later steps.
      $context['finished'] = 0;
    }
    else {
      $context['finished'] = 1;
    }
  }
  elseif ($name = array_shift($context['sandbox']['refresh']['names'])) {
    // Refresh all languages for one object at a time.
    $count = Locale::config()->updateConfigTranslations(array($name), $context['sandbox']['refresh']['languages']);
    $context['results']['stats']['config'] += $count;
    // Inherit finished information from the "parent" string lookup step so
    // visual display of status will make sense.
    $context['finished'] = $context['sandbox']['refresh']['names_finished'];
    $context['message'] = t('Updating default configuration (@percent%).', array('@percent' => (int) ($context['finished'] * 100)));
  }
  elseif (!empty($context['sandbox']['refresh']['strings'])) {
    // Not perfect but will give some indication of progress.
    $context['finished'] = 1 - count($context['sandbox']['refresh']['strings']) / $context['sandbox']['refresh']['count'];
    // Pending strings, refresh 100 at a time, get next pack.
    $next = array_slice($context['sandbox']['refresh']['strings'], 0, 100);
    array_splice($context['sandbox']['refresh']['strings'], 0, count($next));
    // Clear cache and force refresh of JavaScript translations.
    _locale_refresh_translations($context['sandbox']['refresh']['languages'], $next);
    // Check whether we need to refresh configuration objects.
    if ($names = Locale::config()->getStringNames($next)) {
      $context['sandbox']['refresh']['names_finished'] = $context['finished'];
      $context['sandbox']['refresh']['names'] = $names;
    }
  }
  else {
    $context['message'] = t('Updated default configuration.');
    $context['finished'] = 1;
  }
}
doc_Drupal
2016-10-29 09:24:21
Comments
Leave a Comment

Please login to continue.