Commit b348229a authored by catch's avatar catch

Issue #3005641 by ridhimaabrol24, matsbla, tanubansal, jungle, msankhala, dww,...

Issue #3005641 by ridhimaabrol24, matsbla, tanubansal, jungle, msankhala, dww, quietone, hchonov: Exception is thrown on changing "Site language" setting of a user if user account is translated

(cherry picked from commit 95af12b5)
parent 83b729a3
......@@ -272,8 +272,11 @@ public function form(array $form, FormStateInterface $form_state) {
// separately, assume that the user profile data is in the user's preferred
// language. This entity builder provides that synchronization. For
// use-cases where this synchronization is not desired, a module can alter
// or remove this item.
$form['#entity_builders']['sync_user_langcode'] = '::syncUserLangcode';
// or remove this item. Sync user langcode only when a user registers and
// not when a user is updated or translated.
if ($register) {
$form['#entity_builders']['sync_user_langcode'] = '::syncUserLangcode';
$system_date_config = \Drupal::config('');
$form['timezone'] = [
......@@ -174,4 +174,53 @@ public function testUserWellKnownChangePasswordAnon() {
* Tests that a user is able to change site language.
public function testUserChangeSiteLanguage() {
// Install these modules here as these aren't needed for other test methods.
// Create and login as an admin user to add a new language and enable
// translation for user accounts.
$adminUser = $this->drupalCreateUser([
'administer account settings',
'administer languages',
'administer content translation',
'administer users',
'translate any entity',
// Add a new language into the system.
$edit = [
'predefined_langcode' => 'fr',
$this->drupalPostForm('admin/config/regional/language/add', $edit, 'Add language');
// Enable translation for user accounts.
$edit = [
'language[content_translation]' => 1,
$this->drupalPostForm('admin/config/people/accounts', $edit, 'Save configuration');
$this->assertSession()->pageTextContains('The configuration options have been saved.');
// Create a regular user for whom translation will be enabled.
$webUser = $this->drupalCreateUser();
// Create a translation for a regular user account.
$this->drupalPostForm('user/' . $webUser->id() . '/translations/add/en/fr', [], 'Save');
$this->assertSession()->pageTextContains('The changes have been saved.');
// Update the site language of the user account.
$edit = [
'preferred_langcode' => 'fr',
$this->drupalPostForm('user/' . $webUser->id() . '/edit', $edit, 'Save');
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment