@jjlmoya/utils-nautical 1.6.0 → 1.7.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 (88) hide show
  1. package/package.json +72 -71
  2. package/src/tests/i18n_coverage.test.ts +36 -0
  3. package/src/tests/locale_completeness.test.ts +42 -0
  4. package/src/tests/no_h1_in_components.test.ts +48 -0
  5. package/src/tests/schemas_fulfillment.test.ts +23 -0
  6. package/src/tests/slug_uniqueness.test.ts +81 -0
  7. package/src/tests/title_quality.test.ts +55 -0
  8. package/src/tool/endurance/i18n/de.ts +249 -0
  9. package/src/tool/endurance/i18n/id.ts +249 -0
  10. package/src/tool/endurance/i18n/it.ts +249 -0
  11. package/src/tool/endurance/i18n/ja.ts +249 -0
  12. package/src/tool/endurance/i18n/ko.ts +249 -0
  13. package/src/tool/endurance/i18n/nl.ts +249 -0
  14. package/src/tool/endurance/i18n/pl.ts +249 -0
  15. package/src/tool/endurance/i18n/pt.ts +249 -0
  16. package/src/tool/endurance/i18n/ru.ts +249 -0
  17. package/src/tool/endurance/i18n/sv.ts +249 -0
  18. package/src/tool/endurance/i18n/tr.ts +249 -0
  19. package/src/tool/endurance/i18n/zh.ts +249 -0
  20. package/src/tool/endurance/index.ts +12 -0
  21. package/src/tool/nauticalConverter/i18n/de.ts +239 -0
  22. package/src/tool/nauticalConverter/i18n/id.ts +239 -0
  23. package/src/tool/nauticalConverter/i18n/it.ts +239 -0
  24. package/src/tool/nauticalConverter/i18n/ja.ts +239 -0
  25. package/src/tool/nauticalConverter/i18n/ko.ts +239 -0
  26. package/src/tool/nauticalConverter/i18n/nl.ts +239 -0
  27. package/src/tool/nauticalConverter/i18n/pl.ts +239 -0
  28. package/src/tool/nauticalConverter/i18n/pt.ts +239 -0
  29. package/src/tool/nauticalConverter/i18n/ru.ts +239 -0
  30. package/src/tool/nauticalConverter/i18n/sv.ts +239 -0
  31. package/src/tool/nauticalConverter/i18n/tr.ts +239 -0
  32. package/src/tool/nauticalConverter/i18n/zh.ts +239 -0
  33. package/src/tool/nauticalConverter/index.ts +12 -0
  34. package/src/tool/sailArea/component.astro +1 -1
  35. package/src/tool/sailArea/i18n/de.ts +275 -0
  36. package/src/tool/sailArea/i18n/id.ts +275 -0
  37. package/src/tool/sailArea/i18n/it.ts +275 -0
  38. package/src/tool/sailArea/i18n/ja.ts +275 -0
  39. package/src/tool/sailArea/i18n/ko.ts +275 -0
  40. package/src/tool/sailArea/i18n/nl.ts +275 -0
  41. package/src/tool/sailArea/i18n/pl.ts +275 -0
  42. package/src/tool/sailArea/i18n/pt.ts +275 -0
  43. package/src/tool/sailArea/i18n/ru.ts +275 -0
  44. package/src/tool/sailArea/i18n/sv.ts +275 -0
  45. package/src/tool/sailArea/i18n/tr.ts +275 -0
  46. package/src/tool/sailArea/i18n/zh.ts +275 -0
  47. package/src/tool/sailArea/index.ts +12 -0
  48. package/src/tool/speedConverter/i18n/de.ts +271 -0
  49. package/src/tool/speedConverter/i18n/id.ts +271 -0
  50. package/src/tool/speedConverter/i18n/it.ts +271 -0
  51. package/src/tool/speedConverter/i18n/ja.ts +271 -0
  52. package/src/tool/speedConverter/i18n/ko.ts +271 -0
  53. package/src/tool/speedConverter/i18n/nl.ts +271 -0
  54. package/src/tool/speedConverter/i18n/pl.ts +271 -0
  55. package/src/tool/speedConverter/i18n/pt.ts +271 -0
  56. package/src/tool/speedConverter/i18n/ru.ts +194 -0
  57. package/src/tool/speedConverter/i18n/sv.ts +271 -0
  58. package/src/tool/speedConverter/i18n/tr.ts +225 -0
  59. package/src/tool/speedConverter/i18n/zh.ts +271 -0
  60. package/src/tool/speedConverter/index.ts +12 -0
  61. package/src/tool/tideCalculator/i18n/de.ts +203 -0
  62. package/src/tool/tideCalculator/i18n/id.ts +203 -0
  63. package/src/tool/tideCalculator/i18n/it.ts +203 -0
  64. package/src/tool/tideCalculator/i18n/ja.ts +203 -0
  65. package/src/tool/tideCalculator/i18n/ko.ts +203 -0
  66. package/src/tool/tideCalculator/i18n/nl.ts +203 -0
  67. package/src/tool/tideCalculator/i18n/pl.ts +203 -0
  68. package/src/tool/tideCalculator/i18n/pt.ts +203 -0
  69. package/src/tool/tideCalculator/i18n/ru.ts +203 -0
  70. package/src/tool/tideCalculator/i18n/sv.ts +203 -0
  71. package/src/tool/tideCalculator/i18n/tr.ts +203 -0
  72. package/src/tool/tideCalculator/i18n/zh.ts +203 -0
  73. package/src/tool/tideCalculator/index.ts +12 -0
  74. package/src/tool/underKeel/i18n/de.ts +189 -0
  75. package/src/tool/underKeel/i18n/en.ts +2 -2
  76. package/src/tool/underKeel/i18n/fr.ts +2 -2
  77. package/src/tool/underKeel/i18n/id.ts +189 -0
  78. package/src/tool/underKeel/i18n/it.ts +176 -0
  79. package/src/tool/underKeel/i18n/ja.ts +185 -0
  80. package/src/tool/underKeel/i18n/ko.ts +185 -0
  81. package/src/tool/underKeel/i18n/nl.ts +176 -0
  82. package/src/tool/underKeel/i18n/pl.ts +176 -0
  83. package/src/tool/underKeel/i18n/pt.ts +176 -0
  84. package/src/tool/underKeel/i18n/ru.ts +176 -0
  85. package/src/tool/underKeel/i18n/sv.ts +176 -0
  86. package/src/tool/underKeel/i18n/tr.ts +185 -0
  87. package/src/tool/underKeel/i18n/zh.ts +185 -0
  88. package/src/tool/underKeel/index.ts +12 -0
@@ -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.5m)を加えます。',
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>スクワット現象</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
+ };
@@ -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미터 이상의 최소 안전 여유를 두는 것이 권장됩니다. 이 여유는 조석 계산 오차, 기압 변화 또는 예상치 못한 너울(swell)을 상쇄하기 위한 것입니다.',
37
+ },
38
+ {
39
+ question: '너울은 용골 하부 간격에 어떤 영향을 주나요?',
40
+ answer: '너울은 선체를 상하로 흔듭니다. 파도의 골(lowest point)에서는 배가 정지해 있을 때보다 바닥에 더 가까워집니다. 너울이 있는 지역을 통과할 때는 안전 여유를 대폭 늘려야 합니다.',
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.5m)를 더합니다.',
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, UKC)</strong>입니다. 즉, 좌초 없이 위험 지점을 통과하기 위해 언제 충분한 수심이 확보될지 아는 것입니다.',
95
+ },
96
+ {
97
+ type: 'title',
98
+ text: '해도 수심과 조석의 관계는?',
99
+ level: 3,
100
+ },
101
+ {
102
+ type: 'paragraph',
103
+ html: '해도의 수심(sounding)은 <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>스쿼트 현상</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
+ };
@@ -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-calculator-nl';
5
+ const title = 'Kielspeling UKC Calculator';
6
+ const description =
7
+ 'Bereken het veilige tijdvenster om drempels, kanalen of diepgang-beperkte punten te passeren. Voer de diepgang van uw boot, de kaartdiepte en getijdegegevens in.';
8
+
9
+ const ui: UnderKeelUI = {
10
+ parametersLabel: 'Parameters',
11
+ boatDraftLabel: 'Diepgang Boot',
12
+ chartDepthLabel: 'Kaartdiepte',
13
+ safetyMarginLabel: 'Veiligheidsmarge',
14
+ highTideLabel: 'Hoogwater',
15
+ lowTideLabel: 'Laagwater',
16
+ metersLabel: 'meter',
17
+ passWindowLabel: 'Vaarvenster',
18
+ neededLabel: 'Benodigde diepte',
19
+ tideRequiredLabel: 'Minimaal benodigd getij',
20
+ statusNeverLabel: 'Geen kielspeling in deze cyclus',
21
+ statusAlwaysLabel: 'Altijd veilig gedurende de cyclus',
22
+ statusFromLabel: 'Vaarvenster vanaf:',
23
+ statusUntilLabel: 'Vaarvenster tot:',
24
+ bottomLabel: 'BODEM',
25
+ faqTitle: 'Veelgestelde Vragen',
26
+ bibliographyTitle: 'Bibliografie',
27
+ };
28
+
29
+ const faq: UnderKeelLocaleContent['faq'] = [
30
+ {
31
+ question: 'Wat is een kielspeling-berekening precies?',
32
+ answer: 'Het is de berekening van het moment waarop er voldoende diepte is op een kritiek punt (zoals een zandbank of een nauw kanaal) om een veilig transport van een schip mogelijk te maken, afhankelijk van de diepgang.',
33
+ },
34
+ {
35
+ question: 'Hoeveel veiligheidsmarge wordt aanbevolen?',
36
+ answer: 'Voor recreatievaartuigen wordt meestal een minimale veiligheidsmarge tussen 0,5 en 1 meter boven de diepgang van de boot aanbevolen. Deze marge compenseert mogelijke fouten in getijdeberekeningen, atmosferische drukvariaties of onverwachte deining.',
37
+ },
38
+ {
39
+ question: 'Welke invloed heeft deining op de kielspeling?',
40
+ answer: 'Deining veroorzaakt verticale oscillaties in de romp. Op het laagste punt van de golf bevindt de boot zich dichter bij de bodem dan in rust. Bij het passeren van gebieden met deining moet de veiligheidsmarge aanzienlijk worden verhoogd.',
41
+ },
42
+ {
43
+ question: 'Wat is de kaartdiepte?',
44
+ answer: 'Het is de minimale diepte op een punt wanneer het getij op Chart Datum staat. Het wordt opgeteld bij de getijdenhoogte van dat moment om de totale beschikbare diepte te geven.',
45
+ },
46
+ {
47
+ question: 'Wat betekent een onderstreepte diepteschatting op de kaart?',
48
+ answer: 'Het betekent dat dat punt droogvalt wanneer het getij op Chart Datum staat. U hebt dan een hogere getijdenhoogte nodig om eroverheen te kunnen varen.',
49
+ },
50
+ {
51
+ question: 'Wat is het Squat-effect?',
52
+ answer: 'Het is een hydrodynamisch fenomeen waarbij een schip dat door ondiepe kanalen vaart, de neiging heeft lager te zinken ten opzichte van de waterlijn. Hoe sneller u vaart, hoe meer de dynamische diepgang toeneemt en hoe minder water u onder de kiel hebt.',
53
+ },
54
+ ];
55
+
56
+ const howTo: UnderKeelLocaleContent['howTo'] = [
57
+ {
58
+ name: 'Definieer diepgang en veiligheidsmarge',
59
+ text: 'Meet de diepgang van uw boot op het maximale punt en voeg een prudente veiligheidsmarge toe (bijv. 0,5 m).',
60
+ },
61
+ {
62
+ name: 'Zoek de kaartdiepte op',
63
+ text: 'Zoek de waarde voor het kritieke punt waar u gaat varen. Let op of het een zanderig of rotsachtig gebied is.',
64
+ },
65
+ {
66
+ name: 'Voer de getijdengegevens in',
67
+ text: 'Gebruik de tijden en hoogtes van hoog- en laagwater uit de dichtstbijzijnde officiële getijdenalmanak.',
68
+ },
69
+ {
70
+ name: 'Controleer uw vaarvenster',
71
+ text: 'De tool toont het exacte tijdsinterval waarin u voldoende diepte hebt om veilig te navigeren.',
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: Veilig Navigeren over Ondiepten',
90
+ level: 2,
91
+ },
92
+ {
93
+ type: 'paragraph',
94
+ html: 'Het plannen van een passage eindigt niet met het tekenen van een koers op de kaart. Voor de kustnavigator is een van de meest kritische berekeningen de <strong>kielspeling (UKC)</strong>: weten op welk tijdstip er voldoende diepte zal zijn om een kritiek punt over te steken zonder vast te lopen.',
95
+ },
96
+ {
97
+ type: 'title',
98
+ text: 'Wat is de kaartdiepte en hoe verhoudt deze zich tot het getij?',
99
+ level: 3,
100
+ },
101
+ {
102
+ type: 'paragraph',
103
+ html: 'Op zeekaarten zijn diepten (peilingen) gerelateerd aan het <strong>Reductievlak (Chart Datum)</strong>. De werkelijke diepte die uw boot op een bepaald moment zal vinden, is de som van die peiling plus de getijdenhoogte op dat moment.',
104
+ },
105
+ {
106
+ type: 'title',
107
+ text: 'Elementen van de berekening: Diepgang en Marge',
108
+ level: 3,
109
+ },
110
+ {
111
+ type: 'list',
112
+ items: [
113
+ { term: 'Maximale beladen diepgang', definition: 'De diepte die het laagste punt van de boot (de kiel) bereikt bij volledige belading.' },
114
+ { term: 'Kaartdiepte', definition: 'Het getal op de zeekaart voor het punt dat u wilt oversteken.' },
115
+ { term: 'Veiligheidsmarge', definition: 'Extra vrije ruimte van minimaal 0,5 tot 1 meter boven de diepgang.' },
116
+ ],
117
+ },
118
+ {
119
+ type: 'title',
120
+ text: 'Factoren die de passage beïnvloeden',
121
+ level: 3,
122
+ },
123
+ {
124
+ type: 'table',
125
+ headers: ['Factor', 'Effect', 'Aanbeveling'],
126
+ rows: [
127
+ ['<strong>Deining</strong>', 'Vermindert het water onder de romp', 'Verhoog de veiligheidsmarge aanzienlijk'],
128
+ ['<strong>Squat-effect</strong>', 'Verhoogt de diepgang door aanzuiging', 'Snelheid verminderen in kritieke gebieden'],
129
+ ['<strong>Zandbodem</strong>', 'Diepte variabel door stormen', 'Houd dieptemeter actief en extra marge aan'],
130
+ ],
131
+ },
132
+ {
133
+ type: 'tip',
134
+ title: 'Navigatietip',
135
+ 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.',
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: `Gebruiksaanwijzing: ${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
+ };