@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.
- 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_uniqueness.test.ts +81 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tool/endurance/component.astro +340 -1
- 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/component.astro +208 -1
- 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 +355 -2
- 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/component.astro +242 -1
- 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/component.astro +313 -1
- 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/component.astro +321 -1
- 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
- package/src/tool/endurance/style.css +0 -337
- package/src/tool/nauticalConverter/style.css +0 -205
- package/src/tool/sailArea/style.css +0 -351
- package/src/tool/speedConverter/style.css +0 -239
- package/src/tool/tideCalculator/style.css +0 -310
- package/src/tool/underKeel/style.css +0 -318
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
---
|
|
2
|
-
import './style.css';
|
|
3
2
|
import type { UnderKeelUI } from './index';
|
|
4
3
|
|
|
5
4
|
interface Props {
|
|
@@ -238,3 +237,324 @@ const { ui } = Astro.props;
|
|
|
238
237
|
|
|
239
238
|
new UnderKeelCalculator();
|
|
240
239
|
</script>
|
|
240
|
+
|
|
241
|
+
<style>
|
|
242
|
+
.under-keel-calculator {
|
|
243
|
+
--n-bg: #fff;
|
|
244
|
+
--n-bg-muted: #f1f5f9;
|
|
245
|
+
--n-text: #0f172a;
|
|
246
|
+
--n-text-muted: #475569;
|
|
247
|
+
--n-text-dim: #64748b;
|
|
248
|
+
--n-border: #e2e8f0;
|
|
249
|
+
--n-shadow: rgba(0, 0, 0, 0.05);
|
|
250
|
+
--n-primary: #3b82f6;
|
|
251
|
+
--n-primary-on: #fff;
|
|
252
|
+
--n-accent: #6366f1;
|
|
253
|
+
--n-cyan: #0891b2;
|
|
254
|
+
--n-success: #10b981;
|
|
255
|
+
--n-warning: #f59e0b;
|
|
256
|
+
--n-error: #f43f5e;
|
|
257
|
+
--ukc-label-size: 0.75rem;
|
|
258
|
+
--ukc-label-weight: 800;
|
|
259
|
+
--ukc-label-spacing: 0.06em;
|
|
260
|
+
|
|
261
|
+
display: flex;
|
|
262
|
+
flex-direction: column;
|
|
263
|
+
gap: 1.5rem;
|
|
264
|
+
max-width: 1000px;
|
|
265
|
+
margin: 0 auto;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
:global(.theme-dark) .under-keel-calculator {
|
|
269
|
+
--n-bg: #0f172a;
|
|
270
|
+
--n-bg-muted: #1e293b;
|
|
271
|
+
--n-text: #f8fafc;
|
|
272
|
+
--n-text-muted: #94a3b8;
|
|
273
|
+
--n-text-dim: #64748b;
|
|
274
|
+
--n-border: #334155;
|
|
275
|
+
--n-shadow: rgba(0, 0, 0, 0.3);
|
|
276
|
+
--n-primary: #60a5fa;
|
|
277
|
+
--n-primary-on: #fff;
|
|
278
|
+
--n-accent: #818cf8;
|
|
279
|
+
--n-cyan: #22d3ee;
|
|
280
|
+
--n-success: #34d399;
|
|
281
|
+
--n-warning: #fbbf24;
|
|
282
|
+
--n-error: #fb7185;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.ukc-main-card {
|
|
286
|
+
background: var(--n-bg);
|
|
287
|
+
border: 1px solid var(--n-border);
|
|
288
|
+
border-radius: 2rem;
|
|
289
|
+
display: grid;
|
|
290
|
+
grid-template-columns: 320px 1fr;
|
|
291
|
+
overflow: hidden;
|
|
292
|
+
box-shadow: 0 20px 40px var(--n-shadow);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
@media (max-width: 850px) {
|
|
296
|
+
.ukc-main-card {
|
|
297
|
+
grid-template-columns: 1fr;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.ukc-calc-sidebar {
|
|
302
|
+
background: var(--n-primary);
|
|
303
|
+
color: var(--n-primary-on);
|
|
304
|
+
padding: 2rem;
|
|
305
|
+
display: flex;
|
|
306
|
+
flex-direction: column;
|
|
307
|
+
gap: 2rem;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
.ukc-sidebar-header h3 {
|
|
311
|
+
font-size: 1.1rem;
|
|
312
|
+
margin: 0;
|
|
313
|
+
font-weight: 700;
|
|
314
|
+
text-transform: uppercase;
|
|
315
|
+
letter-spacing: 0.05em;
|
|
316
|
+
opacity: 0.9;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
.ukc-input-set {
|
|
320
|
+
display: flex;
|
|
321
|
+
flex-direction: column;
|
|
322
|
+
gap: 1.2rem;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.ukc-input-block {
|
|
326
|
+
display: flex;
|
|
327
|
+
flex-direction: column;
|
|
328
|
+
gap: 0.4rem;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
.ukc-input-block label {
|
|
332
|
+
font-size: var(--ukc-label-size);
|
|
333
|
+
font-weight: var(--ukc-label-weight);
|
|
334
|
+
color: var(--n-primary-on);
|
|
335
|
+
opacity: 0.9;
|
|
336
|
+
text-transform: uppercase;
|
|
337
|
+
letter-spacing: var(--ukc-label-spacing);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
.ukc-unit-input {
|
|
341
|
+
position: relative;
|
|
342
|
+
display: flex;
|
|
343
|
+
align-items: center;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
.ukc-unit-input input {
|
|
347
|
+
width: 100%;
|
|
348
|
+
background: rgba(255, 255, 255, 0.1);
|
|
349
|
+
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
350
|
+
border-radius: 0.8rem;
|
|
351
|
+
padding: 0.7rem 2.5rem 0.7rem 1rem;
|
|
352
|
+
color: var(--n-primary-on);
|
|
353
|
+
font-size: 1rem;
|
|
354
|
+
outline: none;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
.ukc-unit-input span {
|
|
358
|
+
position: absolute;
|
|
359
|
+
right: 12px;
|
|
360
|
+
font-size: 0.85rem;
|
|
361
|
+
font-weight: 700;
|
|
362
|
+
opacity: 0.6;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.ukc-hr-divider {
|
|
366
|
+
height: 1px;
|
|
367
|
+
background: rgba(255, 255, 255, 0.1);
|
|
368
|
+
margin: 0.5rem 0;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
.ukc-row {
|
|
372
|
+
display: flex;
|
|
373
|
+
gap: 0.5rem;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
.under-keel-calculator input[type='time'],
|
|
377
|
+
.under-keel-calculator input[type='number'] {
|
|
378
|
+
background: rgba(255, 255, 255, 0.1);
|
|
379
|
+
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
380
|
+
border-radius: 0.8rem;
|
|
381
|
+
padding: 0.7rem;
|
|
382
|
+
color: var(--n-primary-on);
|
|
383
|
+
font-size: 1rem;
|
|
384
|
+
outline: none;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
.ukc-mini-num {
|
|
388
|
+
width: 80px;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
.ukc-calc-content {
|
|
392
|
+
padding: 2.5rem;
|
|
393
|
+
display: flex;
|
|
394
|
+
flex-direction: column;
|
|
395
|
+
gap: 2rem;
|
|
396
|
+
background: var(--n-bg-muted);
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
.ukc-top-row {
|
|
400
|
+
display: flex;
|
|
401
|
+
justify-content: space-between;
|
|
402
|
+
align-items: flex-start;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
.ukc-result-display {
|
|
406
|
+
display: flex;
|
|
407
|
+
flex-direction: column;
|
|
408
|
+
gap: 0.5rem;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
.ukc-result-display .label {
|
|
412
|
+
font-size: 0.85rem;
|
|
413
|
+
font-weight: 600;
|
|
414
|
+
color: var(--n-text-muted);
|
|
415
|
+
text-transform: uppercase;
|
|
416
|
+
letter-spacing: 0.05em;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
.ukc-time-range {
|
|
420
|
+
display: flex;
|
|
421
|
+
align-items: center;
|
|
422
|
+
gap: 1.5rem;
|
|
423
|
+
font-size: 3.5rem;
|
|
424
|
+
font-weight: 800;
|
|
425
|
+
color: var(--n-text);
|
|
426
|
+
line-height: 1;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
.ukc-arrow-sep {
|
|
430
|
+
color: var(--n-cyan);
|
|
431
|
+
opacity: 0.4;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
.ukc-status-indicator {
|
|
435
|
+
padding: 0.4rem 1.2rem;
|
|
436
|
+
border-radius: 2rem;
|
|
437
|
+
font-size: 0.9rem;
|
|
438
|
+
font-weight: 700;
|
|
439
|
+
width: fit-content;
|
|
440
|
+
background: var(--n-bg-muted);
|
|
441
|
+
color: var(--n-text-dim);
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
.ukc-status-indicator.success {
|
|
445
|
+
background: color-mix(in srgb, var(--n-success), transparent 80%);
|
|
446
|
+
color: var(--n-success);
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
.ukc-status-indicator.warning {
|
|
450
|
+
background: color-mix(in srgb, var(--n-warning), transparent 80%);
|
|
451
|
+
color: var(--n-warning);
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
.ukc-status-indicator.danger {
|
|
455
|
+
background: color-mix(in srgb, var(--n-error), transparent 80%);
|
|
456
|
+
color: var(--n-error);
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
.ukc-data-group {
|
|
460
|
+
display: flex;
|
|
461
|
+
flex-direction: column;
|
|
462
|
+
gap: 0.8rem;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
.ukc-stat-pill {
|
|
466
|
+
background: var(--n-bg);
|
|
467
|
+
padding: 0.5rem 1rem;
|
|
468
|
+
border-radius: 0.8rem;
|
|
469
|
+
border: 1px solid var(--n-border);
|
|
470
|
+
display: flex;
|
|
471
|
+
justify-content: space-between;
|
|
472
|
+
gap: 2rem;
|
|
473
|
+
font-size: 0.9rem;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
.ukc-stat-pill span {
|
|
477
|
+
color: var(--n-text-muted);
|
|
478
|
+
font-weight: 500;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
.ukc-stat-pill strong {
|
|
482
|
+
color: var(--n-text);
|
|
483
|
+
font-weight: 700;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
.ukc-visual-container {
|
|
487
|
+
background: var(--n-bg);
|
|
488
|
+
border: 1px solid var(--n-border);
|
|
489
|
+
border-radius: 1.5rem;
|
|
490
|
+
padding: 2rem;
|
|
491
|
+
height: 300px;
|
|
492
|
+
display: flex;
|
|
493
|
+
justify-content: center;
|
|
494
|
+
position: relative;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
.ukc-ocean-frame {
|
|
498
|
+
width: 200px;
|
|
499
|
+
height: 100%;
|
|
500
|
+
background: var(--n-bg-muted);
|
|
501
|
+
border: 4px solid var(--n-border);
|
|
502
|
+
border-radius: 1rem;
|
|
503
|
+
position: relative;
|
|
504
|
+
overflow: hidden;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
.ukc-water-volume {
|
|
508
|
+
position: absolute;
|
|
509
|
+
bottom: 0;
|
|
510
|
+
width: 100%;
|
|
511
|
+
background: linear-gradient(to top, var(--n-primary), var(--n-cyan));
|
|
512
|
+
opacity: 0.6;
|
|
513
|
+
transition: height 0.6s ease;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
.ukc-surface-line {
|
|
517
|
+
position: absolute;
|
|
518
|
+
top: 0;
|
|
519
|
+
width: 100%;
|
|
520
|
+
height: 3px;
|
|
521
|
+
background: var(--n-cyan);
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
.ukc-ship-silhouette {
|
|
525
|
+
position: absolute;
|
|
526
|
+
left: 20px;
|
|
527
|
+
right: 20px;
|
|
528
|
+
height: 30px;
|
|
529
|
+
color: var(--n-text);
|
|
530
|
+
z-index: 10;
|
|
531
|
+
transition: bottom 0.6s ease;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
.ukc-sand-bottom {
|
|
535
|
+
position: absolute;
|
|
536
|
+
bottom: 0;
|
|
537
|
+
width: 100%;
|
|
538
|
+
height: 40px;
|
|
539
|
+
background: color-mix(in srgb, var(--n-warning), transparent 40%);
|
|
540
|
+
display: flex;
|
|
541
|
+
align-items: center;
|
|
542
|
+
justify-content: center;
|
|
543
|
+
font-size: 0.7rem;
|
|
544
|
+
font-weight: 800;
|
|
545
|
+
color: var(--n-text);
|
|
546
|
+
letter-spacing: 0.2em;
|
|
547
|
+
z-index: 5;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
@media (max-width: 640px) {
|
|
551
|
+
.ukc-time-range {
|
|
552
|
+
font-size: 2.2rem;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
.ukc-top-row {
|
|
556
|
+
flex-direction: column;
|
|
557
|
+
gap: 2rem;
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
</style>
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { UnderKeelUI, UnderKeelLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'ukc-rechner-de';
|
|
5
|
+
const title = 'Kalkulator für die Kielfreiheit UKC';
|
|
6
|
+
const description =
|
|
7
|
+
'Berechnen Sie das sichere Zeitfenster zum Überqueren von Untiefen, Kanälen oder tiefgangsbeschränkten Stellen. Geben Sie den Tiefgang Ihres Bootes, die Kartentiefe und Gezeitendaten ein, um das genaue sichere Durchfahrtsintervall zu erhalten.';
|
|
8
|
+
|
|
9
|
+
const ui: UnderKeelUI = {
|
|
10
|
+
parametersLabel: 'Parameter',
|
|
11
|
+
boatDraftLabel: 'Tiefgang des Bootes',
|
|
12
|
+
chartDepthLabel: 'Kartentiefe',
|
|
13
|
+
safetyMarginLabel: 'Sicherheitsmarge',
|
|
14
|
+
highTideLabel: 'Hochwasser',
|
|
15
|
+
lowTideLabel: 'Niedrigwasser',
|
|
16
|
+
metersLabel: 'Meter',
|
|
17
|
+
passWindowLabel: 'Durchfahrtsfenster',
|
|
18
|
+
neededLabel: 'Benötigte Tiefe',
|
|
19
|
+
tideRequiredLabel: 'Mindestens benötigte Gezeitenhöhe',
|
|
20
|
+
statusNeverLabel: 'Keine Kielfreiheit in diesem Zyklus',
|
|
21
|
+
statusAlwaysLabel: 'Kielfreiheit während des gesamten Zyklus',
|
|
22
|
+
statusFromLabel: 'Durchfahrt ab:',
|
|
23
|
+
statusUntilLabel: 'Durchfahrt bis:',
|
|
24
|
+
bottomLabel: 'GRUND',
|
|
25
|
+
faqTitle: 'Häufig gestellte Fragen',
|
|
26
|
+
bibliographyTitle: 'Bibliografie',
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const faq: UnderKeelLocaleContent['faq'] = [
|
|
30
|
+
{
|
|
31
|
+
question: 'Was genau ist eine Kielfreiheitsberechnung (UKC)?',
|
|
32
|
+
answer: 'Es ist die Berechnung des Zeitpunkts, an dem an einer kritischen Stelle (z. B. einer Sandbank oder einem engen Kanal) genügend Tiefe vorhanden ist, um eine sichere Durchfahrt eines Schiffes entsprechend seinem Tiefgang zu ermöglichen.',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
question: 'Welche Sicherheitsmarge wird empfohlen?',
|
|
36
|
+
answer: 'Für Sportboote wird in der Regel eine Mindestsicherheitsmarge zwischen 0,5 und 1 Meter über dem Tiefgang des Bootes empfohlen. Diese Marge kompensiert mögliche Fehler bei Gezeitenberechnungen, Luftdruckschwankungen oder unerwarteten Seegang.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
question: 'Wie beeinflusst Seegang die Kielfreiheit?',
|
|
40
|
+
answer: 'Seegang erzeugt vertikale Schwingungen im Rumpf. Am tiefsten Punkt der Welle ist das Boot dem Boden näher als in Ruhe. Beim Durchfahren von Gebieten mit Seegang muss die Sicherheitsmarge erheblich erhöht werden.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
question: 'Was ist die in der Karte angegebene Tiefe (Kartentiefe)?',
|
|
44
|
+
answer: 'Es ist die minimale Tiefe an einem Punkt, wenn die Gezeitenhöhe bei Kartennull liegt. Sie wird zur aktuellen Gezeitenhöhe addiert, um die gesamte verfügbare Tiefe zu erhalten.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
question: 'Was bedeutet eine unterstrichene Tiefenangabe in der Seekarte?',
|
|
48
|
+
answer: 'Es bedeutet, dass diese Stelle bei Kartennull trockenfällt. Sie benötigen eine entsprechende Gezeitenhöhe, um darüber hinwegfahren zu können.',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
question: 'Was ist der Squat-Effekt und wie verändert er die Durchfahrt?',
|
|
52
|
+
answer: 'Es ist ein hydrodynamisches Phänomen, bei dem ein Schiff, das durch flache Kanäle fährt, dazu neigt, tiefer relativ zu seiner Wasserlinie einzusinken. Je schneller man fährt, desto mehr nimmt der dynamische Tiefgang zu und desto weniger Wasser hat man unter dem Kiel.',
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
const howTo: UnderKeelLocaleContent['howTo'] = [
|
|
57
|
+
{
|
|
58
|
+
name: 'Tiefgang und Sicherheitsmarge festlegen',
|
|
59
|
+
text: 'Messen Sie den Tiefgang Ihres Bootes am tiefsten Punkt und addieren Sie eine vorsorgliche Sicherheitsmarge (z. B. 0,5 m).',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'Kartentiefe nachschlagen',
|
|
63
|
+
text: 'Suchen Sie die Tiefenangabe für die kritische Stelle, die Sie befahren möchten. Beachten Sie, ob es sich um ein sandiges oder felsiges Gebiet handelt.',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'Gezeitendaten eingeben',
|
|
67
|
+
text: 'Verwenden Sie die Zeiten und Höhen von Hoch- und Niedrigwasser aus dem nächsten offiziellen Gezeitenkalender.',
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'Durchfahrtsfenster prüfen',
|
|
71
|
+
text: 'Das Tool zeigt das genaue Zeitintervall an, in dem Sie über genügend Tiefe für eine sichere Navigation verfügen.',
|
|
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: 'Kielfreiheit: Sicher über Untiefen navigieren',
|
|
90
|
+
level: 2,
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
type: 'paragraph',
|
|
94
|
+
html: 'Die Planung einer Durchfahrt endet nicht mit dem Zeichnen eines Kurses in der Karte. Für den Küstennavigator ist eine der kritischsten Berechnungen die <strong>Kielfreiheit (Under-Keel Clearance)</strong>: zu wissen, zu welcher Zeit genügend Tiefe vorhanden ist, um eine kritische Stelle ohne Grundberührung zu passieren.',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
type: 'title',
|
|
98
|
+
text: 'Was ist die Kartentiefe und wie hängt sie mit der Gezeit zusammen?',
|
|
99
|
+
level: 3,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
type: 'paragraph',
|
|
103
|
+
html: 'In Seekarten beziehen sich Tiefenangaben (Soundings) auf <strong>Kartennull (Chart Datum)</strong>. Dieses Niveau ist per Konvention der niedrigste Stand, den die Gezeiten unter normalen Bedingungen erreichen. Die tatsächliche Tiefe, die Ihr Boot zu einem bestimmten Zeitpunkt vorfindet, ist die Summe aus dieser Tiefenangabe plus der Gezeitenhöhe zu diesem Zeitpunkt.',
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
type: 'title',
|
|
107
|
+
text: 'Die Elemente der Berechnung: Tiefgang und Marge',
|
|
108
|
+
level: 3,
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
type: 'paragraph',
|
|
112
|
+
html: 'Um den Kielfreiheitsrechner professionell zu nutzen, müssen Sie zwei technische Details über Ihr Boot kennen und eine persönliche Entscheidung treffen:',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
type: 'list',
|
|
116
|
+
items: [
|
|
117
|
+
'<strong>Maximaler Tiefgang:</strong> Die Tiefe, die der tiefste Punkt des Bootes (der Kiel) bei voller Beladung erreicht.',
|
|
118
|
+
'<strong>Kartentiefe:</strong> Die Zahl in der Seekarte für den Punkt, den Sie überqueren möchten. Wenn unterstrichen, fällt die Stelle bei Kartennull trocken.',
|
|
119
|
+
'<strong>Sicherheitsmarge:</strong> Zusätzliche Freigabe von mindestens 0,5 bis 1 Meter über dem Tiefgang.',
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'title',
|
|
124
|
+
text: 'Wie funktioniert das Durchfahrtsfenster?',
|
|
125
|
+
level: 3,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'paragraph',
|
|
129
|
+
html: 'Der Rechner ermittelt den genauen Zeitpunkt, an dem der Wasserstand über Ihren Tiefgang plus der gewählten Sicherheitsmarge steigt. Ab dieser Minute öffnet sich das <strong>Durchfahrtsfenster</strong>. Wenn die Gezeit abläuft (Ebbe), zeigt das Tool an, bis zu welcher Zeit die Durchfahrt erlaubt ist, bevor der Wasserstand unter Ihr Sicherheitslimit sinkt.',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'title',
|
|
133
|
+
text: 'Faktoren, die die tatsächliche Durchfahrt beeinflussen',
|
|
134
|
+
level: 3,
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
type: 'table',
|
|
138
|
+
headers: ['Faktor', 'Effekt', 'Empfehlung'],
|
|
139
|
+
rows: [
|
|
140
|
+
['<strong>Seegang</strong>', 'Verringert das Wasser unter dem Rumpf', 'Sicherheitsmarge deutlich erhöhen'],
|
|
141
|
+
['<strong>Squat-Effekt</strong>', 'Erhöht den Tiefgang durch Sogwirkung', 'Geschwindigkeit an kritischen Stellen reduzieren'],
|
|
142
|
+
['<strong>Sandiger Grund</strong>', 'Tiefe variabel durch Stürme', 'Echolot aktiv halten und Extra-Marge einplanen'],
|
|
143
|
+
],
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'tip',
|
|
147
|
+
title: 'Navigationstipp',
|
|
148
|
+
html: 'Wenn Ihr Durchfahrtsfenster sehr schmal ist oder sich das Wetter verschlechtert, ist es meist die klügste Entscheidung, draußen im tiefen Wasser zu warten, bis die Gezeit die erforderliche Höhe erreicht hat.',
|
|
149
|
+
},
|
|
150
|
+
];
|
|
151
|
+
|
|
152
|
+
const schemas: UnderKeelLocaleContent['schemas'] = [
|
|
153
|
+
{
|
|
154
|
+
'@context': 'https://schema.org',
|
|
155
|
+
'@type': 'SoftwareApplication',
|
|
156
|
+
name: title,
|
|
157
|
+
description,
|
|
158
|
+
applicationCategory: 'UtilityApplication',
|
|
159
|
+
operatingSystem: 'Web',
|
|
160
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
161
|
+
} as WithContext<SoftwareApplication>,
|
|
162
|
+
{
|
|
163
|
+
'@context': 'https://schema.org',
|
|
164
|
+
'@type': 'FAQPage',
|
|
165
|
+
mainEntity: faq.map((item) => ({
|
|
166
|
+
'@type': 'Question',
|
|
167
|
+
name: item.question,
|
|
168
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
169
|
+
})),
|
|
170
|
+
} as WithContext<FAQPage>,
|
|
171
|
+
{
|
|
172
|
+
'@context': 'https://schema.org',
|
|
173
|
+
'@type': 'HowTo',
|
|
174
|
+
name: `Benutzung: ${title}`,
|
|
175
|
+
step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
|
|
176
|
+
} as WithContext<HowTo>,
|
|
177
|
+
];
|
|
178
|
+
|
|
179
|
+
export const content: UnderKeelLocaleContent = {
|
|
180
|
+
slug,
|
|
181
|
+
title,
|
|
182
|
+
description,
|
|
183
|
+
ui,
|
|
184
|
+
seo,
|
|
185
|
+
faq,
|
|
186
|
+
bibliography,
|
|
187
|
+
howTo,
|
|
188
|
+
schemas,
|
|
189
|
+
};
|
|
@@ -2,7 +2,7 @@ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dt
|
|
|
2
2
|
import type { UnderKeelUI, UnderKeelLocaleContent } from '../index';
|
|
3
3
|
|
|
4
4
|
const slug = 'under-keel-clearance-calculator';
|
|
5
|
-
const title = 'Under
|
|
5
|
+
const title = 'Under Keel Clearance Calculator';
|
|
6
6
|
const description =
|
|
7
7
|
'Calculate the safe time window to cross bars, channels or draft-restricted points. Enter your boat draft, chart depth and tidal data to get the exact safe passage interval.';
|
|
8
8
|
|
|
@@ -86,7 +86,7 @@ const bibliography: UnderKeelLocaleContent['bibliography'] = [
|
|
|
86
86
|
const seo: UnderKeelLocaleContent['seo'] = [
|
|
87
87
|
{
|
|
88
88
|
type: 'title',
|
|
89
|
-
text: 'Under
|
|
89
|
+
text: 'Under Keel Clearance: Navigating Safely Over Shoals',
|
|
90
90
|
level: 2,
|
|
91
91
|
},
|
|
92
92
|
{
|
|
@@ -2,7 +2,7 @@ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dt
|
|
|
2
2
|
import type { UnderKeelUI, UnderKeelLocaleContent } from '../index';
|
|
3
3
|
|
|
4
4
|
const slug = 'calculateur-passage-haut-fond';
|
|
5
|
-
const title = 'Calculateur de Passage sur Haut
|
|
5
|
+
const title = 'Calculateur de Passage sur Haut Fond';
|
|
6
6
|
const description =
|
|
7
7
|
"Calculez la feneˆtre de temps sure pour franchir des barres, chenaux ou points a tirant d'eau restreint. Entrez le tirant d'eau de votre bateau, la sonde de la carte et les donnees de maree pour obtenir l'intervalle de passage sur.";
|
|
8
8
|
|
|
@@ -86,7 +86,7 @@ const bibliography: UnderKeelLocaleContent['bibliography'] = [
|
|
|
86
86
|
const seo: UnderKeelLocaleContent['seo'] = [
|
|
87
87
|
{
|
|
88
88
|
type: 'title',
|
|
89
|
-
text: 'Passage sur Haut
|
|
89
|
+
text: 'Passage sur Haut Fond : Naviguer en Securite au-dessus des Obstacles',
|
|
90
90
|
level: 2,
|
|
91
91
|
},
|
|
92
92
|
{
|