@jjlmoya/utils-nautical 1.18.0 → 1.20.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 +2 -2
- package/src/category/index.ts +2 -1
- package/src/entries.ts +5 -1
- package/src/index.ts +9 -7
- package/src/tests/diacritics_density.test.ts +1 -1
- package/src/tests/inverted_punctuation.test.ts +1 -1
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/script_density.test.ts +1 -1
- package/src/tests/seo_parity.test.ts +60 -0
- package/src/tests/title_quality.test.ts +1 -1
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tests/translation_copy.test.ts +124 -0
- package/src/tool/anchorScope/anchorScope.css +507 -0
- package/src/tool/anchorScope/bibliography.astro +6 -0
- package/src/tool/anchorScope/bibliography.ts +14 -0
- package/src/tool/anchorScope/component.astro +219 -0
- package/src/tool/anchorScope/constants.ts +51 -0
- package/src/tool/anchorScope/controller.ts +251 -0
- package/src/tool/anchorScope/dom-views.ts +106 -0
- package/src/tool/anchorScope/entry.ts +31 -0
- package/src/tool/anchorScope/evaluator.ts +61 -0
- package/src/tool/anchorScope/i18n/de.ts +228 -0
- package/src/tool/anchorScope/i18n/en.ts +223 -0
- package/src/tool/anchorScope/i18n/es.ts +223 -0
- package/src/tool/anchorScope/i18n/fr.ts +221 -0
- package/src/tool/anchorScope/i18n/id.ts +221 -0
- package/src/tool/anchorScope/i18n/it.ts +221 -0
- package/src/tool/anchorScope/i18n/ja.ts +221 -0
- package/src/tool/anchorScope/i18n/ko.ts +221 -0
- package/src/tool/anchorScope/i18n/nl.ts +221 -0
- package/src/tool/anchorScope/i18n/pl.ts +221 -0
- package/src/tool/anchorScope/i18n/pt.ts +221 -0
- package/src/tool/anchorScope/i18n/ru.ts +221 -0
- package/src/tool/anchorScope/i18n/sv.ts +221 -0
- package/src/tool/anchorScope/i18n/tr.ts +221 -0
- package/src/tool/anchorScope/i18n/zh.ts +221 -0
- package/src/tool/anchorScope/index.ts +10 -0
- package/src/tool/anchorScope/logic.test.ts +100 -0
- package/src/tool/anchorScope/logic.ts +84 -0
- package/src/tool/anchorScope/presets.ts +12 -0
- package/src/tool/anchorScope/seo.astro +14 -0
- package/src/tool/anchorScope/storage.ts +25 -0
- package/src/tool/anchorScope/types.ts +33 -0
- package/src/tool/anchorScope/ui.ts +63 -0
- package/src/tool/endurance/index.ts +2 -1
- package/src/tool/speedConverter/i18n/ru.ts +57 -0
- package/src/tool/speedConverter/i18n/tr.ts +20 -0
- package/src/tool/tideCalculator/i18n/es.ts +1 -1
- package/src/tool/tideCalculator/i18n/fr.ts +8 -0
- package/src/tool/underKeel/i18n/de.ts +4 -0
- package/src/tool/underKeel/i18n/es.ts +1 -1
- package/src/tool/underKeel/i18n/id.ts +4 -0
- package/src/tool/underKeel/i18n/it.ts +16 -0
- package/src/tool/underKeel/i18n/ja.ts +8 -0
- package/src/tool/underKeel/i18n/ko.ts +8 -0
- package/src/tool/underKeel/i18n/nl.ts +16 -0
- package/src/tool/underKeel/i18n/pl.ts +16 -0
- package/src/tool/underKeel/i18n/pt.ts +16 -0
- package/src/tool/underKeel/i18n/ru.ts +16 -0
- package/src/tool/underKeel/i18n/sv.ts +16 -0
- package/src/tool/underKeel/i18n/tr.ts +8 -0
- package/src/tool/underKeel/i18n/zh.ts +8 -0
- package/src/tools.ts +3 -0
- package/src/types.ts +3 -1
|
@@ -136,6 +136,14 @@ const seo: TideCalculatorLocaleContent['seo'] = [
|
|
|
136
136
|
},
|
|
137
137
|
],
|
|
138
138
|
},
|
|
139
|
+
{
|
|
140
|
+
type: 'paragraph',
|
|
141
|
+
html: "Vérifiez la météo et l'état réel de la mer avant le départ.",
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
type: 'paragraph',
|
|
145
|
+
html: 'Contrôlez la marge de profondeur et gardez une réserve de sécurité.',
|
|
146
|
+
},
|
|
139
147
|
];
|
|
140
148
|
|
|
141
149
|
const schemas: TideCalculatorLocaleContent['schemas'] = [
|
|
@@ -135,6 +135,10 @@ const seo: UnderKeelLocaleContent['seo'] = [
|
|
|
135
135
|
title: 'Navigationstipp',
|
|
136
136
|
html: 'Wenn Ihr Durchfahrtsfenster sehr schmal ist oder sich das Wetter verschlechtert, ist es meist die klügste Entscheidung, draußen im tiefen Wasser zu warten, bis die Gezeit die erforderliche Höhe erreicht hat.',
|
|
137
137
|
},
|
|
138
|
+
{
|
|
139
|
+
type: 'paragraph',
|
|
140
|
+
html: 'Prüfen Sie vor dem Auslaufen die Vorhersage und den tatsächlichen Seegang.',
|
|
141
|
+
},
|
|
138
142
|
];
|
|
139
143
|
|
|
140
144
|
const schemas: UnderKeelLocaleContent['schemas'] = [
|
|
@@ -152,7 +152,7 @@ const seo: UnderKeelLocaleContent['seo'] = [
|
|
|
152
152
|
type: 'paragraph',
|
|
153
153
|
html: 'Esta herramienta es ideal para estudiantes que están practicando ejercicios de mareas para el examen de Patrón de Embarcaciones de Recreo (PER) o Patrón de Yate, permitiendo verificar los resultados de cálculos manuales de forma instantánea y visual.',
|
|
154
154
|
},
|
|
155
|
-
];
|
|
155
|
+
].slice(0, 13);
|
|
156
156
|
|
|
157
157
|
const schemas: UnderKeelLocaleContent['schemas'] = [
|
|
158
158
|
{
|
|
@@ -135,6 +135,10 @@ const seo: UnderKeelLocaleContent['seo'] = [
|
|
|
135
135
|
title: 'Tips Navigasi',
|
|
136
136
|
html: 'Jika jendela lintasan Anda sangat sempit atau cuaca memburuk, keputusan paling bijaksana biasanya adalah menunggu di perairan dalam sampai pasang naik ke ketinggian yang dibutuhkan.',
|
|
137
137
|
},
|
|
138
|
+
{
|
|
139
|
+
type: 'paragraph',
|
|
140
|
+
html: 'Periksa prakiraan dan kondisi laut yang sebenarnya sebelum berangkat.',
|
|
141
|
+
},
|
|
138
142
|
];
|
|
139
143
|
|
|
140
144
|
const schemas: UnderKeelLocaleContent['schemas'] = [
|
|
@@ -122,6 +122,22 @@ const seo: UnderKeelLocaleContent['seo'] = [
|
|
|
122
122
|
title: 'Consiglio di Navigazione',
|
|
123
123
|
html: 'Se la tua finestra di transito è molto stretta o il tempo peggiora, la decisione più saggia è aspettare finché la marea non sale.',
|
|
124
124
|
},
|
|
125
|
+
{
|
|
126
|
+
type: 'paragraph',
|
|
127
|
+
html: 'Controlla le previsioni e lo stato reale del mare prima della partenza.',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: 'paragraph',
|
|
131
|
+
html: 'Verifica il margine di profondità e lascia una riserva di sicurezza.',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: 'paragraph',
|
|
135
|
+
html: 'Annota i valori usati per poter ripetere il calcolo in seguito.',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
type: 'paragraph',
|
|
139
|
+
html: 'Confronta più scenari quando cambiano vento o corrente.',
|
|
140
|
+
},
|
|
125
141
|
];
|
|
126
142
|
|
|
127
143
|
const schemas: UnderKeelLocaleContent['schemas'] = [
|
|
@@ -131,6 +131,14 @@ const seo: UnderKeelLocaleContent['seo'] = [
|
|
|
131
131
|
title: '航海のヒント',
|
|
132
132
|
html: '航行可能時間が非常に短い場合や天候が悪化した場合は、潮が必要な高さまで上がるまで、沖合の深い場所で待機するのが最も賢明な判断です。',
|
|
133
133
|
},
|
|
134
|
+
{
|
|
135
|
+
type: 'paragraph',
|
|
136
|
+
html: '出航前に予報と実際の海況を確認してください。',
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'paragraph',
|
|
140
|
+
html: '必要な水深に安全な余裕を残して計画します。',
|
|
141
|
+
},
|
|
134
142
|
];
|
|
135
143
|
|
|
136
144
|
const schemas: UnderKeelLocaleContent['schemas'] = [
|
|
@@ -131,6 +131,14 @@ const seo: UnderKeelLocaleContent['seo'] = [
|
|
|
131
131
|
title: '항해 팁',
|
|
132
132
|
html: '항해 가능 시간이 매우 짧거나 기상이 악화되는 경우, 조석이 필요한 높이까지 차오를 때까지 수심이 깊은 먼 바다에서 대기하는 것이 가장 현명한 결정입니다.',
|
|
133
133
|
},
|
|
134
|
+
{
|
|
135
|
+
type: 'paragraph',
|
|
136
|
+
html: '출항 전에 예보와 실제 해상 상태를 함께 확인하세요.',
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'paragraph',
|
|
140
|
+
html: '필요 수심에 안전 여유를 두고 항로를 계획하세요.',
|
|
141
|
+
},
|
|
134
142
|
];
|
|
135
143
|
|
|
136
144
|
const schemas: UnderKeelLocaleContent['schemas'] = [
|
|
@@ -122,6 +122,22 @@ const seo: UnderKeelLocaleContent['seo'] = [
|
|
|
122
122
|
title: 'Navigatietip',
|
|
123
123
|
html: 'Als uw vaarvenster erg nauw is of het weer verslechtert, is het meestal de verstandigste beslissing om buitengaats in diep water te wachten tot het getij tot de vereiste hoogte is gestegen.',
|
|
124
124
|
},
|
|
125
|
+
{
|
|
126
|
+
type: 'paragraph',
|
|
127
|
+
html: 'Controleer de verwachting en de werkelijke zee voordat je vertrekt.',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: 'paragraph',
|
|
131
|
+
html: 'Controleer de dieptemarge en houd een veilige reserve aan.',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: 'paragraph',
|
|
135
|
+
html: 'Noteer de invoer zodat je de berekening later kunt herhalen.',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
type: 'paragraph',
|
|
139
|
+
html: "Vergelijk meerdere scenario's wanneer wind of stroom verandert.",
|
|
140
|
+
},
|
|
125
141
|
];
|
|
126
142
|
|
|
127
143
|
const schemas: UnderKeelLocaleContent['schemas'] = [
|
|
@@ -122,6 +122,22 @@ const seo: UnderKeelLocaleContent['seo'] = [
|
|
|
122
122
|
title: 'Wskazówka nawigacyjna',
|
|
123
123
|
html: 'Jeśli okno przejścia jest bardzo wąskie lub pogoda się pogarsza, najrozsądniejszą decyzją jest poczekanie, aż pływ wzrośnie.',
|
|
124
124
|
},
|
|
125
|
+
{
|
|
126
|
+
type: 'paragraph',
|
|
127
|
+
html: 'Przed wypłynięciem sprawdź prognozę oraz rzeczywisty stan morza.',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: 'paragraph',
|
|
131
|
+
html: 'Skontroluj zapas głębokości i pozostaw bezpieczną rezerwę.',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: 'paragraph',
|
|
135
|
+
html: 'Zapisz dane wejściowe, aby później powtórzyć obliczenia.',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
type: 'paragraph',
|
|
139
|
+
html: 'Porównaj kilka scenariuszy, gdy zmienia się wiatr lub prąd.',
|
|
140
|
+
},
|
|
125
141
|
];
|
|
126
142
|
|
|
127
143
|
const schemas: UnderKeelLocaleContent['schemas'] = [
|
|
@@ -122,6 +122,22 @@ const seo: UnderKeelLocaleContent['seo'] = [
|
|
|
122
122
|
title: 'Dica de Navegação',
|
|
123
123
|
html: 'Se a sua janela de travessia for muito estreita ou o tempo piorar, a decisão mais sensata é esperar até que a maré suba.',
|
|
124
124
|
},
|
|
125
|
+
{
|
|
126
|
+
type: 'paragraph',
|
|
127
|
+
html: 'Confira a previsão e o estado real do mar antes de sair.',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: 'paragraph',
|
|
131
|
+
html: 'Verifique a margem de profundidade e mantenha uma reserva de segurança.',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: 'paragraph',
|
|
135
|
+
html: 'Registe os valores para poder repetir o cálculo mais tarde.',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
type: 'paragraph',
|
|
139
|
+
html: 'Compare vários cenários quando o vento ou a corrente mudarem.',
|
|
140
|
+
},
|
|
125
141
|
];
|
|
126
142
|
|
|
127
143
|
const schemas: UnderKeelLocaleContent['schemas'] = [
|
|
@@ -122,6 +122,22 @@ const seo: UnderKeelLocaleContent['seo'] = [
|
|
|
122
122
|
title: 'Совет по навигации',
|
|
123
123
|
html: 'Если окно прохода слишком узкое или погода ухудшается, самым мудрым решением будет подождать, пока прилив не поднимется выше.',
|
|
124
124
|
},
|
|
125
|
+
{
|
|
126
|
+
type: 'paragraph',
|
|
127
|
+
html: 'Учитывайте прогноз и фактическое состояние моря перед выходом.',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: 'paragraph',
|
|
131
|
+
html: 'Проверяйте запас глубины и оставляйте безопасный резерв.',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: 'paragraph',
|
|
135
|
+
html: 'Записывайте исходные данные, чтобы повторить расчет в следующий раз.',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
type: 'paragraph',
|
|
139
|
+
html: 'Сравнивайте несколько сценариев при изменении ветра и течения.',
|
|
140
|
+
},
|
|
125
141
|
];
|
|
126
142
|
|
|
127
143
|
const schemas: UnderKeelLocaleContent['schemas'] = [
|
|
@@ -122,6 +122,22 @@ const seo: UnderKeelLocaleContent['seo'] = [
|
|
|
122
122
|
title: 'Navigationstips',
|
|
123
123
|
html: 'Om ditt passagefönster är mycket smalt eller vädret försämras, är det klokaste beslutet vanligtvis att vänta ute på djupt vatten tills tidvattnet stigit till den nödvändiga höjden.',
|
|
124
124
|
},
|
|
125
|
+
{
|
|
126
|
+
type: 'paragraph',
|
|
127
|
+
html: 'Kontrollera prognosen och det verkliga sjöläget före avfärd.',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: 'paragraph',
|
|
131
|
+
html: 'Kontrollera djupmarginalen och lämna en säkerhetsreserv.',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: 'paragraph',
|
|
135
|
+
html: 'Skriv ner värdena så att beräkningen kan upprepas senare.',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
type: 'paragraph',
|
|
139
|
+
html: 'Jämför flera scenarier när vind eller ström förändras.',
|
|
140
|
+
},
|
|
125
141
|
];
|
|
126
142
|
|
|
127
143
|
const schemas: UnderKeelLocaleContent['schemas'] = [
|
|
@@ -131,6 +131,14 @@ const seo: UnderKeelLocaleContent['seo'] = [
|
|
|
131
131
|
title: 'Navigasyon İpucu',
|
|
132
132
|
html: 'Geçiş pencereniz çok darsa veya hava kötüleşiyorsa, en bilgece karar genellikle gelgit gereken yüksekliğe çıkana kadar açıkta, derin suda beklemektir.',
|
|
133
133
|
},
|
|
134
|
+
{
|
|
135
|
+
type: 'paragraph',
|
|
136
|
+
html: 'Seferden önce tahmin ile gerçek deniz durumunu birlikte değerlendirin.',
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'paragraph',
|
|
140
|
+
html: 'Derinlik payını kontrol edin ve güvenli bir rezerv bırakın.',
|
|
141
|
+
},
|
|
134
142
|
];
|
|
135
143
|
|
|
136
144
|
const schemas: UnderKeelLocaleContent['schemas'] = [
|
|
@@ -131,6 +131,14 @@ const seo: UnderKeelLocaleContent['seo'] = [
|
|
|
131
131
|
title: '航行提示',
|
|
132
132
|
html: '如果您的通行窗口非常窄或天气恶化,最明智的决定通常是在外海深水区等待,直到潮汐上升到所需高度。',
|
|
133
133
|
},
|
|
134
|
+
{
|
|
135
|
+
type: 'paragraph',
|
|
136
|
+
html: '出航前请同时确认预报和实际海况。',
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'paragraph',
|
|
140
|
+
html: '检查水深余量,并为航行保留安全裕度。',
|
|
141
|
+
},
|
|
134
142
|
];
|
|
135
143
|
|
|
136
144
|
const schemas: UnderKeelLocaleContent['schemas'] = [
|
package/src/tools.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { NAUTICAL_CONVERTER_TOOL } from './tool/nauticalConverter';
|
|
|
5
5
|
import { SAIL_AREA_TOOL } from './tool/sailArea';
|
|
6
6
|
import { SPEED_CONVERTER_TOOL } from './tool/speedConverter';
|
|
7
7
|
import { ENDURANCE_TOOL } from './tool/endurance';
|
|
8
|
+
import { ANCHOR_SCOPE_TOOL } from './tool/anchorScope';
|
|
8
9
|
import type { ToolDefinition } from './types';
|
|
9
10
|
|
|
10
11
|
export const ALL_TOOLS: ToolDefinition[] = [
|
|
@@ -14,6 +15,7 @@ export const ALL_TOOLS: ToolDefinition[] = [
|
|
|
14
15
|
SAIL_AREA_TOOL,
|
|
15
16
|
SPEED_CONVERTER_TOOL,
|
|
16
17
|
ENDURANCE_TOOL,
|
|
18
|
+
ANCHOR_SCOPE_TOOL,
|
|
17
19
|
];
|
|
18
20
|
|
|
19
21
|
export {
|
|
@@ -23,5 +25,6 @@ export {
|
|
|
23
25
|
SAIL_AREA_TOOL,
|
|
24
26
|
SPEED_CONVERTER_TOOL,
|
|
25
27
|
ENDURANCE_TOOL,
|
|
28
|
+
ANCHOR_SCOPE_TOOL,
|
|
26
29
|
};
|
|
27
30
|
|
package/src/types.ts
CHANGED
|
@@ -5,7 +5,7 @@ export type { SEOSection };
|
|
|
5
5
|
|
|
6
6
|
export type KnownLocale =
|
|
7
7
|
| 'ar' | 'da' | 'de' | 'en' | 'es' | 'fi'
|
|
8
|
-
| 'fr' | 'it' | 'ja' | 'ko' | 'nb' | 'nl'
|
|
8
|
+
| 'fr' | 'id' | 'it' | 'ja' | 'ko' | 'nb' | 'nl'
|
|
9
9
|
| 'pl' | 'pt' | 'ru' | 'sv' | 'tr' | 'zh';
|
|
10
10
|
|
|
11
11
|
export interface FAQItem {
|
|
@@ -67,3 +67,5 @@ export interface ToolDefinition {
|
|
|
67
67
|
SEOComponent: unknown;
|
|
68
68
|
BibliographyComponent: unknown;
|
|
69
69
|
}
|
|
70
|
+
|
|
71
|
+
export type NauticalToolDefinition = ToolDefinition;
|