@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,203 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
+
4
+ const slug = 'kalkulator-pasang-surut-id';
5
+ const title = 'Kalkulator Ketinggian Pasang Surut';
6
+ const description =
7
+ 'Estimasi kedalaman air pada titik mana pun dalam siklus pasang surut menggunakan Aturan Seperdua Belas (Rule of Twelfths). Ideal untuk perencanaan pesisir dan studi lisensi nautika.';
8
+
9
+ const ui: TideCalculatorUI = {
10
+ parametersLabel: 'Parameter',
11
+ highTideLabel: 'Pasang Tinggi',
12
+ lowTideLabel: 'Surut Rendah',
13
+ targetTimeLabel: 'Waktu kueri',
14
+ estimatedHeightLabel: 'Estimasi Ketinggian',
15
+ metersLabel: 'meter',
16
+ amplitudeLabel: 'Amplitudo',
17
+ durationLabel: 'Durasi',
18
+ tableBreakdownLabel: 'Rincian Seperdua Belas',
19
+ tableHourLabel: 'Waktu',
20
+ tableStateLabel: 'Status',
21
+ tableStartLabel: 'Mulai',
22
+ tableEndLabel: 'Selesai',
23
+ statusUpLabel: 'Naik',
24
+ statusDownLabel: 'Turun',
25
+ statusOutOfRange: 'Di luar jangkauan',
26
+ faqTitle: 'Pertanyaan yang Sering Diajukan',
27
+ bibliographyTitle: 'Bibliografi',
28
+ };
29
+
30
+ const faq: TideCalculatorLocaleContent['faq'] = [
31
+ {
32
+ question: 'Apa itu Aturan Seperdua Belas (Rule of Twelfths) dan untuk apa digunakan?',
33
+ answer:
34
+ 'Aturan Seperdua Belas adalah metode matematika sederhana yang digunakan dalam navigasi untuk mengestimasi ketinggian pasang surut pada titik mana pun antara waktu pasang dan surut. Metode ini didasarkan pada pengamatan bahwa aliran pasang surut mengikuti kurva sinusoidal perkiraan, membagi total rentang menjadi 12 bagian selama 6 jam (1/12, 2/12, 3/12, 3/12, 2/12, 1/12).',
35
+ },
36
+ {
37
+ question: 'Apakah metode ini dapat diandalkan untuk navigasi nyata?',
38
+ answer:
39
+ 'Ini adalah metode estimasi teoritis yang sangat berguna untuk perencanaan cepat dan tujuan pendidikan. Namun, metode ini tidak memperhitungkan faktor meteorologi seperti tekanan atmosfer atau angin, yang dapat mengubah permukaan laut beberapa desimeter. Untuk navigasi nyata, selalu konsultasikan tabel pasang surut resmi.',
40
+ },
41
+ {
42
+ question: 'Data apa yang saya perlukan untuk menghitung ketinggian pasang surut?',
43
+ answer:
44
+ 'Anda memerlukan waktu dan ketinggian (dalam meter) dari pasang tinggi dan surut rendah terdekat dengan momen yang ingin Anda kueri. Data ini dapat ditemukan di almanak pasang surut atau aplikasi cuaca maritim.',
45
+ },
46
+ {
47
+ question: 'Mengapa air pasang tidak selalu naik dengan kecepatan yang sama?',
48
+ answer:
49
+ 'Karena inersia massa air yang besar dan konfigurasi cekungan samudra. Air pasang mulai naik perlahan setelah surut, mencapai kecepatan maksimum di jam-jam tengah (jam ke-3/12 dan ke-4/12) dan melambat kembali saat mendekati pasang tinggi.',
50
+ },
51
+ {
52
+ question: 'Bagaimana tekanan atmosfer memengaruhi pasang surut?',
53
+ answer:
54
+ 'Tekanan tinggi (antisiklon) menekan air ke bawah, mengurangi ketinggian aktual. Tekanan rendah (depresi) memungkinkan air naik lebih tinggi. Sebagai aturan umum, variasi 1 hPa dari rata-rata berhubungan dengan perubahan permukaan laut sekitar 1 cm.',
55
+ },
56
+ {
57
+ question: 'Apa itu rentang pasang surut (tidal range)?',
58
+ answer:
59
+ 'Ini adalah perbedaan ketinggian vertikal antara pasang tinggi dan surut rendah yang segera mendahului atau menyertainya. Pengukuran ini bervariasi menurut fase bulan (pasang perbani dan pasang purnama) serta lokasi geografis.',
60
+ },
61
+ ];
62
+
63
+ const howTo: TideCalculatorLocaleContent['howTo'] = [
64
+ {
65
+ name: 'Identifikasi pasang tinggi dan surut rendah',
66
+ text: 'Konsultasikan almanak pasang surut Anda untuk mendapatkan waktu dan ketinggian siklus pasang surut yang Anda minati.',
67
+ },
68
+ {
69
+ name: 'Masukkan data ke dalam kalkulator',
70
+ text: 'Masukkan waktu dan ketinggian pasang tinggi serta surut rendah. Alat ini akan menentukan durasi dan amplitudo secara otomatis.',
71
+ },
72
+ {
73
+ name: 'Atur waktu kueri',
74
+ text: 'Sesuaikan waktu di mana Anda ingin mengetahui level air. Anda akan melihat titik tepat yang disorot pada grafik.',
75
+ },
76
+ {
77
+ name: 'Analisis tabel seperdua belas',
78
+ text: 'Tinjau rincian jam demi jam untuk memahami bagaimana level air akan berfluktuasi selama seluruh periode tersebut.',
79
+ },
80
+ ];
81
+
82
+ const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
+ {
84
+ name: 'Puertos del Estado - Tide Prediction',
85
+ url: 'https://portus.puertos.es/#/',
86
+ },
87
+ {
88
+ name: 'Instituto Hidrografico de la Marina',
89
+ url: 'https://armada.defensa.gob.es/ihm/',
90
+ },
91
+ ];
92
+
93
+ const seo: TideCalculatorLocaleContent['seo'] = [
94
+ {
95
+ type: 'title',
96
+ text: 'Menguasai Pasang Surut: Aturan Seperdua Belas dalam Navigasi',
97
+ level: 2,
98
+ },
99
+ {
100
+ type: 'paragraph',
101
+ html: 'Navigasi pesisir dan memasuki pelabuhan dengan kedalaman terbatas memerlukan pengetahuan akurat tentang kedalaman air setiap saat. Meskipun aplikasi digital dan GPS yang menyediakan data real-time sudah tersedia saat ini, <strong>Aturan Seperdua Belas</strong> tetap menjadi alat fundamental dalam pelatihan nakhoda kapal rekreasi atau kapten kapal pesiar. Aturan ini adalah metode estimasi matematika yang memungkinkan Anda menghitung level air secara perkiraan tanpa kalkulator rumit pada titik mana pun dalam siklus pasang surut.',
102
+ },
103
+ {
104
+ type: 'title',
105
+ text: 'Apa sebenarnya Aturan Seperdua Belas itu?',
106
+ level: 3,
107
+ },
108
+ {
109
+ type: 'paragraph',
110
+ html: 'Aturan Seperdua Belas didasarkan pada pengamatan bahwa aliran pasang surut tidak konstan. Air tidak naik atau turun dengan kecepatan yang sama selama sekitar enam jam antara pasang tinggi dan surut rendah. Sebaliknya, pergerakannya mengikuti kurva sinusoidal. Selama jam pertama air bergerak perlahan; kecepatannya meningkat di jam-jam tengah dan melambat kembali saat mendekati titik ekstrem berikutnya.',
111
+ },
112
+ {
113
+ type: 'table',
114
+ headers: ['Jam Siklus', 'Proporsi', 'Status Aliran'],
115
+ rows: [
116
+ ['<strong>Jam ke-1</strong>', '1/12 dari rentang', 'Mulai perlahan (Slack water)'],
117
+ ['<strong>Jam ke-2</strong>', '2/12 dari rentang', 'Aliran meningkat'],
118
+ ['<strong>Jam ke-3</strong>', '3/12 dari rentang', 'Aliran maksimum (Arus kuat)'],
119
+ ['<strong>Jam ke-4</strong>', '3/12 dari rentang', 'Aliran berkelanjutan'],
120
+ ['<strong>Jam ke-5</strong>', '2/12 dari rentang', 'Perlambatan nyata'],
121
+ ['<strong>Jam ke-6</strong>', '1/12 dari rentang', 'Perlambatan akhir (Menuju slack water)'],
122
+ ],
123
+ },
124
+ {
125
+ type: 'title',
126
+ text: 'Batasan teknis: Faktor-faktor yang memengaruhi pasang surut nyata',
127
+ level: 3,
128
+ },
129
+ {
130
+ type: 'glossary',
131
+ items: [
132
+ { term: 'Tekanan atmosfer', definition: 'Depresi mengangkat permukaan laut; antisiklon menurunkannya. Sebagai aturan umum, variasi ~1 cm per perbedaan 1 hPa dari rata-rata.' },
133
+ { term: 'Angin pesisir', definition: 'Angin darat yang berkelanjutan dapat menumpuk air di atas level yang diprediksi dalam tabel pasang surut.' },
134
+ { term: 'Topografi lokal', definition: 'Bentuk pesisir, kedalaman dasar laut, dan keberadaan muara dapat secara signifikan menunda atau mempercepat aliran pasang surut.' },
135
+ ],
136
+ },
137
+ {
138
+ type: 'tip',
139
+ title: 'Catatan Keselamatan',
140
+ html: 'Alat ini menggunakan metode estimasi matematika. Alat ini tidak memperhitungkan faktor meteorologi atau topografi lokal. Untuk navigasi nyata, selalu konsultasikan tabel pasang surut resmi.',
141
+ },
142
+ {
143
+ type: 'title',
144
+ text: 'Konsep kunci bagi pelaut baru',
145
+ level: 3,
146
+ },
147
+ {
148
+ type: 'glossary',
149
+ items: [
150
+ {
151
+ term: 'Rentang pasang surut (Tidal range)',
152
+ definition: 'Perbedaan vertikal antara pasang tinggi dan surut rendah. Di Teluk Biscay bisa mencapai beberapa meter; di Mediterania hampir tidak berarti.',
153
+ },
154
+ {
155
+ term: 'Durasi pasang surut',
156
+ definition: 'Interval waktu antara pasang tinggi dan surut rendah berikutnya. Biasanya sekitar 6 jam 12 menit (siklus semi-diurnal).',
157
+ },
158
+ {
159
+ term: 'Chart datum',
160
+ definition: 'Level referensi dari mana semua kedalaman pada peta laut diukur. Kedalaman aktual hampir tidak pernah kurang dari yang ditunjukkan.',
161
+ },
162
+ ],
163
+ },
164
+ ];
165
+
166
+ const schemas: TideCalculatorLocaleContent['schemas'] = [
167
+ {
168
+ '@context': 'https://schema.org',
169
+ '@type': 'SoftwareApplication',
170
+ name: title,
171
+ description,
172
+ applicationCategory: 'UtilityApplication',
173
+ operatingSystem: 'Web',
174
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
175
+ } as WithContext<SoftwareApplication>,
176
+ {
177
+ '@context': 'https://schema.org',
178
+ '@type': 'FAQPage',
179
+ mainEntity: faq.map((item) => ({
180
+ '@type': 'Question',
181
+ name: item.question,
182
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
183
+ })),
184
+ } as WithContext<FAQPage>,
185
+ {
186
+ '@context': 'https://schema.org',
187
+ '@type': 'HowTo',
188
+ name: `Cara menggunakan: ${title}`,
189
+ step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
190
+ } as WithContext<HowTo>,
191
+ ];
192
+
193
+ export const content: TideCalculatorLocaleContent = {
194
+ slug,
195
+ title,
196
+ description,
197
+ ui,
198
+ seo,
199
+ faq,
200
+ bibliography,
201
+ howTo,
202
+ schemas,
203
+ };
@@ -0,0 +1,203 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
+
4
+ const slug = 'calcolatore-marea-it';
5
+ const title = 'Calcolatore dell\'Altezza della Marea';
6
+ const description =
7
+ 'Stima la profondità dell\'acqua in qualsiasi punto del ciclo di marea usando la Regola dei Dodicesimi. Ideale per la pianificazione costiera e lo studio per la patente nautica.';
8
+
9
+ const ui: TideCalculatorUI = {
10
+ parametersLabel: 'Parametri',
11
+ highTideLabel: 'Alta Marea',
12
+ lowTideLabel: 'Bassa Marea',
13
+ targetTimeLabel: 'Ora della richiesta',
14
+ estimatedHeightLabel: 'Altezza Stimata',
15
+ metersLabel: 'metri',
16
+ amplitudeLabel: 'Escursione',
17
+ durationLabel: 'Durata',
18
+ tableBreakdownLabel: 'Ripartizione Dodicesimi',
19
+ tableHourLabel: 'Ora',
20
+ tableStateLabel: 'Stato',
21
+ tableStartLabel: 'Inizio',
22
+ tableEndLabel: 'Fine',
23
+ statusUpLabel: 'Crescente',
24
+ statusDownLabel: 'Calante',
25
+ statusOutOfRange: 'Fuori intervallo',
26
+ faqTitle: 'Domande Frequenti',
27
+ bibliographyTitle: 'Bibliografia',
28
+ };
29
+
30
+ const faq: TideCalculatorLocaleContent['faq'] = [
31
+ {
32
+ question: 'Cos\'è la Regola dei Dodicesimi e a cosa serve?',
33
+ answer:
34
+ 'La Regola dei Dodicesimi è un metodo matematico semplificato usato nella navigazione per stimare l\'altezza della marea in qualsiasi momento tra l\'alta e la bassa marea. Si basa sull\'osservazione che il flusso della marea segue una curva approssimativamente sinusoidale, dividendo l\'escursione totale in 12 parti su 6 ore (1/12, 2/12, 3/12, 3/12, 2/12, 1/12).',
35
+ },
36
+ {
37
+ question: 'Questo metodo è affidabile per la navigazione reale?',
38
+ answer:
39
+ 'È un metodo di stima teorica molto utile per la pianificazione rapida e per scopi didattici. Tuttavia, non tiene conto dei fattori meteorologici come la pressione atmosferica o il vento, che possono alterare il livello del mare di diversi decimetri. Per la navigazione reale, consulta sempre le tavole di marea ufficiali.',
40
+ },
41
+ {
42
+ question: 'Di quali dati ho bisogno per calcolare l\'altezza della marea?',
43
+ answer:
44
+ 'Hai bisogno dell\'ora e dell\'altezza (in metri) dell\'alta e della bassa marea più vicine al momento che desideri consultare. Questi dati si trovano negli almanacchi nautici o nelle applicazioni meteo marine.',
45
+ },
46
+ {
47
+ question: 'Perché la marea non sale sempre alla stessa velocità?',
48
+ answer:
49
+ 'A causa dell\'inerzia delle grandi masse d\'acqua e della configurazione dei bacini oceanici. La marea inizia a salire lentamente dopo la bassa marea, raggiunge la velocità massima nelle ore centrali (le ore 3/12 e 4/12) e rallenta nuovamente avvicinandosi all\'alta marea.',
50
+ },
51
+ {
52
+ question: 'In che modo la pressione atmosferica influisce sulla marea?',
53
+ answer:
54
+ 'L\'alta pressione (anticiclone) spinge l\'acqua verso il basso, riducendo l\'altezza reale. La bassa pressione (depressione) permette all\'acqua di salire di più. Come regola generale, una variazione di 1 hPa rispetto alla media corrisponde a circa 1 cm di variazione del livello del mare.',
55
+ },
56
+ {
57
+ question: 'Cos\'è l\'escursione di marea?',
58
+ answer:
59
+ 'È la differenza verticale di altezza tra un\'alta marea e la bassa marea immediatamente precedente o successiva. Questa misura varia in base alle fasi lunari (maree vive e morte) e alla posizione geografica.',
60
+ },
61
+ ];
62
+
63
+ const howTo: TideCalculatorLocaleContent['howTo'] = [
64
+ {
65
+ name: 'Identifica l\'alta e la bassa marea',
66
+ text: 'Consulta il tuo almanacco di marea per ottenere gli orari e le altezze del ciclo che ti interessa.',
67
+ },
68
+ {
69
+ name: 'Inserisci i dati nel calcolatore',
70
+ text: 'Inserisci l\'ora e l\'altezza dell\'alta e della bassa marea. Lo strumento determinerà automaticamente durata ed escursione.',
71
+ },
72
+ {
73
+ name: 'Imposta l\'ora della richiesta',
74
+ text: 'Regola l\'ora per la quale vuoi conoscere il livello dell\'acqua. Vedrai il punto esatto evidenziato sul grafico.',
75
+ },
76
+ {
77
+ name: 'Analizza la tabella dei dodicesimi',
78
+ text: 'Controlla la ripartizione ora per ora per capire come fluttuerà il livello dell\'acqua durante l\'intero periodo.',
79
+ },
80
+ ];
81
+
82
+ const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
+ {
84
+ name: 'Puertos del Estado - Tide Prediction',
85
+ url: 'https://portus.puertos.es/#/',
86
+ },
87
+ {
88
+ name: 'Instituto Hidrografico de la Marina',
89
+ url: 'https://armada.defensa.gob.es/ihm/',
90
+ },
91
+ ];
92
+
93
+ const seo: TideCalculatorLocaleContent['seo'] = [
94
+ {
95
+ type: 'title',
96
+ text: 'Padroneggiare la Marea: La Regola dei Dodicesimi nella Navigazione',
97
+ level: 2,
98
+ },
99
+ {
100
+ type: 'paragraph',
101
+ html: 'La navigazione costiera e l\'ingresso nei porti con fondali ridotti richiedono una conoscenza precisa della profondità dell\'acqua in ogni momento. Sebbene oggi siano disponibili applicazioni digitali e GPS che forniscono dati in tempo reale, la <strong>Regola dei Dodicesimi</strong> rimane uno strumento fondamentale nella formazione di ogni skipper. Questa regola è un metodo di stima matematica che permette di calcolare, approssimativamente e senza calcolatori complessi, l\'altezza della marea in qualsiasi punto di un ciclo.',
102
+ },
103
+ {
104
+ type: 'title',
105
+ text: 'Cos\'è esattamente la Regola dei Dodicesimi?',
106
+ level: 3,
107
+ },
108
+ {
109
+ type: 'paragraph',
110
+ html: 'La Regola dei Dodicesimi si basa sull\'osservazione che il flusso della marea non è costante. L\'acqua non sale o scende alla stessa velocità durante le circa sei ore tra l\'alta e la bassa marea. Invece, il movimento segue una curva sinusoidale. Durante la prima ora la marea si muove lentamente; accelera nelle ore centrali e rallenta di nuovo man mano che si avvicina all\'estremo successivo.',
111
+ },
112
+ {
113
+ type: 'table',
114
+ headers: ['Ora del Ciclo', 'Proporzione', 'Stato del Flusso'],
115
+ rows: [
116
+ ['<strong>1ª Ora</strong>', '1/12 dell\'escursione', 'Inizio lento (Stanca di bassa)'],
117
+ ['<strong>2ª Ora</strong>', '2/12 dell\'escursione', 'Flusso in accelerazione'],
118
+ ['<strong>3ª Ora</strong>', '3/12 dell\'escursione', 'Flusso massimo (Corrente forte)'],
119
+ ['<strong>4ª Ora</strong>', '3/12 dell\'escursione', 'Flusso sostenuto'],
120
+ ['<strong>5ª Ora</strong>', '2/12 dell\'escursione', 'Decelerazione notevole'],
121
+ ['<strong>6ª Ora</strong>', '1/12 dell\'escursione', 'Rallentamento finale (Verso la stanca)'],
122
+ ],
123
+ },
124
+ {
125
+ type: 'title',
126
+ text: 'Limitazioni tecniche: Fattori che influenzano la marea reale',
127
+ level: 3,
128
+ },
129
+ {
130
+ type: 'glossary',
131
+ items: [
132
+ { term: 'Pressione atmosferica', definition: 'Una depressione innalza il livello del mare; un anticiclone lo abbassa. Come regola generale, ~1 cm di variazione per ogni hPa di differenza dalla media.' },
133
+ { term: 'Vento costiero', definition: 'Venti costanti verso terra possono accumulare acqua oltre i livelli previsti nelle tavole di marea.' },
134
+ { term: 'Topografia locale', definition: 'La forma della costa, la profondità del fondale e la presenza di estuari possono ritardare o accelerare significativamente il flusso di marea.' },
135
+ ],
136
+ },
137
+ {
138
+ type: 'tip',
139
+ title: 'Nota sulla Sicurezza',
140
+ html: 'Questo strumento utilizza un metodo di stima matematica. Non tiene conto dei fattori meteorologici o della topografia locale. Per la navigazione reale, consulta sempre le tavole di marea ufficiali.',
141
+ },
142
+ {
143
+ type: 'title',
144
+ text: 'Concetti chiave per i nuovi navigatori',
145
+ level: 3,
146
+ },
147
+ {
148
+ type: 'glossary',
149
+ items: [
150
+ {
151
+ term: 'Escursione di marea',
152
+ definition: 'Differenza verticale tra l\'alta e la bassa marea. In alcune zone può essere di diversi metri; nel Mediterraneo è quasi trascurabile.',
153
+ },
154
+ {
155
+ term: 'Durata della marea',
156
+ definition: 'Intervallo di tempo tra l\'alta marea e la bassa marea successiva. Tipicamente circa 6 ore e 12 minuti.',
157
+ },
158
+ {
159
+ term: 'Zero idrografico',
160
+ definition: 'Livello di riferimento dal quale sono misurate tutte le profondità sulle carte nautiche. Le profondità reali non sono quasi mai inferiori a quelle indicate.',
161
+ },
162
+ ],
163
+ },
164
+ ];
165
+
166
+ const schemas: TideCalculatorLocaleContent['schemas'] = [
167
+ {
168
+ '@context': 'https://schema.org',
169
+ '@type': 'SoftwareApplication',
170
+ name: title,
171
+ description,
172
+ applicationCategory: 'UtilityApplication',
173
+ operatingSystem: 'Web',
174
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
175
+ } as WithContext<SoftwareApplication>,
176
+ {
177
+ '@context': 'https://schema.org',
178
+ '@type': 'FAQPage',
179
+ mainEntity: faq.map((item) => ({
180
+ '@type': 'Question',
181
+ name: item.question,
182
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
183
+ })),
184
+ } as WithContext<FAQPage>,
185
+ {
186
+ '@context': 'https://schema.org',
187
+ '@type': 'HowTo',
188
+ name: `Come usare: ${title}`,
189
+ step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
190
+ } as WithContext<HowTo>,
191
+ ];
192
+
193
+ export const content: TideCalculatorLocaleContent = {
194
+ slug,
195
+ title,
196
+ description,
197
+ ui,
198
+ seo,
199
+ faq,
200
+ bibliography,
201
+ howTo,
202
+ schemas,
203
+ };
@@ -0,0 +1,203 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
+
4
+ const slug = 'tide-height-calculator';
5
+ const title = '潮汐計算機';
6
+ const description =
7
+ '航用「12分の1則」を使用して、潮汐サイクルの任意の時点での水深を推定します。沿岸計画や船舶免許の学習に最適です。';
8
+
9
+ const ui: TideCalculatorUI = {
10
+ parametersLabel: 'パラメータ',
11
+ highTideLabel: '満潮',
12
+ lowTideLabel: '干潮',
13
+ targetTimeLabel: '照会時刻',
14
+ estimatedHeightLabel: '推定潮高',
15
+ metersLabel: 'メートル',
16
+ amplitudeLabel: '潮潮差',
17
+ durationLabel: '継続時間',
18
+ tableBreakdownLabel: '12分の1則の内訳',
19
+ tableHourLabel: '時刻',
20
+ tableStateLabel: '状態',
21
+ tableStartLabel: '開始',
22
+ tableEndLabel: '終了',
23
+ statusUpLabel: '上げ潮',
24
+ statusDownLabel: '下げ潮',
25
+ statusOutOfRange: '範囲外',
26
+ faqTitle: 'よくある質問',
27
+ bibliographyTitle: '参考文献',
28
+ };
29
+
30
+ const faq: TideCalculatorLocaleContent['faq'] = [
31
+ {
32
+ question: '12分の1則とは何ですか?何に使われますか?',
33
+ answer:
34
+ '12分の1則は、満潮と干潮の間の任意の時点での潮高を推定するために航海で使用される簡略化された数学的手法です。潮の流れが近似的に正弦曲線に従うという観察に基づいており、6時間の全潮差を12の部分(1/12、2/12、3/12、3/12、2/12、1/12)に分割します。',
35
+ },
36
+ {
37
+ question: 'この方法は実際の航海で信頼できますか?',
38
+ answer:
39
+ '迅速な計画作成や教育目的には非常に有用な理論的推定方法です。しかし、気圧や風などの気象要因は考慮されておらず、これらは海面を数十センチメートル変化させる可能性があります。実際の航海では、常に公式の潮汐表を参照してください。',
40
+ },
41
+ {
42
+ question: '潮高を計算するにはどのようなデータが必要ですか?',
43
+ answer:
44
+ '照会したい時刻に最も近い満潮と干潮の時刻および潮高(メートル)が必要です。これらのデータは潮汐暦や海洋気象アプリで見つけることができます。',
45
+ },
46
+ {
47
+ question: 'なぜ潮汐は常に同じ速度で上昇しないのですか?',
48
+ answer:
49
+ '巨大な水塊の慣性と海洋盆地の形状によるものです。潮汐は干潮後にゆっくりと上昇し始め、中間時間(3/12および4/12時間)に最大速度に達し、満潮に近づくにつれて再び減速します。',
50
+ },
51
+ {
52
+ question: '気圧は潮汐にどのように影響しますか?',
53
+ answer:
54
+ '高気圧(高気圧)は海面を押し下げ、実際の潮高を減少させます。低気圧(低気圧)は海面を上昇させます。一般的なルールとして、平均から1hPaの変化は約1cmの海面レベルの変化に対応します。',
55
+ },
56
+ {
57
+ question: '潮差(ちょうさ)とは何ですか?',
58
+ answer:
59
+ '満潮とその直前または直後の干潮との垂直方向の潮高差のことです。この測定値は、月齢(大潮や小潮)や地理的な場所によって変化します。',
60
+ },
61
+ ];
62
+
63
+ const howTo: TideCalculatorLocaleContent['howTo'] = [
64
+ {
65
+ name: '満潮と干潮を確認する',
66
+ text: '潮汐暦を参照して、関心のある潮汐サイクルの時刻と潮高を取得します。',
67
+ },
68
+ {
69
+ name: '計算機にデータを入力する',
70
+ text: '満潮と干潮の時刻および潮高を入力します。ツールは自動的に継続時間と潮差を決定します。',
71
+ },
72
+ {
73
+ name: '照会時刻を設定する',
74
+ text: '潮位を知りたい時刻を調整します。チャート上の正確なポイントが強調表示されます。',
75
+ },
76
+ {
77
+ name: '12分の1則の表を分析する',
78
+ text: '1時間ごとの内訳を確認して、全期間を通じて潮位がどのように変動するかを理解します。',
79
+ },
80
+ ];
81
+
82
+ const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
+ {
84
+ name: 'Puertos del Estado - Tide Prediction',
85
+ url: 'https://portus.puertos.es/#/',
86
+ },
87
+ {
88
+ name: 'Instituto Hidrografico de la Marina',
89
+ url: 'https://armada.defensa.gob.es/ihm/',
90
+ },
91
+ ];
92
+
93
+ const seo: TideCalculatorLocaleContent['seo'] = [
94
+ {
95
+ type: 'title',
96
+ text: '潮汐をマスターする:航海における12分の1則',
97
+ level: 2,
98
+ },
99
+ {
100
+ type: 'paragraph',
101
+ html: '沿岸航行や水深に制限のある港への入港では、常に正確な水深を知る必要があります。今日ではリアルタイムデータを提供するデジタルアプリやGPSが利用可能ですが、<strong>12分の1則</strong>は船舶免許取得や航海訓練における基本的なツールのままです。この法則は数学的な推定手法であり、複雑な計算機を使わずに潮汐サイクルの任意の時点での潮高を近似的に算出できます。',
102
+ },
103
+ {
104
+ type: 'title',
105
+ text: '12分の1則とは具体的に何ですか?',
106
+ level: 3,
107
+ },
108
+ {
109
+ type: 'paragraph',
110
+ html: '12分の1則は、潮の流れが一定ではないという観察に基づいています。水面は、満潮から干潮までの約6時間の間に一定の速度で上昇または下降するわけではありません。その代わり、動きは正弦曲線(サインカーブ)に従います。最初の1時間は潮がゆっくりと動き、中間時間に加速し、次の極値に近づくにつれて再び減速します。',
111
+ },
112
+ {
113
+ type: 'table',
114
+ headers: ['サイクルの時間', '比率', '流れの状態'],
115
+ rows: [
116
+ ['<strong>第1時間</strong>', '全潮差の 1/12', 'ゆっくりとした開始(潮止まり付近)'],
117
+ ['<strong>第2時間</strong>', '全潮差の 2/12', '流れの加速'],
118
+ ['<strong>第3時間</strong>', '全潮差の 3/12', '最大流量(強い潮流)'],
119
+ ['<strong>第4時間</strong>', '全潮差の 3/12', '持続的な流れ'],
120
+ ['<strong>第5時間</strong>', '全潮差の 2/12', '顕著な減速'],
121
+ ['<strong>第6時間</strong>', '全潮差の 1/12', '最終的な減速(次の潮止まりへ)'],
122
+ ],
123
+ },
124
+ {
125
+ type: 'title',
126
+ text: '技術的な制限:実際の潮汐に影響を与える要因',
127
+ level: 3,
128
+ },
129
+ {
130
+ type: 'glossary',
131
+ items: [
132
+ { term: '気圧', definition: '低気圧は海面を上昇させ、高気圧は海面を低下させます。一般的に、平均から1hPaの変化につき約1cmの変動があります。' },
133
+ { term: '沿岸風', definition: '持続的な陸に向かう風は、潮汐表の予測値以上に海面を押し上げる(吹き寄せ)可能性があります。' },
134
+ { term: '局所的な地形', definition: '海岸の形状、海底の深さ、河口の存在などは、潮汐の流れを大幅に遅らせたり早めたりすることがあります。' },
135
+ ],
136
+ },
137
+ {
138
+ type: 'tip',
139
+ title: '安全上の注意',
140
+ html: 'このツールは数学的な推定手法を使用しています。気象要因や局所的な地形は考慮されていません。実際の航海では、常に公式の潮汐表を参照してください。',
141
+ },
142
+ {
143
+ type: 'title',
144
+ text: '新しい船乗りのための主要概念',
145
+ level: 3,
146
+ },
147
+ {
148
+ type: 'glossary',
149
+ items: [
150
+ {
151
+ term: '潮差(ちょうさ)',
152
+ definition: '満潮と干潮の垂直方向の差。場所によっては数メートルに及ぶこともあれば、地中海のように無視できるほど小さいこともあります。',
153
+ },
154
+ {
155
+ term: '潮汐周期',
156
+ definition: '満潮から次の干潮までの時間間隔。通常は約6時間12分(半日周期の場合)です。',
157
+ },
158
+ {
159
+ term: '基本水準面 (Chart Datum)',
160
+ definition: '海図に示される水深の基準面です。実際の水深が示された水深を下回ることはほとんどありません。',
161
+ },
162
+ ],
163
+ },
164
+ ];
165
+
166
+ const schemas: TideCalculatorLocaleContent['schemas'] = [
167
+ {
168
+ '@context': 'https://schema.org',
169
+ '@type': 'SoftwareApplication',
170
+ name: title,
171
+ description,
172
+ applicationCategory: 'UtilityApplication',
173
+ operatingSystem: 'Web',
174
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
175
+ } as WithContext<SoftwareApplication>,
176
+ {
177
+ '@context': 'https://schema.org',
178
+ '@type': 'FAQPage',
179
+ mainEntity: faq.map((item) => ({
180
+ '@type': 'Question',
181
+ name: item.question,
182
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
183
+ })),
184
+ } as WithContext<FAQPage>,
185
+ {
186
+ '@context': 'https://schema.org',
187
+ '@type': 'HowTo',
188
+ name: `使い方: ${title}`,
189
+ step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
190
+ } as WithContext<HowTo>,
191
+ ];
192
+
193
+ export const content: TideCalculatorLocaleContent = {
194
+ slug,
195
+ title,
196
+ description,
197
+ ui,
198
+ seo,
199
+ faq,
200
+ bibliography,
201
+ howTo,
202
+ schemas,
203
+ };