From 0d70616e52462388215c993982a69e94701b4f3a Mon Sep 17 00:00:00 2001 From: "Hung Q. Le" Date: Fri, 2 Mar 2018 20:35:30 +0700 Subject: [PATCH] Add new languages (#229) * Name of a language should be written in that language Signed-off-by: Hung Q. Le * Update moment date format in mainWindow once the app language has changed. Signed-off-by: Hung Q. Le * Removed Korean translation * Added some Vietnamese and Simplified Chinese translations * Added Indonesian, French and German translation * Loaded new languages and updated dropdown lists in Settings and Preview --- app/components/settings/General.jsx | 10 +-- i18n/de/common.json | 16 +++++ i18n/de/contacts.json | 9 +++ i18n/de/dialog.json | 89 +++++++++++++++++++++++++ i18n/de/form.json | 69 +++++++++++++++++++ i18n/{ko => de}/index.js | 0 i18n/de/invoices.json | 23 +++++++ i18n/de/messages.json | 16 +++++ i18n/de/preview.json | 41 ++++++++++++ i18n/de/settings.json | 63 +++++++++++++++++ i18n/de/tour.json | 29 ++++++++ i18n/fr/common.json | 16 +++++ i18n/fr/contacts.json | 9 +++ i18n/fr/dialog.json | 89 +++++++++++++++++++++++++ i18n/fr/form.json | 69 +++++++++++++++++++ i18n/fr/index.js | 21 ++++++ i18n/fr/invoices.json | 23 +++++++ i18n/fr/messages.json | 16 +++++ i18n/fr/preview.json | 41 ++++++++++++ i18n/fr/settings.json | 63 +++++++++++++++++ i18n/fr/tour.json | 29 ++++++++ i18n/i18n.js | 12 +++- i18n/id/common.json | 16 +++++ i18n/id/contacts.json | 9 +++ i18n/id/dialog.json | 89 +++++++++++++++++++++++++ i18n/id/form.json | 69 +++++++++++++++++++ i18n/id/index.js | 21 ++++++ i18n/id/invoices.json | 23 +++++++ i18n/id/messages.json | 16 +++++ i18n/id/preview.json | 41 ++++++++++++ i18n/id/settings.json | 63 +++++++++++++++++ i18n/id/tour.json | 29 ++++++++ i18n/ko/common.json | 16 ----- i18n/ko/contacts.json | 9 --- i18n/ko/dialog.json | 89 ------------------------- i18n/ko/form.json | 46 ------------- i18n/ko/invoices.json | 23 ------- i18n/ko/messages.json | 16 ----- i18n/ko/preview.json | 41 ------------ i18n/ko/settings.json | 63 ----------------- i18n/ko/tour.json | 29 -------- i18n/vi/form.json | 25 ++++++- i18n/vi/settings.json | 1 + i18n/zh-CN/form.json | 25 ++++++- preview/components/sidebar/Language.jsx | 10 +-- 45 files changed, 1178 insertions(+), 344 deletions(-) create mode 100644 i18n/de/common.json create mode 100644 i18n/de/contacts.json create mode 100644 i18n/de/dialog.json create mode 100644 i18n/de/form.json rename i18n/{ko => de}/index.js (100%) create mode 100644 i18n/de/invoices.json create mode 100644 i18n/de/messages.json create mode 100644 i18n/de/preview.json create mode 100644 i18n/de/settings.json create mode 100644 i18n/de/tour.json create mode 100644 i18n/fr/common.json create mode 100644 i18n/fr/contacts.json create mode 100644 i18n/fr/dialog.json create mode 100644 i18n/fr/form.json create mode 100644 i18n/fr/index.js create mode 100644 i18n/fr/invoices.json create mode 100644 i18n/fr/messages.json create mode 100644 i18n/fr/preview.json create mode 100644 i18n/fr/settings.json create mode 100644 i18n/fr/tour.json create mode 100644 i18n/id/common.json create mode 100644 i18n/id/contacts.json create mode 100644 i18n/id/dialog.json create mode 100644 i18n/id/form.json create mode 100644 i18n/id/index.js create mode 100644 i18n/id/invoices.json create mode 100644 i18n/id/messages.json create mode 100644 i18n/id/preview.json create mode 100644 i18n/id/settings.json create mode 100644 i18n/id/tour.json delete mode 100644 i18n/ko/common.json delete mode 100644 i18n/ko/contacts.json delete mode 100644 i18n/ko/dialog.json delete mode 100644 i18n/ko/form.json delete mode 100644 i18n/ko/invoices.json delete mode 100644 i18n/ko/messages.json delete mode 100644 i18n/ko/preview.json delete mode 100644 i18n/ko/settings.json delete mode 100644 i18n/ko/tour.json diff --git a/app/components/settings/General.jsx b/app/components/settings/General.jsx index a6da1204..20b7a682 100644 --- a/app/components/settings/General.jsx +++ b/app/components/settings/General.jsx @@ -96,10 +96,12 @@ class General extends Component { value={this.state.language} onChange={this.handleInputChange} > - - - - + + + + + + diff --git a/i18n/de/common.json b/i18n/de/common.json new file mode 100644 index 00000000..543fa82e --- /dev/null +++ b/i18n/de/common.json @@ -0,0 +1,16 @@ +{ + "fields": { + "fullname": "Vollständiger Name", + "company": "Firma", + "address": "Adresse", + "email": "E-Mail", + "phone": "Telefonnummer", + "website": "Webseite" + }, + "save": "Speichern", + "amount": "Betrag", + "default": "Standard", + "saveAsDefault": "Als Standard speichern?", + "yes": "Ja", + "noThanks": "Nein, danke" +} \ No newline at end of file diff --git a/i18n/de/contacts.json b/i18n/de/contacts.json new file mode 100644 index 00000000..4b285e6c --- /dev/null +++ b/i18n/de/contacts.json @@ -0,0 +1,9 @@ +{ + "header": "Alle Kontakte", + "fields": { + "contact": "Kontakt", + "email": "E-Mail", + "phone": "Telefon", + "actions": "Aktionen" + } +} \ No newline at end of file diff --git a/i18n/de/dialog.json b/i18n/de/dialog.json new file mode 100644 index 00000000..06723ff7 --- /dev/null +++ b/i18n/de/dialog.json @@ -0,0 +1,89 @@ +{ + "appUpdate": { + "available": { + "title": "Neues Update verfügbar", + "message": "Download im Hintergrund starten?" + }, + "noUpdate": { + "title": "Keine neuen Updates verfügbar", + "message": "Ihre Version ist auf aktuellem Stand" + }, + "error": { + "title": "Es ist ein Fehler aufgetreten" + }, + "downloaded": { + "title": "Update heruntergeladen", + "message": "Wollen Sie die Applikation beenden und jetzt aktualisieren?", + "quitNow": "Jetzt beenden", + "later": "Später" + } + }, + "noAccess": { + "title": "Keine Zugriffsberechtigung", + "message": "Bitte wählen Sie ein anderes Verzeichnis" + }, + "errorBoundary": "Es ist ein Fehler aufgetreten", + "deleteInvoice": { + "title": "Diese Rechnung löschen?", + "message": "Die Rechnung wird endgültig gelöscht" + }, + "deleteContact": { + "title": "Diesen Kontakt löschen?", + "message": "Der Kontakt wird endgültig gelöscht" + }, + "fileTypeErr": { + "title": "Bitte wählen Sie eine andere Datei" + }, + "validation": { + "recipient": { + "empty": { + "title": "Ungültiger Kontakt", + "message": "Kontakt darf nicht leer sein" + }, + "requiredFields": { + "title": "Pflichtfelder", + "message": "Bitte füllen Sie alle Pflichtfelder aus" + }, + "email": { + "title": "Ungültige E-Mail-Adresse", + "message": "Bitte wählen Sie eine andere E-Mail Adresse" + } + }, + "rows": { + "emptyDescription": { + "title": "Ungültige Beschreibung", + "message": "Beschreibung darf nicht leer sein" + }, + "priceZero": { + "title": "Ungültiger Preis", + "message": "Preis muss grösser als Null sein" + }, + "qtyZero": { + "title": "Ungültige Menge", + "message": "Menge muss grösser als Null sein" + } + }, + "dueDate": { + "title": "Ungültiges Fälligkeitsdatum", + "message": "Bitte wählen Sie ein Datum aus" + }, + "currency": { + "fraction": { + "title": "Ungültige Teilung", + "message": "Nachkommestelle muss gleich oder grösser als Null sein" + } + }, + "discount": { + "title": "Ungültiger Rabatt", + "message": "Der Rabatt muss grösser als Null sein" + }, + "tax": { + "title": "Ungültiger Steuersatz", + "message": "Steuerbetrag muss grösser als Null sein" + }, + "note": { + "title": "Ungültige Notiz", + "message": "Feld Notiz darf nicht leer sein" + } + } +} \ No newline at end of file diff --git a/i18n/de/form.json b/i18n/de/form.json new file mode 100644 index 00000000..e0e46859 --- /dev/null +++ b/i18n/de/form.json @@ -0,0 +1,69 @@ +{ + "header": { + "new": "Neue Rechnung erstellen", + "edit": "Rechnung bearbeiten", + "btns": { + "clear": "Löschen", + "update": "Aktualisieren", + "saveAndPreview": "Speichern & Vorschau" + } + }, + "settings": { + "name": "Formulareinstellungen", + "hint": "Umschalten um das Feld im Formular als benötigt darzustellen." + }, + "fields": { + "items": { + "name": "Produkt / Service", + "description": "Beschreibung", + "price": "Preis", + "quantity": "Menge", + "add": "Neue Position hinzufügen" + }, + "recipient": { + "name": "Empfänger", + "select": "Auswählen", + "add": "Neuen Empfänger hinzufügen" + }, + "discount": { + "name": "Rabatt", + "percentage": "Prozent", + "flat": "Pauschal" + }, + "dueDate": { + "name": "Fälligkeitsdatum", + "placeHolder": "Datum auswählen", + "paymentTerms": { + "name": "Zahlungsbedingung auswählen", + "net7": { + "label": "Netto sieben Tage", + "description": "Zahlung innerhalb von sieben Tagen ab Rechnungsdatum" + }, + "net10": { + "label": "Netto zehn Tage", + "description": "Zahlung innerhalb von zehn Tagen ab Rechnungsdatum" + }, + "net30": { + "label": "Netto 30 Tage", + "description": "Zahlung innerhalb von 30 Tagen ab Rechnungsdatum" + }, + "net60": { + "label": "Netto 60 Tage", + "description": "Zahlung innerhalb von 60 Tagen ab Rechnungsdatum" + }, + "net90": { + "label": "Netto 90 Tage", + "description": "Zahlung innerhalb von 90 Tagen ab Rechnungsdatum" + } + } + }, + "tax": { + "name": "Steuer", + "id": "USt-ID", + "method": "Zahlungsmethode", + "reverse": "Umkehr der Steuerschuld" + }, + "note": "Notiz", + "currency": "Währung" + } +} \ No newline at end of file diff --git a/i18n/ko/index.js b/i18n/de/index.js similarity index 100% rename from i18n/ko/index.js rename to i18n/de/index.js diff --git a/i18n/de/invoices.json b/i18n/de/invoices.json new file mode 100644 index 00000000..7cebcb91 --- /dev/null +++ b/i18n/de/invoices.json @@ -0,0 +1,23 @@ +{ + "header": { + "name": "Alle Rechnungen" + }, + "fields": { + "client": "Kunde", + "invoiceID": "Rechnungsnummer", + "createdDate": "Erstellt am", + "dueDate": "Fälligkeitsdatum", + "total": "Gesamtwert" + }, + "status": { + "pending": "Ausstehend", + "paid": "Bezahlt", + "refunded": "Erstattet", + "cancelled": "Storniert" + }, + "btns": { + "view": "Ansehen", + "edit": "Bearbeiten", + "markAsPaid": "Als bezahlt markieren" + } +} \ No newline at end of file diff --git a/i18n/de/messages.json b/i18n/de/messages.json new file mode 100644 index 00000000..650180c8 --- /dev/null +++ b/i18n/de/messages.json @@ -0,0 +1,16 @@ +{ + "noContact": "Es wurde noch kein Kontakt angelegt", + "noInvoice": "Sie haben noch keine Rechnung erstellt", + "invoice": { + "saved": "Rechnung erfolgreich gespeichert", + "updated": "Rechnung wurde erfolgreich aktualisiert", + "deleted": "Rechnung wurde erfolgreich gelöscht" + }, + "contact": { + "saved": "Kontakt erfolgreich gespeichert", + "deleted": "Kontakt erfolgreich gelöscht" + }, + "settings": { + "saved": "Alle Einstellungen wurden erfolgreich gespeichert" + } +} \ No newline at end of file diff --git a/i18n/de/preview.json b/i18n/de/preview.json new file mode 100644 index 00000000..5619b693 --- /dev/null +++ b/i18n/de/preview.json @@ -0,0 +1,41 @@ +{ + "sidebar": { + "template": "Vorlage", + "alignment": { + "name": "Ausrichtung", + "top": "Oben", + "middle": "Mitte", + "bottom": "Unten" + }, + "fontSize": "Schriftgrösse", + "toggle": { + "name": "Umschalten", + "logo": "Logo", + "symbol": "Symbol", + "recipient": "Empfänger" + }, + "accentColor": { + "name": "Akzentfarbe", + "useCustom": "Eigene Farbe verwenden" + }, + "actions": { + "name": "Aktionen", + "savePDF": "Als PDF exportieren", + "saveConfigs": "Konfiguration speichern" + } + }, + "common": { + "billedTo": "Rechnungsempfänger", + "chooseInvoiceToPreview": "Zur Vorschau bitte eine Rechnung auswählen", + "created": "Erstellt", + "due": "Fällig", + "invoice": "Rechnung", + "itemDescription": "Artikel-\/Leistungsbeschreibung", + "notice": "Hinweis", + "order": "Nr", + "price": "Preis", + "qty": "Menge", + "subtotal": "Zwischensumme", + "total": "Rechnungsbetrag" + } +} \ No newline at end of file diff --git a/i18n/de/settings.json b/i18n/de/settings.json new file mode 100644 index 00000000..1824e536 --- /dev/null +++ b/i18n/de/settings.json @@ -0,0 +1,63 @@ +{ + "header": "Einstellungen", + "tabs": { + "profile": "Profil", + "invoice": "Rechnung", + "general": "Allgemein" + }, + "fields": { + "logo": { + "name": "Logo", + "hint": "Akzeptiert PNG, JPG & SVG (empfohlen)" + }, + "taxSettings": "Steuer-Einstellungen", + "template": "Vorlage", + "dateFormat": "Datumsformat", + "pdfExportDir": "Verzeichnis für PDF-Exporte", + "requiredFields": "Pflichtfelder", + "sound": "Ton", + "mute": "Lautlos", + "autoCheckUpdate": { + "name": "Automatisch nach Updates suchen", + "daily": "Täglich (empfohlen)", + "weekly": "Wöchentlich" + }, + "currency": { + "placement": "Position des Währungssymbols", + "afterAmount": "Nach dem Betrag", + "beforeAmount": "Vor dem Betrag", + "fraction": "Nachkommastellen", + "separator": "Trennsymbol", + "commaDot": "Komma & Punkt", + "dotComma": "Punkt & Komma", + "spaceDot": "Leerschläge & Punkte" + }, + "openPDFReader": "PDF nach Export öffnen", + "language": { + "name": "Sprache", + "cs": "Tschechisch", + "da": "Dänisch", + "de": "Deutsch", + "el": "Griechisch", + "en": "Englisch", + "esES": "Spanisch", + "fr": "Französisch", + "id": "Indonesisch", + "it": "Italienisch", + "ja": "Japanisch", + "ko": "Koreanisch", + "lt": "Littauisch", + "nl": "Niederländisch", + "ptBR": "Portugiesisch, Brasilianisch", + "ptPT": "Portugiesisch", + "ru": "Russisch", + "th": "Thailändisch", + "tl": "Tagalog, Philippinen", + "tr": "Türkisch", + "vi": "Vietnamesisch", + "zh-CN": "Chinesisch (Vereinfacht)", + "zh-TW": "Chinesisch (Traditionell)" + }, + "other": "Andere" + } +} \ No newline at end of file diff --git a/i18n/de/tour.json b/i18n/de/tour.json new file mode 100644 index 00000000..67848e29 --- /dev/null +++ b/i18n/de/tour.json @@ -0,0 +1,29 @@ +{ + "actions": { + "skip": "Überspringen", + "next": "Weiter", + "start": "Rechnungserstellung starten" + }, + "slides": { + "welcome": { + "heading": "👋 Hallo!", + "description": "Vielen Dank, dass Sie mich ausprobieren. Lassen Sie mich Ihnen zeigen, wie Sie atemberaubende Rechnungen mit nur 3 einfachen Schritten erstellen" + }, + "create": { + "heading": "Schritt 1. Erstellen", + "description": "Manta hat eine flexible Formularschnittstelle. Es hält die Dinge standardmässig einfach, aber Sie können immer zusätzliche Felder aktivieren/deaktivieren, jedes Mal wenn Sie es für notwendig erachten." + }, + "preview": { + "heading": "Schritt 2. Anpassen", + "description": "Manta bietet professionelle Vorlagen, die individuell auf Ihr Unternehmen angepasst werden können." + }, + "save": { + "heading": "Schritt 3. Speichern", + "description": "Wenn Sie mit dem Layout Ihrer Rechnung zufrieden sind, können Sie es für spätere Nutzungen als PDF speichern. Egal ob auf dem Postweg oder als E-Mail, mit Manta beeindrucken Sie Ihre Kunden!" + }, + "success": { + "heading": "Fertig! ✋️", + "description": "Das war's! Mit Manta in 3 einfachen Schritten zu beeindruckenden Rechnungen. Vergessen Sie nicht, Ihr Unternehmensprofil und Ihr Logo zu aktualisieren, bevor Sie die Rechnung verwenden." + } + } +} \ No newline at end of file diff --git a/i18n/fr/common.json b/i18n/fr/common.json new file mode 100644 index 00000000..50edceb7 --- /dev/null +++ b/i18n/fr/common.json @@ -0,0 +1,16 @@ +{ + "fields": { + "fullname": "Nom et prénom", + "company": "Société", + "address": "Adresse", + "email": "Email", + "phone": "N° de téléphone", + "website": "Site Internet" + }, + "save": "Sauvegarder", + "amount": "Montant", + "default": "Valeurs par défaut", + "saveAsDefault": "Enregistrer comme valeurs par défaut ?", + "yes": "Oui", + "noThanks": "Non, merci" +} \ No newline at end of file diff --git a/i18n/fr/contacts.json b/i18n/fr/contacts.json new file mode 100644 index 00000000..866b7b43 --- /dev/null +++ b/i18n/fr/contacts.json @@ -0,0 +1,9 @@ +{ + "header": "Tous les contacts", + "fields": { + "contact": "Contact", + "email": "Email", + "phone": "Téléphone", + "actions": "Actions" + } +} \ No newline at end of file diff --git a/i18n/fr/dialog.json b/i18n/fr/dialog.json new file mode 100644 index 00000000..3c4e180b --- /dev/null +++ b/i18n/fr/dialog.json @@ -0,0 +1,89 @@ +{ + "appUpdate": { + "available": { + "title": "Nouvelle mise à jour disponible", + "message": "Souhaitez-vous commencer le téléchargement de la mise à jour en arrière-plan ?" + }, + "noUpdate": { + "title": "Aucune mise à jour disponible", + "message": "Vous utilisez la dernière version de l'application" + }, + "error": { + "title": "Une erreur s'est produite" + }, + "downloaded": { + "title": "Mise à jour téléchargée", + "message": "Souhaitez-vous quitter et mettre l'application à jour maintenant ?", + "quitNow": "Quitter maintenant", + "later": "Plus tard" + } + }, + "noAccess": { + "title": "Aucune autorisation d’accès", + "message": "Veuillez choisir un autre répertoire" + }, + "errorBoundary": "Une erreur s'est produite", + "deleteInvoice": { + "title": "Supprimer cette facture ?", + "message": "La facture sera supprimée définitivement" + }, + "deleteContact": { + "title": "Supprimer ce contact ?", + "message": "Ce contact sera supprimé définitivement" + }, + "fileTypeErr": { + "title": "Veuillez choisir un autre fichier" + }, + "validation": { + "recipient": { + "empty": { + "title": "Contact invalide", + "message": "Contact ne peut pas être vide" + }, + "requiredFields": { + "title": "Champs requis", + "message": "Merci de remplir tous les champs requis" + }, + "email": { + "title": "Email invalide", + "message": "Veuillez choisir un autre email" + } + }, + "rows": { + "emptyDescription": { + "title": "Description invalide", + "message": "La description ne peut pas être vide" + }, + "priceZero": { + "title": "Prix invalide", + "message": "Le prix doit être supérieur à zéro" + }, + "qtyZero": { + "title": "Quantité invalide", + "message": "La quantité doit être supérieure à zéro" + } + }, + "dueDate": { + "title": "Échéance invalide", + "message": "Veuillez sélectionner une date" + }, + "currency": { + "fraction": { + "title": "Fraction non valide", + "message": "La Fraction décimale doit être supérieure ou égale à zéro" + } + }, + "discount": { + "title": "Remise invalide", + "message": "Le montant de la remise doit être supérieur à zéro" + }, + "tax": { + "title": "Taxe invalide", + "message": "Le montant de la TVA doit être supérieur à zéro" + }, + "note": { + "title": "Remarque non valide", + "message": "Le contenu des remarques ne peut pas être vide" + } + } +} \ No newline at end of file diff --git a/i18n/fr/form.json b/i18n/fr/form.json new file mode 100644 index 00000000..0b389087 --- /dev/null +++ b/i18n/fr/form.json @@ -0,0 +1,69 @@ +{ + "header": { + "new": "Créer une nouvelle facture", + "edit": "Modifier la facture", + "btns": { + "clear": "Supprimer", + "update": "Mettre à jour", + "saveAndPreview": "Enregistrer et prévisualiser" + } + }, + "settings": { + "name": "Paramètres du formulaire", + "hint": "Activer un champ pour le rendre disponible." + }, + "fields": { + "items": { + "name": "Produit / Service", + "description": "Description", + "price": "Prix", + "quantity": "Quantité", + "add": "Ajouter un nouvel élément" + }, + "recipient": { + "name": "Destinataire", + "select": "Sélectionner", + "add": "Créer un nouveau" + }, + "discount": { + "name": "Remise ", + "percentage": "Pourcentage", + "flat": "Taux Fixe" + }, + "dueDate": { + "name": "Échéance", + "placeHolder": "Choisir une date", + "paymentTerms": { + "name": "Sélectionner un term de paiement", + "net7": { + "label": "Net 7", + "description": "Paiement sept jours après la date de facturation" + }, + "net10": { + "label": "Net 10", + "description": "Paiement dix jours après la date de facturation" + }, + "net30": { + "label": "Net 30", + "description": "Paiement 30 jours après la date de facturation" + }, + "net60": { + "label": "Net 60", + "description": "Paiement 60 jours après la date de facturation" + }, + "net90": { + "label": "Net 90", + "description": "Paiement 90 jours après la date de facturation" + } + } + }, + "tax": { + "name": "Taxe", + "id": "Numéro de TVA", + "method": "Méthode", + "reverse": "Autoliquidation" + }, + "note": "Remarque", + "currency": "Devise" + } +} \ No newline at end of file diff --git a/i18n/fr/index.js b/i18n/fr/index.js new file mode 100644 index 00000000..880d6014 --- /dev/null +++ b/i18n/fr/index.js @@ -0,0 +1,21 @@ +import common from './common.json'; +import contacts from './contacts.json'; +import dialog from './dialog.json'; +import form from './form.json'; +import invoices from './invoices.json'; +import messages from './messages.json'; +import preview from './preview.json'; +import settings from './settings.json'; +import tour from './tour.json'; + +export default { + common, + contacts, + dialog, + form, + invoices, + messages, + preview, + settings, + tour +} diff --git a/i18n/fr/invoices.json b/i18n/fr/invoices.json new file mode 100644 index 00000000..14df954e --- /dev/null +++ b/i18n/fr/invoices.json @@ -0,0 +1,23 @@ +{ + "header": { + "name": "Toutes les factures" + }, + "fields": { + "client": "Client", + "invoiceID": "Numero de la facture", + "createdDate": "Créée le", + "dueDate": "Échéance", + "total": "Valeur Totale" + }, + "status": { + "pending": "En attente", + "paid": "Payée", + "refunded": "Remboursée", + "cancelled": "Annulée" + }, + "btns": { + "view": "Visualiser", + "edit": "Modifier", + "markAsPaid": "Marquer comme payée" + } +} \ No newline at end of file diff --git a/i18n/fr/messages.json b/i18n/fr/messages.json new file mode 100644 index 00000000..00b3efe3 --- /dev/null +++ b/i18n/fr/messages.json @@ -0,0 +1,16 @@ +{ + "noContact": "Vous n'avez pas encore de contact", + "noInvoice": "Vous n'avez pas créé de facture pour le moment", + "invoice": { + "saved": "Facture enregistrée avec succès", + "updated": "Facture mise à jour avec succès", + "deleted": "Facture supprimée avec succès" + }, + "contact": { + "saved": "Contact enregistré avec succès", + "deleted": "Contact supprimé avec succès" + }, + "settings": { + "saved": "Tous les paramètres ont été enregistrés avec succès" + } +} \ No newline at end of file diff --git a/i18n/fr/preview.json b/i18n/fr/preview.json new file mode 100644 index 00000000..3e3b5207 --- /dev/null +++ b/i18n/fr/preview.json @@ -0,0 +1,41 @@ +{ + "sidebar": { + "template": "Modèle", + "alignment": { + "name": "Alignement", + "top": "Haut", + "middle": "Milieu", + "bottom": "Bas" + }, + "fontSize": "Taille du texte", + "toggle": { + "name": "Basculer", + "logo": "Logo", + "symbol": "Symbole", + "recipient": "Destinataire" + }, + "accentColor": { + "name": "Couleur secondaire", + "useCustom": "Couleur personnalisée" + }, + "actions": { + "name": "Actions", + "savePDF": "Exporter en PDF", + "saveConfigs": "Sauvegarder" + } + }, + "common": { + "billedTo": "Facturé à", + "chooseInvoiceToPreview": "Veuillez choisir une facture à visualiser", + "created": "Créé", + "due": "Échéance", + "invoice": "Facture", + "itemDescription": "Description de l'élement", + "notice": "Notice", + "order": "No", + "price": "Prix", + "qty": "Quantité", + "subtotal": "Sous-total", + "total": "Total" + } +} \ No newline at end of file diff --git a/i18n/fr/settings.json b/i18n/fr/settings.json new file mode 100644 index 00000000..5df7dedf --- /dev/null +++ b/i18n/fr/settings.json @@ -0,0 +1,63 @@ +{ + "header": "Paramètres", + "tabs": { + "profile": "Profil", + "invoice": "Facture", + "general": "Général" + }, + "fields": { + "logo": { + "name": "Logo", + "hint": "Accepte PNG, JPG & SVG (Recommandé)" + }, + "taxSettings": "Paramètres des Taxes", + "template": "Modèle", + "dateFormat": "Format de la Date", + "pdfExportDir": "Emplacement de sauvegarde du dossier PDF", + "requiredFields": "Champs Requis", + "sound": "Son", + "mute": "Muet", + "autoCheckUpdate": { + "name": "Verification automatique des mises à jours", + "daily": "Tous les jours (recommandé)", + "weekly": "Toutes les semaines" + }, + "currency": { + "placement": "Emplacement du signe", + "afterAmount": "Après le montant", + "beforeAmount": "Avant le montant", + "fraction": "Deux décimales", + "separator": "Séparateur", + "commaDot": "Virgule & Point", + "dotComma": "Point & Virgule", + "spaceDot": "Espace & Point" + }, + "openPDFReader": "Ouvrir le fichier PDF après la sauvegarde", + "language": { + "name": "Langue", + "cs": "Tchèque", + "da": "Danois", + "de": "Allemand", + "el": "Grec", + "en": "Anglais", + "esES": "Espagnol", + "fr": "Français", + "id": "Indonésien", + "it": "Italien", + "ja": "Japonais", + "ko": "Coréen", + "lt": "Lituanien", + "nl": "Néerlandais", + "ptBR": "Portugais (Brésil)", + "ptPT": "Portugais", + "ru": "Russe", + "th": "Thaï", + "tl": "Tagalog, Philippines", + "tr": "Turc", + "vi": "Vietnamien", + "zh-CN": "Chinois (Simplifié)", + "zh-TW": "Chinois (Traditionnel)" + }, + "other": "Autre" + } +} \ No newline at end of file diff --git a/i18n/fr/tour.json b/i18n/fr/tour.json new file mode 100644 index 00000000..62bbb9ef --- /dev/null +++ b/i18n/fr/tour.json @@ -0,0 +1,29 @@ +{ + "actions": { + "skip": "Passer", + "next": "Suivant", + "start": "Commencer la facturation" + }, + "slides": { + "welcome": { + "heading": "👋 Salut !", + "description": "Merci de me donner une chance. Laissez-moi vous montrer comment créer de sublimes factures en seulement 3 étapes simples" + }, + "create": { + "heading": "Étape 1. Créer", + "description": "Manta a une interface de formulaire flexible. Il garde les choses simples par défaut, mais vous pouvez toujours activer/désactiver des champs supplémentaires à chaque fois que cela vous semble nécessaire." + }, + "preview": { + "heading": "Étape 2. Personnaliser", + "description": "Manta est livré avec des modèles professionnels qui peuvent être personnalisés afin de correspondre au style de votre marque." + }, + "save": { + "heading": "Étape 3. Sauvegarder", + "description": "Une fois satisfait de l'apparence de la facture, vous pouvez l'enregistrer en PDF pour plus tard. Imprimez-la ou envoyez-la par email dès maintenant pour impressionner vos clients avec Manta!" + }, + "success": { + "heading": "Terminé !!! ✋️", + "description": "Et voilà les 3 étapes simples pour créer de superbes factures avec Manta.\nN'oubliez pas de mettre à jour le profil de la société ainsi que son logo avant d'éditer de vraie factures." + } + } +} \ No newline at end of file diff --git a/i18n/i18n.js b/i18n/i18n.js index bcc53055..037bf5b1 100644 --- a/i18n/i18n.js +++ b/i18n/i18n.js @@ -7,8 +7,10 @@ const isDev = require('electron-is-dev'); const moment = require('moment'); // Language Files +import de from './de'; import en from './en'; -import ko from './ko'; +import fr from './fr'; +import id from './id'; import vi from './vi'; import zhCN from './zh-CN'; @@ -18,8 +20,10 @@ i18n.use(reactI18nextModule).init({ debug: isDev, defaultNS: 'form', resources: { + de, en, - ko, + fr, + id, vi, "zh-CN": zhCN }, @@ -37,4 +41,8 @@ i18n.use(reactI18nextModule).init({ }, }); +i18n.on('languageChanged', currentLang => { + moment.locale(currentLang); +}); + export default i18n; diff --git a/i18n/id/common.json b/i18n/id/common.json new file mode 100644 index 00000000..8558d194 --- /dev/null +++ b/i18n/id/common.json @@ -0,0 +1,16 @@ +{ + "fields": { + "fullname": "Nama Lengkap", + "company": "Perusahaan", + "address": "Alamat", + "email": "Email", + "phone": "Nomor Telepon", + "website": "Situs Web" + }, + "save": "Simpan", + "amount": "Jumlah", + "default": "Standar", + "saveAsDefault": "Simpan sebagai Standar?", + "yes": "Ya", + "noThanks": "Tidak, terima kasih" +} \ No newline at end of file diff --git a/i18n/id/contacts.json b/i18n/id/contacts.json new file mode 100644 index 00000000..d20b49aa --- /dev/null +++ b/i18n/id/contacts.json @@ -0,0 +1,9 @@ +{ + "header": "Semua Kontak", + "fields": { + "contact": "Kontak", + "email": "Surel", + "phone": "Telepon", + "actions": "Tindakan" + } +} \ No newline at end of file diff --git a/i18n/id/dialog.json b/i18n/id/dialog.json new file mode 100644 index 00000000..a4c5b249 --- /dev/null +++ b/i18n/id/dialog.json @@ -0,0 +1,89 @@ +{ + "appUpdate": { + "available": { + "title": "Pembaruan baru tersedia", + "message": "Apakah anda ingin mulai mengunduh pembaruan di latar belakang?" + }, + "noUpdate": { + "title": "Tidak ada pembaruan yang tersedia", + "message": "Anda sedang menggunakan versi terbaru dari aplikasi" + }, + "error": { + "title": "Sebuah kesalahan telah terjadi" + }, + "downloaded": { + "title": "Pembaruan sudah diunduh", + "message": "Apakah anda ingin berhenti dan meningkatkan aplikasi sekarang?", + "quitNow": "Berhenti Sekarang", + "later": "Nanti" + } + }, + "noAccess": { + "title": "Tidak ada izin mengakses", + "message": "Silahkan pilih petunjuk lainnya" + }, + "errorBoundary": "Terjadi sebuah kesalahan", + "deleteInvoice": { + "title": "Hapus faktur ini?", + "message": "Faktur akan dihapus secara permanen dari basisdata" + }, + "deleteContact": { + "title": "Hapus kontak ini?", + "message": "Kontak akan dihapus secara permanen dari basis data" + }, + "fileTypeErr": { + "title": "Silahkan pilih berkas lain" + }, + "validation": { + "recipient": { + "empty": { + "title": "Kontak tidak sah", + "message": "Kontak tidak boleh kosong" + }, + "requiredFields": { + "title": "Bidang-bidang yang diperlukan", + "message": "Silahkan isi di semua kolom yang wajib diisi" + }, + "email": { + "title": "Surel tidak sah", + "message": "Silahkan pilih surel lain" + } + }, + "rows": { + "emptyDescription": { + "title": "Deskripsi tidak sah", + "message": "Deskripsi tidak boleh kosong" + }, + "priceZero": { + "title": "Harga tidak sah", + "message": "Harga harus lebih besar daripada nol" + }, + "qtyZero": { + "title": "Kuantitas tidak sah", + "message": "Kuantitas harus lebih besar daripada nol" + } + }, + "dueDate": { + "title": "Batas tanggal akhir tidak sah", + "message": "Silahkan pilih sebuah tanggal" + }, + "currency": { + "fraction": { + "title": "Pecahan tidak sah", + "message": "Pecahan desimal harus sama atau lebih besar dari nol" + } + }, + "discount": { + "title": "Diskon tidak sah", + "message": "Jumlah diskon harus lebih besar daripada nol" + }, + "tax": { + "title": "Pajak tidak sah", + "message": "Jumlah pajak harus lebih besar daripada nol" + }, + "note": { + "title": "Catatan tidak sah", + "message": "Konten catatan tidak boleh kosong" + } + } +} \ No newline at end of file diff --git a/i18n/id/form.json b/i18n/id/form.json new file mode 100644 index 00000000..47f084cd --- /dev/null +++ b/i18n/id/form.json @@ -0,0 +1,69 @@ +{ + "header": { + "new": "Buat Sebuah Faktur Baru", + "edit": "Sunting Faktur", + "btns": { + "clear": "Bersihkan", + "update": "Pembaruan", + "saveAndPreview": "Simpan & Peninjauan" + } + }, + "settings": { + "name": "Pengaturan Bentuk", + "hint": "Perhatikan setiap bidang untuk membuatnya diperlukan dalam bentuk." + }, + "fields": { + "items": { + "name": "Produk/Layanan", + "description": "Deskripsi", + "price": "Harga", + "quantity": "Kuantitas", + "add": "Tambahkan sebuah Item Baru" + }, + "recipient": { + "name": "Penerima", + "select": "Pilih", + "add": "Buat Baru" + }, + "discount": { + "name": "Diskon", + "percentage": "Persentase", + "flat": "Tarif Tetap" + }, + "dueDate": { + "name": "Batas Tanggal Terakhir", + "placeHolder": "Pilih sebuah tanggal kustom", + "paymentTerms": { + "name": "Pilih sebuah jangka waktu pembayaran", + "net7": { + "label": "Net 7", + "description": "Pembayaran tujuh hari setelah tanggal faktur" + }, + "net10": { + "label": "Net 10", + "description": "Pembayaran 10 hari setelah tanggal faktur" + }, + "net30": { + "label": "Net 30", + "description": "Pembayaran 30 hari setelah tanggal faktur" + }, + "net60": { + "label": "Net 60", + "description": "Pembayaran 60 hari setelah tanggal faktur" + }, + "net90": { + "label": "Net 90", + "description": "Pembayaran 90 hari setelah tanggal faktur" + } + } + }, + "tax": { + "name": "Pajak", + "id": "ID Pajak", + "method": "Metode", + "reverse": "Biaya Cadangan" + }, + "note": "Catatan", + "currency": "Mata Uang" + } +} \ No newline at end of file diff --git a/i18n/id/index.js b/i18n/id/index.js new file mode 100644 index 00000000..880d6014 --- /dev/null +++ b/i18n/id/index.js @@ -0,0 +1,21 @@ +import common from './common.json'; +import contacts from './contacts.json'; +import dialog from './dialog.json'; +import form from './form.json'; +import invoices from './invoices.json'; +import messages from './messages.json'; +import preview from './preview.json'; +import settings from './settings.json'; +import tour from './tour.json'; + +export default { + common, + contacts, + dialog, + form, + invoices, + messages, + preview, + settings, + tour +} diff --git a/i18n/id/invoices.json b/i18n/id/invoices.json new file mode 100644 index 00000000..d2302365 --- /dev/null +++ b/i18n/id/invoices.json @@ -0,0 +1,23 @@ +{ + "header": { + "name": "Semua Faktur" + }, + "fields": { + "client": "Klien", + "invoiceID": "ID Fraktur", + "createdDate": "Dibuat Pada", + "dueDate": "Batas Tanggal Terakhir", + "total": "Nilai Total" + }, + "status": { + "pending": "Menunda", + "paid": "Dibayar", + "refunded": "Dana dikembalikan", + "cancelled": "Dibatalkan" + }, + "btns": { + "view": "Melihat", + "edit": "Sunting", + "markAsPaid": "Tandai sebagai Dibayar" + } +} \ No newline at end of file diff --git a/i18n/id/messages.json b/i18n/id/messages.json new file mode 100644 index 00000000..1a6560b1 --- /dev/null +++ b/i18n/id/messages.json @@ -0,0 +1,16 @@ +{ + "noContact": "Anda belum memiliki kontak apapun", + "noInvoice": "Anda belum membuat faktur apapun", + "invoice": { + "saved": "Faktur disimpan dengan sukses", + "updated": "Faktur diperbarui dengan sukses", + "deleted": "Faktur dihapus dengan sukses" + }, + "contact": { + "saved": "Kontak disimpan dengan sukses", + "deleted": "Kontak dihapus dengan sukses" + }, + "settings": { + "saved": "Semua pengaturan sudah disimpan dengan sukses" + } +} \ No newline at end of file diff --git a/i18n/id/preview.json b/i18n/id/preview.json new file mode 100644 index 00000000..d27109d6 --- /dev/null +++ b/i18n/id/preview.json @@ -0,0 +1,41 @@ +{ + "sidebar": { + "template": "Template", + "alignment": { + "name": "Penjajaran", + "top": "Atas", + "middle": "Tengah", + "bottom": "Bawah" + }, + "fontSize": "Ukuran Huruf", + "toggle": { + "name": "Tombol Alih", + "logo": "Logo", + "symbol": "Simbol", + "recipient": "Penerima" + }, + "accentColor": { + "name": "Warna Aksen", + "useCustom": "Gunakan Custom" + }, + "actions": { + "name": "Tindakan", + "savePDF": "Ekspor PDF", + "saveConfigs": "Simpan Konfigurasi" + } + }, + "common": { + "billedTo": "Ditagih Ke", + "chooseInvoiceToPreview": "Silahkan pilih sebuah faktur untuk pratinjau", + "created": "Dibuat", + "due": "Batas Waktu", + "invoice": "Faktur", + "itemDescription": "Deskripsi Item", + "notice": "Pemberitahuan", + "order": "Tidak", + "price": "Harga", + "qty": "Kuantitas", + "subtotal": "Subtotal", + "total": "Total" + } +} \ No newline at end of file diff --git a/i18n/id/settings.json b/i18n/id/settings.json new file mode 100644 index 00000000..529c15ec --- /dev/null +++ b/i18n/id/settings.json @@ -0,0 +1,63 @@ +{ + "header": "Pengaturan", + "tabs": { + "profile": "Profil", + "invoice": "Faktur", + "general": "Umum" + }, + "fields": { + "logo": { + "name": "Logo", + "hint": "Menerima PNG, JPG & SVG (Direkomendasikan)" + }, + "taxSettings": "Pengaturan Pajak", + "template": "Templat", + "dateFormat": "Format Tanggal", + "pdfExportDir": "Direktori Ekspor PDF", + "requiredFields": "Bidang-bidang yang diperlukan", + "sound": "Suara", + "mute": "Senyap", + "autoCheckUpdate": { + "name": "Pemeriksaan Otomatis untuk Pembaruan", + "daily": "Setiap Hari (Direkomendasikan)", + "weekly": "Setiap Minggu" + }, + "currency": { + "placement": "Tanda penempatan", + "afterAmount": "Setelah Jumlah", + "beforeAmount": "Sebelum Jumlah", + "fraction": "Pecahan Desimal", + "separator": "Pemisah", + "commaDot": "Koma & Titik", + "dotComma": "Titik & Koma", + "spaceDot": "Spasi & Titik" + }, + "openPDFReader": "Buka PDF setelah Mengekspor", + "language": { + "name": "Bahasa", + "cs": "Ceko", + "da": "Denmark", + "de": "Jerman", + "el": "Yunani", + "en": "Inggris", + "esES": "Spanyol", + "fr": "Perancis", + "id": "Indonesia", + "it": "Italia", + "ja": "Jepang", + "ko": "Korea", + "lt": "Lithuania", + "nl": "Belanda", + "ptBR": "Portugis, Brazil", + "ptPT": "Portugis", + "ru": "Rusia", + "th": "Thailand", + "tl": "Tagalog, Filipina", + "tr": "Turki", + "vi": "Vietnam", + "zh-CN": "China (Disederhanakan)", + "zh-TW": "China (Tradisional)" + }, + "other": "Lainnya" + } +} \ No newline at end of file diff --git a/i18n/id/tour.json b/i18n/id/tour.json new file mode 100644 index 00000000..6a63c496 --- /dev/null +++ b/i18n/id/tour.json @@ -0,0 +1,29 @@ +{ + "actions": { + "skip": "Lewati", + "next": "Berikutnya", + "start": "Mulai Memfakturkan" + }, + "slides": { + "welcome": { + "heading": "👋 Halo!", + "description": "Terima kasih sudah memberikan saya sebuah kesempatan. Mari saya tunjukkan kepada anda bagaimana cara membuat faktur yang menakjubkan dengan hanya 3 langkah sederhana" + }, + "create": { + "heading": "Langkah 1. Membuat", + "description": "Manta memiliki sebuah bentuk antarmuka yang fleksibel. Ia membuat hal-hal menjadi sederhana secara default tapi anda dapat selalu menghidupkan/mematikan bidang tambahan kapanpun anda merasa perlu." + }, + "preview": { + "heading": "Langkah 2. Menyesuaikan", + "description": "Manta hadir dengan tampilan template profesional yang dapat disesuaikan lebih lanjut sesuai dengan gaya merek anda." + }, + "save": { + "heading": "Langkah 3. Menyimpan", + "description": "Setelah puas dengan penampilan faktur anda dapat menyimpannya sebagai PDF untuk digunakan nanti. Cetak atau emailkan ia, mari gunakan Manta untuk mengesankan klien anda sekarang!" + }, + "success": { + "heading": "Selesai!!! ✋️", + "description": "Anda mendapatkannya, 3 langkah sederhana untuk membuat faktur yang menakjubkan dengan Manta. Ingat untuk memperbarui profil dan logo perusahaan sebelum benar-benar menggunakan faktur tersebut." + } + } +} \ No newline at end of file diff --git a/i18n/ko/common.json b/i18n/ko/common.json deleted file mode 100644 index d01abad0..00000000 --- a/i18n/ko/common.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "fields": { - "fullname": "이름", - "company": "회사", - "address": "주소", - "email": "이메일", - "phone": "전화번호", - "website": "웹사이트" - }, - "save": "저장", - "amount": "양", - "default": "기본", - "saveAsDefault": "기본 값으로 저장할까요?", - "yes": "네", - "noThanks": "아뇨, 괜찮아요" -} \ No newline at end of file diff --git a/i18n/ko/contacts.json b/i18n/ko/contacts.json deleted file mode 100644 index 797d10dd..00000000 --- a/i18n/ko/contacts.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "header": "모든 연락처", - "fields": { - "contact": "연락처", - "email": "이메일", - "phone": "휴대전화", - "actions": "작업" - } -} \ No newline at end of file diff --git a/i18n/ko/dialog.json b/i18n/ko/dialog.json deleted file mode 100644 index fb8e699b..00000000 --- a/i18n/ko/dialog.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "appUpdate": { - "available": { - "title": "새 업데이트가 있습니다", - "message": "백그라운드에서 업데이트를 다운로드할까요?" - }, - "noUpdate": { - "title": "새 업데이트가 없습니다", - "message": "최신 버전을 사용하고 있습니다" - }, - "error": { - "title": "오류가 발생했습니다" - }, - "downloaded": { - "title": "업데이트 다운로드 완료", - "message": "프로그램을 종료하고 업그레이드할까요?", - "quitNow": "지금 종료", - "later": "나중에" - } - }, - "noAccess": { - "title": "접근 권한이 없습니다", - "message": "다른 경로를 선택해주세요" - }, - "errorBoundary": "오류가 발생했습니다", - "deleteInvoice": { - "title": "이 송장을 삭제할까요?", - "message": "송장이 영구적으로 제거됩니다" - }, - "deleteContact": { - "title": "이 연락처를 삭제할까요?", - "message": "연락처가 영구적으로 제거됩니다" - }, - "fileTypeErr": { - "title": "다른 파일을 선택해주세요" - }, - "validation": { - "recipient": { - "empty": { - "title": "연락처 잘못됨", - "message": "연락처는 필수 입력 항목입니다" - }, - "requiredFields": { - "title": "필수 입력 항목", - "message": "필수 입력 항목을 모두 채워주세요" - }, - "email": { - "title": "이메일 잘못됨", - "message": "다른 이메일을 선택해주세요." - } - }, - "rows": { - "emptyDescription": { - "title": "품명 잘못됨", - "message": "품명은 필수 입력 항목입니다" - }, - "priceZero": { - "title": "가격 잘못됨", - "message": "가격 값은 0보다 커야합니다" - }, - "qtyZero": { - "title": "수량 잘못됨", - "message": "수량 값은 0보다 커야합니다" - } - }, - "dueDate": { - "title": "기한 날짜 잘못됨", - "message": "유효한 날짜를 선택해주세요" - }, - "currency": { - "fraction": { - "title": "소수 잘못됨", - "message": "소수 값은 0과 같거나 더 커야합니다" - } - }, - "discount": { - "title": "할인 값 잘못됨", - "message": "할인 값은 0보다 커야합니다" - }, - "tax": { - "title": "세금 값 잘못됨", - "message": "세금 값은 0보다 커야합니다" - }, - "note": { - "title": "기타 사항 잘못됨", - "message": "기타 사항은 필수 입력 항목입니다" - } - } -} \ No newline at end of file diff --git a/i18n/ko/form.json b/i18n/ko/form.json deleted file mode 100644 index 189c6a75..00000000 --- a/i18n/ko/form.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "header": { - "new": "송장 만들기", - "edit": "송장 수정하기", - "btns": { - "clear": "초기화", - "update": "업데이트", - "saveAndPreview": "저장하고 미리 보기" - } - }, - "settings": { - "name": "양식 설정", - "hint": "칸이 더 필요하신가요? 원하시는 칸을 켜고 끄세요." - }, - "fields": { - "items": { - "name": "품목 / 서비스", - "description": "품명", - "price": "가격", - "quantity": "수량", - "add": "새 품목 추가" - }, - "recipient": { - "name": "받는 사람", - "select": "연락처 중에서 선택", - "add": "새로 작성" - }, - "discount": { - "name": "할인", - "percentage": "퍼센트 비율", - "flat": "고정 할인 요금" - }, - "dueDate": { - "name": "기한 날짜", - "placeHolder": "날짜를 선택하세요" - }, - "tax": { - "name": "세금", - "id": "납세자 번호", - "method": "지불 방식", - "reverse": "매입자 납부" - }, - "note": "기타 사항", - "currency": "통화" - } -} \ No newline at end of file diff --git a/i18n/ko/invoices.json b/i18n/ko/invoices.json deleted file mode 100644 index a1a2bbdc..00000000 --- a/i18n/ko/invoices.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "header": { - "name": "모든 송장" - }, - "fields": { - "client": "거래처", - "invoiceID": "송장 번호", - "createdDate": "생성일", - "dueDate": "기한 날짜", - "total": "총 가격" - }, - "status": { - "pending": "결제 대기 중", - "paid": "결제 완료", - "refunded": "환급", - "cancelled": "취소" - }, - "btns": { - "view": "보기", - "edit": "수정하기", - "markAsPaid": "결제 완료로 표시" - } -} \ No newline at end of file diff --git a/i18n/ko/messages.json b/i18n/ko/messages.json deleted file mode 100644 index 83419055..00000000 --- a/i18n/ko/messages.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "noContact": "아무런 연락처가 없습니다", - "noInvoice": "아무런 송장이 없습니다", - "invoice": { - "saved": "송장이 성공적으로 저장되었습니다", - "updated": "송장이 성공적으로 업데이트되었습니다", - "deleted": "송장이 성공적으로 삭제되었습니다" - }, - "contact": { - "saved": "연락처가 성공적으로 저장되었습니다", - "deleted": "연락처가 성공적으로 삭제되었습니다" - }, - "settings": { - "saved": "모든 설정이 성공적으로 저장되었습니다" - } -} \ No newline at end of file diff --git a/i18n/ko/preview.json b/i18n/ko/preview.json deleted file mode 100644 index 11e6cfb2..00000000 --- a/i18n/ko/preview.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "sidebar": { - "template": "템플릿", - "alignment": { - "name": "정렬", - "top": "위", - "middle": "중간", - "bottom": "아래" - }, - "fontSize": "글자 크기", - "toggle": { - "name": "표시 설정", - "logo": "로고", - "symbol": "화폐 기호", - "recipient": "받는 사람" - }, - "accentColor": { - "name": "강조 색상", - "useCustom": "직접 설정" - }, - "actions": { - "name": "작업", - "savePDF": "PDF로 내보내기", - "saveConfigs": "구성 저장" - } - }, - "common": { - "billedTo": "청구지", - "chooseInvoiceToPreview": "미리 보기 할 송장을 선택하세요", - "created": "작성일", - "due": "기한", - "invoice": "송장", - "itemDescription": "품목 설명", - "notice": "기타 사항", - "order": "주문 번호", - "price": "가격", - "qty": "수량", - "subtotal": "상품 가격", - "total": "합계" - } -} \ No newline at end of file diff --git a/i18n/ko/settings.json b/i18n/ko/settings.json deleted file mode 100644 index e7e42d7a..00000000 --- a/i18n/ko/settings.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "header": "설정", - "tabs": { - "profile": "프로필", - "invoice": "송장", - "general": "일반" - }, - "fields": { - "logo": { - "name": "로고", - "hint": "PNG, JPG, SVG (권장) 형식" - }, - "taxSettings": "세금 설정", - "template": "템플릿", - "dateFormat": "날짜 표시 형식", - "pdfExportDir": "PDF 내보내기 경로", - "requiredFields": "필수 입력 항목", - "sound": "효과음", - "mute": "음소거", - "autoCheckUpdate": { - "name": "자동 업데이트 확인", - "daily": "매일 (권장)", - "weekly": "매주" - }, - "currency": { - "placement": "기호 배치", - "afterAmount": "합계 후", - "beforeAmount": "합계 전", - "fraction": "소수", - "separator": "단위 구분 기호", - "commaDot": "쉼표, 점", - "dotComma": "점, 쉼표", - "spaceDot": "공백, 점" - }, - "openPDFReader": "PDF로 내보내고 열기", - "language": { - "name": "언어", - "cs": "čeština (체코어)", - "da": "dansk (덴마크어)", - "de": "Deutsch (독일어)", - "el": "ελληνικά (그리스어)", - "en": "English (영어)", - "esES": "español (스페인어)", - "fr": "français (프랑스어)", - "id": "Bahasa Indonesia (인도네시아어)", - "it": "italiano (이탈리아어)", - "ja": "日本語 (일본어)", - "ko": "한국어", - "lt": "lietuvių kalba (리투아니아어)", - "nl": "Nederlands (네덜란드어)", - "ptBR": "português (포르투갈어, 브라질)", - "ptPT": "português (포르투갈어)", - "ru": "Русский язык (러시아어)", - "th": "ภาษาไทย (태국어)", - "tl": "Tagalog (타갈로그어, 필리핀)", - "tr": "Türkçe (터기어)", - "vi": "tiếng việt (베트남어)", - "zh-CN": "중국어 (간체)", - "zh-TW": "중국어 (번체)" - }, - "other": "기타" - } -} \ No newline at end of file diff --git a/i18n/ko/tour.json b/i18n/ko/tour.json deleted file mode 100644 index b5a9bf2b..00000000 --- a/i18n/ko/tour.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "actions": { - "skip": "건너뛰기", - "next": "다음", - "start": "당장 시작하겠소!" - }, - "slides": { - "welcome": { - "heading": "👋 반가워요!", - "description": "Manta를 이용해주셔서 감사합니다! 겨우 3가지의 과정만으로 훌륭한 송장을 만드는 방법을 보여 드리죠." - }, - "create": { - "heading": "하나. 만들기", - "description": "Manta는 유연한 인터페이스를 가지고 있죠. 단순히 필요한 칸을 찾아서 원하시는 대로 켜고 끌 수도 있습니다." - }, - "preview": { - "heading": "둘. 구성하기", - "description": "Manta에서 제공하는 멋진 템플릿을 이용해서 자신의 스타일에 맞춰 구성해보세요." - }, - "save": { - "heading": "셋. 저장하기", - "description": "송장이 마음에 드신가요? 나중에 사용할 수 있도록 PDF 파일로 저장하실 수도 있답니다. 뽑아서, 메일로 보내면 끝. Manta로 고객에게 깊은 인상을 심어보세요!" - }, - "success": { - "heading": "끝!!! ✋️", - "description": "단지 세 과정 밖에 없다니, 너무 간단하지 않은가요? 송장을 만들기 전에 꼭 회사 프로필과 로고를 업데이트하는 것, 잊지 마세요!" - } - } -} \ No newline at end of file diff --git a/i18n/vi/form.json b/i18n/vi/form.json index 088f65f8..48cb52d8 100644 --- a/i18n/vi/form.json +++ b/i18n/vi/form.json @@ -32,7 +32,30 @@ }, "dueDate": { "name": "Hạn thanh toán", - "placeHolder": "Chọn ngày" + "placeHolder": "Chọn ngày", + "paymentTerms": { + "name": "Chọn một hạn thanh toán", + "net7": { + "label": "Net 7", + "description": "Thanh toán sau 7 ngày hoá đơn được tạo" + }, + "net10": { + "label": "Net 10", + "description": "Thanh toán sau 10 ngày hoá đơn được tạo" + }, + "net30": { + "label": "Net 30", + "description": "Thanh toán sau 30 ngày hoá đơn được tạo" + }, + "net60": { + "label": "Net 60", + "description": "Thanh toán sau 60 ngày hoá đơn được tạo" + }, + "net90": { + "label": "Net 90", + "description": "Thanh toán sau 90 ngày hoá đơn được tạo" + } + } }, "tax": { "name": "Thuế", diff --git a/i18n/vi/settings.json b/i18n/vi/settings.json index a4be78c3..8d207394 100644 --- a/i18n/vi/settings.json +++ b/i18n/vi/settings.json @@ -45,6 +45,7 @@ "id": "Tiếng Indonesia", "it": "Tiếng Ý", "ja": "Tiếng Nhật", + "ko": "Tiếng Hàn Quốc", "lt": "Tiếng Lithuania", "nl": "Tiếng Hà Lan", "ptBR": "Tiếng Bồ Đào Nha, Brazil", diff --git a/i18n/zh-CN/form.json b/i18n/zh-CN/form.json index 04e2d273..18a9428f 100644 --- a/i18n/zh-CN/form.json +++ b/i18n/zh-CN/form.json @@ -32,7 +32,30 @@ }, "dueDate": { "name": "截止日期", - "placeHolder": "选择一个日期" + "placeHolder": "选择一个日期", + "paymentTerms": { + "name": "选择付款时间的条款", + "net7": { + "label": "Net 7", + "description": "在开票日期后 7 天内付款" + }, + "net10": { + "label": "Net 10", + "description": "在开票日期后 10 天内付款" + }, + "net30": { + "label": "Net 30", + "description": "在开票日期后 30 天内付款" + }, + "net60": { + "label": "Net 60", + "description": "在开票日期后 60 天内付款" + }, + "net90": { + "label": "Net 90", + "description": "在开票日期后 90 天内付款" + } + } }, "tax": { "name": "税费", diff --git a/preview/components/sidebar/Language.jsx b/preview/components/sidebar/Language.jsx index 7d690cb9..3ea72bd7 100644 --- a/preview/components/sidebar/Language.jsx +++ b/preview/components/sidebar/Language.jsx @@ -10,10 +10,12 @@ function Language({ t, language, handleInputChange, UILang }) { {t('settings:fields:language:name', { lng: UILang })} );