@jjlmoya/utils-nautical 1.5.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 (99) 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/component.astro +340 -1
  9. package/src/tool/endurance/i18n/de.ts +249 -0
  10. package/src/tool/endurance/i18n/id.ts +249 -0
  11. package/src/tool/endurance/i18n/it.ts +249 -0
  12. package/src/tool/endurance/i18n/ja.ts +249 -0
  13. package/src/tool/endurance/i18n/ko.ts +249 -0
  14. package/src/tool/endurance/i18n/nl.ts +249 -0
  15. package/src/tool/endurance/i18n/pl.ts +249 -0
  16. package/src/tool/endurance/i18n/pt.ts +249 -0
  17. package/src/tool/endurance/i18n/ru.ts +249 -0
  18. package/src/tool/endurance/i18n/sv.ts +249 -0
  19. package/src/tool/endurance/i18n/tr.ts +249 -0
  20. package/src/tool/endurance/i18n/zh.ts +249 -0
  21. package/src/tool/endurance/index.ts +12 -0
  22. package/src/tool/nauticalConverter/component.astro +208 -1
  23. package/src/tool/nauticalConverter/i18n/de.ts +239 -0
  24. package/src/tool/nauticalConverter/i18n/id.ts +239 -0
  25. package/src/tool/nauticalConverter/i18n/it.ts +239 -0
  26. package/src/tool/nauticalConverter/i18n/ja.ts +239 -0
  27. package/src/tool/nauticalConverter/i18n/ko.ts +239 -0
  28. package/src/tool/nauticalConverter/i18n/nl.ts +239 -0
  29. package/src/tool/nauticalConverter/i18n/pl.ts +239 -0
  30. package/src/tool/nauticalConverter/i18n/pt.ts +239 -0
  31. package/src/tool/nauticalConverter/i18n/ru.ts +239 -0
  32. package/src/tool/nauticalConverter/i18n/sv.ts +239 -0
  33. package/src/tool/nauticalConverter/i18n/tr.ts +239 -0
  34. package/src/tool/nauticalConverter/i18n/zh.ts +239 -0
  35. package/src/tool/nauticalConverter/index.ts +12 -0
  36. package/src/tool/sailArea/component.astro +355 -2
  37. package/src/tool/sailArea/i18n/de.ts +275 -0
  38. package/src/tool/sailArea/i18n/id.ts +275 -0
  39. package/src/tool/sailArea/i18n/it.ts +275 -0
  40. package/src/tool/sailArea/i18n/ja.ts +275 -0
  41. package/src/tool/sailArea/i18n/ko.ts +275 -0
  42. package/src/tool/sailArea/i18n/nl.ts +275 -0
  43. package/src/tool/sailArea/i18n/pl.ts +275 -0
  44. package/src/tool/sailArea/i18n/pt.ts +275 -0
  45. package/src/tool/sailArea/i18n/ru.ts +275 -0
  46. package/src/tool/sailArea/i18n/sv.ts +275 -0
  47. package/src/tool/sailArea/i18n/tr.ts +275 -0
  48. package/src/tool/sailArea/i18n/zh.ts +275 -0
  49. package/src/tool/sailArea/index.ts +12 -0
  50. package/src/tool/speedConverter/component.astro +242 -1
  51. package/src/tool/speedConverter/i18n/de.ts +271 -0
  52. package/src/tool/speedConverter/i18n/id.ts +271 -0
  53. package/src/tool/speedConverter/i18n/it.ts +271 -0
  54. package/src/tool/speedConverter/i18n/ja.ts +271 -0
  55. package/src/tool/speedConverter/i18n/ko.ts +271 -0
  56. package/src/tool/speedConverter/i18n/nl.ts +271 -0
  57. package/src/tool/speedConverter/i18n/pl.ts +271 -0
  58. package/src/tool/speedConverter/i18n/pt.ts +271 -0
  59. package/src/tool/speedConverter/i18n/ru.ts +194 -0
  60. package/src/tool/speedConverter/i18n/sv.ts +271 -0
  61. package/src/tool/speedConverter/i18n/tr.ts +225 -0
  62. package/src/tool/speedConverter/i18n/zh.ts +271 -0
  63. package/src/tool/speedConverter/index.ts +12 -0
  64. package/src/tool/tideCalculator/component.astro +313 -1
  65. package/src/tool/tideCalculator/i18n/de.ts +203 -0
  66. package/src/tool/tideCalculator/i18n/id.ts +203 -0
  67. package/src/tool/tideCalculator/i18n/it.ts +203 -0
  68. package/src/tool/tideCalculator/i18n/ja.ts +203 -0
  69. package/src/tool/tideCalculator/i18n/ko.ts +203 -0
  70. package/src/tool/tideCalculator/i18n/nl.ts +203 -0
  71. package/src/tool/tideCalculator/i18n/pl.ts +203 -0
  72. package/src/tool/tideCalculator/i18n/pt.ts +203 -0
  73. package/src/tool/tideCalculator/i18n/ru.ts +203 -0
  74. package/src/tool/tideCalculator/i18n/sv.ts +203 -0
  75. package/src/tool/tideCalculator/i18n/tr.ts +203 -0
  76. package/src/tool/tideCalculator/i18n/zh.ts +203 -0
  77. package/src/tool/tideCalculator/index.ts +12 -0
  78. package/src/tool/underKeel/component.astro +321 -1
  79. package/src/tool/underKeel/i18n/de.ts +189 -0
  80. package/src/tool/underKeel/i18n/en.ts +2 -2
  81. package/src/tool/underKeel/i18n/fr.ts +2 -2
  82. package/src/tool/underKeel/i18n/id.ts +189 -0
  83. package/src/tool/underKeel/i18n/it.ts +176 -0
  84. package/src/tool/underKeel/i18n/ja.ts +185 -0
  85. package/src/tool/underKeel/i18n/ko.ts +185 -0
  86. package/src/tool/underKeel/i18n/nl.ts +176 -0
  87. package/src/tool/underKeel/i18n/pl.ts +176 -0
  88. package/src/tool/underKeel/i18n/pt.ts +176 -0
  89. package/src/tool/underKeel/i18n/ru.ts +176 -0
  90. package/src/tool/underKeel/i18n/sv.ts +176 -0
  91. package/src/tool/underKeel/i18n/tr.ts +185 -0
  92. package/src/tool/underKeel/i18n/zh.ts +185 -0
  93. package/src/tool/underKeel/index.ts +12 -0
  94. package/src/tool/endurance/style.css +0 -337
  95. package/src/tool/nauticalConverter/style.css +0 -205
  96. package/src/tool/sailArea/style.css +0 -351
  97. package/src/tool/speedConverter/style.css +0 -239
  98. package/src/tool/tideCalculator/style.css +0 -310
  99. package/src/tool/underKeel/style.css +0 -318
@@ -0,0 +1,275 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { SailAreaUI, SailAreaLocaleContent } from '../index';
3
+
4
+ const slug = 'sail-area-calculator';
5
+ const title = 'セール面積・SA/D比計算ツール';
6
+ const description =
7
+ 'ヨットの総セール面積と、排水量に対するセール面積比(SA/D比)を計算します。I、J、P、Eの各寸法に基づいた航海パフォーマンス分析。';
8
+
9
+ const ui: SailAreaUI = {
10
+ hullSectionLabel: '船体データ',
11
+ totalMassLabel: '排水量',
12
+ rigSystemLabel: 'リグ',
13
+ intendedUseLabel: '使用目的',
14
+ rigGeometryLabel: 'リグの幾何寸法',
15
+ sailConfigLabel: 'リグ形式',
16
+ genoaOverlapLabel: 'ジェノアのオーバーラップ',
17
+ foqueLabel: 'ジブ',
18
+ genovaLabel: 'ジェノア',
19
+ sadRatioLabel: 'SA/D比',
20
+ totalAreaLabel: '総面積',
21
+ performanceLabel: 'パフォーマンス',
22
+ sloopLabel: 'スループ(1本マスト)',
23
+ cutterLabel: 'カッター(前帆2枚)',
24
+ ketchLabel: 'ケッチ(2本マスト)',
25
+ cruiserLabel: 'クルーザー',
26
+ performanceTypeLabel: 'パフォーマンス型',
27
+ racerLabel: 'レーサー',
28
+ exportPdfLabel: 'テクニカルレポートを生成',
29
+ faqTitle: 'よくある質問',
30
+ bibliographyTitle: '参考文献',
31
+ };
32
+
33
+ const faq: SailAreaLocaleContent['faq'] = [
34
+ {
35
+ question: 'なぜ私の船は軽風で遅いのですか?',
36
+ answer: 'SA/D比が15を下回っている可能性があります。これは、重量に対してセール面積が小さい重排水量艇であることを示しています。このような船が活発に帆走するには、12ノット以上の風が必要です。',
37
+ },
38
+ {
39
+ question: 'パフォーマンス向上のために水タンクを空にすべきですか?',
40
+ answer: 'はい、船体を軽くすることは実際の排水量を減らすため、SA/D比を直接的に向上させます。水や燃料のタンクを空にすることで、排水量を数百キログラム削減し、比率を大幅に高めることができます。',
41
+ },
42
+ {
43
+ question: 'セールの「ローチ (Roach)」とは何ですか?',
44
+ answer: 'ローチとは、メインセールのリーチ(後縁)の凸状の膨らみのことです。PとEで定義される基本的な幾何学的三角形を超えた追加のセール面積を提供します。レーシング艇は、リジッドバテンを用いたアグレッシブなローチを持つことが一般的です。',
45
+ },
46
+ {
47
+ question: '自分の船の実際の排水量はどうやって測ればいいですか?',
48
+ answer: '最も信頼できる方法は、満載排水量(備品、水、燃料、乗組員をすべて載せた状態)を使用することです。ビルダーの記録にある軽荷排水量は、通常楽観的な数値です。通常の帆走条件での実際の排水量を使用してください。',
49
+ },
50
+ {
51
+ question: '自船のI、J、P、E寸法はどこで確認できますか?',
52
+ answer: 'オーナーズマニュアル、ORCまたはIRCのレーティング証明書、あるいはクラス証明書のドキュメントに記載されています。また、メジャーを使って船上で直接測定するか、造船所に問い合わせることもできます。',
53
+ },
54
+ ];
55
+
56
+ const howTo: SailAreaLocaleContent['howTo'] = [
57
+ {
58
+ name: 'リグ形式を選択する',
59
+ text: 'スループ(1本マスト)、カッター(ジブとステイセルの2枚)、またはケッチ(ミズンマストあり)から選択します。これにより、総セール面積の計算方法が決まります。',
60
+ },
61
+ {
62
+ name: '排水量を入力する',
63
+ text: 'ヨットの実際の満載排水量(kgまたはlbs)を入力します。この数値はSA/D比の計算の鍵となります。',
64
+ },
65
+ {
66
+ name: 'リグの寸法を入力する',
67
+ text: 'P(マスト高)、E(ブーム長)、I(フォアトライアングル高)、J(フォアトライアングル底辺)をメートルまたはフィートで入力してください。',
68
+ },
69
+ {
70
+ name: 'ジェノアのオーバーラップを調整する',
71
+ text: 'スライダーを動かしてジェノアのオーバーラップを指定します。100%はオーバーラップなしのジブ、130%は標準的なジェノア、155%は大型のジェノアです。',
72
+ },
73
+ {
74
+ name: 'SA/D比を解釈する',
75
+ text: '比率が16から20の間であれば、バランスのとれたクルーザーです。20を超えると軽風で非常に活発になりますが、強風下での操船は難しくなります。',
76
+ },
77
+ ];
78
+
79
+ const bibliography: SailAreaLocaleContent['bibliography'] = [
80
+ {
81
+ name: 'Society of Naval Architects and Marine Engineers - SNAME',
82
+ url: 'https://www.sname.org/',
83
+ },
84
+ {
85
+ name: 'ORC - Offshore Racing Congress',
86
+ url: 'https://orc.org/',
87
+ },
88
+ {
89
+ name: 'Elvstrom Sailmakers - Sail Manual',
90
+ url: 'https://www.elvstromsails.com/',
91
+ },
92
+ ];
93
+
94
+ const seo: SailAreaLocaleContent['seo'] = [
95
+ {
96
+ type: 'title',
97
+ text: 'セール面積計算ツール:パフォーマンスと比率の完全ガイド',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: 'セール面積は、帆船における空気力学的な「エンジン」です。船がどれだけの風エネルギーを捉えられるかを決定し、排水量と組み合わさることで、その船の航海上の性格(ゆったりとしたクルーザーか、敏感なレーシングマシンか)を定義します。この値を正しく計算することは、ヨットの挙動を理解するための第一歩です。',
103
+ },
104
+ {
105
+ type: 'paragraph',
106
+ html: '帆走とは、セールにかかる風の力と船体にかかる水の抵抗との絶え間ないダンスです。<strong>セール面積/排水量比(SA/D比)</strong>は、この関係を単一の数値に集約したもので、長さや排水量が異なるあらゆる船を対等な立場で比較することを可能にします。',
107
+ },
108
+ {
109
+ type: 'stats',
110
+ items: [
111
+ { label: '理想的なクルーザー比率', value: '15-18', icon: 'mdi:anchor' },
112
+ { label: 'レーシング艇', value: '+24', icon: 'mdi:sailing' },
113
+ { label: '誤差範囲', value: '5-10%', icon: 'mdi:alert-circle-outline' },
114
+ ],
115
+ columns: 3,
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: 'SA/D比は何に使用されますか?',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: '<strong>SA/D比</strong>は、出航前に船の挙動を予測するための診断ツールです。比率が低い場合は頑丈で安全ですが、軽風では遅い船であることを示します。比率が高い場合はスピードと「飛ぶような」感覚を提供しますが、風が強まった際に乗組員のより高度なスキルが求められます。どちらかが優れているわけではなく、意図する帆走のタイプによります。',
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: 'SA/D比 リファレンス表',
129
+ level: 4,
130
+ },
131
+ {
132
+ type: 'table',
133
+ headers: ['比率', '船のタイプ', '海上での挙動'],
134
+ rows: [
135
+ ['14未満', '重排水量艇/貨物船', '安定しているが遅い、持続的な風が必要'],
136
+ ['14 - 16.5', '遠洋航海用クルーザー', 'バランスが良く快適、のぼり性能が良い'],
137
+ ['16.5 - 20', '標準的なマリーナ・クルーザー', 'そよ風で活発、扱いやすく多目的'],
138
+ ['20 - 25', 'パフォーマンス・クルーザー', '速い、操船スキルを要する、軽風でエキサイティング'],
139
+ ['25超', 'レーサー/エクストリーム', '非常に速いが過敏、熟練したクルーが必要'],
140
+ ],
141
+ },
142
+ {
143
+ type: 'title',
144
+ text: '寸法のテクニカル用語集 (I, J, P, E)',
145
+ level: 3,
146
+ },
147
+ {
148
+ type: 'glossary',
149
+ items: [
150
+ {
151
+ term: 'I (フォアトライアングル高)',
152
+ definition: 'デッキからマスト上のジブハリアードの取り付け位置までの垂直距離。前三角の高さ。',
153
+ },
154
+ {
155
+ term: 'J (フォアトライアングル底辺)',
156
+ definition: 'マストからステム(船首)までの水平距離。前帆を取り付ける前三角の底辺。',
157
+ },
158
+ {
159
+ term: 'P (マスト高)',
160
+ definition: 'デッキからマスト上部のメインハリアード・シーブまでの距離。メインセールの高さ。',
161
+ },
162
+ {
163
+ term: 'E (ブーム長)',
164
+ definition: 'マストからブーム端のメインセール・クルまでの距離。メインセールの底辺。',
165
+ },
166
+ ],
167
+ },
168
+ {
169
+ type: 'title',
170
+ text: '航海試験での計算 (ヨットマスター資格)',
171
+ level: 3,
172
+ },
173
+ {
174
+ type: 'paragraph',
175
+ html: 'セール面積の計算とSA/D比は、<strong>ヨットマスター</strong>や沿岸スキッパー資格の試験範囲に含まれています。リグの幾何学寸法と排水量の関係を理解することは、海の上での安全な判断(早めの縮帆、適切なジェノアの選択、突風前の船体挙動の予測など)を下すために不可欠です。',
176
+ },
177
+ {
178
+ type: 'tip',
179
+ title: '追い風用のセールと安全性',
180
+ html: '外洋航海や長距離航行の場合、SA/D比が16から18の間であることが、スピードと安全性の最良のバランスを提供します。比率が22を超える船は、風力4〜5(ビューフォート階級)程度の風でもリーフィング(縮帆)が必要になる場合があります。',
181
+ },
182
+ {
183
+ type: 'title',
184
+ text: 'ジェノアのオーバーラップはパフォーマンスにどう影響しますか?',
185
+ level: 4,
186
+ },
187
+ {
188
+ type: 'paragraph',
189
+ html: '<strong>ジェノア</strong>は、クル(帆の角)がマストの後方に位置し、メインセールと「重なる(オーバーラップ)」ほど大きな前帆のことです。オーバーラップのパーセンテージは、ラフ(前縁)に対する垂線(LP)がJ寸法に対してどれだけ長いかを示します。150%ジェノアはJの150%に相当するLPを持ち、通常のジブよりもはるかに大きなセール面積を提供します。',
190
+ },
191
+ {
192
+ type: 'comparative',
193
+ items: [
194
+ {
195
+ title: 'ダクロン (クルージング用)',
196
+ description: 'クルージング用セールの定番素材。頑丈でメンテナンスが容易。',
197
+ points: [
198
+ '耐久性と耐UV性能が高い',
199
+ 'メンテナンスコストが低い',
200
+ '重量があり、荷重下で伸びやすい',
201
+ '沿岸および遠洋のクルージングに最適',
202
+ ],
203
+ },
204
+ {
205
+ title: 'ラミネート (レース用)',
206
+ description: 'ケブラー、スペクトラ、ダイニーマなどのハイテク素材。',
207
+ highlight: true,
208
+ points: [
209
+ '伸びが最小限:空力効率を最大化',
210
+ 'ダクロンより大幅に軽量',
211
+ '高コストで寿命が短い',
212
+ 'SA/D比が22を超える船には不可欠',
213
+ ],
214
+ },
215
+ ],
216
+ columns: 2,
217
+ },
218
+ {
219
+ type: 'title',
220
+ text: '帆走の物理学と復原性',
221
+ level: 3,
222
+ },
223
+ {
224
+ type: 'paragraph',
225
+ html: 'セール面積は推進力を生み出しますが、同時に船を傾けようとする<strong>ヒールモーメント</strong>も発生させます。復原性は、船がこの傾く力に対抗できる「復原モーメント」によって測られます。バラストが少ない船で高いSA/D比を持つことは危険を伴う場合がありますが、深く重いキールを持つ船では同じ比率でも完璧に制御可能です。',
226
+ },
227
+ {
228
+ type: 'paragraph',
229
+ html: '実際の利用可能なパワーを計算するために、造船技師はSA/D比に加えて<strong>排水量・長さ比(DLR)</strong>をよく使用します。これら2つの比率を組み合わせることで、その船が「海のタグボート」なのか「レーシング・プレーナー」なのかを正確に説明できます。',
230
+ },
231
+ {
232
+ type: 'tip',
233
+ title: '復原性と安全性',
234
+ html: 'SA/D比だけを孤立させて評価しないでください。比率22で復原角度90度の船は、比率18で復原角度60度の船よりもはるかに安全です。常に自船の復原力曲線を確認してください。',
235
+ },
236
+ ];
237
+
238
+ const schemas: SailAreaLocaleContent['schemas'] = [
239
+ {
240
+ '@context': 'https://schema.org',
241
+ '@type': 'SoftwareApplication',
242
+ name: title,
243
+ description,
244
+ applicationCategory: 'UtilityApplication',
245
+ operatingSystem: 'Web',
246
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
247
+ } as WithContext<SoftwareApplication>,
248
+ {
249
+ '@context': 'https://schema.org',
250
+ '@type': 'FAQPage',
251
+ mainEntity: faq.map((item) => ({
252
+ '@type': 'Question',
253
+ name: item.question,
254
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
255
+ })),
256
+ } as WithContext<FAQPage>,
257
+ {
258
+ '@context': 'https://schema.org',
259
+ '@type': 'HowTo',
260
+ name: `使い方: ${title}`,
261
+ step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
262
+ } as WithContext<HowTo>,
263
+ ];
264
+
265
+ export const content: SailAreaLocaleContent = {
266
+ slug,
267
+ title,
268
+ description,
269
+ ui,
270
+ seo,
271
+ faq,
272
+ bibliography,
273
+ howTo,
274
+ schemas,
275
+ };
@@ -0,0 +1,275 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { SailAreaUI, SailAreaLocaleContent } from '../index';
3
+
4
+ const slug = 'sail-area-calculator';
5
+ const title = '돛 면적 및 SA/D 비율 계산기';
6
+ const description =
7
+ '요트의 총 돛 면적과 배수량 대비 돛 면적 비율(SA/D)을 계산합니다. I, J, P, E 측정치에 기반한 해양 성능 분석.';
8
+
9
+ const ui: SailAreaUI = {
10
+ hullSectionLabel: '선체 데이터',
11
+ totalMassLabel: '배수량',
12
+ rigSystemLabel: '리그',
13
+ intendedUseLabel: '용도',
14
+ rigGeometryLabel: '리그 기하학',
15
+ sailConfigLabel: '리그 유형',
16
+ genoaOverlapLabel: '제노아 오버랩',
17
+ foqueLabel: '지브',
18
+ genovaLabel: '제노아',
19
+ sadRatioLabel: 'SA/D 비율',
20
+ totalAreaLabel: '총 면적',
21
+ performanceLabel: '성능',
22
+ sloopLabel: '슬루프 (단일 마스트)',
23
+ cutterLabel: '커터 (이중 헤드세일)',
24
+ ketchLabel: '케치 (이단 마스트)',
25
+ cruiserLabel: '크루저',
26
+ performanceTypeLabel: '성능 유형',
27
+ racerLabel: '레이서',
28
+ exportPdfLabel: '기술 보고서 생성',
29
+ faqTitle: '자주 묻는 질문',
30
+ bibliographyTitle: '참고 문헌',
31
+ };
32
+
33
+ const faq: SailAreaLocaleContent['faq'] = [
34
+ {
35
+ question: '왜 내 배는 약한 바람에서 느린가요?',
36
+ answer: 'SA/D 비율이 15 미만일 가능성이 높습니다. 이는 무게 대비 돛 면적이 작은 중배수량 선박임을 나타냅니다. 이런 배들은 활발하게 항해하기 위해 12노트 이상의 바람이 필요합니다.',
37
+ },
38
+ {
39
+ question: '성능을 높이기 위해 물 탱크를 비워야 할까요?',
40
+ answer: '네, 배를 가볍게 하는 것은 실제 배수량을 줄여 SA/D 비율을 직접적으로 개선합니다. 물과 연료 탱크를 비우면 배수량을 수백 킬로그램 줄일 수 있어 비율을 유의미하게 높일 수 있습니다.',
41
+ },
42
+ {
43
+ question: '돛의 로치(Roach)란 무엇인가요?',
44
+ answer: '로치는 메인세일의 리치(뒤쪽 가장자리)에 있는 볼록한 곡선 부분을 말합니다. 이는 P와 E로 정의되는 기본 기하학적 삼각형 너머의 추가적인 면적을 제공합니다. 레이싱 보트는 대개 리지드 배튼을 사용한 공격적인 로치를 가지고 있습니다.',
45
+ },
46
+ {
47
+ question: '내 배의 실제 배수량은 어떻게 측정하나요?',
48
+ answer: '가장 신뢰할 수 있는 방법은 만재 배수량(모든 비품, 물, 연료 및 승무원이 탑승한 상태)을 사용하는 것입니다. 건조사 매뉴얼의 경하 배수량은 보통 낙관적인 수치입니다. 일반적인 항해 조건에서의 실제 배수량을 사용하세요.',
49
+ },
50
+ {
51
+ question: '내 배의 I, J, P, E 측정값은 어디서 찾을 수 있나요?',
52
+ answer: '선주 매뉴얼, ORC 또는 IRC 레이팅 증명서, 혹은 클래스 증명서 문서에서 찾을 수 있습니다. 줄자로 배에서 직접 측정하거나 건조사에 문의하여 확인할 수도 있습니다.',
53
+ },
54
+ ];
55
+
56
+ const howTo: SailAreaLocaleContent['howTo'] = [
57
+ {
58
+ name: '리그 유형 선택',
59
+ text: '슬루프(단일 마스트), 커터(지브 및 스테이세일), 또는 케치(미즌 마스트) 중 선택하세요. 이는 총 돛 면적 계산 방식을 결정합니다.',
60
+ },
61
+ {
62
+ name: '배수량 입력',
63
+ text: '배의 실제 만재 배수량(kg 또는 lbs)을 사용하십시오. 이 수치는 SA/D 비율 계산의 핵심입니다.',
64
+ },
65
+ {
66
+ name: '리그 기하학 측정',
67
+ text: 'P(마스트 높이), E(붐 길이), I(앞삼각형 높이), J(앞삼각형 밑변) 측정값을 미터 또는 피트 단위로 입력하세요.',
68
+ },
69
+ {
70
+ name: '제노아 오버랩 조정',
71
+ text: '슬라이더를 움직여 제노아 오버랩을 지정하세요. 100%는 오버랩이 없는 지브, 130%는 표준 제노아, 155%는 대형 오버랩 제노아입니다.',
72
+ },
73
+ {
74
+ name: 'SA/D 비율 해석',
75
+ text: '16에서 20 사이의 비율은 균형 잡힌 크루저입니다. 20을 넘으면 약한 바람에서 매우 활발하게 움직이지만 바람이 강해지면 숙련된 조종이 필요합니다.',
76
+ },
77
+ ];
78
+
79
+ const bibliography: SailAreaLocaleContent['bibliography'] = [
80
+ {
81
+ name: 'Society of Naval Architects and Marine Engineers - SNAME',
82
+ url: 'https://www.sname.org/',
83
+ },
84
+ {
85
+ name: 'ORC - Offshore Racing Congress',
86
+ url: 'https://orc.org/',
87
+ },
88
+ {
89
+ name: 'Elvstrom Sailmakers - Sail Manual',
90
+ url: 'https://www.elvstromsails.com/',
91
+ },
92
+ ];
93
+
94
+ const seo: SailAreaLocaleContent['seo'] = [
95
+ {
96
+ type: 'title',
97
+ text: '돛 면적 계산기: 성능 및 비율 완벽 가이드',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: '돛 면적은 모든 범선의 공기역학적 엔진입니다. 배가 얼마나 많은 바람 에너지를 포착할 수 있는지를 결정하며, 배수량과 결합하여 느긋한 크루저가 될지 예민한 레이싱 머신이 될지 그 성격을 규정합니다. 이 값을 올바르게 계산하는 것은 요트의 거동을 이해하는 첫 걸음입니다.',
103
+ },
104
+ {
105
+ type: 'paragraph',
106
+ html: '항해는 돛에 가해지는 바람의 힘과 선체에 가해지는 물의 저항 사이의 끊임없는 춤과 같습니다. <strong>돛 면적 / 배수량 비율(SA/D)</strong>은 이 관계를 하나의 숫자로 포착하여 길이와 배수량이 다른 선박들을 대등하게 비교할 수 있게 해줍니다.',
107
+ },
108
+ {
109
+ type: 'stats',
110
+ items: [
111
+ { label: '이상적인 크루저 비율', value: '15-18', icon: 'mdi:anchor' },
112
+ { label: '레이싱 보트', value: '+24', icon: 'mdi:sailing' },
113
+ { label: '오차 범위', value: '5-10%', icon: 'mdi:alert-circle-outline' },
114
+ ],
115
+ columns: 3,
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: 'SA/D 비율은 어디에 사용되나요?',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: '<strong>SA/D 비율</strong>은 출항 전 배의 거동을 예측할 수 있게 해주는 진단 도구입니다. 낮은 비율은 튼튼하고 안전하지만 약한 바람에서 느린 배임을 나타내며, 높은 비율은 속도와 "날아가는 듯한" 느낌을 제공하지만 바람이 강해질 때 더 큰 기술을 요구합니다. 어느 쪽이 더 우월한 것이 아니라, 의도하는 항해 유형에 따라 선택이 달라집니다.',
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: 'SA/D 비율 참조표',
129
+ level: 4,
130
+ },
131
+ {
132
+ type: 'table',
133
+ headers: ['비율', '선박 유형', '해상 거동'],
134
+ rows: [
135
+ ['14 미만', '중배수량 / 화물선', '안정적이지만 느림, 지속적인 바람 필요'],
136
+ ['14 - 16.5', '원양 항해용 크루저', '균형 잡히고 편안함, 풍상 성능 양호'],
137
+ ['16.5 - 20', '표준형 마리나 크루저', '산들바람에도 활발함, 제어 용이, 다목적'],
138
+ ['20 - 25', '퍼포먼스 크루저 / 스포츠', '빠르고 도전적임, 약한 바람에서 흥미로움'],
139
+ ['25 초과', '레이서 / 익스트림 스포츠', '매우 빠르고 예민함, 숙련된 팀 필요'],
140
+ ],
141
+ },
142
+ {
143
+ type: 'title',
144
+ text: '측정치 기술 용어 사전 (I, J, P, E)',
145
+ level: 3,
146
+ },
147
+ {
148
+ type: 'glossary',
149
+ items: [
150
+ {
151
+ term: 'I (앞삼각형 높이)',
152
+ definition: '덱에서 마스트의 지브 할야드 부착점까지의 수직 거리. 앞삼각형의 높이를 규정합니다.',
153
+ },
154
+ {
155
+ term: 'J (앞삼각형 밑변)',
156
+ definition: '마스트에서 선수(Stem)까지의 수평 거리. 헤드세일이 설치되는 앞삼각형의 밑변을 규정합니다.',
157
+ },
158
+ {
159
+ term: 'P (마스트 높이)',
160
+ definition: '덱에서 마스트 상단의 메인세일 할야드 시브까지의 거리. 메인세일의 높이를 규정합니다.',
161
+ },
162
+ {
163
+ term: 'E (붐 길이)',
164
+ definition: '마스트에서 붐 끝의 메인세일 클루까지의 거리. 메인세일의 밑변을 규정합니다.',
165
+ },
166
+ ],
167
+ },
168
+ {
169
+ type: 'title',
170
+ text: '항해 자격 시험 계산 (Yachtmaster)',
171
+ level: 3,
172
+ },
173
+ {
174
+ type: 'paragraph',
175
+ html: '돛 면적 계산과 SA/D 비율은 <strong>Yachtmaster</strong> 및 연안 스키퍼 시험 교육과정의 일부입니다. 리그 기하학과 배수량의 관계를 이해하는 것은 제때 리핑하기, 적절한 제노아 선택하기, 혹은 돌풍 전 배의 거동 예측하기 등 해상 안전 결정을 내리는 데 필수적입니다.',
176
+ },
177
+ {
178
+ type: 'tip',
179
+ title: '뒷바람용 돛과 안전성',
180
+ html: '외양 항해나 장거리 항해의 경우, SA/D 비율 16에서 18 사이가 속도와 안전성 사이의 최적의 균형을 제공합니다. 비율이 22를 넘는 배들은 보포트 계급 4-5 정도의 바람에서도 리핑이 필요할 수 있습니다.',
181
+ },
182
+ {
183
+ type: 'title',
184
+ text: '제노아 오버랩은 성능에 어떤 영향을 주나요?',
185
+ level: 4,
186
+ },
187
+ {
188
+ type: 'paragraph',
189
+ html: '<strong>제노아</strong>는 돛의 끝(Clew)이 마스트 뒤쪽에 위치하여 메인세일과 "중첩(Overlap)"되는 가장 큰 헤드세일입니다. 오버랩 퍼센트는 라프(Luff)에 대한 수선(LP)이 J 길이에 비해 얼마나 긴지를 나타냅니다. 150% 제노아는 J의 150%에 해당하는 LP를 가져, 일반적인 지브보다 훨씬 큰 면적을 제공합니다.',
190
+ },
191
+ {
192
+ type: 'comparative',
193
+ items: [
194
+ {
195
+ title: '데크론 (크루징용)',
196
+ description: '크루징용 돛의 클래식한 소재. 튼튼하고 관리가 쉽습니다.',
197
+ points: [
198
+ '높은 내구성과 UV 저항성',
199
+ '낮은 유지 관리 비용',
200
+ '무게가 더 나가고 하중 하에서 늘어남',
201
+ '연안 및 원양 크루징에 이상적',
202
+ ],
203
+ },
204
+ {
205
+ title: '라미네이트 (레이싱용)',
206
+ description: '케블라, 스펙트라, 다이니마와 같은 첨단 기술 소재.',
207
+ highlight: true,
208
+ points: [
209
+ '최소한의 늘어남: 최대의 공기역학적 효율',
210
+ '데크론보다 훨씬 가벼움',
211
+ '높은 비용 및 짧은 수명',
212
+ 'SA/D 비율 > 22인 선박에 필수적',
213
+ ],
214
+ },
215
+ ],
216
+ columns: 2,
217
+ },
218
+ {
219
+ type: 'title',
220
+ text: '항해의 물리 및 안정성',
221
+ level: 3,
222
+ },
223
+ {
224
+ type: 'paragraph',
225
+ html: '돛 면적은 추진력을 발생시키지만 배를 기울어지게 하는 <strong>힐링 모멘트(Heeling moment)</strong>도 생성합니다. 안정성은 배가 이 기울어지는 힘에 대항할 수 있는 복원 모멘트(Righting moment)로 측정됩니다. 밸러스트가 적은 배에서 높은 SA/D 비율은 위험할 수 있지만, 깊고 무거운 킬을 가진 배에서는 같은 비율이라도 완벽하게 제어 가능합니다.',
226
+ },
227
+ {
228
+ type: 'paragraph',
229
+ html: '실제 가용 출력을 계산하기 위해 조선 설계사들은 SA/D와 함께 <strong>배수량-길이 비율(DLR)</strong>을 자주 사용합니다. 두 비율을 함께 보면 배가 "비대한 거북이"인지 "레이싱용 평면 활주선"인지 정확히 파악할 수 있습니다.',
230
+ },
231
+ {
232
+ type: 'tip',
233
+ title: '안정성과 안전',
234
+ html: 'SA/D를 단독으로 평가하지 마십시오. 비율이 22이면서 복원 각도가 90도인 요트가 비율이 18이면서 복원 각도가 60도인 요트보다 훨씬 안전합니다. 항상 본인 배의 안정성 곡선을 확인하십시오.',
235
+ },
236
+ ];
237
+
238
+ const schemas: SailAreaLocaleContent['schemas'] = [
239
+ {
240
+ '@context': 'https://schema.org',
241
+ '@type': 'SoftwareApplication',
242
+ name: title,
243
+ description,
244
+ applicationCategory: 'UtilityApplication',
245
+ operatingSystem: 'Web',
246
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
247
+ } as WithContext<SoftwareApplication>,
248
+ {
249
+ '@context': 'https://schema.org',
250
+ '@type': 'FAQPage',
251
+ mainEntity: faq.map((item) => ({
252
+ '@type': 'Question',
253
+ name: item.question,
254
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
255
+ })),
256
+ } as WithContext<FAQPage>,
257
+ {
258
+ '@context': 'https://schema.org',
259
+ '@type': 'HowTo',
260
+ name: `사용 방법: ${title}`,
261
+ step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
262
+ } as WithContext<HowTo>,
263
+ ];
264
+
265
+ export const content: SailAreaLocaleContent = {
266
+ slug,
267
+ title,
268
+ description,
269
+ ui,
270
+ seo,
271
+ faq,
272
+ bibliography,
273
+ howTo,
274
+ schemas,
275
+ };