@jjlmoya/utils-motor 1.13.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -1
  3. package/src/entries.ts +4 -1
  4. package/src/tests/locale_completeness.test.ts +1 -1
  5. package/src/tests/mfe_assets_contract.test.ts +6 -1
  6. package/src/tests/registry_contract.test.ts +23 -0
  7. package/src/tests/tool_validation.test.ts +1 -1
  8. package/src/tool/vehicleTotalCostPerKilometreCalculator/bibliography.astro +6 -0
  9. package/src/tool/vehicleTotalCostPerKilometreCalculator/bibliography.ts +12 -0
  10. package/src/tool/vehicleTotalCostPerKilometreCalculator/component.astro +97 -0
  11. package/src/tool/vehicleTotalCostPerKilometreCalculator/controller.ts +198 -0
  12. package/src/tool/vehicleTotalCostPerKilometreCalculator/dom-views.ts +47 -0
  13. package/src/tool/vehicleTotalCostPerKilometreCalculator/entry.ts +30 -0
  14. package/src/tool/vehicleTotalCostPerKilometreCalculator/evaluator.ts +14 -0
  15. package/src/tool/vehicleTotalCostPerKilometreCalculator/i18n/de.ts +30 -0
  16. package/src/tool/vehicleTotalCostPerKilometreCalculator/i18n/en.ts +48 -0
  17. package/src/tool/vehicleTotalCostPerKilometreCalculator/i18n/es.ts +30 -0
  18. package/src/tool/vehicleTotalCostPerKilometreCalculator/i18n/factory.ts +102 -0
  19. package/src/tool/vehicleTotalCostPerKilometreCalculator/i18n/fr.ts +30 -0
  20. package/src/tool/vehicleTotalCostPerKilometreCalculator/i18n/id.ts +30 -0
  21. package/src/tool/vehicleTotalCostPerKilometreCalculator/i18n/it.ts +30 -0
  22. package/src/tool/vehicleTotalCostPerKilometreCalculator/i18n/ja.ts +30 -0
  23. package/src/tool/vehicleTotalCostPerKilometreCalculator/i18n/ko.ts +30 -0
  24. package/src/tool/vehicleTotalCostPerKilometreCalculator/i18n/nl.ts +30 -0
  25. package/src/tool/vehicleTotalCostPerKilometreCalculator/i18n/pl.ts +30 -0
  26. package/src/tool/vehicleTotalCostPerKilometreCalculator/i18n/pt.ts +30 -0
  27. package/src/tool/vehicleTotalCostPerKilometreCalculator/i18n/ru.ts +30 -0
  28. package/src/tool/vehicleTotalCostPerKilometreCalculator/i18n/sv.ts +30 -0
  29. package/src/tool/vehicleTotalCostPerKilometreCalculator/i18n/tr.ts +30 -0
  30. package/src/tool/vehicleTotalCostPerKilometreCalculator/i18n/zh.ts +30 -0
  31. package/src/tool/vehicleTotalCostPerKilometreCalculator/index.ts +10 -0
  32. package/src/tool/vehicleTotalCostPerKilometreCalculator/logic.test.ts +63 -0
  33. package/src/tool/vehicleTotalCostPerKilometreCalculator/logic.ts +132 -0
  34. package/src/tool/vehicleTotalCostPerKilometreCalculator/seo.astro +15 -0
  35. package/src/tool/vehicleTotalCostPerKilometreCalculator/storage.ts +38 -0
  36. package/src/tool/vehicleTotalCostPerKilometreCalculator/ui.ts +54 -0
  37. package/src/tool/vehicleTotalCostPerKilometreCalculator/vehicle-total-cost-per-kilometre-calculator.css +417 -0
  38. package/src/tools.ts +4 -1
@@ -0,0 +1,48 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliographyEntries } from '../bibliography';
4
+ import type { VehicleTotalCostPerKilometreCalculatorUI } from '../ui';
5
+
6
+ const ui: VehicleTotalCostPerKilometreCalculatorUI = {
7
+ presetLabel: 'Start with a realistic pattern', presetCity: 'Mostly city', presetBalanced: 'Mixed driving', presetLongDistance: 'Long distance', resetLabel: 'Reset values',
8
+ primaryScenarioLabel: 'Your vehicle', comparisonScenarioLabel: 'Second scenario', distanceLabel: 'Distance each year', distanceHint: 'Use the distance you expect to drive in a year', fuelUseLabel: 'Fuel use', fuelUseHint: 'Your vehicle average in litres per 100 km', fuelPriceLabel: 'Fuel price', fuelPriceHint: 'Price paid per litre', insuranceLabel: 'Insurance per year', insuranceHint: 'Your actual annual premium', maintenanceLabel: 'Maintenance per year', maintenanceHint: 'Servicing, repairs, tyres and inspections', taxLabel: 'Tax and fees per year', taxHint: 'Road tax, registration and recurring fees', depreciationLabel: 'Value lost per year', depreciationHint: 'Your estimate of purchase value lost during one year', currencyLabel: 'Currency', compareLabel: 'Compare another scenario', compareOnLabel: 'Comparison on', compareOffLabel: 'Add comparison', removeComparisonLabel: 'Hide comparison', resultLabel: 'The cost road', resultTitle: 'What each kilometre really costs', resultSceneLabel: 'A road showing fixed ownership costs and fuel costs joining at the cost per kilometre', costPerKmLabel: 'Cost per kilometre', monthlyCostLabel: 'Average month', annualCostLabel: 'Full year', fuelCostLabel: 'Fuel each year', fixedCostLabel: 'Fixed and ownership costs', statusBalanced: 'Costs are spread across the road', statusFixedHeavy: 'Ownership costs carry most of the road', statusRunningHeavy: 'Fuel carries most of the road', validationError: 'Enter a positive annual distance and non negative values for every cost.', comparisonTitle: 'Scenario comparison', comparisonPrimaryCheaper: 'Your vehicle is cheaper by', comparisonSecondaryCheaper: 'The second scenario is cheaper by', comparisonSame: 'Both scenarios cost about the same', fixedLaneLabel: 'Fixed', fuelLaneLabel: 'Fuel', totalLaneLabel: 'All in', formulaLabel: 'Calculation', formulaText: 'Annual cost = annual distance × fuel use ÷ 100 × fuel price + insurance + maintenance + tax + value lost. Cost per kilometre = annual cost ÷ annual distance.', inputUnitDistance: 'km', inputUnitFuelUse: 'L / 100 km', inputUnitFuelPrice: '/ L', inputUnitAnnualCost: '/ year', outputUnitDistance: 'km',
9
+ };
10
+
11
+ const faq = [
12
+ { question: 'What does this vehicle cost per kilometre calculator include?', answer: 'It combines fuel with insurance, maintenance, tax and fees, and the value you expect the vehicle to lose during the year. You enter your own figures, so the result reflects your vehicle and driving pattern rather than an average model.' },
13
+ { question: 'Why is the result higher than a fuel cost calculator?', answer: 'Fuel is only the running part of owning a vehicle. A car can use little fuel and still be expensive per kilometre when depreciation, insurance, repairs or annual fees are spread across a modest distance.' },
14
+ { question: 'How should I estimate depreciation?', answer: 'Use a defensible annual estimate: subtract the value you expect at the end of the year from the value at the start, then include only the part relevant to the period you are analysing. If you do not know it, run a low and high case instead of treating an invented number as a fact.' },
15
+ { question: 'Can I compare two vehicles with this tool?', answer: 'Yes. Calculate your main vehicle, choose Add comparison, enter the second scenario, and compare the two cost per kilometre figures. The comparison is only as useful as the assumptions entered for both vehicles.' },
16
+ { question: 'Does the result predict the exact cost of a future journey?', answer: 'No. It is an ownership planning estimate. Fuel prices, repairs, resale value, driving distance and unexpected costs can change. Use it to compare assumptions consistently, then replace estimates with your own records when you have them.' },
17
+ ];
18
+
19
+ const howTo = [
20
+ { name: 'Set the distance', text: 'Enter the kilometres you expect to drive in one year. Fixed costs are spread across this distance.' },
21
+ { name: 'Add fuel assumptions', text: 'Enter fuel use in litres per 100 kilometres and the price you pay per litre.' },
22
+ { name: 'Add annual ownership costs', text: 'Enter insurance, maintenance, tax and fees, and your estimate of annual value lost.' },
23
+ { name: 'Read or compare the result', text: 'Use the cost per kilometre as the main comparison, then inspect the fixed and fuel portions before changing an assumption.' },
24
+ ];
25
+
26
+ const schemas: ToolLocaleContent<VehicleTotalCostPerKilometreCalculatorUI>['schemas'] = [
27
+ { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) } as WithContext<FAQPage>,
28
+ { '@context': 'https://schema.org', '@type': 'HowTo', name: 'Calculate the total cost per kilometre of a vehicle', description: 'Combine fuel and annual ownership costs to estimate a vehicle cost per kilometre.', step: howTo.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })) } as WithContext<HowTo>,
29
+ { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Vehicle Total Cost per Kilometre Calculator', description: 'Estimate a vehicle total cost per kilometre from fuel and annual ownership costs in your browser.', applicationCategory: 'UtilitiesApplication', operatingSystem: 'All', offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' }, inLanguage: 'en' } as WithContext<SoftwareApplication>,
30
+ ];
31
+
32
+ export const content: ToolLocaleContent<VehicleTotalCostPerKilometreCalculatorUI> = {
33
+ slug: 'vehicle-total-cost-per-kilometre-calculator', title: 'Vehicle Total Cost per Kilometre Calculator', description: 'Calculate the real cost of running a vehicle per kilometre by combining fuel, ownership costs and annual distance.', ui, faqTitle: 'Frequently asked questions', faq, howTo, bibliographyTitle: 'Bibliographic references', bibliography: bibliographyEntries, schemas,
34
+ seo: [
35
+ { type: 'title', text: 'See the Cost Hidden Behind Each Kilometre', level: 2 },
36
+ { type: 'paragraph', html: 'A fuel price alone cannot tell you what a vehicle costs to use. Insurance, servicing, tyres, taxes and the value the vehicle loses while you own it are also part of the decision. This calculator spreads those annual costs across the distance you expect to drive and puts them beside the fuel bill.' },
37
+ { type: 'paragraph', html: 'Enter your own numbers instead of relying on a generic average. The main output is a cost per kilometre, supported by a monthly estimate, a full year total, and a visual split between fixed ownership costs and fuel. You can activate a second scenario when you want to compare two vehicles or two driving patterns.' },
38
+ { type: 'title', text: 'Which Costs Belong in the Estimate', level: 2 },
39
+ { type: 'paragraph', html: 'The model has one variable stream and four annual streams. Fuel changes with distance, while insurance, maintenance, tax and depreciation are entered as yearly amounts. A low annual distance makes fixed costs heavier per kilometre; a high distance spreads them more thinly.' },
40
+ { type: 'table', headers: ['Input', 'How the calculator uses it', 'What to check'], rows: [['Annual distance', 'Divides the annual total into a cost per kilometre', 'Use a realistic distance for the period you are comparing'], ['Fuel use and price', 'Creates the variable fuel cost', 'Use the same unit and price basis for both scenarios'], ['Insurance, maintenance, tax and fees', 'Adds recurring annual ownership costs', 'Include costs you would otherwise forget when comparing vehicles'], ['Value lost', 'Adds an annual depreciation estimate', 'Test a range when the resale value is uncertain']] },
41
+ { type: 'title', text: 'How to Read the Road', level: 2 },
42
+ { type: 'paragraph', html: 'The fixed section shows costs that do not rise directly with each kilometre. The fuel section shows the distance sensitive part. The joined endpoint is the all in cost per kilometre, so it is the number to compare when the same type of distance is entered for both scenarios.' },
43
+ { type: 'list', items: ['Run a conservative and an optimistic depreciation estimate when resale value is uncertain.', 'Compare vehicles using the same annual distance and the same currency basis.', 'Replace estimates with your own fuel, repair and insurance records after a few months of use.', 'Use the monthly and annual totals to check whether the result fits your real budget, not only whether the per kilometre figure looks small.'] },
44
+ { type: 'title', text: 'Use Comparisons to Test a Decision', level: 2 },
45
+ { type: 'paragraph', html: 'A comparison is useful only when the assumptions describe the same ownership period. If one scenario uses a short annual distance or leaves out depreciation, its cost per kilometre will look artificially low. Keep the input rules visible and change one assumption at a time when you are investigating a purchase or a regular route.' },
46
+ { type: 'tip', title: 'This is a planning model, not a quote', html: 'The result does not look up market prices, certify a legal expense allowance, predict a repair bill, or know the future resale value of a vehicle. It is most useful as a transparent comparison of your own assumptions.' },
47
+ ],
48
+ };
@@ -0,0 +1,30 @@
1
+ import type { FAQItem, HowToStep } from '../../../types';
2
+ import { createVehicleCostContent, createVehicleCostSeo } from './factory';
3
+ import type { VehicleTotalCostPerKilometreCalculatorUI } from '../ui';
4
+
5
+ const ui: VehicleTotalCostPerKilometreCalculatorUI = {
6
+ presetLabel: 'Empieza con un patrón realista', presetCity: 'Mayormente ciudad', presetBalanced: 'Conducción mixta', presetLongDistance: 'Larga distancia', resetLabel: 'Restablecer valores',
7
+ primaryScenarioLabel: 'Tu vehículo', comparisonScenarioLabel: 'Segundo escenario', distanceLabel: 'Distancia al año', distanceHint: 'Usa los kilómetros que esperas conducir en un año', fuelUseLabel: 'Consumo', fuelUseHint: 'Media de tu vehículo en litros por 100 km', fuelPriceLabel: 'Precio del combustible', fuelPriceHint: 'Precio pagado por litro', insuranceLabel: 'Seguro al año', insuranceHint: 'Tu prima anual real', maintenanceLabel: 'Mantenimiento al año', maintenanceHint: 'Revisiones, reparaciones, neumáticos e inspecciones', taxLabel: 'Impuestos y tasas al año', taxHint: 'Impuesto de circulación, matriculación y tasas recurrentes', depreciationLabel: 'Pérdida de valor al año', depreciationHint: 'Tu estimación del valor que pierde durante un año', currencyLabel: 'Moneda', compareLabel: 'Comparar otro escenario', compareOnLabel: 'Comparación activa', compareOffLabel: 'Añadir comparación', removeComparisonLabel: 'Ocultar comparación', resultLabel: 'La carretera del coste', resultTitle: 'Lo que cuesta realmente cada kilómetro', resultSceneLabel: 'Una carretera muestra los costes fijos y de combustible hasta llegar al coste por kilómetro', costPerKmLabel: 'Coste por kilómetro', monthlyCostLabel: 'Media mensual', annualCostLabel: 'Año completo', fuelCostLabel: 'Combustible al año', fixedCostLabel: 'Costes fijos y de propiedad', statusBalanced: 'Los costes se reparten por la carretera', statusFixedHeavy: 'Los costes de propiedad pesan más', statusRunningHeavy: 'El combustible pesa más', validationError: 'Introduce una distancia anual positiva y valores no negativos para cada coste.', comparisonTitle: 'Comparación de escenarios', comparisonPrimaryCheaper: 'Tu vehículo es más barato por', comparisonSecondaryCheaper: 'El segundo escenario es más barato por', comparisonSame: 'Los dos escenarios cuestan aproximadamente lo mismo', fixedLaneLabel: 'Fijo', fuelLaneLabel: 'Combustible', totalLaneLabel: 'Total', formulaLabel: 'Cálculo', formulaText: 'Coste anual = distancia anual × consumo ÷ 100 × precio del combustible + seguro + mantenimiento + impuestos + pérdida de valor. Coste por kilómetro = coste anual ÷ distancia anual.', inputUnitDistance: 'km', inputUnitFuelUse: 'L / 100 km', inputUnitFuelPrice: '/ L', inputUnitAnnualCost: '/ año', outputUnitDistance: 'km',
8
+ };
9
+
10
+ const faq: FAQItem[] = [
11
+ { question: '¿Qué incluye esta calculadora de coste por kilómetro?', answer: 'Combina combustible, seguro, mantenimiento, impuestos y tasas, y la pérdida de valor que calcules para el año. Tú introduces los datos para que el resultado represente tu vehículo y tu uso.' },
12
+ { question: '¿Por qué sale más que en una calculadora de combustible?', answer: 'El combustible solo es la parte variable. Un vehículo puede consumir poco y seguir siendo caro por kilómetro si tiene seguro, reparaciones, tasas o depreciación elevadas.' },
13
+ { question: '¿Cómo calculo la depreciación?', answer: 'Resta el valor que esperas al final del año al valor de inicio. Si no conoces el precio de reventa, prueba un escenario bajo y otro alto.' },
14
+ { question: '¿Puedo comparar dos vehículos?', answer: 'Sí. Activa la comparación, introduce el segundo escenario y usa la misma distancia anual, periodo y moneda en ambos.' },
15
+ { question: '¿Predice el coste exacto de un viaje?', answer: 'No. Es una estimación de planificación. Los precios, las averías, la distancia y el valor de reventa pueden cambiar.' },
16
+ ];
17
+
18
+ const howTo: HowToStep[] = [
19
+ { name: 'Define la distancia anual', text: 'Introduce los kilómetros que esperas recorrer durante un año.' },
20
+ { name: 'Añade el combustible', text: 'Indica el consumo en litros por 100 kilómetros y el precio por litro.' },
21
+ { name: 'Añade los costes de propiedad', text: 'Incluye seguro, mantenimiento, impuestos, tasas y pérdida de valor.' },
22
+ { name: 'Lee o compara', text: 'Usa el coste por kilómetro como referencia y revisa el reparto entre costes fijos y combustible.' },
23
+ ];
24
+
25
+ export const content = createVehicleCostContent({
26
+ locale: 'es', slug: 'calculadora-coste-total-coche-por-kilometro', title: 'Calculadora del coste total de un vehículo por kilómetro', description: 'Calcula el coste real de usar un vehículo por kilómetro combinando combustible, propiedad y distancia anual.', faqTitle: 'Preguntas frecuentes', bibliographyTitle: 'Referencias bibliográficas', ui, faq, howTo,
27
+ seo: createVehicleCostSeo({
28
+ introTitle: 'Descubre el coste oculto detrás de cada kilómetro', introA: 'El precio del combustible no explica por sí solo cuánto cuesta usar un vehículo. El seguro, las revisiones, los neumáticos, los impuestos y el valor que pierde también forman parte de la decisión. Esta calculadora reparte esos costes anuales entre los kilómetros que esperas conducir y los coloca junto al gasto de combustible.', introB: 'Introduce tus propios datos en lugar de confiar en una media genérica. El resultado principal es el coste por kilómetro, acompañado por una estimación mensual, otra anual y una separación visual entre los costes fijos y el combustible.', costsTitle: 'Qué costes debes incluir', costsText: 'El combustible cambia con la distancia, mientras que el seguro, el mantenimiento, las tasas y la depreciación se introducen como cantidades anuales. Con pocos kilómetros al año, los costes fijos pesan más en cada kilómetro.', costsHeaders: ['Entrada', 'Cómo se usa', 'Qué revisar'], costsRows: [['Distancia anual', 'Reparte el total anual por kilómetro', 'Usa una distancia realista'], ['Consumo y precio', 'Calculan el coste variable del combustible', 'Mantén la misma base en ambos escenarios'], ['Seguro, mantenimiento e impuestos', 'Suman los costes recurrentes', 'Incluye neumáticos, revisiones y tasas'], ['Pérdida de valor', 'Añade una depreciación anual', 'Prueba varios valores de reventa']], readTitle: 'Cómo leer la carretera del coste', readText: 'La parte fija muestra los gastos que no suben directamente con cada kilómetro. La parte de combustible representa el tramo sensible a la distancia. El punto final es el coste completo por kilómetro que debes comparar.', list: ['Prueba una depreciación optimista y otra conservadora.', 'Compara vehículos con la misma distancia anual y moneda.', 'Sustituye las estimaciones por tus facturas cuando tengas datos reales.', 'Comprueba si los totales mensuales y anuales encajan con tu presupuesto.'], decisionTitle: 'Usa la comparación para tomar decisiones', decisionText: 'Comparar solo sirve si los dos escenarios describen el mismo periodo de propiedad. Mantén las mismas reglas y cambia una sola hipótesis cada vez cuando analices una compra o una ruta habitual.', tipTitle: 'Es un modelo de planificación, no un presupuesto', tipText: 'No consulta precios de mercado, no certifica deducciones y no conoce el valor futuro de reventa. Su utilidad está en hacer transparentes tus propias hipótesis.'
29
+ }),
30
+ });
@@ -0,0 +1,102 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import type { FAQItem, HowToStep, ToolLocaleContent } from '../../../types';
3
+ import { bibliographyEntries } from '../bibliography';
4
+ import type { VehicleTotalCostPerKilometreCalculatorUI } from '../ui';
5
+
6
+ export interface VehicleCostLocaleBundle {
7
+ locale: string;
8
+ slug: string;
9
+ title: string;
10
+ description: string;
11
+ faqTitle: string;
12
+ bibliographyTitle: string;
13
+ ui: VehicleTotalCostPerKilometreCalculatorUI;
14
+ faq: FAQItem[];
15
+ howTo: HowToStep[];
16
+ seo: ToolLocaleContent<VehicleTotalCostPerKilometreCalculatorUI>['seo'];
17
+ }
18
+
19
+ export interface VehicleCostSeoCopy {
20
+ introTitle: string;
21
+ introA: string;
22
+ introB: string;
23
+ costsTitle: string;
24
+ costsText: string;
25
+ costsHeaders: [string, string, string];
26
+ costsRows: [string, string, string][];
27
+ readTitle: string;
28
+ readText: string;
29
+ list: string[];
30
+ decisionTitle: string;
31
+ decisionText: string;
32
+ tipTitle: string;
33
+ tipText: string;
34
+ }
35
+
36
+ export function createVehicleCostSeo(copy: VehicleCostSeoCopy): VehicleCostLocaleBundle['seo'] {
37
+ return [
38
+ { type: 'title', text: copy.introTitle, level: 2 },
39
+ { type: 'paragraph', html: copy.introA },
40
+ { type: 'paragraph', html: copy.introB },
41
+ { type: 'title', text: copy.costsTitle, level: 2 },
42
+ { type: 'paragraph', html: copy.costsText },
43
+ { type: 'table', headers: copy.costsHeaders, rows: copy.costsRows },
44
+ { type: 'title', text: copy.readTitle, level: 2 },
45
+ { type: 'paragraph', html: copy.readText },
46
+ { type: 'list', items: copy.list },
47
+ { type: 'title', text: copy.decisionTitle, level: 2 },
48
+ { type: 'paragraph', html: copy.decisionText },
49
+ { type: 'tip', title: copy.tipTitle, html: copy.tipText },
50
+ ];
51
+ }
52
+
53
+ function createSchemas(data: VehicleCostLocaleBundle): ToolLocaleContent<VehicleTotalCostPerKilometreCalculatorUI>['schemas'] {
54
+ const faqSchema: WithContext<FAQPage> = {
55
+ '@context': 'https://schema.org',
56
+ '@type': 'FAQPage',
57
+ mainEntity: data.faq.map((item) => ({
58
+ '@type': 'Question',
59
+ name: item.question,
60
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
61
+ })),
62
+ };
63
+ const howToSchema: WithContext<HowTo> = {
64
+ '@context': 'https://schema.org',
65
+ '@type': 'HowTo',
66
+ name: data.title,
67
+ description: data.description,
68
+ step: data.howTo.map((step, index) => ({
69
+ '@type': 'HowToStep',
70
+ position: index + 1,
71
+ name: step.name,
72
+ text: step.text,
73
+ })),
74
+ };
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: data.title,
79
+ description: data.description,
80
+ applicationCategory: 'UtilitiesApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
+ inLanguage: data.locale,
84
+ };
85
+ return [faqSchema, howToSchema, appSchema];
86
+ }
87
+
88
+ export function createVehicleCostContent(data: VehicleCostLocaleBundle): ToolLocaleContent<VehicleTotalCostPerKilometreCalculatorUI> {
89
+ return {
90
+ slug: data.slug,
91
+ title: data.title,
92
+ description: data.description,
93
+ faqTitle: data.faqTitle,
94
+ bibliographyTitle: data.bibliographyTitle,
95
+ ui: data.ui,
96
+ faq: data.faq,
97
+ howTo: data.howTo,
98
+ bibliography: bibliographyEntries,
99
+ schemas: createSchemas(data),
100
+ seo: data.seo,
101
+ };
102
+ }
@@ -0,0 +1,30 @@
1
+ import type { FAQItem, HowToStep } from '../../../types';
2
+ import { createVehicleCostContent, createVehicleCostSeo } from './factory';
3
+ import type { VehicleTotalCostPerKilometreCalculatorUI } from '../ui';
4
+
5
+ const ui: VehicleTotalCostPerKilometreCalculatorUI = {
6
+ presetLabel: 'Commencer avec un profil réaliste', presetCity: 'Surtout en ville', presetBalanced: 'Trajets mixtes', presetLongDistance: 'Longue distance', resetLabel: 'Réinitialiser les valeurs',
7
+ primaryScenarioLabel: 'Votre véhicule', comparisonScenarioLabel: 'Deuxième scénario', distanceLabel: 'Distance annuelle', distanceHint: 'Indiquez la distance que vous pensez parcourir en un an', fuelUseLabel: 'Consommation', fuelUseHint: 'Moyenne de votre véhicule en litres par 100 km', fuelPriceLabel: 'Prix du carburant', fuelPriceHint: 'Prix payé par litre', insuranceLabel: 'Assurance par an', insuranceHint: 'Votre prime annuelle réelle', maintenanceLabel: 'Entretien par an', maintenanceHint: 'Révisions, réparations, pneus et contrôles', taxLabel: 'Taxes et frais par an', taxHint: 'Taxe routière, immatriculation et frais récurrents', depreciationLabel: 'Perte de valeur par an', depreciationHint: 'Estimation de la valeur perdue pendant une année', currencyLabel: 'Devise', compareLabel: 'Comparer un scénario', compareOnLabel: 'Comparaison active', compareOffLabel: 'Ajouter une comparaison', removeComparisonLabel: 'Masquer la comparaison', resultLabel: 'La route des coûts', resultTitle: 'Le vrai coût de chaque kilomètre', resultSceneLabel: 'Une route montre les coûts fixes et le carburant jusqu au coût par kilomètre', costPerKmLabel: 'Coût par kilomètre', monthlyCostLabel: 'Moyenne mensuelle', annualCostLabel: 'Année complète', fuelCostLabel: 'Carburant par an', fixedCostLabel: 'Coûts fixes et de possession', statusBalanced: 'Les coûts se répartissent sur la route', statusFixedHeavy: 'Les coûts de possession dominent', statusRunningHeavy: 'Le carburant domine', validationError: 'Saisissez une distance annuelle positive et des coûts non négatifs.', comparisonTitle: 'Comparaison des scénarios', comparisonPrimaryCheaper: 'Votre véhicule coûte moins cher de', comparisonSecondaryCheaper: 'Le deuxième scénario coûte moins cher de', comparisonSame: 'Les deux scénarios coûtent à peu près la même chose', fixedLaneLabel: 'Fixe', fuelLaneLabel: 'Carburant', totalLaneLabel: 'Total', formulaLabel: 'Calcul', formulaText: 'Coût annuel = distance annuelle × consommation ÷ 100 × prix du carburant + assurance + entretien + taxes + perte de valeur. Coût par kilomètre = coût annuel ÷ distance annuelle.', inputUnitDistance: 'km', inputUnitFuelUse: 'L / 100 km', inputUnitFuelPrice: '/ L', inputUnitAnnualCost: '/ an', outputUnitDistance: 'km',
8
+ };
9
+
10
+ const faq: FAQItem[] = [
11
+ { question: 'Que comprend ce calculateur de coût par kilomètre ?', answer: 'Il combine le carburant, l assurance, l entretien, les taxes et frais, ainsi que la perte de valeur estimée pendant l année. Vous saisissez vos propres chiffres pour représenter votre véhicule.' },
12
+ { question: 'Pourquoi le résultat dépasse-t-il celui d un calculateur de carburant ?', answer: 'Le carburant n est que la partie variable. L assurance, les réparations, les frais annuels et la dépréciation peuvent rendre un véhicule coûteux par kilomètre même avec une faible consommation.' },
13
+ { question: 'Comment estimer la dépréciation ?', answer: 'Soustrayez la valeur attendue en fin d année de la valeur de départ. Si la revente est incertaine, testez une hypothèse basse et une hypothèse haute.' },
14
+ { question: 'Puis-je comparer deux véhicules ?', answer: 'Oui. Activez la comparaison et utilisez la même distance annuelle, la même période et la même devise dans les deux scénarios.' },
15
+ { question: 'Le résultat prédit-il le coût exact d un trajet ?', answer: 'Non. Il s agit d une estimation de planification. Les prix, les réparations, la distance et la revente peuvent évoluer.' },
16
+ ];
17
+
18
+ const howTo: HowToStep[] = [
19
+ { name: 'Définir la distance annuelle', text: 'Saisissez le nombre de kilomètres prévu sur une année.' },
20
+ { name: 'Ajouter le carburant', text: 'Indiquez la consommation en litres par 100 kilomètres et le prix au litre.' },
21
+ { name: 'Ajouter les coûts de possession', text: 'Ajoutez assurance, entretien, taxes, frais et perte de valeur.' },
22
+ { name: 'Lire ou comparer', text: 'Utilisez le coût par kilomètre puis examinez la part fixe et la part carburant.' },
23
+ ];
24
+
25
+ export const content = createVehicleCostContent({
26
+ locale: 'fr', slug: 'calculateur-cout-total-vehicule-par-kilometre', title: 'Calculateur du coût total d un véhicule par kilomètre', description: 'Calculez le coût réel d un véhicule par kilomètre avec le carburant, la possession et la distance annuelle.', faqTitle: 'Questions fréquentes', bibliographyTitle: 'Références bibliographiques', ui, faq, howTo,
27
+ seo: createVehicleCostSeo({
28
+ introTitle: 'Voir le coût caché derrière chaque kilomètre', introA: 'Le prix du carburant ne suffit pas pour connaître le coût d un véhicule. Assurance, entretien, pneus, taxes et perte de valeur comptent aussi. Ce calculateur répartit ces coûts annuels sur la distance prévue et les compare à la dépense de carburant.', introB: 'Entrez vos propres chiffres plutôt qu une moyenne générale. Le résultat principal est le coût par kilomètre, accompagné d une estimation mensuelle, annuelle et d une séparation visuelle entre possession et carburant.', costsTitle: 'Quels coûts inclure dans l estimation', costsText: 'Le carburant varie avec la distance. L assurance, l entretien, les frais et la dépréciation sont saisis comme des montants annuels. Une faible distance annuelle rend les coûts fixes plus lourds par kilomètre.', costsHeaders: ['Entrée', 'Utilisation', 'À vérifier'], costsRows: [['Distance annuelle', 'Répartit le total sur les kilomètres', 'Choisissez une distance réaliste'], ['Consommation et prix', 'Créent le coût variable du carburant', 'Gardez la même base pour les scénarios'], ['Assurance, entretien et taxes', 'Ajoutent les coûts récurrents', 'N oubliez pas pneus et contrôles'], ['Perte de valeur', 'Ajoute une dépréciation annuelle', 'Testez plusieurs valeurs de revente']], readTitle: 'Lire la route des coûts', readText: 'La section fixe montre les coûts qui ne progressent pas directement avec chaque kilomètre. La section carburant montre la part dépendante de la distance. Le point final est le coût total à comparer.', list: ['Testez une dépréciation prudente et une dépréciation optimiste.', 'Comparez les véhicules avec la même distance annuelle et la même devise.', 'Remplacez les estimations par vos factures après quelques mois.', 'Vérifiez les totaux mensuels et annuels contre votre budget.'], decisionTitle: 'Comparer pour mieux décider', decisionText: 'Une comparaison n est utile que si les deux scénarios couvrent la même période et les mêmes règles. Ne changez qu une hypothèse à la fois pour étudier un achat ou un trajet régulier.', tipTitle: 'Un modèle de planification, pas un devis', tipText: 'Le calculateur ne consulte pas les prix du marché, ne certifie pas une dépense légale et ne connaît pas la valeur future du véhicule. Il rend vos hypothèses comparables.'
29
+ }),
30
+ });
@@ -0,0 +1,30 @@
1
+ import type { FAQItem, HowToStep } from '../../../types';
2
+ import { createVehicleCostContent, createVehicleCostSeo } from './factory';
3
+ import type { VehicleTotalCostPerKilometreCalculatorUI } from '../ui';
4
+
5
+ const ui: VehicleTotalCostPerKilometreCalculatorUI = {
6
+ presetLabel: 'Mulai dari pola yang realistis', presetCity: 'Kebanyakan kota', presetBalanced: 'Perjalanan campuran', presetLongDistance: 'Jarak jauh', resetLabel: 'Atur ulang nilai',
7
+ primaryScenarioLabel: 'Kendaraan Anda', comparisonScenarioLabel: 'Skenario kedua', distanceLabel: 'Jarak per tahun', distanceHint: 'Gunakan jarak yang Anda perkirakan dalam satu tahun', fuelUseLabel: 'Konsumsi bahan bakar', fuelUseHint: 'Rata-rata kendaraan dalam liter per 100 km', fuelPriceLabel: 'Harga bahan bakar', fuelPriceHint: 'Harga yang dibayar per liter', insuranceLabel: 'Asuransi per tahun', insuranceHint: 'Premi tahunan Anda yang sebenarnya', maintenanceLabel: 'Perawatan per tahun', maintenanceHint: 'Servis, perbaikan, ban, dan pemeriksaan', taxLabel: 'Pajak dan biaya per tahun', taxHint: 'Pajak jalan, pendaftaran, dan biaya rutin', depreciationLabel: 'Nilai yang hilang per tahun', depreciationHint: 'Perkiraan nilai kendaraan yang hilang selama satu tahun', currencyLabel: 'Mata uang', compareLabel: 'Bandingkan skenario lain', compareOnLabel: 'Perbandingan aktif', compareOffLabel: 'Tambah perbandingan', removeComparisonLabel: 'Sembunyikan perbandingan', resultLabel: 'Jalur biaya', resultTitle: 'Biaya sebenarnya untuk setiap kilometer', resultSceneLabel: 'Jalur menunjukkan biaya kepemilikan tetap dan bahan bakar menuju biaya per kilometer', costPerKmLabel: 'Biaya per kilometer', monthlyCostLabel: 'Rata-rata bulanan', annualCostLabel: 'Total setahun', fuelCostLabel: 'Bahan bakar per tahun', fixedCostLabel: 'Biaya tetap dan kepemilikan', statusBalanced: 'Biaya tersebar sepanjang perjalanan', statusFixedHeavy: 'Biaya kepemilikan menjadi bagian terbesar', statusRunningHeavy: 'Bahan bakar menjadi bagian terbesar', validationError: 'Masukkan jarak tahunan positif dan biaya yang tidak negatif.', comparisonTitle: 'Perbandingan skenario', comparisonPrimaryCheaper: 'Kendaraan Anda lebih murah sebesar', comparisonSecondaryCheaper: 'Skenario kedua lebih murah sebesar', comparisonSame: 'Kedua skenario biayanya hampir sama', fixedLaneLabel: 'Tetap', fuelLaneLabel: 'Bahan bakar', totalLaneLabel: 'Total', formulaLabel: 'Perhitungan', formulaText: 'Biaya tahunan = jarak tahunan × konsumsi ÷ 100 × harga bahan bakar + asuransi + perawatan + pajak + nilai yang hilang. Biaya per kilometer = biaya tahunan ÷ jarak tahunan.', inputUnitDistance: 'km', inputUnitFuelUse: 'L / 100 km', inputUnitFuelPrice: '/ L', inputUnitAnnualCost: '/ tahun', outputUnitDistance: 'km',
8
+ };
9
+
10
+ const faq: FAQItem[] = [
11
+ { question: 'Apa saja yang termasuk dalam kalkulator biaya per kilometer ini?', answer: 'Kalkulator menggabungkan bahan bakar, asuransi, perawatan, pajak dan biaya, serta nilai kendaraan yang hilang selama satu tahun. Anda memasukkan angka sendiri agar hasil sesuai kendaraan Anda.' },
12
+ { question: 'Mengapa hasilnya lebih tinggi daripada kalkulator bahan bakar?', answer: 'Bahan bakar hanya bagian yang berubah mengikuti jarak. Asuransi, perbaikan, biaya tahunan, dan penyusutan juga harus dibagi ke setiap kilometer.' },
13
+ { question: 'Bagaimana cara memperkirakan penyusutan?', answer: 'Kurangi nilai yang diperkirakan pada akhir tahun dari nilai awal. Jika tidak yakin, coba perkiraan rendah dan tinggi.' },
14
+ { question: 'Bisakah saya membandingkan dua kendaraan?', answer: 'Bisa. Aktifkan perbandingan dan gunakan jarak tahunan, periode, serta mata uang yang sama.' },
15
+ { question: 'Apakah hasilnya memprediksi biaya perjalanan secara tepat?', answer: 'Tidak. Ini adalah perkiraan perencanaan. Harga, perbaikan, jarak, dan nilai jual kembali dapat berubah.' },
16
+ ];
17
+
18
+ const howTo: HowToStep[] = [
19
+ { name: 'Tetapkan jarak tahunan', text: 'Masukkan kilometer yang Anda perkirakan akan ditempuh selama satu tahun.' },
20
+ { name: 'Tambahkan bahan bakar', text: 'Masukkan konsumsi liter per 100 kilometer dan harga per liter.' },
21
+ { name: 'Tambahkan biaya kepemilikan', text: 'Masukkan asuransi, perawatan, pajak, biaya, dan nilai yang hilang.' },
22
+ { name: 'Baca atau bandingkan hasil', text: 'Gunakan biaya per kilometer lalu periksa bagian tetap dan bahan bakar.' },
23
+ ];
24
+
25
+ export const content = createVehicleCostContent({
26
+ locale: 'id', slug: 'kalkulator-total-biaya-kendaraan-per-kilometer', title: 'Kalkulator Total Biaya Kendaraan per Kilometer', description: 'Hitung biaya nyata kendaraan per kilometer dengan menggabungkan bahan bakar, biaya kepemilikan, dan jarak tahunan.', faqTitle: 'Pertanyaan umum', bibliographyTitle: 'Referensi bibliografi', ui, faq, howTo,
27
+ seo: createVehicleCostSeo({
28
+ introTitle: 'Lihat biaya tersembunyi di balik setiap kilometer', introA: 'Harga bahan bakar saja tidak menunjukkan biaya sebenarnya menggunakan kendaraan. Asuransi, servis, ban, pajak, dan nilai kendaraan yang berkurang juga penting. Kalkulator ini membagi biaya tahunan tersebut berdasarkan jarak yang Anda tempuh dan menampilkannya bersama biaya bahan bakar.', introB: 'Masukkan angka kendaraan Anda sendiri, bukan rata-rata umum. Hasil utama adalah biaya per kilometer, dengan perkiraan bulanan, tahunan, dan pembagian visual antara biaya tetap dan bahan bakar.', costsTitle: 'Biaya apa yang harus dimasukkan', costsText: 'Bahan bakar berubah mengikuti jarak, sedangkan asuransi, perawatan, biaya, dan penyusutan dimasukkan sebagai jumlah tahunan. Jarak tahunan yang rendah membuat biaya tetap lebih berat per kilometer.', costsHeaders: ['Masukan', 'Cara digunakan', 'Yang perlu diperiksa'], costsRows: [['Jarak tahunan', 'Membagi total tahunan menjadi biaya per kilometer', 'Gunakan jarak yang realistis'], ['Konsumsi dan harga', 'Membuat biaya bahan bakar variabel', 'Gunakan dasar yang sama untuk kedua skenario'], ['Asuransi, perawatan, dan pajak', 'Menambahkan biaya tahunan rutin', 'Jangan lupakan ban dan pemeriksaan'], ['Nilai yang hilang', 'Menambahkan perkiraan penyusutan', 'Uji beberapa nilai jual kembali']], readTitle: 'Cara membaca jalur biaya', readText: 'Bagian tetap menunjukkan biaya yang tidak langsung naik setiap kilometer. Bagian bahan bakar menunjukkan komponen yang dipengaruhi jarak. Titik akhirnya adalah biaya penuh per kilometer untuk dibandingkan.', list: ['Uji perkiraan penyusutan rendah dan tinggi.', 'Bandingkan kendaraan dengan jarak tahunan dan mata uang yang sama.', 'Ganti perkiraan dengan catatan biaya Anda setelah beberapa bulan.', 'Periksa total bulanan dan tahunan terhadap anggaran nyata.'], decisionTitle: 'Gunakan perbandingan untuk mengambil keputusan', decisionText: 'Perbandingan hanya berguna jika kedua skenario memakai periode dan aturan yang sama. Ubah satu asumsi setiap kali saat menilai pembelian atau rute rutin.', tipTitle: 'Ini model perencanaan, bukan penawaran harga', tipText: 'Kalkulator tidak mengambil harga pasar, tidak mengesahkan penggantian biaya, dan tidak mengetahui nilai jual kembali di masa depan. Gunanya adalah membuat asumsi Anda transparan.'
29
+ }),
30
+ });
@@ -0,0 +1,30 @@
1
+ import type { FAQItem, HowToStep } from '../../../types';
2
+ import { createVehicleCostContent, createVehicleCostSeo } from './factory';
3
+ import type { VehicleTotalCostPerKilometreCalculatorUI } from '../ui';
4
+
5
+ const ui: VehicleTotalCostPerKilometreCalculatorUI = {
6
+ presetLabel: 'Inizia con un profilo realistico', presetCity: 'Soprattutto città', presetBalanced: 'Guida mista', presetLongDistance: 'Lunga distanza', resetLabel: 'Reimposta valori',
7
+ primaryScenarioLabel: 'Il tuo veicolo', comparisonScenarioLabel: 'Secondo scenario', distanceLabel: 'Distanza annuale', distanceHint: 'Inserisci la distanza che prevedi di percorrere in un anno', fuelUseLabel: 'Consumo', fuelUseHint: 'Media del veicolo in litri per 100 km', fuelPriceLabel: 'Prezzo del carburante', fuelPriceHint: 'Prezzo pagato per litro', insuranceLabel: 'Assicurazione annuale', insuranceHint: 'Il tuo premio annuale effettivo', maintenanceLabel: 'Manutenzione annuale', maintenanceHint: 'Tagliandi, riparazioni, pneumatici e controlli', taxLabel: 'Tasse e costi annuali', taxHint: 'Bollo, immatricolazione e costi ricorrenti', depreciationLabel: 'Perdita di valore annuale', depreciationHint: 'Stima del valore perso durante un anno', currencyLabel: 'Valuta', compareLabel: 'Confronta uno scenario', compareOnLabel: 'Confronto attivo', compareOffLabel: 'Aggiungi confronto', removeComparisonLabel: 'Nascondi confronto', resultLabel: 'La strada dei costi', resultTitle: 'Quanto costa davvero ogni chilometro', resultSceneLabel: 'Una strada mostra i costi fissi e il carburante fino al costo per chilometro', costPerKmLabel: 'Costo per chilometro', monthlyCostLabel: 'Media mensile', annualCostLabel: 'Anno completo', fuelCostLabel: 'Carburante annuale', fixedCostLabel: 'Costi fissi e di proprietà', statusBalanced: 'I costi si distribuiscono lungo la strada', statusFixedHeavy: 'I costi di proprietà pesano di più', statusRunningHeavy: 'Il carburante pesa di più', validationError: 'Inserisci una distanza annuale positiva e costi non negativi.', comparisonTitle: 'Confronto scenari', comparisonPrimaryCheaper: 'Il tuo veicolo costa meno di', comparisonSecondaryCheaper: 'Il secondo scenario costa meno di', comparisonSame: 'I due scenari costano quasi uguale', fixedLaneLabel: 'Fisso', fuelLaneLabel: 'Carburante', totalLaneLabel: 'Totale', formulaLabel: 'Calcolo', formulaText: 'Costo annuale = distanza annuale × consumo ÷ 100 × prezzo carburante + assicurazione + manutenzione + tasse + perdita di valore. Costo per chilometro = costo annuale ÷ distanza annuale.', inputUnitDistance: 'km', inputUnitFuelUse: 'L / 100 km', inputUnitFuelPrice: '/ L', inputUnitAnnualCost: '/ anno', outputUnitDistance: 'km',
8
+ };
9
+
10
+ const faq: FAQItem[] = [
11
+ { question: 'Che cosa include il calcolatore del costo per chilometro?', answer: 'Unisce carburante, assicurazione, manutenzione, tasse e costi, oltre alla perdita di valore stimata durante l anno. Inserisci i tuoi dati per rappresentare il tuo veicolo.' },
12
+ { question: 'Perché il risultato è più alto di un calcolatore del carburante?', answer: 'Il carburante è solo la parte variabile. Assicurazione, riparazioni, costi annuali e svalutazione possono rendere costoso ogni chilometro.' },
13
+ { question: 'Come posso stimare la svalutazione?', answer: 'Sottrai il valore atteso a fine anno dal valore iniziale. Se il prezzo di rivendita è incerto, prova un caso basso e uno alto.' },
14
+ { question: 'Posso confrontare due veicoli?', answer: 'Sì. Attiva il confronto e usa la stessa distanza annuale, lo stesso periodo e la stessa valuta.' },
15
+ { question: 'Il risultato prevede il costo esatto di un viaggio?', answer: 'No. È una stima di pianificazione. Prezzi, guasti, distanza e valore di rivendita possono cambiare.' },
16
+ ];
17
+
18
+ const howTo: HowToStep[] = [
19
+ { name: 'Imposta la distanza annuale', text: 'Inserisci i chilometri che prevedi di percorrere in un anno.' },
20
+ { name: 'Aggiungi il carburante', text: 'Inserisci il consumo in litri per 100 chilometri e il prezzo al litro.' },
21
+ { name: 'Aggiungi i costi di proprietà', text: 'Inserisci assicurazione, manutenzione, tasse, costi e perdita di valore.' },
22
+ { name: 'Leggi o confronta', text: 'Usa il costo per chilometro e controlla le parti fissa e variabile.' },
23
+ ];
24
+
25
+ export const content = createVehicleCostContent({
26
+ locale: 'it', slug: 'calcolatore-costo-totale-veicolo-per-chilometro', title: 'Calcolatore del costo totale di un veicolo per chilometro', description: 'Calcola il costo reale di un veicolo per chilometro unendo carburante, proprietà e distanza annuale.', faqTitle: 'Domande frequenti', bibliographyTitle: 'Riferimenti bibliografici', ui, faq, howTo,
27
+ seo: createVehicleCostSeo({
28
+ introTitle: 'Scopri il costo nascosto dietro ogni chilometro', introA: 'Il prezzo del carburante non basta per sapere quanto costa usare un veicolo. Assicurazione, manutenzione, pneumatici, tasse e perdita di valore fanno parte della decisione. Questo calcolatore distribuisce i costi annuali sulla distanza prevista e li mette accanto al carburante.', introB: 'Inserisci i tuoi dati invece di affidarti a una media generica. Il risultato principale è il costo per chilometro, con una stima mensile, annuale e una separazione visiva tra costi fissi e carburante.', costsTitle: 'Quali costi includere nella stima', costsText: 'Il carburante cambia con la distanza. Assicurazione, manutenzione, costi e svalutazione sono importi annuali. Una distanza ridotta rende i costi fissi più pesanti per chilometro.', costsHeaders: ['Dato', 'Uso nel calcolo', 'Cosa controllare'], costsRows: [['Distanza annuale', 'Divide il totale per i chilometri', 'Usa una distanza realistica'], ['Consumo e prezzo', 'Creano il costo variabile', 'Mantieni la stessa base nei confronti'], ['Assicurazione, manutenzione e tasse', 'Aggiungono i costi ricorrenti', 'Includi pneumatici e controlli'], ['Perdita di valore', 'Aggiunge la svalutazione annuale', 'Prova più valori di rivendita']], readTitle: 'Leggere la strada dei costi', readText: 'La parte fissa mostra i costi che non crescono direttamente a ogni chilometro. La parte carburante mostra il tratto legato alla distanza. Il punto finale è il costo totale da confrontare.', list: ['Prova una svalutazione prudente e una ottimistica.', 'Confronta i veicoli con la stessa distanza e valuta.', 'Sostituisci le stime con le tue ricevute dopo alcuni mesi.', 'Controlla i totali mensili e annuali rispetto al budget.'], decisionTitle: 'Confronta le ipotesi per decidere', decisionText: 'Il confronto è utile solo se gli scenari coprono lo stesso periodo e usano le stesse regole. Cambia una sola ipotesi alla volta quando valuti un acquisto o un tragitto.', tipTitle: 'È un modello di pianificazione, non un preventivo', tipText: 'Non cerca prezzi di mercato, non certifica detrazioni e non conosce il futuro valore di rivendita. Rende trasparenti le tue ipotesi.'
29
+ }),
30
+ });
@@ -0,0 +1,30 @@
1
+ import type { FAQItem, HowToStep } from '../../../types';
2
+ import { createVehicleCostContent, createVehicleCostSeo } from './factory';
3
+ import type { VehicleTotalCostPerKilometreCalculatorUI } from '../ui';
4
+
5
+ const ui: VehicleTotalCostPerKilometreCalculatorUI = {
6
+ presetLabel: '現実的なパターンから開始', presetCity: '主に市街地', presetBalanced: '混合走行', presetLongDistance: '長距離', resetLabel: '値をリセット',
7
+ primaryScenarioLabel: 'あなたの車', comparisonScenarioLabel: '2つ目のシナリオ', distanceLabel: '年間走行距離', distanceHint: '1年間に走る予定の距離を入力', fuelUseLabel: '燃料消費量', fuelUseHint: '車の平均燃料消費量、100 kmあたりのリットル', fuelPriceLabel: '燃料価格', fuelPriceHint: '1リットルの価格', insuranceLabel: '年間保険料', insuranceHint: '実際の年間保険料', maintenanceLabel: '年間メンテナンス費', maintenanceHint: '整備、修理、タイヤ、点検', taxLabel: '年間税金と手数料', taxHint: '自動車税、登録、継続的な手数料', depreciationLabel: '年間価値減少', depreciationHint: '1年間に失われる車両価値の推定', currencyLabel: '通貨', compareLabel: '別のシナリオを比較', compareOnLabel: '比較中', compareOffLabel: '比較を追加', removeComparisonLabel: '比較を隠す', resultLabel: 'コストの道', resultTitle: '1 kmにかかる本当の費用', resultSceneLabel: '固定の所有費と燃料費が1 kmあたりの費用につながる道', costPerKmLabel: '1 kmあたりの費用', monthlyCostLabel: '月平均', annualCostLabel: '年間合計', fuelCostLabel: '年間燃料費', fixedCostLabel: '固定費と所有費', statusBalanced: '費用が走行距離全体に分散', statusFixedHeavy: '所有費の割合が大きい', statusRunningHeavy: '燃料費の割合が大きい', validationError: '年間距離は正の値にし、費用に負の値を入力しないでください。', comparisonTitle: 'シナリオ比較', comparisonPrimaryCheaper: 'あなたの車のほうが安い差額', comparisonSecondaryCheaper: '2つ目のシナリオのほうが安い差額', comparisonSame: '2つのシナリオはほぼ同じ費用', fixedLaneLabel: '固定', fuelLaneLabel: '燃料', totalLaneLabel: '合計', formulaLabel: '計算方法', formulaText: '年間費用 = 年間距離 × 燃料消費量 ÷ 100 × 燃料価格 + 保険 + メンテナンス + 税金 + 価値減少。1 kmあたりの費用 = 年間費用 ÷ 年間距離。', inputUnitDistance: 'km', inputUnitFuelUse: 'L / 100 km', inputUnitFuelPrice: '/ L', inputUnitAnnualCost: '/ 年', outputUnitDistance: 'km',
8
+ };
9
+
10
+ const faq: FAQItem[] = [
11
+ { question: 'この計算機にはどの費用が含まれますか?', answer: '燃料、保険、メンテナンス、税金と手数料、そして1年間に失われる車両価値を組み合わせます。自分の車の数値を入力して利用してください。' },
12
+ { question: '燃料費だけの計算より高くなるのはなぜですか?', answer: '燃料は走行距離で変わる費用の一部だけです。保険、修理、税金、価値減少も1 kmごとの費用になります。' },
13
+ { question: '価値減少はどのように見積もりますか?', answer: '開始時の価値から1年後の予想価値を引きます。売却価格が不確かな場合は低いケースと高いケースを試してください。' },
14
+ { question: '2台の車を比較できますか?', answer: 'はい。比較を追加し、同じ年間距離、期間、通貨で2つ目のシナリオを入力します。' },
15
+ { question: '将来の旅行の正確な費用を予測できますか?', answer: 'いいえ。これは計画用の推定です。価格、修理、走行距離、売却価値は変わる可能性があります。' },
16
+ ];
17
+
18
+ const howTo: HowToStep[] = [
19
+ { name: '年間距離を設定', text: '1年間に走る予定のキロメートルを入力します。' },
20
+ { name: '燃料の前提を入力', text: '100 kmあたりの燃料消費量と1リットルの価格を入力します。' },
21
+ { name: '所有費を入力', text: '保険、メンテナンス、税金、手数料、価値減少を入力します。' },
22
+ { name: '結果を読む', text: '1 kmあたりの費用を比較し、固定費と燃料費の内訳を確認します。' },
23
+ ];
24
+
25
+ export const content = createVehicleCostContent({
26
+ locale: 'ja', slug: 'vehicle-total-cost-per-kilometre-calculator', title: '車の1kmあたり総費用計算機', description: '燃料費、所有費、年間走行距離を組み合わせて、車の1kmあたりの実際の費用を計算します。', faqTitle: 'よくある質問', bibliographyTitle: '参考資料', ui, faq, howTo,
27
+ seo: createVehicleCostSeo({
28
+ introTitle: '1 kmの背後にある費用を見える化', introA: '燃料価格だけでは、車を使う本当の費用はわかりません。保険、整備、タイヤ、税金、所有中に失われる価値も判断材料です。この計算機は年間費用を予定走行距離に分配し、燃料費と並べて表示します。', introB: '一般的な平均ではなく、自分の車の数値を入力してください。主な結果は1 kmあたりの費用で、月間と年間の目安、固定費と燃料費の内訳も確認できます。', costsTitle: '見積もりに含める費用', costsText: '燃料費は距離によって変わります。保険、整備、手数料、価値減少は年間金額として入力します。年間距離が短いほど、1 kmあたりの固定費は大きくなります。', costsHeaders: ['入力', '計算での使い方', '確認する点'], costsRows: [['年間距離', '年間合計を1 kmあたりに分配', '現実的な距離を使う'], ['消費量と価格', '変動する燃料費を作る', '2つのシナリオで同じ基準にする'], ['保険、整備、税金', '継続的な所有費を加算', 'タイヤと点検も含める'], ['価値減少', '年間の減価を加算', '複数の売却価値を試す']], readTitle: 'コストの道を読む', readText: '固定部分は1 kmごとに直接増えない費用を示します。燃料部分は距離に応じて変わる費用です。終点の数字が比較する総合的な1 kmあたり費用です。', list: ['売却価値が不確かな場合は低いケースと高いケースを計算する。', '同じ年間距離と通貨で車を比較する。', '数か月後に実際の記録で見積もりを置き換える。', '月間と年間の合計が予算に合うか確認する。'], decisionTitle: '前提を比較して判断する', decisionText: '比較は同じ所有期間と同じ入力ルールで計算した場合に役立ちます。購入や通勤経路を検討するときは、一度に1つの前提だけを変えてください。', tipTitle: '見積もりモデルであり、見積書ではありません', tipText: '市場価格の検索、法的な経費の証明、将来の売却価値の予測は行いません。自分の前提を透明に比較するための道具です。'
29
+ }),
30
+ });
@@ -0,0 +1,30 @@
1
+ import type { FAQItem, HowToStep } from '../../../types';
2
+ import { createVehicleCostContent, createVehicleCostSeo } from './factory';
3
+ import type { VehicleTotalCostPerKilometreCalculatorUI } from '../ui';
4
+
5
+ const ui: VehicleTotalCostPerKilometreCalculatorUI = {
6
+ presetLabel: '현실적인 패턴으로 시작', presetCity: '주로 도심', presetBalanced: '혼합 주행', presetLongDistance: '장거리', resetLabel: '값 초기화',
7
+ primaryScenarioLabel: '내 차량', comparisonScenarioLabel: '두 번째 시나리오', distanceLabel: '연간 주행 거리', distanceHint: '1년에 주행할 것으로 예상하는 거리를 입력하세요', fuelUseLabel: '연료 소비량', fuelUseHint: '차량의 100 km당 평균 리터', fuelPriceLabel: '연료 가격', fuelPriceHint: '리터당 지불하는 가격', insuranceLabel: '연간 보험료', insuranceHint: '실제 연간 보험료', maintenanceLabel: '연간 정비비', maintenanceHint: '정비, 수리, 타이어 및 검사', taxLabel: '연간 세금과 수수료', taxHint: '자동차세, 등록 및 반복 수수료', depreciationLabel: '연간 가치 하락', depreciationHint: '1년 동안 차량 가치가 하락하는 금액의 추정치', currencyLabel: '통화', compareLabel: '다른 시나리오 비교', compareOnLabel: '비교 켜짐', compareOffLabel: '비교 추가', removeComparisonLabel: '비교 숨기기', resultLabel: '비용의 길', resultTitle: '1 km에 실제로 드는 비용', resultSceneLabel: '고정 소유 비용과 연료 비용이 1 km당 비용으로 이어지는 길', costPerKmLabel: 'km당 비용', monthlyCostLabel: '월 평균', annualCostLabel: '연간 합계', fuelCostLabel: '연간 연료비', fixedCostLabel: '고정 및 소유 비용', statusBalanced: '비용이 주행 거리 전체에 분산됩니다', statusFixedHeavy: '소유 비용의 비중이 큽니다', statusRunningHeavy: '연료 비용의 비중이 큽니다', validationError: '양수인 연간 거리와 음수가 아닌 비용을 입력하세요.', comparisonTitle: '시나리오 비교', comparisonPrimaryCheaper: '내 차량이 더 저렴한 차이', comparisonSecondaryCheaper: '두 번째 시나리오가 더 저렴한 차이', comparisonSame: '두 시나리오의 비용은 거의 같습니다', fixedLaneLabel: '고정', fuelLaneLabel: '연료', totalLaneLabel: '전체', formulaLabel: '계산', formulaText: '연간 비용 = 연간 거리 × 연료 소비량 ÷ 100 × 연료 가격 + 보험 + 정비 + 세금 + 가치 하락. km당 비용 = 연간 비용 ÷ 연간 거리.', inputUnitDistance: 'km', inputUnitFuelUse: 'L / 100 km', inputUnitFuelPrice: '/ L', inputUnitAnnualCost: '/ 년', outputUnitDistance: 'km',
8
+ };
9
+
10
+ const faq: FAQItem[] = [
11
+ { question: '이 km당 비용 계산기에는 무엇이 포함되나요?', answer: '연료, 보험, 정비, 세금과 수수료, 그리고 1년 동안 차량이 잃는 가치를 함께 계산합니다. 내 차량의 수치를 직접 입력할 수 있습니다.' },
12
+ { question: '연료비 계산기보다 결과가 높은 이유는 무엇인가요?', answer: '연료는 거리에 따라 변하는 비용의 일부일 뿐입니다. 보험, 수리, 연간 수수료와 감가상각도 km마다 나누어야 합니다.' },
13
+ { question: '감가상각은 어떻게 추정하나요?', answer: '시작 가치에서 1년 후 예상 가치를 뺍니다. 재판매 가치가 불확실하면 낮은 경우와 높은 경우를 각각 계산하세요.' },
14
+ { question: '두 차량을 비교할 수 있나요?', answer: '네. 비교를 켜고 두 시나리오에 같은 연간 거리, 기간, 통화를 사용하세요.' },
15
+ { question: '미래 여행의 정확한 비용을 예측하나요?', answer: '아니요. 계획을 위한 추정치입니다. 가격, 수리, 거리와 재판매 가치는 달라질 수 있습니다.' },
16
+ ];
17
+
18
+ const howTo: HowToStep[] = [
19
+ { name: '연간 거리 설정', text: '1년 동안 주행할 것으로 예상하는 km를 입력합니다.' },
20
+ { name: '연료 가정 입력', text: '100 km당 소비량과 리터당 가격을 입력합니다.' },
21
+ { name: '소유 비용 입력', text: '보험, 정비, 세금, 수수료와 가치 하락을 입력합니다.' },
22
+ { name: '결과 읽기', text: 'km당 비용을 비교하고 고정 비용과 연료 비용의 비율을 확인합니다.' },
23
+ ];
24
+
25
+ export const content = createVehicleCostContent({
26
+ locale: 'ko', slug: 'vehicle-total-cost-per-kilometre-calculator', title: '차량 km당 총비용 계산기', description: '연료비, 소유 비용과 연간 주행 거리를 합쳐 차량의 실제 km당 비용을 계산합니다.', faqTitle: '자주 묻는 질문', bibliographyTitle: '참고 자료', ui, faq, howTo,
27
+ seo: createVehicleCostSeo({
28
+ introTitle: '각 km 뒤에 숨은 비용을 확인하세요', introA: '연료 가격만으로는 차량을 사용하는 실제 비용을 알 수 없습니다. 보험, 정비, 타이어, 세금과 차량 가치 하락도 판단에 포함해야 합니다. 이 계산기는 연간 비용을 예상 주행 거리로 나누어 연료비와 함께 보여줍니다.', introB: '일반적인 평균 대신 내 차량의 수치를 입력하세요. 핵심 결과는 km당 비용이며 월간과 연간 합계, 고정 비용과 연료 비용의 시각적 분할도 제공합니다.', costsTitle: '추정에 포함할 비용', costsText: '연료비는 거리에 따라 변하고 보험, 정비, 수수료와 감가상각은 연간 금액으로 입력합니다. 연간 거리가 짧으면 km당 고정 비용이 더 커집니다.', costsHeaders: ['입력', '계산에서의 사용', '확인할 점'], costsRows: [['연간 거리', '연간 합계를 km당 비용으로 나눔', '현실적인 거리를 사용'], ['소비량과 가격', '변동하는 연료비를 계산', '두 시나리오의 기준을 같게 함'], ['보험, 정비와 세금', '반복되는 연간 비용을 추가', '타이어와 검사를 포함'], ['가치 하락', '연간 감가상각을 추가', '여러 재판매 가치를 시험']], readTitle: '비용의 길 읽기', readText: '고정 구간은 km마다 직접 증가하지 않는 비용을 보여줍니다. 연료 구간은 거리에 민감한 부분입니다. 끝점의 값이 비교할 전체 km당 비용입니다.', list: ['재판매 가치가 불확실하면 낮은 추정과 높은 추정을 계산하세요.', '같은 연간 거리와 통화로 차량을 비교하세요.', '몇 달 후 실제 기록으로 추정치를 바꾸세요.', '월간 및 연간 합계가 실제 예산에 맞는지 확인하세요.'], decisionTitle: '가정을 비교해 결정하기', decisionText: '두 시나리오가 같은 소유 기간과 규칙을 사용할 때만 비교가 유용합니다. 차량 구매나 반복 경로를 검토할 때는 한 번에 하나의 가정만 바꾸세요.', tipTitle: '견적이 아니라 계획 모델입니다', tipText: '시장 가격을 조회하거나 법적 비용을 인증하거나 미래 재판매 가치를 알 수는 없습니다. 자신의 가정을 투명하게 비교하는 도구입니다.'
29
+ }),
30
+ });
@@ -0,0 +1,30 @@
1
+ import type { FAQItem, HowToStep } from '../../../types';
2
+ import { createVehicleCostContent, createVehicleCostSeo } from './factory';
3
+ import type { VehicleTotalCostPerKilometreCalculatorUI } from '../ui';
4
+
5
+ const ui: VehicleTotalCostPerKilometreCalculatorUI = {
6
+ presetLabel: 'Begin met een realistisch patroon', presetCity: 'Vooral stad', presetBalanced: 'Gemengd rijden', presetLongDistance: 'Lange afstand', resetLabel: 'Waarden resetten',
7
+ primaryScenarioLabel: 'Jouw voertuig', comparisonScenarioLabel: 'Tweede scenario', distanceLabel: 'Afstand per jaar', distanceHint: 'Gebruik de afstand die je in een jaar verwacht te rijden', fuelUseLabel: 'Brandstofverbruik', fuelUseHint: 'Gemiddelde van je voertuig in liter per 100 km', fuelPriceLabel: 'Brandstofprijs', fuelPriceHint: 'Prijs per liter', insuranceLabel: 'Verzekering per jaar', insuranceHint: 'Je werkelijke jaarlijkse premie', maintenanceLabel: 'Onderhoud per jaar', maintenanceHint: 'Service, reparaties, banden en keuringen', taxLabel: 'Belasting en kosten per jaar', taxHint: 'Wegenbelasting, registratie en terugkerende kosten', depreciationLabel: 'Waardeverlies per jaar', depreciationHint: 'Je schatting van de waarde die het voertuig in een jaar verliest', currencyLabel: 'Valuta', compareLabel: 'Ander scenario vergelijken', compareOnLabel: 'Vergelijking aan', compareOffLabel: 'Vergelijking toevoegen', removeComparisonLabel: 'Vergelijking verbergen', resultLabel: 'De kostenroute', resultTitle: 'Wat elke kilometer echt kost', resultSceneLabel: 'Een route toont vaste eigendomskosten en brandstofkosten tot aan de prijs per kilometer', costPerKmLabel: 'Kosten per kilometer', monthlyCostLabel: 'Gemiddelde maand', annualCostLabel: 'Volledig jaar', fuelCostLabel: 'Brandstof per jaar', fixedCostLabel: 'Vaste en eigendomskosten', statusBalanced: 'De kosten worden over de route verdeeld', statusFixedHeavy: 'Eigendomskosten vormen het grootste deel', statusRunningHeavy: 'Brandstof vormt het grootste deel', validationError: 'Voer een positieve jaarafstand en niet-negatieve kosten in.', comparisonTitle: 'Scenarioverselijking', comparisonPrimaryCheaper: 'Jouw voertuig is goedkoper met', comparisonSecondaryCheaper: 'Het tweede scenario is goedkoper met', comparisonSame: 'Beide scenario s kosten ongeveer hetzelfde', fixedLaneLabel: 'Vast', fuelLaneLabel: 'Brandstof', totalLaneLabel: 'Totaal', formulaLabel: 'Berekening', formulaText: 'Jaarlijkse kosten = jaarlijkse afstand × verbruik ÷ 100 × brandstofprijs + verzekering + onderhoud + belasting + waardeverlies. Kosten per kilometer = jaarlijkse kosten ÷ jaarlijkse afstand.', inputUnitDistance: 'km', inputUnitFuelUse: 'L / 100 km', inputUnitFuelPrice: '/ L', inputUnitAnnualCost: '/ jaar', outputUnitDistance: 'km',
8
+ };
9
+
10
+ const faq: FAQItem[] = [
11
+ { question: 'Welke kosten bevat deze calculator?', answer: 'De calculator combineert brandstof, verzekering, onderhoud, belasting en kosten, plus het geschatte jaarlijkse waardeverlies. Je voert je eigen cijfers in.' },
12
+ { question: 'Waarom is het resultaat hoger dan bij een brandstofcalculator?', answer: 'Brandstof is alleen het variabele deel. Verzekering, reparaties, jaarlijkse kosten en afschrijving tellen ook mee per kilometer.' },
13
+ { question: 'Hoe schat ik waardeverlies?', answer: 'Trek de verwachte waarde aan het einde van het jaar af van de beginwaarde. Test een lage en een hoge schatting als de restwaarde onzeker is.' },
14
+ { question: 'Kan ik twee voertuigen vergelijken?', answer: 'Ja. Voeg een vergelijking toe en gebruik dezelfde jaarafstand, periode en valuta voor beide scenario s.' },
15
+ { question: 'Voorspelt de uitkomst de exacte ritprijs?', answer: 'Nee. Het is een planningsschatting. Prijzen, reparaties, afstand en restwaarde kunnen veranderen.' },
16
+ ];
17
+
18
+ const howTo: HowToStep[] = [
19
+ { name: 'Stel de jaarafstand in', text: 'Voer de kilometers in die je per jaar verwacht te rijden.' },
20
+ { name: 'Voeg brandstof toe', text: 'Voer het verbruik per 100 kilometer en de prijs per liter in.' },
21
+ { name: 'Voeg eigendomskosten toe', text: 'Vul verzekering, onderhoud, belasting, kosten en waardeverlies in.' },
22
+ { name: 'Lees of vergelijk', text: 'Gebruik de kosten per kilometer en controleer de vaste en variabele delen.' },
23
+ ];
24
+
25
+ export const content = createVehicleCostContent({
26
+ locale: 'nl', slug: 'calculator-totale-voertuigkosten-per-kilometer', title: 'Calculator voor totale voertuigkosten per kilometer', description: 'Bereken de echte kosten per kilometer van een voertuig met brandstof, eigendomskosten en jaarlijkse afstand.', faqTitle: 'Veelgestelde vragen', bibliographyTitle: 'Bronnen', ui, faq, howTo,
27
+ seo: createVehicleCostSeo({
28
+ introTitle: 'Zie de verborgen kosten achter elke kilometer', introA: 'Een brandstofprijs alleen vertelt niet wat een voertuig echt kost. Verzekering, onderhoud, banden, belastingen en waardeverlies horen ook bij de beslissing. Deze calculator verdeelt die jaarlijkse kosten over je verwachte afstand en zet ze naast de brandstofrekening.', introB: 'Gebruik je eigen cijfers in plaats van een algemeen gemiddelde. Het hoofdresultaat is de kostprijs per kilometer, met een maand- en jaartotaal en een visuele verdeling tussen vaste kosten en brandstof.', costsTitle: 'Welke kosten horen in de schatting', costsText: 'Brandstof verandert met de afstand. Verzekering, onderhoud, kosten en afschrijving geef je als jaarlijkse bedragen op. Bij weinig kilometers wegen vaste kosten zwaarder per kilometer.', costsHeaders: ['Invoer', 'Gebruik in de calculator', 'Wat controleren'], costsRows: [['Jaarafstand', 'Verdeelt het jaartotaal per kilometer', 'Gebruik een realistische afstand'], ['Verbruik en prijs', 'Maken de variabele brandstofkosten', 'Gebruik dezelfde basis in beide scenario s'], ['Verzekering, onderhoud en belasting', 'Voegen vaste jaarlijkse kosten toe', 'Vergeet banden en keuringen niet'], ['Waardeverlies', 'Voegt jaarlijkse afschrijving toe', 'Test verschillende restwaarden']], readTitle: 'De kostenroute lezen', readText: 'Het vaste deel toont kosten die niet direct met elke kilometer stijgen. Het brandstofdeel toont het afstandsgevoelige deel. Het eindpunt is de totale kostprijs per kilometer.', list: ['Test een voorzichtige en een optimistische afschrijving.', 'Vergelijk voertuigen met dezelfde jaarafstand en valuta.', 'Vervang schattingen na enkele maanden door je eigen gegevens.', 'Controleer de maand- en jaartotalen tegen je echte budget.'], decisionTitle: 'Vergelijk aannames om te beslissen', decisionText: 'Een vergelijking werkt alleen wanneer beide scenario s dezelfde periode en regels gebruiken. Verander bij een aankoop of vaste route steeds één aanname tegelijk.', tipTitle: 'Een planningsmodel, geen offerte', tipText: 'De calculator zoekt geen marktprijzen op, certificeert geen vergoeding en kent de toekomstige restwaarde niet. Hij maakt je aannames transparant.'
29
+ }),
30
+ });
@@ -0,0 +1,30 @@
1
+ import type { FAQItem, HowToStep } from '../../../types';
2
+ import { createVehicleCostContent, createVehicleCostSeo } from './factory';
3
+ import type { VehicleTotalCostPerKilometreCalculatorUI } from '../ui';
4
+
5
+ const ui: VehicleTotalCostPerKilometreCalculatorUI = {
6
+ presetLabel: 'Zacznij od realistycznego profilu', presetCity: 'Głównie miasto', presetBalanced: 'Jazda mieszana', presetLongDistance: 'Długie trasy', resetLabel: 'Resetuj wartości',
7
+ primaryScenarioLabel: 'Twój pojazd', comparisonScenarioLabel: 'Drugi scenariusz', distanceLabel: 'Dystans roczny', distanceHint: 'Podaj odległość, którą planujesz przejechać w ciągu roku', fuelUseLabel: 'Zużycie paliwa', fuelUseHint: 'Średnie zużycie pojazdu w litrach na 100 km', fuelPriceLabel: 'Cena paliwa', fuelPriceHint: 'Cena za litr', insuranceLabel: 'Ubezpieczenie roczne', insuranceHint: 'Rzeczywista składka roczna', maintenanceLabel: 'Serwis roczny', maintenanceHint: 'Przeglądy, naprawy, opony i kontrole', taxLabel: 'Podatki i opłaty roczne', taxHint: 'Podatek drogowy, rejestracja i opłaty cykliczne', depreciationLabel: 'Utrata wartości roczna', depreciationHint: 'Szacowana wartość utracona przez pojazd w ciągu roku', currencyLabel: 'Waluta', compareLabel: 'Porównaj scenariusz', compareOnLabel: 'Porównanie włączone', compareOffLabel: 'Dodaj porównanie', removeComparisonLabel: 'Ukryj porównanie', resultLabel: 'Droga kosztów', resultTitle: 'Rzeczywisty koszt każdego kilometra', resultSceneLabel: 'Droga pokazuje stałe koszty posiadania i paliwo prowadzące do kosztu za kilometr', costPerKmLabel: 'Koszt za kilometr', monthlyCostLabel: 'Średni miesiąc', annualCostLabel: 'Pełny rok', fuelCostLabel: 'Paliwo rocznie', fixedCostLabel: 'Koszty stałe i posiadania', statusBalanced: 'Koszty rozkładają się na trasie', statusFixedHeavy: 'Największy udział mają koszty posiadania', statusRunningHeavy: 'Największy udział ma paliwo', validationError: 'Podaj dodatni dystans roczny i nieujemne koszty.', comparisonTitle: 'Porównanie scenariuszy', comparisonPrimaryCheaper: 'Twój pojazd jest tańszy o', comparisonSecondaryCheaper: 'Drugi scenariusz jest tańszy o', comparisonSame: 'Oba scenariusze kosztują mniej więcej tyle samo', fixedLaneLabel: 'Stałe', fuelLaneLabel: 'Paliwo', totalLaneLabel: 'Razem', formulaLabel: 'Obliczenie', formulaText: 'Koszt roczny = dystans roczny × zużycie ÷ 100 × cena paliwa + ubezpieczenie + serwis + podatki + utrata wartości. Koszt za kilometr = koszt roczny ÷ dystans roczny.', inputUnitDistance: 'km', inputUnitFuelUse: 'L / 100 km', inputUnitFuelPrice: '/ L', inputUnitAnnualCost: '/ rok', outputUnitDistance: 'km',
8
+ };
9
+
10
+ const faq: FAQItem[] = [
11
+ { question: 'Co obejmuje kalkulator kosztu pojazdu za kilometr?', answer: 'Łączy paliwo, ubezpieczenie, serwis, podatki i opłaty oraz szacowaną roczną utratę wartości. Wpisujesz własne dane dla swojego pojazdu.' },
12
+ { question: 'Dlaczego wynik jest wyższy niż w kalkulatorze paliwa?', answer: 'Paliwo to tylko część zmienna. Ubezpieczenie, naprawy, opłaty i amortyzacja również przypadają na każdy kilometr.' },
13
+ { question: 'Jak oszacować utratę wartości?', answer: 'Odejmij przewidywaną wartość na koniec roku od wartości początkowej. Przy niepewnej odsprzedaży sprawdź niski i wysoki wariant.' },
14
+ { question: 'Czy mogę porównać dwa pojazdy?', answer: 'Tak. Włącz porównanie i użyj tego samego dystansu rocznego, okresu oraz waluty.' },
15
+ { question: 'Czy wynik przewiduje dokładny koszt podróży?', answer: 'Nie. To szacunek planistyczny. Ceny, naprawy, dystans i wartość odsprzedaży mogą się zmienić.' },
16
+ ];
17
+
18
+ const howTo: HowToStep[] = [
19
+ { name: 'Ustaw dystans roczny', text: 'Wpisz liczbę kilometrów, które planujesz przejechać w roku.' },
20
+ { name: 'Dodaj paliwo', text: 'Podaj zużycie na 100 kilometrów i cenę za litr.' },
21
+ { name: 'Dodaj koszty posiadania', text: 'Wpisz ubezpieczenie, serwis, podatki, opłaty i utratę wartości.' },
22
+ { name: 'Odczytaj lub porównaj wynik', text: 'Użyj kosztu za kilometr i sprawdź podział na koszty stałe oraz paliwo.' },
23
+ ];
24
+
25
+ export const content = createVehicleCostContent({
26
+ locale: 'pl', slug: 'kalkulator-calkowitego-kosztu-pojazdu-na-kilometr', title: 'Kalkulator całkowitego kosztu pojazdu na kilometr', description: 'Oblicz rzeczywisty koszt pojazdu na kilometr, łącząc paliwo, koszty posiadania i dystans roczny.', faqTitle: 'Najczęściej zadawane pytania', bibliographyTitle: 'Bibliografia', ui, faq, howTo,
27
+ seo: createVehicleCostSeo({
28
+ introTitle: 'Zobacz koszt ukryty za każdym kilometrem', introA: 'Sama cena paliwa nie pokazuje, ile naprawdę kosztuje użytkowanie pojazdu. Ubezpieczenie, serwis, opony, podatki i utrata wartości również wpływają na decyzję. Kalkulator rozkłada te koszty roczne na planowany dystans i zestawia je z paliwem.', introB: 'Wpisz własne liczby zamiast korzystać z ogólnej średniej. Główny wynik to koszt za kilometr, uzupełniony o miesiąc, cały rok oraz wizualny podział na koszty stałe i paliwo.', costsTitle: 'Jakie koszty uwzględnić', costsText: 'Paliwo zmienia się wraz z dystansem. Ubezpieczenie, serwis, opłaty i amortyzację wpisuje się jako kwoty roczne. Mały dystans zwiększa stały koszt przypadający na kilometr.', costsHeaders: ['Dane', 'Zastosowanie', 'Co sprawdzić'], costsRows: [['Dystans roczny', 'Dzieli sumę roczną na kilometry', 'Użyj realistycznego dystansu'], ['Zużycie i cena', 'Tworzą zmienny koszt paliwa', 'Zachowaj te same zasady w obu scenariuszach'], ['Ubezpieczenie, serwis i podatki', 'Dodają koszty cykliczne', 'Uwzględnij opony i kontrole'], ['Utrata wartości', 'Dodaje roczną amortyzację', 'Sprawdź kilka wartości odsprzedaży']], readTitle: 'Jak czytać drogę kosztów', readText: 'Część stała pokazuje koszty, które nie rosną bezpośrednio z każdym kilometrem. Część paliwowa pokazuje wpływ dystansu. Punkt końcowy to pełny koszt za kilometr.', list: ['Sprawdź ostrożny i optymistyczny wariant utraty wartości.', 'Porównuj pojazdy przy tym samym dystansie i w tej samej walucie.', 'Po kilku miesiącach zastąp szacunki własnymi rachunkami.', 'Porównaj sumy miesięczne i roczne z prawdziwym budżetem.'], decisionTitle: 'Porównuj założenia, aby podjąć decyzję', decisionText: 'Porównanie działa tylko wtedy, gdy oba scenariusze opisują ten sam okres i stosują te same zasady. Przy zakupie lub stałej trasie zmieniaj jedno założenie naraz.', tipTitle: 'To model planistyczny, nie wycena', tipText: 'Kalkulator nie pobiera cen rynkowych, nie potwierdza zwrotów prawnych i nie zna przyszłej wartości odsprzedaży. Porządkuje Twoje założenia.'
29
+ }),
30
+ });
@@ -0,0 +1,30 @@
1
+ import type { FAQItem, HowToStep } from '../../../types';
2
+ import { createVehicleCostContent, createVehicleCostSeo } from './factory';
3
+ import type { VehicleTotalCostPerKilometreCalculatorUI } from '../ui';
4
+
5
+ const ui: VehicleTotalCostPerKilometreCalculatorUI = {
6
+ presetLabel: 'Comece com um padrão realista', presetCity: 'Maioritariamente cidade', presetBalanced: 'Condução mista', presetLongDistance: 'Longa distância', resetLabel: 'Repor valores',
7
+ primaryScenarioLabel: 'O seu veículo', comparisonScenarioLabel: 'Segundo cenário', distanceLabel: 'Distância por ano', distanceHint: 'Use a distância que espera percorrer num ano', fuelUseLabel: 'Consumo', fuelUseHint: 'Média do veículo em litros por 100 km', fuelPriceLabel: 'Preço do combustível', fuelPriceHint: 'Preço pago por litro', insuranceLabel: 'Seguro por ano', insuranceHint: 'O seu prémio anual real', maintenanceLabel: 'Manutenção por ano', maintenanceHint: 'Revisões, reparações, pneus e inspeções', taxLabel: 'Impostos e taxas por ano', taxHint: 'Imposto automóvel, registo e taxas recorrentes', depreciationLabel: 'Perda de valor por ano', depreciationHint: 'Estimativa do valor perdido durante um ano', currencyLabel: 'Moeda', compareLabel: 'Comparar outro cenário', compareOnLabel: 'Comparação ativa', compareOffLabel: 'Adicionar comparação', removeComparisonLabel: 'Ocultar comparação', resultLabel: 'A estrada do custo', resultTitle: 'Quanto custa realmente cada quilómetro', resultSceneLabel: 'Uma estrada mostra os custos fixos de propriedade e o combustível até ao custo por quilómetro', costPerKmLabel: 'Custo por quilómetro', monthlyCostLabel: 'Média mensal', annualCostLabel: 'Ano completo', fuelCostLabel: 'Combustível por ano', fixedCostLabel: 'Custos fixos e de propriedade', statusBalanced: 'Os custos distribuem-se pela estrada', statusFixedHeavy: 'Os custos de propriedade pesam mais', statusRunningHeavy: 'O combustível pesa mais', validationError: 'Introduza uma distância anual positiva e custos não negativos.', comparisonTitle: 'Comparação de cenários', comparisonPrimaryCheaper: 'O seu veículo é mais barato por', comparisonSecondaryCheaper: 'O segundo cenário é mais barato por', comparisonSame: 'Os dois cenários custam aproximadamente o mesmo', fixedLaneLabel: 'Fixo', fuelLaneLabel: 'Combustível', totalLaneLabel: 'Total', formulaLabel: 'Cálculo', formulaText: 'Custo anual = distância anual × consumo ÷ 100 × preço do combustível + seguro + manutenção + impostos + perda de valor. Custo por quilómetro = custo anual ÷ distância anual.', inputUnitDistance: 'km', inputUnitFuelUse: 'L / 100 km', inputUnitFuelPrice: '/ L', inputUnitAnnualCost: '/ ano', outputUnitDistance: 'km',
8
+ };
9
+
10
+ const faq: FAQItem[] = [
11
+ { question: 'O que inclui esta calculadora de custo por quilómetro?', answer: 'Combina combustível, seguro, manutenção, impostos e taxas, e a perda de valor estimada durante o ano. Introduza os seus próprios valores para representar o veículo.' },
12
+ { question: 'Porque é que o resultado é superior ao de uma calculadora de combustível?', answer: 'O combustível é apenas a parte variável. Seguro, reparações, taxas anuais e depreciação também contam em cada quilómetro.' },
13
+ { question: 'Como devo estimar a depreciação?', answer: 'Subtraia o valor esperado no fim do ano ao valor inicial. Se a revenda for incerta, teste uma estimativa baixa e outra alta.' },
14
+ { question: 'Posso comparar dois veículos?', answer: 'Sim. Ative a comparação e use a mesma distância anual, período e moeda nos dois cenários.' },
15
+ { question: 'O resultado prevê o custo exato de uma viagem?', answer: 'Não. É uma estimativa de planeamento. Preços, reparações, distância e valor de revenda podem mudar.' },
16
+ ];
17
+
18
+ const howTo: HowToStep[] = [
19
+ { name: 'Defina a distância anual', text: 'Introduza os quilómetros que espera percorrer durante um ano.' },
20
+ { name: 'Adicione o combustível', text: 'Indique o consumo por 100 quilómetros e o preço por litro.' },
21
+ { name: 'Adicione os custos de propriedade', text: 'Inclua seguro, manutenção, impostos, taxas e perda de valor.' },
22
+ { name: 'Leia ou compare', text: 'Use o custo por quilómetro e veja a divisão entre custos fixos e combustível.' },
23
+ ];
24
+
25
+ export const content = createVehicleCostContent({
26
+ locale: 'pt', slug: 'calculadora-custo-total-veiculo-por-quilometro', title: 'Calculadora do custo total de um veículo por quilómetro', description: 'Calcule o custo real de um veículo por quilómetro combinando combustível, propriedade e distância anual.', faqTitle: 'Perguntas frequentes', bibliographyTitle: 'Referências bibliográficas', ui, faq, howTo,
27
+ seo: createVehicleCostSeo({
28
+ introTitle: 'Veja o custo escondido em cada quilómetro', introA: 'O preço do combustível, por si só, não mostra quanto custa utilizar um veículo. Seguro, manutenção, pneus, impostos e perda de valor também fazem parte da decisão. Esta calculadora distribui esses custos anuais pela distância prevista e coloca-os junto da despesa de combustível.', introB: 'Introduza os seus próprios números em vez de depender de uma média genérica. O resultado principal é o custo por quilómetro, acompanhado por uma estimativa mensal, anual e uma divisão visual entre custos fixos e combustível.', costsTitle: 'Que custos incluir na estimativa', costsText: 'O combustível varia com a distância. Seguro, manutenção, taxas e depreciação são valores anuais. Uma distância anual baixa torna os custos fixos mais pesados por quilómetro.', costsHeaders: ['Entrada', 'Como é usada', 'O que verificar'], costsRows: [['Distância anual', 'Divide o total anual por quilómetro', 'Use uma distância realista'], ['Consumo e preço', 'Criam o custo variável do combustível', 'Use a mesma base nos dois cenários'], ['Seguro, manutenção e impostos', 'Somam custos recorrentes', 'Inclua pneus e inspeções'], ['Perda de valor', 'Adiciona a depreciação anual', 'Teste vários valores de revenda']], readTitle: 'Como ler a estrada do custo', readText: 'A parte fixa mostra custos que não aumentam diretamente com cada quilómetro. A parte do combustível mostra o componente sensível à distância. O ponto final é o custo completo por quilómetro.', list: ['Teste uma depreciação conservadora e outra otimista.', 'Compare veículos com a mesma distância anual e moeda.', 'Troque as estimativas pelos seus registos depois de alguns meses.', 'Verifique os totais mensais e anuais contra o orçamento real.'], decisionTitle: 'Compare pressupostos para decidir', decisionText: 'A comparação só é útil quando os dois cenários usam o mesmo período e as mesmas regras. Ao analisar uma compra ou percurso habitual, altere um pressuposto de cada vez.', tipTitle: 'É um modelo de planeamento, não um orçamento', tipText: 'A calculadora não consulta preços de mercado, não certifica despesas legais e não conhece o valor futuro de revenda. Torna os seus pressupostos transparentes.'
29
+ }),
30
+ });
@@ -0,0 +1,30 @@
1
+ import type { FAQItem, HowToStep } from '../../../types';
2
+ import { createVehicleCostContent, createVehicleCostSeo } from './factory';
3
+ import type { VehicleTotalCostPerKilometreCalculatorUI } from '../ui';
4
+
5
+ const ui: VehicleTotalCostPerKilometreCalculatorUI = {
6
+ presetLabel: 'Начните с реалистичного профиля', presetCity: 'В основном город', presetBalanced: 'Смешанный режим', presetLongDistance: 'Дальние поездки', resetLabel: 'Сбросить значения',
7
+ primaryScenarioLabel: 'Ваш автомобиль', comparisonScenarioLabel: 'Второй сценарий', distanceLabel: 'Пробег в год', distanceHint: 'Укажите расстояние, которое вы планируете проезжать за год', fuelUseLabel: 'Расход топлива', fuelUseHint: 'Средний расход автомобиля в литрах на 100 км', fuelPriceLabel: 'Цена топлива', fuelPriceHint: 'Цена за литр', insuranceLabel: 'Страховка в год', insuranceHint: 'Ваша фактическая годовая премия', maintenanceLabel: 'Обслуживание в год', maintenanceHint: 'Сервис, ремонт, шины и проверки', taxLabel: 'Налоги и сборы в год', taxHint: 'Дорожный налог, регистрация и регулярные сборы', depreciationLabel: 'Потеря стоимости в год', depreciationHint: 'Оценка стоимости, которую автомобиль теряет за год', currencyLabel: 'Валюта', compareLabel: 'Сравнить другой сценарий', compareOnLabel: 'Сравнение включено', compareOffLabel: 'Добавить сравнение', removeComparisonLabel: 'Скрыть сравнение', resultLabel: 'Дорога расходов', resultTitle: 'Настоящая стоимость каждого километра', resultSceneLabel: 'Дорога показывает постоянные расходы владения и топливо до стоимости километра', costPerKmLabel: 'Стоимость километра', monthlyCostLabel: 'Среднее за месяц', annualCostLabel: 'За полный год', fuelCostLabel: 'Топливо за год', fixedCostLabel: 'Постоянные расходы и владение', statusBalanced: 'Расходы распределяются по дороге', statusFixedHeavy: 'Расходы владения составляют большую часть', statusRunningHeavy: 'Топливо составляет большую часть', validationError: 'Введите положительный годовой пробег и неотрицательные расходы.', comparisonTitle: 'Сравнение сценариев', comparisonPrimaryCheaper: 'Ваш автомобиль дешевле на', comparisonSecondaryCheaper: 'Второй сценарий дешевле на', comparisonSame: 'Оба сценария стоят примерно одинаково', fixedLaneLabel: 'Постоянные', fuelLaneLabel: 'Топливо', totalLaneLabel: 'Всего', formulaLabel: 'Расчёт', formulaText: 'Годовые расходы = годовой пробег × расход ÷ 100 × цена топлива + страховка + обслуживание + налоги + потеря стоимости. Стоимость километра = годовые расходы ÷ годовой пробег.', inputUnitDistance: 'км', inputUnitFuelUse: 'л / 100 км', inputUnitFuelPrice: '/ л', inputUnitAnnualCost: '/ год', outputUnitDistance: 'км',
8
+ };
9
+
10
+ const faq: FAQItem[] = [
11
+ { question: 'Что учитывает калькулятор стоимости километра?', answer: 'Он объединяет топливо, страховку, обслуживание, налоги и сборы, а также оценку стоимости, которую автомобиль теряет за год. Вы вводите свои данные.' },
12
+ { question: 'Почему результат выше, чем в калькуляторе топлива?', answer: 'Топливо является только переменной частью расходов. Страховка, ремонт, ежегодные сборы и амортизация также распределяются по километрам.' },
13
+ { question: 'Как оценить потерю стоимости?', answer: 'Вычтите ожидаемую стоимость в конце года из начальной стоимости. Если цена продажи неизвестна, проверьте низкий и высокий сценарии.' },
14
+ { question: 'Можно ли сравнить два автомобиля?', answer: 'Да. Включите сравнение и используйте одинаковые годовой пробег, период и валюту.' },
15
+ { question: 'Предсказывает ли результат точную стоимость поездки?', answer: 'Нет. Это планировочная оценка. Цены, ремонт, пробег и стоимость продажи могут измениться.' },
16
+ ];
17
+
18
+ const howTo: HowToStep[] = [
19
+ { name: 'Задайте годовой пробег', text: 'Введите километры, которые вы планируете проезжать за год.' },
20
+ { name: 'Добавьте топливо', text: 'Укажите расход на 100 километров и цену за литр.' },
21
+ { name: 'Добавьте расходы владения', text: 'Введите страховку, обслуживание, налоги, сборы и потерю стоимости.' },
22
+ { name: 'Прочитайте или сравните результат', text: 'Сравнивайте стоимость километра и доли постоянных расходов и топлива.' },
23
+ ];
24
+
25
+ export const content = createVehicleCostContent({
26
+ locale: 'ru', slug: 'kalkulyator-polnoy-stoimosti-avtomobilya-na-kilometr', title: 'Калькулятор полной стоимости автомобиля на километр', description: 'Рассчитайте реальную стоимость автомобиля на километр с учётом топлива, владения и годового пробега.', faqTitle: 'Часто задаваемые вопросы', bibliographyTitle: 'Библиографические источники', ui, faq, howTo,
27
+ seo: createVehicleCostSeo({
28
+ introTitle: 'Увидьте расходы, скрытые за каждым километром', introA: 'Одна только цена топлива не показывает настоящую стоимость автомобиля. Страховка, обслуживание, шины, налоги и потеря стоимости тоже влияют на решение. Калькулятор распределяет годовые расходы по ожидаемому пробегу и показывает их рядом с топливом.', introB: 'Введите данные своего автомобиля вместо общей средней величины. Основной результат - стоимость километра, дополненная месячной и годовой оценкой и визуальным разделением постоянных расходов и топлива.', costsTitle: 'Какие расходы включить', costsText: 'Топливо меняется вместе с пробегом. Страховка, обслуживание, сборы и амортизация вводятся как годовые суммы. При небольшом пробеге постоянные расходы на километр становятся выше.', costsHeaders: ['Ввод', 'Использование', 'Что проверить'], costsRows: [['Годовой пробег', 'Распределяет годовую сумму по километрам', 'Используйте реалистичный пробег'], ['Расход и цена', 'Создают переменные расходы на топливо', 'Используйте одинаковую основу для сценариев'], ['Страховка, обслуживание и налоги', 'Добавляют регулярные расходы', 'Не забудьте шины и проверки'], ['Потеря стоимости', 'Добавляет годовую амортизацию', 'Проверьте несколько цен продажи']], readTitle: 'Как читать дорогу расходов', readText: 'Постоянная часть показывает расходы, которые не растут напрямую с каждым километром. Топливная часть зависит от расстояния. Конечная точка показывает полную стоимость километра.', list: ['Проверьте осторожную и оптимистичную оценку потери стоимости.', 'Сравнивайте автомобили с одинаковым пробегом и валютой.', 'Через несколько месяцев замените оценки собственными записями.', 'Сопоставьте месячные и годовые суммы с реальным бюджетом.'], decisionTitle: 'Сравнивайте допущения для решения', decisionText: 'Сравнение полезно только при одинаковом периоде владения и одинаковых правилах. При выборе автомобиля или регулярного маршрута меняйте по одному допущению за раз.', tipTitle: 'Это модель планирования, а не смета', tipText: 'Калькулятор не получает рыночные цены, не подтверждает юридические расходы и не знает будущую цену продажи. Он делает ваши допущения прозрачными.'
29
+ }),
30
+ });