Commit 070afd5a authored by catch's avatar catch
Browse files

Issue #3109284 by prudloff: locale_translation queue loop

(cherry picked from commit 950cfae1)
parent 09c82bf0
Loading
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -243,6 +243,15 @@ function locale_translation_batch_fetch_import($project, $langcode, $options, &$
          }
        }
      }
      elseif ($source->type == LOCALE_TRANSLATION_CURRENT) {
        /*
         * This can happen if the locale_translation_batch_fetch_import
         * batch was interrupted
         * and the translation was imported by another batch.
         */
        $context['message'] = t('Ignoring already imported translation for %project.', ['%project' => $source->project]);
        $context['finished'] = 1;
      }
    }
  }
}
+49 −0
Original line number Diff line number Diff line
<?php

declare(strict_types=1);

namespace Drupal\Tests\locale\Kernel;

use Drupal\KernelTests\KernelTestBase;

/**
 * Tests locale batches.
 *
 * @group locale
 */
class LocaleBatchTest extends KernelTestBase {

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'locale',
    'system',
    'language',
  ];

  /**
   * Checks that the import batch finishes if the translation has already been imported.
   */
  public function testBuildProjects(): void {
    $this->installConfig(['locale']);
    $this->installSchema('locale', ['locale_file']);
    $this->container->get('module_handler')->loadInclude('locale', 'batch.inc');

    \Drupal::database()->insert('locale_file')
      ->fields([
        'project' => 'drupal',
        'langcode' => 'en',
        'filename' => 'drupal.po',
        'version' => \Drupal::VERSION,
        'timestamp' => time(),
      ])
      ->execute();

    $context = [];
    locale_translation_batch_fetch_import('drupal', 'en', [], $context);
    $this->assertEquals(1, $context['finished']);
    $this->assertEquals('Ignoring already imported translation for drupal.', $context['message']);
  }

}