From 6bacd1fac980e2f95b1c56997fddd23a735bbce2 Mon Sep 17 00:00:00 2001 From: MultiMote Date: Mon, 25 Nov 2024 18:55:21 +0300 Subject: [PATCH] Convert locales to JSON for easier integration with translation services --- src/locale/de.ts | 127 -------------------------------- src/locale/dicts/de.json | 123 +++++++++++++++++++++++++++++++ src/locale/dicts/en.json | 123 +++++++++++++++++++++++++++++++ src/locale/dicts/it.json | 123 +++++++++++++++++++++++++++++++ src/locale/dicts/ru.json | 123 +++++++++++++++++++++++++++++++ src/locale/dicts/zh_cn.json | 123 +++++++++++++++++++++++++++++++ src/locale/en.ts | 138 ----------------------------------- src/locale/index.ts | 26 ++++--- src/locale/it.ts | 127 -------------------------------- src/locale/ru.ts | 142 ------------------------------------ src/locale/zh_cn.ts | 140 ----------------------------------- src/utils/i18n.ts | 2 +- 12 files changed, 630 insertions(+), 687 deletions(-) delete mode 100644 src/locale/de.ts create mode 100644 src/locale/dicts/de.json create mode 100644 src/locale/dicts/en.json create mode 100644 src/locale/dicts/it.json create mode 100644 src/locale/dicts/ru.json create mode 100644 src/locale/dicts/zh_cn.json delete mode 100644 src/locale/en.ts delete mode 100644 src/locale/it.ts delete mode 100644 src/locale/ru.ts delete mode 100644 src/locale/zh_cn.ts diff --git a/src/locale/de.ts b/src/locale/de.ts deleted file mode 100644 index d7108db..0000000 --- a/src/locale/de.ts +++ /dev/null @@ -1,127 +0,0 @@ -import type { TranslationKey } from "."; - -/** German */ -export const translation_de: Partial> = { - "browser_warning.lines.first": "Oh nein, Dein Browser unterstützt kein Bluetooth und keine serielle Schnittstelle", - "browser_warning.lines.second": "Du kannst trotzdem Etiketten erstellen.", - "connector.bluetooth": "Bluetooth", - "connector.serial": "Seriell (USB)", - "connector.disconnect.heartbeat": "Getrennt (Drucker reagiert nicht)", - "editor.clone": "Klonen", - "editor.undo": "Rückgängig machen", - "editor.redo": "Wiederholen", - "editor.default_text": "Text", - "editor.delete": "Löschen", - "editor.import.zpl": "ZPL Importieren", - "editor.iconpicker.search": "Suchen", - "editor.iconpicker.title": "Icon hinzufügen", - "editor.iconpicker.mdi_link_title": "Siehe detaillierte Liste hier", - "editor.objectpicker.barcode": "Barcode", - "editor.objectpicker.circle": "Kreis", - "editor.objectpicker.image": "Grafik", - "editor.objectpicker.line": "Linie", - "editor.objectpicker.qrcode": "QR-Code", - "editor.objectpicker.rectangle": "Rechteck", - "editor.objectpicker.text": "Text", - "editor.objectpicker.title": "Objekt hinzufügen", - "editor.preview": "Vorschau", - "editor.print": "Drucken", - "editor.warning.load": "Zeichenfläche wird durch gespeicherte Daten ersetzt", - "editor.warning.save": "Gespeicherte Daten werden überschrieben. Speichern?", - "main.built": "erstellt am", - "main.code": "Quellcode", - "params.barcode.content": "Inhalt", - "params.barcode.enable_caption": "Beschriftung aktivieren", - "params.barcode.encoding": "Kodierung", - "params.barcode.font_size": "Schriftgröße", - "params.barcode.scale": "Skalierungsfaktor", - "params.csv.enabled": "Aktiviert", - "params.csv.placeholders": "Variablen:", - "params.csv.rowsfound": "Gefundene Zeilen:", - "params.csv.tip": "Die erste Zeile ist eine Kopfzeile. Sie wird als Variablenname verwendet. Kommas werden als Trennzeichen verwendet.", - "params.csv.title": "Dynamische Etikettendaten (CSV)", - "params.generic.center.horizontal": "Horizontal zentrieren", - "params.generic.center.vertical": "Vertikal zentrieren", - "params.label.apply": "Anwenden", - "params.label.current": "Aktuelle Parameter:", - "params.label.menu_title": "Label Eigenschaften", - "params.label.direction.left": "Links", - "params.label.direction.top": "Oben", - "params.label.direction": "Drucken von", - "params.label.dpmm": "dpmm", - "params.label.head_density.help": "Kalkulation: DPI / 25.4", - "params.label.head_density": "Pixeldichte", - "params.label.label_title": "Benutzerdefinierter Titel", - "params.label.mm": "mm", - "params.label.px": "px", - "params.label.save_template": "Als Vorlage speichern", - "params.label.size": "Größe", - "params.label.warning.direction": "Empfohlene Druckrichtung:", - "params.label.warning.width": "Die Etikettenbreite ist zu groß für den Drucker:", - "params.label.warning.import": "Alle gespeicherten Vorlagen werden überschrieben", - "params.label.export": "Export", - "params.label.import": "Import", - "params.label.shape": "Etikettenform", - "params.label.split": "Geteiltes Etikett", - "params.label.tail.length": "Länge der Teilung", - "params.label.tail.position": "Position der Teilung", - - "params.qrcode.ecl": "Fehlerkorrekturstufe", - "params.text.align.center": "Text ausrichten: Zentriert", - "params.text.align.left": "Text ausrichten: Links", - "params.text.align.right": "Text ausrichten: Rechts", - "params.text.bold": "Fett", - "params.text.fetch_fonts": "Schriftarten laden", - "params.text.font_family": "Schriftart", - "params.text.font_size.down": "Schriftgröße verringern", - "params.text.font_size.up": "Schriftgröße erhöhen", - "params.text.font_size": "Schriftgröße", - "params.text.invert_colors": "Farben umkehren", - "params.text.line_height": "Linienhöhe", - "params.text.vorigin.bottom": "Unten", - "params.text.vorigin.center": "Zentriert", - "params.text.vorigin.top": "Oben", - "params.text.vorigin": "Vertikaler Ursprung", - "params.text.edit": "Im Popup bearbeiten", - "params.text.edit.title": "Text bearbeiten", - "params.variables.insert.date": "Datum", - "params.variables.insert.datetime": "Datum/Zeit", - "params.variables.insert.time": "Zeit", - "params.variables.insert": "Variable einfügen", - "params.saved_labels.menu_title": "Speichern/Laden (Browserspeicher)", - "params.saved_labels.kb_used": "kB benutzt", - "params.saved_labels.save.json": "Export", - "params.saved_labels.make_default": "Standard machen", - "params.saved_labels.save.browser": "Speichern", - "params.saved_labels.save.browser.replace": "Speichern (Ersetzen)", - "params.saved_labels.load.json": "Import", - "params.saved_labels.load.browser": "Laden", - "params.saved_labels.label_title": "Titel", - "params.saved_labels.label_title.placeholder": "(optional)", - "preview.close": "Schließen", - "preview.copies": "Kopien", - "preview.density": "Dichte", - "preview.label_type.Black": "Schwarz", - "preview.label_type.BlackMarkGap": "Schwarze Markierungslücke", - "preview.label_type.Continuous": "Fortführend", - "preview.label_type.HeatShrinkTube": "Schrumpfschlauch", - "preview.label_type.Invalid": "Ungültig", - "preview.label_type.Perforated": "Perforiert", - "preview.label_type.PvcTag": "PVC Tag", - "preview.label_type.Transparent": "Transparent", - "preview.label_type.WithGaps": "WithGaps", - "preview.label_type": "Etikettenpapier", - "preview.not_connected": "Drucker ist nicht verbunden", - "preview.not_implemented": "NICHT IMPLEMENTIERT", - "preview.postprocess.atkinson": "Dither (Atkinson)", - "preview.postprocess.threshold": "Schwellenwert", - "preview.postprocess": "Nachbearbeitung", - "preview.print_task": "Drucker", - "preview.print": "Drucken", - "preview.threshold": "Schwellenwert", - "preview.title": "Druckvorschau", - "preview.print.cancel": "Druck abbrechen", - "preview.offset": "Versatz", - "preview.offset.inner": "Innen", - "preview.offset.outer": "Außen", -}; diff --git a/src/locale/dicts/de.json b/src/locale/dicts/de.json new file mode 100644 index 0000000..981a835 --- /dev/null +++ b/src/locale/dicts/de.json @@ -0,0 +1,123 @@ +{ + "browser_warning.lines.first": "Oh nein, Dein Browser unterstützt kein Bluetooth und keine serielle Schnittstelle", + "browser_warning.lines.second": "Du kannst trotzdem Etiketten erstellen.", + "connector.bluetooth": "Bluetooth", + "connector.disconnect.heartbeat": "Getrennt (Drucker reagiert nicht)", + "connector.serial": "Seriell (USB)", + "editor.clone": "Klonen", + "editor.default_text": "Text", + "editor.delete": "Löschen", + "editor.iconpicker.mdi_link_title": "Siehe detaillierte Liste hier", + "editor.iconpicker.search": "Suchen", + "editor.iconpicker.title": "Icon hinzufügen", + "editor.import.zpl": "ZPL Importieren", + "editor.objectpicker.barcode": "Barcode", + "editor.objectpicker.circle": "Kreis", + "editor.objectpicker.image": "Grafik", + "editor.objectpicker.line": "Linie", + "editor.objectpicker.qrcode": "QR-Code", + "editor.objectpicker.rectangle": "Rechteck", + "editor.objectpicker.text": "Text", + "editor.objectpicker.title": "Objekt hinzufügen", + "editor.preview": "Vorschau", + "editor.print": "Drucken", + "editor.redo": "Wiederholen", + "editor.undo": "Rückgängig machen", + "editor.warning.load": "Zeichenfläche wird durch gespeicherte Daten ersetzt", + "editor.warning.save": "Gespeicherte Daten werden überschrieben. Speichern?", + "main.built": "erstellt am", + "main.code": "Quellcode", + "params.barcode.content": "Inhalt", + "params.barcode.enable_caption": "Beschriftung aktivieren", + "params.barcode.encoding": "Kodierung", + "params.barcode.font_size": "Schriftgröße", + "params.barcode.scale": "Skalierungsfaktor", + "params.csv.enabled": "Aktiviert", + "params.csv.placeholders": "Variablen:", + "params.csv.rowsfound": "Gefundene Zeilen:", + "params.csv.tip": "Die erste Zeile ist eine Kopfzeile. Sie wird als Variablenname verwendet. Kommas werden als Trennzeichen verwendet.", + "params.csv.title": "Dynamische Etikettendaten (CSV)", + "params.generic.center.horizontal": "Horizontal zentrieren", + "params.generic.center.vertical": "Vertikal zentrieren", + "params.label.apply": "Anwenden", + "params.label.current": "Aktuelle Parameter:", + "params.label.direction.left": "Links", + "params.label.direction.top": "Oben", + "params.label.direction": "Drucken von", + "params.label.dpmm": "dpmm", + "params.label.export": "Export", + "params.label.head_density.help": "Kalkulation: DPI / 25.4", + "params.label.head_density": "Pixeldichte", + "params.label.import": "Import", + "params.label.label_title": "Benutzerdefinierter Titel", + "params.label.menu_title": "Label Eigenschaften", + "params.label.mm": "mm", + "params.label.px": "px", + "params.label.save_template": "Als Vorlage speichern", + "params.label.shape": "Etikettenform", + "params.label.size": "Größe", + "params.label.split": "Geteiltes Etikett", + "params.label.tail.length": "Länge der Teilung", + "params.label.tail.position": "Position der Teilung", + "params.label.warning.direction": "Empfohlene Druckrichtung:", + "params.label.warning.import": "Alle gespeicherten Vorlagen werden überschrieben", + "params.label.warning.width": "Die Etikettenbreite ist zu groß für den Drucker:", + "params.qrcode.ecl": "Fehlerkorrekturstufe", + "params.saved_labels.kb_used": "kB benutzt", + "params.saved_labels.label_title.placeholder": "(optional)", + "params.saved_labels.label_title": "Titel", + "params.saved_labels.load.browser": "Laden", + "params.saved_labels.load.json": "Import", + "params.saved_labels.make_default": "Standard machen", + "params.saved_labels.menu_title": "Speichern/Laden (Browserspeicher)", + "params.saved_labels.save.browser.replace": "Speichern (Ersetzen)", + "params.saved_labels.save.browser": "Speichern", + "params.saved_labels.save.json": "Export", + "params.text.align.center": "Text ausrichten: Zentriert", + "params.text.align.left": "Text ausrichten: Links", + "params.text.align.right": "Text ausrichten: Rechts", + "params.text.bold": "Fett", + "params.text.edit.title": "Text bearbeiten", + "params.text.edit": "Im Popup bearbeiten", + "params.text.fetch_fonts": "Schriftarten laden", + "params.text.font_family": "Schriftart", + "params.text.font_size.down": "Schriftgröße verringern", + "params.text.font_size.up": "Schriftgröße erhöhen", + "params.text.font_size": "Schriftgröße", + "params.text.invert_colors": "Farben umkehren", + "params.text.line_height": "Linienhöhe", + "params.text.vorigin.bottom": "Unten", + "params.text.vorigin.center": "Zentriert", + "params.text.vorigin.top": "Oben", + "params.text.vorigin": "Vertikaler Ursprung", + "params.variables.insert.date": "Datum", + "params.variables.insert.datetime": "Datum/Zeit", + "params.variables.insert.time": "Zeit", + "params.variables.insert": "Variable einfügen", + "preview.close": "Schließen", + "preview.copies": "Kopien", + "preview.density": "Dichte", + "preview.label_type.Black": "Schwarz", + "preview.label_type.BlackMarkGap": "Schwarze Markierungslücke", + "preview.label_type.Continuous": "Fortführend", + "preview.label_type.HeatShrinkTube": "Schrumpfschlauch", + "preview.label_type.Invalid": "Ungültig", + "preview.label_type.Perforated": "Perforiert", + "preview.label_type.PvcTag": "PVC Tag", + "preview.label_type.Transparent": "Transparent", + "preview.label_type.WithGaps": "WithGaps", + "preview.label_type": "Etikettenpapier", + "preview.not_connected": "Drucker ist nicht verbunden", + "preview.not_implemented": "NICHT IMPLEMENTIERT", + "preview.offset.inner": "Innen", + "preview.offset.outer": "Außen", + "preview.offset": "Versatz", + "preview.postprocess.atkinson": "Dither (Atkinson)", + "preview.postprocess.threshold": "Schwellenwert", + "preview.postprocess": "Nachbearbeitung", + "preview.print_task": "Drucker", + "preview.print.cancel": "Druck abbrechen", + "preview.print": "Drucken", + "preview.threshold": "Schwellenwert", + "preview.title": "Druckvorschau" +} diff --git a/src/locale/dicts/en.json b/src/locale/dicts/en.json new file mode 100644 index 0000000..223da0e --- /dev/null +++ b/src/locale/dicts/en.json @@ -0,0 +1,123 @@ +{ + "browser_warning.lines.first": "Oh no, your browser does not support bluetooth and serial communications", + "browser_warning.lines.second": "Anyway, you still can draw labels.", + "connector.bluetooth": "Bluetooth", + "connector.disconnect.heartbeat": "Disconnected (printer does not respond)", + "connector.serial": "Serial (USB)", + "editor.clone": "Clone", + "editor.default_text": "Text", + "editor.delete": "Delete", + "editor.iconpicker.mdi_link_title": "See detailed list here", + "editor.iconpicker.search": "Search", + "editor.iconpicker.title": "Add icon", + "editor.import.zpl": "Import ZPL", + "editor.objectpicker.barcode": "Barcode", + "editor.objectpicker.circle": "Circle", + "editor.objectpicker.image": "Image", + "editor.objectpicker.line": "Line", + "editor.objectpicker.qrcode": "QR Code", + "editor.objectpicker.rectangle": "Rectangle", + "editor.objectpicker.text": "Text", + "editor.objectpicker.title": "Add object", + "editor.preview": "Preview", + "editor.print": "Print", + "editor.redo": "Redo", + "editor.undo": "Undo", + "editor.warning.load": "Canvas will be replaced with saved data", + "editor.warning.save": "Saved data will be overwritten. Save?", + "main.built": "built at", + "main.code": "Code", + "params.barcode.content": "Content", + "params.barcode.enable_caption": "Enable caption", + "params.barcode.encoding": "Encoding", + "params.barcode.font_size": "Font size", + "params.barcode.scale": "Scale factor", + "params.csv.enabled": "Enabled", + "params.csv.placeholders": "Variables:", + "params.csv.rowsfound": "Data rows found:", + "params.csv.tip": "First row is a header. It used as variable names. Commas are used as separators.", + "params.csv.title": "Dynamic label data (CSV)", + "params.generic.center.horizontal": "Center horizontally", + "params.generic.center.vertical": "Center vertically", + "params.label.apply": "Apply", + "params.label.current": "Current parameters:", + "params.label.direction.left": "Left", + "params.label.direction.top": "Top", + "params.label.direction": "Print direction", + "params.label.dpmm": "dpmm", + "params.label.export": "Export", + "params.label.head_density.help": "Calculation: DPI / 25.4", + "params.label.head_density": "Pixel density", + "params.label.import": "Import", + "params.label.label_title": "Custom title", + "params.label.menu_title": "Label properties", + "params.label.mm": "mm", + "params.label.px": "px", + "params.label.save_template": "Save as template", + "params.label.shape": "Label shape", + "params.label.size": "Size", + "params.label.split": "Label split", + "params.label.tail.length": "Tail length", + "params.label.tail.position": "Tail position", + "params.label.warning.direction": "Recommended direction for your printer:", + "params.label.warning.import": "All saved templates will be overwritten", + "params.label.warning.width": "Label width is too big for your printer:", + "params.qrcode.ecl": "Error Correction Level", + "params.saved_labels.kb_used": "kB used", + "params.saved_labels.label_title.placeholder": "(optional)", + "params.saved_labels.label_title": "Title", + "params.saved_labels.load.browser": "Load", + "params.saved_labels.load.json": "Import", + "params.saved_labels.make_default": "Make default", + "params.saved_labels.menu_title": "Save/load (browser storage)", + "params.saved_labels.save.browser.replace": "Save (replace)", + "params.saved_labels.save.browser": "Save", + "params.saved_labels.save.json": "Export", + "params.text.align.center": "Align text: Center", + "params.text.align.left": "Align text: Left", + "params.text.align.right": "Align text: Right", + "params.text.bold": "Bold", + "params.text.edit.title": "Editing text", + "params.text.edit": "Edit in popup", + "params.text.fetch_fonts": "Fetch fonts", + "params.text.font_family": "Font family", + "params.text.font_size.down": "Decrease font size", + "params.text.font_size.up": "Increase font size", + "params.text.font_size": "Font size", + "params.text.invert_colors": "Invert colors", + "params.text.line_height": "Line height", + "params.text.vorigin.bottom": "Bottom", + "params.text.vorigin.center": "Center", + "params.text.vorigin.top": "Top", + "params.text.vorigin": "Vertical Origin", + "params.variables.insert.date": "Date", + "params.variables.insert.datetime": "Datetime", + "params.variables.insert.time": "Time", + "params.variables.insert": "Insert variable", + "preview.close": "Close", + "preview.copies": "Copies", + "preview.density": "Density", + "preview.label_type.Black": "Black", + "preview.label_type.BlackMarkGap": "Black mark gap", + "preview.label_type.Continuous": "Continuous", + "preview.label_type.HeatShrinkTube": "Heat shrink tube", + "preview.label_type.Invalid": "Invalid", + "preview.label_type.Perforated": "Perforated", + "preview.label_type.PvcTag": "PVC Tag", + "preview.label_type.Transparent": "Transparent", + "preview.label_type.WithGaps": "WithGaps", + "preview.label_type": "Label type", + "preview.not_connected": "Printer is not connected", + "preview.not_implemented": "NOT IMPLEMENTED", + "preview.offset.inner": "Inner", + "preview.offset.outer": "Outer", + "preview.offset": "Offset", + "preview.postprocess.atkinson": "Dither (Atkinson)", + "preview.postprocess.threshold": "Threshold", + "preview.postprocess": "Post-process", + "preview.print_task": "Print task", + "preview.print.cancel": "Cancel print", + "preview.print": "Print", + "preview.threshold": "Threshold", + "preview.title": "Print preview" +} diff --git a/src/locale/dicts/it.json b/src/locale/dicts/it.json new file mode 100644 index 0000000..f512d85 --- /dev/null +++ b/src/locale/dicts/it.json @@ -0,0 +1,123 @@ +{ + "browser_warning.lines.first": "Oh no, il tuo browser non supporta le comunicazioni Bluetooth e seriali", + "browser_warning.lines.second": "Comunque, puoi disegnare etichette.", + "connector.bluetooth": "Bluetooth", + "connector.disconnect.heartbeat": "Disconnesso (la stampante non risponde)", + "connector.serial": "Seriale (USB)", + "editor.clone": "Clona", + "editor.default_text": "Testo", + "editor.delete": "Elimina", + "editor.iconpicker.mdi_link_title": "Vedi elenco dettagliato", + "editor.iconpicker.search": "Cerca", + "editor.iconpicker.title": "Aggiungi icona", + "editor.import.zpl": "Importa ZPL", + "editor.objectpicker.barcode": "Codice a barre", + "editor.objectpicker.circle": "Cerchio", + "editor.objectpicker.image": "Immagine", + "editor.objectpicker.line": "Linea", + "editor.objectpicker.qrcode": "Codice QR", + "editor.objectpicker.rectangle": "Rettangolo", + "editor.objectpicker.text": "Testo", + "editor.objectpicker.title": "Aggiungi oggetto", + "editor.preview": "Anteprima", + "editor.print": "Stampa", + "editor.redo": "Ripristina", + "editor.undo": "Annulla", + "editor.warning.load": "La tela verrà sostituita con i dati salvati", + "editor.warning.save": "I dati salvati verranno sovrascritti. Salvare?", + "main.built": "costruito in", + "main.code": "Versione", + "params.barcode.content": "Contenuto", + "params.barcode.enable_caption": "Abilita didascalia", + "params.barcode.encoding": "Codifica", + "params.barcode.font_size": "Dimensione carattere", + "params.barcode.scale": "Fattore di scala", + "params.csv.enabled": "Abilitato", + "params.csv.placeholders": "Variabili:", + "params.csv.rowsfound": "Righe di dati trovate:", + "params.csv.tip": "La prima riga è un'header. Le virgole sono utilizzate come separatori.", + "params.csv.title": "CSV", + "params.generic.center.horizontal": "Centra orizzontalmente", + "params.generic.center.vertical": "Centra verticalmente", + "params.label.apply": "Applica", + "params.label.current": "Parametri correnti:", + "params.label.direction.left": "Sinistra", + "params.label.direction.top": "In alto", + "params.label.direction": "Direzione stampa", + "params.label.dpmm": "dpmm", + "params.label.export": "Esporta", + "params.label.head_density.help": "Calcolo: DPI / 25,4", + "params.label.head_density": "Densità pixel", + "params.label.import": "Importa", + "params.label.label_title": "Titolo personalizzato", + "params.label.menu_title": "Proprietà etichetta", + "params.label.mm": "mm", + "params.label.px": "px", + "params.label.save_template": "Salva come modello", + "params.label.shape": "Forma dell'etichetta", + "params.label.size": "Dimensione", + "params.label.split": "Etichetta divisa", + "params.label.tail.length": "Lunghezza della divisone", + "params.label.tail.position": "Posizione della divisone", + "params.label.warning.direction": "Direzione consigliata per la stampante:", + "params.label.warning.import": "Tutti i modelli salvati verranno sovrascritti", + "params.label.warning.width": "La larghezza dell'etichetta è troppo grande per la stampante:", + "params.qrcode.ecl": "Livello di correzione degli errori", + "params.saved_labels.kb_used": "kB utilizzati", + "params.saved_labels.label_title.placeholder": "(facoltativo)", + "params.saved_labels.label_title": "Titolo", + "params.saved_labels.load.browser": "Carica", + "params.saved_labels.load.json": "Importa", + "params.saved_labels.make_default": "Rendere predefinito", + "params.saved_labels.menu_title": "Salva/carica (salva in browser)", + "params.saved_labels.save.browser.replace": "Salva (sostituisci)", + "params.saved_labels.save.browser": "Salva", + "params.saved_labels.save.json": "Esporta", + "params.text.align.center": "Allinea il testo: al centro", + "params.text.align.left": "Allinea il testo: a sinistra", + "params.text.align.right": "Allinea testo: a destra", + "params.text.bold": "Grassetto", + "params.text.edit.title": "Modifica testo", + "params.text.edit": "Modifica in popup", + "params.text.fetch_fonts": "Recupera font", + "params.text.font_family": "Famiglia di font", + "params.text.font_size.down": "Diminuisci dimensione font", + "params.text.font_size.up": "Aumenta dimensione font", + "params.text.font_size": "Dimensione font", + "params.text.invert_colors": "Inverti colori", + "params.text.line_height": "Altezza riga", + "params.text.vorigin.bottom": "Basso", + "params.text.vorigin.center": "Centro", + "params.text.vorigin.top": "Alto", + "params.text.vorigin": "Origine verticale", + "params.variables.insert.date": "Data", + "params.variables.insert.datetime": "Data e ora", + "params.variables.insert.time": "Ora", + "params.variables.insert": "Inserisci variabile", + "preview.close": "Chiudi", + "preview.copies": "Copie", + "preview.density": "Densità", + "preview.label_type.Black": "Nero", + "preview.label_type.BlackMarkGap": "Spazio segno nero", + "preview.label_type.Continuous": "Continuo", + "preview.label_type.HeatShrinkTube": "Tubo termoretraibile", + "preview.label_type.Invalid": "Non valido", + "preview.label_type.Perforated": "Perforato", + "preview.label_type.PvcTag": "Etichetta in PVC", + "preview.label_type.Transparent": "Trasparente", + "preview.label_type.WithGaps": "With Gaps", + "preview.label_type": "Tipo di etichetta", + "preview.not_connected": "La stampante non è connessa", + "preview.not_implemented": "NON IMPLEMENTATO", + "preview.offset.inner": "Interno", + "preview.offset.outer": "Esterno", + "preview.offset": "Offset", + "preview.postprocess.atkinson": "Dither (Atkinson)", + "preview.postprocess.threshold": "Soglia", + "preview.postprocess": "Post-processo", + "preview.print_task": "Stampante", + "preview.print.cancel": "Annulla stampa", + "preview.print": "Stampa", + "preview.threshold": "Soglia", + "preview.title": "Anteprima" +} diff --git a/src/locale/dicts/ru.json b/src/locale/dicts/ru.json new file mode 100644 index 0000000..103395c --- /dev/null +++ b/src/locale/dicts/ru.json @@ -0,0 +1,123 @@ +{ + "browser_warning.lines.first": "О нет, ваш браузер не поддерживает Bluetooth и последовательный порт...", + "browser_warning.lines.second": "В любом случае, вы можете рисовать этикетки.", + "connector.bluetooth": "Bluetooth 123", + "connector.disconnect.heartbeat": "Отключено (принтер не отвечает)", + "connector.serial": "Посл. порт (USB)", + "editor.clone": "Клонировать", + "editor.default_text": "Текст", + "editor.delete": "Удалить", + "editor.iconpicker.mdi_link_title": "Подробный список здесь", + "editor.iconpicker.search": "Поиск", + "editor.iconpicker.title": "Добавить иконку", + "editor.import.zpl": "Импорт ZPL", + "editor.objectpicker.barcode": "Штрих-код", + "editor.objectpicker.circle": "Круг", + "editor.objectpicker.image": "Картинка", + "editor.objectpicker.line": "Линия", + "editor.objectpicker.qrcode": "QR Код", + "editor.objectpicker.rectangle": "Прямоугольник", + "editor.objectpicker.text": "Текст", + "editor.objectpicker.title": "Добавить объект", + "editor.preview": "Предпросмотр", + "editor.print": "Печать", + "editor.redo": "Повторить", + "editor.undo": "Отменить", + "editor.warning.load": "Холст будет заменён на сохранённый", + "editor.warning.save": "Сохранённые данные будут перезаписаны. Сохранить?", + "main.built": "собрано", + "main.code": "Исходный код", + "params.barcode.content": "Содержимое", + "params.barcode.enable_caption": "Показывать надпись", + "params.barcode.encoding": "Тип", + "params.barcode.font_size": "Размер шрифта", + "params.barcode.scale": "Масштаб", + "params.csv.enabled": "Включить", + "params.csv.placeholders": "Переменные:", + "params.csv.rowsfound": "Найдено строк c данными:", + "params.csv.tip": "Первая строка - заголовок. Он используется для имён переменных. В качестве разделителей используются запятые.", + "params.csv.title": "Динамические данные (CSV)", + "params.generic.center.horizontal": "Выровнять горизонтально", + "params.generic.center.vertical": "Выровнять вертикально", + "params.label.apply": "Применить", + "params.label.current": "Текущие параметры:", + "params.label.direction.left": "Слева", + "params.label.direction.top": "Сверху", + "params.label.direction": "Направление печати", + "params.label.dpmm": "пикс/мм", + "params.label.export": "Экспорт", + "params.label.head_density.help": "Вычисление: DPI / 25.4", + "params.label.head_density": "Плотность пикселей", + "params.label.import": "Импорт", + "params.label.label_title": "Своё название", + "params.label.menu_title": "Настройки этикетки", + "params.label.mm": "мм", + "params.label.px": "пикс.", + "params.label.save_template": "Сохранить как шаблон", + "params.label.shape": "Форма этикетки", + "params.label.size": "Размер", + "params.label.split": "Разделение этикетки", + "params.label.tail.length": "Длина хвостовика", + "params.label.tail.position": "Положение хвостовика", + "params.label.warning.direction": "Рекомендуемое направление печати для вашего принтера:", + "params.label.warning.import": "Все сохранённые шаблоны будут перезаписаны", + "params.label.warning.width": "Ширина этикетки слишком велика для принтера:", + "params.qrcode.ecl": "Уровень коррекции ошибок", + "params.saved_labels.kb_used": "кБ использовано", + "params.saved_labels.label_title.placeholder": "(необязательно)", + "params.saved_labels.label_title": "Название", + "params.saved_labels.load.browser": "Открыть", + "params.saved_labels.load.json": "Импорт", + "params.saved_labels.make_default": "Сделать базовым", + "params.saved_labels.menu_title": "Сохранить/загрузить (хранилище браузера)", + "params.saved_labels.save.browser.replace": "Сохранить (заменить)", + "params.saved_labels.save.browser": "Сохранить", + "params.saved_labels.save.json": "Экспорт", + "params.text.align.center": "Выравнивание текста: По центру", + "params.text.align.left": "Выравнивание текста: Слева", + "params.text.align.right": "Выравнивание текста: Справа", + "params.text.bold": "Полужирный", + "params.text.edit.title": "Редактирование текста", + "params.text.edit": "Редактировать во всплывающем диалоге", + "params.text.fetch_fonts": "Получить список шрифтов", + "params.text.font_family": "Шрифт", + "params.text.font_size.down": "Уменьшить размер шрифта", + "params.text.font_size.up": "Увеличить размер шрифта", + "params.text.font_size": "Размер шрифта", + "params.text.invert_colors": "Инвертировать цвета", + "params.text.line_height": "Межстрочный интервал", + "params.text.vorigin.bottom": "Снизу", + "params.text.vorigin.center": "Снизу", + "params.text.vorigin.top": "Сверху", + "params.text.vorigin": "Вертикальная привязка", + "params.variables.insert.date": "Дата", + "params.variables.insert.datetime": "Дата и время", + "params.variables.insert.time": "Время", + "params.variables.insert": "Вставить переменную", + "preview.close": "Закрыть", + "preview.copies": "Копии", + "preview.density": "Плотность", + "preview.label_type.Black": "Чёрный", + "preview.label_type.BlackMarkGap": "С чёрными метками", + "preview.label_type.Continuous": "Неразрывный", + "preview.label_type.HeatShrinkTube": "Термоусадочная трубка", + "preview.label_type.Invalid": "Некорректный", + "preview.label_type.Perforated": "С отверстиями", + "preview.label_type.PvcTag": "ПВХ", + "preview.label_type.Transparent": "Прозрачный", + "preview.label_type.WithGaps": "С промежутками", + "preview.label_type": "Тип этикетки", + "preview.not_connected": "Принтер не подключен", + "preview.not_implemented": "НЕ РЕАЛИЗОВАНО", + "preview.offset.inner": "Внутри", + "preview.offset.outer": "Снаружи", + "preview.offset": "Смещение", + "preview.postprocess.atkinson": "Дизеринг (Аткинсон)", + "preview.postprocess.threshold": "Порог", + "preview.postprocess": "Постобработка", + "preview.print_task": "Задача печати", + "preview.print.cancel": "Отменить печать", + "preview.print": "Печать", + "preview.threshold": "Порог", + "preview.title": "Предпросмотр печати" +} diff --git a/src/locale/dicts/zh_cn.json b/src/locale/dicts/zh_cn.json new file mode 100644 index 0000000..4c1b7d0 --- /dev/null +++ b/src/locale/dicts/zh_cn.json @@ -0,0 +1,123 @@ +{ + "browser_warning.lines.first": "哦豁,你的浏览器貌似不支持蓝牙和串口通讯", + "browser_warning.lines.second": "但是你依然可以使用标签编辑功能", + "connector.bluetooth": "蓝牙", + "connector.disconnect.heartbeat": "已断开(打印机无响应)", + "connector.serial": "串口(USB)", + "editor.clone": "复制", + "editor.default_text": "文本", + "editor.delete": "删除", + "editor.iconpicker.mdi_link_title": "在这里查看详细列表", + "editor.iconpicker.search": "搜索", + "editor.iconpicker.title": "添加图标", + "editor.import.zpl": "导入 ZPL 文件", + "editor.objectpicker.barcode": "条码", + "editor.objectpicker.circle": "圆形", + "editor.objectpicker.image": "图片", + "editor.objectpicker.line": "线条", + "editor.objectpicker.qrcode": "二维码", + "editor.objectpicker.rectangle": "矩形", + "editor.objectpicker.text": "文字", + "editor.objectpicker.title": "添加元素", + "editor.preview": "预览", + "editor.print": "打印", + "editor.redo": "重做", + "editor.undo": "撤消", + "editor.warning.load": "画布将被替换为保存的数据,需要继续吗?", + "editor.warning.save": "保存的数据将会被覆盖,需要继续吗?", + "main.built": "编译于", + "main.code": "查看源码", + "params.barcode.content": "内容", + "params.barcode.enable_caption": "打印文字", + "params.barcode.encoding": "类型", + "params.barcode.font_size": "字体大小", + "params.barcode.scale": "缩放比例", + "params.csv.enabled": "启用", + "params.csv.placeholders": "变量:", + "params.csv.rowsfound": "数据行数:", + "params.csv.tip": "第一行是表头,用作变量名。英文逗号用作分隔符。", + "params.csv.title": "动态标签数据(CSV)", + "params.generic.center.horizontal": "横向居中", + "params.generic.center.vertical": "竖向居中", + "params.label.apply": "应用", + "params.label.current": "当前设置:", + "params.label.direction.left": "向左", + "params.label.direction.top": "向上", + "params.label.direction": "出纸方向", + "params.label.dpmm": "点/毫米", + "params.label.export": "导出 JSON 文件", + "params.label.head_density.help": "计算方法:DPI / 25.4", + "params.label.head_density": "像素密度", + "params.label.import": "导入 JSON 文件", + "params.label.label_title": "自定义名称", + "params.label.menu_title": "标签规格", + "params.label.mm": "毫米", + "params.label.px": "像素", + "params.label.save_template": "保存模版", + "params.label.shape": "标签形状", + "params.label.size": "尺寸", + "params.label.split": "标签分割", + "params.label.tail.length": "尾巴长度", + "params.label.tail.position": "尾部位置", + "params.label.warning.direction": "根据你的打印机推荐使用:", + "params.label.warning.import": "所有已保存的标签规格将会被覆盖,是否继续?", + "params.label.warning.width": "标签宽度对于你的打印机来说可能太宽了:", + "params.qrcode.ecl": "误差校正级别", + "params.saved_labels.kb_used": "KB 已使用", + "params.saved_labels.label_title.placeholder": "(可选)", + "params.saved_labels.label_title": "名称", + "params.saved_labels.load.browser": "载入到画布", + "params.saved_labels.load.json": "导入 JSON 文件", + "params.saved_labels.make_default": "设置默认", + "params.saved_labels.menu_title": "已保存的标签", + "params.saved_labels.save.browser.replace": "保存/替换", + "params.saved_labels.save.browser": "另存为", + "params.saved_labels.save.json": "导出 JSON 文件", + "params.text.align.center": "居中", + "params.text.align.left": "左对齐", + "params.text.align.right": "右对齐", + "params.text.bold": "加粗", + "params.text.edit.title": "编辑文字", + "params.text.edit": "编辑", + "params.text.fetch_fonts": "获取系统字体", + "params.text.font_family": "字体", + "params.text.font_size.down": "缩小", + "params.text.font_size.up": "加大", + "params.text.font_size": "字体大小", + "params.text.invert_colors": "反转颜色", + "params.text.line_height": "行距", + "params.text.vorigin.bottom": "底部对齐", + "params.text.vorigin.center": "居中", + "params.text.vorigin.top": "顶部对齐", + "params.text.vorigin": "垂直对齐", + "params.variables.insert.date": "日期", + "params.variables.insert.datetime": "日期时间", + "params.variables.insert.time": "时间", + "params.variables.insert": "插入变量", + "preview.close": "关闭", + "preview.copies": "份数", + "preview.density": "浓度", + "preview.label_type.Black": "黑标纸", + "preview.label_type.BlackMarkGap": "黑标间隙纸", + "preview.label_type.Continuous": "连续纸", + "preview.label_type.HeatShrinkTube": "热缩管", + "preview.label_type.Invalid": "无效纸张", + "preview.label_type.Perforated": "定孔纸", + "preview.label_type.PvcTag": "PVC", + "preview.label_type.Transparent": "透明纸", + "preview.label_type.WithGaps": "间隙纸", + "preview.label_type": "标签类型", + "preview.not_connected": "打印机未连接", + "preview.not_implemented": "暂不支持", + "preview.offset.inner": "内偏移", + "preview.offset.outer": "外偏移", + "preview.offset": "偏移", + "preview.postprocess.atkinson": "抖动(Atkinson)", + "preview.postprocess.threshold": "阈值化", + "preview.postprocess": "前置处理器", + "preview.print_task": "打印接口", + "preview.print.cancel": "取消打印", + "preview.print": "打印", + "preview.threshold": "阈值", + "preview.title": "打印预览" +} diff --git a/src/locale/en.ts b/src/locale/en.ts deleted file mode 100644 index e938596..0000000 --- a/src/locale/en.ts +++ /dev/null @@ -1,138 +0,0 @@ -/** English translation. Also used as fallback. */ -export const translation_en = { - "browser_warning.lines.first": "Oh no, your browser does not support bluetooth and serial communications", - "browser_warning.lines.second": "Anyway, you still can draw labels.", - "connector.bluetooth": "Bluetooth", - "connector.serial": "Serial (USB)", - "connector.disconnect.heartbeat": "Disconnected (printer does not respond)", - "editor.clone": "Clone", - "editor.undo": "Undo", - "editor.redo": "Redo", - "editor.default_text": "Text", - "editor.delete": "Delete", - "editor.import.zpl": "Import ZPL", - - "editor.iconpicker.search": "Search", - "editor.iconpicker.title": "Add icon", - "editor.iconpicker.mdi_link_title": "See detailed list here", - - "editor.objectpicker.barcode": "Barcode", - "editor.objectpicker.circle": "Circle", - "editor.objectpicker.image": "Image", - "editor.objectpicker.line": "Line", - "editor.objectpicker.qrcode": "QR Code", - "editor.objectpicker.rectangle": "Rectangle", - "editor.objectpicker.text": "Text", - "editor.objectpicker.title": "Add object", - - "editor.preview": "Preview", - "editor.print": "Print", - "editor.warning.load": "Canvas will be replaced with saved data", - "editor.warning.save": "Saved data will be overwritten. Save?", - - "main.built": "built at", - "main.code": "Code", - - "params.barcode.content": "Content", - "params.barcode.enable_caption": "Enable caption", - "params.barcode.encoding": "Encoding", - "params.barcode.font_size": "Font size", - "params.barcode.scale": "Scale factor", - - "params.csv.enabled": "Enabled", - "params.csv.placeholders": "Variables:", - "params.csv.rowsfound": "Data rows found:", - "params.csv.tip": "First row is a header. It used as variable names. Commas are used as separators.", - "params.csv.title": "Dynamic label data (CSV)", - - "params.generic.center.horizontal": "Center horizontally", - "params.generic.center.vertical": "Center vertically", - - "params.label.apply": "Apply", - "params.label.current": "Current parameters:", - "params.label.menu_title": "Label properties", - "params.label.direction.left": "Left", - "params.label.direction.top": "Top", - "params.label.direction": "Print direction", - "params.label.dpmm": "dpmm", - "params.label.head_density.help": "Calculation: DPI / 25.4", - "params.label.head_density": "Pixel density", - "params.label.label_title": "Custom title", - "params.label.mm": "mm", - "params.label.px": "px", - "params.label.save_template": "Save as template", - "params.label.size": "Size", - "params.label.warning.direction": "Recommended direction for your printer:", - "params.label.warning.width": "Label width is too big for your printer:", - "params.label.warning.import": "All saved templates will be overwritten", - "params.label.export": "Export", - "params.label.import": "Import", - "params.label.shape": "Label shape", - "params.label.split": "Label split", - "params.label.tail.length": "Tail length", - "params.label.tail.position": "Tail position", - - "params.qrcode.ecl": "Error Correction Level", - - "params.text.align.center": "Align text: Center", - "params.text.align.left": "Align text: Left", - "params.text.align.right": "Align text: Right", - "params.text.bold": "Bold", - "params.text.fetch_fonts": "Fetch fonts", - "params.text.font_family": "Font family", - "params.text.font_size.down": "Decrease font size", - "params.text.font_size.up": "Increase font size", - "params.text.font_size": "Font size", - "params.text.invert_colors": "Invert colors", - "params.text.line_height": "Line height", - "params.text.vorigin.bottom": "Bottom", - "params.text.vorigin.center": "Center", - "params.text.vorigin.top": "Top", - "params.text.vorigin": "Vertical Origin", - "params.text.edit": "Edit in popup", - "params.text.edit.title": "Editing text", - - "params.variables.insert.date": "Date", - "params.variables.insert.datetime": "Datetime", - "params.variables.insert.time": "Time", - "params.variables.insert": "Insert variable", - - "params.saved_labels.menu_title": "Save/load (browser storage)", - "params.saved_labels.kb_used": "kB used", - "params.saved_labels.make_default": "Make default", - "params.saved_labels.save.json": "Export", - "params.saved_labels.save.browser": "Save", - "params.saved_labels.save.browser.replace": "Save (replace)", - "params.saved_labels.load.json": "Import", - "params.saved_labels.load.browser": "Load", - "params.saved_labels.label_title": "Title", - "params.saved_labels.label_title.placeholder": "(optional)", - - "preview.close": "Close", - "preview.copies": "Copies", - "preview.density": "Density", - "preview.label_type.Black": "Black", - "preview.label_type.BlackMarkGap": "Black mark gap", - "preview.label_type.Continuous": "Continuous", - "preview.label_type.HeatShrinkTube": "Heat shrink tube", - "preview.label_type.Invalid": "Invalid", - "preview.label_type.Perforated": "Perforated", - "preview.label_type.PvcTag": "PVC Tag", - "preview.label_type.Transparent": "Transparent", - "preview.label_type.WithGaps": "WithGaps", - "preview.label_type": "Label type", - "preview.not_connected": "Printer is not connected", - "preview.not_implemented": "NOT IMPLEMENTED", - "preview.postprocess.atkinson": "Dither (Atkinson)", - "preview.postprocess.threshold": "Threshold", - "preview.postprocess": "Post-process", - "preview.print_task": "Print task", - "preview.print": "Print", - "preview.threshold": "Threshold", - "preview.title": "Print preview", - "preview.print.cancel": "Cancel print", - "preview.offset": "Offset", - "preview.offset.inner": "Inner", - "preview.offset.outer": "Outer", - -} as const; diff --git a/src/locale/index.ts b/src/locale/index.ts index a08bd43..9d9a7c7 100644 --- a/src/locale/index.ts +++ b/src/locale/index.ts @@ -1,23 +1,25 @@ -import { translation_de } from "./de"; -import { translation_en } from "./en"; -import { translation_it } from "./it"; -import { translation_ru } from "./ru"; -import { translation_zh_cn } from "./zh_cn"; +import lang_de from "./dicts/de.json"; +import lang_en from "./dicts/en.json"; +import lang_it from "./dicts/it.json"; +import lang_ru from "./dicts/ru.json"; +import lang_zh_cn from "./dicts/zh_cn.json"; + +export type TranslationKey = keyof typeof lang_en; +export type TranslationDict = Record; export const langPack = { - /** German */ - de: translation_de, /** English (fallback) */ - en: translation_en, + en: lang_en, + /** German */ + de: lang_de as TranslationDict, /** Italian */ - it: translation_it, + it: lang_it as TranslationDict, /** Russian */ - ru: translation_ru, + ru: lang_ru as TranslationDict, /** Simplified Chinese */ - zh_cn: translation_zh_cn, + zh_cn: lang_zh_cn as TranslationDict, } as const; -export type TranslationKey = keyof typeof translation_en; export type SupportedLanguage = keyof typeof langPack; export const languageNames: Record = { diff --git a/src/locale/it.ts b/src/locale/it.ts deleted file mode 100644 index 1a42c72..0000000 --- a/src/locale/it.ts +++ /dev/null @@ -1,127 +0,0 @@ -import type { TranslationKey } from "."; - -/** Italian */ -export const translation_it: Partial> = { - "browser_warning.lines.first": "Oh no, il tuo browser non supporta le comunicazioni Bluetooth e seriali", - "browser_warning.lines.second": "Comunque, puoi disegnare etichette.", - "connector.bluetooth": "Bluetooth", - "connector.serial": "Seriale (USB)", - "connector.disconnect.heartbeat": "Disconnesso (la stampante non risponde)", - "editor.clone": "Clona", - "editor.undo": "Annulla", - "editor.redo": "Ripristina", - "editor.default_text": "Testo", - "editor.delete": "Elimina", - "editor.import.zpl": "Importa ZPL", - "editor.iconpicker.search": "Cerca", - "editor.iconpicker.title": "Aggiungi icona", - "editor.iconpicker.mdi_link_title": "Vedi elenco dettagliato", - "editor.objectpicker.barcode": "Codice a barre", - "editor.objectpicker.circle": "Cerchio", - "editor.objectpicker.image": "Immagine", - "editor.objectpicker.line": "Linea", - "editor.objectpicker.qrcode": "Codice QR", - "editor.objectpicker.rectangle": "Rettangolo", - "editor.objectpicker.text": "Testo", - "editor.objectpicker.title": "Aggiungi oggetto", - "editor.preview": "Anteprima", - "editor.print": "Stampa", - "editor.warning.load": "La tela verrà sostituita con i dati salvati", - "editor.warning.save": "I dati salvati verranno sovrascritti. Salvare?", - "main.built": "costruito in", - "main.code": "Versione", - "params.barcode.content": "Contenuto", - "params.barcode.enable_caption": "Abilita didascalia", - "params.barcode.encoding": "Codifica", - "params.barcode.font_size": "Dimensione carattere", - "params.barcode.scale": "Fattore di scala", - "params.csv.enabled": "Abilitato", - "params.csv.placeholders": "Variabili:", - "params.csv.rowsfound": "Righe di dati trovate:", - "params.csv.tip": "La prima riga è un'header. Le virgole sono utilizzate come separatori.", - "params.csv.title": "CSV", - "params.generic.center.horizontal": "Centra orizzontalmente", - "params.generic.center.vertical": "Centra verticalmente", - "params.label.apply": "Applica", - "params.label.current": "Parametri correnti:", - "params.label.menu_title": "Proprietà etichetta", - "params.label.direction.left": "Sinistra", - "params.label.direction.top": "In alto", - "params.label.direction": "Direzione stampa", - "params.label.dpmm": "dpmm", - "params.label.head_density.help": "Calcolo: DPI / 25,4", - "params.label.head_density": "Densità pixel", - "params.label.label_title": "Titolo personalizzato", - "params.label.mm": "mm", - "params.label.px": "px", - "params.label.save_template": "Salva come modello", - "params.label.size": "Dimensione", - "params.label.warning.direction": "Direzione consigliata per la stampante:", - "params.label.warning.width": "La larghezza dell'etichetta è troppo grande per la stampante:", - "params.label.warning.import": "Tutti i modelli salvati verranno sovrascritti", - "params.label.export": "Esporta", - "params.label.import": "Importa", - "params.label.shape": "Forma dell'etichetta", - "params.label.split": "Etichetta divisa", - "params.label.tail.length": "Lunghezza della divisone", - "params.label.tail.position": "Posizione della divisone", - - "params.qrcode.ecl": "Livello di correzione degli errori", - "params.text.align.center": "Allinea il testo: al centro", - "params.text.align.left": "Allinea il testo: a sinistra", - "params.text.align.right": "Allinea testo: a destra", - "params.text.bold": "Grassetto", - "params.text.fetch_fonts": "Recupera font", - "params.text.font_family": "Famiglia di font", - "params.text.font_size.down": "Diminuisci dimensione font", - "params.text.font_size.up": "Aumenta dimensione font", - "params.text.font_size": "Dimensione font", - "params.text.invert_colors": "Inverti colori", - "params.text.line_height": "Altezza riga", - "params.text.vorigin.bottom": "Basso", - "params.text.vorigin.center": "Centro", - "params.text.vorigin.top": "Alto", - "params.text.vorigin": "Origine verticale", - "params.text.edit": "Modifica in popup", - "params.text.edit.title": "Modifica testo", - "params.variables.insert.date": "Data", - "params.variables.insert.datetime": "Data e ora", - "params.variables.insert.time": "Ora", - "params.variables.insert": "Inserisci variabile", - "params.saved_labels.menu_title": "Salva/carica (salva in browser)", - "params.saved_labels.kb_used": "kB utilizzati", - "params.saved_labels.save.json": "Esporta", - "params.saved_labels.make_default": "Rendere predefinito", - "params.saved_labels.save.browser": "Salva", - "params.saved_labels.save.browser.replace": "Salva (sostituisci)", - "params.saved_labels.load.json": "Importa", - "params.saved_labels.load.browser": "Carica", - "params.saved_labels.label_title": "Titolo", - "params.saved_labels.label_title.placeholder": "(facoltativo)", - "preview.close": "Chiudi", - "preview.copies": "Copie", - "preview.density": "Densità", - "preview.label_type.Black": "Nero", - "preview.label_type.BlackMarkGap": "Spazio segno nero", - "preview.label_type.Continuous": "Continuo", - "preview.label_type.HeatShrinkTube": "Tubo termoretraibile", - "preview.label_type.Invalid": "Non valido", - "preview.label_type.Perforated": "Perforato", - "preview.label_type.PvcTag": "Etichetta in PVC", - "preview.label_type.Transparent": "Trasparente", - "preview.label_type.WithGaps": "With Gaps", - "preview.label_type": "Tipo di etichetta", - "preview.not_connected": "La stampante non è connessa", - "preview.not_implemented": "NON IMPLEMENTATO", - "preview.postprocess.atkinson": "Dither (Atkinson)", - "preview.postprocess.threshold": "Soglia", - "preview.postprocess": "Post-processo", - "preview.print_task": "Stampante", - "preview.print": "Stampa", - "preview.threshold": "Soglia", - "preview.title": "Anteprima", - "preview.print.cancel": "Annulla stampa", - "preview.offset": "Offset", - "preview.offset.inner": "Interno", - "preview.offset.outer": "Esterno", -}; diff --git a/src/locale/ru.ts b/src/locale/ru.ts deleted file mode 100644 index 984a729..0000000 --- a/src/locale/ru.ts +++ /dev/null @@ -1,142 +0,0 @@ -import type { TranslationKey } from "."; - -/** Russian */ -export const translation_ru: Record = { - /* Main page */ - "main.code": "Исходный код", - "main.built": "собрано", - /* BrowserWarning */ - "browser_warning.lines.first": "О нет, ваш браузер не поддерживает Bluetooth и последовательный порт", - "browser_warning.lines.second": "В любом случае, вы можете рисовать этикетки.", - /* PrinterConnector */ - "connector.bluetooth": "Bluetooth", - "connector.serial": "Посл. порт (USB)", - "connector.disconnect.heartbeat": "Отключено (принтер не отвечает)", - /* ImageEditor */ - "editor.default_text": "Текст", - "editor.import.zpl": "Импорт ZPL", - "editor.preview": "Предпросмотр", - "editor.print": "Печать", - "editor.delete": "Удалить", - "editor.clone": "Клонировать", - "editor.undo": "Отменить", - "editor.redo": "Повторить", - "editor.warning.save": "Сохранённые данные будут перезаписаны. Сохранить?", - "editor.warning.load": "Холст будет заменён на сохранённый", - /* PrintPreview */ - "preview.title": "Предпросмотр печати", - "preview.postprocess": "Постобработка", - "preview.postprocess.threshold": "Порог", - "preview.postprocess.atkinson": "Дизеринг (Аткинсон)", - "preview.threshold": "Порог", - "preview.copies": "Копии", - "preview.density": "Плотность", - "preview.print_task": "Задача печати", - "preview.not_implemented": "НЕ РЕАЛИЗОВАНО", - "preview.close": "Закрыть", - "preview.print": "Печать", - "preview.print.cancel": "Отменить печать", - "preview.not_connected": "Принтер не подключен", - "preview.label_type": "Тип этикетки", - "preview.label_type.Invalid": "Некорректный", - "preview.label_type.WithGaps": "С промежутками", - "preview.label_type.Black": "Чёрный", - "preview.label_type.Continuous": "Неразрывный", - "preview.label_type.Perforated": "С отверстиями", - "preview.label_type.Transparent": "Прозрачный", - "preview.label_type.PvcTag": "ПВХ", - "preview.label_type.BlackMarkGap": "С чёрными метками", - "preview.label_type.HeatShrinkTube": "Термоусадочная трубка", - "preview.offset": "Смещение", - "preview.offset.inner": "Внутри", - "preview.offset.outer": "Снаружи", - /* ObjectPicker */ - "editor.objectpicker.title": "Добавить объект", - "editor.objectpicker.text": "Текст", - "editor.objectpicker.line": "Линия", - "editor.objectpicker.rectangle": "Прямоугольник", - "editor.objectpicker.circle": "Круг", - "editor.objectpicker.image": "Картинка", - "editor.objectpicker.qrcode": "QR Код", - "editor.objectpicker.barcode": "Штрих-код", - /* IconPicker */ - "editor.iconpicker.title": "Добавить иконку", - "editor.iconpicker.search": "Поиск", - "editor.iconpicker.mdi_link_title": "Подробный список здесь", - /* LabelPropsEditor */ - "params.csv.title": "Динамические данные (CSV)", - "params.csv.tip": - "Первая строка - заголовок. Он используется для имён переменных. В качестве разделителей используются запятые.", - "params.csv.rowsfound": "Найдено строк c данными:", - "params.csv.enabled": "Включить", - "params.csv.placeholders": "Переменные:", - /* LabelPropsEditor */ - "params.label.menu_title": "Настройки этикетки", - "params.label.label_title": "Своё название", - "params.label.size": "Размер", - "params.label.mm": "мм", - "params.label.dpmm": "пикс/мм", - "params.label.px": "пикс.", - "params.label.direction": "Направление печати", - "params.label.direction.left": "Слева", - "params.label.direction.top": "Сверху", - "params.label.apply": "Применить", - "params.label.current": "Текущие параметры:", - "params.label.save_template": "Сохранить как шаблон", - "params.label.head_density": "Плотность пикселей", - "params.label.head_density.help": "Вычисление: DPI / 25.4", - "params.label.warning.width": "Ширина этикетки слишком велика для принтера:", - "params.label.warning.direction": "Рекомендуемое направление печати для вашего принтера:", - "params.label.warning.import": "Все сохранённые шаблоны будут перезаписаны", - "params.label.export": "Экспорт", - "params.label.import": "Импорт", - "params.label.shape": "Форма этикетки", - "params.label.split": "Разделение этикетки", - "params.label.tail.length": "Длина хвостовика", - "params.label.tail.position": "Положение хвостовика", - - /* TextParamsControls */ - "params.text.fetch_fonts": "Получить список шрифтов", - "params.text.align.left": "Выравнивание текста: Слева", - "params.text.align.center": "Выравнивание текста: По центру", - "params.text.align.right": "Выравнивание текста: Справа", - "params.text.vorigin": "Вертикальная привязка", - "params.text.vorigin.top": "Сверху", - "params.text.vorigin.center": "Снизу", - "params.text.vorigin.bottom": "Снизу", - "params.text.bold": "Полужирный", - "params.text.font_size": "Размер шрифта", - "params.text.font_size.up": "Увеличить размер шрифта", - "params.text.font_size.down": "Уменьшить размер шрифта", - "params.text.line_height": "Межстрочный интервал", - "params.text.font_family": "Шрифт", - "params.text.invert_colors": "Инвертировать цвета", - "params.text.edit": "Редактировать во всплывающем диалоге", - "params.text.edit.title": "Редактирование текста", - "params.variables.insert": "Вставить переменную", - "params.variables.insert.datetime": "Дата и время", - "params.variables.insert.date": "Дата", - "params.variables.insert.time": "Время", - /* GenericObjectParamsControls */ - "params.generic.center.vertical": "Выровнять вертикально", - "params.generic.center.horizontal": "Выровнять горизонтально", - /* QRCodeParamsControls */ - "params.qrcode.ecl": "Уровень коррекции ошибок", - /* BarcodeParamsControls */ - "params.barcode.encoding": "Тип", - "params.barcode.content": "Содержимое", - "params.barcode.scale": "Масштаб", - "params.barcode.font_size": "Размер шрифта", - "params.barcode.enable_caption": "Показывать надпись", - /* SavedLabelsMenu */ - "params.saved_labels.menu_title": "Сохранить/загрузить (хранилище браузера)", - "params.saved_labels.kb_used": "кБ использовано", - "params.saved_labels.make_default": "Сделать базовым", - "params.saved_labels.save.json": "Экспорт", - "params.saved_labels.save.browser": "Сохранить", - "params.saved_labels.save.browser.replace": "Сохранить (заменить)", - "params.saved_labels.load.json": "Импорт", - "params.saved_labels.load.browser": "Открыть", - "params.saved_labels.label_title": "Название", - "params.saved_labels.label_title.placeholder": "(необязательно)", -}; diff --git a/src/locale/zh_cn.ts b/src/locale/zh_cn.ts deleted file mode 100644 index e4c6db2..0000000 --- a/src/locale/zh_cn.ts +++ /dev/null @@ -1,140 +0,0 @@ -import type { TranslationKey } from "."; - -/** Simplified Chinese */ -export const translation_zh_cn: Partial> = { - /* BrowserWarning */ - "browser_warning.lines.first": "哦豁,你的浏览器貌似不支持蓝牙和串口通讯", - "browser_warning.lines.second": "但是你依然可以使用标签编辑功能", - /* PrinterConnector */ - "connector.bluetooth": "蓝牙", - "connector.disconnect.heartbeat": "已断开(打印机无响应)", - "connector.serial": "串口(USB)", - /* ImageEditor */ - "editor.clone": "复制", - "editor.default_text": "文本", - "editor.delete": "删除", - "editor.iconpicker.mdi_link_title": "在这里查看详细列表", - "editor.iconpicker.search": "搜索", - "editor.iconpicker.title": "添加图标", - "editor.import.zpl": "导入 ZPL 文件", - "editor.objectpicker.barcode": "条码", - "editor.objectpicker.circle": "圆形", - "editor.objectpicker.image": "图片", - "editor.objectpicker.line": "线条", - "editor.objectpicker.qrcode": "二维码", - "editor.objectpicker.rectangle": "矩形", - "editor.objectpicker.text": "文字", - "editor.objectpicker.title": "添加元素", - "editor.preview": "预览", - "editor.print": "打印", - "editor.redo": "重做", - "editor.undo": "撤消", - "editor.warning.load": "画布将被替换为保存的数据,需要继续吗?", - "editor.warning.save": "保存的数据将会被覆盖,需要继续吗?", - /* Main page */ - "main.built": "编译于", - "main.code": "查看源码", - /* BarcodeParamsControls */ - "params.barcode.content": "内容", - "params.barcode.enable_caption": "打印文字", - "params.barcode.encoding": "类型", - "params.barcode.font_size": "字体大小", - "params.barcode.scale": "缩放比例", - /* CsvControl */ - "params.csv.enabled": "启用", - "params.csv.placeholders": "变量:", - "params.csv.rowsfound": "数据行数:", - "params.csv.tip": "第一行是表头,用作变量名。英文逗号用作分隔符。", - "params.csv.title": "动态标签数据(CSV)", - /* GenericObjectParamsControls */ - "params.generic.center.horizontal": "横向居中", - "params.generic.center.vertical": "竖向居中", - /* LabelPropsEditor */ - "params.label.apply": "应用", - "params.label.current": "当前设置:", - "params.label.direction.left": "向左", - "params.label.direction.top": "向上", - "params.label.direction": "出纸方向", - "params.label.dpmm": "点/毫米", - "params.label.export": "导出 JSON 文件", - "params.label.head_density.help": "计算方法:DPI / 25.4", - "params.label.head_density": "像素密度", - "params.label.import": "导入 JSON 文件", - "params.label.label_title": "自定义名称", - "params.label.menu_title": "标签规格", - "params.label.mm": "毫米", - "params.label.px": "像素", - "params.label.save_template": "保存模版", - "params.label.size": "尺寸", - "params.label.warning.direction": "根据你的打印机推荐使用:", - "params.label.warning.import": "所有已保存的标签规格将会被覆盖,是否继续?", - "params.label.warning.width": "标签宽度对于你的打印机来说可能太宽了:", - "params.label.shape": "标签形状", - "params.label.split": "标签分割", - "params.label.tail.length": "尾巴长度", - "params.label.tail.position": "尾部位置", - - /* QRCodeParamsControls */ - "params.qrcode.ecl": "误差校正级别", - /* SavedLabelsMenu */ - "params.saved_labels.kb_used": "KB 已使用", - "params.saved_labels.label_title.placeholder": "(可选)", - "params.saved_labels.label_title": "名称", - "params.saved_labels.load.browser": "载入到画布", - "params.saved_labels.load.json": "导入 JSON 文件", - "params.saved_labels.menu_title": "已保存的标签", - "params.saved_labels.make_default": "设置默认", - "params.saved_labels.save.browser.replace": "保存/替换", - "params.saved_labels.save.browser": "另存为", - "params.saved_labels.save.json": "导出 JSON 文件", - /* TextParamsControls */ - "params.text.align.center": "居中", - "params.text.align.left": "左对齐", - "params.text.align.right": "右对齐", - "params.text.bold": "加粗", - "params.text.edit.title": "编辑文字", - "params.text.edit": "编辑", - "params.text.fetch_fonts": "获取系统字体", - "params.text.font_family": "字体", - "params.text.font_size.down": "缩小", - "params.text.font_size.up": "加大", - "params.text.font_size": "字体大小", - "params.text.invert_colors": "反转颜色", - "params.text.line_height": "行距", - "params.text.vorigin.bottom": "底部对齐", - "params.text.vorigin.center": "居中", - "params.text.vorigin.top": "顶部对齐", - "params.text.vorigin": "垂直对齐", - /* VariableInsertControl */ - "params.variables.insert.date": "日期", - "params.variables.insert.datetime": "日期时间", - "params.variables.insert.time": "时间", - "params.variables.insert": "插入变量", - /* PrintPreview */ - "preview.close": "关闭", - "preview.copies": "份数", - "preview.density": "浓度", - "preview.label_type.Black": "黑标纸", - "preview.label_type.BlackMarkGap": "黑标间隙纸", - "preview.label_type.Continuous": "连续纸", - "preview.label_type.HeatShrinkTube": "热缩管", - "preview.label_type.Invalid": "无效纸张", - "preview.label_type.Perforated": "定孔纸", - "preview.label_type.PvcTag": "PVC", - "preview.label_type.Transparent": "透明纸", - "preview.label_type.WithGaps": "间隙纸", - "preview.label_type": "标签类型", - "preview.not_connected": "打印机未连接", - "preview.not_implemented": "暂不支持", - "preview.offset.inner": "内偏移", - "preview.offset.outer": "外偏移", - "preview.offset": "偏移", - "preview.postprocess.atkinson": "抖动(Atkinson)", - "preview.postprocess.threshold": "阈值化", - "preview.postprocess": "前置处理器", - "preview.print_task": "打印接口", - "preview.print.cancel": "取消打印", - "preview.print": "打印", - "preview.threshold": "阈值", - "preview.title": "打印预览", -}; diff --git a/src/utils/i18n.ts b/src/utils/i18n.ts index 47d62f7..f7d209f 100644 --- a/src/utils/i18n.ts +++ b/src/utils/i18n.ts @@ -37,7 +37,7 @@ locale.subscribe((value: SupportedLanguage) => localStorage.setItem("locale", va export const tr = derived(locale, ($locale) => (key: TranslationKey) => { const result = langPack[$locale] ? langPack[$locale][key] : undefined; - if (result === undefined) { + if (result === undefined || result === "") { if ($locale !== "en") { console.warn(`${key} of ${$locale} locale is not translated`); }