Test exportation of translations.
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.'));
}