Issue #3250191 by nod_, Wim Leers, lauriii, rkoller, Joachim Namyslo: Translation of toolbar button tooltips not working when text part language plugin is enabled

merge-requests/1727/head
Lauri Eskola 2022-02-10 09:56:26 +02:00
parent 3194ddf391
commit 414c7a4cfe
No known key found for this signature in database
GPG Key ID: 382FC0F5B0DF53F8
3 changed files with 34 additions and 24 deletions

View File

@ -367,25 +367,22 @@
*/
attach(element, format) {
const { editorClassic } = CKEditor5;
const {
toolbar,
plugins,
config: pluginConfig,
language,
} = format.editorSettings;
const { toolbar, plugins, config, language } = format.editorSettings;
const extraPlugins = selectPlugins(plugins);
const config = {
const pluginConfig = processConfig(config);
const editorConfig = {
extraPlugins,
toolbar,
language,
...processConfig(pluginConfig),
...pluginConfig,
// Language settings have a conflict between the editor localization
// settings and the "language" plugin.
language: { ...pluginConfig.language, ...language },
};
// Set the id immediately so that it is available when onChange is called.
const id = setElementId(element);
const { ClassicEditor } = editorClassic;
ClassicEditor.create(element, config)
ClassicEditor.create(element, editorConfig)
.then((editor) => {
// Save a reference to the initialized instance.
Drupal.CKEditor5Instances.set(id, editor);

View File

@ -161,21 +161,24 @@
const {
toolbar,
plugins,
config: pluginConfig,
config,
language
} = format.editorSettings;
const extraPlugins = selectPlugins(plugins);
const config = {
const pluginConfig = processConfig(config);
const editorConfig = {
extraPlugins,
toolbar,
language,
...processConfig(pluginConfig)
...pluginConfig,
language: { ...pluginConfig.language,
...language
}
};
const id = setElementId(element);
const {
ClassicEditor
} = editorClassic;
ClassicEditor.create(element, config).then(editor => {
ClassicEditor.create(element, editorConfig).then(editor => {
Drupal.CKEditor5Instances.set(id, editor);
if (element.hasAttribute('required')) {

View File

@ -29,18 +29,20 @@ class LanguageTest extends CKEditor5TestBase {
*
* @param string $langcode
* The language code.
* @param string $blockquote_translation
* The expected translation for blockquote toolbar button.
* @param string $toolbar_item_name
* The CKEditor 5 plugin to enable.
* @param string $toolbar_item_translation
* The expected translation for CKEditor 5 plugin toolbar button.
*
* @dataProvider provider
*/
public function test(string $langcode, string $blockquote_translation): void {
public function test(string $langcode, string $toolbar_item_name, string $toolbar_item_translation): void {
$page = $this->getSession()->getPage();
$assert_session = $this->assertSession();
$this->createNewTextFormat($page, $assert_session);
$this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-blockQuote'));
$this->triggerKeyUp('.ckeditor5-toolbar-item-blockQuote', 'ArrowDown');
$this->assertNotEmpty($assert_session->waitForElement('css', ".ckeditor5-toolbar-item-$toolbar_item_name"));
$this->triggerKeyUp(".ckeditor5-toolbar-item-$toolbar_item_name", 'ArrowDown');
$assert_session->assertWaitOnAjaxRequest();
$this->saveNewTextFormat($page, $assert_session);
@ -50,7 +52,7 @@ class LanguageTest extends CKEditor5TestBase {
$this->drupalGet('node/add');
$this->assertNotEmpty($assert_session->waitForElement('css', '.ck-editor'));
// Ensure that blockquote button is translated.
$assert_session->elementExists('xpath', "//span[text()='$blockquote_translation']");
$assert_session->elementExists('xpath', "//span[text()='$toolbar_item_translation']");
}
/**
@ -62,11 +64,19 @@ class LanguageTest extends CKEditor5TestBase {
return [
'Language code both in Drupal and CKEditor' => [
'langcode' => 'th',
'blockquote_translation' => 'คำพูดบล็อก',
'toolbar_item_name' => 'blockQuote',
'toolbar_item_translation' => 'คำพูดบล็อก',
],
'Language code transformed from browser mappings' => [
'langcode' => 'zh-hans',
'blockquote_translation' => '块引用',
'toolbar_item_name' => 'blockQuote',
'toolbar_item_translation' => '块引用',
],
'Language configuration conflict' => [
'langcode' => 'fr',
'toolbar_item_name' => 'textPartLanguage',
// cSpell:disable-next-line
'toolbar_item_translation' => 'Choisir la langue',
],
];
}