@jjlmoya/utils-nautical 1.6.0 → 1.8.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 +72 -71
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +42 -0
- package/src/tests/no_h1_in_components.test.ts +48 -0
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/slug_language_code_format.test.ts +23 -0
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tool/endurance/i18n/de.ts +249 -0
- package/src/tool/endurance/i18n/id.ts +249 -0
- package/src/tool/endurance/i18n/it.ts +249 -0
- package/src/tool/endurance/i18n/ja.ts +249 -0
- package/src/tool/endurance/i18n/ko.ts +249 -0
- package/src/tool/endurance/i18n/nl.ts +249 -0
- package/src/tool/endurance/i18n/pl.ts +249 -0
- package/src/tool/endurance/i18n/pt.ts +249 -0
- package/src/tool/endurance/i18n/ru.ts +249 -0
- package/src/tool/endurance/i18n/sv.ts +249 -0
- package/src/tool/endurance/i18n/tr.ts +249 -0
- package/src/tool/endurance/i18n/zh.ts +249 -0
- package/src/tool/endurance/index.ts +12 -0
- package/src/tool/nauticalConverter/i18n/de.ts +239 -0
- package/src/tool/nauticalConverter/i18n/id.ts +239 -0
- package/src/tool/nauticalConverter/i18n/it.ts +239 -0
- package/src/tool/nauticalConverter/i18n/ja.ts +239 -0
- package/src/tool/nauticalConverter/i18n/ko.ts +239 -0
- package/src/tool/nauticalConverter/i18n/nl.ts +239 -0
- package/src/tool/nauticalConverter/i18n/pl.ts +239 -0
- package/src/tool/nauticalConverter/i18n/pt.ts +239 -0
- package/src/tool/nauticalConverter/i18n/ru.ts +239 -0
- package/src/tool/nauticalConverter/i18n/sv.ts +239 -0
- package/src/tool/nauticalConverter/i18n/tr.ts +239 -0
- package/src/tool/nauticalConverter/i18n/zh.ts +239 -0
- package/src/tool/nauticalConverter/index.ts +12 -0
- package/src/tool/sailArea/component.astro +1 -1
- package/src/tool/sailArea/i18n/de.ts +275 -0
- package/src/tool/sailArea/i18n/id.ts +275 -0
- package/src/tool/sailArea/i18n/it.ts +275 -0
- package/src/tool/sailArea/i18n/ja.ts +275 -0
- package/src/tool/sailArea/i18n/ko.ts +275 -0
- package/src/tool/sailArea/i18n/nl.ts +275 -0
- package/src/tool/sailArea/i18n/pl.ts +275 -0
- package/src/tool/sailArea/i18n/pt.ts +275 -0
- package/src/tool/sailArea/i18n/ru.ts +275 -0
- package/src/tool/sailArea/i18n/sv.ts +275 -0
- package/src/tool/sailArea/i18n/tr.ts +275 -0
- package/src/tool/sailArea/i18n/zh.ts +275 -0
- package/src/tool/sailArea/index.ts +12 -0
- package/src/tool/speedConverter/i18n/de.ts +271 -0
- package/src/tool/speedConverter/i18n/id.ts +271 -0
- package/src/tool/speedConverter/i18n/it.ts +271 -0
- package/src/tool/speedConverter/i18n/ja.ts +271 -0
- package/src/tool/speedConverter/i18n/ko.ts +271 -0
- package/src/tool/speedConverter/i18n/nl.ts +271 -0
- package/src/tool/speedConverter/i18n/pl.ts +271 -0
- package/src/tool/speedConverter/i18n/pt.ts +271 -0
- package/src/tool/speedConverter/i18n/ru.ts +194 -0
- package/src/tool/speedConverter/i18n/sv.ts +271 -0
- package/src/tool/speedConverter/i18n/tr.ts +225 -0
- package/src/tool/speedConverter/i18n/zh.ts +271 -0
- package/src/tool/speedConverter/index.ts +12 -0
- package/src/tool/tideCalculator/i18n/de.ts +203 -0
- package/src/tool/tideCalculator/i18n/id.ts +203 -0
- package/src/tool/tideCalculator/i18n/it.ts +203 -0
- package/src/tool/tideCalculator/i18n/ja.ts +203 -0
- package/src/tool/tideCalculator/i18n/ko.ts +203 -0
- package/src/tool/tideCalculator/i18n/nl.ts +203 -0
- package/src/tool/tideCalculator/i18n/pl.ts +203 -0
- package/src/tool/tideCalculator/i18n/pt.ts +203 -0
- package/src/tool/tideCalculator/i18n/ru.ts +203 -0
- package/src/tool/tideCalculator/i18n/sv.ts +203 -0
- package/src/tool/tideCalculator/i18n/tr.ts +203 -0
- package/src/tool/tideCalculator/i18n/zh.ts +203 -0
- package/src/tool/tideCalculator/index.ts +12 -0
- package/src/tool/underKeel/i18n/de.ts +189 -0
- package/src/tool/underKeel/i18n/en.ts +2 -2
- package/src/tool/underKeel/i18n/fr.ts +2 -2
- package/src/tool/underKeel/i18n/id.ts +189 -0
- package/src/tool/underKeel/i18n/it.ts +176 -0
- package/src/tool/underKeel/i18n/ja.ts +185 -0
- package/src/tool/underKeel/i18n/ko.ts +185 -0
- package/src/tool/underKeel/i18n/nl.ts +176 -0
- package/src/tool/underKeel/i18n/pl.ts +176 -0
- package/src/tool/underKeel/i18n/pt.ts +176 -0
- package/src/tool/underKeel/i18n/ru.ts +176 -0
- package/src/tool/underKeel/i18n/sv.ts +176 -0
- package/src/tool/underKeel/i18n/tr.ts +185 -0
- package/src/tool/underKeel/i18n/zh.ts +185 -0
- package/src/tool/underKeel/index.ts +12 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { UnderKeelUI, UnderKeelLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'ukc-kalkylator';
|
|
5
|
+
const title = 'Kalkylator för kielspeling UKC';
|
|
6
|
+
const description =
|
|
7
|
+
'Beräkna det säkra tidsfönstret för att passera grund, kanaler eller punkter med begränsat djupgående. Ange båtens djupgående, sjökortsdjup och tidvattensdata.';
|
|
8
|
+
|
|
9
|
+
const ui: UnderKeelUI = {
|
|
10
|
+
parametersLabel: 'Parametrar',
|
|
11
|
+
boatDraftLabel: 'Båtens djupgående',
|
|
12
|
+
chartDepthLabel: 'Sjökortsdjup',
|
|
13
|
+
safetyMarginLabel: 'Säkerhetsmarginal',
|
|
14
|
+
highTideLabel: 'Högvatten',
|
|
15
|
+
lowTideLabel: 'Lågvatten',
|
|
16
|
+
metersLabel: 'meter',
|
|
17
|
+
passWindowLabel: 'Passagefönster',
|
|
18
|
+
neededLabel: 'Nödvändigt djup',
|
|
19
|
+
tideRequiredLabel: 'Minsta nödvändiga tidvattenhöjd',
|
|
20
|
+
statusNeverLabel: 'Ingen kielspeling i denna cykel',
|
|
21
|
+
statusAlwaysLabel: 'Passage möjlig hela cykeln',
|
|
22
|
+
statusFromLabel: 'Passage från:',
|
|
23
|
+
statusUntilLabel: 'Passage till:',
|
|
24
|
+
bottomLabel: 'BOTTEN',
|
|
25
|
+
faqTitle: 'Vanliga frågor',
|
|
26
|
+
bibliographyTitle: 'Bibliografi',
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const faq: UnderKeelLocaleContent['faq'] = [
|
|
30
|
+
{
|
|
31
|
+
question: 'Vad exakt är en beräkning av kielspeling (under-keel clearance)?',
|
|
32
|
+
answer: 'Det är beräkningen av det ögonblick då det finns tillräckligt djup vid en kritisk punkt (som en sandbank eller en smal kanal) för att tillåta säker passage för ett fartyg enligt dess djupgående.',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
question: 'Hur stor säkerhetsmarginal rekommenderas?',
|
|
36
|
+
answer: 'För fritidsbåtar rekommenderas vanligtvis en minsta säkerhetsmarginal på mellan 0,5 och 1 meter över båtens djupgående. Denna marginal kompenserar för möjliga fel i tidvattensberäkningar, lufttrycksvariationer eller oväntad dyning.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
question: 'Hur påverkar dyning kielspelingen?',
|
|
40
|
+
answer: 'Dyning genererar vertikala svängningar i skrovet. Vid vågens lägsta punkt är båten närmare botten än vid vila. Vid passage av områden med dyning måste säkerhetsmarginalen ökas avsevärt.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
question: 'Vad är sjökortsdjup (chart sounding)?',
|
|
44
|
+
answer: 'Det är det minsta djupet vid en punkt när tidvattnet är vid sjökortsplan (Chart Datum). Det adderas till tidvattenhöjden vid det tillfället för att ge det totala tillgängliga djupet.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
question: 'Vad betyder en understruken djupsiffra i sjökortet?',
|
|
48
|
+
answer: 'Det betyder att den punkten är torr (ovan vatten) när tidvattnet är vid sjökortsplan. Du behöver en högre tidvattenhöjd för att kunna passera över den.',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
question: 'Vad är Squat-effekt?',
|
|
52
|
+
answer: 'Det är ett hydrodynamiskt fenomen där ett fartyg som navigerar genom grunda kanaler tenderar att sjunka djupare i förhållande till sin vattenlinje. Ju snabbare du färdas, desto mer ökar det dynamiska djupgåendet och desto mindre vatten har du under kölen.',
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
const howTo: UnderKeelLocaleContent['howTo'] = [
|
|
57
|
+
{
|
|
58
|
+
name: 'Definiera djupgående och säkerhetsmarginal',
|
|
59
|
+
text: 'Mät din båts djupgående vid dess djupaste punkt och lägg till en försiktig säkerhetsmarginal (t.ex. 0,5 m).',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'Slå upp sjökortsdjupet',
|
|
63
|
+
text: 'Hitta djupvärdet för den kritiska punkt du ska navigera vid. Notera om det är ett sandigt eller stenigt område.',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'Ange tidvattensdata',
|
|
67
|
+
text: 'Använd tider och höjder för hög- och lågvatten från den närmaste officiella tidvattenalmanackan.',
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'Kontrollera ditt passagefönster',
|
|
71
|
+
text: 'Verktyget visar det exakta tidsintervallet under vilket du kommer att ha tillräckligt djup för att navigera säkert.',
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
|
|
75
|
+
const bibliography: UnderKeelLocaleContent['bibliography'] = [
|
|
76
|
+
{
|
|
77
|
+
name: 'Ministerio de Transportes - Recreational Boating',
|
|
78
|
+
url: 'https://www.mitma.gob.es/marina-mercante/nautica-de-recreo/',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'Portos de Galicia - Tide Tables',
|
|
82
|
+
url: 'https://portosdegalicia.gal/es/taboa-de-mareas',
|
|
83
|
+
},
|
|
84
|
+
];
|
|
85
|
+
|
|
86
|
+
const seo: UnderKeelLocaleContent['seo'] = [
|
|
87
|
+
{
|
|
88
|
+
type: 'title',
|
|
89
|
+
text: 'Kielspeling: Navigera säkert över grund',
|
|
90
|
+
level: 2,
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
type: 'paragraph',
|
|
94
|
+
html: 'Planering av en passage slutar inte med att man ritar en kurs i sjökortet. För kustnavigatören är en av de mest kritiska beräkningarna <strong>kielspeling (Under-Keel Clearance)</strong>: att veta vid vilken tidpunkt det finns tillräckligt med djup för att korsa en kritisk punkt utan att gå på grund.',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
type: 'title',
|
|
98
|
+
text: 'Vad är sjökortsdjup och hur förhåller det sig till tidvattnet?',
|
|
99
|
+
level: 3,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
type: 'paragraph',
|
|
103
|
+
html: 'I sjökort refererar djup till <strong>sjökortsplan (Chart Datum)</strong>. Detta nivå är den lägsta nivå tidvattnet når under normala förhållanden. Det faktiska djupet din båt kommer att uppleva vid varje givet tillfälle är summan av det sjökortsdjupet plus tidvattenhöjden vid det ögonblicket.',
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
type: 'title',
|
|
107
|
+
text: 'Elementen i beräkningen: Djupgående och Marginal',
|
|
108
|
+
level: 3,
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
type: 'list',
|
|
112
|
+
items: [
|
|
113
|
+
{ term: 'Maximalt lastat djupgående', definition: 'Det djup som nås av båtens lägsta punkt (kölen) vid full last.' },
|
|
114
|
+
{ term: 'Sjökortsdjup', definition: 'Siffran i sjökortet för den punkt du vill korsa. Om understruken är punkten torr vid sjökortsplan.' },
|
|
115
|
+
{ term: 'Säkerhetsmarginal', definition: 'Extra fritt utrymme på minst 0,5 till 1 meter över djupgåendet.' },
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
type: 'title',
|
|
120
|
+
text: 'Faktorer som påverkar passage',
|
|
121
|
+
level: 3,
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
type: 'table',
|
|
125
|
+
headers: ['Faktor', 'Effekt', 'Rekommendation'],
|
|
126
|
+
rows: [
|
|
127
|
+
['<strong>Dyning</strong>', 'Minskar vattnet under skrovet', 'Öka säkerhetsmarginalen avsevärt'],
|
|
128
|
+
['<strong>Squat-effekt</strong>', 'Ökar djupgåendet genom sugverkan', 'Minska farten i kritiska områden'],
|
|
129
|
+
['<strong>Sandbotten</strong>', 'Djupet varierar med stormar', 'Håll ekolodet aktivt och ha extra marginal'],
|
|
130
|
+
],
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
type: 'tip',
|
|
134
|
+
title: 'Navigationstips',
|
|
135
|
+
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.',
|
|
136
|
+
},
|
|
137
|
+
];
|
|
138
|
+
|
|
139
|
+
const schemas: UnderKeelLocaleContent['schemas'] = [
|
|
140
|
+
{
|
|
141
|
+
'@context': 'https://schema.org',
|
|
142
|
+
'@type': 'SoftwareApplication',
|
|
143
|
+
name: title,
|
|
144
|
+
description,
|
|
145
|
+
applicationCategory: 'UtilityApplication',
|
|
146
|
+
operatingSystem: 'Web',
|
|
147
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
148
|
+
} as WithContext<SoftwareApplication>,
|
|
149
|
+
{
|
|
150
|
+
'@context': 'https://schema.org',
|
|
151
|
+
'@type': 'FAQPage',
|
|
152
|
+
mainEntity: faq.map((item) => ({
|
|
153
|
+
'@type': 'Question',
|
|
154
|
+
name: item.question,
|
|
155
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
156
|
+
})),
|
|
157
|
+
} as WithContext<FAQPage>,
|
|
158
|
+
{
|
|
159
|
+
'@context': 'https://schema.org',
|
|
160
|
+
'@type': 'HowTo',
|
|
161
|
+
name: `Hur man använder: ${title}`,
|
|
162
|
+
step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
|
|
163
|
+
} as WithContext<HowTo>,
|
|
164
|
+
];
|
|
165
|
+
|
|
166
|
+
export const content: UnderKeelLocaleContent = {
|
|
167
|
+
slug,
|
|
168
|
+
title,
|
|
169
|
+
description,
|
|
170
|
+
ui,
|
|
171
|
+
seo,
|
|
172
|
+
faq,
|
|
173
|
+
bibliography,
|
|
174
|
+
howTo,
|
|
175
|
+
schemas,
|
|
176
|
+
};
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { UnderKeelUI, UnderKeelLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'ukc-hesaplayici';
|
|
5
|
+
const title = 'Omurga Altı Boşluğu UKC Hesaplayıcı';
|
|
6
|
+
const description =
|
|
7
|
+
'Sığlıkları, kanalları veya su çekimi (draft) kısıtlı noktaları geçmek için güvenli zaman aralığını hesaplayın. Teknenizin draftını, harita derinliğini ve gelgit verilerini girin.';
|
|
8
|
+
|
|
9
|
+
const ui: UnderKeelUI = {
|
|
10
|
+
parametersLabel: 'Parametreler',
|
|
11
|
+
boatDraftLabel: 'Tekne Draftı',
|
|
12
|
+
chartDepthLabel: 'Harita Derinliği',
|
|
13
|
+
safetyMarginLabel: 'Emniyet Payı',
|
|
14
|
+
highTideLabel: 'Tam Deniz (Yüksek Gel)',
|
|
15
|
+
lowTideLabel: 'Alçak Deniz (Düşük Gel)',
|
|
16
|
+
metersLabel: 'metre',
|
|
17
|
+
passWindowLabel: 'Geçiş Penceresi',
|
|
18
|
+
neededLabel: 'Gerekli derinlik',
|
|
19
|
+
tideRequiredLabel: 'Gerekli minimum gelgit',
|
|
20
|
+
statusNeverLabel: 'Bu döngüde yeterli boşluk yok',
|
|
21
|
+
statusAlwaysLabel: 'Tüm döngü boyunca güvenli',
|
|
22
|
+
statusFromLabel: 'Geçiş başlangıcı:',
|
|
23
|
+
statusUntilLabel: 'Geçiş bitişi:',
|
|
24
|
+
bottomLabel: 'DENİZ TABANI',
|
|
25
|
+
faqTitle: 'Sıkça Sorulan Sorular',
|
|
26
|
+
bibliographyTitle: 'Kaynakça',
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const faq: UnderKeelLocaleContent['faq'] = [
|
|
30
|
+
{
|
|
31
|
+
question: 'Omurga altı boşluğu (UKC) tam olarak nedir?',
|
|
32
|
+
answer: 'Bir teknenin draftına göre, kritik bir noktayı (kum bankı veya dar kanal gibi) emniyetle geçebilmesi için yeterli su derinliğinin olduğu anın hesaplanmasıdır.',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
question: 'Ne kadar emniyet payı önerilir?',
|
|
36
|
+
answer: 'Amatör tekneler için genellikle teknenin draftı üzerine 0.5 ile 1 metre arasında bir minimum emniyet payı önerilir. Bu pay, gelgit hesaplarındaki olası hataları, atmosfer basıncı değişimlerini veya beklenmedik soluğanları telafi eder.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
question: 'Soluğanlar (swell) omurga altı boşluğunu nasıl etkiler?',
|
|
40
|
+
answer: 'Soluğanlar teknede dikey salınımlara neden olur. Dalganın en düşük noktasında (çukurunda) tekne dibe, durgun halindekinden daha yakın olur. Soluğanlı bölgelerden geçerken emniyet payı önemli ölçüde artırılmalıdır.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
question: 'Harita derinliği (chart sounding) nedir?',
|
|
44
|
+
answer: 'Gelgitin Harita Düzleminde (Chart Datum) olduğu bir noktadaki minimum derinliktir. Toplam derinliği bulmak için o andaki gelgit yüksekliği ile toplanır.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
question: 'Haritadaki altı çizili derinlik değeri ne anlama gelir?',
|
|
48
|
+
answer: 'O noktanın gelgit Harita Düzlemindeyken su üzerinde kaldığını (kuruduğunu) ifade eder. Üzerinden geçebilmek için daha yüksek bir gelgit seviyesine ihtiyacınız olacaktır.',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
question: 'Squat etkisi nedir ve geçişi nasıl değiştirir?',
|
|
52
|
+
answer: 'Sığ kanallarda seyreden bir teknenin, hidrodinamik etkilerle su hattına göre daha aşağıya çökme eğilimidir. Ne kadar hızlı giderseniz, dinamik draft o kadar artar ve omurga altında o kadar az su kalır.',
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
const howTo: UnderKeelLocaleContent['howTo'] = [
|
|
57
|
+
{
|
|
58
|
+
name: 'Draft ve emniyet payını tanımlayın',
|
|
59
|
+
text: 'Teknenizin draftını en derin noktasından ölçün ve üzerine ihtiyatlı bir emniyet payı (örneğin 0.5 m) ekleyin.',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'Harita derinliğine bakın',
|
|
63
|
+
text: 'Geçeceğiniz kritik nokta için haritadaki derinlik değerini bulun. Bölgenin kumlu mu yoksa kayalık mı olduğuna dikkat edin.',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'Gelgit verilerini girin',
|
|
67
|
+
text: 'En yakın resmi gelgit almanağından tam ve alçak deniz zamanlarını ve yüksekliklerini kullanın.',
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'Geçiş pencerenizi kontrol edin',
|
|
71
|
+
text: 'Araç, emniyetle seyretmek için yeterli derinliğe sahip olacağınız tam zaman aralığını gösterecektir.',
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
|
|
75
|
+
const bibliography: UnderKeelLocaleContent['bibliography'] = [
|
|
76
|
+
{
|
|
77
|
+
name: 'Ministerio de Transportes - Recreational Boating',
|
|
78
|
+
url: 'https://www.mitma.gob.es/marina-mercante/nautica-de-recreo/',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'Portos de Galicia - Tide Tables',
|
|
82
|
+
url: 'https://portosdegalicia.gal/es/taboa-de-mareas',
|
|
83
|
+
},
|
|
84
|
+
];
|
|
85
|
+
|
|
86
|
+
const seo: UnderKeelLocaleContent['seo'] = [
|
|
87
|
+
{
|
|
88
|
+
type: 'title',
|
|
89
|
+
text: 'Omurga Altı Boşluğu: Sığlıklar Üzerinde Emniyetli Seyir',
|
|
90
|
+
level: 2,
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
type: 'paragraph',
|
|
94
|
+
html: 'Bir geçiş planı yapmak sadece harita üzerinde bir rota çizmekle bitmez. Kıyı navigasyonunda en kritik hesaplamalardan biri <strong>omurga altı boşluğudur (Under-Keel Clearance)</strong>: karaya oturmadan kritik bir noktayı geçmek için hangi saatte yeterli derinlik olacağını bilmektir.',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
type: 'title',
|
|
98
|
+
text: 'Harita derinliği nedir ve gelgit ile nasıl ilişkilidir?',
|
|
99
|
+
level: 3,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
type: 'paragraph',
|
|
103
|
+
html: 'Deniz haritalarında derinlikler <strong>Harita Düzlemine (Chart Datum)</strong> göredir. Bu seviye, gelgitin normal koşullarda ulaştığı en düşük seviyedir. Teknenizin herhangi bir anda bulacağı gerçek derinlik, o harita derinliği ile o andaki gelgit yüksekliğinin toplamıdır.',
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
type: 'title',
|
|
107
|
+
text: 'Hesaplamanın unsurları: Draft ve Pay',
|
|
108
|
+
level: 3,
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
type: 'list',
|
|
112
|
+
items: [
|
|
113
|
+
{ term: 'Maksimum yüklü draft:', definition: 'Tam yüklü teknenin en alt noktasının (omurga) ulaştığı derinlik.' },
|
|
114
|
+
{ term: 'Harita derinliği:', definition: 'Harita üzerindeki derinlik rakamı. Altı çiziliyse Harita Düzleminde kurur.' },
|
|
115
|
+
{ term: 'Emniyet payı:', definition: 'Draft üzerine en az 0.5 ile 1 metre arasında eklenen emniyet boşluğu.' },
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
type: 'title',
|
|
120
|
+
text: 'Geçiş penceresi nasıl çalışır?',
|
|
121
|
+
level: 3,
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
type: 'paragraph',
|
|
125
|
+
html: 'Hesaplayıcı, su seviyesinin draftınız artı seçilen emniyet payının üzerine çıkacağı tam anı belirler. O dakikadan itibaren <strong>geçiş penceresi</strong> açılır. Gelgit alçalıyorsa (ebb), araç su seviyesi emniyet sınırınızın altına düşene kadar geçişe ne zamana kadar izin verildiğini belirtir.',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'title',
|
|
129
|
+
text: 'Geçişi etkileyen faktörler',
|
|
130
|
+
level: 3,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
type: 'table',
|
|
134
|
+
headers: ['Faktör', 'Etki', 'Öneri'],
|
|
135
|
+
rows: [
|
|
136
|
+
['<strong>Soluğan (Swell)</strong>', 'Gövde altındaki suyu azaltır', 'Emniyet payını önemli ölçüde artırın'],
|
|
137
|
+
['<strong>Squat etkisi</strong>', 'Vakum ile draftı artırır', 'Kritik bölgelerde hızı düşürün'],
|
|
138
|
+
['<strong>Kumlu zemin</strong>', 'Derinlik fırtınalarla değişebilir', 'İskandili açık tutun ve ek pay bırakın'],
|
|
139
|
+
],
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
type: 'tip',
|
|
143
|
+
title: 'Navigasyon İpucu',
|
|
144
|
+
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.',
|
|
145
|
+
},
|
|
146
|
+
];
|
|
147
|
+
|
|
148
|
+
const schemas: UnderKeelLocaleContent['schemas'] = [
|
|
149
|
+
{
|
|
150
|
+
'@context': 'https://schema.org',
|
|
151
|
+
'@type': 'SoftwareApplication',
|
|
152
|
+
name: title,
|
|
153
|
+
description,
|
|
154
|
+
applicationCategory: 'UtilityApplication',
|
|
155
|
+
operatingSystem: 'Web',
|
|
156
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
157
|
+
} as WithContext<SoftwareApplication>,
|
|
158
|
+
{
|
|
159
|
+
'@context': 'https://schema.org',
|
|
160
|
+
'@type': 'FAQPage',
|
|
161
|
+
mainEntity: faq.map((item) => ({
|
|
162
|
+
'@type': 'Question',
|
|
163
|
+
name: item.question,
|
|
164
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
165
|
+
})),
|
|
166
|
+
} as WithContext<FAQPage>,
|
|
167
|
+
{
|
|
168
|
+
'@context': 'https://schema.org',
|
|
169
|
+
'@type': 'HowTo',
|
|
170
|
+
name: `Nasıl kullanılır: ${title}`,
|
|
171
|
+
step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
|
|
172
|
+
} as WithContext<HowTo>,
|
|
173
|
+
];
|
|
174
|
+
|
|
175
|
+
export const content: UnderKeelLocaleContent = {
|
|
176
|
+
slug,
|
|
177
|
+
title,
|
|
178
|
+
description,
|
|
179
|
+
ui,
|
|
180
|
+
seo,
|
|
181
|
+
faq,
|
|
182
|
+
bibliography,
|
|
183
|
+
howTo,
|
|
184
|
+
schemas,
|
|
185
|
+
};
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { UnderKeelUI, UnderKeelLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'under-keel-clearance-calculator';
|
|
5
|
+
const title = '龙骨下富裕深度 UKC 计算器';
|
|
6
|
+
const description =
|
|
7
|
+
'计算通过浅滩、航道或吃水受限地点的安全时间窗口。输入您的船只吃水、海图深度和潮汐数据,以获得精确的安全通行间隔。';
|
|
8
|
+
|
|
9
|
+
const ui: UnderKeelUI = {
|
|
10
|
+
parametersLabel: '参数',
|
|
11
|
+
boatDraftLabel: '船只吃水',
|
|
12
|
+
chartDepthLabel: '海图深度',
|
|
13
|
+
safetyMarginLabel: '安全裕度',
|
|
14
|
+
highTideLabel: '高潮',
|
|
15
|
+
lowTideLabel: '低潮',
|
|
16
|
+
metersLabel: '米',
|
|
17
|
+
passWindowLabel: '通行窗口',
|
|
18
|
+
neededLabel: '所需深度',
|
|
19
|
+
tideRequiredLabel: '所需最低潮高',
|
|
20
|
+
statusNeverLabel: '此周期内无通过余地',
|
|
21
|
+
statusAlwaysLabel: '整个周期内均可安全通行',
|
|
22
|
+
statusFromLabel: '通行开始时间:',
|
|
23
|
+
statusUntilLabel: '通行结束时间:',
|
|
24
|
+
bottomLabel: '海床',
|
|
25
|
+
faqTitle: '常见问题',
|
|
26
|
+
bibliographyTitle: '参考文献统计',
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const faq: UnderKeelLocaleContent['faq'] = [
|
|
30
|
+
{
|
|
31
|
+
question: '究竟什么是龙骨下富裕深度 (UKC) 计算?',
|
|
32
|
+
answer: '它是计算在关键点(如沙洲或狭窄航道)有足够水深的时刻,以便根据船只的吃水深度允许船舶安全通行。',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
question: '推荐的安全裕度是多少?',
|
|
36
|
+
answer: '对于休闲船只,通常建议在船只吃水深度基础上增加 0.5 到 1 米的最小安全裕度。该裕度可补偿潮汐计算中的可能误差、大气压力变化或意外涌浪。',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
question: '涌浪如何影响龙骨下富裕深度?',
|
|
40
|
+
answer: '涌浪会产生船体的垂直振荡。在波浪的最底点,船只比静止时更接近底部。通过有涌浪的区域时,必须大幅增加安全裕度。',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
question: '什么是海图深度 (chart sounding)?',
|
|
44
|
+
answer: '它是当潮汐处于海图基准面 (Chart Datum) 时某一点的最小深度。将其与该时刻的潮高相加,即得出总可用深度。',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
question: '海图上带有下划线的深度值意味着什么?',
|
|
48
|
+
answer: '这表示当潮汐处于海图基准面时,该点会露出(干出)。您需要更大的潮高才能通过。',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
question: '什么是兴波下沉 (Squat effect)?它如何改变通行?',
|
|
52
|
+
answer: '这是一种流体动力现象,在浅水航道中航行的船舶相对于其水线往往会沉得更低。航速越快,动态吃水增加越多,龙骨下的水就越少。',
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
const howTo: UnderKeelLocaleContent['howTo'] = [
|
|
57
|
+
{
|
|
58
|
+
name: '定义吃水和安全裕度',
|
|
59
|
+
text: '测量船只在最大点的吃水深度,并增加一个审慎的安全裕度(例如 0.5 米)。',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: '查找海图深度',
|
|
63
|
+
text: '找到您要导航的关键点的基准深度值。注意该区域是沙质还是岩石。',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: '输入潮汐数据',
|
|
67
|
+
text: '使用最近的官方潮汐年鉴中的高潮和低潮时刻及高度。',
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: '检查您的通行窗口',
|
|
71
|
+
text: '该工具将显示确切的时间间隔,在此期间您将有足够的深度进行安全导航。',
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
|
|
75
|
+
const bibliography: UnderKeelLocaleContent['bibliography'] = [
|
|
76
|
+
{
|
|
77
|
+
name: 'Ministerio de Transportes - Recreational Boating',
|
|
78
|
+
url: 'https://www.mitma.gob.es/marina-mercante/nautica-de-recreo/',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'Portos de Galicia - Tide Tables',
|
|
82
|
+
url: 'https://portosdegalicia.gal/es/taboa-de-mareas',
|
|
83
|
+
},
|
|
84
|
+
];
|
|
85
|
+
|
|
86
|
+
const seo: UnderKeelLocaleContent['seo'] = [
|
|
87
|
+
{
|
|
88
|
+
type: 'title',
|
|
89
|
+
text: '龙骨下富裕深度:在浅滩安全航行',
|
|
90
|
+
level: 2,
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
type: 'paragraph',
|
|
94
|
+
html: '航段规划并不止于在海图上画出航线。对于沿海导航员来说,最关键的计算之一就是 <strong>龙骨下富裕深度 (Under-Keel Clearance)</strong>:了解在什么时间会有足够的深度通过关键点而不搁浅。',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
type: 'title',
|
|
98
|
+
text: '海图深度是多少?它与潮汐有何关系?',
|
|
99
|
+
level: 3,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
type: 'paragraph',
|
|
103
|
+
html: '在航海图上,深度(测深)参考自 <strong>海图基准面 (Chart Datum)</strong>。按照惯例,这个水平是潮汐在正常条件下达到的最低水平。您的船只在任何特定时刻发现的实际深度是该测深值加上该瞬间的潮高。',
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
type: 'title',
|
|
107
|
+
text: '计算要素:吃水与裕度',
|
|
108
|
+
level: 3,
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
type: 'list',
|
|
112
|
+
items: [
|
|
113
|
+
{ term: '最大负载吃水:', definition: '船只最低点(龙骨)在满载时达到的深度。' },
|
|
114
|
+
{ term: '海图深度:', definition: '航海图上您想要穿过的点的数字。如果有下划线,则该点在海图基准面时会干出。' },
|
|
115
|
+
{ term: '安全裕度:', definition: '吃水之上的额外净空(至少 0.5 到 1 米)。' },
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
type: 'title',
|
|
120
|
+
text: '通行窗口是如何工作的?',
|
|
121
|
+
level: 3,
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
type: 'paragraph',
|
|
125
|
+
html: '计算器确定水位上升到您的吃水加上所选安全裕度之上的确切时刻。从那一分钟起,<strong>通行窗口</strong>开启。如果潮汐正在退潮,工具将指示允许通过的时间,直到水位降至您的安全限值以下。',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'title',
|
|
129
|
+
text: '影响实际通行的因素',
|
|
130
|
+
level: 3,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
type: 'table',
|
|
134
|
+
headers: ['因素', '效应', '建议'],
|
|
135
|
+
rows: [
|
|
136
|
+
['<strong>涌浪</strong>', '减少船体下方的水', '显著增加安全裕度'],
|
|
137
|
+
['<strong>兴波下沉 (Squat effect)</strong>', '通过吸力增加吃水', '在关键区域降低航速'],
|
|
138
|
+
['<strong>沙质底质</strong>', '深度随风暴而变化', '保持测深仪开启并留出额外裕度'],
|
|
139
|
+
],
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
type: 'tip',
|
|
143
|
+
title: '航行提示',
|
|
144
|
+
html: '如果您的通行窗口非常窄或天气恶化,最明智的决定通常是在外海深水区等待,直到潮汐上升到所需高度。',
|
|
145
|
+
},
|
|
146
|
+
];
|
|
147
|
+
|
|
148
|
+
const schemas: UnderKeelLocaleContent['schemas'] = [
|
|
149
|
+
{
|
|
150
|
+
'@context': 'https://schema.org',
|
|
151
|
+
'@type': 'SoftwareApplication',
|
|
152
|
+
name: title,
|
|
153
|
+
description,
|
|
154
|
+
applicationCategory: 'UtilityApplication',
|
|
155
|
+
operatingSystem: 'Web',
|
|
156
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
157
|
+
} as WithContext<SoftwareApplication>,
|
|
158
|
+
{
|
|
159
|
+
'@context': 'https://schema.org',
|
|
160
|
+
'@type': 'FAQPage',
|
|
161
|
+
mainEntity: faq.map((item) => ({
|
|
162
|
+
'@type': 'Question',
|
|
163
|
+
name: item.question,
|
|
164
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
165
|
+
})),
|
|
166
|
+
} as WithContext<FAQPage>,
|
|
167
|
+
{
|
|
168
|
+
'@context': 'https://schema.org',
|
|
169
|
+
'@type': 'HowTo',
|
|
170
|
+
name: `如何使用: ${title}`,
|
|
171
|
+
step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
|
|
172
|
+
} as WithContext<HowTo>,
|
|
173
|
+
];
|
|
174
|
+
|
|
175
|
+
export const content: UnderKeelLocaleContent = {
|
|
176
|
+
slug,
|
|
177
|
+
title,
|
|
178
|
+
description,
|
|
179
|
+
ui,
|
|
180
|
+
seo,
|
|
181
|
+
faq,
|
|
182
|
+
bibliography,
|
|
183
|
+
howTo,
|
|
184
|
+
schemas,
|
|
185
|
+
};
|
|
@@ -36,6 +36,18 @@ export const underKeel: NauticalToolEntry<UnderKeelUI> = {
|
|
|
36
36
|
es: () => import('./i18n/es').then((m) => m.content),
|
|
37
37
|
en: () => import('./i18n/en').then((m) => m.content),
|
|
38
38
|
fr: () => import('./i18n/fr').then((m) => m.content),
|
|
39
|
+
de: () => import('./i18n/de').then((m) => m.content),
|
|
40
|
+
id: () => import('./i18n/id').then((m) => m.content),
|
|
41
|
+
it: () => import('./i18n/it').then((m) => m.content),
|
|
42
|
+
ja: () => import('./i18n/ja').then((m) => m.content),
|
|
43
|
+
ko: () => import('./i18n/ko').then((m) => m.content),
|
|
44
|
+
nl: () => import('./i18n/nl').then((m) => m.content),
|
|
45
|
+
pl: () => import('./i18n/pl').then((m) => m.content),
|
|
46
|
+
pt: () => import('./i18n/pt').then((m) => m.content),
|
|
47
|
+
ru: () => import('./i18n/ru').then((m) => m.content),
|
|
48
|
+
sv: () => import('./i18n/sv').then((m) => m.content),
|
|
49
|
+
tr: () => import('./i18n/tr').then((m) => m.content),
|
|
50
|
+
zh: () => import('./i18n/zh').then((m) => m.content),
|
|
39
51
|
},
|
|
40
52
|
};
|
|
41
53
|
|