@jjlmoya/utils-tools 1.2.0 → 1.3.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 (184) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +172 -0
  3. package/src/category/i18n/id.ts +172 -0
  4. package/src/category/i18n/it.ts +172 -0
  5. package/src/category/i18n/ja.ts +172 -0
  6. package/src/category/i18n/ko.ts +172 -0
  7. package/src/category/i18n/nl.ts +172 -0
  8. package/src/category/i18n/pl.ts +172 -0
  9. package/src/category/i18n/pt.ts +172 -0
  10. package/src/category/i18n/ru.ts +172 -0
  11. package/src/category/i18n/sv.ts +172 -0
  12. package/src/category/i18n/tr.ts +172 -0
  13. package/src/category/i18n/zh.ts +172 -0
  14. package/src/category/index.ts +13 -1
  15. package/src/tests/i18n_coverage.test.ts +36 -0
  16. package/src/tests/locale_completeness.test.ts +1 -1
  17. package/src/tests/slug_uniqueness.test.ts +81 -0
  18. package/src/tests/title_quality.test.ts +0 -1
  19. package/src/tool/date-diff-calculator/i18n/de.ts +132 -0
  20. package/src/tool/date-diff-calculator/i18n/fr.ts +1 -1
  21. package/src/tool/date-diff-calculator/i18n/id.ts +132 -0
  22. package/src/tool/date-diff-calculator/i18n/it.ts +132 -0
  23. package/src/tool/date-diff-calculator/i18n/ja.ts +132 -0
  24. package/src/tool/date-diff-calculator/i18n/ko.ts +132 -0
  25. package/src/tool/date-diff-calculator/i18n/nl.ts +132 -0
  26. package/src/tool/date-diff-calculator/i18n/pl.ts +132 -0
  27. package/src/tool/date-diff-calculator/i18n/pt.ts +132 -0
  28. package/src/tool/date-diff-calculator/i18n/ru.ts +132 -0
  29. package/src/tool/date-diff-calculator/i18n/sv.ts +132 -0
  30. package/src/tool/date-diff-calculator/i18n/tr.ts +132 -0
  31. package/src/tool/date-diff-calculator/i18n/zh.ts +132 -0
  32. package/src/tool/date-diff-calculator/index.ts +12 -0
  33. package/src/tool/drive-direct-link/i18n/de.ts +118 -0
  34. package/src/tool/drive-direct-link/i18n/id.ts +118 -0
  35. package/src/tool/drive-direct-link/i18n/it.ts +118 -0
  36. package/src/tool/drive-direct-link/i18n/ja.ts +118 -0
  37. package/src/tool/drive-direct-link/i18n/ko.ts +118 -0
  38. package/src/tool/drive-direct-link/i18n/nl.ts +118 -0
  39. package/src/tool/drive-direct-link/i18n/pl.ts +118 -0
  40. package/src/tool/drive-direct-link/i18n/pt.ts +118 -0
  41. package/src/tool/drive-direct-link/i18n/ru.ts +118 -0
  42. package/src/tool/drive-direct-link/i18n/sv.ts +118 -0
  43. package/src/tool/drive-direct-link/i18n/tr.ts +118 -0
  44. package/src/tool/drive-direct-link/i18n/zh.ts +118 -0
  45. package/src/tool/drive-direct-link/index.ts +12 -0
  46. package/src/tool/email-list-cleaner/i18n/de.ts +140 -0
  47. package/src/tool/email-list-cleaner/i18n/es.ts +1 -1
  48. package/src/tool/email-list-cleaner/i18n/fr.ts +1 -1
  49. package/src/tool/email-list-cleaner/i18n/id.ts +140 -0
  50. package/src/tool/email-list-cleaner/i18n/it.ts +140 -0
  51. package/src/tool/email-list-cleaner/i18n/ja.ts +140 -0
  52. package/src/tool/email-list-cleaner/i18n/ko.ts +140 -0
  53. package/src/tool/email-list-cleaner/i18n/nl.ts +140 -0
  54. package/src/tool/email-list-cleaner/i18n/pl.ts +140 -0
  55. package/src/tool/email-list-cleaner/i18n/pt.ts +140 -0
  56. package/src/tool/email-list-cleaner/i18n/ru.ts +140 -0
  57. package/src/tool/email-list-cleaner/i18n/sv.ts +140 -0
  58. package/src/tool/email-list-cleaner/i18n/tr.ts +140 -0
  59. package/src/tool/email-list-cleaner/i18n/zh.ts +140 -0
  60. package/src/tool/email-list-cleaner/index.ts +12 -0
  61. package/src/tool/env-badge-spain/i18n/de.ts +153 -0
  62. package/src/tool/env-badge-spain/i18n/es.ts +1 -1
  63. package/src/tool/env-badge-spain/i18n/fr.ts +1 -1
  64. package/src/tool/env-badge-spain/i18n/id.ts +153 -0
  65. package/src/tool/env-badge-spain/i18n/it.ts +153 -0
  66. package/src/tool/env-badge-spain/i18n/ja.ts +153 -0
  67. package/src/tool/env-badge-spain/i18n/ko.ts +153 -0
  68. package/src/tool/env-badge-spain/i18n/nl.ts +153 -0
  69. package/src/tool/env-badge-spain/i18n/pl.ts +153 -0
  70. package/src/tool/env-badge-spain/i18n/pt.ts +153 -0
  71. package/src/tool/env-badge-spain/i18n/ru.ts +153 -0
  72. package/src/tool/env-badge-spain/i18n/sv.ts +153 -0
  73. package/src/tool/env-badge-spain/i18n/tr.ts +153 -0
  74. package/src/tool/env-badge-spain/i18n/zh.ts +153 -0
  75. package/src/tool/env-badge-spain/index.ts +12 -0
  76. package/src/tool/morse-beacon/i18n/de.ts +157 -0
  77. package/src/tool/morse-beacon/i18n/es.ts +1 -1
  78. package/src/tool/morse-beacon/i18n/id.ts +157 -0
  79. package/src/tool/morse-beacon/i18n/it.ts +157 -0
  80. package/src/tool/morse-beacon/i18n/ja.ts +157 -0
  81. package/src/tool/morse-beacon/i18n/ko.ts +157 -0
  82. package/src/tool/morse-beacon/i18n/nl.ts +157 -0
  83. package/src/tool/morse-beacon/i18n/pl.ts +157 -0
  84. package/src/tool/morse-beacon/i18n/pt.ts +157 -0
  85. package/src/tool/morse-beacon/i18n/ru.ts +157 -0
  86. package/src/tool/morse-beacon/i18n/sv.ts +157 -0
  87. package/src/tool/morse-beacon/i18n/tr.ts +157 -0
  88. package/src/tool/morse-beacon/i18n/zh.ts +157 -0
  89. package/src/tool/morse-beacon/index.ts +13 -1
  90. package/src/tool/password-generator/i18n/de.ts +166 -0
  91. package/src/tool/password-generator/i18n/fr.ts +1 -1
  92. package/src/tool/password-generator/i18n/id.ts +166 -0
  93. package/src/tool/password-generator/i18n/it.ts +166 -0
  94. package/src/tool/password-generator/i18n/ja.ts +166 -0
  95. package/src/tool/password-generator/i18n/ko.ts +166 -0
  96. package/src/tool/password-generator/i18n/nl.ts +166 -0
  97. package/src/tool/password-generator/i18n/pl.ts +166 -0
  98. package/src/tool/password-generator/i18n/pt.ts +166 -0
  99. package/src/tool/password-generator/i18n/ru.ts +166 -0
  100. package/src/tool/password-generator/i18n/sv.ts +166 -0
  101. package/src/tool/password-generator/i18n/tr.ts +166 -0
  102. package/src/tool/password-generator/i18n/zh.ts +166 -0
  103. package/src/tool/password-generator/index.ts +13 -1
  104. package/src/tool/routes/i18n/de.ts +157 -0
  105. package/src/tool/routes/i18n/id.ts +157 -0
  106. package/src/tool/routes/i18n/it.ts +157 -0
  107. package/src/tool/routes/i18n/ja.ts +157 -0
  108. package/src/tool/routes/i18n/ko.ts +157 -0
  109. package/src/tool/routes/i18n/nl.ts +157 -0
  110. package/src/tool/routes/i18n/pl.ts +157 -0
  111. package/src/tool/routes/i18n/pt.ts +157 -0
  112. package/src/tool/routes/i18n/ru.ts +157 -0
  113. package/src/tool/routes/i18n/sv.ts +157 -0
  114. package/src/tool/routes/i18n/tr.ts +157 -0
  115. package/src/tool/routes/i18n/zh.ts +157 -0
  116. package/src/tool/routes/index.ts +13 -1
  117. package/src/tool/rule-of-three/i18n/de.ts +171 -0
  118. package/src/tool/rule-of-three/i18n/en.ts +1 -1
  119. package/src/tool/rule-of-three/i18n/id.ts +171 -0
  120. package/src/tool/rule-of-three/i18n/it.ts +171 -0
  121. package/src/tool/rule-of-three/i18n/ja.ts +171 -0
  122. package/src/tool/rule-of-three/i18n/ko.ts +171 -0
  123. package/src/tool/rule-of-three/i18n/nl.ts +171 -0
  124. package/src/tool/rule-of-three/i18n/pl.ts +171 -0
  125. package/src/tool/rule-of-three/i18n/pt.ts +171 -0
  126. package/src/tool/rule-of-three/i18n/ru.ts +171 -0
  127. package/src/tool/rule-of-three/i18n/sv.ts +171 -0
  128. package/src/tool/rule-of-three/i18n/tr.ts +171 -0
  129. package/src/tool/rule-of-three/i18n/zh.ts +171 -0
  130. package/src/tool/rule-of-three/index.ts +13 -1
  131. package/src/tool/seo-content-optimizer/i18n/de.ts +136 -0
  132. package/src/tool/seo-content-optimizer/i18n/id.ts +136 -0
  133. package/src/tool/seo-content-optimizer/i18n/it.ts +136 -0
  134. package/src/tool/seo-content-optimizer/i18n/ja.ts +136 -0
  135. package/src/tool/seo-content-optimizer/i18n/ko.ts +136 -0
  136. package/src/tool/seo-content-optimizer/i18n/nl.ts +136 -0
  137. package/src/tool/seo-content-optimizer/i18n/pl.ts +136 -0
  138. package/src/tool/seo-content-optimizer/i18n/pt.ts +136 -0
  139. package/src/tool/seo-content-optimizer/i18n/ru.ts +136 -0
  140. package/src/tool/seo-content-optimizer/i18n/sv.ts +136 -0
  141. package/src/tool/seo-content-optimizer/i18n/tr.ts +136 -0
  142. package/src/tool/seo-content-optimizer/i18n/zh.ts +136 -0
  143. package/src/tool/seo-content-optimizer/index.ts +12 -0
  144. package/src/tool/speed-reader/i18n/de.ts +152 -0
  145. package/src/tool/speed-reader/i18n/es.ts +1 -1
  146. package/src/tool/speed-reader/i18n/id.ts +152 -0
  147. package/src/tool/speed-reader/i18n/it.ts +152 -0
  148. package/src/tool/speed-reader/i18n/ja.ts +152 -0
  149. package/src/tool/speed-reader/i18n/ko.ts +152 -0
  150. package/src/tool/speed-reader/i18n/nl.ts +152 -0
  151. package/src/tool/speed-reader/i18n/pl.ts +152 -0
  152. package/src/tool/speed-reader/i18n/pt.ts +152 -0
  153. package/src/tool/speed-reader/i18n/ru.ts +152 -0
  154. package/src/tool/speed-reader/i18n/sv.ts +152 -0
  155. package/src/tool/speed-reader/i18n/tr.ts +152 -0
  156. package/src/tool/speed-reader/i18n/zh.ts +152 -0
  157. package/src/tool/speed-reader/index.ts +12 -0
  158. package/src/tool/text-pixel-calculator/i18n/de.ts +133 -0
  159. package/src/tool/text-pixel-calculator/i18n/id.ts +133 -0
  160. package/src/tool/text-pixel-calculator/i18n/it.ts +133 -0
  161. package/src/tool/text-pixel-calculator/i18n/ja.ts +133 -0
  162. package/src/tool/text-pixel-calculator/i18n/ko.ts +133 -0
  163. package/src/tool/text-pixel-calculator/i18n/nl.ts +133 -0
  164. package/src/tool/text-pixel-calculator/i18n/pl.ts +133 -0
  165. package/src/tool/text-pixel-calculator/i18n/pt.ts +133 -0
  166. package/src/tool/text-pixel-calculator/i18n/ru.ts +133 -0
  167. package/src/tool/text-pixel-calculator/i18n/sv.ts +133 -0
  168. package/src/tool/text-pixel-calculator/i18n/tr.ts +133 -0
  169. package/src/tool/text-pixel-calculator/i18n/zh.ts +133 -0
  170. package/src/tool/text-pixel-calculator/index.ts +12 -0
  171. package/src/tool/whatsapp-link/i18n/de.ts +128 -0
  172. package/src/tool/whatsapp-link/i18n/es.ts +1 -1
  173. package/src/tool/whatsapp-link/i18n/id.ts +128 -0
  174. package/src/tool/whatsapp-link/i18n/it.ts +128 -0
  175. package/src/tool/whatsapp-link/i18n/ja.ts +128 -0
  176. package/src/tool/whatsapp-link/i18n/ko.ts +128 -0
  177. package/src/tool/whatsapp-link/i18n/nl.ts +128 -0
  178. package/src/tool/whatsapp-link/i18n/pl.ts +128 -0
  179. package/src/tool/whatsapp-link/i18n/pt.ts +128 -0
  180. package/src/tool/whatsapp-link/i18n/ru.ts +128 -0
  181. package/src/tool/whatsapp-link/i18n/sv.ts +128 -0
  182. package/src/tool/whatsapp-link/i18n/tr.ts +128 -0
  183. package/src/tool/whatsapp-link/i18n/zh.ts +128 -0
  184. package/src/tool/whatsapp-link/index.ts +12 -0
@@ -0,0 +1,157 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
+ import type { MorseBeaconUI } from '../ui';
4
+
5
+ const faqData = [
6
+ {
7
+ question: 'Jaki jest sygnał ratunkowy SOS w kodzie Morse\'a?',
8
+ answer: "Sygnał to '... --- ...' (trzy kropki, trzy kreski, trzy kropki). Jest on nadawany w sposób ciągły, bez odstępów między literami, aby wskazać na bezpośrednie zagrożenie.",
9
+ },
10
+ {
11
+ question: 'Dlaczego latarka nie działa w mojej przeglądarce?',
12
+ answer: 'Aktywacja latarki wymaga od przeglądarki zezwolenia na dostęp do aparatu. Niektóre przeglądarki mobilne lub starsze wersje stacjonarne nie obsługują tego interfejsu API ze względów prywatności.',
13
+ },
14
+ {
15
+ question: 'Czy sygnał SOS na ekranie jest widoczny?',
16
+ answer: 'Tak, w warunkach całkowitej ciemności maksymalna jasność białego ekranu migającego w kodzie Morse\'a może być widoczna z odległości kilkuset metrów, co czyni go użyteczną alternatywą w przypadku awarii latarki.',
17
+ },
18
+ {
19
+ question: 'Co to jest międzynarodowy kod Morse\'a?',
20
+ answer: 'Jest to system komunikacji wykorzystujący sekwencje krótkich (kropki) i długich (kreski) sygnałów do reprezentowania liter i cyfr, ustandaryzowany przez ITU dla komunikacji radiowej i sygnałów optycznych.',
21
+ },
22
+ ];
23
+
24
+ const howToData = [
25
+ {
26
+ name: 'Napisz wiadomość',
27
+ text: "Wprowadź tekst, który chcesz przesłać, lub użyj wstępnie skonfigurowanego przycisku „SOS” w sytuacjach awaryjnych.",
28
+ },
29
+ {
30
+ name: 'Skonfiguruj prędkość',
31
+ text: 'Dostosuj WPM (słowa na minutę), aby przyspieszyć lub spowolnić sygnał w zależności od widoczności.',
32
+ },
33
+ {
34
+ name: 'Wybierz źródło światła',
35
+ text: 'Włącz miganie na pełnym ekranie lub zezwól na dostęp do latarki aparatu, aby uzyskać silniejszy sygnał.',
36
+ },
37
+ {
38
+ name: 'Rozpocznij transmisję',
39
+ text: 'Naciśnij Nadawaj, aby system automatycznie przekonwertował tekst na wizualne impulsy zgodnie ze standardem Morse\'a.',
40
+ },
41
+ ];
42
+
43
+ const faqSchema: WithContext<FAQPage> = {
44
+ '@context': 'https://schema.org',
45
+ '@type': 'FAQPage',
46
+ mainEntity: faqData.map((item) => ({
47
+ '@type': 'Question',
48
+ name: item.question,
49
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
50
+ })),
51
+ };
52
+
53
+ const howToSchema: WithContext<HowTo> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'HowTo',
56
+ name: 'Jak używać nadajnika Morse\'a do przesyłania wiadomości',
57
+ step: howToData.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
58
+ };
59
+
60
+ const appSchema: WithContext<SoftwareApplication> = {
61
+ '@context': 'https://schema.org',
62
+ '@type': 'SoftwareApplication',
63
+ name: 'Nadajnik Morse\'a: Taktyczny nadajnik SOS',
64
+ applicationCategory: 'UtilitiesApplication',
65
+ operatingSystem: 'Web',
66
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
67
+ description: 'Zmień swoje urządzenie w stację nadawczą Morse\'a. Używaj lampy błyskowej i ekranu jako awaryjnych sygnałów świetlnych i komunikacji taktycznej.',
68
+ };
69
+
70
+ const ui: MorseBeaconUI = {
71
+ labelMessage: 'Wiadomość do nadania',
72
+ placeholder: 'Wpisz tutaj swoją wiadomość (SOS, CZEŚĆ, POMOC)...',
73
+ btnTransmit: 'Nadawaj',
74
+ btnSosLoop: 'Pętla SOS',
75
+ btnStop: 'Stop',
76
+ labelTorch: 'Lampa/Latarka',
77
+ statusStandby: 'GOTOWOŚĆ',
78
+ statusTransmitting: 'NADAWANIE',
79
+ statusStopping: 'ZATRZYMYWANIE...',
80
+ statusWaiting: 'OCZEKIWANIE',
81
+ statusReady: 'SPRZĘT GOTOWY',
82
+ statusNoTorch: 'BRAK LATARKI',
83
+ statusNoPermission: 'BRAK ZGODY',
84
+ statusNotSupported: 'NIEBSŁUGIWANE',
85
+ statusReqHttps: 'WYMAGANE HTTPS',
86
+ statusSending: 'WYSYŁANIE:',
87
+ };
88
+
89
+ export const content: ToolLocaleContent<MorseBeaconUI> = {
90
+ slug: 'znak-morse-a',
91
+ title: 'Nadajnik Morse\'a: Taktyczny nadajnik SOS',
92
+ description: 'Zmień swoje urządzenie w stację nadawczą Morse\'a. Używaj lampy błyskowej i ekranu jako awaryjnych sygnałów świetlnych i komunikacji taktycznej.',
93
+ ui,
94
+ faqTitle: 'Często zadawane pytania',
95
+ faq: faqData,
96
+ howTo: howToData,
97
+ bibliographyTitle: 'Źródła',
98
+ bibliography: [
99
+ { name: 'ITU-R M.1677-1 — Międzynarodowy kod Morse\'a', url: 'https://www.itu.int/dms_pubrec/itu-r/rec/m/R-REC-M.1677-1-200910-I!!PDF-E.pdf' },
100
+ { name: 'W3C MediaCapture Image — Torch', url: 'https://w3c.github.io/mediacapture-image/#torch' },
101
+ { name: 'Kod Morse\'a — Wikipedia', url: 'https://pl.wikipedia.org/wiki/Kod_Morse%E2%80%99a' },
102
+ ],
103
+ schemas: [faqSchema, howToSchema, appSchema],
104
+ seo: [
105
+ {
106
+ type: 'title',
107
+ text: 'Język światła',
108
+ level: 2,
109
+ },
110
+ {
111
+ type: 'paragraph',
112
+ html: 'To narzędzie zamienia Twoje urządzenie w optyczny nadajnik sygnałowy, zdolny do przesyłania wiadomości widocznych z odległości wielu kilometrów. Korzystając z międzynarodowego standardu kodu Morse\'a, umożliwia cichą lub alarmową komunikację za pomocą impulsów świetlnych (latarka i ekran).',
113
+ },
114
+ {
115
+ type: 'comparative',
116
+ columns: 2,
117
+ items: [
118
+ {
119
+ icon: 'mdi:history',
120
+ title: 'Uniwersalny standard',
121
+ description: 'Opracowany w 1830 roku przez Samuela Morse\'a, ten binarny system kropek i kresek zrewolucjonizował telekomunikację. Jego prostota czyni go niezwykle solidnym: może być przesyłany za pomocą dźwięku, radia, elektryczności lub światła i pozostaje czytelny nawet przy silnych zakłóceniach.',
122
+ points: [],
123
+ },
124
+ {
125
+ icon: 'mdi:flash-alert',
126
+ title: 'Tryb awaryjny SOS',
127
+ description: "Przycisk „Pętla SOS” w sposób ciągły nadaje sekwencję ··· --- ···. Sygnał ten jest powszechnie rozpoznawany jako wezwanie o pomoc i dzięki wysokiemu kontrastowi latarki LED jest widoczny z dużej odległości nawet w świetle dziennym w określonych warunkach.",
128
+ points: [],
129
+ },
130
+ ],
131
+ },
132
+ {
133
+ type: 'title',
134
+ text: 'Standard ITU-R M.1677-1',
135
+ level: 2,
136
+ },
137
+ {
138
+ type: 'paragraph',
139
+ html: 'To narzędzie ściśle przestrzega <strong>czasów regulacyjnych</strong> międzynarodowego kodu Morse\'a, zgodnie z definicją Międzynarodowego Związku Telekomunikacyjnego.',
140
+ },
141
+ {
142
+ type: 'list',
143
+ items: [
144
+ '1 kropka = 1 jednostka czasu',
145
+ '1 kreska = 3 jednostki czasu',
146
+ 'Odstęp między elementami = 1 jednostka',
147
+ 'Odstęp między literami = 3 jednostki',
148
+ 'Odstęp między słowami = 7 jednostek',
149
+ ],
150
+ },
151
+ {
152
+ type: 'tip',
153
+ title: 'Standardowa prędkość',
154
+ html: 'Domyślna prędkość to <strong>15 WPM</strong> (słów na minutę), co odpowiada profesjonalnemu tempu transmisji. Przy 15 WPM, 1 jednostka = 80 ms.',
155
+ },
156
+ ],
157
+ };
@@ -0,0 +1,157 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
+ import type { MorseBeaconUI } from '../ui';
4
+
5
+ const faqData = [
6
+ {
7
+ question: 'Qual é o sinal de socorro SOS em código Morse?',
8
+ answer: "O sinal é '... --- ...' (três pontos, três traços, três pontos). É transmitido continuamente sem espaços entre as letras para indicar uma emergência imediata.",
9
+ },
10
+ {
11
+ question: 'Por que é que a lanterna não está a funcionar no meu navegador?',
12
+ answer: 'A ativação da lanterna requer que o navegador tenha permissões de câmara. Alguns navegadores móveis ou versões de desktop mais antigas não suportam esta API por razões de privacidade.',
13
+ },
14
+ {
15
+ question: 'O sinal SOS pelo ecrã é visível?',
16
+ answer: 'Sim, em condições de escuridão total, o brilho máximo de um ecrã branco a piscar em Morse pode ser visto a várias centenas de metros de distância, tornando-se uma alternativa útil se a lanterna falhar.',
17
+ },
18
+ {
19
+ question: 'O que é o código Morse internacional?',
20
+ answer: 'É um sistema de comunicação que utiliza sequências de sinais curtos (pontos) e longos (traços) para representar letras e números, padronizado pela ITU para comunicações de rádio e sinais óticos.',
21
+ },
22
+ ];
23
+
24
+ const howToData = [
25
+ {
26
+ name: 'Escreva a mensagem',
27
+ text: "Introduza o texto que pretende transmitir ou utilize o botão 'SOS' pré-configurado para emergências.",
28
+ },
29
+ {
30
+ name: 'Configure a velocidade',
31
+ text: 'Ajuste as WPM (palavras por minuto) para tornar o sinal mais rápido ou mais lento, dependendo da visibilidade.',
32
+ },
33
+ {
34
+ name: 'Escolha a fonte de luz',
35
+ text: 'Ative o piscar em ecrã total ou permita o acesso à lanterna da câmara para um sinal mais forte.',
36
+ },
37
+ {
38
+ name: 'Inicie a transmissão',
39
+ text: 'Prima Transmitir para que o sistema converta o texto em impulsos visuais automáticos seguindo o padrão Morse.',
40
+ },
41
+ ];
42
+
43
+ const faqSchema: WithContext<FAQPage> = {
44
+ '@context': 'https://schema.org',
45
+ '@type': 'FAQPage',
46
+ mainEntity: faqData.map((item) => ({
47
+ '@type': 'Question',
48
+ name: item.question,
49
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
50
+ })),
51
+ };
52
+
53
+ const howToSchema: WithContext<HowTo> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'HowTo',
56
+ name: 'Como utilizar o farol Morse para transmitir mensagens',
57
+ step: howToData.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
58
+ };
59
+
60
+ const appSchema: WithContext<SoftwareApplication> = {
61
+ '@context': 'https://schema.org',
62
+ '@type': 'SoftwareApplication',
63
+ name: 'Farol Morse: Transmissor Tático SOS',
64
+ applicationCategory: 'UtilitiesApplication',
65
+ operatingSystem: 'Web',
66
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
67
+ description: 'Transforme o seu dispositivo numa estação de transmissão Morse. Utilize o flash e o ecrã como sinais luminosos de emergência e comunicação tática.',
68
+ };
69
+
70
+ const ui: MorseBeaconUI = {
71
+ labelMessage: 'Mensagem a Transmitir',
72
+ placeholder: 'Escreva aqui a sua mensagem (SOS, OLÁ, AJUDA)...',
73
+ btnTransmit: 'Transmitir',
74
+ btnSosLoop: 'Loop SOS',
75
+ btnStop: 'Parar',
76
+ labelTorch: 'Flash/Lanterna',
77
+ statusStandby: 'STANDBY',
78
+ statusTransmitting: 'A TRANSMITIR',
79
+ statusStopping: 'A PARAR...',
80
+ statusWaiting: 'A AGUARDAR',
81
+ statusReady: 'HARDWARE PRONTO',
82
+ statusNoTorch: 'SEM LANTERNA',
83
+ statusNoPermission: 'SEM PERMISSÃO',
84
+ statusNotSupported: 'NÃO SUPORTADO',
85
+ statusReqHttps: 'REQ. HTTPS',
86
+ statusSending: 'A ENVIAR:',
87
+ };
88
+
89
+ export const content: ToolLocaleContent<MorseBeaconUI> = {
90
+ slug: 'farol-morse',
91
+ title: 'Farol Morse: Transmissor Tático SOS',
92
+ description: 'Transforme o seu dispositivo numa estação de transmissão Morse. Utilize o flash e o ecrã como sinais luminosos de emergência e comunicação tática.',
93
+ ui,
94
+ faqTitle: 'Perguntas Frequentes',
95
+ faq: faqData,
96
+ howTo: howToData,
97
+ bibliographyTitle: 'Referências',
98
+ bibliography: [
99
+ { name: 'ITU-R M.1677-1 — Código Morse Internacional', url: 'https://www.itu.int/dms_pubrec/itu-r/rec/m/R-REC-M.1677-1-200910-I!!PDF-E.pdf' },
100
+ { name: 'W3C MediaCapture Image — Torch', url: 'https://w3c.github.io/mediacapture-image/#torch' },
101
+ { name: 'Código Morse — Wikipédia', url: 'https://pt.wikipedia.org/wiki/C%C3%B3digo_Morse' },
102
+ ],
103
+ schemas: [faqSchema, howToSchema, appSchema],
104
+ seo: [
105
+ {
106
+ type: 'title',
107
+ text: 'A Linguagem da Luz',
108
+ level: 2,
109
+ },
110
+ {
111
+ type: 'paragraph',
112
+ html: 'Esta ferramenta transforma o seu dispositivo num farol de sinalização ótica capaz de transmitir mensagens visíveis a quilómetros de distância. Utilizando o padrão internacional do Código Morse, permite a comunicação silenciosa ou de emergência através de impulsos luminosos (lanterna e ecrã).',
113
+ },
114
+ {
115
+ type: 'comparative',
116
+ columns: 2,
117
+ items: [
118
+ {
119
+ icon: 'mdi:history',
120
+ title: 'Um Padrão Universal',
121
+ description: 'Desenvolvido em 1830 por Samuel Morse, este sistema binário de pontos e traços revolucionou as telecomunicações. A sua simplicidade torna-o extremamente robusto: pode ser transmitido por som, rádio, eletricidade ou luz, e permanece legível mesmo sob interferências graves.',
122
+ points: [],
123
+ },
124
+ {
125
+ icon: 'mdi:flash-alert',
126
+ title: 'Modo de Emergência SOS',
127
+ description: "O botão 'Loop SOS' transmite continuamente a sequência ··· --- ···. Este sinal é universalmente reconhecido como um pedido de socorro e, graças ao elevado contraste da lanterna LED, é visível de uma grande distância, mesmo à luz do dia em certas condições.",
128
+ points: [],
129
+ },
130
+ ],
131
+ },
132
+ {
133
+ type: 'title',
134
+ text: 'Padrão ITU-R M.1677-1',
135
+ level: 2,
136
+ },
137
+ {
138
+ type: 'paragraph',
139
+ html: 'Esta ferramenta respeita rigorosamente os <strong>tempos regulamentares</strong> do código Morse internacional, conforme definido pela União Internacional de Telecomunicações.',
140
+ },
141
+ {
142
+ type: 'list',
143
+ items: [
144
+ '1 ponto = 1 unidade de tempo',
145
+ '1 traço = 3 unidades de tempo',
146
+ 'Espaço entre elementos = 1 unidade',
147
+ 'Espaço entre letras = 3 unidades',
148
+ 'Espaço entre palavras = 7 unidades',
149
+ ],
150
+ },
151
+ {
152
+ type: 'tip',
153
+ title: 'Velocidade padrão',
154
+ html: 'A velocidade predefinida é de <strong>15 WPM</strong> (palavras por minuto), o que corresponde a um ritmo de transmissão profissional. A 15 WPM, 1 unidade = 80 ms.',
155
+ },
156
+ ],
157
+ };
@@ -0,0 +1,157 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
+ import type { MorseBeaconUI } from '../ui';
4
+
5
+ const faqData = [
6
+ {
7
+ question: 'Каков сигнал бедствия SOS в азбуке Морзе?',
8
+ answer: "Сигнал представляет собой '... --- ...' (три точки, три тире, три точки). Он передается непрерывно без пробелов между буквами для обозначения немедленной чрезвычайной ситуации.",
9
+ },
10
+ {
11
+ question: 'Почему фонарик не работает в моем браузере?',
12
+ answer: 'Для активации фонарика браузеру требуются разрешения на использование камеры. Некоторые мобильные браузеры или старые версии для ПК не поддерживают этот API по соображениям конфиденциальности.',
13
+ },
14
+ {
15
+ question: 'Виден ли сигнал SOS на экране?',
16
+ answer: 'Да, в условиях полной темноты максимальная яркость белого экрана, мигающего азбукой Морзе, видна с расстояния нескольких сотен метров, что делает его полезной альтернативой в случае отказа фонарика.',
17
+ },
18
+ {
19
+ question: 'Что такое международная азбука Морзе?',
20
+ answer: 'Это система связи, использующая последовательности коротких (точки) и длинных (тире) сигналов для представления букв и цифр, стандартизированная МСЭ для радиосвязи и оптических сигналов.',
21
+ },
22
+ ];
23
+
24
+ const howToData = [
25
+ {
26
+ name: 'Напишите сообщение',
27
+ text: "Введите текст, который вы хотите передать, или используйте предварительно настроенную кнопку 'SOS' для чрезвычайных ситуаций.",
28
+ },
29
+ {
30
+ name: 'Настройте скорость',
31
+ text: 'Отрегулируйте WPM (слов в минуту), чтобы сделать сигнал быстрее или медленнее в зависимости от видимости.',
32
+ },
33
+ {
34
+ name: 'Выберите источник света',
35
+ text: 'Включите мигание на весь экран или разрешите доступ к фонарику камеры для более сильного сигнала.',
36
+ },
37
+ {
38
+ name: 'Начните передачу',
39
+ text: 'Нажмите «Передать», чтобы система преобразовала текст в автоматические визуальные импульсы согласно стандарту Морзе.',
40
+ },
41
+ ];
42
+
43
+ const faqSchema: WithContext<FAQPage> = {
44
+ '@context': 'https://schema.org',
45
+ '@type': 'FAQPage',
46
+ mainEntity: faqData.map((item) => ({
47
+ '@type': 'Question',
48
+ name: item.question,
49
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
50
+ })),
51
+ };
52
+
53
+ const howToSchema: WithContext<HowTo> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'HowTo',
56
+ name: 'Как использовать маяк Морзе для передачи сообщений',
57
+ step: howToData.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
58
+ };
59
+
60
+ const appSchema: WithContext<SoftwareApplication> = {
61
+ '@context': 'https://schema.org',
62
+ '@type': 'SoftwareApplication',
63
+ name: 'Маяк Морзе: Тактический SOS-передатчик',
64
+ applicationCategory: 'UtilitiesApplication',
65
+ operatingSystem: 'Web',
66
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
67
+ description: 'Превратите свое устройство в станцию передачи сообщений азбукой Морзе. Используйте вспышку и экран как аварийные световые сигналы и средства тактической связи.',
68
+ };
69
+
70
+ const ui: MorseBeaconUI = {
71
+ labelMessage: 'Сообщение для передачи',
72
+ placeholder: 'Введите ваше сообщение здесь (SOS, ПРИВЕТ, ПОМОЩЬ)...',
73
+ btnTransmit: 'Передать',
74
+ btnSosLoop: 'Цикл SOS',
75
+ btnStop: 'Стоп',
76
+ labelTorch: 'Вспышка/Фонарик',
77
+ statusStandby: 'ОЖИДАНИЕ',
78
+ statusTransmitting: 'ПЕРЕДАЧА',
79
+ statusStopping: 'ОСТАНОВКА...',
80
+ statusWaiting: 'ЖДИТЕ',
81
+ statusReady: 'ОБОРУДОВАНИЕ ГОТОВО',
82
+ statusNoTorch: 'НЕТ ФОНАРИКА',
83
+ statusNoPermission: 'НЕТ РАЗРЕШЕНИЯ',
84
+ statusNotSupported: 'НЕ ПОДДЕРЖИВАЕТСЯ',
85
+ statusReqHttps: 'ТРЕБУЕТСЯ HTTPS',
86
+ statusSending: 'ОТПРАВКА:',
87
+ };
88
+
89
+ export const content: ToolLocaleContent<MorseBeaconUI> = {
90
+ slug: 'morskoy-mayak-morze',
91
+ title: 'Маяк Морзе: Тактический SOS передатчик',
92
+ description: 'Превратите свое устройство в станцию передачи сообщений азбукой Морзе. Используйте вспышку и экран как аварийные световые сигналы и средства тактической связи.',
93
+ ui,
94
+ faqTitle: 'Часто задаваемые вопросы',
95
+ faq: faqData,
96
+ howTo: howToData,
97
+ bibliographyTitle: 'Источники',
98
+ bibliography: [
99
+ { name: 'ITU-R M.1677-1 — Международная азбука Морзе', url: 'https://www.itu.int/dms_pubrec/itu-r/rec/m/R-REC-M.1677-1-200910-I!!PDF-E.pdf' },
100
+ { name: 'W3C MediaCapture Image — Torch', url: 'https://w3c.github.io/mediacapture-image/#torch' },
101
+ { name: 'Азбука Морзе — Википедия', url: 'https://ru.wikipedia.org/wiki/%D0%90%D0%B7%D0%B1%D1%83%D0%BA%D0%B0_%D0%9C%D0%BE%D1%80%D0%B7%D0%B5' },
102
+ ],
103
+ schemas: [faqSchema, howToSchema, appSchema],
104
+ seo: [
105
+ {
106
+ type: 'title',
107
+ text: 'Язык света',
108
+ level: 2,
109
+ },
110
+ {
111
+ type: 'paragraph',
112
+ html: 'Этот инструмент превращает ваше устройство в оптический сигнальный маяк, способный передавать сообщения, видимые за несколько километров. Используя международный стандарт азбуки Морзе, он позволяет осуществлять бесшумную или экстренную связь с помощью световых импульсов (фонарика и экрана).',
113
+ },
114
+ {
115
+ type: 'comparative',
116
+ columns: 2,
117
+ items: [
118
+ {
119
+ icon: 'mdi:history',
120
+ title: 'Универсальный стандарт',
121
+ description: 'Разработанная в 1830 году Сэмюэлом Морзе, эта бинарная система точек и тире произвела революцию в телекоммуникациях. Ее простота делает ее чрезвычайно устойчивой: она может передаваться с помощью звука, радио, электричества или света и остается читаемой даже при сильных помехах.',
122
+ points: [],
123
+ },
124
+ {
125
+ icon: 'mdi:flash-alert',
126
+ title: 'Аварийный режим SOS',
127
+ description: "Кнопка 'Цикл SOS' непрерывно передает последовательность ··· --- ···. Этот сигнал во всем мире признан призывом о помощи и, благодаря высокой контрастности светодиодного фонарика, виден с большого расстояния даже при дневном свете в определенных условиях.",
128
+ points: [],
129
+ },
130
+ ],
131
+ },
132
+ {
133
+ type: 'title',
134
+ text: 'Стандарт ITU-R M.1677-1',
135
+ level: 2,
136
+ },
137
+ {
138
+ type: 'paragraph',
139
+ html: 'Этот инструмент строго соблюдает <strong>нормативные интервалы</strong> международной азбуки Морзе, определенные Международным союзом электросвязи.',
140
+ },
141
+ {
142
+ type: 'list',
143
+ items: [
144
+ '1 точка = 1 единица времени',
145
+ '1 тире = 3 единицы времени',
146
+ 'Пауза между элементами = 1 единица',
147
+ 'Пауза между буквами = 3 единицы',
148
+ 'Пауза между словами = 7 единиц',
149
+ ],
150
+ },
151
+ {
152
+ type: 'tip',
153
+ title: 'Стандартная скорость',
154
+ html: 'Скорость по умолчанию составляет <strong>15 WPM</strong> (слов в минуту), что соответствует профессиональному темпу передачи. При 15 WPM 1 единица = 80 мс.',
155
+ },
156
+ ],
157
+ };
@@ -0,0 +1,157 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
+ import type { MorseBeaconUI } from '../ui';
4
+
5
+ const faqData = [
6
+ {
7
+ question: 'Vad är SOS-nödsignalen i morsekod?',
8
+ answer: "Signalen är '... --- ...' (tre punkter, tre streck, tre punkter). Den sänds kontinuerligt utan mellanslag mellan bokstäverna för att indikera en omedelbar nödsituation.",
9
+ },
10
+ {
11
+ question: 'Varför fungerar inte ficklampan i min webbläsare?',
12
+ answer: 'Aktivering av ficklampan kräver att webbläsaren har kamerabehörighet. Vissa mobilwebbläsare eller äldre skrivbordsversioner stöder inte detta API av integritetsskäl.',
13
+ },
14
+ {
15
+ question: 'Är SOS-skärmsignalen synlig?',
16
+ answer: 'Ja, vid totalt mörker kan den maximala ljusstyrkan från en vit skärm som blinkar i morsekod ses på flera hundra meters håll, vilket gör den till ett användbart alternativ om ficklampan slutar fungera.',
17
+ },
18
+ {
19
+ question: 'Vad är internationell morsekod?',
20
+ answer: 'Det är ett kommunikationssystem som använder sekvenser av korta (punkter) och långa (streck) signaler för att representera bokstäver och siffror, standardiserat av ITU för radiokommunikation och optiska signaler.',
21
+ },
22
+ ];
23
+
24
+ const howToData = [
25
+ {
26
+ name: 'Skriv meddelandet',
27
+ text: "Ange texten du vill sända eller använd den förkonfigurerade 'SOS'-knappen för nödsituationer.",
28
+ },
29
+ {
30
+ name: 'Konfigurera hastighet',
31
+ text: 'Justera WPM (ord per minut) för att göra signalen snabbare eller långsammare beroende på siktförhållandena.',
32
+ },
33
+ {
34
+ name: 'Välj ljuskälla',
35
+ text: 'Aktivera blinkning i helskärm eller tillåt åtkomst till kamerans ficklampa för en starkare signal.',
36
+ },
37
+ {
38
+ name: 'Starta sändning',
39
+ text: 'Tryck på Sänd för att låta systemet konvertera texten till automatiska visuella pulser enligt morsestandarden.',
40
+ },
41
+ ];
42
+
43
+ const faqSchema: WithContext<FAQPage> = {
44
+ '@context': 'https://schema.org',
45
+ '@type': 'FAQPage',
46
+ mainEntity: faqData.map((item) => ({
47
+ '@type': 'Question',
48
+ name: item.question,
49
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
50
+ })),
51
+ };
52
+
53
+ const howToSchema: WithContext<HowTo> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'HowTo',
56
+ name: 'Hur man använder morsefyr för att sända meddelanden',
57
+ step: howToData.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
58
+ };
59
+
60
+ const appSchema: WithContext<SoftwareApplication> = {
61
+ '@context': 'https://schema.org',
62
+ '@type': 'SoftwareApplication',
63
+ name: 'Morsesfyr: Taktisk SOS-sändare',
64
+ applicationCategory: 'UtilitiesApplication',
65
+ operatingSystem: 'Web',
66
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
67
+ description: 'Förvandla din enhet till en morsesändningsstation. Använd blixt och skärm som nödljusignaler och taktisk kommunikation.',
68
+ };
69
+
70
+ const ui: MorseBeaconUI = {
71
+ labelMessage: 'Meddelande att sända',
72
+ placeholder: 'Skriv ditt meddelande här (SOS, HELLO, HELP)...',
73
+ btnTransmit: 'Sänd',
74
+ btnSosLoop: 'SOS-loop',
75
+ btnStop: 'Stopp',
76
+ labelTorch: 'Blixt/Ficklampa',
77
+ statusStandby: 'STANDBY',
78
+ statusTransmitting: 'SÄNDER',
79
+ statusStopping: 'STOPPAR...',
80
+ statusWaiting: 'VÄNTAR',
81
+ statusReady: 'HÅRDVARA REDO',
82
+ statusNoTorch: 'INGEN FICKLAMPA',
83
+ statusNoPermission: 'INGET TILLSTÅND',
84
+ statusNotSupported: 'STÖDS EJ',
85
+ statusReqHttps: 'KRÄVER HTTPS',
86
+ statusSending: 'SÄNDER:',
87
+ };
88
+
89
+ export const content: ToolLocaleContent<MorseBeaconUI> = {
90
+ slug: 'morsefyr',
91
+ title: 'Morsefyr: Taktisk SOS sändare',
92
+ description: 'Förvandla din enhet till en morsesändningsstation. Använd blixt och skärm som nödljusignaler och taktisk kommunikation.',
93
+ ui,
94
+ faqTitle: 'Vanliga frågor',
95
+ faq: faqData,
96
+ howTo: howToData,
97
+ bibliographyTitle: 'Referenser',
98
+ bibliography: [
99
+ { name: 'ITU-R M.1677-1 — International Morse Code', url: 'https://www.itu.int/dms_pubrec/itu-r/rec/m/R-REC-M.1677-1-200910-I!!PDF-E.pdf' },
100
+ { name: 'W3C MediaCapture Image — Torch', url: 'https://w3c.github.io/mediacapture-image/#torch' },
101
+ { name: 'Morsekod — Wikipedia', url: 'https://sv.wikipedia.org/wiki/Morsekod' },
102
+ ],
103
+ schemas: [faqSchema, howToSchema, appSchema],
104
+ seo: [
105
+ {
106
+ type: 'title',
107
+ text: 'Ljusets språk',
108
+ level: 2,
109
+ },
110
+ {
111
+ type: 'paragraph',
112
+ html: 'Det här verktyget förvandlar din enhet till en optisk signalfyr som kan sända meddelanden synliga på flera kilometers avstånd. Med hjälp av den internationella morsekodstandarden möjliggör den tyst kommunikation eller nödkommunikation via ljuspulser (ficklampa och skärm).',
113
+ },
114
+ {
115
+ type: 'comparative',
116
+ columns: 2,
117
+ items: [
118
+ {
119
+ icon: 'mdi:history',
120
+ title: 'En universell standard',
121
+ description: 'Det här binära systemet med punkter och streck, som utvecklades 1830 av Samuel Morse, revolutionerade telekommunikationen. Dess enkelhet gör det extremt robust: det kan sändas via ljud, radio, elektricitet eller ljus, och förblir läsbart även vid svåra störningar.',
122
+ points: [],
123
+ },
124
+ {
125
+ icon: 'mdi:flash-alert',
126
+ title: 'SOS nödläge',
127
+ description: "Knappen 'SOS-loop' sänder kontinuerligt sekvensen ··· --- ···. Denna signal är universellt erkänd som ett nödanrop och är, tack vare LED-ficklampans höga kontrast, synlig på långt avstånd även i dagsljus under vissa förhållanden.",
128
+ points: [],
129
+ },
130
+ ],
131
+ },
132
+ {
133
+ type: 'title',
134
+ text: 'ITU-R M.1677-1-standard',
135
+ level: 2,
136
+ },
137
+ {
138
+ type: 'paragraph',
139
+ html: 'Det här verktyget respekterar strikt de <strong>reglerade tiderna</strong> för internationell morsekod enligt definitionen av International Telecommunication Union.',
140
+ },
141
+ {
142
+ type: 'list',
143
+ items: [
144
+ '1 punkt = 1 tidsenhet',
145
+ '1 streck = 3 tidsenheter',
146
+ 'Mellanrum mellan element = 1 enhet',
147
+ 'Mellanrum mellan bokstäver = 3 enheter',
148
+ 'Mellanrum mellan ord = 7 enheter',
149
+ ],
150
+ },
151
+ {
152
+ type: 'tip',
153
+ title: 'Standardhastighet',
154
+ html: 'Standardhastigheten är <strong>15 WPM</strong> (ord per minut), vilket motsvarar ett professionellt sändningstempo. Vid 15 WPM är 1 enhet = 80 ms.',
155
+ },
156
+ ],
157
+ };