function ConfigurableLanguageManagerTest::testUserProfileTranslationWithPreferredAdminLanguage
Same name in other branches
- 9 core/modules/language/tests/src/Functional/ConfigurableLanguageManagerTest.php \Drupal\Tests\language\Functional\ConfigurableLanguageManagerTest::testUserProfileTranslationWithPreferredAdminLanguage()
- 8.9.x core/modules/language/tests/src/Functional/ConfigurableLanguageManagerTest.php \Drupal\Tests\language\Functional\ConfigurableLanguageManagerTest::testUserProfileTranslationWithPreferredAdminLanguage()
- 11.x core/modules/language/tests/src/Functional/ConfigurableLanguageManagerTest.php \Drupal\Tests\language\Functional\ConfigurableLanguageManagerTest::testUserProfileTranslationWithPreferredAdminLanguage()
Tests translation of the user profile edit form.
The user profile edit form is a special case when used with the preferred admin language negotiator because of the recursive way that the negotiator is called.
File
-
core/
modules/ language/ tests/ src/ Functional/ ConfigurableLanguageManagerTest.php, line 216
Class
- ConfigurableLanguageManagerTest
- Tests Language Negotiation.
Namespace
Drupal\Tests\language\FunctionalCode
public function testUserProfileTranslationWithPreferredAdminLanguage() : void {
$assert_session = $this->assertSession();
// Set the interface language to use the preferred administration language.
/** @var \Drupal\language\LanguageNegotiatorInterface $language_negotiator */
$language_negotiator = \Drupal::getContainer()->get('language_negotiator');
$language_negotiator->saveConfiguration('language_interface', [
'language-user-admin' => 1,
'language-selected' => 2,
]);
// Create a field on the user entity.
$field_name = $this->randomMachineName();
$label = $this->randomMachineName();
$field_label_en = "English {$label}";
$field_label_es = "Español {$label}";
$field_storage = FieldStorageConfig::create([
'field_name' => $field_name,
'entity_type' => 'user',
'type' => 'string',
]);
$field_storage->save();
$instance = FieldConfig::create([
'field_storage' => $field_storage,
'bundle' => 'user',
'label' => $field_label_en,
]);
$instance->save();
// Add a Spanish translation.
\Drupal::languageManager()->getLanguageConfigOverride('es', "field.field.user.user.{$field_name}")
->set('label', $field_label_es)
->save();
// Add the new field to the edit form.
EntityFormDisplay::create([
'targetEntityType' => 'user',
'bundle' => 'user',
'mode' => 'default',
'status' => TRUE,
])->setComponent($field_name, [
'type' => 'string_textfield',
])
->save();
$user_id = \Drupal::currentUser()->id();
$this->drupalGet("/user/{$user_id}/edit");
// Admin language choice is "No preference" so we should get the default.
$assert_session->pageTextContains($field_label_en);
$assert_session->pageTextNotContains($field_label_es);
// Set admin language to Spanish.
$this->submitForm([
'edit-preferred-admin-langcode' => 'es',
], 'edit-submit');
$assert_session->pageTextContains($field_label_es);
$assert_session->pageTextNotContains($field_label_en);
// Set admin language to English.
$this->submitForm([
'edit-preferred-admin-langcode' => 'en',
], 'edit-submit');
$assert_session->pageTextContains($field_label_en);
$assert_session->pageTextNotContains($field_label_es);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.