From e800bf72fca1f9ddf22e19fd0d2ff4c4edb2fa6d Mon Sep 17 00:00:00 2001 From: nokker Date: Sun, 31 Aug 2025 04:15:54 +0200 Subject: [PATCH] Fix mixed language translation issues in results and fuel labels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Translation Fixes: - Fixed hardcoded "/mois" showing in English interface for monthly pension loss - Fixed hardcoded "/mo" showing regardless of language in summary section - Fixed fuel types displaying in English instead of translated versions Technical Implementation: - Added translation keys for time units (units.perMonth, units.perMo) - Created translateFuelType() helper function for consistent fuel type display - Updated results display to use dynamic translations instead of hardcoded strings Language Support: - English: "/month", "/mo", "Electric" - French: "/mois", "/mois", "Électrique" - Dutch: "/maand", "/md", "Elektrisch" Result: All interfaces now display consistently in the selected language without mixed language artifacts in calculations and fuel type labels. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- tax.html | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/tax.html b/tax.html index 13866af..57e7fba 100644 --- a/tax.html +++ b/tax.html @@ -948,7 +948,9 @@ "manual.vehicleName": "Vehicle Name", "manual.listPrice": "List Price (€)", "manual.co2Emissions": "CO2 Emissions (g/km)", - "manual.fuelType": "Fuel Type" + "manual.fuelType": "Fuel Type", + "units.perMonth": "/month", + "units.perMo": "/mo" }, fr: { title: "Calculateur d'Impôt sur les Voitures de Société", @@ -1048,7 +1050,9 @@ "manual.vehicleName": "Nom du Véhicule", "manual.listPrice": "Prix Catalogue (€)", "manual.co2Emissions": "Émissions CO2 (g/km)", - "manual.fuelType": "Type de Carburant" + "manual.fuelType": "Type de Carburant", + "units.perMonth": "/mois", + "units.perMo": "/mois" }, nl: { title: "Bedrijfswagen Belasting Calculator", @@ -1148,7 +1152,9 @@ "manual.vehicleName": "Voertuignaam", "manual.listPrice": "Catalogusprijs (€)", "manual.co2Emissions": "CO2 Uitstoot (g/km)", - "manual.fuelType": "Brandstoftype" + "manual.fuelType": "Brandstoftype", + "units.perMonth": "/maand", + "units.perMo": "/md" } }; @@ -1302,6 +1308,16 @@ document.getElementById('retirement-years').value = retirementYears; } + function translateFuelType(fuelType) { + const fuelTranslations = { + 'electric': translations[currentLanguage]['fuel.electric'] || 'Electric', + 'petrol': translations[currentLanguage]['fuel.petrol'] || 'Petrol', + 'diesel': translations[currentLanguage]['fuel.diesel'] || 'Diesel', + 'hybrid': translations[currentLanguage]['fuel.hybrid'] || 'Hybrid' + }; + return fuelTranslations[fuelType] || fuelType; + } + // Removed switchTab function - no longer using tabs function validateRequiredFields() { @@ -1604,14 +1620,14 @@ carComparisonHTML += '
' + car.examples + '
'; carComparisonHTML += '
'; carComparisonHTML += '
' + labels[currentLanguage].listPrice + '€' + car.price.toLocaleString() + '
'; - carComparisonHTML += '
' + labels[currentLanguage].co2Fuel + '' + car.co2 + 'g / ' + car.fuel + '
'; + carComparisonHTML += '
' + labels[currentLanguage].co2Fuel + '' + car.co2 + 'g / ' + translateFuelType(car.fuel) + '
'; carComparisonHTML += '
' + labels[currentLanguage].annualBik + '€' + Math.round(annualBIK).toLocaleString() + '
'; carComparisonHTML += '
' + labels[currentLanguage].monthlyTax + '€' + Math.round(netMonthlyCost).toLocaleString() + '
'; carComparisonHTML += '
' + labels[currentLanguage].rszLostMonth + '€' + Math.round(monthlyRSZLost).toLocaleString() + '
'; carComparisonHTML += '
' + labels[currentLanguage].co2TaxYear + '€' + Math.round(solidarityContribution).toLocaleString() + '
'; carComparisonHTML += '
'; carComparisonHTML += '
'; - carComparisonHTML += '
' + labels[currentLanguage].monthlyPensionLoss + '-€' + Math.round(monthlyPensionLoss) + '/mois
'; + carComparisonHTML += '
' + labels[currentLanguage].monthlyPensionLoss + '-€' + Math.round(monthlyPensionLoss) + translations[currentLanguage]['units.perMonth'] + '
'; carComparisonHTML += '
' + labels[currentLanguage].duringRetirement + '' + labels[currentLanguage].everyMonthFor + ' ' + retirementYears + ' ' + labels[currentLanguage].years + '
'; carComparisonHTML += '
' + labels[currentLanguage].totalLifetimeLoss + '€' + Math.round(totalPensionLoss).toLocaleString() + '
'; carComparisonHTML += presentValueRow; @@ -1722,9 +1738,9 @@ let summaryHTML = '

' + summaryLabels[currentLanguage].monthlyImpact + '

'; summaryHTML += '
'; - summaryHTML += '
-€' + Math.round(minMonthlyLoss) + '/mo
' + summaryLabels[currentLanguage].bestCase + '
'; - summaryHTML += '
-€' + Math.round(avgMonthlyLoss) + '/mo
' + summaryLabels[currentLanguage].average + '
'; - summaryHTML += '
-€' + Math.round(maxMonthlyLoss) + '/mo
' + summaryLabels[currentLanguage].worstCase + '
'; + summaryHTML += '
-€' + Math.round(minMonthlyLoss) + translations[currentLanguage]['units.perMo'] + '
' + summaryLabels[currentLanguage].bestCase + '
'; + summaryHTML += '
-€' + Math.round(avgMonthlyLoss) + translations[currentLanguage]['units.perMo'] + '
' + summaryLabels[currentLanguage].average + '
'; + summaryHTML += '
-€' + Math.round(maxMonthlyLoss) + translations[currentLanguage]['units.perMo'] + '
' + summaryLabels[currentLanguage].worstCase + '
'; summaryHTML += '
' + retirementYears + ' ' + labels[currentLanguage].years + '
' + summaryLabels[currentLanguage].duration + '
'; summaryHTML += '
';