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: 'Diese ist die letzte Seite einer Dokumente.', 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: 'La declaración de IVA se aplica en base a la factura de venta, y se paga 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: 'Continues on page', finalPageStatement: 'This is the final page of this document.', page: 'Page', }; export const languageCodeMap = { 'DE': DE_translations, 'EN': EN_translations, 'ES': ES_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; } };