import * as interfaces from './interfaces/index.js'; type TTranslationImplementation = { [key in keyof interfaces.IDeDocumentTranslations]: string; } export const EN_translations: TTranslationImplementation = { address: 'Address', bankConnection: 'Bank Connection', contactInfo: 'Contact Info', description: 'Description', invoice: 'Invoice', itemPos: 'Item Pos.', quantity: 'Quantity', registrationInfo: 'Registration Info', reverseVatNote: 'VAT arises on a reverse charge basis and is payable by the customer.', totalNetPrice: 'Total Net Price', unitNetPrice: 'Unit Net Price', unitType: 'Unit Type', yourCustomerId: 'Your Customer ID:', yourVatId: 'Your vat id on file:', continuesOnPage: 'Continues on page', finalPageStatement: 'This is the final page of this document.', page: 'Page', }; export const DE_translations: TTranslationImplementation = { address: 'Adresse', bankConnection: 'Bankverbindung', contactInfo: 'Kontaktinformationen', description: 'Beschreibung', invoice: 'Rechnung', itemPos: 'Pos.', quantity: 'Anzahl', registrationInfo: 'HRA/HRB Info', reverseVatNote: 'Umkehr der Umsatzsteuerpflicht: Der Rechnungsempfänger ist für die korrekte Abrechnung der Umsatzsteuer zuständig.', totalNetPrice: 'Nettopreis Summe', unitNetPrice: 'Nettopreis', unitType: 'Einheit', yourCustomerId: 'Ihre Kundennummer:', yourVatId: 'Ihre Umsatzsteuer-ID:', continuesOnPage: 'Fortsetzung auf Seite', finalPageStatement: 'Dies ist die letzte Seite dieses Dokuments.', page: 'Seite', }; export const ES_translations: TTranslationImplementation = { address: 'Dirección', bankConnection: 'Conexión bancaria', contactInfo: 'Información de contacto', description: 'Descripción', invoice: 'Factura', itemPos: 'Pos.', quantity: 'Cantidad', registrationInfo: 'Información de registro', reverseVatNote: 'El IVA se aplica por inversión del sujeto pasivo y debe ser pagado por el cliente.', totalNetPrice: 'Precio total neto', unitNetPrice: 'Precio unitario neto', unitType: 'Tipo de unidad', yourCustomerId: 'Su número de cliente:', yourVatId: 'Su ID de IVA:', continuesOnPage: 'Continúa en la página', finalPageStatement: 'Esta es la última página de este documento.', page: 'Página', }; export const FR_translations: TTranslationImplementation = { address: 'Adresse', bankConnection: 'Coordonnées bancaires', contactInfo: 'Informations de contact', description: 'Description', invoice: 'Facture', itemPos: 'Position', quantity: 'Quantité', registrationInfo: 'Informations d\'enregistrement', reverseVatNote: 'La TVA s\'applique selon le mécanisme d\'autoliquidation et est à payer par le client.', totalNetPrice: 'Prix net total', unitNetPrice: 'Prix unitaire net', unitType: 'Type d\'unité', yourCustomerId: 'Votre numéro de client :', yourVatId: 'Votre numéro de TVA :', continuesOnPage: 'Continue sur la page', finalPageStatement: 'Ceci est la dernière page de ce document.', page: 'Page', }; export const IT_translations: TTranslationImplementation = { address: 'Indirizzo', bankConnection: 'Coordinate bancarie', contactInfo: 'Informazioni di contatto', description: 'Descrizione', invoice: 'Fattura', itemPos: 'Pos.', quantity: 'Quantità', registrationInfo: 'Informazioni di registrazione', reverseVatNote: 'L\'IVA è applicata con inversione contabile ed è a carico del cliente.', totalNetPrice: 'Prezzo netto totale', unitNetPrice: 'Prezzo netto unitario', unitType: 'Tipo di unità', yourCustomerId: 'Il tuo numero cliente:', yourVatId: 'Il tuo numero di partita IVA:', continuesOnPage: 'Continua alla pagina', finalPageStatement: 'Questa è l\'ultima pagina di questo documento.', page: 'Pagina', }; export const languageCodeMap = { 'DE': DE_translations, 'EN': EN_translations, 'ES': ES_translations, 'FR': FR_translations, 'IT': IT_translations, }; export type TLanguageCode = keyof typeof languageCodeMap; export const translate = (languageCode: TLanguageCode, key: string, defaultValue: string) => { const translations = languageCodeMap[languageCode] || EN_translations; if (translations && translations[key]) { return translations[key]; } else { return defaultValue; } };