Loading core/modules/config_translation/tests/src/Functional/ConfigTranslationPluralUiTest.php 0 → 100644 +113 −0 Original line number Diff line number Diff line <?php declare(strict_types=1); namespace Drupal\Tests\config_translation\Functional; use PHPUnit\Framework\Attributes\Group; use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses; // cspell:ignore anonyme viewsviewfiles /** * Translate settings and entities to various languages. */ #[Group('config_translation')] #[Group('#slow')] #[RunTestsInSeparateProcesses] class ConfigTranslationPluralUiTest extends ConfigTranslationUiTestBase { /** * Tests plural source elements in configuration translation forms. */ public function testPluralConfigStringsSourceElements(): void { $this->drupalLogin($this->adminUser); // Languages to test, with various number of plural forms. $languages = [ 'vi' => ['plurals' => 1, 'expected' => [TRUE, FALSE, FALSE, FALSE]], 'fr' => ['plurals' => 2, 'expected' => [TRUE, TRUE, FALSE, FALSE]], 'sl' => ['plurals' => 4, 'expected' => [TRUE, TRUE, TRUE, TRUE]], ]; foreach ($languages as $langcode => $data) { // Import a .po file to add a new language with a given number of plural // forms. $name = \Drupal::service('file_system')->tempnam('temporary://', $langcode . '_') . '.po'; file_put_contents($name, $this->getPoFile($data['plurals'])); $this->drupalGet('admin/config/regional/translate/import'); $this->submitForm([ 'langcode' => $langcode, 'files[file]' => $name, ], 'Import'); // Change the config langcode of the 'files' view. $config = \Drupal::service('config.factory')->getEditable('views.view.files'); $config->set('langcode', $langcode); $config->save(); // Go to the translation page of the 'files' view. $translation_url = 'admin/structure/views/view/files/translate/en/add'; $this->drupalGet($translation_url); // Check if the expected number of source elements are present. foreach ($data['expected'] as $index => $expected) { if ($expected) { $this->assertSession()->responseContains('edit-source-config-names-viewsviewfiles-display-default-display-options-fields-count-format-plural-string-' . $index); } else { $this->assertSession()->responseNotContains('edit-source-config-names-viewsviewfiles-display-default-display-options-fields-count-format-plural-string-' . $index); } } } } /** * Tests translation of plural strings with multiple plural forms in config. */ public function testPluralConfigStrings(): void { $this->drupalLogin($this->adminUser); // First import a .po file with multiple plural forms. // This will also automatically add the 'sl' language. $name = \Drupal::service('file_system')->tempnam('temporary://', "sl_") . '.po'; file_put_contents($name, $this->getPoFile(4)); $this->drupalGet('admin/config/regional/translate/import'); $this->submitForm([ 'langcode' => 'sl', 'files[file]' => $name, ], 'Import'); // Translate the files view, as this one uses numeric formatters. $description = 'Singular form'; $field_value = '@count place'; $field_value_plural = '@count places'; $translation_url = 'admin/structure/views/view/files/translate/sl/add'; $this->drupalGet($translation_url); // Make sure original text is present on this page, in addition to 2 new // empty fields. $this->assertSession()->pageTextContains($description); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][0]', $field_value); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][1]', $field_value_plural); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][2]', ''); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][3]', ''); // Then make sure it also works. $edit = [ 'translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][0]' => $field_value . ' SL', 'translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][1]' => $field_value_plural . ' 1 SL', 'translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][2]' => $field_value_plural . ' 2 SL', 'translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][3]' => $field_value_plural . ' 3 SL', ]; $this->drupalGet($translation_url); $this->submitForm($edit, 'Save translation'); // Make sure the values have changed. $this->drupalGet($translation_url); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][0]', "$field_value SL"); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][1]', "$field_value_plural 1 SL"); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][2]', "$field_value_plural 2 SL"); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][3]', "$field_value_plural 3 SL"); } } core/modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php +0 −94 Original line number Diff line number Diff line Loading @@ -102,100 +102,6 @@ public function testSourceAndTargetLanguage(): void { $this->assertSession()->statusCodeEquals(403); } /** * Tests plural source elements in configuration translation forms. */ public function testPluralConfigStringsSourceElements(): void { $this->drupalLogin($this->adminUser); // Languages to test, with various number of plural forms. $languages = [ 'vi' => ['plurals' => 1, 'expected' => [TRUE, FALSE, FALSE, FALSE]], 'fr' => ['plurals' => 2, 'expected' => [TRUE, TRUE, FALSE, FALSE]], 'sl' => ['plurals' => 4, 'expected' => [TRUE, TRUE, TRUE, TRUE]], ]; foreach ($languages as $langcode => $data) { // Import a .po file to add a new language with a given number of plural // forms. $name = \Drupal::service('file_system')->tempnam('temporary://', $langcode . '_') . '.po'; file_put_contents($name, $this->getPoFile($data['plurals'])); $this->drupalGet('admin/config/regional/translate/import'); $this->submitForm([ 'langcode' => $langcode, 'files[file]' => $name, ], 'Import'); // Change the config langcode of the 'files' view. $config = \Drupal::service('config.factory')->getEditable('views.view.files'); $config->set('langcode', $langcode); $config->save(); // Go to the translation page of the 'files' view. $translation_url = 'admin/structure/views/view/files/translate/en/add'; $this->drupalGet($translation_url); // Check if the expected number of source elements are present. foreach ($data['expected'] as $index => $expected) { if ($expected) { $this->assertSession()->responseContains('edit-source-config-names-viewsviewfiles-display-default-display-options-fields-count-format-plural-string-' . $index); } else { $this->assertSession()->responseNotContains('edit-source-config-names-viewsviewfiles-display-default-display-options-fields-count-format-plural-string-' . $index); } } } } /** * Tests translation of plural strings with multiple plural forms in config. */ public function testPluralConfigStrings(): void { $this->drupalLogin($this->adminUser); // First import a .po file with multiple plural forms. // This will also automatically add the 'sl' language. $name = \Drupal::service('file_system')->tempnam('temporary://', "sl_") . '.po'; file_put_contents($name, $this->getPoFile(4)); $this->drupalGet('admin/config/regional/translate/import'); $this->submitForm([ 'langcode' => 'sl', 'files[file]' => $name, ], 'Import'); // Translate the files view, as this one uses numeric formatters. $description = 'Singular form'; $field_value = '@count place'; $field_value_plural = '@count places'; $translation_url = 'admin/structure/views/view/files/translate/sl/add'; $this->drupalGet($translation_url); // Make sure original text is present on this page, in addition to 2 new // empty fields. $this->assertSession()->pageTextContains($description); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][0]', $field_value); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][1]', $field_value_plural); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][2]', ''); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][3]', ''); // Then make sure it also works. $edit = [ 'translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][0]' => $field_value . ' SL', 'translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][1]' => $field_value_plural . ' 1 SL', 'translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][2]' => $field_value_plural . ' 2 SL', 'translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][3]' => $field_value_plural . ' 3 SL', ]; $this->drupalGet($translation_url); $this->submitForm($edit, 'Save translation'); // Make sure the values have changed. $this->drupalGet($translation_url); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][0]', "$field_value SL"); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][1]', "$field_value_plural 1 SL"); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][2]', "$field_value_plural 2 SL"); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][3]', "$field_value_plural 3 SL"); } /** * Tests translation storage in locale storage. */ Loading Loading
core/modules/config_translation/tests/src/Functional/ConfigTranslationPluralUiTest.php 0 → 100644 +113 −0 Original line number Diff line number Diff line <?php declare(strict_types=1); namespace Drupal\Tests\config_translation\Functional; use PHPUnit\Framework\Attributes\Group; use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses; // cspell:ignore anonyme viewsviewfiles /** * Translate settings and entities to various languages. */ #[Group('config_translation')] #[Group('#slow')] #[RunTestsInSeparateProcesses] class ConfigTranslationPluralUiTest extends ConfigTranslationUiTestBase { /** * Tests plural source elements in configuration translation forms. */ public function testPluralConfigStringsSourceElements(): void { $this->drupalLogin($this->adminUser); // Languages to test, with various number of plural forms. $languages = [ 'vi' => ['plurals' => 1, 'expected' => [TRUE, FALSE, FALSE, FALSE]], 'fr' => ['plurals' => 2, 'expected' => [TRUE, TRUE, FALSE, FALSE]], 'sl' => ['plurals' => 4, 'expected' => [TRUE, TRUE, TRUE, TRUE]], ]; foreach ($languages as $langcode => $data) { // Import a .po file to add a new language with a given number of plural // forms. $name = \Drupal::service('file_system')->tempnam('temporary://', $langcode . '_') . '.po'; file_put_contents($name, $this->getPoFile($data['plurals'])); $this->drupalGet('admin/config/regional/translate/import'); $this->submitForm([ 'langcode' => $langcode, 'files[file]' => $name, ], 'Import'); // Change the config langcode of the 'files' view. $config = \Drupal::service('config.factory')->getEditable('views.view.files'); $config->set('langcode', $langcode); $config->save(); // Go to the translation page of the 'files' view. $translation_url = 'admin/structure/views/view/files/translate/en/add'; $this->drupalGet($translation_url); // Check if the expected number of source elements are present. foreach ($data['expected'] as $index => $expected) { if ($expected) { $this->assertSession()->responseContains('edit-source-config-names-viewsviewfiles-display-default-display-options-fields-count-format-plural-string-' . $index); } else { $this->assertSession()->responseNotContains('edit-source-config-names-viewsviewfiles-display-default-display-options-fields-count-format-plural-string-' . $index); } } } } /** * Tests translation of plural strings with multiple plural forms in config. */ public function testPluralConfigStrings(): void { $this->drupalLogin($this->adminUser); // First import a .po file with multiple plural forms. // This will also automatically add the 'sl' language. $name = \Drupal::service('file_system')->tempnam('temporary://', "sl_") . '.po'; file_put_contents($name, $this->getPoFile(4)); $this->drupalGet('admin/config/regional/translate/import'); $this->submitForm([ 'langcode' => 'sl', 'files[file]' => $name, ], 'Import'); // Translate the files view, as this one uses numeric formatters. $description = 'Singular form'; $field_value = '@count place'; $field_value_plural = '@count places'; $translation_url = 'admin/structure/views/view/files/translate/sl/add'; $this->drupalGet($translation_url); // Make sure original text is present on this page, in addition to 2 new // empty fields. $this->assertSession()->pageTextContains($description); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][0]', $field_value); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][1]', $field_value_plural); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][2]', ''); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][3]', ''); // Then make sure it also works. $edit = [ 'translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][0]' => $field_value . ' SL', 'translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][1]' => $field_value_plural . ' 1 SL', 'translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][2]' => $field_value_plural . ' 2 SL', 'translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][3]' => $field_value_plural . ' 3 SL', ]; $this->drupalGet($translation_url); $this->submitForm($edit, 'Save translation'); // Make sure the values have changed. $this->drupalGet($translation_url); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][0]', "$field_value SL"); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][1]', "$field_value_plural 1 SL"); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][2]', "$field_value_plural 2 SL"); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][3]', "$field_value_plural 3 SL"); } }
core/modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php +0 −94 Original line number Diff line number Diff line Loading @@ -102,100 +102,6 @@ public function testSourceAndTargetLanguage(): void { $this->assertSession()->statusCodeEquals(403); } /** * Tests plural source elements in configuration translation forms. */ public function testPluralConfigStringsSourceElements(): void { $this->drupalLogin($this->adminUser); // Languages to test, with various number of plural forms. $languages = [ 'vi' => ['plurals' => 1, 'expected' => [TRUE, FALSE, FALSE, FALSE]], 'fr' => ['plurals' => 2, 'expected' => [TRUE, TRUE, FALSE, FALSE]], 'sl' => ['plurals' => 4, 'expected' => [TRUE, TRUE, TRUE, TRUE]], ]; foreach ($languages as $langcode => $data) { // Import a .po file to add a new language with a given number of plural // forms. $name = \Drupal::service('file_system')->tempnam('temporary://', $langcode . '_') . '.po'; file_put_contents($name, $this->getPoFile($data['plurals'])); $this->drupalGet('admin/config/regional/translate/import'); $this->submitForm([ 'langcode' => $langcode, 'files[file]' => $name, ], 'Import'); // Change the config langcode of the 'files' view. $config = \Drupal::service('config.factory')->getEditable('views.view.files'); $config->set('langcode', $langcode); $config->save(); // Go to the translation page of the 'files' view. $translation_url = 'admin/structure/views/view/files/translate/en/add'; $this->drupalGet($translation_url); // Check if the expected number of source elements are present. foreach ($data['expected'] as $index => $expected) { if ($expected) { $this->assertSession()->responseContains('edit-source-config-names-viewsviewfiles-display-default-display-options-fields-count-format-plural-string-' . $index); } else { $this->assertSession()->responseNotContains('edit-source-config-names-viewsviewfiles-display-default-display-options-fields-count-format-plural-string-' . $index); } } } } /** * Tests translation of plural strings with multiple plural forms in config. */ public function testPluralConfigStrings(): void { $this->drupalLogin($this->adminUser); // First import a .po file with multiple plural forms. // This will also automatically add the 'sl' language. $name = \Drupal::service('file_system')->tempnam('temporary://', "sl_") . '.po'; file_put_contents($name, $this->getPoFile(4)); $this->drupalGet('admin/config/regional/translate/import'); $this->submitForm([ 'langcode' => 'sl', 'files[file]' => $name, ], 'Import'); // Translate the files view, as this one uses numeric formatters. $description = 'Singular form'; $field_value = '@count place'; $field_value_plural = '@count places'; $translation_url = 'admin/structure/views/view/files/translate/sl/add'; $this->drupalGet($translation_url); // Make sure original text is present on this page, in addition to 2 new // empty fields. $this->assertSession()->pageTextContains($description); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][0]', $field_value); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][1]', $field_value_plural); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][2]', ''); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][3]', ''); // Then make sure it also works. $edit = [ 'translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][0]' => $field_value . ' SL', 'translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][1]' => $field_value_plural . ' 1 SL', 'translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][2]' => $field_value_plural . ' 2 SL', 'translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][3]' => $field_value_plural . ' 3 SL', ]; $this->drupalGet($translation_url); $this->submitForm($edit, 'Save translation'); // Make sure the values have changed. $this->drupalGet($translation_url); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][0]', "$field_value SL"); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][1]', "$field_value_plural 1 SL"); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][2]', "$field_value_plural 2 SL"); $this->assertSession()->fieldValueEquals('translation[config_names][views.view.files][display][default][display_options][fields][count][format_plural_string][3]', "$field_value_plural 3 SL"); } /** * Tests translation storage in locale storage. */ Loading