|
|
|
@ -1,10 +1,7 @@
|
|
|
|
|
import * as interfaces from './interfaces/index.js';
|
|
|
|
|
|
|
|
|
|
type TTranslationImplementation = {
|
|
|
|
|
[key in keyof interfaces.IDeDocumentTranslations]: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const EN_translations: TTranslationImplementation = {
|
|
|
|
|
// Define English translations without enforcing TTranslationImplementation yet
|
|
|
|
|
export const EN_translations = {
|
|
|
|
|
address: 'Address',
|
|
|
|
|
bankConnection: 'Bank Connection',
|
|
|
|
|
contactInfo: 'Contact Info',
|
|
|
|
@ -22,8 +19,17 @@ export const EN_translations: TTranslationImplementation = {
|
|
|
|
|
continuesOnPage: 'Continues on page',
|
|
|
|
|
finalPageStatement: 'This is the final page of this document.',
|
|
|
|
|
page: 'Page',
|
|
|
|
|
} as const;
|
|
|
|
|
|
|
|
|
|
// Infer keys of EN_translations
|
|
|
|
|
export type TTranslationKey = keyof typeof EN_translations;
|
|
|
|
|
|
|
|
|
|
// Define the type for all translations based on EN_translations keys
|
|
|
|
|
export type TTranslationImplementation = {
|
|
|
|
|
[key in TTranslationKey]: string;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Define German translations
|
|
|
|
|
export const DE_translations: TTranslationImplementation = {
|
|
|
|
|
address: 'Adresse',
|
|
|
|
|
bankConnection: 'Bankverbindung',
|
|
|
|
@ -33,9 +39,10 @@ export const DE_translations: TTranslationImplementation = {
|
|
|
|
|
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',
|
|
|
|
|
reverseVatNote:
|
|
|
|
|
'Umkehr der Umsatzsteuerpflicht: Der Rechnungsempfänger ist für die korrekte Abrechnung der Umsatzsteuer zuständig.',
|
|
|
|
|
totalNetPrice: 'Summe netto',
|
|
|
|
|
unitNetPrice: 'Einheit netto',
|
|
|
|
|
unitType: 'Einheit',
|
|
|
|
|
yourCustomerId: 'Ihre Kundennummer:',
|
|
|
|
|
yourVatId: 'Ihre Umsatzsteuer-ID:',
|
|
|
|
@ -44,6 +51,7 @@ export const DE_translations: TTranslationImplementation = {
|
|
|
|
|
page: 'Seite',
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Define Spanish translations
|
|
|
|
|
export const ES_translations: TTranslationImplementation = {
|
|
|
|
|
address: 'Dirección',
|
|
|
|
|
bankConnection: 'Conexión bancaria',
|
|
|
|
@ -64,6 +72,7 @@ export const ES_translations: TTranslationImplementation = {
|
|
|
|
|
page: 'Página',
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Define French translations
|
|
|
|
|
export const FR_translations: TTranslationImplementation = {
|
|
|
|
|
address: 'Adresse',
|
|
|
|
|
bankConnection: 'Coordonnées bancaires',
|
|
|
|
@ -72,11 +81,12 @@ export const FR_translations: TTranslationImplementation = {
|
|
|
|
|
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.',
|
|
|
|
|
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é',
|
|
|
|
|
unitType: "Type d'unité",
|
|
|
|
|
yourCustomerId: 'Votre numéro de client :',
|
|
|
|
|
yourVatId: 'Votre numéro de TVA :',
|
|
|
|
|
continuesOnPage: 'Continue sur la page',
|
|
|
|
@ -84,6 +94,7 @@ export const FR_translations: TTranslationImplementation = {
|
|
|
|
|
page: 'Page',
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Define Italian translations
|
|
|
|
|
export const IT_translations: TTranslationImplementation = {
|
|
|
|
|
address: 'Indirizzo',
|
|
|
|
|
bankConnection: 'Coordinate bancarie',
|
|
|
|
@ -93,7 +104,7 @@ export const IT_translations: TTranslationImplementation = {
|
|
|
|
|
itemPos: 'Pos.',
|
|
|
|
|
quantity: 'Quantità',
|
|
|
|
|
registrationInfo: 'Informazioni di registrazione',
|
|
|
|
|
reverseVatNote: 'L\'IVA è applicata con inversione contabile ed è a carico del cliente.',
|
|
|
|
|
reverseVatNote: "L'IVA è applicata con inversione contabile ed è a carico del cliente.",
|
|
|
|
|
totalNetPrice: 'Prezzo netto totale',
|
|
|
|
|
unitNetPrice: 'Prezzo netto unitario',
|
|
|
|
|
unitType: 'Tipo di unità',
|
|
|
|
@ -104,21 +115,24 @@ export const IT_translations: TTranslationImplementation = {
|
|
|
|
|
page: 'Pagina',
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const languageCodeMap = {
|
|
|
|
|
'DE': DE_translations,
|
|
|
|
|
'EN': EN_translations,
|
|
|
|
|
'ES': ES_translations,
|
|
|
|
|
'FR': FR_translations,
|
|
|
|
|
'IT': IT_translations,
|
|
|
|
|
// Language Code Map
|
|
|
|
|
export const languageCodeMap: Record<string, TTranslationImplementation> = {
|
|
|
|
|
EN: EN_translations,
|
|
|
|
|
DE: DE_translations,
|
|
|
|
|
ES: ES_translations,
|
|
|
|
|
FR: FR_translations,
|
|
|
|
|
IT: IT_translations,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Language Code Type
|
|
|
|
|
export type TLanguageCode = keyof typeof languageCodeMap;
|
|
|
|
|
|
|
|
|
|
export const translate = (languageCode: TLanguageCode, key: string, defaultValue: string) => {
|
|
|
|
|
// Translate Function
|
|
|
|
|
export const translate = (
|
|
|
|
|
languageCode: TLanguageCode,
|
|
|
|
|
key: TTranslationKey,
|
|
|
|
|
defaultValue: string
|
|
|
|
|
): string => {
|
|
|
|
|
const translations = languageCodeMap[languageCode] || EN_translations;
|
|
|
|
|
if (translations && translations[key]) {
|
|
|
|
|
return translations[key];
|
|
|
|
|
} else {
|
|
|
|
|
return defaultValue;
|
|
|
|
|
}
|
|
|
|
|
return translations[key] || defaultValue;
|
|
|
|
|
};
|