Merge pull request #673 from dealerweb/i18n/editor-toolbar

i18n: localize the editor toolbar in all 23 locales
This commit is contained in:
Linus Rath
2026-07-24 21:55:01 +02:00
committed by GitHub
24 changed files with 769 additions and 30 deletions
+33 -30
View File
@@ -21,6 +21,7 @@ import { QuotedHtml, serializeEditorContent } from "@/components/email/quoted-ht
import { SignatureBlock } from "@/components/email/signature-block";
import { cn } from "@/lib/utils";
import { useSettingsStore } from "@/stores/settings-store";
import { useTranslations } from "next-intl";
import {
Bold,
Italic,
@@ -153,6 +154,7 @@ const TEXT_COLORS = [
];
function TableSizePicker({ onPick }: { onPick: (rows: number, cols: number) => void }) {
const t = useTranslations("email_composer.toolbar");
const [hover, setHover] = useState<{ r: number; c: number } | null>(null);
return (
<div>
@@ -180,7 +182,7 @@ function TableSizePicker({ onPick }: { onPick: (rows: number, cols: number) => v
})}
</div>
<div className="text-xs text-muted-foreground mt-1.5 text-center">
{hover ? `${hover.r + 1} × ${hover.c + 1}` : "Pick size"}
{hover ? `${hover.r + 1} × ${hover.c + 1}` : t("pick_size")}
</div>
</div>
);
@@ -343,6 +345,7 @@ export function RichTextEditor({
.run();
}, [editor]);
const tToolbar = useTranslations("email_composer.toolbar");
const [tableMenuOpen, setTableMenuOpen] = useState(false);
const tableWrapperRef = useRef<HTMLDivElement>(null);
const [colorMenuOpen, setColorMenuOpen] = useState(false);
@@ -383,28 +386,28 @@ export function RichTextEditor({
<ToolbarButton
active={editor.isActive("bold")}
onClick={() => editor.chain().focus().toggleBold().run()}
title="Bold"
title={tToolbar("bold")}
>
<Bold className="w-4 h-4" />
</ToolbarButton>
<ToolbarButton
active={editor.isActive("italic")}
onClick={() => editor.chain().focus().toggleItalic().run()}
title="Italic"
title={tToolbar("italic")}
>
<Italic className="w-4 h-4" />
</ToolbarButton>
<ToolbarButton
active={editor.isActive("underline")}
onClick={() => editor.chain().focus().toggleUnderline().run()}
title="Underline"
title={tToolbar("underline")}
>
<UnderlineIcon className="w-4 h-4" />
</ToolbarButton>
<ToolbarButton
active={editor.isActive("strike")}
onClick={() => editor.chain().focus().toggleStrike().run()}
title="Strikethrough"
title={tToolbar("strikethrough")}
>
<Strikethrough className="w-4 h-4" />
</ToolbarButton>
@@ -412,7 +415,7 @@ export function RichTextEditor({
<ToolbarButton
active={!!editor.getAttributes("textStyle").color}
onClick={() => setColorMenuOpen((v) => !v)}
title="Text color"
title={tToolbar("text_color")}
>
{/* The icon itself previews the active colour - no layout shift. */}
<Baseline className="w-4 h-4" style={{ color: editor.getAttributes("textStyle").color || undefined }} />
@@ -446,7 +449,7 @@ export function RichTextEditor({
setColorMenuOpen(false);
}}
>
<RemoveFormatting className="w-4 h-4" /> Remove color
<RemoveFormatting className="w-4 h-4" /> {tToolbar("remove_color")}
</button>
</div>
)}
@@ -457,14 +460,14 @@ export function RichTextEditor({
<ToolbarButton
active={editor.isActive("heading", { level: 1 })}
onClick={() => editor.chain().focus().toggleHeading({ level: 1 }).run()}
title="Heading 1"
title={tToolbar("heading_1")}
>
<Heading1 className="w-4 h-4" />
</ToolbarButton>
<ToolbarButton
active={editor.isActive("heading", { level: 2 })}
onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()}
title="Heading 2"
title={tToolbar("heading_2")}
>
<Heading2 className="w-4 h-4" />
</ToolbarButton>
@@ -474,28 +477,28 @@ export function RichTextEditor({
<ToolbarButton
active={editor.isActive("bulletList")}
onClick={() => editor.chain().focus().toggleBulletList().run()}
title="Bullet List"
title={tToolbar("bullet_list")}
>
<List className="w-4 h-4" />
</ToolbarButton>
<ToolbarButton
active={editor.isActive("orderedList")}
onClick={() => editor.chain().focus().toggleOrderedList().run()}
title="Ordered List"
title={tToolbar("ordered_list")}
>
<ListOrdered className="w-4 h-4" />
</ToolbarButton>
<ToolbarButton
active={editor.isActive("blockquote")}
onClick={() => editor.chain().focus().toggleBlockquote().run()}
title="Quote"
title={tToolbar("quote")}
>
<Quote className="w-4 h-4" />
</ToolbarButton>
<ToolbarButton
active={editor.isActive("codeBlock")}
onClick={() => editor.chain().focus().toggleCodeBlock().run()}
title="Code Block"
title={tToolbar("code_block")}
>
<Code className="w-4 h-4" />
</ToolbarButton>
@@ -505,21 +508,21 @@ export function RichTextEditor({
<ToolbarButton
active={editor.isActive({ textAlign: "left" })}
onClick={() => editor.chain().focus().setTextAlign("left").run()}
title="Align Left"
title={tToolbar("align_left")}
>
<AlignLeft className="w-4 h-4" />
</ToolbarButton>
<ToolbarButton
active={editor.isActive({ textAlign: "center" })}
onClick={() => editor.chain().focus().setTextAlign("center").run()}
title="Align Center"
title={tToolbar("align_center")}
>
<AlignCenter className="w-4 h-4" />
</ToolbarButton>
<ToolbarButton
active={editor.isActive({ textAlign: "right" })}
onClick={() => editor.chain().focus().setTextAlign("right").run()}
title="Align Right"
title={tToolbar("align_right")}
>
<AlignRight className="w-4 h-4" />
</ToolbarButton>
@@ -534,7 +537,7 @@ export function RichTextEditor({
editor.getAttributes("paragraph").dir || editor.getAttributes("heading").dir;
editor.chain().focus().setTextDirection(cur === "rtl" ? "ltr" : "rtl").run();
}}
title="Text direction (RTL/LTR)"
title={tToolbar("text_direction")}
>
<ArrowLeftRight className="w-4 h-4" />
</ToolbarButton>
@@ -545,7 +548,7 @@ export function RichTextEditor({
<ToolbarButton
active={editor.isActive("link")}
onClick={addLink}
title="Link"
title={tToolbar("link")}
>
<LinkIcon className="w-4 h-4" />
</ToolbarButton>
@@ -554,7 +557,7 @@ export function RichTextEditor({
<ToolbarButton
active={editor.isActive("table")}
onClick={() => setTableMenuOpen((v) => !v)}
title="Table"
title={tToolbar("table")}
>
<TableIcon className="w-4 h-4" />
</ToolbarButton>
@@ -567,28 +570,28 @@ export function RichTextEditor({
className="flex items-center gap-2 px-2 py-1.5 text-sm rounded hover:bg-accent text-start"
onClick={() => { editor.chain().focus().addRowBefore().run(); setTableMenuOpen(false); }}
>
<Rows3 className="w-4 h-4" /> Add row above
<Rows3 className="w-4 h-4" /> {tToolbar("add_row_above")}
</button>
<button
type="button"
className="flex items-center gap-2 px-2 py-1.5 text-sm rounded hover:bg-accent text-start"
onClick={() => { editor.chain().focus().addRowAfter().run(); setTableMenuOpen(false); }}
>
<Rows3 className="w-4 h-4" /> Add row below
<Rows3 className="w-4 h-4" /> {tToolbar("add_row_below")}
</button>
<button
type="button"
className="flex items-center gap-2 px-2 py-1.5 text-sm rounded hover:bg-accent text-start"
onClick={() => { editor.chain().focus().addColumnBefore().run(); setTableMenuOpen(false); }}
>
<Columns3 className="w-4 h-4" /> Add column before
<Columns3 className="w-4 h-4" /> {tToolbar("add_column_before")}
</button>
<button
type="button"
className="flex items-center gap-2 px-2 py-1.5 text-sm rounded hover:bg-accent text-start"
onClick={() => { editor.chain().focus().addColumnAfter().run(); setTableMenuOpen(false); }}
>
<Columns3 className="w-4 h-4" /> Add column after
<Columns3 className="w-4 h-4" /> {tToolbar("add_column_after")}
</button>
<div className="h-px bg-border my-1" />
<button
@@ -596,21 +599,21 @@ export function RichTextEditor({
className="flex items-center gap-2 px-2 py-1.5 text-sm rounded hover:bg-accent text-start"
onClick={() => { editor.chain().focus().deleteRow().run(); setTableMenuOpen(false); }}
>
<Trash2 className="w-4 h-4" /> Delete row
<Trash2 className="w-4 h-4" /> {tToolbar("delete_row")}
</button>
<button
type="button"
className="flex items-center gap-2 px-2 py-1.5 text-sm rounded hover:bg-accent text-start"
onClick={() => { editor.chain().focus().deleteColumn().run(); setTableMenuOpen(false); }}
>
<Trash2 className="w-4 h-4" /> Delete column
<Trash2 className="w-4 h-4" /> {tToolbar("delete_column")}
</button>
<button
type="button"
className="flex items-center gap-2 px-2 py-1.5 text-sm rounded hover:bg-accent text-start"
onClick={() => { editor.chain().focus().toggleHeaderRow().run(); setTableMenuOpen(false); }}
>
<Rows3 className="w-4 h-4" /> Toggle header row
<Rows3 className="w-4 h-4" /> {tToolbar("toggle_header_row")}
</button>
<div className="h-px bg-border my-1" />
<button
@@ -618,7 +621,7 @@ export function RichTextEditor({
className="flex items-center gap-2 px-2 py-1.5 text-sm rounded hover:bg-accent text-start text-red-600 dark:text-red-400"
onClick={() => { editor.chain().focus().deleteTable().run(); setTableMenuOpen(false); }}
>
<Trash2 className="w-4 h-4" /> Delete table
<Trash2 className="w-4 h-4" /> {tToolbar("delete_table")}
</button>
</div>
) : (
@@ -637,7 +640,7 @@ export function RichTextEditor({
<ToolbarButton
onClick={() => editor.chain().focus().clearNodes().unsetAllMarks().run()}
title="Clear Formatting"
title={tToolbar("clear_formatting")}
>
<RemoveFormatting className="w-4 h-4" />
</ToolbarButton>
@@ -647,14 +650,14 @@ export function RichTextEditor({
<ToolbarButton
onClick={() => editor.chain().focus().undo().run()}
disabled={!editor.can().undo()}
title="Undo"
title={tToolbar("undo")}
>
<Undo className="w-4 h-4" />
</ToolbarButton>
<ToolbarButton
onClick={() => editor.chain().focus().redo().run()}
disabled={!editor.can().redo()}
title="Redo"
title={tToolbar("redo")}
>
<Redo className="w-4 h-4" />
</ToolbarButton>
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "الاسم المعروض",
"autocomplete_search_server": "البحث في الخادم",
"autocomplete_searching": "جارٍ البحث...",
"toolbar": {
"bold": "غامق",
"italic": "مائل",
"underline": "تسطير",
"strikethrough": "يتوسطه خط",
"text_color": "لون النص",
"remove_color": "إزالة اللون",
"heading_1": "عنوان 1",
"heading_2": "عنوان 2",
"bullet_list": "قائمة نقطية",
"ordered_list": "قائمة مرقمة",
"quote": "اقتباس",
"code_block": "كتلة برمجية",
"align_left": "محاذاة لليسار",
"align_center": "توسيط",
"align_right": "محاذاة لليمين",
"text_direction": "اتجاه النص (RTL/LTR)",
"link": "رابط",
"table": "جدول",
"clear_formatting": "مسح التنسيق",
"undo": "تراجع",
"redo": "إعادة",
"add_row_above": "إضافة صف بالأعلى",
"add_row_below": "إضافة صف بالأسفل",
"add_column_before": "إضافة عمود قبل",
"add_column_after": "إضافة عمود بعد",
"delete_row": "حذف الصف",
"delete_column": "حذف العمود",
"toggle_header_row": "تبديل صف الرأس",
"delete_table": "حذف الجدول",
"pick_size": "اختيار الحجم"
},
"send_filing_warning": "تم الإرسال - لكن التنظيف بعد الإرسال فشل، وقد تبقى مسودة قديمة."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "Zobrazované jméno",
"autocomplete_search_server": "Hledat na serveru",
"autocomplete_searching": "Hledání...",
"toolbar": {
"bold": "Tučné",
"italic": "Kurzíva",
"underline": "Podtržené",
"strikethrough": "Přeškrtnuté",
"text_color": "Barva textu",
"remove_color": "Odebrat barvu",
"heading_1": "Nadpis 1",
"heading_2": "Nadpis 2",
"bullet_list": "Odrážkový seznam",
"ordered_list": "Číslovaný seznam",
"quote": "Citace",
"code_block": "Blok kódu",
"align_left": "Zarovnat vlevo",
"align_center": "Na střed",
"align_right": "Zarovnat vpravo",
"text_direction": "Směr textu (RTL/LTR)",
"link": "Odkaz",
"table": "Tabulka",
"clear_formatting": "Vymazat formátování",
"undo": "Zpět",
"redo": "Znovu",
"add_row_above": "Přidat řádek nad",
"add_row_below": "Přidat řádek pod",
"add_column_before": "Přidat sloupec před",
"add_column_after": "Přidat sloupec za",
"delete_row": "Odstranit řádek",
"delete_column": "Odstranit sloupec",
"toggle_header_row": "Přepnout řádek záhlaví",
"delete_table": "Odstranit tabulku",
"pick_size": "Vybrat velikost"
},
"send_filing_warning": "Odesláno - ale následný úklid selhal, může zůstat zastaralý koncept."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "Visningsnavn",
"autocomplete_search_server": "Søg på serveren",
"autocomplete_searching": "Søger...",
"toolbar": {
"bold": "Fed",
"italic": "Kursiv",
"underline": "Understreget",
"strikethrough": "Gennemstreget",
"text_color": "Tekstfarve",
"remove_color": "Fjern farve",
"heading_1": "Overskrift 1",
"heading_2": "Overskrift 2",
"bullet_list": "Punktopstilling",
"ordered_list": "Nummereret liste",
"quote": "Citat",
"code_block": "Kodeblok",
"align_left": "Venstrejusteret",
"align_center": "Centreret",
"align_right": "Højrejusteret",
"text_direction": "Tekstretning (RTL/LTR)",
"link": "Link",
"table": "Tabel",
"clear_formatting": "Ryd formatering",
"undo": "Fortryd",
"redo": "Gentag",
"add_row_above": "Tilføj række over",
"add_row_below": "Tilføj række under",
"add_column_before": "Tilføj kolonne før",
"add_column_after": "Tilføj kolonne efter",
"delete_row": "Slet række",
"delete_column": "Slet kolonne",
"toggle_header_row": "Slå overskriftsrække til/fra",
"delete_table": "Slet tabel",
"pick_size": "Vælg størrelse"
},
"send_filing_warning": "Sendt - men oprydningen bagefter mislykkedes, en forældet kladde kan blive stående."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "Anzeigename",
"autocomplete_search_server": "Auf dem Server suchen",
"autocomplete_searching": "Suche läuft...",
"toolbar": {
"bold": "Fett",
"italic": "Kursiv",
"underline": "Unterstrichen",
"strikethrough": "Durchgestrichen",
"text_color": "Textfarbe",
"remove_color": "Farbe entfernen",
"heading_1": "Überschrift 1",
"heading_2": "Überschrift 2",
"bullet_list": "Aufzählung",
"ordered_list": "Nummerierte Liste",
"quote": "Zitat",
"code_block": "Codeblock",
"align_left": "Linksbündig",
"align_center": "Zentriert",
"align_right": "Rechtsbündig",
"text_direction": "Schreibrichtung (RTL/LTR)",
"link": "Link",
"table": "Tabelle",
"clear_formatting": "Formatierung löschen",
"undo": "Rückgängig",
"redo": "Wiederholen",
"add_row_above": "Zeile oberhalb einfügen",
"add_row_below": "Zeile unterhalb einfügen",
"add_column_before": "Spalte davor einfügen",
"add_column_after": "Spalte danach einfügen",
"delete_row": "Zeile löschen",
"delete_column": "Spalte löschen",
"toggle_header_row": "Kopfzeile umschalten",
"delete_table": "Tabelle löschen",
"pick_size": "Größe wählen"
},
"send_filing_warning": "Gesendet - aber das Aufräumen danach schlug fehl, evtl. bleibt ein alter Entwurf sichtbar."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "Display name",
"autocomplete_search_server": "Search the server",
"autocomplete_searching": "Searching...",
"toolbar": {
"bold": "Bold",
"italic": "Italic",
"underline": "Underline",
"strikethrough": "Strikethrough",
"text_color": "Text color",
"remove_color": "Remove color",
"heading_1": "Heading 1",
"heading_2": "Heading 2",
"bullet_list": "Bullet list",
"ordered_list": "Ordered list",
"quote": "Quote",
"code_block": "Code block",
"align_left": "Align left",
"align_center": "Align center",
"align_right": "Align right",
"text_direction": "Text direction (RTL/LTR)",
"link": "Link",
"table": "Table",
"clear_formatting": "Clear formatting",
"undo": "Undo",
"redo": "Redo",
"add_row_above": "Add row above",
"add_row_below": "Add row below",
"add_column_before": "Add column before",
"add_column_after": "Add column after",
"delete_row": "Delete row",
"delete_column": "Delete column",
"toggle_header_row": "Toggle header row",
"delete_table": "Delete table",
"pick_size": "Pick size"
},
"send_filing_warning": "Sent - but the post-send cleanup failed, a stale draft may remain."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "Nombre para mostrar",
"autocomplete_search_server": "Buscar en el servidor",
"autocomplete_searching": "Buscando...",
"toolbar": {
"bold": "Negrita",
"italic": "Cursiva",
"underline": "Subrayado",
"strikethrough": "Tachado",
"text_color": "Color del texto",
"remove_color": "Quitar color",
"heading_1": "Encabezado 1",
"heading_2": "Encabezado 2",
"bullet_list": "Lista con viñetas",
"ordered_list": "Lista numerada",
"quote": "Cita",
"code_block": "Bloque de código",
"align_left": "Alinear a la izquierda",
"align_center": "Centrar",
"align_right": "Alinear a la derecha",
"text_direction": "Dirección del texto (RTL/LTR)",
"link": "Enlace",
"table": "Tabla",
"clear_formatting": "Borrar formato",
"undo": "Deshacer",
"redo": "Rehacer",
"add_row_above": "Añadir fila encima",
"add_row_below": "Añadir fila debajo",
"add_column_before": "Añadir columna antes",
"add_column_after": "Añadir columna después",
"delete_row": "Eliminar fila",
"delete_column": "Eliminar columna",
"toggle_header_row": "Alternar fila de encabezado",
"delete_table": "Eliminar tabla",
"pick_size": "Elegir tamaño"
},
"send_filing_warning": "Enviado - pero la limpieza posterior falló, puede quedar un borrador obsoleto."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "نام نمایشی",
"autocomplete_search_server": "جستجو در سرور",
"autocomplete_searching": "در حال جستجو...",
"toolbar": {
"bold": "پررنگ",
"italic": "کج",
"underline": "زیرخط‌دار",
"strikethrough": "خط‌خورده",
"text_color": "رنگ متن",
"remove_color": "حذف رنگ",
"heading_1": "سرفصل ۱",
"heading_2": "سرفصل ۲",
"bullet_list": "فهرست نشانه‌دار",
"ordered_list": "فهرست شماره‌دار",
"quote": "نقل‌قول",
"code_block": "بلوک کد",
"align_left": "تراز چپ",
"align_center": "وسط‌چین",
"align_right": "تراز راست",
"text_direction": "جهت متن (RTL/LTR)",
"link": "پیوند",
"table": "جدول",
"clear_formatting": "پاک کردن قالب‌بندی",
"undo": "واگرد",
"redo": "انجام دوباره",
"add_row_above": "افزودن ردیف در بالا",
"add_row_below": "افزودن ردیف در پایین",
"add_column_before": "افزودن ستون قبل",
"add_column_after": "افزودن ستون بعد",
"delete_row": "حذف ردیف",
"delete_column": "حذف ستون",
"toggle_header_row": "تغییر وضعیت ردیف سرصفحه",
"delete_table": "حذف جدول",
"pick_size": "انتخاب اندازه"
},
"send_filing_warning": "ارسال شد - اما پاک‌سازی پس از ارسال ناموفق بود، ممکن است پیش‌نویس قدیمی باقی بماند."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "Nom d'affichage",
"autocomplete_search_server": "Rechercher sur le serveur",
"autocomplete_searching": "Recherche en cours...",
"toolbar": {
"bold": "Gras",
"italic": "Italique",
"underline": "Souligné",
"strikethrough": "Barré",
"text_color": "Couleur du texte",
"remove_color": "Supprimer la couleur",
"heading_1": "Titre 1",
"heading_2": "Titre 2",
"bullet_list": "Liste à puces",
"ordered_list": "Liste numérotée",
"quote": "Citation",
"code_block": "Bloc de code",
"align_left": "Aligner à gauche",
"align_center": "Centrer",
"align_right": "Aligner à droite",
"text_direction": "Sens du texte (RTL/LTR)",
"link": "Lien",
"table": "Tableau",
"clear_formatting": "Effacer la mise en forme",
"undo": "Annuler",
"redo": "Rétablir",
"add_row_above": "Insérer une ligne au-dessus",
"add_row_below": "Insérer une ligne en dessous",
"add_column_before": "Insérer une colonne avant",
"add_column_after": "Insérer une colonne après",
"delete_row": "Supprimer la ligne",
"delete_column": "Supprimer la colonne",
"toggle_header_row": "Basculer la ligne d'en-tête",
"delete_table": "Supprimer le tableau",
"pick_size": "Choisir la taille"
},
"send_filing_warning": "Envoyé - mais le nettoyage après envoi a échoué, un ancien brouillon peut subsister."
},
"confirm_dialog": {
+32
View File
@@ -651,6 +651,38 @@
"recipient_name_placeholder": "שם תצוגה",
"autocomplete_search_server": "חיפוש בשרת",
"autocomplete_searching": "מחפש...",
"toolbar": {
"bold": "מודגש",
"italic": "נטוי",
"underline": "קו תחתון",
"strikethrough": "קו חוצה",
"text_color": "צבע טקסט",
"remove_color": "הסרת צבע",
"heading_1": "כותרת 1",
"heading_2": "כותרת 2",
"bullet_list": "רשימת תבליטים",
"ordered_list": "רשימה ממוספרת",
"quote": "ציטוט",
"code_block": "בלוק קוד",
"align_left": "יישור לשמאל",
"align_center": "מרכוז",
"align_right": "יישור לימין",
"text_direction": "כיוון טקסט (RTL/LTR)",
"link": "קישור",
"table": "טבלה",
"clear_formatting": "ניקוי עיצוב",
"undo": "ביטול",
"redo": "ביצוע מחדש",
"add_row_above": "הוספת שורה מעל",
"add_row_below": "הוספת שורה מתחת",
"add_column_before": "הוספת עמודה לפני",
"add_column_after": "הוספת עמודה אחרי",
"delete_row": "מחיקת שורה",
"delete_column": "מחיקת עמודה",
"toggle_header_row": "החלפת שורת כותרת",
"delete_table": "מחיקת טבלה",
"pick_size": "בחירת גודל"
},
"send_filing_warning": "נשלח - אך הניקוי שלאחר השליחה נכשל, ייתכן שתישאר טיוטה ישנה."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "Megjelenített név",
"autocomplete_search_server": "Keresés a kiszolgálón",
"autocomplete_searching": "Keresés...",
"toolbar": {
"bold": "Félkövér",
"italic": "Dőlt",
"underline": "Aláhúzott",
"strikethrough": "Áthúzott",
"text_color": "Betűszín",
"remove_color": "Szín eltávolítása",
"heading_1": "Címsor 1",
"heading_2": "Címsor 2",
"bullet_list": "Felsorolás",
"ordered_list": "Számozott lista",
"quote": "Idézet",
"code_block": "Kódblokk",
"align_left": "Balra igazítás",
"align_center": "Középre igazítás",
"align_right": "Jobbra igazítás",
"text_direction": "Szövegirány (RTL/LTR)",
"link": "Hivatkozás",
"table": "Táblázat",
"clear_formatting": "Formázás törlése",
"undo": "Visszavonás",
"redo": "Újra",
"add_row_above": "Sor beszúrása fölé",
"add_row_below": "Sor beszúrása alá",
"add_column_before": "Oszlop beszúrása elé",
"add_column_after": "Oszlop beszúrása mögé",
"delete_row": "Sor törlése",
"delete_column": "Oszlop törlése",
"toggle_header_row": "Fejlécsor váltása",
"delete_table": "Táblázat törlése",
"pick_size": "Méret kiválasztása"
},
"send_filing_warning": "Elküldve - de az utólagos rendrakás nem sikerült, egy elavult piszkozat megmaradhat."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "Nome visualizzato",
"autocomplete_search_server": "Cerca nel server",
"autocomplete_searching": "Ricerca in corso...",
"toolbar": {
"bold": "Grassetto",
"italic": "Corsivo",
"underline": "Sottolineato",
"strikethrough": "Barrato",
"text_color": "Colore del testo",
"remove_color": "Rimuovi colore",
"heading_1": "Titolo 1",
"heading_2": "Titolo 2",
"bullet_list": "Elenco puntato",
"ordered_list": "Elenco numerato",
"quote": "Citazione",
"code_block": "Blocco di codice",
"align_left": "Allinea a sinistra",
"align_center": "Centra",
"align_right": "Allinea a destra",
"text_direction": "Direzione del testo (RTL/LTR)",
"link": "Link",
"table": "Tabella",
"clear_formatting": "Cancella formattazione",
"undo": "Annulla",
"redo": "Ripeti",
"add_row_above": "Aggiungi riga sopra",
"add_row_below": "Aggiungi riga sotto",
"add_column_before": "Aggiungi colonna prima",
"add_column_after": "Aggiungi colonna dopo",
"delete_row": "Elimina riga",
"delete_column": "Elimina colonna",
"toggle_header_row": "Attiva/disattiva riga di intestazione",
"delete_table": "Elimina tabella",
"pick_size": "Scegli dimensione"
},
"send_filing_warning": "Inviato - ma la pulizia successiva non è riuscita, potrebbe restare una bozza obsoleta."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "表示名",
"autocomplete_search_server": "サーバーを検索",
"autocomplete_searching": "検索中...",
"toolbar": {
"bold": "太字",
"italic": "斜体",
"underline": "下線",
"strikethrough": "取り消し線",
"text_color": "文字色",
"remove_color": "色を解除",
"heading_1": "見出し1",
"heading_2": "見出し2",
"bullet_list": "箇条書き",
"ordered_list": "番号付きリスト",
"quote": "引用",
"code_block": "コードブロック",
"align_left": "左揃え",
"align_center": "中央揃え",
"align_right": "右揃え",
"text_direction": "文字方向 (RTL/LTR)",
"link": "リンク",
"table": "表",
"clear_formatting": "書式をクリア",
"undo": "元に戻す",
"redo": "やり直す",
"add_row_above": "上に行を追加",
"add_row_below": "下に行を追加",
"add_column_before": "左に列を追加",
"add_column_after": "右に列を追加",
"delete_row": "行を削除",
"delete_column": "列を削除",
"toggle_header_row": "ヘッダー行の切り替え",
"delete_table": "表を削除",
"pick_size": "サイズを選択"
},
"send_filing_warning": "送信されましたが、送信後の整理に失敗しました。古い下書きが残る場合があります。"
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "표시 이름",
"autocomplete_search_server": "서버에서 검색",
"autocomplete_searching": "검색 중...",
"toolbar": {
"bold": "굵게",
"italic": "기울임꼴",
"underline": "밑줄",
"strikethrough": "취소선",
"text_color": "글자 색",
"remove_color": "색 제거",
"heading_1": "제목 1",
"heading_2": "제목 2",
"bullet_list": "글머리 기호 목록",
"ordered_list": "번호 매기기 목록",
"quote": "인용",
"code_block": "코드 블록",
"align_left": "왼쪽 정렬",
"align_center": "가운데 정렬",
"align_right": "오른쪽 정렬",
"text_direction": "텍스트 방향 (RTL/LTR)",
"link": "링크",
"table": "표",
"clear_formatting": "서식 지우기",
"undo": "실행 취소",
"redo": "다시 실행",
"add_row_above": "위에 행 추가",
"add_row_below": "아래에 행 추가",
"add_column_before": "앞에 열 추가",
"add_column_after": "뒤에 열 추가",
"delete_row": "행 삭제",
"delete_column": "열 삭제",
"toggle_header_row": "머리글 행 전환",
"delete_table": "표 삭제",
"pick_size": "크기 선택"
},
"send_filing_warning": "보냈지만 전송 후 정리에 실패했습니다. 오래된 임시 보관 메일이 남아 있을 수 있습니다."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "Parādāmais vārds",
"autocomplete_search_server": "Meklēt serverī",
"autocomplete_searching": "Meklē...",
"toolbar": {
"bold": "Treknraksts",
"italic": "Kursīvs",
"underline": "Pasvītrots",
"strikethrough": "Pārsvītrots",
"text_color": "Teksta krāsa",
"remove_color": "Noņemt krāsu",
"heading_1": "Virsraksts 1",
"heading_2": "Virsraksts 2",
"bullet_list": "Aizzīmju saraksts",
"ordered_list": "Numurēts saraksts",
"quote": "Citāts",
"code_block": "Koda bloks",
"align_left": "Līdzināt pa kreisi",
"align_center": "Centrēt",
"align_right": "Līdzināt pa labi",
"text_direction": "Teksta virziens (RTL/LTR)",
"link": "Saite",
"table": "Tabula",
"clear_formatting": "Notīrīt formatējumu",
"undo": "Atsaukt",
"redo": "Atkārtot",
"add_row_above": "Pievienot rindu virs",
"add_row_below": "Pievienot rindu zem",
"add_column_before": "Pievienot kolonnu pirms",
"add_column_after": "Pievienot kolonnu pēc",
"delete_row": "Dzēst rindu",
"delete_column": "Dzēst kolonnu",
"toggle_header_row": "Pārslēgt galvenes rindu",
"delete_table": "Dzēst tabulu",
"pick_size": "Izvēlēties izmēru"
},
"send_filing_warning": "Nosūtīts - bet pēcapstrāde neizdevās, var palikt novecojis melnraksts."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "Weergavenaam",
"autocomplete_search_server": "Op de server zoeken",
"autocomplete_searching": "Bezig met zoeken...",
"toolbar": {
"bold": "Vet",
"italic": "Cursief",
"underline": "Onderstrepen",
"strikethrough": "Doorhalen",
"text_color": "Tekstkleur",
"remove_color": "Kleur verwijderen",
"heading_1": "Kop 1",
"heading_2": "Kop 2",
"bullet_list": "Opsommingslijst",
"ordered_list": "Genummerde lijst",
"quote": "Citaat",
"code_block": "Codeblok",
"align_left": "Links uitlijnen",
"align_center": "Centreren",
"align_right": "Rechts uitlijnen",
"text_direction": "Tekstrichting (RTL/LTR)",
"link": "Link",
"table": "Tabel",
"clear_formatting": "Opmaak wissen",
"undo": "Ongedaan maken",
"redo": "Opnieuw",
"add_row_above": "Rij erboven toevoegen",
"add_row_below": "Rij eronder toevoegen",
"add_column_before": "Kolom ervoor toevoegen",
"add_column_after": "Kolom erna toevoegen",
"delete_row": "Rij verwijderen",
"delete_column": "Kolom verwijderen",
"toggle_header_row": "Koprij aan/uit",
"delete_table": "Tabel verwijderen",
"pick_size": "Grootte kiezen"
},
"send_filing_warning": "Verzonden - maar het opruimen daarna is mislukt, mogelijk blijft een oud concept staan."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "Wyświetlana nazwa",
"autocomplete_search_server": "Szukaj na serwerze",
"autocomplete_searching": "Wyszukiwanie...",
"toolbar": {
"bold": "Pogrubienie",
"italic": "Kursywa",
"underline": "Podkreślenie",
"strikethrough": "Przekreślenie",
"text_color": "Kolor tekstu",
"remove_color": "Usuń kolor",
"heading_1": "Nagłówek 1",
"heading_2": "Nagłówek 2",
"bullet_list": "Lista punktowana",
"ordered_list": "Lista numerowana",
"quote": "Cytat",
"code_block": "Blok kodu",
"align_left": "Wyrównaj do lewej",
"align_center": "Wyśrodkuj",
"align_right": "Wyrównaj do prawej",
"text_direction": "Kierunek tekstu (RTL/LTR)",
"link": "Link",
"table": "Tabela",
"clear_formatting": "Wyczyść formatowanie",
"undo": "Cofnij",
"redo": "Ponów",
"add_row_above": "Dodaj wiersz powyżej",
"add_row_below": "Dodaj wiersz poniżej",
"add_column_before": "Dodaj kolumnę przed",
"add_column_after": "Dodaj kolumnę po",
"delete_row": "Usuń wiersz",
"delete_column": "Usuń kolumnę",
"toggle_header_row": "Przełącz wiersz nagłówka",
"delete_table": "Usuń tabelę",
"pick_size": "Wybierz rozmiar"
},
"send_filing_warning": "Wysłano - ale późniejsze porządkowanie nie powiodło się, może pozostać nieaktualna wersja robocza."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "Nome de exibição",
"autocomplete_search_server": "Pesquisar no servidor",
"autocomplete_searching": "Pesquisando...",
"toolbar": {
"bold": "Negrito",
"italic": "Itálico",
"underline": "Sublinhado",
"strikethrough": "Tachado",
"text_color": "Cor do texto",
"remove_color": "Remover cor",
"heading_1": "Título 1",
"heading_2": "Título 2",
"bullet_list": "Lista com marcadores",
"ordered_list": "Lista numerada",
"quote": "Citação",
"code_block": "Bloco de código",
"align_left": "Alinhar à esquerda",
"align_center": "Centralizar",
"align_right": "Alinhar à direita",
"text_direction": "Direção do texto (RTL/LTR)",
"link": "Link",
"table": "Tabela",
"clear_formatting": "Limpar formatação",
"undo": "Desfazer",
"redo": "Refazer",
"add_row_above": "Adicionar linha acima",
"add_row_below": "Adicionar linha abaixo",
"add_column_before": "Adicionar coluna antes",
"add_column_after": "Adicionar coluna depois",
"delete_row": "Excluir linha",
"delete_column": "Excluir coluna",
"toggle_header_row": "Alternar linha de cabeçalho",
"delete_table": "Excluir tabela",
"pick_size": "Escolher tamanho"
},
"send_filing_warning": "Enviado - mas a limpeza posterior falhou, um rascunho antigo pode permanecer."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "Numele afișat",
"autocomplete_search_server": "Caută pe server",
"autocomplete_searching": "Se caută...",
"toolbar": {
"bold": "Aldin",
"italic": "Cursiv",
"underline": "Subliniat",
"strikethrough": "Tăiat",
"text_color": "Culoarea textului",
"remove_color": "Elimină culoarea",
"heading_1": "Titlu 1",
"heading_2": "Titlu 2",
"bullet_list": "Listă cu marcatori",
"ordered_list": "Listă numerotată",
"quote": "Citat",
"code_block": "Bloc de cod",
"align_left": "Aliniere la stânga",
"align_center": "Centrare",
"align_right": "Aliniere la dreapta",
"text_direction": "Direcția textului (RTL/LTR)",
"link": "Link",
"table": "Tabel",
"clear_formatting": "Șterge formatarea",
"undo": "Anulează",
"redo": "Refă",
"add_row_above": "Adaugă rând deasupra",
"add_row_below": "Adaugă rând dedesubt",
"add_column_before": "Adaugă coloană înainte",
"add_column_after": "Adaugă coloană după",
"delete_row": "Șterge rândul",
"delete_column": "Șterge coloana",
"toggle_header_row": "Comută rândul de antet",
"delete_table": "Șterge tabelul",
"pick_size": "Alege dimensiunea"
},
"send_filing_warning": "Trimis - dar curățarea ulterioară a eșuat, poate rămâne o ciornă veche."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "Отображаемое имя",
"autocomplete_search_server": "Искать на сервере",
"autocomplete_searching": "Поиск...",
"toolbar": {
"bold": "Жирный",
"italic": "Курсив",
"underline": "Подчёркнутый",
"strikethrough": "Зачёркнутый",
"text_color": "Цвет текста",
"remove_color": "Убрать цвет",
"heading_1": "Заголовок 1",
"heading_2": "Заголовок 2",
"bullet_list": "Маркированный список",
"ordered_list": "Нумерованный список",
"quote": "Цитата",
"code_block": "Блок кода",
"align_left": "По левому краю",
"align_center": "По центру",
"align_right": "По правому краю",
"text_direction": "Направление текста (RTL/LTR)",
"link": "Ссылка",
"table": "Таблица",
"clear_formatting": "Очистить форматирование",
"undo": "Отменить",
"redo": "Повторить",
"add_row_above": "Вставить строку выше",
"add_row_below": "Вставить строку ниже",
"add_column_before": "Вставить столбец слева",
"add_column_after": "Вставить столбец справа",
"delete_row": "Удалить строку",
"delete_column": "Удалить столбец",
"toggle_header_row": "Переключить строку заголовка",
"delete_table": "Удалить таблицу",
"pick_size": "Выбрать размер"
},
"send_filing_warning": "Отправлено - но последующая очистка не удалась, может остаться устаревший черновик."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "Zobrazené meno",
"autocomplete_search_server": "Hľadať na serveri",
"autocomplete_searching": "Hľadanie...",
"toolbar": {
"bold": "Tučné",
"italic": "Kurzíva",
"underline": "Podčiarknuté",
"strikethrough": "Prečiarknuté",
"text_color": "Farba textu",
"remove_color": "Odstrániť farbu",
"heading_1": "Nadpis 1",
"heading_2": "Nadpis 2",
"bullet_list": "Odrážkový zoznam",
"ordered_list": "Číslovaný zoznam",
"quote": "Citát",
"code_block": "Blok kódu",
"align_left": "Zarovnať doľava",
"align_center": "Na stred",
"align_right": "Zarovnať doprava",
"text_direction": "Smer textu (RTL/LTR)",
"link": "Odkaz",
"table": "Tabuľka",
"clear_formatting": "Vymazať formátovanie",
"undo": "Späť",
"redo": "Znova",
"add_row_above": "Pridať riadok nad",
"add_row_below": "Pridať riadok pod",
"add_column_before": "Pridať stĺpec pred",
"add_column_after": "Pridať stĺpec za",
"delete_row": "Odstrániť riadok",
"delete_column": "Odstrániť stĺpec",
"toggle_header_row": "Prepnúť riadok záhlavia",
"delete_table": "Odstrániť tabuľku",
"pick_size": "Vybrať veľkosť"
},
"send_filing_warning": "Odoslané - ale následné upratovanie zlyhalo, môže zostať zastaraný koncept."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "Görünen ad",
"autocomplete_search_server": "Sunucuda ara",
"autocomplete_searching": "Aranıyor...",
"toolbar": {
"bold": "Kalın",
"italic": "İtalik",
"underline": "Altı çizili",
"strikethrough": "Üstü çizili",
"text_color": "Metin rengi",
"remove_color": "Rengi kaldır",
"heading_1": "Başlık 1",
"heading_2": "Başlık 2",
"bullet_list": "Madde işaretli liste",
"ordered_list": "Numaralı liste",
"quote": "Alıntı",
"code_block": "Kod bloğu",
"align_left": "Sola hizala",
"align_center": "Ortala",
"align_right": "Sağa hizala",
"text_direction": "Metin yönü (RTL/LTR)",
"link": "Bağlantı",
"table": "Tablo",
"clear_formatting": "Biçimlendirmeyi temizle",
"undo": "Geri al",
"redo": "Yinele",
"add_row_above": "Üste satır ekle",
"add_row_below": "Alta satır ekle",
"add_column_before": "Öncesine sütun ekle",
"add_column_after": "Sonrasına sütun ekle",
"delete_row": "Satırı sil",
"delete_column": "Sütunu sil",
"toggle_header_row": "Başlık satırını aç/kapat",
"delete_table": "Tabloyu sil",
"pick_size": "Boyut seç"
},
"send_filing_warning": "Gönderildi - ancak sonrasındaki temizleme başarısız oldu, eski bir taslak kalabilir."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "Відображуване ім'я",
"autocomplete_search_server": "Шукати на сервері",
"autocomplete_searching": "Пошук...",
"toolbar": {
"bold": "Жирний",
"italic": "Курсив",
"underline": "Підкреслений",
"strikethrough": "Закреслений",
"text_color": "Колір тексту",
"remove_color": "Прибрати колір",
"heading_1": "Заголовок 1",
"heading_2": "Заголовок 2",
"bullet_list": "Маркований список",
"ordered_list": "Нумерований список",
"quote": "Цитата",
"code_block": "Блок коду",
"align_left": "По лівому краю",
"align_center": "По центру",
"align_right": "По правому краю",
"text_direction": "Напрямок тексту (RTL/LTR)",
"link": "Посилання",
"table": "Таблиця",
"clear_formatting": "Очистити форматування",
"undo": "Скасувати",
"redo": "Повторити",
"add_row_above": "Вставити рядок вище",
"add_row_below": "Вставити рядок нижче",
"add_column_before": "Вставити стовпець ліворуч",
"add_column_after": "Вставити стовпець праворуч",
"delete_row": "Видалити рядок",
"delete_column": "Видалити стовпець",
"toggle_header_row": "Переключити рядок заголовка",
"delete_table": "Видалити таблицю",
"pick_size": "Вибрати розмір"
},
"send_filing_warning": "Надіслано - але подальше очищення не вдалося, може залишитися застаріла чернетка."
},
"confirm_dialog": {
+32
View File
@@ -686,6 +686,38 @@
"recipient_name_placeholder": "显示名称",
"autocomplete_search_server": "在服务器上搜索",
"autocomplete_searching": "搜索中...",
"toolbar": {
"bold": "加粗",
"italic": "斜体",
"underline": "下划线",
"strikethrough": "删除线",
"text_color": "文字颜色",
"remove_color": "移除颜色",
"heading_1": "标题 1",
"heading_2": "标题 2",
"bullet_list": "项目符号列表",
"ordered_list": "编号列表",
"quote": "引用",
"code_block": "代码块",
"align_left": "左对齐",
"align_center": "居中对齐",
"align_right": "右对齐",
"text_direction": "文字方向 (RTL/LTR)",
"link": "链接",
"table": "表格",
"clear_formatting": "清除格式",
"undo": "撤销",
"redo": "重做",
"add_row_above": "在上方添加行",
"add_row_below": "在下方添加行",
"add_column_before": "在前面添加列",
"add_column_after": "在后面添加列",
"delete_row": "删除行",
"delete_column": "删除列",
"toggle_header_row": "切换标题行",
"delete_table": "删除表格",
"pick_size": "选择大小"
},
"send_filing_warning": "已发送,但发送后的清理失败,可能会残留旧草稿。"
},
"confirm_dialog": {