public function LocaleTranslation::processItem in Drupal 10
Same name and namespace in other branches
- 8 core/modules/locale/src/Plugin/QueueWorker/LocaleTranslation.php \Drupal\locale\Plugin\QueueWorker\LocaleTranslation::processItem()
- 9 core/modules/locale/src/Plugin/QueueWorker/LocaleTranslation.php \Drupal\locale\Plugin\QueueWorker\LocaleTranslation::processItem()
The translation update functions executed here are batch operations which are also used in translation update batches. The batch functions may need to be executed multiple times to complete their task, typically this is the translation import function. When a batch function is not finished, a new queue task is created and added to the end of the queue. The batch context data is needed to continue the batch task is stored in the queue with the queue data.
File
- core/
modules/ locale/ src/ Plugin/ QueueWorker/ LocaleTranslation.php, line 81
Class
- LocaleTranslation
- Executes interface translation queue tasks.
Namespace
Drupal\locale\Plugin\QueueWorkerCode
public function processItem($data) {
$this->moduleHandler
->loadInclude('locale', 'batch.inc');
[
$function,
$args,
] = $data;
// We execute batch operation functions here to check, download and import
// the translation files. Batch functions use a context variable as last
// argument which is passed by reference. When a batch operation is called
// for the first time a default batch context is created. When called
// iterative (usually the batch import function) the batch context is passed
// through via the queue and is part of the $data.
$last = count($args) - 1;
if (!is_array($args[$last]) || !isset($args[$last]['finished'])) {
$batch_context = [
'sandbox' => [],
'results' => [],
'finished' => 1,
'message' => '',
];
}
else {
$batch_context = $args[$last];
unset($args[$last]);
}
$args = array_merge($args, [
&$batch_context,
]);
// Call the batch operation function.
call_user_func_array($function, $args);
// If the batch operation is not finished we create a new queue task to
// continue the task. This is typically the translation import task.
if ($batch_context['finished'] < 1) {
unset($batch_context['strings']);
$this->queue
->createItem([
$function,
$args,
]);
}
}