Am un buton conectat printr-un controler pentru a deschide un formular personalizat într-un mod:
Reapelul controlerului este:
/**
* Apel invers pentru deschiderea formularului modal.
*/
funcția publică openShareLinkModalForm() {
$răspuns = AjaxResponse nou();
// Obțineți forma modală folosind generatorul de formulare.
$modal_form = $this->formBuilder->getForm('Drupal\ssc_wsl\Form\ShareLinkModalForm');
// Adăugați o comandă AJAX pentru a deschide un dialog modal cu formularul ca conținut.
$response->addCommand(new OpenModalDialogCommand($this->t('Partajați linkul către această pagină.'), $modal_form, ['width' => '1200']));
returnează $răspuns;
}
}
acest lucru funcționează bine, cu excepția faptului că atunci când butonul meu este pe o pagină FR, modal se deschide în continuare în EN.
Dintr-un truc pe care l-am folosit în altă parte, am încercat să adaug acest cod în apel invers chiar înainte de apelul getForm():
$language_manager = \Drupal::languageManager();
$langcode = $language_manager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT)->getId();
$language = $language_manager->getLanguage($langcode);
$language_manager->setConfigOverrideLanguage($limba);
Acest lucru nu are niciun impact. Callback-ul controlerului pare să bazeze traducerea pe valoarea din: $language_manager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT) și acea valoare este întotdeauna valoarea implicită setată pentru site (dacă am setat limba implicită a site-ului la FR; atunci numai modal arată în FR).
Întrebarea este, este aceasta modalitatea corectă de a seta limba folosită de modal?