@jjlmoya/utils-nautical 1.15.0 → 1.17.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 (137) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/de.ts +1 -1
  3. package/src/category/i18n/en.ts +1 -1
  4. package/src/category/i18n/es.ts +16 -16
  5. package/src/category/i18n/fr.ts +16 -16
  6. package/src/category/i18n/id.ts +1 -1
  7. package/src/category/i18n/it.ts +1 -1
  8. package/src/category/i18n/nl.ts +1 -1
  9. package/src/category/i18n/pl.ts +1 -1
  10. package/src/category/i18n/pt.ts +1 -1
  11. package/src/category/i18n/ru.ts +3 -3
  12. package/src/category/i18n/sv.ts +1 -1
  13. package/src/category/i18n/tr.ts +1 -1
  14. package/src/layouts/PreviewLayout.astro +1 -0
  15. package/src/pages/[locale]/[slug].astro +28 -12
  16. package/src/tests/diacritics_density.test.ts +118 -0
  17. package/src/tests/inverted_punctuation.test.ts +84 -0
  18. package/src/tests/locale_completeness.test.ts +1 -31
  19. package/src/tests/no_en_dash.test.ts +70 -0
  20. package/src/tests/script_density.test.ts +94 -0
  21. package/src/tests/shared-test-helpers.ts +56 -0
  22. package/src/tests/tool_exports.test.ts +34 -0
  23. package/src/tool/endurance/bibliography.astro +1 -1
  24. package/src/tool/endurance/bibliography.ts +12 -0
  25. package/src/tool/endurance/entry.ts +2 -2
  26. package/src/tool/endurance/i18n/de.ts +1 -13
  27. package/src/tool/endurance/i18n/en.ts +1 -12
  28. package/src/tool/endurance/i18n/es.ts +55 -67
  29. package/src/tool/endurance/i18n/fr.ts +71 -83
  30. package/src/tool/endurance/i18n/id.ts +1 -13
  31. package/src/tool/endurance/i18n/it.ts +1 -13
  32. package/src/tool/endurance/i18n/ja.ts +1 -13
  33. package/src/tool/endurance/i18n/ko.ts +1 -13
  34. package/src/tool/endurance/i18n/nl.ts +1 -13
  35. package/src/tool/endurance/i18n/pl.ts +1 -13
  36. package/src/tool/endurance/i18n/pt.ts +1 -13
  37. package/src/tool/endurance/i18n/ru.ts +10 -22
  38. package/src/tool/endurance/i18n/sv.ts +1 -13
  39. package/src/tool/endurance/i18n/tr.ts +1 -13
  40. package/src/tool/endurance/i18n/zh.ts +1 -13
  41. package/src/tool/endurance/seo.astro +2 -42
  42. package/src/tool/nauticalConverter/bibliography.astro +1 -1
  43. package/src/tool/nauticalConverter/bibliography.ts +12 -0
  44. package/src/tool/nauticalConverter/entry.ts +2 -2
  45. package/src/tool/nauticalConverter/i18n/de.ts +1 -13
  46. package/src/tool/nauticalConverter/i18n/en.ts +1 -13
  47. package/src/tool/nauticalConverter/i18n/es.ts +47 -59
  48. package/src/tool/nauticalConverter/i18n/fr.ts +54 -66
  49. package/src/tool/nauticalConverter/i18n/id.ts +1 -13
  50. package/src/tool/nauticalConverter/i18n/it.ts +1 -13
  51. package/src/tool/nauticalConverter/i18n/ja.ts +1 -13
  52. package/src/tool/nauticalConverter/i18n/ko.ts +1 -13
  53. package/src/tool/nauticalConverter/i18n/nl.ts +1 -13
  54. package/src/tool/nauticalConverter/i18n/pl.ts +4 -16
  55. package/src/tool/nauticalConverter/i18n/pt.ts +1 -13
  56. package/src/tool/nauticalConverter/i18n/ru.ts +9 -21
  57. package/src/tool/nauticalConverter/i18n/sv.ts +1 -13
  58. package/src/tool/nauticalConverter/i18n/tr.ts +1 -13
  59. package/src/tool/nauticalConverter/i18n/zh.ts +4 -16
  60. package/src/tool/nauticalConverter/seo.astro +2 -39
  61. package/src/tool/sailArea/bibliography.astro +1 -1
  62. package/src/tool/sailArea/bibliography.ts +16 -0
  63. package/src/tool/sailArea/entry.ts +2 -2
  64. package/src/tool/sailArea/i18n/de.ts +1 -17
  65. package/src/tool/sailArea/i18n/en.ts +1 -17
  66. package/src/tool/sailArea/i18n/es.ts +54 -70
  67. package/src/tool/sailArea/i18n/fr.ts +71 -87
  68. package/src/tool/sailArea/i18n/id.ts +1 -17
  69. package/src/tool/sailArea/i18n/it.ts +1 -17
  70. package/src/tool/sailArea/i18n/ja.ts +1 -17
  71. package/src/tool/sailArea/i18n/ko.ts +1 -17
  72. package/src/tool/sailArea/i18n/nl.ts +1 -17
  73. package/src/tool/sailArea/i18n/pl.ts +1 -17
  74. package/src/tool/sailArea/i18n/pt.ts +1 -17
  75. package/src/tool/sailArea/i18n/ru.ts +9 -25
  76. package/src/tool/sailArea/i18n/sv.ts +1 -17
  77. package/src/tool/sailArea/i18n/tr.ts +1 -17
  78. package/src/tool/sailArea/i18n/zh.ts +6 -22
  79. package/src/tool/sailArea/seo.astro +2 -39
  80. package/src/tool/speedConverter/bibliography.astro +1 -1
  81. package/src/tool/speedConverter/bibliography.ts +12 -0
  82. package/src/tool/speedConverter/entry.ts +2 -2
  83. package/src/tool/speedConverter/i18n/de.ts +1 -13
  84. package/src/tool/speedConverter/i18n/en.ts +1 -13
  85. package/src/tool/speedConverter/i18n/es.ts +59 -71
  86. package/src/tool/speedConverter/i18n/fr.ts +76 -88
  87. package/src/tool/speedConverter/i18n/id.ts +1 -13
  88. package/src/tool/speedConverter/i18n/it.ts +1 -13
  89. package/src/tool/speedConverter/i18n/ja.ts +1 -13
  90. package/src/tool/speedConverter/i18n/ko.ts +1 -13
  91. package/src/tool/speedConverter/i18n/nl.ts +1 -13
  92. package/src/tool/speedConverter/i18n/pl.ts +1 -13
  93. package/src/tool/speedConverter/i18n/pt.ts +1 -13
  94. package/src/tool/speedConverter/i18n/ru.ts +7 -19
  95. package/src/tool/speedConverter/i18n/sv.ts +1 -13
  96. package/src/tool/speedConverter/i18n/tr.ts +1 -13
  97. package/src/tool/speedConverter/i18n/zh.ts +6 -18
  98. package/src/tool/speedConverter/seo.astro +2 -30
  99. package/src/tool/tideCalculator/bibliography.astro +1 -1
  100. package/src/tool/tideCalculator/bibliography.ts +12 -0
  101. package/src/tool/tideCalculator/entry.ts +2 -2
  102. package/src/tool/tideCalculator/i18n/de.ts +1 -13
  103. package/src/tool/tideCalculator/i18n/en.ts +1 -13
  104. package/src/tool/tideCalculator/i18n/es.ts +40 -52
  105. package/src/tool/tideCalculator/i18n/fr.ts +44 -56
  106. package/src/tool/tideCalculator/i18n/id.ts +1 -13
  107. package/src/tool/tideCalculator/i18n/it.ts +1 -13
  108. package/src/tool/tideCalculator/i18n/ja.ts +1 -13
  109. package/src/tool/tideCalculator/i18n/ko.ts +1 -13
  110. package/src/tool/tideCalculator/i18n/nl.ts +1 -13
  111. package/src/tool/tideCalculator/i18n/pl.ts +1 -13
  112. package/src/tool/tideCalculator/i18n/pt.ts +1 -13
  113. package/src/tool/tideCalculator/i18n/ru.ts +7 -19
  114. package/src/tool/tideCalculator/i18n/sv.ts +1 -13
  115. package/src/tool/tideCalculator/i18n/tr.ts +1 -13
  116. package/src/tool/tideCalculator/i18n/zh.ts +2 -14
  117. package/src/tool/tideCalculator/seo.astro +2 -48
  118. package/src/tool/tideCalculator/tide-height-calculator.css +136 -5
  119. package/src/tool/underKeel/bibliography.astro +1 -1
  120. package/src/tool/underKeel/bibliography.ts +12 -0
  121. package/src/tool/underKeel/entry.ts +2 -2
  122. package/src/tool/underKeel/i18n/de.ts +1 -13
  123. package/src/tool/underKeel/i18n/en.ts +1 -13
  124. package/src/tool/underKeel/i18n/es.ts +40 -52
  125. package/src/tool/underKeel/i18n/fr.ts +46 -58
  126. package/src/tool/underKeel/i18n/id.ts +2 -14
  127. package/src/tool/underKeel/i18n/it.ts +2 -14
  128. package/src/tool/underKeel/i18n/ja.ts +2 -14
  129. package/src/tool/underKeel/i18n/ko.ts +2 -14
  130. package/src/tool/underKeel/i18n/nl.ts +2 -14
  131. package/src/tool/underKeel/i18n/pl.ts +2 -14
  132. package/src/tool/underKeel/i18n/pt.ts +2 -14
  133. package/src/tool/underKeel/i18n/ru.ts +7 -19
  134. package/src/tool/underKeel/i18n/sv.ts +2 -14
  135. package/src/tool/underKeel/i18n/tr.ts +2 -14
  136. package/src/tool/underKeel/i18n/zh.ts +2 -14
  137. package/src/tool/underKeel/seo.astro +2 -33
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { NauticalConverterUI, NauticalConverterLocaleContent } from '../index';
3
4
 
@@ -30,8 +31,6 @@ const ui: NauticalConverterUI = {
30
31
  forceLabel: '風力',
31
32
  effectLabel: '影響',
32
33
  copyLabel: '値をコピー',
33
- faqTitle: 'よくある質問',
34
- bibliographyTitle: '参考文献',
35
34
  };
36
35
 
37
36
  const faq: NauticalConverterLocaleContent['faq'] = [
@@ -80,17 +79,6 @@ const howTo: NauticalConverterLocaleContent['howTo'] = [
80
79
  },
81
80
  ];
82
81
 
83
- const bibliography: NauticalConverterLocaleContent['bibliography'] = [
84
- {
85
- name: 'Instituto Hidrografico de la Marina',
86
- url: 'https://armada.defensa.gob.es/ihm/',
87
- },
88
- {
89
- name: 'NOAA - National Weather Service',
90
- url: 'https://www.weather.gov/mfl/beaufort',
91
- },
92
- ];
93
-
94
82
  const seo: NauticalConverterLocaleContent['seo'] = [
95
83
  {
96
84
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { NauticalConverterUI, NauticalConverterLocaleContent } from '../index';
3
4
 
@@ -30,8 +31,6 @@ const ui: NauticalConverterUI = {
30
31
  forceLabel: '풍력',
31
32
  effectLabel: '영향',
32
33
  copyLabel: '값 복사',
33
- faqTitle: '자주 묻는 질문',
34
- bibliographyTitle: '참고 문헌',
35
34
  };
36
35
 
37
36
  const faq: NauticalConverterLocaleContent['faq'] = [
@@ -80,17 +79,6 @@ const howTo: NauticalConverterLocaleContent['howTo'] = [
80
79
  },
81
80
  ];
82
81
 
83
- const bibliography: NauticalConverterLocaleContent['bibliography'] = [
84
- {
85
- name: 'Instituto Hidrografico de la Marina',
86
- url: 'https://armada.defensa.gob.es/ihm/',
87
- },
88
- {
89
- name: 'NOAA - National Weather Service',
90
- url: 'https://www.weather.gov/mfl/beaufort',
91
- },
92
- ];
93
-
94
82
  const seo: NauticalConverterLocaleContent['seo'] = [
95
83
  {
96
84
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { NauticalConverterUI, NauticalConverterLocaleContent } from '../index';
3
4
 
@@ -30,8 +31,6 @@ const ui: NauticalConverterUI = {
30
31
  forceLabel: 'Kracht',
31
32
  effectLabel: 'Effect',
32
33
  copyLabel: 'Waarde kopiëren',
33
- faqTitle: 'Veelgestelde Vragen',
34
- bibliographyTitle: 'Bibliografie',
35
34
  };
36
35
 
37
36
  const faq: NauticalConverterLocaleContent['faq'] = [
@@ -80,17 +79,6 @@ const howTo: NauticalConverterLocaleContent['howTo'] = [
80
79
  },
81
80
  ];
82
81
 
83
- const bibliography: NauticalConverterLocaleContent['bibliography'] = [
84
- {
85
- name: 'Instituto Hidrografico de la Marina',
86
- url: 'https://armada.defensa.gob.es/ihm/',
87
- },
88
- {
89
- name: 'NOAA - National Weather Service',
90
- url: 'https://www.weather.gov/mfl/beaufort',
91
- },
92
- ];
93
-
94
82
  const seo: NauticalConverterLocaleContent['seo'] = [
95
83
  {
96
84
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { NauticalConverterUI, NauticalConverterLocaleContent } from '../index';
3
4
 
@@ -30,8 +31,6 @@ const ui: NauticalConverterUI = {
30
31
  forceLabel: 'Siła',
31
32
  effectLabel: 'Efekt',
32
33
  copyLabel: 'Kopiuj wartość',
33
- faqTitle: 'Często Zadawane Pytania',
34
- bibliographyTitle: 'Bibliografia',
35
34
  };
36
35
 
37
36
  const faq: NauticalConverterLocaleContent['faq'] = [
@@ -53,7 +52,7 @@ const faq: NauticalConverterLocaleContent['faq'] = [
53
52
  },
54
53
  {
55
54
  question: 'Jaka jednostka ciśnienia jest używana w meteorologii morskiej?',
56
- answer: 'Meteorologia morska posługuje się głównie milibarem (mbar) lub jego odpowiednikiem hektopaskalem (hPa). Normalne ciśnienie atmosferyczne na poziomie morza wynosi 1013,25 mbar.',
55
+ answer: 'Meteorologia morska posługuje się głównie milibarem (mbar) lub jego odpowiednikiem - hektopaskalem (hPa). Normalne ciśnienie atmosferyczne na poziomie morza wynosi 1013,25 mbar.',
57
56
  },
58
57
  {
59
58
  question: 'Ile stóp ma sążeń?',
@@ -80,17 +79,6 @@ const howTo: NauticalConverterLocaleContent['howTo'] = [
80
79
  },
81
80
  ];
82
81
 
83
- const bibliography: NauticalConverterLocaleContent['bibliography'] = [
84
- {
85
- name: 'Instituto Hidrografico de la Marina',
86
- url: 'https://armada.defensa.gob.es/ihm/',
87
- },
88
- {
89
- name: 'NOAA - National Weather Service',
90
- url: 'https://www.weather.gov/mfl/beaufort',
91
- },
92
- ];
93
-
94
82
  const seo: NauticalConverterLocaleContent['seo'] = [
95
83
  {
96
84
  type: 'title',
@@ -99,7 +87,7 @@ const seo: NauticalConverterLocaleContent['seo'] = [
99
87
  },
100
88
  {
101
89
  type: 'paragraph',
102
- html: 'Żegluga po morzu wymaga własnego języka systemu miar doskonalonego przez stulecia morskich eksploracji. Jednostki morskie nie są historycznym dziwactwem, lecz matematycznie spójnymi narzędziami dostosowanymi do geometrii Ziemi i praktycznych potrzeb nawigatora.',
90
+ html: 'Żegluga po morzu wymaga własnego języka - systemu miar doskonalonego przez stulecia morskich eksploracji. Jednostki morskie nie są historycznym dziwactwem, lecz matematycznie spójnymi narzędziami dostosowanymi do geometrii Ziemi i praktycznych potrzeb nawigatora.',
103
91
  },
104
92
  {
105
93
  type: 'paragraph',
@@ -142,7 +130,7 @@ const seo: NauticalConverterLocaleContent['seo'] = [
142
130
  },
143
131
  {
144
132
  type: 'paragraph',
145
- html: 'W świecie morskim głębokość nie jest tylko statystyką to różnica między bezpiecznym kotwicowiskiem a wejściem na dno. Historycznie, <strong>sążeń</strong> (1,8288 metra lub dokładnie 6 stóp) był dominującą jednostką miary głębokości w świecie anglojęzycznym.',
133
+ html: 'W świecie morskim głębokość nie jest tylko statystyką - to różnica między bezpiecznym kotwicowiskiem a wejściem na dno. Historycznie, <strong>sążeń</strong> (1,8288 metra lub dokładnie 6 stóp) był dominującą jednostką miary głębokości w świecie anglojęzycznym.',
146
134
  },
147
135
  {
148
136
  type: 'paragraph',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { NauticalConverterUI, NauticalConverterLocaleContent } from '../index';
3
4
 
@@ -30,8 +31,6 @@ const ui: NauticalConverterUI = {
30
31
  forceLabel: 'Força',
31
32
  effectLabel: 'Efeito',
32
33
  copyLabel: 'Copiar valor',
33
- faqTitle: 'Perguntas Frequentes',
34
- bibliographyTitle: 'Bibliografia',
35
34
  };
36
35
 
37
36
  const faq: NauticalConverterLocaleContent['faq'] = [
@@ -80,17 +79,6 @@ const howTo: NauticalConverterLocaleContent['howTo'] = [
80
79
  },
81
80
  ];
82
81
 
83
- const bibliography: NauticalConverterLocaleContent['bibliography'] = [
84
- {
85
- name: 'Instituto Hidrografico de la Marina',
86
- url: 'https://armada.defensa.gob.es/ihm/',
87
- },
88
- {
89
- name: 'NOAA - National Weather Service',
90
- url: 'https://www.weather.gov/mfl/beaufort',
91
- },
92
- ];
93
-
94
82
  const seo: NauticalConverterLocaleContent['seo'] = [
95
83
  {
96
84
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { NauticalConverterUI, NauticalConverterLocaleContent } from '../index';
3
4
 
@@ -30,8 +31,6 @@ const ui: NauticalConverterUI = {
30
31
  forceLabel: 'Сила',
31
32
  effectLabel: 'Эффект',
32
33
  copyLabel: 'Копировать значение',
33
- faqTitle: 'Часто задаваемые вопросы',
34
- bibliographyTitle: 'Библиография',
35
34
  };
36
35
 
37
36
  const faq: NauticalConverterLocaleContent['faq'] = [
@@ -41,7 +40,7 @@ const faq: NauticalConverterLocaleContent['faq'] = [
41
40
  },
42
41
  {
43
42
  question: 'В чем разница между узлом и километром в час?',
44
- answer: 'Один узел равен 1,852 км/ч, так как узел это одна морская миля в час. Чтобы перевести узлы в км/ч, просто умножьте на 1,852.',
43
+ answer: 'Один узел равен 1,852 км/ч, так как узел - это одна морская миля в час. Чтобы перевести узлы в км/ч, просто умножьте на 1,852.',
45
44
  },
46
45
  {
47
46
  question: 'Почему в море используются морские мили, а не километры?',
@@ -72,7 +71,7 @@ const howTo: NauticalConverterLocaleContent['howTo'] = [
72
71
  },
73
72
  {
74
73
  name: 'Посмотрите шкалу Бофорта (скорость)',
75
- text: 'Когда вы вводите скорость на вкладке «Скорость», появится карточка, показывающая соответствующую силу по шкале Бофорта и ожидаемое состояние моря.',
74
+ text: 'Когда вы вводите скорость на вкладке "Скорость", появится карточка, показывающая соответствующую силу по шкале Бофорта и ожидаемое состояние моря.',
76
75
  },
77
76
  {
78
77
  name: 'Скопируйте результат',
@@ -80,17 +79,6 @@ const howTo: NauticalConverterLocaleContent['howTo'] = [
80
79
  },
81
80
  ];
82
81
 
83
- const bibliography: NauticalConverterLocaleContent['bibliography'] = [
84
- {
85
- name: 'Instituto Hidrografico de la Marina',
86
- url: 'https://armada.defensa.gob.es/ihm/',
87
- },
88
- {
89
- name: 'NOAA - National Weather Service',
90
- url: 'https://www.weather.gov/mfl/beaufort',
91
- },
92
- ];
93
-
94
82
  const seo: NauticalConverterLocaleContent['seo'] = [
95
83
  {
96
84
  type: 'title',
@@ -99,11 +87,11 @@ const seo: NauticalConverterLocaleContent['seo'] = [
99
87
  },
100
88
  {
101
89
  type: 'paragraph',
102
- html: 'Навигация в море требует собственного языка системы измерений, оттачивавшейся веками морских исследований. Морские единицы это не исторический казус, а математически последовательные инструменты, согласованные с геометрией Земли и практическими потребностями навигатора.',
90
+ html: 'Навигация в море требует собственного языка - системы измерений, оттачивавшейся веками морских исследований. Морские единицы - это не исторический казус, а математически последовательные инструменты, согласованные с геометрией Земли и практическими потребностями навигатора.',
103
91
  },
104
92
  {
105
93
  type: 'paragraph',
106
- html: 'В отличие от суши, где ошибка в несколько метров редко имеет серьезные последствия, в море неправильная конвертация может означать разницу между безопасной стоянкой на якоре и посадкой на мель. Точность единиц это не академический вопрос, это и есть навигация.',
94
+ html: 'В отличие от суши, где ошибка в несколько метров редко имеет серьезные последствия, в море неправильная конвертация может означать разницу между безопасной стоянкой на якоре и посадкой на мель. Точность единиц - это не академический вопрос, это и есть навигация.',
107
95
  },
108
96
  {
109
97
  type: 'paragraph',
@@ -129,7 +117,7 @@ const seo: NauticalConverterLocaleContent['seo'] = [
129
117
  },
130
118
  {
131
119
  type: 'paragraph',
132
- html: '<strong>Узел</strong> это единица скорости, равная одной морской миле в час. Его название происходит от старинного способа измерения скорости путем выбрасывания за борт лага деревянной доски, привязанной к веревке с узлами через равные промежутки, и подсчета того, сколько узлов пройдет через пальцы за фиксированное время.',
120
+ html: '<strong>Узел</strong> - это единица скорости, равная одной морской миле в час. Его название происходит от старинного способа измерения скорости путем выбрасывания за борт лага - деревянной доски, привязанной к веревке с узлами через равные промежутки, и подсчета того, сколько узлов пройдет через пальцы за фиксированное время.',
133
121
  },
134
122
  {
135
123
  type: 'paragraph',
@@ -142,7 +130,7 @@ const seo: NauticalConverterLocaleContent['seo'] = [
142
130
  },
143
131
  {
144
132
  type: 'paragraph',
145
- html: 'В морском мире глубина это не просто статистика: это разница между безопасной якорной стоянкой и посадкой на грунт. Исторически <strong>сажень</strong> (1,8288 метра или ровно 6 футов) была преобладающей единицей измерения глубины в англоязычном мире.',
133
+ html: 'В морском мире глубина - это не просто статистика: это разница между безопасной якорной стоянкой и посадкой на грунт. Исторически <strong>сажень</strong> (1,8288 метра или ровно 6 футов) была преобладающей единицей измерения глубины в англоязычном мире.',
146
134
  },
147
135
  {
148
136
  type: 'paragraph',
@@ -155,7 +143,7 @@ const seo: NauticalConverterLocaleContent['seo'] = [
155
143
  },
156
144
  {
157
145
  type: 'paragraph',
158
- html: 'Для капитана барометр это оракул погоды. Атмосферное давление, измеряемое в <strong>миллибарах</strong> (mbar), является самым надежным индикатором предстоящих изменений погоды. Быстрое падение давления предвещает приход сильных ветров и плохой погоды.',
146
+ html: 'Для капитана барометр - это оракул погоды. Атмосферное давление, измеряемое в <strong>миллибарах</strong> (mbar), является самым надежным индикатором предстоящих изменений погоды. Быстрое падение давления предвещает приход сильных ветров и плохой погоды.',
159
147
  },
160
148
  {
161
149
  type: 'paragraph',
@@ -168,7 +156,7 @@ const seo: NauticalConverterLocaleContent['seo'] = [
168
156
  },
169
157
  {
170
158
  type: 'paragraph',
171
- html: 'Скорость ветра в узлах это число, которое оживает при сопоставлении со <strong>шкалой Бофорта</strong>. Разработанная британским адмиралом Фрэнсисом Бофортом в 1805 году, эта эмпирическая шкала связывает скорость ветра с наблюдаемыми эффектами как на поверхности моря, так и на суше.',
159
+ html: 'Скорость ветра в узлах - это число, которое оживает при сопоставлении со <strong>шкалой Бофорта</strong>. Разработанная британским адмиралом Фрэнсисом Бофортом в 1805 году, эта эмпирическая шкала связывает скорость ветра с наблюдаемыми эффектами как на поверхности моря, так и на суше.',
172
160
  },
173
161
  {
174
162
  type: 'list',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { NauticalConverterUI, NauticalConverterLocaleContent } from '../index';
3
4
 
@@ -30,8 +31,6 @@ const ui: NauticalConverterUI = {
30
31
  forceLabel: 'Styrka',
31
32
  effectLabel: 'Effekt',
32
33
  copyLabel: 'Kopiera värde',
33
- faqTitle: 'Vanliga Frågor',
34
- bibliographyTitle: 'Bibliografi',
35
34
  };
36
35
 
37
36
  const faq: NauticalConverterLocaleContent['faq'] = [
@@ -80,17 +79,6 @@ const howTo: NauticalConverterLocaleContent['howTo'] = [
80
79
  },
81
80
  ];
82
81
 
83
- const bibliography: NauticalConverterLocaleContent['bibliography'] = [
84
- {
85
- name: 'Instituto Hidrografico de la Marina',
86
- url: 'https://armada.defensa.gob.es/ihm/',
87
- },
88
- {
89
- name: 'NOAA - National Weather Service',
90
- url: 'https://www.weather.gov/mfl/beaufort',
91
- },
92
- ];
93
-
94
82
  const seo: NauticalConverterLocaleContent['seo'] = [
95
83
  {
96
84
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { NauticalConverterUI, NauticalConverterLocaleContent } from '../index';
3
4
 
@@ -30,8 +31,6 @@ const ui: NauticalConverterUI = {
30
31
  forceLabel: 'Kuvvet',
31
32
  effectLabel: 'Etki',
32
33
  copyLabel: 'Değeri kopyala',
33
- faqTitle: 'Sıkça Sorulan Sorular',
34
- bibliographyTitle: 'Kaynakça',
35
34
  };
36
35
 
37
36
  const faq: NauticalConverterLocaleContent['faq'] = [
@@ -80,17 +79,6 @@ const howTo: NauticalConverterLocaleContent['howTo'] = [
80
79
  },
81
80
  ];
82
81
 
83
- const bibliography: NauticalConverterLocaleContent['bibliography'] = [
84
- {
85
- name: 'Instituto Hidrografico de la Marina',
86
- url: 'https://armada.defensa.gob.es/ihm/',
87
- },
88
- {
89
- name: 'NOAA - National Weather Service',
90
- url: 'https://www.weather.gov/mfl/beaufort',
91
- },
92
- ];
93
-
94
82
  const seo: NauticalConverterLocaleContent['seo'] = [
95
83
  {
96
84
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { NauticalConverterUI, NauticalConverterLocaleContent } from '../index';
3
4
 
@@ -30,8 +31,6 @@ const ui: NauticalConverterUI = {
30
31
  forceLabel: '风力',
31
32
  effectLabel: '影响',
32
33
  copyLabel: '复制数值',
33
- faqTitle: '常见问题',
34
- bibliographyTitle: '参考文献',
35
34
  };
36
35
 
37
36
  const faq: NauticalConverterLocaleContent['faq'] = [
@@ -72,7 +71,7 @@ const howTo: NauticalConverterLocaleContent['howTo'] = [
72
71
  },
73
72
  {
74
73
  name: '参考蒲福风级(速度)',
75
- text: '当您在“速度”标签页中输入速度时,会出现一张卡片,显示相应的蒲福风级和预期的海况。',
74
+ text: '当您在"速度"标签页中输入速度时,会出现一张卡片,显示相应的蒲福风级和预期的海况。',
76
75
  },
77
76
  {
78
77
  name: '复制结果',
@@ -80,17 +79,6 @@ const howTo: NauticalConverterLocaleContent['howTo'] = [
80
79
  },
81
80
  ];
82
81
 
83
- const bibliography: NauticalConverterLocaleContent['bibliography'] = [
84
- {
85
- name: 'Instituto Hidrografico de la Marina',
86
- url: 'https://armada.defensa.gob.es/ihm/',
87
- },
88
- {
89
- name: 'NOAA - National Weather Service',
90
- url: 'https://www.weather.gov/mfl/beaufort',
91
- },
92
- ];
93
-
94
82
  const seo: NauticalConverterLocaleContent['seo'] = [
95
83
  {
96
84
  type: 'title',
@@ -133,7 +121,7 @@ const seo: NauticalConverterLocaleContent['seo'] = [
133
121
  },
134
122
  {
135
123
  type: 'paragraph',
136
- html: '如今,虽然我们使用 GPS 卫星和先进的电子系统,但“节”仍然是国际航空和航海中的标准单位。一节等于 1.852 km/h 或 0.514 m/s。',
124
+ html: '如今,虽然我们使用 GPS 卫星和先进的电子系统,但"节"仍然是国际航空和航海中的标准单位。一节等于 1.852 km/h 或 0.514 m/s。',
137
125
  },
138
126
  {
139
127
  type: 'title',
@@ -146,7 +134,7 @@ const seo: NauticalConverterLocaleContent['seo'] = [
146
134
  },
147
135
  {
148
136
  type: 'paragraph',
149
- html: '然而,全球化和技术进步使得大多数现代海图和回声测深仪已经常态化地使用“米”。现代航海者必须能够熟练地在英寻、米和英尺之间切换,尤其是在查阅旧海图或标定为英制单位的仪器时。',
137
+ html: '然而,全球化和技术进步使得大多数现代海图和回声测深仪已经常态化地使用"米"。现代航海者必须能够熟练地在英寻、米和英尺之间切换,尤其是在查阅旧海图或标定为英制单位的仪器时。',
150
138
  },
151
139
  {
152
140
  type: 'title',
@@ -1,11 +1,5 @@
1
1
  ---
2
- import {
3
- SEOTitle,
4
- SEOTable,
5
- SEOTip,
6
- SEOGlossary,
7
- SEOArticle,
8
- } from '@jjlmoya/utils-shared';
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
9
3
  import { nauticalConverter } from './index';
10
4
  import type { KnownLocale } from '../../types';
11
5
 
@@ -16,37 +10,6 @@ interface Props {
16
10
  const { locale = 'es' } = Astro.props;
17
11
  const content = await nauticalConverter.i18n[locale]?.();
18
12
  if (!content) return null;
19
-
20
- const { seo } = content;
21
13
  ---
22
14
 
23
- <SEOArticle>
24
- {seo.map((section: any) => {
25
- switch (section.type) {
26
- case 'title':
27
- return <SEOTitle title={section.text} level={section.level || 2} />;
28
- case 'paragraph':
29
- return <p set:html={section.html} />;
30
- case 'tip':
31
- return <SEOTip title={section.title}><Fragment set:html={section.html} /></SEOTip>;
32
- case 'table':
33
- return (
34
- <SEOTable headers={section.headers}>
35
- {section.rows.map((row: string[]) => (
36
- <tr>{row.map((cell: string) => <td set:html={cell} />)}</tr>
37
- ))}
38
- </SEOTable>
39
- );
40
- case 'glossary':
41
- return <SEOGlossary items={section.items} />;
42
- case 'list':
43
- return (
44
- <ul>
45
- {section.items.map((item: string) => <li set:html={item} />)}
46
- </ul>
47
- );
48
- default:
49
- return null;
50
- }
51
- })}
52
- </SEOArticle>
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -11,4 +11,4 @@ const { locale = 'es' } = Astro.props;
11
11
  const content = await sailArea.i18n[locale]?.();
12
12
  ---
13
13
 
14
- {content && <SharedBibliography links={content.bibliography} title={content.ui.bibliographyTitle} />}
14
+ {content && <SharedBibliography links={content.bibliography} />}
@@ -0,0 +1,16 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'Society of Naval Architects and Marine Engineers - SNAME',
6
+ url: 'https://www.sname.org/',
7
+ },
8
+ {
9
+ name: 'ORC - Offshore Racing Congress',
10
+ url: 'https://orc.org/',
11
+ },
12
+ {
13
+ name: 'Elvstrom Sailmakers - Sail Manual',
14
+ url: 'https://www.elvstromsails.com/',
15
+ },
16
+ ];
@@ -21,8 +21,6 @@ export interface SailAreaUI {
21
21
  performanceTypeLabel: string;
22
22
  racerLabel: string;
23
23
  exportPdfLabel: string;
24
- faqTitle: string;
25
- bibliographyTitle: string;
26
24
  }
27
25
 
28
26
  export type SailAreaLocaleContent = ToolLocaleContent<SailAreaUI>;
@@ -51,3 +49,5 @@ export const sailArea: NauticalToolEntry<SailAreaUI> = {
51
49
  zh: () => import('./i18n/zh').then((m) => m.content),
52
50
  },
53
51
  };
52
+
53
+ export { bibliography } from './bibliography';
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { SailAreaUI, SailAreaLocaleContent } from '../index';
3
4
 
@@ -26,8 +27,6 @@ const ui: SailAreaUI = {
26
27
  performanceTypeLabel: 'Leistungstyp',
27
28
  racerLabel: 'Regattayacht',
28
29
  exportPdfLabel: 'TECHNISCHEN BERICHT ERSTELLEN',
29
- faqTitle: 'Häufig gestellte Fragen',
30
- bibliographyTitle: 'Bibliografie',
31
30
  };
32
31
 
33
32
  const faq: SailAreaLocaleContent['faq'] = [
@@ -76,21 +75,6 @@ const howTo: SailAreaLocaleContent['howTo'] = [
76
75
  },
77
76
  ];
78
77
 
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
78
  const seo: SailAreaLocaleContent['seo'] = [
95
79
  {
96
80
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { SailAreaUI, SailAreaLocaleContent } from '../index';
3
4
 
@@ -26,8 +27,6 @@ const ui: SailAreaUI = {
26
27
  performanceTypeLabel: 'Performance',
27
28
  racerLabel: 'Racer',
28
29
  exportPdfLabel: 'GENERATE TECHNICAL REPORT',
29
- faqTitle: 'Frequently Asked Questions',
30
- bibliographyTitle: 'Bibliography',
31
30
  };
32
31
 
33
32
  const faq: SailAreaLocaleContent['faq'] = [
@@ -76,21 +75,6 @@ const howTo: SailAreaLocaleContent['howTo'] = [
76
75
  },
77
76
  ];
78
77
 
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
78
  const seo: SailAreaLocaleContent['seo'] = [
95
79
  {
96
80
  type: 'title',