@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: 'Qual è il segnale di soccorso SOS in codice Morse?',
8
+ answer: "Il segnale è '... --- ...' (tre punti, tre linee, tre punti). Viene trasmesso continuamente senza spazi tra le lettere per indicare un'emergenza immediata.",
9
+ },
10
+ {
11
+ question: 'Perché la torcia non funziona nel mio browser?',
12
+ answer: 'L\'attivazione della torcia richiede che il browser abbia i permessi della fotocamera. Alcuni browser mobili o versioni desktop più vecchie non supportano questa API per motivi di privacy.',
13
+ },
14
+ {
15
+ question: 'Il segnale SOS tramite schermo è visibile?',
16
+ answer: 'Sì, in condizioni di oscurità totale, la luminosità massima di uno schermo bianco che lampeggia in Morse può essere vista da diverse centinaia di metri di distanza, rappresentando un\'alternativa utile se la torcia non funziona.',
17
+ },
18
+ {
19
+ question: 'Cos\'è il codice Morse internazionale?',
20
+ answer: 'È un sistema di comunicazione che utilizza sequenze di segnali brevi (punti) e lunghi (linee) per rappresentare lettere e numeri, standardizzato dall\'ITU per comunicazioni radio e segnali ottici.',
21
+ },
22
+ ];
23
+
24
+ const howToData = [
25
+ {
26
+ name: 'Scrivi il messaggio',
27
+ text: "Inserisci il testo che vuoi trasmettere o usa il pulsante 'SOS' preconfigurato per le emergenze.",
28
+ },
29
+ {
30
+ name: 'Configura la velocità',
31
+ text: 'Regola i WPM (parole al minuto) per rendere il segnale più veloce o più lento a seconda della visibilità.',
32
+ },
33
+ {
34
+ name: 'Scegli la fonte luminosa',
35
+ text: 'Abilita il lampeggiamento a schermo intero o consenti l\'accesso alla torcia della fotocamera per un segnale più forte.',
36
+ },
37
+ {
38
+ name: 'Avvia la trasmissione',
39
+ text: 'Premi Trasmetti per fare in modo che il sistema converta il testo in impulsi visivi automatici seguendo lo standard 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: 'Come usare il segnalatore Morse per trasmettere messaggi',
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: 'Faro Morse: Trasmettitore Tattico SOS',
64
+ applicationCategory: 'UtilitiesApplication',
65
+ operatingSystem: 'Web',
66
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
67
+ description: 'Trasforma il tuo dispositivo in una stazione di trasmissione Morse. Usa il flash e lo schermo come segnali luminosi di emergenza e comunicazione tattica.',
68
+ };
69
+
70
+ const ui: MorseBeaconUI = {
71
+ labelMessage: 'Messaggio da Trasmettere',
72
+ placeholder: 'Scrivi qui il tuo messaggio (SOS, CIAO, AIUTO)...',
73
+ btnTransmit: 'Trasmetti',
74
+ btnSosLoop: 'Loop SOS',
75
+ btnStop: 'Stop',
76
+ labelTorch: 'Flash/Torcia',
77
+ statusStandby: 'STANDBY',
78
+ statusTransmitting: 'IN TRASMISSIONE',
79
+ statusStopping: 'ARRESTO...',
80
+ statusWaiting: 'IN ATTESA',
81
+ statusReady: 'HARDWARE PRONTO',
82
+ statusNoTorch: 'NO TORCIA',
83
+ statusNoPermission: 'NO PERMESSI',
84
+ statusNotSupported: 'NON SUPPORTATO',
85
+ statusReqHttps: 'REQ. HTTPS',
86
+ statusSending: 'INVIO:',
87
+ };
88
+
89
+ export const content: ToolLocaleContent<MorseBeaconUI> = {
90
+ slug: 'faro-morse-it',
91
+ title: 'Faro Morse: Trasmettitore Tattico SOS',
92
+ description: 'Trasforma il tuo dispositivo in una stazione di trasmissione Morse. Usa il flash e lo schermo come segnali luminosi di emergenza e comunicazione tattica.',
93
+ ui,
94
+ faqTitle: 'Domande Frequenti',
95
+ faq: faqData,
96
+ howTo: howToData,
97
+ bibliographyTitle: 'Riferimenti',
98
+ bibliography: [
99
+ { name: 'ITU-R M.1677-1 — Codice Morse Internazionale', 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: 'Codice Morse — Wikipedia', url: 'https://it.wikipedia.org/wiki/Codice_Morse' },
102
+ ],
103
+ schemas: [faqSchema, howToSchema, appSchema],
104
+ seo: [
105
+ {
106
+ type: 'title',
107
+ text: 'Il Linguaggio della Luce',
108
+ level: 2,
109
+ },
110
+ {
111
+ type: 'paragraph',
112
+ html: 'Questo strumento trasforma il tuo dispositivo in un segnalatore ottico capace di trasmettere messaggi visibili da chilometri di distanza. Utilizzando lo standard internazionale del Codice Morse, permette comunicazioni silenziose o di emergenza tramite impulsi luminosi (torcia e schermo).',
113
+ },
114
+ {
115
+ type: 'comparative',
116
+ columns: 2,
117
+ items: [
118
+ {
119
+ icon: 'mdi:history',
120
+ title: 'Uno Standard Universale',
121
+ description: 'Sviluppato nel 1830 da Samuel Morse, questo sistema binario di punti e linee ha rivoluzionato le telecomunicazioni. La sua semplicità lo rende estremamente robusto: può essere trasmesso via suono, radio, elettricità o luce, e rimane leggibile anche in presenza di gravi interferenze.',
122
+ points: [],
123
+ },
124
+ {
125
+ icon: 'mdi:flash-alert',
126
+ title: 'Modalità Emergenza SOS',
127
+ description: "Il pulsante 'Loop SOS' trasmette continuamente la sequenza ··· --- ···. Questo segnale è universalmente riconosciuto come una chiamata di soccorso e, grazie all'alto contrasto della torcia LED, è visibile da grande distanza anche alla luce del giorno in determinate condizioni.",
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: 'Questo strumento rispetta rigorosamente i <strong>tempi normativi</strong> del codice Morse internazionale come definito dall\'Unione Internazionale delle Telecomunicazioni.',
140
+ },
141
+ {
142
+ type: 'list',
143
+ items: [
144
+ '1 punto = 1 unità di tempo',
145
+ '1 linea = 3 unità di tempo',
146
+ 'Spazio tra gli elementi = 1 unità',
147
+ 'Spazio tra le lettere = 3 unità',
148
+ 'Spazio tra le parole = 7 unità',
149
+ ],
150
+ },
151
+ {
152
+ type: 'tip',
153
+ title: 'Velocità standard',
154
+ html: 'La velocità predefinita è <strong>15 WPM</strong> (parole al minuto), che corrisponde a un ritmo di trasmissione professionale. A 15 WPM, 1 unità = 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: "信号は '... --- ...' (短点3つ、長点3つ、短点3つ)です。緊急事態であることを示すため、文字の間にスペースを空けずに連続して送信されます。",
9
+ },
10
+ {
11
+ question: 'ブラウザでフラッシュライトが機能しないのはなぜですか?',
12
+ answer: 'フラッシュライトを有効にするには、ブラウザのカメラ権限が必要です。一部のモバイルブラウザや古いデスクトップ版では、プライバシー上の理由からこのAPIをサポートしていません。',
13
+ },
14
+ {
15
+ question: '画面によるSOS信号は視認可能ですか?',
16
+ answer: 'はい、完全な暗闇の中では、モールス信号で点滅する白い画面の最大輝度は数百メートル先からでも視認でき、フラッシュライトが故障した場合の有効な代替手段となります。',
17
+ },
18
+ {
19
+ question: '国際モールス符号とは何ですか?',
20
+ answer: '短点(ドット)と長点(ダッシュ)の信号の組み合わせを使用して文字や数字を表す通信システムであり、無線通信や光信号のためにITUによって標準化されています。',
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, HELLO, HELP)...',
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: 'morse-beacon',
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: 'モールス符号 — Wikipedia', url: 'https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%BC%E3%83%AB%E3%82%B9%E7%AC%A6%E5%8F%B7' },
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ループ」ボタンは、··· --- ··· のシーケンスを継続的に送信します。この信号は世界共通の救難信号として認識されており、LEDフラッシュライトの高いコントラストにより、特定の条件下では日中でも遠くから視認できます。",
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: '모스 부호의 SOS 구조 신호는 무엇인가요?',
8
+ answer: "신호는 '... --- ...' (단점 3개, 장점 3개, 단점 3개)입니다. 즉각적인 비상 상황을 알리기 위해 글자 사이에 공백 없이 연속적으로 전송됩니다.",
9
+ },
10
+ {
11
+ question: '브라우저에서 플래시라이트가 작동하지 않는 이유는 무엇인가요?',
12
+ answer: '플래시라이트를 활성화하려면 브라우저의 카메라 권한이 필요합니다. 일부 모바일 브라우저나 이전 데스크톱 버전은 개인 정보 보호를 이유로 이 API를 지원하지 않습니다.',
13
+ },
14
+ {
15
+ question: '화면 SOS 신호를 볼 수 있나요?',
16
+ answer: '네, 완전한 어둠 속에서는 모스 부호로 깜박이는 흰색 화면의 최대 밝기를 수백 미터 밖에서도 볼 수 있어, 플래시라이트가 작동하지 않을 때 유용한 대안이 됩니다.',
17
+ },
18
+ {
19
+ question: '국제 모스 부호란 무엇인가요?',
20
+ answer: '글자와 숫자를 나타내기 위해 짧은(단점) 신호와 긴(장점) 신호의 시퀀스를 사용하는 통신 시스템으로, 무선 통신 및 광신호를 위해 ITU에서 표준화했습니다.',
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, HELLO, HELP)...',
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: 'morse-beacon',
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://ko.wikipedia.org/wiki/%EB%AA%A8%EC%8A%A4_%EB%B6%80%ED%98%B8' },
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 반복' 버튼은 ··· --- ··· 시퀀스를 지속적으로 전송합니다. 이 신호는 보편적으로 구조 요청으로 인식되며, LED 플래시라이트의 높은 대비 덕분에 특정 조건에서는 낮에도 먼 거리에서 가시적입니다.",
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: '이 도구는 국제 전기 통신 연합(ITU)에서 정의한 국제 모스 부호의 <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 단위 = 80ms입니다.',
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: 'Wat is het SOS noodsignaal in Morsecode?',
8
+ answer: "Het signaal is '... --- ...' (drie punten, drie strepen, drie punten). Het wordt continu uitgezonden zonder spaties tussen de letters om een onmiddellijke noodsituatie aan te geven.",
9
+ },
10
+ {
11
+ question: 'Waarom werkt de zaklamp niet in mijn browser?',
12
+ answer: 'Voor het activeren van de zaklamp heeft de browser cameratoestemming nodig. Sommige mobiele browsers of oudere desktopversies ondersteunen deze API niet om privacyredenen.',
13
+ },
14
+ {
15
+ question: 'Is het SOS-schermsignaal zichtbaar?',
16
+ answer: 'Ja, in omstandigheden van totale duisternis kan de maximale helderheid van een wit scherm dat in Morse knippert van honderden meters afstand worden gezien, waardoor het een nuttig alternatief is als de zaklamp uitvalt.',
17
+ },
18
+ {
19
+ question: 'Wat is de internationale Morsecode?',
20
+ answer: 'Het is een communicatiesysteem dat reeksen korte (punten) en lange (strepen) signalen gebruikt om letters en cijfers weer te geven, gestandaardiseerd door de ITU voor radiocommunicatie en optische signalen.',
21
+ },
22
+ ];
23
+
24
+ const howToData = [
25
+ {
26
+ name: 'Schrijf het bericht',
27
+ text: "Voer de tekst in die u wilt verzenden of gebruik de vooraf geconfigureerde 'SOS'-knop voor noodsituaties.",
28
+ },
29
+ {
30
+ name: 'Snelheid configureren',
31
+ text: 'Pas de WPM (woorden per minuut) aan om het signaal sneller of langzamer te maken, afhankelijk van de zichtbaarheid.',
32
+ },
33
+ {
34
+ name: 'Kies lichtbron',
35
+ text: 'Activeer knipperen op volledig scherm of sta toegang tot de camerazaklamp toe voor een sterker signaal.',
36
+ },
37
+ {
38
+ name: 'Start verzending',
39
+ text: 'Druk op Verzenden om het systeem de tekst te laten omzetten in automatische visuele pulsen volgens de Morse-standaard.',
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: 'Hoe het Morse-baken te gebruiken om berichten te verzenden',
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: 'Morse Baken: Tactische SOS-zender',
64
+ applicationCategory: 'UtilitiesApplication',
65
+ operatingSystem: 'Web',
66
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
67
+ description: 'Verander uw apparaat in een Morse-zendstation. Gebruik flitser und scherm als noodlichtsignalen en tactische communicatie.',
68
+ };
69
+
70
+ const ui: MorseBeaconUI = {
71
+ labelMessage: 'Te verzenden bericht',
72
+ placeholder: 'Typ hier uw bericht (SOS, HALLO, HELP)...',
73
+ btnTransmit: 'Verzenden',
74
+ btnSosLoop: 'SOS Loop',
75
+ btnStop: 'Stop',
76
+ labelTorch: 'Flitser/Zaklamp',
77
+ statusStandby: 'STANDBY',
78
+ statusTransmitting: 'ZENDEN...',
79
+ statusStopping: 'STOPPEN...',
80
+ statusWaiting: 'WACHTEN',
81
+ statusReady: 'HARDWARE GEREED',
82
+ statusNoTorch: 'GEEN ZAKLAMP',
83
+ statusNoPermission: 'GEEN TOESTEMMING',
84
+ statusNotSupported: 'NIET ONDERSTEUND',
85
+ statusReqHttps: 'HTTPS VEREIST',
86
+ statusSending: 'VERZENDEN:',
87
+ };
88
+
89
+ export const content: ToolLocaleContent<MorseBeaconUI> = {
90
+ slug: 'morsebaken',
91
+ title: 'Morse Baken: Tactische SOS zender',
92
+ description: 'Verander uw apparaat in een Morse-zendstation. Gebruik flitser en scherm als noodlichtsignalen en tactische communicatie.',
93
+ ui,
94
+ faqTitle: 'Veelgestelde Vragen',
95
+ faq: faqData,
96
+ howTo: howToData,
97
+ bibliographyTitle: 'Referenties',
98
+ bibliography: [
99
+ { name: 'ITU-R M.1677-1 — Internationale Morsecode', 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: 'Morsecode — Wikipedia', url: 'https://nl.wikipedia.org/wiki/Morse' },
102
+ ],
103
+ schemas: [faqSchema, howToSchema, appSchema],
104
+ seo: [
105
+ {
106
+ type: 'title',
107
+ text: 'De taal van het licht',
108
+ level: 2,
109
+ },
110
+ {
111
+ type: 'paragraph',
112
+ html: 'Deze tool verandert uw apparaat in een optisch baken dat berichten kan verzenden die van kilometers afstand zichtbaar zijn. Met behulp van de internationale Morsecode-standaard maakt het stille communicatie of noodcommunicatie mogelijk via lichtpulsen (zaklamp en scherm).',
113
+ },
114
+ {
115
+ type: 'comparative',
116
+ columns: 2,
117
+ items: [
118
+ {
119
+ icon: 'mdi:history',
120
+ title: 'Een universele standaard',
121
+ description: 'Dit binaire systeem van punten en strepen, in 1830 ontwikkeld door Samuel Morse, betekende een revolutie in de telecommunicatie. De eenvoud maakt het extreem robuust: het kan worden verzonden via geluid, radio, elektriciteit of licht, en blijft leesbaar, zelfs bij ernstige interferentie.',
122
+ points: [],
123
+ },
124
+ {
125
+ icon: 'mdi:flash-alert',
126
+ title: 'SOS Noodmodus',
127
+ description: "De 'SOS Loop'-knop verzendt continu de reeks ··· --- ···. Dit signaal wordt universeel erkend als een noodoproep en is, dankzij het hoge contrast van de LED-zaklamp, onder bepaalde omstandigheden zelfs bij daglicht van grote afstand zichtbaar.",
128
+ points: [],
129
+ },
130
+ ],
131
+ },
132
+ {
133
+ type: 'title',
134
+ text: 'ITU-R M.1677-1 Standaard',
135
+ level: 2,
136
+ },
137
+ {
138
+ type: 'paragraph',
139
+ html: 'Deze tool respecteert strikt de <strong>voorgeschreven timings</strong> van de internationale Morsecode zoals gedefinieerd door de International Telecommunication Union.',
140
+ },
141
+ {
142
+ type: 'list',
143
+ items: [
144
+ '1 punt = 1 tijdseenheid',
145
+ '1 streep = 3 tijdseenheden',
146
+ 'Ruimte tussen elementen = 1 eenheid',
147
+ 'Ruimte tussen letters = 3 eenheden',
148
+ 'Ruimte tussen woorden = 7 eenheden',
149
+ ],
150
+ },
151
+ {
152
+ type: 'tip',
153
+ title: 'Standaardsnelheid',
154
+ html: 'De standaard snelheid is <strong>15 WPM</strong> (woorden per minuut), wat overeenkomt met een professioneel verzendtempo. Bij 15 WPM is 1 eenheid = 80 ms.',
155
+ },
156
+ ],
157
+ };