@jjlmoya/utils-nautical 1.16.0 → 1.17.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.
- package/package.json +1 -1
- package/src/category/i18n/de.ts +1 -1
- package/src/category/i18n/en.ts +1 -1
- package/src/category/i18n/es.ts +16 -16
- package/src/category/i18n/fr.ts +16 -16
- package/src/category/i18n/id.ts +1 -1
- package/src/category/i18n/it.ts +1 -1
- package/src/category/i18n/nl.ts +1 -1
- package/src/category/i18n/pl.ts +1 -1
- package/src/category/i18n/pt.ts +1 -1
- package/src/category/i18n/ru.ts +3 -3
- package/src/category/i18n/sv.ts +1 -1
- package/src/category/i18n/tr.ts +1 -1
- package/src/layouts/PreviewLayout.astro +1 -0
- package/src/tests/diacritics_density.test.ts +118 -0
- package/src/tests/inverted_punctuation.test.ts +84 -0
- package/src/tests/no_en_dash.test.ts +70 -0
- package/src/tests/script_density.test.ts +94 -0
- package/src/tool/endurance/i18n/es.ts +54 -54
- package/src/tool/endurance/i18n/fr.ts +70 -70
- package/src/tool/endurance/i18n/ru.ts +9 -9
- package/src/tool/nauticalConverter/i18n/es.ts +46 -46
- package/src/tool/nauticalConverter/i18n/fr.ts +53 -53
- package/src/tool/nauticalConverter/i18n/pl.ts +3 -3
- package/src/tool/nauticalConverter/i18n/ru.ts +8 -8
- package/src/tool/nauticalConverter/i18n/zh.ts +3 -3
- package/src/tool/sailArea/i18n/es.ts +53 -53
- package/src/tool/sailArea/i18n/fr.ts +70 -70
- package/src/tool/sailArea/i18n/ru.ts +8 -8
- package/src/tool/sailArea/i18n/zh.ts +5 -5
- package/src/tool/speedConverter/i18n/es.ts +58 -58
- package/src/tool/speedConverter/i18n/fr.ts +75 -75
- package/src/tool/speedConverter/i18n/ru.ts +6 -6
- package/src/tool/speedConverter/i18n/zh.ts +5 -5
- package/src/tool/tideCalculator/i18n/es.ts +39 -39
- package/src/tool/tideCalculator/i18n/fr.ts +43 -43
- package/src/tool/tideCalculator/i18n/ru.ts +6 -6
- package/src/tool/tideCalculator/i18n/zh.ts +1 -1
- package/src/tool/tideCalculator/tide-height-calculator.css +136 -5
- package/src/tool/underKeel/i18n/es.ts +39 -39
- package/src/tool/underKeel/i18n/fr.ts +45 -45
- package/src/tool/underKeel/i18n/ru.ts +5 -5
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { ALL_TOOLS } from '../tools';
|
|
3
|
+
|
|
4
|
+
type ScriptLocale = keyof typeof SCRIPT_RULES;
|
|
5
|
+
|
|
6
|
+
const SCRIPT_RULES = {
|
|
7
|
+
ja: {
|
|
8
|
+
language: 'Japanese',
|
|
9
|
+
scriptName: 'kana/kanji',
|
|
10
|
+
scriptCharacters: /[\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Han}]/gu,
|
|
11
|
+
minScriptRatio: 0.45,
|
|
12
|
+
},
|
|
13
|
+
ko: {
|
|
14
|
+
language: 'Korean',
|
|
15
|
+
scriptName: 'hangul',
|
|
16
|
+
scriptCharacters: /\p{Script=Hangul}/gu,
|
|
17
|
+
minScriptRatio: 0.55,
|
|
18
|
+
},
|
|
19
|
+
ru: {
|
|
20
|
+
language: 'Russian',
|
|
21
|
+
scriptName: 'cyrillic',
|
|
22
|
+
scriptCharacters: /\p{Script=Cyrillic}/gu,
|
|
23
|
+
minScriptRatio: 0.65,
|
|
24
|
+
},
|
|
25
|
+
zh: {
|
|
26
|
+
language: 'Chinese',
|
|
27
|
+
scriptName: 'han',
|
|
28
|
+
scriptCharacters: /\p{Script=Han}/gu,
|
|
29
|
+
minScriptRatio: 0.45,
|
|
30
|
+
},
|
|
31
|
+
} as const;
|
|
32
|
+
|
|
33
|
+
const LETTERS = /\p{L}/gu;
|
|
34
|
+
const TRANSLATABLE_KEYS = ['title', 'description', 'ui', 'seo', 'faq', 'howTo'] as const;
|
|
35
|
+
|
|
36
|
+
function collectStrings(value: unknown): string[] {
|
|
37
|
+
if (typeof value === 'string') return [value];
|
|
38
|
+
if (!value || typeof value !== 'object') return [];
|
|
39
|
+
if (Array.isArray(value)) return value.flatMap(collectStrings);
|
|
40
|
+
return Object.values(value).flatMap(collectStrings);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function normalizeText(value: unknown): string {
|
|
44
|
+
return collectStrings(value).join(' ').normalize('NFC');
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function translatableContent(content: Record<string, unknown>) {
|
|
48
|
+
return TRANSLATABLE_KEYS.map((key) => content[key]);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function letterCount(text: string): number {
|
|
52
|
+
return text.match(LETTERS)?.length ?? 0;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function scriptCount(text: string, locale: ScriptLocale): number {
|
|
56
|
+
return text.match(SCRIPT_RULES[locale].scriptCharacters)?.length ?? 0;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function scriptRatio(text: string, locale: ScriptLocale): number {
|
|
60
|
+
const letters = letterCount(text);
|
|
61
|
+
if (letters === 0) return 0;
|
|
62
|
+
return scriptCount(text, locale) / letters;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
describe('Native script density validation', () => {
|
|
66
|
+
ALL_TOOLS.forEach((tool) => {
|
|
67
|
+
describe(`Tool: ${tool.entry.id}`, () => {
|
|
68
|
+
Object.keys(SCRIPT_RULES).forEach((locale) => {
|
|
69
|
+
it(`${locale} keeps most translated text in its native script`, async () => {
|
|
70
|
+
const typedLocale = locale as ScriptLocale;
|
|
71
|
+
const loader = tool.entry.i18n[typedLocale];
|
|
72
|
+
if (!loader) return;
|
|
73
|
+
|
|
74
|
+
const content = await loader();
|
|
75
|
+
const rule = SCRIPT_RULES[typedLocale];
|
|
76
|
+
const text = normalizeText(translatableContent(content as Record<string, unknown>));
|
|
77
|
+
const letters = letterCount(text);
|
|
78
|
+
const matches = scriptCount(text, typedLocale);
|
|
79
|
+
const ratio = scriptRatio(text, typedLocale);
|
|
80
|
+
|
|
81
|
+
expect(
|
|
82
|
+
ratio,
|
|
83
|
+
[
|
|
84
|
+
`Possible broken translation detected in ${tool.entry.id}/${typedLocale} (${rule.language}).`,
|
|
85
|
+
`The text has ${matches} ${rule.scriptName} characters out of ${letters} analyzed letters (${(ratio * 100).toFixed(1)}%).`,
|
|
86
|
+
`Most translatable content should be written in ${rule.scriptName} script.`,
|
|
87
|
+
'Non-translatable fields such as slug, bibliography, and schemas are ignored to avoid false positives.',
|
|
88
|
+
].join(' '),
|
|
89
|
+
).toBeGreaterThanOrEqual(rule.minScriptRatio);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
});
|
|
@@ -3,29 +3,29 @@ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dt
|
|
|
3
3
|
import type { EnduranceUI, EnduranceLocaleContent } from '../index';
|
|
4
4
|
|
|
5
5
|
const slug = 'calculadora-autonomia-nautica';
|
|
6
|
-
const title = 'Calculadora de
|
|
6
|
+
const title = 'Calculadora de Autonomía Náutica';
|
|
7
7
|
const description =
|
|
8
|
-
'Calcula tu alcance
|
|
8
|
+
'Calcula tu alcance máximo y distancia segura según consumo, capacidad y velocidad de crucero. Gestión de combustible para embarcaciones a motor.';
|
|
9
9
|
|
|
10
10
|
const ui: EnduranceUI = {
|
|
11
|
-
tankCapacityLabel: 'Capacidad del
|
|
11
|
+
tankCapacityLabel: 'Capacidad del Depósito',
|
|
12
12
|
mainTankLabel: 'Ppal',
|
|
13
13
|
auxTankLabel: 'Aux',
|
|
14
14
|
currentFuelLabel: 'Combustible Actual',
|
|
15
15
|
seaConditionsLabel: 'Condiciones Mar/Viento',
|
|
16
|
-
consumptionLabel: 'Consumo
|
|
16
|
+
consumptionLabel: 'Consumo Teórico',
|
|
17
17
|
cruiseSpeedLabel: 'Velocidad Crucero',
|
|
18
18
|
reserveLabel: 'Reserva',
|
|
19
19
|
fuelPriceLabel: 'Precio Litro',
|
|
20
|
-
maxRangeLabel: 'Alcance
|
|
20
|
+
maxRangeLabel: 'Alcance Máximo',
|
|
21
21
|
realPerformanceLabel: 'Rendimiento Real',
|
|
22
|
-
hoursLabel: '
|
|
22
|
+
hoursLabel: 'Autonomía Horas',
|
|
23
23
|
safeMilesLabel: 'Millas Seguras',
|
|
24
24
|
tankValueLabel: 'Valor Tanque',
|
|
25
|
-
inverseCalcLabel: 'Calculo Inverso: ¿
|
|
25
|
+
inverseCalcLabel: 'Calculo Inverso: ¿Cuánto necesito repostar?',
|
|
26
26
|
desiredDistLabel: 'Distancia Deseada',
|
|
27
|
-
minFuelLabel: 'Combustible
|
|
28
|
-
warningLabel: 'Recordatorio: Una reserva del 20% es el
|
|
27
|
+
minFuelLabel: 'Combustible Mínimo Requerido',
|
|
28
|
+
warningLabel: 'Recordatorio: Una reserva del 20% es el mínimo absoluto recomendado por seguridad náutica.',
|
|
29
29
|
seaCalm: 'Calma (1.0x)',
|
|
30
30
|
seaLight: 'Marejadilla (+15%)',
|
|
31
31
|
seaModerate: 'Marejada (+30%)',
|
|
@@ -34,59 +34,59 @@ const ui: EnduranceUI = {
|
|
|
34
34
|
|
|
35
35
|
const faq: EnduranceLocaleContent['faq'] = [
|
|
36
36
|
{
|
|
37
|
-
question: '¿
|
|
38
|
-
answer: 'La
|
|
37
|
+
question: '¿Cómo se calcula la autonomía de una embarcación a motor?',
|
|
38
|
+
answer: 'La autonomía se calcula dividiendo el combustible disponible entre el consumo horario para obtener las horas totales, y multiplicando ese tiempo por la velocidad de crucero. La herramienta aplica además un factor de mar para reflejar condiciones reales de navegación.',
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
|
-
question: '¿Por
|
|
42
|
-
answer: 'La reserva del 20% es un
|
|
41
|
+
question: '¿Por qué se recomienda una reserva del 20% en náutica?',
|
|
42
|
+
answer: 'La reserva del 20% es un estándar de seguridad náutica que garantiza combustible suficiente ante imprevistos: corrientes contrarias, rodeos por mal tiempo, fallos en las previsiones de consumo o necesidad de asistir a otra embarcación. Muchas aseguradoras y capitanías lo consideran obligatorio.',
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
|
-
question: '¿
|
|
46
|
-
answer: 'El rendimiento en litros por milla
|
|
45
|
+
question: '¿Qué es el rendimiento en L/MN y cómo afecta a la planificación?',
|
|
46
|
+
answer: 'El rendimiento en litros por milla náutica (L/MN) es la eficiencia real del motor en condiciones de mar. A diferencia del consumo horario, permite calcular exactamente cuánto combustible necesitas para recorrer una distancia concreta, independientemente de tu velocidad.',
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
|
-
question: '¿
|
|
50
|
-
answer: 'El estado del mar incrementa el consumo porque el casco trabaja
|
|
49
|
+
question: '¿Cómo influye el estado del mar en el consumo real?',
|
|
50
|
+
answer: 'El estado del mar incrementa el consumo porque el casco trabaja más contra la resistencia del agua y el viento. En marejadilla el consumo aumenta un 15%, en marejada un 30% y en temporal puede dispararse un 60% o más. Ignorar este factor puede dejar una embarcación sin combustible antes de llegar a puerto.',
|
|
51
51
|
},
|
|
52
52
|
];
|
|
53
53
|
|
|
54
54
|
const howTo: EnduranceLocaleContent['howTo'] = [
|
|
55
55
|
{
|
|
56
|
-
name: 'Introduce la capacidad de tus
|
|
57
|
-
text: 'Indica los litros del
|
|
56
|
+
name: 'Introduce la capacidad de tus depósitos',
|
|
57
|
+
text: 'Indica los litros del depósito principal y del auxiliar si tienes uno. La herramienta calculará el porcentaje de llenado actual.',
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
name: 'Indica el combustible actual',
|
|
61
|
-
text: 'Introduce los litros reales que tienes en este momento. Puedes medirlos con el nivel del barco o estimarlos
|
|
61
|
+
text: 'Introduce los litros reales que tienes en este momento. Puedes medirlos con el nivel del barco o estimarlos según el último repostaje.',
|
|
62
62
|
},
|
|
63
63
|
{
|
|
64
|
-
name: 'Ajusta las condiciones de
|
|
65
|
-
text: 'Selecciona el estado del mar previsto para tu
|
|
64
|
+
name: 'Ajusta las condiciones de navegación',
|
|
65
|
+
text: 'Selecciona el estado del mar previsto para tu travesía. El factor de mar corrige el consumo teórico al consumo real esperado.',
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
68
|
name: 'Introduce consumo y velocidad de crucero',
|
|
69
|
-
text: 'Usa los datos del fabricante o tus propios registros de consumo horario y la velocidad a la que
|
|
69
|
+
text: 'Usa los datos del fabricante o tus propios registros de consumo horario y la velocidad a la que navegarás habitualmente.',
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
|
-
name: 'Revisa la distancia segura y el
|
|
73
|
-
text: 'La herramienta te muestra
|
|
72
|
+
name: 'Revisa la distancia segura y el cálculo inverso',
|
|
73
|
+
text: 'La herramienta te muestra cuántas millas puedes recorrer con seguridad y cuánto combustible necesitas para llegar a un destino concreto.',
|
|
74
74
|
},
|
|
75
75
|
];
|
|
76
76
|
|
|
77
77
|
const seo: EnduranceLocaleContent['seo'] = [
|
|
78
78
|
{
|
|
79
79
|
type: 'title',
|
|
80
|
-
text: '
|
|
80
|
+
text: 'Gestión de Combustible y Autonomía en Navegación a Motor',
|
|
81
81
|
level: 2,
|
|
82
82
|
},
|
|
83
83
|
{
|
|
84
84
|
type: 'paragraph',
|
|
85
|
-
html: 'La <strong>
|
|
85
|
+
html: 'La <strong>autonomía náutica</strong> es uno de los cálculos más críticos antes de zarpar en una embarcación a motor. Conocer con precisión cuántas millas puedes recorrer con el combustible disponible es la diferencia entre una travesía planificada y una emergencia en alta mar.',
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
88
|
type: 'paragraph',
|
|
89
|
-
html: 'Esta calculadora de
|
|
89
|
+
html: 'Esta calculadora de autonomía integra el <strong>factor de condiciones de mar</strong>, el porcentaje de reserva de seguridad y el cálculo inverso de combustible necesario para que la gestión de combustible sea completa y fiable en cualquier situación.',
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
92
|
type: 'title',
|
|
@@ -95,19 +95,19 @@ const seo: EnduranceLocaleContent['seo'] = [
|
|
|
95
95
|
},
|
|
96
96
|
{
|
|
97
97
|
type: 'paragraph',
|
|
98
|
-
html: 'La regla
|
|
98
|
+
html: 'La regla clásica de gestión de combustible en náutica divide el depósito en tres partes iguales para garantizar siempre un margen de seguridad:',
|
|
99
99
|
},
|
|
100
100
|
{
|
|
101
101
|
type: 'list',
|
|
102
102
|
items: [
|
|
103
103
|
'<strong>Un tercio para la ida:</strong> El combustible necesario para llegar al destino previsto.',
|
|
104
|
-
'<strong>Un tercio para la vuelta:</strong> El combustible de regreso al puerto de salida o al
|
|
104
|
+
'<strong>Un tercio para la vuelta:</strong> El combustible de regreso al puerto de salida o al más cercano.',
|
|
105
105
|
'<strong>Un tercio de reserva:</strong> El margen de seguridad ante imprevistos, corrientes o condiciones adversas.',
|
|
106
106
|
],
|
|
107
107
|
},
|
|
108
108
|
{
|
|
109
109
|
type: 'paragraph',
|
|
110
|
-
html: 'En la calculadora puedes configurar el porcentaje de reserva
|
|
110
|
+
html: 'En la calculadora puedes configurar el porcentaje de reserva según tu criterio, aunque <strong>nunca se recomienda bajar del 20%</strong>. Con depósitos más grandes o travesías largas, muchos patrones experimentados elevan este margen al 30% o incluso al 33%.',
|
|
111
111
|
},
|
|
112
112
|
{
|
|
113
113
|
type: 'title',
|
|
@@ -116,30 +116,30 @@ const seo: EnduranceLocaleContent['seo'] = [
|
|
|
116
116
|
},
|
|
117
117
|
{
|
|
118
118
|
type: 'paragraph',
|
|
119
|
-
html: 'El consumo
|
|
119
|
+
html: 'El consumo teórico del fabricante se calcula en condiciones ideales de laboratorio. En la práctica, múltiples factores alteran el <strong>consumo real</strong> de combustible. La velocidad de casco es el más determinante: navegar a velocidades superiores a la velocidad económica puede duplicar o triplicar el consumo por milla recorrida.',
|
|
120
120
|
},
|
|
121
121
|
{
|
|
122
122
|
type: 'table',
|
|
123
|
-
headers: ['Estado de la
|
|
123
|
+
headers: ['Estado de la Navegación', 'Efecto en la Autonomía', 'Consejo'],
|
|
124
124
|
rows: [
|
|
125
|
-
['<strong>Casco con Incrustaciones</strong>', 'Reduce la
|
|
125
|
+
['<strong>Casco con Incrustaciones</strong>', 'Reduce la autonomía hasta un 20%', 'Limpia el casco antes de temporada'],
|
|
126
126
|
['<strong>Corriente en Contra</strong>', 'Puede reducir la velocidad efectiva un 30%', 'Calcula siempre con la velocidad real sobre el fondo'],
|
|
127
|
-
['<strong>Viento de Proa</strong>', 'Aumenta la resistencia y el consumo un 10-25%', 'Usa el factor de marejada o marejada para el
|
|
127
|
+
['<strong>Viento de Proa</strong>', 'Aumenta la resistencia y el consumo un 10-25%', 'Usa el factor de marejada o marejada para el cálculo'],
|
|
128
128
|
['<strong>Exceso de Carga</strong>', 'Aumenta el calado y la resistencia', 'Pesa el equipo y provisiones antes de calcular'],
|
|
129
129
|
],
|
|
130
130
|
},
|
|
131
131
|
{
|
|
132
132
|
type: 'title',
|
|
133
|
-
text: 'Glosario
|
|
133
|
+
text: 'Glosario Técnico de Autonomía',
|
|
134
134
|
level: 3,
|
|
135
135
|
},
|
|
136
136
|
{
|
|
137
137
|
type: 'glossary',
|
|
138
138
|
items: [
|
|
139
|
-
{ term: 'Rendimiento (L/MN)', definition: 'Litros de combustible consumidos por cada milla
|
|
140
|
-
{ term: 'Velocidad de Crucero', definition: 'La velocidad
|
|
141
|
-
{ term: 'Reserva
|
|
142
|
-
{ term: 'Consumo
|
|
139
|
+
{ term: 'Rendimiento (L/MN)', definition: 'Litros de combustible consumidos por cada milla náutica recorrida. Es el indicador más útil para planificar travesías porque relaciona consumo con distancia real.' },
|
|
140
|
+
{ term: 'Velocidad de Crucero', definition: 'La velocidad óptima a la que el motor ofrece el mejor equilibrio entre velocidad y consumo. Generalmente entre el 70% y el 80% de la potencia máxima.' },
|
|
141
|
+
{ term: 'Reserva Crítica', definition: 'El porcentaje del depósito que nunca debe consumirse. Se recomienda un mínimo del 20% para cubrir imprevistos y evitar que entre aire en el circuito de combustible.' },
|
|
142
|
+
{ term: 'Consumo Específico', definition: 'Gramos de combustible por kilovatio-hora de potencia producida (g/kWh). Medida técnica del motor que permite comparar la eficiencia entre distintos propulsores.' },
|
|
143
143
|
],
|
|
144
144
|
},
|
|
145
145
|
{
|
|
@@ -149,48 +149,48 @@ const seo: EnduranceLocaleContent['seo'] = [
|
|
|
149
149
|
},
|
|
150
150
|
{
|
|
151
151
|
type: 'paragraph',
|
|
152
|
-
html: 'Una fuente habitual de problemas en embarcaciones con poco combustible son los <strong>lodos del fondo del
|
|
152
|
+
html: 'Una fuente habitual de problemas en embarcaciones con poco combustible son los <strong>lodos del fondo del depósito</strong>. Cuando el nivel baja mucho, los sedimentos acumulados durante años pueden llegar al filtro y taponarlo, dejando el motor sin combustible aunque el nivel marque algunos litros.',
|
|
153
153
|
},
|
|
154
154
|
{
|
|
155
155
|
type: 'paragraph',
|
|
156
|
-
html: 'El movimiento del barco en mar con poco combustible
|
|
156
|
+
html: 'El movimiento del barco en mar con poco combustible también puede causar problemas: el líquido oscila con las olas y puede dejar momentáneamente sin alimentación a la bomba. Mantener la reserva garantiza que esto no ocurra en un momento crítico como una maniobra de entrada a puerto.',
|
|
157
157
|
},
|
|
158
158
|
{
|
|
159
159
|
type: 'tip',
|
|
160
160
|
title: 'Consejo de Ahorro',
|
|
161
|
-
html: 'Reducir la velocidad entre un 10% y un 15% respecto a la de crucero habitual puede mejorar la eficiencia hasta un 30%. Si tienes tiempo y el tiempo
|
|
161
|
+
html: 'Reducir la velocidad entre un 10% y un 15% respecto a la de crucero habitual puede mejorar la eficiencia hasta un 30%. Si tienes tiempo y el tiempo acompaña, navegar más despacio es siempre la decisión más económica y segura.',
|
|
162
162
|
},
|
|
163
163
|
{
|
|
164
164
|
type: 'title',
|
|
165
|
-
text: 'Diferencia entre Millas Náuticas (MN) y
|
|
165
|
+
text: 'Diferencia entre Millas Náuticas (MN) y Kilómetros',
|
|
166
166
|
level: 3,
|
|
167
167
|
},
|
|
168
168
|
{
|
|
169
169
|
type: 'paragraph',
|
|
170
|
-
html: 'Una <strong>milla
|
|
170
|
+
html: 'Una <strong>milla náutica</strong> equivale a 1.852 metros (1,852 km), y es la unidad de distancia universal en navegación marítima y aérea. Está basada en el arco de un minuto de grado geográfico, lo que la hace ideal para la navegación con cartas en coordenadas geográficas. La velocidad en millas náuticas por hora se denomina nudo (kn).',
|
|
171
171
|
},
|
|
172
172
|
{
|
|
173
173
|
type: 'comparative',
|
|
174
174
|
items: [
|
|
175
175
|
{
|
|
176
|
-
title: 'Indicador
|
|
176
|
+
title: 'Indicador Analógico de Aguja',
|
|
177
177
|
description: 'Sistema tradicional de flotador',
|
|
178
178
|
points: [
|
|
179
|
-
'Bajo coste y sencillez de
|
|
179
|
+
'Bajo coste y sencillez de instalación',
|
|
180
180
|
'No requiere electricidad para funcionar',
|
|
181
|
-
'
|
|
182
|
-
'No muestra consumo ni
|
|
181
|
+
'Imprecisión en mar movido por el movimiento del combustible',
|
|
182
|
+
'No muestra consumo ni autonomía estimada',
|
|
183
183
|
],
|
|
184
184
|
},
|
|
185
185
|
{
|
|
186
186
|
title: 'Calculador de Flujo Digital',
|
|
187
|
-
description: 'Sensores
|
|
187
|
+
description: 'Sensores electrónicos de caudal',
|
|
188
188
|
highlight: true,
|
|
189
189
|
points: [
|
|
190
|
-
'
|
|
191
|
-
'Muestra
|
|
190
|
+
'Précisión del 1-2% en el consumo real',
|
|
191
|
+
'Muestra autonomía, consumo y coste en tiempo real',
|
|
192
192
|
'Integrable con chartplotters y NMEA 2000',
|
|
193
|
-
'Requiere
|
|
193
|
+
'Requiere calibración inicial y mantenimiento',
|
|
194
194
|
],
|
|
195
195
|
},
|
|
196
196
|
],
|
|
@@ -219,7 +219,7 @@ const schemas: EnduranceLocaleContent['schemas'] = [
|
|
|
219
219
|
{
|
|
220
220
|
'@context': 'https://schema.org',
|
|
221
221
|
'@type': 'HowTo',
|
|
222
|
-
name: `
|
|
222
|
+
name: `Cómo usar: ${title}`,
|
|
223
223
|
step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
|
|
224
224
|
} as WithContext<HowTo>,
|
|
225
225
|
];
|
|
@@ -5,168 +5,168 @@ import type { EnduranceUI, EnduranceLocaleContent } from '../index';
|
|
|
5
5
|
const slug = 'calculateur-autonomie-nautique';
|
|
6
6
|
const title = "Calculateur d'Autonomie Nautique";
|
|
7
7
|
const description =
|
|
8
|
-
"Calculez votre
|
|
8
|
+
"Calculez votre portée maximale et la distance sécurisée selon la consommation, la capacité du réservoir et la vitesse de croisière. Gestion du carburant pour bateaux à moteur.";
|
|
9
9
|
|
|
10
10
|
const ui: EnduranceUI = {
|
|
11
|
-
tankCapacityLabel: '
|
|
11
|
+
tankCapacityLabel: 'Capacité du Réservoir',
|
|
12
12
|
mainTankLabel: 'Principal',
|
|
13
13
|
auxTankLabel: 'Aux',
|
|
14
|
-
currentFuelLabel: 'Carburant
|
|
14
|
+
currentFuelLabel: 'Carburant actuel',
|
|
15
15
|
seaConditionsLabel: 'Conditions Mer / Vent',
|
|
16
|
-
consumptionLabel: 'Consommation
|
|
17
|
-
cruiseSpeedLabel: 'Vitesse de
|
|
18
|
-
reserveLabel: '
|
|
16
|
+
consumptionLabel: 'Consommation théorique',
|
|
17
|
+
cruiseSpeedLabel: 'Vitesse de croisière',
|
|
18
|
+
reserveLabel: 'Réserve',
|
|
19
19
|
fuelPriceLabel: 'Prix au Litre',
|
|
20
|
-
maxRangeLabel: '
|
|
21
|
-
realPerformanceLabel: 'Performance
|
|
22
|
-
hoursLabel: "Autonomie en
|
|
23
|
-
safeMilesLabel: 'Miles
|
|
24
|
-
tankValueLabel: 'Valeur du
|
|
25
|
-
inverseCalcLabel: 'Calcul
|
|
26
|
-
desiredDistLabel: 'Distance
|
|
27
|
-
minFuelLabel: 'Carburant
|
|
28
|
-
warningLabel: 'Rappel
|
|
20
|
+
maxRangeLabel: 'Portée maximale',
|
|
21
|
+
realPerformanceLabel: 'Performance réelle',
|
|
22
|
+
hoursLabel: "Autonomie en heures",
|
|
23
|
+
safeMilesLabel: 'Miles sécurisés',
|
|
24
|
+
tankValueLabel: 'Valeur du réservoir',
|
|
25
|
+
inverseCalcLabel: 'Calcul inverse: Combien dois-je ravitailler ?',
|
|
26
|
+
desiredDistLabel: 'Distance souhaitée',
|
|
27
|
+
minFuelLabel: 'Carburant minimum requis',
|
|
28
|
+
warningLabel: 'Rappel: Une réserve de 20% est le minimum absolu recommandé par la sécurité nautique.',
|
|
29
29
|
seaCalm: 'Calme (1.0x)',
|
|
30
30
|
seaLight: 'Petite houle (+15%)',
|
|
31
|
-
seaModerate: 'Houle
|
|
32
|
-
seaStorm: '
|
|
31
|
+
seaModerate: 'Houle modérée (+30%)',
|
|
32
|
+
seaStorm: 'Tempête (+60%)',
|
|
33
33
|
};
|
|
34
34
|
|
|
35
35
|
const faq: EnduranceLocaleContent['faq'] = [
|
|
36
36
|
{
|
|
37
|
-
question: "Comment calcule-t-on l'autonomie d'un bateau
|
|
38
|
-
answer: "L'autonomie se calcule en divisant le carburant disponible par la consommation horaire pour obtenir les heures totales, puis en multipliant ce temps par la vitesse de
|
|
37
|
+
question: "Comment calcule-t-on l'autonomie d'un bateau à moteur ?",
|
|
38
|
+
answer: "L'autonomie se calcule en divisant le carburant disponible par la consommation horaire pour obtenir les heures totales, puis en multipliant ce temps par la vitesse de croisière. L'outil applique également un facteur d'état de mer pour refléter les conditions réelles de navigation.",
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
|
-
question: "Pourquoi recommande-t-on une
|
|
42
|
-
answer: "La
|
|
41
|
+
question: "Pourquoi recommande-t-on une réserve de 20% en navigation ?",
|
|
42
|
+
answer: "La réserve de 20% est une norme de sécurité nautique qui garantit un carburant suffisant en cas d'imprévu: courants contraires, détours par mauvais temps, erreurs dans les estimations de consommation ou nécessité d'assister un autre bateau. De nombreux assureurs et capitaineries la considèrent obligatoire.",
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
question: "Qu'est-ce que la performance en L/NM et comment affecte-t-elle la planification ?",
|
|
46
|
-
answer: "La performance en litres par mille nautique (L/NM) est l'
|
|
46
|
+
answer: "La performance en litres par mille nautique (L/NM) est l'efficacité réelle du moteur dans les conditions de mer. Contrairement à la consommation horaire, elle permet de calculer exactement la quantité de carburant nécessaire pour parcourir une distance précise, quelle que soit la vitesse.",
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
|
-
question: "Comment l'
|
|
50
|
-
answer: "L'
|
|
49
|
+
question: "Comment l'état de la mer affecte-t-il la consommation réelle ?",
|
|
50
|
+
answer: "L'état de la mer augmente la consommation car la coque travaille davantage contre la résistance de l'eau et du vent. Par petite houle la consommation augmente de 15%, par houle modérée de 30%, et par tempête elle peut bondir de 60% ou plus. Ignorer ce facteur peut laisser un bateau sans carburant avant d'arriver au port.",
|
|
51
51
|
},
|
|
52
52
|
];
|
|
53
53
|
|
|
54
54
|
const howTo: EnduranceLocaleContent['howTo'] = [
|
|
55
55
|
{
|
|
56
|
-
name: 'Saisissez la
|
|
57
|
-
text: "Indiquez les litres du
|
|
56
|
+
name: 'Saisissez la capacité de vos réservoirs',
|
|
57
|
+
text: "Indiquez les litres du réservoir principal et de l'auxiliaire si vous en avez un. L'outil calculera le pourcentage de remplissage actuel.",
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
name: 'Indiquez le carburant actuel',
|
|
61
|
-
text: "Saisissez les litres
|
|
61
|
+
text: "Saisissez les litres réels que vous avez en ce moment. Vous pouvez les mesurer avec la jauge du bateau ou les estimer d'après le dernier ravitaillement.",
|
|
62
62
|
},
|
|
63
63
|
{
|
|
64
64
|
name: 'Ajustez les conditions de navigation',
|
|
65
|
-
text: "
|
|
65
|
+
text: "Sélectionnez l'état de mer prévu pour votre traversée. Le facteur de mer corrige la consommation théorique à la consommation réelle attendue.",
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
|
-
name: 'Saisissez la consommation et la vitesse de
|
|
69
|
-
text: 'Utilisez les
|
|
68
|
+
name: 'Saisissez la consommation et la vitesse de croisière',
|
|
69
|
+
text: 'Utilisez les données du fabricant ou vos propres enregistrements de consommation horaire et de vitesse de navigation habituelle.',
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
|
-
name: '
|
|
73
|
-
text: "L'outil vous montre combien de miles vous pouvez parcourir en
|
|
72
|
+
name: 'Vérifiez la distance sécurisée et le calcul inverse',
|
|
73
|
+
text: "L'outil vous montre combien de miles vous pouvez parcourir en sécurité et combien de carburant vous avez besoin pour atteindre une destination précise.",
|
|
74
74
|
},
|
|
75
75
|
];
|
|
76
76
|
|
|
77
77
|
const seo: EnduranceLocaleContent['seo'] = [
|
|
78
|
-
{ type: 'title', text: 'Gestion du Carburant et Autonomie en Navigation
|
|
78
|
+
{ type: 'title', text: 'Gestion du Carburant et Autonomie en Navigation à Moteur', level: 2 },
|
|
79
79
|
{
|
|
80
80
|
type: 'paragraph',
|
|
81
|
-
html: "L'<strong>autonomie nautique</strong> est l'un des calculs les plus critiques avant d'appareiller sur un bateau
|
|
81
|
+
html: "L'<strong>autonomie nautique</strong> est l'un des calculs les plus critiques avant d'appareiller sur un bateau à moteur. Connaître avec précision le nombre de miles que vous pouvez parcourir avec le carburant disponible est la différence entre une traversée planifiée et une urgence en haute mer.",
|
|
82
82
|
},
|
|
83
83
|
{
|
|
84
84
|
type: 'paragraph',
|
|
85
|
-
html: "Ce calculateur d'autonomie
|
|
85
|
+
html: "Ce calculateur d'autonomie intègre le <strong>facteur de conditions de mer</strong>, le pourcentage de réserve de sécurité et le calcul inverse du carburant nécessaire pour que la gestion du carburant soit complète et fiable dans toute situation.",
|
|
86
86
|
},
|
|
87
|
-
{ type: 'title', text: "La
|
|
87
|
+
{ type: 'title', text: "La Règle d'Or: La Règle des Tiers", level: 3 },
|
|
88
88
|
{
|
|
89
89
|
type: 'paragraph',
|
|
90
|
-
html: 'La
|
|
90
|
+
html: 'La règle classique de gestion du carburant en nautisme divise le réservoir en trois parties égales pour garantir toujours une marge de sécurité:',
|
|
91
91
|
},
|
|
92
92
|
{
|
|
93
93
|
type: 'list',
|
|
94
94
|
items: [
|
|
95
|
-
"<strong>Un tiers pour l'aller
|
|
96
|
-
'<strong>Un tiers pour le retour
|
|
97
|
-
"<strong>Un tiers de
|
|
95
|
+
"<strong>Un tiers pour l'aller:</strong> Le carburant nécessaire pour atteindre la destination prévue.",
|
|
96
|
+
'<strong>Un tiers pour le retour:</strong> Le carburant pour revenir au port de départ ou au plus proche.',
|
|
97
|
+
"<strong>Un tiers de réserve:</strong> La marge de sécurité en cas d'imprévu, de courants ou de conditions adverses.",
|
|
98
98
|
],
|
|
99
99
|
},
|
|
100
100
|
{
|
|
101
101
|
type: 'paragraph',
|
|
102
|
-
html: "Dans le calculateur, vous pouvez configurer le pourcentage de
|
|
102
|
+
html: "Dans le calculateur, vous pouvez configurer le pourcentage de réserve selon votre critère, bien que <strong>descendre sous 20% ne soit jamais recommandé</strong>. Avec de grands réservoirs ou des traversées longues, de nombreux skippers expérimentés élèvent cette marge à 30% voire 33%.",
|
|
103
103
|
},
|
|
104
104
|
{ type: 'title', text: 'Facteurs affectant la Consommation (l/h)', level: 3 },
|
|
105
105
|
{
|
|
106
106
|
type: 'paragraph',
|
|
107
|
-
html: "La consommation
|
|
107
|
+
html: "La consommation théorique du fabricant est calculée dans des conditions idéales de laboratoire. En pratique, de multiples facteurs modifient la <strong>consommation réelle</strong> de carburant. La vitesse de coque est la plus déterminante: naviguer au-delà de la vitesse économique peut doubler ou tripler la consommation par mille parcouru.",
|
|
108
108
|
},
|
|
109
109
|
{
|
|
110
110
|
type: 'table',
|
|
111
|
-
headers: ['
|
|
111
|
+
headers: ['État de Navigation', "Effet sur l'Autonomie", 'Conseil'],
|
|
112
112
|
rows: [
|
|
113
|
-
['<strong>Coque
|
|
114
|
-
['<strong>Courant Contraire</strong>', 'Peut
|
|
115
|
-
['<strong>Vent Debout</strong>', 'Augmente la
|
|
116
|
-
['<strong>Surcharge</strong>', "Augmente le tirant d'eau et la
|
|
113
|
+
['<strong>Coque Encrassée</strong>', "Réduit l'autonomie jusqu'à 20%", 'Nettoyez la coque avant la saison'],
|
|
114
|
+
['<strong>Courant Contraire</strong>', 'Peut réduire la vitesse effective de 30%', 'Calculez toujours avec la vitesse sur le fond'],
|
|
115
|
+
['<strong>Vent Debout</strong>', 'Augmente la résistance et la consommation de 10-25%', 'Utilisez le facteur petite ou modérée houle'],
|
|
116
|
+
['<strong>Surcharge</strong>', "Augmente le tirant d'eau et la résistance", "Pesez l'équipement avant de calculer"],
|
|
117
117
|
],
|
|
118
118
|
},
|
|
119
119
|
{ type: 'title', text: "Glossaire Technique d'Autonomie", level: 3 },
|
|
120
120
|
{
|
|
121
121
|
type: 'glossary',
|
|
122
122
|
items: [
|
|
123
|
-
{ term: 'Performance (L/NM)', definition: "Litres de carburant
|
|
124
|
-
{ term: 'Vitesse de
|
|
125
|
-
{ term: '
|
|
126
|
-
{ term: 'Consommation
|
|
123
|
+
{ term: 'Performance (L/NM)', definition: "Litres de carburant consommés par mille nautique parcouru. L'indicateur le plus utile pour planifier les traversées car il relie la consommation à la distance réelle." },
|
|
124
|
+
{ term: 'Vitesse de Croisière', definition: 'La vitesse optimale à laquelle le moteur offre le meilleur équilibre entre vitesse et consommation. Généralement entre 70% et 80% de la puissance maximale.' },
|
|
125
|
+
{ term: 'Réserve Critique', definition: "Le pourcentage du réservoir qui ne doit jamais être consommé. Un minimum de 20% est recommandé pour couvrir les imprévus et empêcher l'air d'entrer dans le circuit de carburant." },
|
|
126
|
+
{ term: 'Consommation Spécifique', definition: "Grammes de carburant par kilowattheure de puissance produite (g/kWh). Mesure technique du moteur permettant de comparer l'efficacité entre différents systèmes de propulsion." },
|
|
127
127
|
],
|
|
128
128
|
},
|
|
129
129
|
{ type: 'title', text: 'Le Danger des Boues et du Mouvement', level: 3 },
|
|
130
130
|
{
|
|
131
131
|
type: 'paragraph',
|
|
132
|
-
html: 'Une source courante de
|
|
132
|
+
html: 'Une source courante de problèmes sur les bateaux avec peu de carburant est les <strong>boues de fond de réservoir</strong>. Quand le niveau baisse trop, les sédiments accumulés pendant des années peuvent atteindre le filtre et le boucher, laissant le moteur sans carburant même si la jauge indique encore quelques litres.',
|
|
133
133
|
},
|
|
134
134
|
{
|
|
135
135
|
type: 'paragraph',
|
|
136
|
-
html: "Le mouvement du bateau en mer avec peu de carburant peut aussi causer des
|
|
136
|
+
html: "Le mouvement du bateau en mer avec peu de carburant peut aussi causer des problèmes: le liquide oscille avec les vagues et peut momentanément priver la pompe d'alimentation. Maintenir la réserve garantit que cela ne se produise pas à un moment critique comme une manœuvre d'entrée au port.",
|
|
137
137
|
},
|
|
138
138
|
{
|
|
139
139
|
type: 'tip',
|
|
140
|
-
title: "Conseil d'
|
|
141
|
-
html: "
|
|
140
|
+
title: "Conseil d'Économie de Carburant",
|
|
141
|
+
html: "Réduire la vitesse de 10-15% par rapport à votre vitesse de croisière habituelle peut améliorer l'efficacité jusqu'à 30%. Si vous avez le temps et que le temps le permet, naviguer plus lentement est toujours la décision la plus économique et la plus sûre.",
|
|
142
142
|
},
|
|
143
|
-
{ type: 'title', text: '
|
|
143
|
+
{ type: 'title', text: 'Différence entre Miles Nautiques (NM) et Kilomètres', level: 3 },
|
|
144
144
|
{
|
|
145
145
|
type: 'paragraph',
|
|
146
|
-
html: "Un <strong>mille nautique</strong>
|
|
146
|
+
html: "Un <strong>mille nautique</strong> équivaut à 1 852 mètres (1,852 km), et est l'unité de distance universelle en navigation maritime et aéronautique. Il est basé sur l'arc d'une minute de degré géographique, ce qui le rend idéal pour la navigation avec des cartes en coordonnées géographiques. La vitesse en milles nautiques par heure s'appelle un nœud (kn).",
|
|
147
147
|
},
|
|
148
148
|
{
|
|
149
149
|
type: 'comparative',
|
|
150
150
|
items: [
|
|
151
151
|
{
|
|
152
|
-
title: 'Jauge Analogique
|
|
153
|
-
description: '
|
|
152
|
+
title: 'Jauge Analogique à Aiguille',
|
|
153
|
+
description: 'Système traditionnel à flotteur',
|
|
154
154
|
points: [
|
|
155
|
-
'Faible
|
|
156
|
-
"Ne
|
|
157
|
-
'
|
|
158
|
-
"N'affiche pas la consommation ni l'autonomie
|
|
155
|
+
'Faible coût et installation simple',
|
|
156
|
+
"Ne nécessite pas d'électricité pour fonctionner",
|
|
157
|
+
'Imprécision par mer agitée due au mouvement du carburant',
|
|
158
|
+
"N'affiche pas la consommation ni l'autonomie estimée",
|
|
159
159
|
],
|
|
160
160
|
},
|
|
161
161
|
{
|
|
162
|
-
title: 'Calculateur de
|
|
163
|
-
description: 'Capteurs
|
|
162
|
+
title: 'Calculateur de Débit Numérique',
|
|
163
|
+
description: 'Capteurs électroniques de débit',
|
|
164
164
|
highlight: true,
|
|
165
165
|
points: [
|
|
166
|
-
'
|
|
167
|
-
"Affiche l'autonomie, la consommation et le
|
|
168
|
-
'
|
|
169
|
-
'
|
|
166
|
+
'Précision de 1-2% sur la consommation réelle',
|
|
167
|
+
"Affiche l'autonomie, la consommation et le coût en temps réel",
|
|
168
|
+
'Intégrable avec chartplotters et NMEA 2000',
|
|
169
|
+
'Nécessite un étalonnage initial et une maintenance',
|
|
170
170
|
],
|
|
171
171
|
},
|
|
172
172
|
],
|
|
@@ -195,7 +195,7 @@ const schemas: EnduranceLocaleContent['schemas'] = [
|
|
|
195
195
|
{
|
|
196
196
|
'@context': 'https://schema.org',
|
|
197
197
|
'@type': 'HowTo',
|
|
198
|
-
name: `Comment utiliser
|
|
198
|
+
name: `Comment utiliser: ${title}`,
|
|
199
199
|
step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
|
|
200
200
|
} as WithContext<HowTo>,
|
|
201
201
|
];
|