function LocaleExportTest::testExportTranslation

Test exportation of translations.

File

drupal/core/modules/locale/lib/Drupal/locale/Tests/LocaleExportTest.php, line 51
Definition of Drupal\locale\Tests\LocaleExportTest.

Class

LocaleExportTest
Tests for the export of translation files.

Namespace

Drupal\locale\Tests

Code

function testExportTranslation() {

  // First import some known translations.
  // This will also automatically enable the 'fr' language.
  $name = tempnam('temporary://', "po_") . '.po';
  file_put_contents($name, $this
    ->getPoFile());
  $this
    ->drupalPost('admin/config/regional/translate/import', array(
    'langcode' => 'fr',
    'files[file]' => $name,
  ), t('Import'));
  drupal_unlink($name);

  // Get the French translations.
  $this
    ->drupalPost('admin/config/regional/translate/export', array(
    'langcode' => 'fr',
  ), t('Export'));

  // Ensure we have a translation file.
  $this
    ->assertRaw('# French translation of Drupal', t('Exported French translation file.'));

  // Ensure our imported translations exist in the file.
  $this
    ->assertRaw('msgstr "lundi"', t('French translations present in exported file.'));

  // Import some more French translations which will be marked as customized.
  $name = tempnam('temporary://', "po2_") . '.po';
  file_put_contents($name, $this
    ->getCustomPoFile());
  $this
    ->drupalPost('admin/config/regional/translate/import', array(
    'langcode' => 'fr',
    'files[file]' => $name,
    'customized' => 1,
  ), t('Import'));
  drupal_unlink($name);

  // Create string without translation in the locales_source table.
  $this->container
    ->get('locale.storage')
    ->createString()
    ->setString('February')
    ->save();

  // Export only customized French translations.
  $this
    ->drupalPost('admin/config/regional/translate/export', array(
    'langcode' => 'fr',
    'content_options[not_customized]' => FALSE,
    'content_options[customized]' => TRUE,
    'content_options[not_translated]' => FALSE,
  ), t('Export'));

  // Ensure we have a translation file.
  $this
    ->assertRaw('# French translation of Drupal', t('Exported French translation file with only customized strings.'));

  // Ensure the customized translations exist in the file.
  $this
    ->assertRaw('msgstr "janvier"', t('French custom translation present in exported file.'));

  // Ensure no untranslated strings exist in the file.
  $this
    ->assertNoRaw('msgid "February"', t('Untranslated string not present in exported file.'));

  // Export only untranslated French translations.
  $this
    ->drupalPost('admin/config/regional/translate/export', array(
    'langcode' => 'fr',
    'content_options[not_customized]' => FALSE,
    'content_options[customized]' => FALSE,
    'content_options[not_translated]' => TRUE,
  ), t('Export'));

  // Ensure we have a translation file.
  $this
    ->assertRaw('# French translation of Drupal', t('Exported French translation file with only untranslated strings.'));

  // Ensure no customized translations exist in the file.
  $this
    ->assertNoRaw('msgstr "janvier"', t('French custom translation not present in exported file.'));

  // Ensure the untranslated strings exist in the file.
  $this
    ->assertRaw('msgid "February"', t('Untranslated string present in exported file.'));
}