From 98ffd115ff308eb2fdd38eb5724a08c52ca27ee6 Mon Sep 17 00:00:00 2001 From: Jens Meisner Date: Thu, 16 Jul 2026 08:56:16 +0200 Subject: [PATCH 1/6] blocklist: replace translations by side effect by translation exports --- .../src/blocklistui.ts | 5 ++--- .../ckeditor5-coremedia-blocklist/src/index.ts | 1 + .../src/lang/blocklist.ts | 16 ---------------- .../src/translations.ts | 17 +++++++++++++++++ .../src/ui/blockedWordView.ts | 1 - .../src/ui/blocklistInputView.ts | 11 +++++------ 6 files changed, 25 insertions(+), 26 deletions(-) delete mode 100644 packages/ckeditor5-coremedia-blocklist/src/lang/blocklist.ts create mode 100644 packages/ckeditor5-coremedia-blocklist/src/translations.ts diff --git a/packages/ckeditor5-coremedia-blocklist/src/blocklistui.ts b/packages/ckeditor5-coremedia-blocklist/src/blocklistui.ts index 4646a82d4b..22c8d2c903 100644 --- a/packages/ckeditor5-coremedia-blocklist/src/blocklistui.ts +++ b/packages/ckeditor5-coremedia-blocklist/src/blocklistui.ts @@ -1,19 +1,18 @@ import { ifCommand } from "@coremedia/ckeditor5-core-common"; import type { + DomOptimalPositionOptions, ModelTextProxy, ViewAttributeElement, ViewDocumentClickEvent, ViewDocumentFragment, ViewNode, ViewPosition, - DomOptimalPositionOptions, } from "ckeditor5"; -import { Plugin, ButtonView, clickOutsideHandler, ContextualBalloon } from "ckeditor5"; +import { ButtonView, clickOutsideHandler, ContextualBalloon, Plugin } from "ckeditor5"; import blocklistIcon from "../theme/icons/blocklist.svg"; import type BlocklistCommand from "./blocklistCommand"; import { BLOCKLIST_COMMAND_NAME } from "./blocklistCommand"; import BlocklistActionsView from "./ui/blocklistActionsView"; -import "./lang/blocklist"; import type { UnblockEvent } from "./ui/blockedWordView"; import BlocklistEditing from "./blocklistediting"; diff --git a/packages/ckeditor5-coremedia-blocklist/src/index.ts b/packages/ckeditor5-coremedia-blocklist/src/index.ts index 67deb99820..956250346e 100644 --- a/packages/ckeditor5-coremedia-blocklist/src/index.ts +++ b/packages/ckeditor5-coremedia-blocklist/src/index.ts @@ -10,3 +10,4 @@ export { default as Blocklist } from "./blocklist"; export { default as BlocklistActionsView } from "./ui/blocklistActionsView"; +export { de, en } from "./translations"; diff --git a/packages/ckeditor5-coremedia-blocklist/src/lang/blocklist.ts b/packages/ckeditor5-coremedia-blocklist/src/lang/blocklist.ts deleted file mode 100644 index 6066792dbf..0000000000 --- a/packages/ckeditor5-coremedia-blocklist/src/lang/blocklist.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Localizations for Blocklist Plugin. - * - * @packageDocumentation - */ -import { addTranslations } from "@coremedia/ckeditor5-core-common"; - -const german = { - "Edit blocklist": "Blockliste bearbeiten", - "Block": "Sperren", - "Add word to blocklist": "Begriff zur Blockliste hinzufügen", - "Remove word from blocklist": "Begriff aus Blockliste löschen", - "Enter word to block": "Begriff zur Liste hinzufügen", -}; -addTranslations("en", Object.fromEntries(Object.keys(german).map((k) => [k, k]))); -addTranslations("de", german); diff --git a/packages/ckeditor5-coremedia-blocklist/src/translations.ts b/packages/ckeditor5-coremedia-blocklist/src/translations.ts new file mode 100644 index 0000000000..1c35d4870e --- /dev/null +++ b/packages/ckeditor5-coremedia-blocklist/src/translations.ts @@ -0,0 +1,17 @@ +import type { Translations } from "ckeditor5"; + +export const de: Translations = { + de: { + dictionary: { + "Edit blocklist": "Blockliste bearbeiten", + "Block": "Sperren", + "Add word to blocklist": "Begriff zur Blockliste hinzufügen", + "Remove word from blocklist": "Begriff aus Blockliste löschen", + "Enter word to block": "Begriff zur Liste hinzufügen", + }, + }, +}; + +export const en: Translations = { + en: { dictionary: Object.fromEntries(Object.keys(de.de.dictionary).map((k) => [k, k])) }, +}; diff --git a/packages/ckeditor5-coremedia-blocklist/src/ui/blockedWordView.ts b/packages/ckeditor5-coremedia-blocklist/src/ui/blockedWordView.ts index 534662da0a..f312b6aa89 100644 --- a/packages/ckeditor5-coremedia-blocklist/src/ui/blockedWordView.ts +++ b/packages/ckeditor5-coremedia-blocklist/src/ui/blockedWordView.ts @@ -2,7 +2,6 @@ import type { Locale } from "ckeditor5"; import { ButtonView, KeystrokeHandler, submitHandler, View, ViewCollection } from "ckeditor5"; import trashbinIcon from "../../theme/icons/trashbin.svg"; import "../../theme/blockedwordview.css"; -import "../lang/blocklist"; /** * The blocked word view. diff --git a/packages/ckeditor5-coremedia-blocklist/src/ui/blocklistInputView.ts b/packages/ckeditor5-coremedia-blocklist/src/ui/blocklistInputView.ts index 24b7dd681f..6a2abc38ff 100644 --- a/packages/ckeditor5-coremedia-blocklist/src/ui/blocklistInputView.ts +++ b/packages/ckeditor5-coremedia-blocklist/src/ui/blocklistInputView.ts @@ -1,14 +1,13 @@ -import type { ViewCollection, InputTextView, Locale } from "ckeditor5"; +import type { InputTextView, Locale, ViewCollection } from "ckeditor5"; import { ButtonView, - LabeledFieldView, - View, createLabeledInputText, - submitHandler, - KeystrokeHandler, IconCheck, + KeystrokeHandler, + LabeledFieldView, + submitHandler, + View, } from "ckeditor5"; -import "../lang/blocklist"; /** * A view, displaying an input field and a save button next to it. From 34190b1eac24005a89b1ecb96a5bf28c5e22c448 Mon Sep 17 00:00:00 2001 From: Jens Meisner Date: Thu, 16 Jul 2026 08:56:51 +0200 Subject: [PATCH 2/6] content-clipboard: replace translations by side effect by translation exports --- .../src/index-doc.ts | 2 -- .../src/index.ts | 1 + .../src/lang/index-doc.ts | 8 -------- .../src/lang/paste.ts | 12 ------------ .../src/paste/PasteContentUI.ts | 1 - .../src/translations.ts | 13 +++++++++++++ 6 files changed, 14 insertions(+), 23 deletions(-) delete mode 100644 packages/ckeditor5-coremedia-content-clipboard/src/lang/index-doc.ts delete mode 100644 packages/ckeditor5-coremedia-content-clipboard/src/lang/paste.ts create mode 100644 packages/ckeditor5-coremedia-content-clipboard/src/translations.ts diff --git a/packages/ckeditor5-coremedia-content-clipboard/src/index-doc.ts b/packages/ckeditor5-coremedia-content-clipboard/src/index-doc.ts index 5f33cd15c3..0e1d0c1c4d 100644 --- a/packages/ckeditor5-coremedia-content-clipboard/src/index-doc.ts +++ b/packages/ckeditor5-coremedia-content-clipboard/src/index-doc.ts @@ -10,8 +10,6 @@ export * as integrations from "./integrations/index-doc"; */ export * as paste from "./paste/index-doc"; -export type * as lang from "./lang/index-doc"; - export * from "./ContentClipboard"; export { default as ContentClipboard } from "./ContentClipboard"; diff --git a/packages/ckeditor5-coremedia-content-clipboard/src/index.ts b/packages/ckeditor5-coremedia-content-clipboard/src/index.ts index da9a3b411c..9df24eb85e 100644 --- a/packages/ckeditor5-coremedia-content-clipboard/src/index.ts +++ b/packages/ckeditor5-coremedia-content-clipboard/src/index.ts @@ -10,5 +10,6 @@ export { default as PasteContentPlugin } from "./paste/PasteContentPlugin"; export { default as PasteContentUI } from "./paste/PasteContentUI"; export { PasteContentCommand } from "./paste/PasteContentCommand"; export type { CreateModelFunction, CreateModelFunctionCreator } from "./ContentToModelRegistry"; +export { de, en } from "./translations"; import "./augmentation"; diff --git a/packages/ckeditor5-coremedia-content-clipboard/src/lang/index-doc.ts b/packages/ckeditor5-coremedia-content-clipboard/src/lang/index-doc.ts deleted file mode 100644 index 8c79e382d2..0000000000 --- a/packages/ckeditor5-coremedia-content-clipboard/src/lang/index-doc.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Localizations. - * - * @packageDocumentation - * @category Virtual - */ - -export type * as contentlink from "./paste"; diff --git a/packages/ckeditor5-coremedia-content-clipboard/src/lang/paste.ts b/packages/ckeditor5-coremedia-content-clipboard/src/lang/paste.ts deleted file mode 100644 index 88c3b84035..0000000000 --- a/packages/ckeditor5-coremedia-content-clipboard/src/lang/paste.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Localizations for PasteContent feature. - * - * @packageDocumentation - */ -import { addTranslations } from "@coremedia/ckeditor5-core-common"; - -const german = { - "Paste Content": "Inhalte einfügen", -}; -addTranslations("en", Object.fromEntries(Object.keys(german).map((k) => [k, k]))); -addTranslations("de", german); diff --git a/packages/ckeditor5-coremedia-content-clipboard/src/paste/PasteContentUI.ts b/packages/ckeditor5-coremedia-content-clipboard/src/paste/PasteContentUI.ts index ed978e2750..9f5bcd9fd7 100644 --- a/packages/ckeditor5-coremedia-content-clipboard/src/paste/PasteContentUI.ts +++ b/packages/ckeditor5-coremedia-content-clipboard/src/paste/PasteContentUI.ts @@ -2,7 +2,6 @@ import { reportInitEnd, reportInitStart } from "@coremedia/ckeditor5-core-common import type { Editor } from "ckeditor5"; import { ButtonView, Plugin } from "ckeditor5"; import pasteIcon from "../../theme/icons/paste.svg"; -import "../lang/paste"; export default class PasteContentUI extends Plugin { static readonly pluginName = "pasteContentUI"; diff --git a/packages/ckeditor5-coremedia-content-clipboard/src/translations.ts b/packages/ckeditor5-coremedia-content-clipboard/src/translations.ts new file mode 100644 index 0000000000..44477787d2 --- /dev/null +++ b/packages/ckeditor5-coremedia-content-clipboard/src/translations.ts @@ -0,0 +1,13 @@ +import type { Translations } from "ckeditor5"; + +export const de: Translations = { + de: { + dictionary: { + "Paste Content": "Inhalte einfügen", + }, + }, +}; + +export const en: Translations = { + en: { dictionary: Object.fromEntries(Object.keys(de.de.dictionary).map((k) => [k, k])) }, +}; From c8a7441783560d090fdeae0ec05bdebba5af94bd Mon Sep 17 00:00:00 2001 From: Jens Meisner Date: Thu, 16 Jul 2026 08:57:10 +0200 Subject: [PATCH 3/6] images: replace translations by side effect by translation exports --- .../ContentImageOpenInTabUI.ts | 1 - .../ckeditor5-coremedia-images/src/converters.ts | 15 ++++++--------- packages/ckeditor5-coremedia-images/src/index.ts | 1 + .../src/lang/contentImageOpenInTab.ts | 12 ------------ .../src/lang/contentimage.ts | 12 ------------ .../src/lang/index-doc.ts | 8 -------- .../src/translations.ts | 9 +++++++++ 7 files changed, 16 insertions(+), 42 deletions(-) delete mode 100644 packages/ckeditor5-coremedia-images/src/lang/contentImageOpenInTab.ts delete mode 100644 packages/ckeditor5-coremedia-images/src/lang/contentimage.ts delete mode 100644 packages/ckeditor5-coremedia-images/src/lang/index-doc.ts create mode 100644 packages/ckeditor5-coremedia-images/src/translations.ts diff --git a/packages/ckeditor5-coremedia-images/src/contentImageOpenInTab/ContentImageOpenInTabUI.ts b/packages/ckeditor5-coremedia-images/src/contentImageOpenInTab/ContentImageOpenInTabUI.ts index 6cf3b255ed..202976503a 100644 --- a/packages/ckeditor5-coremedia-images/src/contentImageOpenInTab/ContentImageOpenInTabUI.ts +++ b/packages/ckeditor5-coremedia-images/src/contentImageOpenInTab/ContentImageOpenInTabUI.ts @@ -4,7 +4,6 @@ import { LoggerProvider } from "@coremedia/ckeditor5-logging"; import type { Editor } from "ckeditor5"; import { ButtonView, Plugin } from "ckeditor5"; import openInTabIcon from "../../theme/icons/openInTab.svg"; -import "../lang/contentImageOpenInTab"; import ContentImageEditingPlugin from "../ContentImageEditingPlugin"; import { executeOpenImageInTabCommand, requireOpenImageInTabCommand } from "./OpenImageInTabCommand"; diff --git a/packages/ckeditor5-coremedia-images/src/converters.ts b/packages/ckeditor5-coremedia-images/src/converters.ts index 55e467ff76..0060dbc5be 100644 --- a/packages/ckeditor5-coremedia-images/src/converters.ts +++ b/packages/ckeditor5-coremedia-images/src/converters.ts @@ -9,18 +9,17 @@ import { LoggerProvider } from "@coremedia/ckeditor5-logging"; import { serviceAgent } from "@coremedia/service-agent"; import type { DowncastDispatcher, - ViewDowncastWriter, Editor, - ModelElement, EventInfo, + ModelElement, UpcastConversionApi, UpcastDispatcher, + ViewDowncastWriter, ViewElement, } from "ckeditor5"; import { IMAGE_PLUGIN_NAME, IMAGE_SPINNER_CSS_CLASS, IMAGE_SPINNER_SVG } from "./constants"; import ModelBoundSubscriptionPlugin from "./ModelBoundSubscriptionPlugin"; import "../theme/loadmask.css"; -import "./lang/contentimage"; const LOGGER = LoggerProvider.getLogger(IMAGE_PLUGIN_NAME); @@ -62,14 +61,12 @@ export const preventUpcastImageSrc = dispatcher.on( `element:img`, (evt: EventInfo, data, conversionApi: UpcastConversionApi) => { - // eslint-disable-next-line - if (data.viewItem.hasAttribute("data-xlink-href")) { - // eslint-disable-next-line - conversionApi.consumable.consume(data.viewItem, { + if (data.viewItem.hasAttribute("data-xlink-href")) { + conversionApi.consumable.consume(data.viewItem, { attributes: "src", }); - // eslint-disable-next-line - data.viewItem._removeAttribute("src"); + + data.viewItem._removeAttribute("src"); } }, { diff --git a/packages/ckeditor5-coremedia-images/src/index.ts b/packages/ckeditor5-coremedia-images/src/index.ts index 17530741d1..854ed82c1e 100644 --- a/packages/ckeditor5-coremedia-images/src/index.ts +++ b/packages/ckeditor5-coremedia-images/src/index.ts @@ -8,5 +8,6 @@ export { default as ContentImageOpenInTabUI } from "./contentImageOpenInTab/Cont export { default as ContentImagePlugin } from "./ContentImagePlugin"; export { default as ModelBoundSubscriptionPlugin } from "./ModelBoundSubscriptionPlugin"; export { OpenImageInTabCommand } from "./contentImageOpenInTab/OpenImageInTabCommand"; +export { de, en } from "./translations"; import "./augmentation"; diff --git a/packages/ckeditor5-coremedia-images/src/lang/contentImageOpenInTab.ts b/packages/ckeditor5-coremedia-images/src/lang/contentImageOpenInTab.ts deleted file mode 100644 index 11bdad6c65..0000000000 --- a/packages/ckeditor5-coremedia-images/src/lang/contentImageOpenInTab.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Localizations for ContentImageOpenInTab Plugin. - * - * @packageDocumentation - */ -import { addTranslations } from "@coremedia/ckeditor5-core-common"; - -const german = { - "Open in tab": "Im Tab öffnen", -}; -addTranslations("en", Object.fromEntries(Object.keys(german).map((k) => [k, k]))); -addTranslations("de", german); diff --git a/packages/ckeditor5-coremedia-images/src/lang/contentimage.ts b/packages/ckeditor5-coremedia-images/src/lang/contentimage.ts deleted file mode 100644 index 8916c588f1..0000000000 --- a/packages/ckeditor5-coremedia-images/src/lang/contentimage.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Localizations for ContentImage Plugin. - * - * @packageDocumentation - */ -import { addTranslations } from "@coremedia/ckeditor5-core-common"; - -const german = { - "loading...": "Inhalt wird geladen...", -}; -addTranslations("en", Object.fromEntries(Object.keys(german).map((k) => [k, k]))); -addTranslations("de", german); diff --git a/packages/ckeditor5-coremedia-images/src/lang/index-doc.ts b/packages/ckeditor5-coremedia-images/src/lang/index-doc.ts deleted file mode 100644 index 93cbebdb54..0000000000 --- a/packages/ckeditor5-coremedia-images/src/lang/index-doc.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Localizations. - * - * @packageDocumentation - * @category Virtual - */ - -export type * as contentimage from "./contentimage"; diff --git a/packages/ckeditor5-coremedia-images/src/translations.ts b/packages/ckeditor5-coremedia-images/src/translations.ts new file mode 100644 index 0000000000..20d0ef1186 --- /dev/null +++ b/packages/ckeditor5-coremedia-images/src/translations.ts @@ -0,0 +1,9 @@ +import type { Translations } from "ckeditor5"; + +export const de: Translations = { + de: { dictionary: { "loading...": "Inhalt wird geladen...", "Open in tab": "Im Tab öffnen" } }, +}; + +export const en: Translations = { + en: { dictionary: Object.fromEntries(Object.keys(de.de.dictionary).map((k) => [k, k])) }, +}; From b157cafcca8061c7523b247b9faaa144835e9ad2 Mon Sep 17 00:00:00 2001 From: Jens Meisner Date: Thu, 16 Jul 2026 08:57:31 +0200 Subject: [PATCH 4/6] link: replace translations by side effect by translation exports --- .../src/contentlink/ContentLinks.ts | 1 - .../ckeditor5-coremedia-link/src/index-doc.ts | 1 - .../ckeditor5-coremedia-link/src/index.ts | 1 + .../src/lang/contentlink.ts | 17 -------------- .../src/lang/index-doc.ts | 9 -------- .../src/lang/linktarget.ts | 16 ------------- .../src/linktarget/LinkTarget.ts | 1 - .../src/translations.ts | 23 +++++++++++++++++++ 8 files changed, 24 insertions(+), 45 deletions(-) delete mode 100644 packages/ckeditor5-coremedia-link/src/lang/contentlink.ts delete mode 100644 packages/ckeditor5-coremedia-link/src/lang/index-doc.ts delete mode 100644 packages/ckeditor5-coremedia-link/src/lang/linktarget.ts create mode 100644 packages/ckeditor5-coremedia-link/src/translations.ts diff --git a/packages/ckeditor5-coremedia-link/src/contentlink/ContentLinks.ts b/packages/ckeditor5-coremedia-link/src/contentlink/ContentLinks.ts index df152baae4..d05c2f7378 100644 --- a/packages/ckeditor5-coremedia-link/src/contentlink/ContentLinks.ts +++ b/packages/ckeditor5-coremedia-link/src/contentlink/ContentLinks.ts @@ -11,7 +11,6 @@ import type { Subscription } from "rxjs"; import { createDecoratorHook } from "../utils"; import ContentLinkClipboardPlugin from "./ContentLinkClipboardPlugin"; import ContentLinkCommandHook from "./ContentLinkCommandHook"; -import "../lang/contentlink"; import { closeContextualBalloon } from "./ContentLinkViewUtils"; import { hasRequiredInternalLinkUI } from "./InternalLinkUI"; import { parseLinkBalloonConfig } from "./LinkBalloonConfig"; diff --git a/packages/ckeditor5-coremedia-link/src/index-doc.ts b/packages/ckeditor5-coremedia-link/src/index-doc.ts index 7ccf26c03e..61dee8398f 100644 --- a/packages/ckeditor5-coremedia-link/src/index-doc.ts +++ b/packages/ckeditor5-coremedia-link/src/index-doc.ts @@ -7,5 +7,4 @@ export * as utils from "./utils"; export * as contentlink from "./contentlink/index-doc"; -export type * as lang from "./lang/index-doc"; export * as linktarget from "./linktarget/index-doc"; diff --git a/packages/ckeditor5-coremedia-link/src/index.ts b/packages/ckeditor5-coremedia-link/src/index.ts index 953289747b..6e5fe14f5f 100644 --- a/packages/ckeditor5-coremedia-link/src/index.ts +++ b/packages/ckeditor5-coremedia-link/src/index.ts @@ -32,4 +32,5 @@ export { default as LinkTargetCommand } from "./linktarget/command/LinkTargetCom export { default as LinkTargetModelView } from "./linktarget/LinkTargetModelView"; export { default as CustomLinkTargetUI } from "./linktarget/ui/CustomLinkTargetUI"; +export { de, en } from "./translations"; import "./augmentation"; diff --git a/packages/ckeditor5-coremedia-link/src/lang/contentlink.ts b/packages/ckeditor5-coremedia-link/src/lang/contentlink.ts deleted file mode 100644 index cc3211882a..0000000000 --- a/packages/ckeditor5-coremedia-link/src/lang/contentlink.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Localizations for ContentLink Plugin. - * - * @packageDocumentation - */ -import { addTranslations } from "@coremedia/ckeditor5-core-common"; - -const german = { - "Link": "Verknüpfung", - "Enter url or drag and drop content onto this area.": "URL angeben oder Inhalt hierher ziehen.", - "No results found.": "Keine Ergebnisse gefunden.", - "Enter at least 3 characters to search.": "Geben Sie mindestens 3 Zeichen für die Suche ein.", - "Loading Content...": "Lade Inhalt...", - "Open Library": "Öffne Bibliothek", -}; -addTranslations("en", Object.fromEntries(Object.keys(german).map((k) => [k, k]))); -addTranslations("de", german); diff --git a/packages/ckeditor5-coremedia-link/src/lang/index-doc.ts b/packages/ckeditor5-coremedia-link/src/lang/index-doc.ts deleted file mode 100644 index 7a3e5ec7e6..0000000000 --- a/packages/ckeditor5-coremedia-link/src/lang/index-doc.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Localizations. - * - * @packageDocumentation - * @category Virtual - */ - -export type * as contentlink from "./contentlink"; -export type * as linktarget from "./linktarget"; diff --git a/packages/ckeditor5-coremedia-link/src/lang/linktarget.ts b/packages/ckeditor5-coremedia-link/src/lang/linktarget.ts deleted file mode 100644 index 71724d987d..0000000000 --- a/packages/ckeditor5-coremedia-link/src/lang/linktarget.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Localizations for LinkTarget Plugin. - * - * @packageDocumentation - */ -import { addTranslations } from "@coremedia/ckeditor5-core-common"; - -const german = { - "Target": "Ziel", - "Open in Current Tab": "Im aktuellen Tab öffnen", - "Open in New Tab": "In neuem Tab öffnen", - "Show Embedded": "Eingebettet öffnen", - "Open in Frame": "Im Frame öffnen", -}; -addTranslations("en", Object.fromEntries(Object.keys(german).map((k) => [k, k]))); -addTranslations("de", german); diff --git a/packages/ckeditor5-coremedia-link/src/linktarget/LinkTarget.ts b/packages/ckeditor5-coremedia-link/src/linktarget/LinkTarget.ts index f1a677daf9..0602ac100e 100644 --- a/packages/ckeditor5-coremedia-link/src/linktarget/LinkTarget.ts +++ b/packages/ckeditor5-coremedia-link/src/linktarget/LinkTarget.ts @@ -2,7 +2,6 @@ import type { Editor, ToolbarConfig } from "ckeditor5"; import { Link, Plugin } from "ckeditor5"; import { CONTENT_LINK_VIEW_COMPONENT_NAME } from "../contentlink/ui/ContentLinkActionsViewExtension"; import LinkTargetActionsViewExtension from "./LinkTargetActionsViewExtension"; -import "../lang/linktarget"; import LinkTargetModelView from "./LinkTargetModelView"; const CKEDITOR_LINK_PREVIEW_COMPONENT_NAME = "linkPreview"; diff --git a/packages/ckeditor5-coremedia-link/src/translations.ts b/packages/ckeditor5-coremedia-link/src/translations.ts new file mode 100644 index 0000000000..65cad98da5 --- /dev/null +++ b/packages/ckeditor5-coremedia-link/src/translations.ts @@ -0,0 +1,23 @@ +import type { Translations } from "ckeditor5"; + +export const de: Translations = { + de: { + dictionary: { + "Link": "Verknüpfung", + "Enter url or drag and drop content onto this area.": "URL angeben oder Inhalt hierher ziehen.", + "No results found.": "Keine Ergebnisse gefunden.", + "Enter at least 3 characters to search.": "Geben Sie mindestens 3 Zeichen für die Suche ein.", + "Loading Content...": "Lade Inhalt...", + "Open Library": "Öffne Bibliothek", + "Target": "Ziel", + "Open in Current Tab": "Im aktuellen Tab öffnen", + "Open in New Tab": "In neuem Tab öffnen", + "Show Embedded": "Eingebettet öffnen", + "Open in Frame": "Im Frame öffnen", + }, + }, +}; + +export const en: Translations = { + en: { dictionary: Object.fromEntries(Object.keys(de.de.dictionary).map((k) => [k, k])) }, +}; From 79003aede29ccfc56880e20e18c3b9c31abcf72e Mon Sep 17 00:00:00 2001 From: Jens Meisner Date: Thu, 16 Jul 2026 08:58:03 +0200 Subject: [PATCH 5/6] removed now unused helper function --- packages/ckeditor5-core-common/src/index.ts | 2 +- packages/ckeditor5-core-common/src/utils.ts | 21 --------------------- 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/packages/ckeditor5-core-common/src/index.ts b/packages/ckeditor5-core-common/src/index.ts index 25db045edb..3953ca8b8a 100644 --- a/packages/ckeditor5-core-common/src/index.ts +++ b/packages/ckeditor5-core-common/src/index.ts @@ -10,6 +10,6 @@ export { type InitInformation, type OnMissingPlugin, } from "./Plugins"; -export { addTranslations, openLink } from "./utils"; +export { openLink } from "./utils"; export type { CommandHandler } from "./Commands"; export { disableCommand, enableCommand, ifCommand, optionalCommandNotFound, recommendCommand } from "./Commands"; diff --git a/packages/ckeditor5-core-common/src/utils.ts b/packages/ckeditor5-core-common/src/utils.ts index e2dad01816..42a46955a3 100644 --- a/packages/ckeditor5-core-common/src/utils.ts +++ b/packages/ckeditor5-core-common/src/utils.ts @@ -1,24 +1,3 @@ -import { global } from "ckeditor5"; - -if (!global.window.CKEDITOR_TRANSLATIONS) { - global.window.CKEDITOR_TRANSLATIONS = {}; -} - -// as add is not exposed anymore from the unified package, we need to implement it here -export const addTranslations = ( - language: string, - translations: Readonly>, - getPluralForm?: (n: number) => number, -) => { - if (!global.window.CKEDITOR_TRANSLATIONS[language]) { - global.window.CKEDITOR_TRANSLATIONS[language] = { dictionary: {} }; - } - const languageTranslations = global.window.CKEDITOR_TRANSLATIONS[language]; - languageTranslations.dictionary = languageTranslations.dictionary || {}; - languageTranslations.getPluralForm = getPluralForm ?? languageTranslations.getPluralForm; - Object.assign(languageTranslations.dictionary, translations); -}; - /** * Opens the link in a new browser tab. */ From 38a1824abfe41b1890691990a36c0531aaffeef4 Mon Sep 17 00:00:00 2001 From: Jens Meisner Date: Thu, 16 Jul 2026 09:01:54 +0200 Subject: [PATCH 6/6] added translations to app --- app/src/editors/bbCode.ts | 9 ++++++++- app/src/editors/richtext.ts | 35 ++++++++++++++++++++++++++++++++--- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/app/src/editors/bbCode.ts b/app/src/editors/bbCode.ts index 8b134cc370..73271c5238 100644 --- a/app/src/editors/bbCode.ts +++ b/app/src/editors/bbCode.ts @@ -1,6 +1,10 @@ import { BBCode } from "@coremedia/ckeditor5-bbcode"; import { DataFacade } from "@coremedia/ckeditor5-data-facade"; -import { Blocklist } from "@coremedia/ckeditor5-coremedia-blocklist"; +import { + Blocklist, + de as deBlocklistTranslations, + en as enBlocklistTranslations, +} from "@coremedia/ckeditor5-coremedia-blocklist"; import { MockBlocklistService } from "@coremedia-internal/ckeditor5-coremedia-studio-integration-mock"; import { Autoformat, @@ -34,6 +38,8 @@ import { Strikethrough, Underline, } from "ckeditor5"; +import enCoreTranslations from "ckeditor5/translations/en.js"; +import deCoreTranslations from "ckeditor5/translations/de.js"; import { updatePreview } from "../preview"; import type { ApplicationState } from "../ApplicationState"; import type { CKEditorInstanceFactory } from "../CKEditorInstanceFactory"; @@ -298,6 +304,7 @@ export const createBBCodeEditor: CKEditorInstanceFactory = ( // Won't change the language of content. content: "en", }, + translations: [enCoreTranslations, deCoreTranslations, enBlocklistTranslations, deBlocklistTranslations], list: { properties: { startIndex: false, diff --git a/app/src/editors/richtext.ts b/app/src/editors/richtext.ts index a6c97a2c5c..2422dd9164 100644 --- a/app/src/editors/richtext.ts +++ b/app/src/editors/richtext.ts @@ -7,10 +7,21 @@ import { ContentLinks, COREMEDIA_CONTEXT_KEY, COREMEDIA_LINK_CONFIG_KEY, + de as deLinkTranslations, + en as enLinkTranslations, LinkTarget, } from "@coremedia/ckeditor5-coremedia-link"; -import { ContentClipboard, PasteContentPlugin } from "@coremedia/ckeditor5-coremedia-content-clipboard"; -import { ContentImagePlugin } from "@coremedia/ckeditor5-coremedia-images"; +import { + ContentClipboard, + de as deClipboardTranslations, + en as enClipboardTranslations, + PasteContentPlugin, +} from "@coremedia/ckeditor5-coremedia-content-clipboard"; +import { + ContentImagePlugin, + de as deImagesTranslations, + en as enImagesTranslations, +} from "@coremedia/ckeditor5-coremedia-images"; import { FontMapper as CoreMediaFontMapper } from "@coremedia/ckeditor5-font-mapper"; import { COREMEDIA_MOCK_CONTENT_PLUGIN, @@ -63,6 +74,8 @@ import { TableToolbar, Underline, } from "ckeditor5"; +import enCoreTranslations from "ckeditor5/translations/en.js"; +import deCoreTranslations from "ckeditor5/translations/de.js"; import type { RuleConfig } from "@coremedia/ckeditor5-dom-converter"; import type { LatestCoreMediaRichTextConfig, @@ -78,7 +91,11 @@ import type { FilterRuleSetConfiguration } from "@coremedia/ckeditor5-dataproces import type { LinkAttributesConfig } from "@coremedia/ckeditor5-link-common"; import { LinkAttributes } from "@coremedia/ckeditor5-link-common"; import { Differencing } from "@coremedia/ckeditor5-coremedia-differencing"; -import { Blocklist } from "@coremedia/ckeditor5-coremedia-blocklist"; +import { + Blocklist, + de as deBlocklistTranslations, + en as enBlocklistTranslations, +} from "@coremedia/ckeditor5-coremedia-blocklist"; import { DataFacade } from "@coremedia/ckeditor5-data-facade"; import type { CKEditorInstanceFactory } from "../CKEditorInstanceFactory"; import type { ApplicationState } from "../ApplicationState"; @@ -418,6 +435,18 @@ export const createRichTextEditor: CKEditorInstanceFactory = async ( // Won't change the language of content. content: "en", }, + translations: [ + enCoreTranslations, + deCoreTranslations, + enBlocklistTranslations, + deBlocklistTranslations, + enImagesTranslations, + deImagesTranslations, + enLinkTranslations, + deLinkTranslations, + enClipboardTranslations, + deClipboardTranslations, + ], autosave: { waitingTime: 1000, // in ms },