masina-dock/frontend/static/js/translations.js

297 lines
10 KiB
JavaScript
Raw Permalink Normal View History

const translations = {
en: {
dashboard: "Dashboard",
overview: "Overview",
service_records: "Service Records",
repairs: "Repairs",
fuel: "Fuel",
taxes: "Taxes",
notes: "Notes",
reminders: "Reminders",
settings: "Settings",
logout: "Logout",
toggle_theme: "Toggle Theme",
your_garage: "Your Garage",
add_vehicle: "Add Vehicle",
add_fuel_record: "Add Fuel Record",
add_service_record: "Add Service Record",
add_repair: "Add Repair",
add_tax_record: "Add Tax Record",
add_note: "Add Note",
add_reminder: "Add Reminder",
export_csv: "Export CSV",
export_all_data: "Export All Data",
back_to_vehicle: "Back to Vehicle",
date: "Date",
odometer: "Odometer",
description: "Description",
category: "Category",
cost: "Cost",
notes: "Notes",
attachment: "Attachment",
download: "Download",
fuel_amount: "Fuel Amount",
distance: "Distance",
economy: "Economy",
total_fuel_cost: "Total Fuel Cost",
average_fuel_economy: "Average Fuel Economy",
recurring: "Recurring",
type: "Type",
amount: "Amount",
save: "Save All Changes",
cancel: "Cancel",
edit: "Edit",
delete: "Delete",
add_record: "Add Record",
update: "Update",
create_backup: "Create Backup",
restore_backup: "Restore Backup",
language: "Language",
select_language: "Select Language",
save_language: "Save Language",
measurement_system: "Measurement System",
currency: "Currency",
user_management: "User Management",
change_password: "Change Password",
current_password: "Current Password",
new_password: "New Password",
confirm_password: "Confirm New Password",
year: "Year",
make: "Make",
model: "Model",
vin: "VIN",
license_plate: "Registration Number",
vehicle_photo: "Vehicle Photo",
edit_vehicle: "Edit Vehicle",
delete_vehicle: "Delete Vehicle",
last_odometer_reading: "Last Odometer Reading",
total_distance_traveled: "Total Distance Travelled",
total_cost: "Total Cost",
fuel_cost: "Fuel Cost",
service_cost: "Service Cost",
repairs_cost: "Repairs Cost",
taxes_cost: "Taxes Cost",
upgrades_cost: "Upgrades Cost",
recent_service_records: "Recent Service Records",
recent_fuel_records: "Recent Fuel Records",
active_reminders: "Active Reminders",
no_active_reminders: "No active reminders",
urgency: "Urgency",
due_date: "Due Date",
due_odometer: "Due Odometer",
registration: "Registration",
license: "Licence",
property_tax: "Road Tax",
insurance: "Insurance",
inspection: "MOT",
other: "Other",
maintenance: "Maintenance",
repair: "Repair",
upgrade: "Upgrade",
tax: "Tax",
note: "Note",
monthly: "Monthly",
quarterly: "Quarterly",
yearly: "Yearly",
metric: "Metric (km, litres)",
imperial: "Imperial (miles, gallons)",
us_dollar: "US Dollar (USD)",
british_pound: "British Pound (GBP)",
romanian_leu: "Romanian Leu (RON)",
euro: "Euro (EUR)",
supported_files: "Supported: PDF, Images, Text, Word, Excel",
no_file_selected: "No file selected",
upload_failed: "Upload failed",
save_successful: "Saved successfully",
delete_confirmation: "Are you sure you want to delete this?",
title: "Title",
content: "Content",
optional: "Optional",
mileage: "Mileage",
litres: "Litres",
gallons: "Gallons",
petrol: "Petrol",
diesel: "Diesel",
backup_restore_title: "Backup & Restore",
backup_restore_desc: "Create a complete backup of all your data or restore from a previous backup.",
units_currency: "Units & Currency",
manage_account: "Manage your account settings and password.",
app_info: "Application Info",
version: "Version",
database: "Database",
current_user: "Current User",
save_units: "Save Settings"
},
ro: {
dashboard: "Tablou de bord",
overview: "Prezentare generala",
service_records: "Inregistrari service",
repairs: "Reparatii",
fuel: "Combustibil",
taxes: "Taxe",
notes: "Notite",
reminders: "Memento-uri",
settings: "Setari",
logout: "Deconectare",
toggle_theme: "Schimba tema",
your_garage: "Garajul tau",
add_vehicle: "Adauga vehicul",
add_fuel_record: "Adauga alimentare",
add_service_record: "Adauga service",
add_repair: "Adauga reparatie",
add_tax_record: "Adauga taxa",
add_note: "Adauga notita",
add_reminder: "Adauga memento",
export_csv: "Exporta CSV",
export_all_data: "Exporta toate datele",
back_to_vehicle: "Inapoi la vehicul",
date: "Data",
odometer: "Kilometraj",
description: "Descriere",
category: "Categorie",
cost: "Cost",
notes: "Notite",
attachment: "Atasament",
download: "Descarca",
fuel_amount: "Cantitate combustibil",
distance: "Distanta",
economy: "Consum",
total_fuel_cost: "Cost total combustibil",
average_fuel_economy: "Consum mediu",
recurring: "Recurent",
type: "Tip",
amount: "Suma",
save: "Salveaza toate modificarile",
cancel: "Anuleaza",
edit: "Editeaza",
delete: "Sterge",
add_record: "Adauga inregistrare",
update: "Actualizeaza",
create_backup: "Creeaza backup",
restore_backup: "Restaureaza backup",
language: "Limba",
select_language: "Selecteaza limba",
save_language: "Salveaza limba",
measurement_system: "Sistem de masura",
currency: "Moneda",
user_management: "Gestionare utilizator",
change_password: "Schimba parola",
current_password: "Parola curenta",
new_password: "Parola noua",
confirm_password: "Confirma parola noua",
year: "An",
make: "Marca",
model: "Model",
vin: "VIN",
license_plate: "Numar inmatriculare",
vehicle_photo: "Fotografie vehicul",
edit_vehicle: "Editeaza vehicul",
delete_vehicle: "Sterge vehicul",
last_odometer_reading: "Ultima citire kilometraj",
total_distance_traveled: "Distanta totala parcursa",
total_cost: "Cost total",
fuel_cost: "Cost combustibil",
service_cost: "Cost service",
repairs_cost: "Cost reparatii",
taxes_cost: "Cost taxe",
upgrades_cost: "Cost imbunatatiri",
recent_service_records: "Inregistrari service recente",
recent_fuel_records: "Alimentari recente",
active_reminders: "Memento-uri active",
no_active_reminders: "Niciun memento activ",
urgency: "Urgenta",
due_date: "Data scadenta",
due_odometer: "Kilometraj scadent",
registration: "Inmatriculare",
license: "Licenta",
property_tax: "Taxa proprietate",
insurance: "Asigurare",
inspection: "Inspectie tehnica",
other: "Altele",
maintenance: "Intretinere",
repair: "Reparatie",
upgrade: "Imbunatatire",
tax: "Taxa",
note: "Notita",
monthly: "Lunar",
quarterly: "Trimestrial",
yearly: "Anual",
metric: "Metric (km, litri)",
imperial: "Imperial (mile, galoane)",
us_dollar: "Dolar american (USD)",
british_pound: "Lira sterlina (GBP)",
romanian_leu: "Leu romanesc (RON)",
euro: "Euro (EUR)",
supported_files: "Suportat: PDF, Imagini, Text, Word, Excel",
no_file_selected: "Niciun fisier selectat",
upload_failed: "Incarcare esuata",
save_successful: "Salvat cu succes",
delete_confirmation: "Sigur doriti sa stergeti?",
title: "Titlu",
content: "Continut",
optional: "Optional",
mileage: "Kilometraj",
litres: "Litri",
gallons: "Galoane",
petrol: "Benzina",
diesel: "Motorina",
backup_restore_title: "Backup & Restaurare",
backup_restore_desc: "Creaza un backup complet al datelor tale sau restaureaza dintr-un backup anterior.",
units_currency: "Unitati & Moneda",
manage_account: "Gestioneaza setarile contului si parola.",
app_info: "Informatii aplicatie",
version: "Versiune",
database: "Baza de date",
current_user: "Utilizator curent",
save_units: "Salveaza setari"
}
};
function getTranslation(key, lang = null) {
if (!lang) {
const settings = JSON.parse(localStorage.getItem('userSettings') || '{"language":"en"}');
lang = settings.language || 'en';
}
return translations[lang]?.[key] || translations['en'][key] || key;
}
function translatePage() {
const settings = JSON.parse(localStorage.getItem('userSettings') || '{"language":"en"}');
const lang = settings.language || 'en';
document.querySelectorAll('[data-translate]').forEach(element => {
const key = element.getAttribute('data-translate');
const translation = getTranslation(key, lang);
if (element.tagName === 'INPUT' && (element.type === 'button' || element.type === 'submit')) {
element.value = translation;
} else if (element.tagName === 'INPUT' || element.tagName === 'TEXTAREA') {
element.placeholder = translation;
} else if (element.tagName === 'OPTION') {
element.textContent = translation;
} else {
element.textContent = translation;
}
});
document.querySelectorAll('label[data-translate]').forEach(label => {
const key = label.getAttribute('data-translate');
const translation = getTranslation(key, lang);
const checkbox = label.querySelector('input[type="checkbox"]');
if (checkbox) {
label.childNodes.forEach(node => {
if (node.nodeType === 3) {
node.textContent = translation;
}
});
}
});
}
document.addEventListener('DOMContentLoaded', () => {
setTimeout(() => {
translatePage();
}, 100);
});