public function LocalePluralFormatTest::testPluralEditDateFormatter in Zircon Profile 8.0
Same name and namespace in other branches
- 8 core/modules/locale/src/Tests/LocalePluralFormatTest.php \Drupal\locale\Tests\LocalePluralFormatTest::testPluralEditDateFormatter()
Tests plural editing of DateFormatter strings
File
- core/
modules/ locale/ src/ Tests/ LocalePluralFormatTest.php, line 150 - Contains \Drupal\locale\Tests\LocalePluralFormatTest.
Class
- LocalePluralFormatTest
- Tests plural handling for various languages.
Namespace
Drupal\locale\TestsCode
public function testPluralEditDateFormatter() {
// Import some .po files with formulas to set up the environment.
// These will also add the languages to the system.
$this
->importPoFile($this
->getPoFileWithSimplePlural(), array(
'langcode' => 'fr',
));
// Set French as the site default language.
$this
->config('system.site')
->set('default_langcode', 'fr')
->save();
// Visit User Info page before updating translation strings.
$this
->drupalGet('user');
// Member for time should be translated.
$this
->assertText("seconde", "'Member for' text is translated.");
$path = 'admin/config/regional/translate/';
$search = array(
'langcode' => 'fr',
// Limit to only translated strings to ensure that database ordering does
// not break the test.
'translation' => 'translated',
);
$this
->drupalPostForm($path, $search, t('Filter'));
// Plural values for the langcode fr.
$this
->assertText('@count seconde');
$this
->assertText('@count secondes');
// Inject a plural source string to the database. We need to use a specific
// langcode here because the language will be English by default and will
// not save our source string for performance optimization if we do not ask
// specifically for a language.
\Drupal::translation()
->formatPlural(1, '1 second', '@count seconds', array(), array(
'langcode' => 'fr',
))
->render();
$lid = db_query("SELECT lid FROM {locales_source} WHERE source = :source AND context = ''", array(
':source' => "1 second" . LOCALE_PLURAL_DELIMITER . "@count seconds",
))
->fetchField();
// Look up editing page for this plural string and check fields.
$search = array(
'string' => '1 second',
'langcode' => 'fr',
);
$this
->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
// Save complete translations for the string in langcode fr.
$edit = array(
"strings[{$lid}][translations][0]" => '1 seconde updated',
"strings[{$lid}][translations][1]" => '@count secondes updated',
);
$this
->drupalPostForm($path, $edit, t('Save translations'));
// User interface input for translating seconds should not be duplicated
$this
->assertUniqueText('@count seconds', 'Interface translation input for @count seconds only appears once.');
// Member for time should be translated.
$this
->drupalGet('user');
$this
->assertText("seconde", "'Member for' text is translated.");
}