diff --git a/assets/ckeditor/plugins/PartDBLabel/PartDBLabelUI.js b/assets/ckeditor/plugins/PartDBLabel/PartDBLabelUI.js
index 860a2a2e..bb9fcd1f 100644
--- a/assets/ckeditor/plugins/PartDBLabel/PartDBLabelUI.js
+++ b/assets/ckeditor/plugins/PartDBLabel/PartDBLabelUI.js
@@ -20,6 +20,7 @@
import {Plugin} from 'ckeditor5';
require('./lang/de.js');
+require('./lang/en.js');
import { addListToDropdown, createDropdown } from 'ckeditor5';
diff --git a/assets/ckeditor/plugins/PartDBLabel/lang/de.js b/assets/ckeditor/plugins/PartDBLabel/lang/de.js
index 748b1607..e0ca0521 100644
--- a/assets/ckeditor/plugins/PartDBLabel/lang/de.js
+++ b/assets/ckeditor/plugins/PartDBLabel/lang/de.js
@@ -17,15 +17,9 @@
* along with this program. If not, see .
*/
-// Make sure that the global object is defined. If not, define it.
-window.CKEDITOR_TRANSLATIONS = window.CKEDITOR_TRANSLATIONS || {};
+import {add} from "ckeditor5";
-// Make sure that the dictionary for Polish translations exist.
-window.CKEDITOR_TRANSLATIONS[ 'de' ] = window.CKEDITOR_TRANSLATIONS[ 'de' ] || {};
-window.CKEDITOR_TRANSLATIONS[ 'de' ].dictionary = window.CKEDITOR_TRANSLATIONS[ 'de' ].dictionary || {};
-
-// Extend the dictionary for Polish translations with your translations:
-Object.assign( window.CKEDITOR_TRANSLATIONS[ 'de' ].dictionary, {
+add( "de", {
'Label Placeholder': 'Label Platzhalter',
'Part': 'Bauteil',
@@ -88,5 +82,4 @@ Object.assign( window.CKEDITOR_TRANSLATIONS[ 'de' ].dictionary, {
'Instance name': 'Instanzname',
'Target type': 'Zieltyp',
'URL of this Part-DB instance': 'URL dieser Part-DB Instanz',
-
-} );
\ No newline at end of file
+});
diff --git a/assets/ckeditor/plugins/PartDBLabel/lang/en.js b/assets/ckeditor/plugins/PartDBLabel/lang/en.js
new file mode 100644
index 00000000..8f77aaf1
--- /dev/null
+++ b/assets/ckeditor/plugins/PartDBLabel/lang/en.js
@@ -0,0 +1,84 @@
+/*
+ * This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
+ *
+ * Copyright (C) 2019 - 2025 Jan Böhmer (https://github.com/jbtronics)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+import {add} from "ckeditor5";
+
+add( "en", {
+ 'Label Placeholder': 'Label placeholder',
+ 'Part': 'Part',
+
+ 'Database ID': 'Database ID',
+ 'Part name': 'Part name',
+ 'Category': 'Category',
+ 'Category (Full path)': 'Category (full path)',
+ 'Manufacturer': 'Manufacturer',
+ 'Manufacturer (Full path)': 'Manufacturer (full path)',
+ 'Footprint': 'Footprint',
+ 'Footprint (Full path)': 'Footprint (full path)',
+ 'Mass': 'Mass',
+ 'Manufacturer Product Number (MPN)': 'Manufacturer Product Number (MPN)',
+ 'Internal Part Number (IPN)': 'Internal Part Number (IPN)',
+ 'Tags': 'Tags',
+ 'Manufacturing status': 'Manufacturing status',
+ 'Description': 'Description',
+ 'Description (plain text)': 'Description (plain text)',
+ 'Comment': 'Comment',
+ 'Comment (plain text)': 'Comment (plain text)',
+ 'Last modified datetime': 'Last modified datetime',
+ 'Creation datetime': 'Creation datetime',
+ 'IPN as QR code': 'IPN as QR code',
+ 'IPN as Code 128 barcode': 'IPN as Code 128 barcode',
+ 'IPN as Code 39 barcode': 'IPN as Code 39 barcode',
+
+ 'Lot ID': 'Lot ID',
+ 'Lot name': 'Lot name',
+ 'Lot comment': 'Lot comment',
+ 'Lot expiration date': 'Lot expiration date',
+ 'Lot amount': 'Lot amount',
+ 'Storage location': 'Storage location',
+ 'Storage location (Full path)': 'Storage location (full path)',
+ 'Full name of the lot owner': 'Full name of the lot owner',
+ 'Username of the lot owner': 'Username of the lot owner',
+
+ 'Barcodes': 'Barcodes',
+ 'Content of the 1D barcodes (like Code 39)': 'Content of the 1D barcodes (like Code 39)',
+ 'Content of the 2D barcodes (QR codes)': 'Content of the 2D barcodes (QR codes)',
+ 'QR code linking to this element': 'QR code linking to this element',
+ 'Code 128 barcode linking to this element': 'Code 128 barcode linking to this element',
+ 'Code 39 barcode linking to this element': 'Code 39 barcode linking to this element',
+ 'Code 93 barcode linking to this element': 'Code 93 barcode linking to this element',
+ 'Datamatrix code linking to this element': 'Datamatrix code linking to this element',
+
+ 'Location ID': 'Location ID',
+ 'Name': 'Name',
+ 'Full path': 'Full path',
+ 'Parent name': 'Parent name',
+ 'Parent full path': 'Parent full path',
+ 'Full name of the location owner': 'Full name of the location owner',
+ 'Username of the location owner': 'Username of the location owner',
+
+ 'Username': 'Username',
+ 'Username (including name)': 'Username (including name)',
+ 'Current datetime': 'Current datetime',
+ 'Current date': 'Current date',
+ 'Current time': 'Current time',
+ 'Instance name': 'Instance name',
+ 'Target type': 'Target type',
+ 'URL of this Part-DB instance': 'URL of this Part-DB instance',
+} );