@jjlmoya/utils-developer 1.3.0 → 1.5.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 (339) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +34 -0
  3. package/src/category/i18n/id.ts +34 -0
  4. package/src/category/i18n/it.ts +34 -0
  5. package/src/category/i18n/ja.ts +34 -0
  6. package/src/category/i18n/ko.ts +34 -0
  7. package/src/category/i18n/nl.ts +34 -0
  8. package/src/category/i18n/pl.ts +34 -0
  9. package/src/category/i18n/pt.ts +34 -0
  10. package/src/category/i18n/ru.ts +34 -0
  11. package/src/category/i18n/sv.ts +34 -0
  12. package/src/category/i18n/tr.ts +34 -0
  13. package/src/category/i18n/zh.ts +34 -0
  14. package/src/category/index.ts +13 -1
  15. package/src/index.ts +12 -0
  16. package/src/tests/faq_count.test.ts +1 -1
  17. package/src/tests/i18n_coverage.test.ts +36 -0
  18. package/src/tests/locale_completeness.test.ts +2 -2
  19. package/src/tests/slug_uniqueness.test.ts +81 -0
  20. package/src/tool/aspectRatio/i18n/de.ts +177 -0
  21. package/src/tool/aspectRatio/i18n/id.ts +177 -0
  22. package/src/tool/aspectRatio/i18n/it.ts +177 -0
  23. package/src/tool/aspectRatio/i18n/ja.ts +178 -0
  24. package/src/tool/aspectRatio/i18n/ko.ts +178 -0
  25. package/src/tool/aspectRatio/i18n/nl.ts +178 -0
  26. package/src/tool/aspectRatio/i18n/pl.ts +177 -0
  27. package/src/tool/aspectRatio/i18n/pt.ts +177 -0
  28. package/src/tool/aspectRatio/i18n/ru.ts +177 -0
  29. package/src/tool/aspectRatio/i18n/sv.ts +177 -0
  30. package/src/tool/aspectRatio/i18n/tr.ts +177 -0
  31. package/src/tool/aspectRatio/i18n/zh.ts +178 -0
  32. package/src/tool/aspectRatio/index.ts +15 -7
  33. package/src/tool/calculadoraTiempoDatos/i18n/de.ts +150 -0
  34. package/src/tool/calculadoraTiempoDatos/i18n/id.ts +150 -0
  35. package/src/tool/calculadoraTiempoDatos/i18n/it.ts +150 -0
  36. package/src/tool/calculadoraTiempoDatos/i18n/ja.ts +151 -0
  37. package/src/tool/calculadoraTiempoDatos/i18n/ko.ts +151 -0
  38. package/src/tool/calculadoraTiempoDatos/i18n/nl.ts +150 -0
  39. package/src/tool/calculadoraTiempoDatos/i18n/pl.ts +150 -0
  40. package/src/tool/calculadoraTiempoDatos/i18n/pt.ts +150 -0
  41. package/src/tool/calculadoraTiempoDatos/i18n/ru.ts +151 -0
  42. package/src/tool/calculadoraTiempoDatos/i18n/sv.ts +150 -0
  43. package/src/tool/calculadoraTiempoDatos/i18n/tr.ts +150 -0
  44. package/src/tool/calculadoraTiempoDatos/i18n/zh.ts +151 -0
  45. package/src/tool/calculadoraTiempoDatos/index.ts +15 -7
  46. package/src/tool/colorConverter/i18n/de.ts +126 -0
  47. package/src/tool/colorConverter/i18n/id.ts +126 -0
  48. package/src/tool/colorConverter/i18n/it.ts +126 -0
  49. package/src/tool/colorConverter/i18n/ja.ts +127 -0
  50. package/src/tool/colorConverter/i18n/ko.ts +127 -0
  51. package/src/tool/colorConverter/i18n/nl.ts +126 -0
  52. package/src/tool/colorConverter/i18n/pl.ts +126 -0
  53. package/src/tool/colorConverter/i18n/pt.ts +126 -0
  54. package/src/tool/colorConverter/i18n/ru.ts +126 -0
  55. package/src/tool/colorConverter/i18n/sv.ts +126 -0
  56. package/src/tool/colorConverter/i18n/tr.ts +126 -0
  57. package/src/tool/colorConverter/i18n/zh.ts +127 -0
  58. package/src/tool/colorConverter/index.ts +15 -7
  59. package/src/tool/conversorExcelCsvHtml/i18n/de.ts +129 -0
  60. package/src/tool/conversorExcelCsvHtml/i18n/id.ts +129 -0
  61. package/src/tool/conversorExcelCsvHtml/i18n/it.ts +129 -0
  62. package/src/tool/conversorExcelCsvHtml/i18n/ja.ts +130 -0
  63. package/src/tool/conversorExcelCsvHtml/i18n/ko.ts +130 -0
  64. package/src/tool/conversorExcelCsvHtml/i18n/nl.ts +129 -0
  65. package/src/tool/conversorExcelCsvHtml/i18n/pl.ts +129 -0
  66. package/src/tool/conversorExcelCsvHtml/i18n/pt.ts +129 -0
  67. package/src/tool/conversorExcelCsvHtml/i18n/ru.ts +129 -0
  68. package/src/tool/conversorExcelCsvHtml/i18n/sv.ts +129 -0
  69. package/src/tool/conversorExcelCsvHtml/i18n/tr.ts +129 -0
  70. package/src/tool/conversorExcelCsvHtml/i18n/zh.ts +130 -0
  71. package/src/tool/conversorExcelCsvHtml/index.ts +15 -7
  72. package/src/tool/cronGenerator/i18n/de.ts +192 -0
  73. package/src/tool/cronGenerator/i18n/es.ts +2 -1
  74. package/src/tool/cronGenerator/i18n/fr.ts +2 -1
  75. package/src/tool/cronGenerator/i18n/id.ts +192 -0
  76. package/src/tool/cronGenerator/i18n/it.ts +192 -0
  77. package/src/tool/cronGenerator/i18n/ja.ts +192 -0
  78. package/src/tool/cronGenerator/i18n/ko.ts +192 -0
  79. package/src/tool/cronGenerator/i18n/nl.ts +192 -0
  80. package/src/tool/cronGenerator/i18n/pl.ts +192 -0
  81. package/src/tool/cronGenerator/i18n/pt.ts +192 -0
  82. package/src/tool/cronGenerator/i18n/ru.ts +192 -0
  83. package/src/tool/cronGenerator/i18n/sv.ts +192 -0
  84. package/src/tool/cronGenerator/i18n/tr.ts +192 -0
  85. package/src/tool/cronGenerator/i18n/zh.ts +192 -0
  86. package/src/tool/cronGenerator/index.ts +15 -7
  87. package/src/tool/cssSpecificityCalculator/i18n/de.ts +168 -0
  88. package/src/tool/cssSpecificityCalculator/i18n/id.ts +168 -0
  89. package/src/tool/cssSpecificityCalculator/i18n/it.ts +168 -0
  90. package/src/tool/cssSpecificityCalculator/i18n/ja.ts +169 -0
  91. package/src/tool/cssSpecificityCalculator/i18n/ko.ts +169 -0
  92. package/src/tool/cssSpecificityCalculator/i18n/nl.ts +168 -0
  93. package/src/tool/cssSpecificityCalculator/i18n/pl.ts +168 -0
  94. package/src/tool/cssSpecificityCalculator/i18n/pt.ts +168 -0
  95. package/src/tool/cssSpecificityCalculator/i18n/ru.ts +168 -0
  96. package/src/tool/cssSpecificityCalculator/i18n/sv.ts +168 -0
  97. package/src/tool/cssSpecificityCalculator/i18n/tr.ts +168 -0
  98. package/src/tool/cssSpecificityCalculator/i18n/zh.ts +169 -0
  99. package/src/tool/cssSpecificityCalculator/index.ts +15 -7
  100. package/src/tool/cssToInlineConverter/i18n/de.ts +160 -0
  101. package/src/tool/cssToInlineConverter/i18n/id.ts +160 -0
  102. package/src/tool/cssToInlineConverter/i18n/it.ts +160 -0
  103. package/src/tool/cssToInlineConverter/i18n/ja.ts +161 -0
  104. package/src/tool/cssToInlineConverter/i18n/ko.ts +161 -0
  105. package/src/tool/cssToInlineConverter/i18n/nl.ts +160 -0
  106. package/src/tool/cssToInlineConverter/i18n/pl.ts +160 -0
  107. package/src/tool/cssToInlineConverter/i18n/pt.ts +160 -0
  108. package/src/tool/cssToInlineConverter/i18n/ru.ts +160 -0
  109. package/src/tool/cssToInlineConverter/i18n/sv.ts +160 -0
  110. package/src/tool/cssToInlineConverter/i18n/tr.ts +160 -0
  111. package/src/tool/cssToInlineConverter/i18n/zh.ts +161 -0
  112. package/src/tool/cssToInlineConverter/index.ts +15 -7
  113. package/src/tool/duplicateCssRemover/i18n/de.ts +167 -0
  114. package/src/tool/duplicateCssRemover/i18n/id.ts +167 -0
  115. package/src/tool/duplicateCssRemover/i18n/it.ts +167 -0
  116. package/src/tool/duplicateCssRemover/i18n/ja.ts +168 -0
  117. package/src/tool/duplicateCssRemover/i18n/ko.ts +168 -0
  118. package/src/tool/duplicateCssRemover/i18n/nl.ts +167 -0
  119. package/src/tool/duplicateCssRemover/i18n/pl.ts +167 -0
  120. package/src/tool/duplicateCssRemover/i18n/pt.ts +167 -0
  121. package/src/tool/duplicateCssRemover/i18n/ru.ts +167 -0
  122. package/src/tool/duplicateCssRemover/i18n/sv.ts +167 -0
  123. package/src/tool/duplicateCssRemover/i18n/tr.ts +167 -0
  124. package/src/tool/duplicateCssRemover/i18n/zh.ts +168 -0
  125. package/src/tool/duplicateCssRemover/index.ts +15 -7
  126. package/src/tool/generadorSecurityTxt/i18n/de.ts +174 -0
  127. package/src/tool/generadorSecurityTxt/i18n/id.ts +174 -0
  128. package/src/tool/generadorSecurityTxt/i18n/it.ts +174 -0
  129. package/src/tool/generadorSecurityTxt/i18n/ja.ts +174 -0
  130. package/src/tool/generadorSecurityTxt/i18n/ko.ts +174 -0
  131. package/src/tool/generadorSecurityTxt/i18n/nl.ts +174 -0
  132. package/src/tool/generadorSecurityTxt/i18n/pl.ts +174 -0
  133. package/src/tool/generadorSecurityTxt/i18n/pt.ts +174 -0
  134. package/src/tool/generadorSecurityTxt/i18n/ru.ts +174 -0
  135. package/src/tool/generadorSecurityTxt/i18n/sv.ts +174 -0
  136. package/src/tool/generadorSecurityTxt/i18n/tr.ts +174 -0
  137. package/src/tool/generadorSecurityTxt/i18n/zh.ts +174 -0
  138. package/src/tool/generadorSecurityTxt/index.ts +15 -7
  139. package/src/tool/hashGenerator/i18n/de.ts +119 -0
  140. package/src/tool/hashGenerator/i18n/id.ts +119 -0
  141. package/src/tool/hashGenerator/i18n/it.ts +118 -0
  142. package/src/tool/hashGenerator/i18n/ja.ts +119 -0
  143. package/src/tool/hashGenerator/i18n/ko.ts +119 -0
  144. package/src/tool/hashGenerator/i18n/nl.ts +119 -0
  145. package/src/tool/hashGenerator/i18n/pl.ts +118 -0
  146. package/src/tool/hashGenerator/i18n/pt.ts +118 -0
  147. package/src/tool/hashGenerator/i18n/ru.ts +119 -0
  148. package/src/tool/hashGenerator/i18n/sv.ts +119 -0
  149. package/src/tool/hashGenerator/i18n/tr.ts +118 -0
  150. package/src/tool/hashGenerator/i18n/zh.ts +119 -0
  151. package/src/tool/hashGenerator/index.ts +15 -7
  152. package/src/tool/inspectorCertificadosSsl/i18n/de.ts +214 -0
  153. package/src/tool/inspectorCertificadosSsl/i18n/id.ts +215 -0
  154. package/src/tool/inspectorCertificadosSsl/i18n/it.ts +214 -0
  155. package/src/tool/inspectorCertificadosSsl/i18n/ja.ts +215 -0
  156. package/src/tool/inspectorCertificadosSsl/i18n/ko.ts +215 -0
  157. package/src/tool/inspectorCertificadosSsl/i18n/nl.ts +215 -0
  158. package/src/tool/inspectorCertificadosSsl/i18n/pl.ts +215 -0
  159. package/src/tool/inspectorCertificadosSsl/i18n/pt.ts +214 -0
  160. package/src/tool/inspectorCertificadosSsl/i18n/ru.ts +215 -0
  161. package/src/tool/inspectorCertificadosSsl/i18n/sv.ts +215 -0
  162. package/src/tool/inspectorCertificadosSsl/i18n/tr.ts +215 -0
  163. package/src/tool/inspectorCertificadosSsl/i18n/zh.ts +215 -0
  164. package/src/tool/inspectorCertificadosSsl/index.ts +24 -0
  165. package/src/tool/jsonFormatter/i18n/de.ts +157 -0
  166. package/src/tool/jsonFormatter/i18n/es.ts +2 -1
  167. package/src/tool/jsonFormatter/i18n/fr.ts +2 -1
  168. package/src/tool/jsonFormatter/i18n/id.ts +157 -0
  169. package/src/tool/jsonFormatter/i18n/it.ts +156 -0
  170. package/src/tool/jsonFormatter/i18n/ja.ts +157 -0
  171. package/src/tool/jsonFormatter/i18n/ko.ts +157 -0
  172. package/src/tool/jsonFormatter/i18n/nl.ts +157 -0
  173. package/src/tool/jsonFormatter/i18n/pl.ts +156 -0
  174. package/src/tool/jsonFormatter/i18n/pt.ts +156 -0
  175. package/src/tool/jsonFormatter/i18n/ru.ts +157 -0
  176. package/src/tool/jsonFormatter/i18n/sv.ts +157 -0
  177. package/src/tool/jsonFormatter/i18n/tr.ts +157 -0
  178. package/src/tool/jsonFormatter/i18n/zh.ts +157 -0
  179. package/src/tool/jsonFormatter/index.ts +15 -7
  180. package/src/tool/keycode/i18n/de.ts +161 -0
  181. package/src/tool/keycode/i18n/es.ts +2 -1
  182. package/src/tool/keycode/i18n/fr.ts +2 -1
  183. package/src/tool/keycode/i18n/id.ts +161 -0
  184. package/src/tool/keycode/i18n/it.ts +161 -0
  185. package/src/tool/keycode/i18n/ja.ts +161 -0
  186. package/src/tool/keycode/i18n/ko.ts +161 -0
  187. package/src/tool/keycode/i18n/nl.ts +161 -0
  188. package/src/tool/keycode/i18n/pl.ts +161 -0
  189. package/src/tool/keycode/i18n/pt.ts +160 -0
  190. package/src/tool/keycode/i18n/ru.ts +160 -0
  191. package/src/tool/keycode/i18n/sv.ts +160 -0
  192. package/src/tool/keycode/i18n/tr.ts +160 -0
  193. package/src/tool/keycode/i18n/zh.ts +161 -0
  194. package/src/tool/keycode/index.ts +15 -7
  195. package/src/tool/llmCostCalculator/i18n/de.ts +166 -0
  196. package/src/tool/llmCostCalculator/i18n/fr.ts +2 -1
  197. package/src/tool/llmCostCalculator/i18n/id.ts +166 -0
  198. package/src/tool/llmCostCalculator/i18n/it.ts +166 -0
  199. package/src/tool/llmCostCalculator/i18n/ja.ts +166 -0
  200. package/src/tool/llmCostCalculator/i18n/ko.ts +166 -0
  201. package/src/tool/llmCostCalculator/i18n/nl.ts +166 -0
  202. package/src/tool/llmCostCalculator/i18n/pl.ts +165 -0
  203. package/src/tool/llmCostCalculator/i18n/pt.ts +165 -0
  204. package/src/tool/llmCostCalculator/i18n/ru.ts +165 -0
  205. package/src/tool/llmCostCalculator/i18n/sv.ts +165 -0
  206. package/src/tool/llmCostCalculator/i18n/tr.ts +165 -0
  207. package/src/tool/llmCostCalculator/i18n/zh.ts +166 -0
  208. package/src/tool/llmCostCalculator/index.ts +24 -0
  209. package/src/tool/mobileMockupGenerator/i18n/de.ts +121 -0
  210. package/src/tool/mobileMockupGenerator/i18n/id.ts +121 -0
  211. package/src/tool/mobileMockupGenerator/i18n/it.ts +121 -0
  212. package/src/tool/mobileMockupGenerator/i18n/ja.ts +122 -0
  213. package/src/tool/mobileMockupGenerator/i18n/ko.ts +122 -0
  214. package/src/tool/mobileMockupGenerator/i18n/nl.ts +121 -0
  215. package/src/tool/mobileMockupGenerator/i18n/pl.ts +31 -0
  216. package/src/tool/mobileMockupGenerator/i18n/pt.ts +121 -0
  217. package/src/tool/mobileMockupGenerator/i18n/ru.ts +121 -0
  218. package/src/tool/mobileMockupGenerator/i18n/sv.ts +121 -0
  219. package/src/tool/mobileMockupGenerator/i18n/tr.ts +121 -0
  220. package/src/tool/mobileMockupGenerator/i18n/zh.ts +122 -0
  221. package/src/tool/mobileMockupGenerator/index.ts +24 -0
  222. package/src/tool/musicalTypography/i18n/de.ts +179 -0
  223. package/src/tool/musicalTypography/i18n/id.ts +179 -0
  224. package/src/tool/musicalTypography/i18n/it.ts +179 -0
  225. package/src/tool/musicalTypography/i18n/ja.ts +180 -0
  226. package/src/tool/musicalTypography/i18n/ko.ts +180 -0
  227. package/src/tool/musicalTypography/i18n/nl.ts +179 -0
  228. package/src/tool/musicalTypography/i18n/pl.ts +179 -0
  229. package/src/tool/musicalTypography/i18n/pt.ts +101 -0
  230. package/src/tool/musicalTypography/i18n/ru.ts +47 -0
  231. package/src/tool/musicalTypography/i18n/sv.ts +29 -0
  232. package/src/tool/musicalTypography/i18n/tr.ts +29 -0
  233. package/src/tool/musicalTypography/i18n/zh.ts +30 -0
  234. package/src/tool/musicalTypography/index.ts +15 -7
  235. package/src/tool/placeholderGenerator/i18n/de.ts +176 -0
  236. package/src/tool/placeholderGenerator/i18n/id.ts +176 -0
  237. package/src/tool/placeholderGenerator/i18n/it.ts +176 -0
  238. package/src/tool/placeholderGenerator/i18n/ja.ts +177 -0
  239. package/src/tool/placeholderGenerator/i18n/ko.ts +177 -0
  240. package/src/tool/placeholderGenerator/i18n/nl.ts +176 -0
  241. package/src/tool/placeholderGenerator/i18n/pl.ts +176 -0
  242. package/src/tool/placeholderGenerator/i18n/pt.ts +176 -0
  243. package/src/tool/placeholderGenerator/i18n/ru.ts +176 -0
  244. package/src/tool/placeholderGenerator/i18n/sv.ts +176 -0
  245. package/src/tool/placeholderGenerator/i18n/tr.ts +176 -0
  246. package/src/tool/placeholderGenerator/i18n/zh.ts +177 -0
  247. package/src/tool/placeholderGenerator/index.ts +24 -0
  248. package/src/tool/promptLibrary/i18n/de.ts +131 -0
  249. package/src/tool/promptLibrary/i18n/id.ts +131 -0
  250. package/src/tool/promptLibrary/i18n/it.ts +131 -0
  251. package/src/tool/promptLibrary/i18n/ja.ts +132 -0
  252. package/src/tool/promptLibrary/i18n/ko.ts +132 -0
  253. package/src/tool/promptLibrary/i18n/nl.ts +131 -0
  254. package/src/tool/promptLibrary/i18n/pl.ts +28 -0
  255. package/src/tool/promptLibrary/i18n/pt.ts +101 -0
  256. package/src/tool/promptLibrary/i18n/ru.ts +101 -0
  257. package/src/tool/promptLibrary/i18n/sv.ts +93 -0
  258. package/src/tool/promptLibrary/i18n/tr.ts +93 -0
  259. package/src/tool/promptLibrary/i18n/zh.ts +94 -0
  260. package/src/tool/promptLibrary/index.ts +24 -0
  261. package/src/tool/readabilityCalculator/i18n/de.ts +133 -0
  262. package/src/tool/readabilityCalculator/i18n/id.ts +133 -0
  263. package/src/tool/readabilityCalculator/i18n/it.ts +133 -0
  264. package/src/tool/readabilityCalculator/i18n/ja.ts +134 -0
  265. package/src/tool/readabilityCalculator/i18n/ko.ts +134 -0
  266. package/src/tool/readabilityCalculator/i18n/nl.ts +133 -0
  267. package/src/tool/readabilityCalculator/i18n/pl.ts +29 -0
  268. package/src/tool/readabilityCalculator/i18n/pt.ts +91 -0
  269. package/src/tool/readabilityCalculator/i18n/ru.ts +91 -0
  270. package/src/tool/readabilityCalculator/i18n/sv.ts +43 -0
  271. package/src/tool/readabilityCalculator/i18n/tr.ts +43 -0
  272. package/src/tool/readabilityCalculator/i18n/zh.ts +44 -0
  273. package/src/tool/readabilityCalculator/index.ts +24 -0
  274. package/src/tool/svgSanitizer/i18n/de.ts +125 -0
  275. package/src/tool/svgSanitizer/i18n/id.ts +125 -0
  276. package/src/tool/svgSanitizer/i18n/it.ts +125 -0
  277. package/src/tool/svgSanitizer/i18n/ja.ts +126 -0
  278. package/src/tool/svgSanitizer/i18n/ko.ts +126 -0
  279. package/src/tool/svgSanitizer/i18n/nl.ts +125 -0
  280. package/src/tool/svgSanitizer/i18n/pl.ts +125 -0
  281. package/src/tool/svgSanitizer/i18n/pt.ts +30 -0
  282. package/src/tool/svgSanitizer/i18n/ru.ts +126 -0
  283. package/src/tool/svgSanitizer/i18n/sv.ts +126 -0
  284. package/src/tool/svgSanitizer/i18n/tr.ts +126 -0
  285. package/src/tool/svgSanitizer/i18n/zh.ts +126 -0
  286. package/src/tool/svgSanitizer/index.ts +24 -0
  287. package/src/tool/svgToCss/i18n/de.ts +174 -0
  288. package/src/tool/svgToCss/i18n/id.ts +174 -0
  289. package/src/tool/svgToCss/i18n/it.ts +174 -0
  290. package/src/tool/svgToCss/i18n/ja.ts +175 -0
  291. package/src/tool/svgToCss/i18n/ko.ts +175 -0
  292. package/src/tool/svgToCss/i18n/nl.ts +174 -0
  293. package/src/tool/svgToCss/i18n/pl.ts +174 -0
  294. package/src/tool/svgToCss/i18n/pt.ts +174 -0
  295. package/src/tool/svgToCss/i18n/ru.ts +174 -0
  296. package/src/tool/svgToCss/i18n/sv.ts +174 -0
  297. package/src/tool/svgToCss/i18n/tr.ts +174 -0
  298. package/src/tool/svgToCss/i18n/zh.ts +175 -0
  299. package/src/tool/svgToCss/index.ts +15 -7
  300. package/src/tool/urlCleaner/i18n/de.ts +116 -0
  301. package/src/tool/urlCleaner/i18n/id.ts +116 -0
  302. package/src/tool/urlCleaner/i18n/it.ts +116 -0
  303. package/src/tool/urlCleaner/i18n/ja.ts +117 -0
  304. package/src/tool/urlCleaner/i18n/ko.ts +117 -0
  305. package/src/tool/urlCleaner/i18n/nl.ts +116 -0
  306. package/src/tool/urlCleaner/i18n/pl.ts +29 -0
  307. package/src/tool/urlCleaner/i18n/pt.ts +43 -0
  308. package/src/tool/urlCleaner/i18n/ru.ts +43 -0
  309. package/src/tool/urlCleaner/i18n/sv.ts +43 -0
  310. package/src/tool/urlCleaner/i18n/tr.ts +43 -0
  311. package/src/tool/urlCleaner/i18n/zh.ts +44 -0
  312. package/src/tool/urlCleaner/index.ts +24 -0
  313. package/src/tool/urlEncoderDecoder/i18n/de.ts +163 -0
  314. package/src/tool/urlEncoderDecoder/i18n/id.ts +163 -0
  315. package/src/tool/urlEncoderDecoder/i18n/it.ts +163 -0
  316. package/src/tool/urlEncoderDecoder/i18n/ja.ts +163 -0
  317. package/src/tool/urlEncoderDecoder/i18n/ko.ts +163 -0
  318. package/src/tool/urlEncoderDecoder/i18n/nl.ts +163 -0
  319. package/src/tool/urlEncoderDecoder/i18n/pl.ts +162 -0
  320. package/src/tool/urlEncoderDecoder/i18n/pt.ts +162 -0
  321. package/src/tool/urlEncoderDecoder/i18n/ru.ts +163 -0
  322. package/src/tool/urlEncoderDecoder/i18n/sv.ts +163 -0
  323. package/src/tool/urlEncoderDecoder/i18n/tr.ts +162 -0
  324. package/src/tool/urlEncoderDecoder/i18n/zh.ts +163 -0
  325. package/src/tool/urlEncoderDecoder/index.ts +15 -7
  326. package/src/tool/utmGenerator/i18n/de.ts +118 -0
  327. package/src/tool/utmGenerator/i18n/id.ts +118 -0
  328. package/src/tool/utmGenerator/i18n/it.ts +118 -0
  329. package/src/tool/utmGenerator/i18n/ja.ts +118 -0
  330. package/src/tool/utmGenerator/i18n/ko.ts +118 -0
  331. package/src/tool/utmGenerator/i18n/nl.ts +118 -0
  332. package/src/tool/utmGenerator/i18n/pl.ts +117 -0
  333. package/src/tool/utmGenerator/i18n/pt.ts +118 -0
  334. package/src/tool/utmGenerator/i18n/ru.ts +118 -0
  335. package/src/tool/utmGenerator/i18n/sv.ts +118 -0
  336. package/src/tool/utmGenerator/i18n/tr.ts +117 -0
  337. package/src/tool/utmGenerator/i18n/zh.ts +118 -0
  338. package/src/tool/utmGenerator/index.ts +15 -7
  339. package/src/types.ts +1 -2
@@ -0,0 +1,131 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { PromptLibraryUI } from '../ui';
4
+
5
+ const slug = 'prompt-bibliothek';
6
+ const title = 'Private KI Prompt Bibliothek';
7
+ const description = 'Organisiere, verschlagworte und speichere deine ChatGPT-, Midjourney- und Claude-Prompts privat. Deine eigene Prompt-Sammlung im localStorage.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Wo werden meine Prompts gespeichert?',
12
+ answer: 'Deine Prompts werden ausschließlich im lokalen Speicher deines Browsers (localStorage) gespeichert. Wir verwenden keine externen Server, was bedeutet, dass deine Daten zu 100 % privat sind.',
13
+ },
14
+ {
15
+ question: 'Was passiert, wenn ich Browser-Cookies oder den Verlauf lösche?',
16
+ answer: 'Wenn du die Website-Daten oder den lokalen Speicher deines Browsers leerst, gehen deine gespeicherten Prompts verloren. Wir empfehlen, Sicherungskopien anzulegen, wenn du deinen Browser häufig bereinigst.',
17
+ },
18
+ {
19
+ question: 'Kann ich dieses Tool für Midjourney, ChatGPT oder DALL-E nutzen?',
20
+ answer: 'Ja, es ist mit jeder Art von KI-Anweisung kompatibel. Du kannst spezifische Tags erstellen, um deine Befehle zu organisieren, und sie ganz einfach in dein bevorzugtes KI-Tool kopieren.',
21
+ },
22
+ ];
23
+
24
+ const howToData = [
25
+ { name: 'Prompt erstellen', text: 'Klicke auf die Schaltfläche Neuer Prompt und gib Titel und Anweisung ein.' },
26
+ { name: 'Tags hinzufügen', text: 'Tippe Tags getrennt durch Leerzeichen oder Komma ein, um deine Prompts zu klassifizieren.' },
27
+ { name: 'Variablen verwenden', text: 'Nutze eckige Klammern [SO WIE HIER] im Text, um ausfüllbare Felder auf der Karte zu erstellen.' },
28
+ { name: 'Kopieren und teilen', text: 'Mit einem Klick in die Zwischenablage kopieren oder über die Teilen-Schaltfläche einen direkten Link weitergeben.' },
29
+ ];
30
+
31
+ const faqSchema: WithContext<FAQPage> = {
32
+ '@context': 'https://schema.org',
33
+ '@type': 'FAQPage',
34
+ mainEntity: faqData.map((item) => ({
35
+ '@type': 'Question',
36
+ name: item.question,
37
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
38
+ })),
39
+ };
40
+
41
+ const howToSchema: WithContext<HowToThing> = {
42
+ '@context': 'https://schema.org',
43
+ '@type': 'HowTo',
44
+ name: title,
45
+ description,
46
+ step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
47
+ };
48
+
49
+ const appSchema: WithContext<SoftwareApplication> = {
50
+ '@context': 'https://schema.org',
51
+ '@type': 'SoftwareApplication',
52
+ name: title,
53
+ description,
54
+ applicationCategory: 'UtilityApplication',
55
+ operatingSystem: 'All',
56
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
57
+ inLanguage: 'de',
58
+ };
59
+
60
+ const ui: PromptLibraryUI = {
61
+ placeholderSearch: 'Nach Schlüsselwort oder Tag suchen...',
62
+ btnNew: 'Neuer Prompt',
63
+ emptyTitle: 'Deine Bibliothek ist leer',
64
+ emptyDesc: 'Erstelle deinen ersten Prompt und beginne, dein privates KI-Repository aufzubauen.',
65
+ btnAddFirst: 'Ersten hinzufügen',
66
+ modalTitleCreate: 'Neuen Prompt erstellen',
67
+ modalTitleEdit: 'Prompt bearbeiten',
68
+ labelTitle: 'Bezeichnender Titel',
69
+ placeholderTitle: 'Z. B.: SEO-Marketing-Experte',
70
+ labelContent: 'Anweisung (Prompt)',
71
+ placeholderContent: 'Schreibe hier die detaillierten Anweisungen für die KI...',
72
+ hintContent: 'Tipp: Verwende eckige Klammern [SO WIE HIER], um Variablen später auszufüllen.',
73
+ labelTags: 'Tags',
74
+ placeholderTags: 'Z. B.: marketing, seo (Leerzeichen oder Komma zum Hinzufügen)',
75
+ btnCancel: 'Abbrechen',
76
+ btnSave: 'Lokal speichern',
77
+ ariaLabelStar: 'Prompt markieren',
78
+ ariaLabelEdit: 'Prompt bearbeiten',
79
+ ariaLabelShare: 'Prompt teilen',
80
+ ariaLabelCopy: 'Prompt kopieren',
81
+ ariaLabelDelete: 'Prompt löschen',
82
+ varsTitle: 'Erforderliche Variablen',
83
+ noResults: 'Keine Prompts für diese Suche gefunden.',
84
+ confirmTitle: 'Prompt löschen?',
85
+ confirmDesc: 'Diese Aktion kann nicht rückgängig gemacht werden.',
86
+ btnCancelDelete: 'Abbrechen',
87
+ btnConfirmDelete: 'Endgültig löschen',
88
+ };
89
+
90
+ export const content: ToolLocaleContent<PromptLibraryUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ ui,
95
+ faqTitle: 'Häufig gestellte Fragen',
96
+ faq: faqData,
97
+ bibliographyTitle: 'Referenzen zum Prompt Engineering',
98
+ bibliography: [
99
+ { name: 'Prompt Engineering Guide (DAIR.AI)', url: 'https://www.promptingguide.ai/' },
100
+ { name: 'Was ist Prompt Engineering (Google Cloud)', url: 'https://cloud.google.com/discover/what-is-prompt-engineering' },
101
+ ],
102
+ howTo: howToData,
103
+ schemas: [faqSchema, howToSchema, appSchema],
104
+ seo: [
105
+ { type: 'title', text: 'Warum brauchst du eine Prompt Bibliothek?', level: 2 },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Wer regelmäßig mit KI-Tools wie ChatGPT, Claude oder Midjourney arbeitet, kennt das Problem: Man schreibt dieselben Anweisungen immer wieder neu. Eine <strong>Prompt-Bibliothek</strong> ist die endgültige Lösung, um das lästige Wiederholen deiner Lieblingsanweisungen zu beenden.',
109
+ },
110
+ { type: 'title', text: 'Vorteile der Prompt-Organisation', level: 3 },
111
+ {
112
+ type: 'list',
113
+ items: [
114
+ '<strong>Sofortsuche:</strong> Finde jene spezifische Anweisung, die du vor Monaten verwendet hast, mit einer einfachen Textsuche.',
115
+ '<strong>Tag-Klassifizierung:</strong> Verschlagworte deine Prompts mit „Marketing", „Programmierung" oder „Copywriting", um schnell zu filtern.',
116
+ '<strong>Ein-Klick-Kopieren:</strong> Den vollständigen Text mit einem einzigen Klick in die Zwischenablage kopieren.',
117
+ '<strong>Vollständige Privatsphäre:</strong> Alle deine Daten werden lokal im Browser über localStorage gespeichert.',
118
+ ],
119
+ },
120
+ { type: 'title', text: 'Variablen in deinen Prompts', level: 3 },
121
+ {
122
+ type: 'paragraph',
123
+ html: 'Verwende die <strong>[VARIABLE]</strong>-Notation in deinen Prompts, um dynamisch ausfüllbare Felder zu erstellen. Wenn du eine Karte öffnest, erscheinen Eingabefelder für jede definierte Variable. Der Prompt wird mit den eingetragenen Werten kopiert und ist direkt zum Einfügen in deine KI bereit.',
124
+ },
125
+ { type: 'title', text: 'Prompts teilen', level: 3 },
126
+ {
127
+ type: 'paragraph',
128
+ html: 'Jeder Prompt kann über eine URL geteilt werden. Die Teilen-Schaltfläche generiert einen Link, der beim Öffnen das Erstellungsformular mit dem Prompt-Inhalt vorausgefüllt anzeigt.',
129
+ },
130
+ ],
131
+ };
@@ -0,0 +1,131 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { PromptLibraryUI } from '../ui';
4
+
5
+ const slug = 'perpustakaan-prompt';
6
+ const title = 'Perpustakaan Prompt AI Pribadi';
7
+ const description = 'Atur, beri label, dan simpan prompt ChatGPT, Midjourney, dan Claude secara pribadi. Bank prompt milikmu sendiri di localStorage.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Di mana prompt saya disimpan?',
12
+ answer: 'Prompt kamu disimpan secara eksklusif di penyimpanan lokal browser (localStorage). Kami tidak menggunakan server eksternal, sehingga datamu 100% privat.',
13
+ },
14
+ {
15
+ question: 'Apa yang terjadi jika saya menghapus cookie atau riwayat browser?',
16
+ answer: 'Jika kamu menghapus data situs atau penyimpanan lokal browser, prompt yang tersimpan akan hilang. Kami menyarankan untuk membuat cadangan jika kamu sering membersihkan browser.',
17
+ },
18
+ {
19
+ question: 'Bisakah saya menggunakan alat ini untuk Midjourney, ChatGPT, atau DALL-E?',
20
+ answer: 'Ya, alat ini kompatibel dengan semua jenis instruksi AI. Kamu bisa membuat tag khusus untuk mengorganisir perintah dan menyalinnya ke alat AI favoritmu dengan mudah.',
21
+ },
22
+ ];
23
+
24
+ const howToData = [
25
+ { name: 'Buat prompt', text: 'Klik tombol Prompt Baru dan masukkan judul serta instruksinya.' },
26
+ { name: 'Tambahkan tag', text: 'Ketik tag yang dipisahkan spasi atau koma untuk mengklasifikasikan prompt kamu.' },
27
+ { name: 'Gunakan variabel', text: 'Gunakan tanda kurung siku [SEPERTI INI] dalam teks untuk membuat kolom yang bisa diisi pada kartu.' },
28
+ { name: 'Salin dan bagikan', text: 'Salin ke clipboard dengan satu klik atau bagikan tautan langsung menggunakan tombol berbagi.' },
29
+ ];
30
+
31
+ const faqSchema: WithContext<FAQPage> = {
32
+ '@context': 'https://schema.org',
33
+ '@type': 'FAQPage',
34
+ mainEntity: faqData.map((item) => ({
35
+ '@type': 'Question',
36
+ name: item.question,
37
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
38
+ })),
39
+ };
40
+
41
+ const howToSchema: WithContext<HowToThing> = {
42
+ '@context': 'https://schema.org',
43
+ '@type': 'HowTo',
44
+ name: title,
45
+ description,
46
+ step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
47
+ };
48
+
49
+ const appSchema: WithContext<SoftwareApplication> = {
50
+ '@context': 'https://schema.org',
51
+ '@type': 'SoftwareApplication',
52
+ name: title,
53
+ description,
54
+ applicationCategory: 'UtilityApplication',
55
+ operatingSystem: 'All',
56
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
57
+ inLanguage: 'id',
58
+ };
59
+
60
+ const ui: PromptLibraryUI = {
61
+ placeholderSearch: 'Cari berdasarkan kata kunci atau tag...',
62
+ btnNew: 'Prompt Baru',
63
+ emptyTitle: 'Perpustakaanmu masih kosong',
64
+ emptyDesc: 'Buat prompt pertamamu dan mulai bangun repositori AI pribadimu.',
65
+ btnAddFirst: 'Tambahkan yang pertama',
66
+ modalTitleCreate: 'Buat Prompt Baru',
67
+ modalTitleEdit: 'Edit Prompt',
68
+ labelTitle: 'Judul identifikasi',
69
+ placeholderTitle: 'Contoh: Pakar Marketing SEO',
70
+ labelContent: 'Instruksi (Prompt)',
71
+ placeholderContent: 'Tulis instruksi terperinci untuk AI di sini...',
72
+ hintContent: 'Tips: gunakan tanda kurung siku [SEPERTI INI] untuk mengisi variabel nanti.',
73
+ labelTags: 'Tag',
74
+ placeholderTags: 'Contoh: marketing, seo (spasi atau koma untuk menambahkan)',
75
+ btnCancel: 'Batal',
76
+ btnSave: 'Simpan Secara Lokal',
77
+ ariaLabelStar: 'Bintangi prompt',
78
+ ariaLabelEdit: 'Edit prompt',
79
+ ariaLabelShare: 'Bagikan prompt',
80
+ ariaLabelCopy: 'Salin prompt',
81
+ ariaLabelDelete: 'Hapus prompt',
82
+ varsTitle: 'Variabel yang diperlukan',
83
+ noResults: 'Tidak ada prompt yang ditemukan untuk pencarian ini.',
84
+ confirmTitle: 'Hapus prompt?',
85
+ confirmDesc: 'Tindakan ini tidak dapat dibatalkan.',
86
+ btnCancelDelete: 'Batal',
87
+ btnConfirmDelete: 'Hapus permanen',
88
+ };
89
+
90
+ export const content: ToolLocaleContent<PromptLibraryUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ ui,
95
+ faqTitle: 'Pertanyaan yang Sering Diajukan',
96
+ faq: faqData,
97
+ bibliographyTitle: 'Referensi Prompt Engineering',
98
+ bibliography: [
99
+ { name: 'Prompt Engineering Guide (DAIR.AI)', url: 'https://www.promptingguide.ai/' },
100
+ { name: 'Apa itu prompt engineering (Google Cloud)', url: 'https://cloud.google.com/discover/what-is-prompt-engineering' },
101
+ ],
102
+ howTo: howToData,
103
+ schemas: [faqSchema, howToSchema, appSchema],
104
+ seo: [
105
+ { type: 'title', text: 'Mengapa kamu butuh Perpustakaan Prompt?', level: 2 },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Jika kamu rutin bekerja dengan alat AI seperti ChatGPT, Claude, atau Midjourney, pasti pernah merasa kehabisan waktu karena menulis ulang instruksi yang sama berulang kali. <strong>Perpustakaan prompt</strong> adalah solusi definitif agar kamu tidak lagi membuang waktu menulis ulang perintah favoritmu.',
109
+ },
110
+ { type: 'title', text: 'Manfaat mengorganisir prompt kamu', level: 3 },
111
+ {
112
+ type: 'list',
113
+ items: [
114
+ '<strong>Pencarian instan:</strong> Temukan instruksi spesifik yang kamu gunakan berbulan-bulan lalu hanya dengan pencarian teks sederhana.',
115
+ '<strong>Klasifikasi dengan tag:</strong> Beri label prompt dengan "marketing", "pemrograman", atau "copywriting" untuk memfilter dengan cepat.',
116
+ '<strong>Salin satu klik:</strong> Salin teks lengkap ke clipboard hanya dengan satu klik.',
117
+ '<strong>Privasi penuh:</strong> Semua datamu disimpan secara lokal di browser melalui localStorage.',
118
+ ],
119
+ },
120
+ { type: 'title', text: 'Variabel dalam prompt kamu', level: 3 },
121
+ {
122
+ type: 'paragraph',
123
+ html: 'Gunakan notasi <strong>[VARIABEL]</strong> dalam prompt untuk membuat kolom yang bisa diisi secara dinamis. Ketika kamu membuka kartu, kolom input akan muncul untuk setiap variabel yang didefinisikan. Prompt disalin dengan nilai yang sudah terisi, siap ditempel ke AI-mu.',
124
+ },
125
+ { type: 'title', text: 'Berbagi prompt', level: 3 },
126
+ {
127
+ type: 'paragraph',
128
+ html: 'Setiap prompt dapat dibagikan melalui URL. Tombol berbagi menghasilkan tautan yang, ketika dibuka, menampilkan formulir pembuatan yang sudah terisi dengan konten prompt tersebut.',
129
+ },
130
+ ],
131
+ };
@@ -0,0 +1,131 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { PromptLibraryUI } from '../ui';
4
+
5
+ const slug = 'libreria-prompt-ia';
6
+ const title = 'Libreria Prompt IA Privata';
7
+ const description = 'Organizza, etichetta e salva i tuoi prompt di ChatGPT, Midjourney e Claude in modo privato. La tua raccolta personale di prompt nel localStorage.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Dove vengono salvati i miei prompt?',
12
+ answer: 'I tuoi prompt vengono salvati esclusivamente nel localStorage del tuo browser. Non utilizziamo server esterni, il che significa che i tuoi dati sono 100% privati.',
13
+ },
14
+ {
15
+ question: 'Cosa succede se cancello i cookie o la cronologia del browser?',
16
+ answer: 'Se cancelli i dati del sito o il localStorage del browser, perderai i prompt salvati. Ti consigliamo di fare dei backup se pulisci frequentemente il browser.',
17
+ },
18
+ {
19
+ question: 'Posso usare questo strumento per Midjourney, ChatGPT o DALL-E?',
20
+ answer: 'Sì, è compatibile con qualsiasi tipo di istruzione AI. Puoi creare tag specifici per organizzare i tuoi comandi e copiarli facilmente nel tuo strumento AI preferito.',
21
+ },
22
+ ];
23
+
24
+ const howToData = [
25
+ { name: 'Crea un prompt', text: 'Clicca sul pulsante Nuovo Prompt e inserisci il titolo e l\'istruzione.' },
26
+ { name: 'Aggiungi tag', text: 'Digita i tag separati da spazio o virgola per classificare i tuoi prompt.' },
27
+ { name: 'Usa le variabili', text: 'Usa le parentesi quadre [COME QUESTE] nel testo per creare campi compilabili sulla scheda.' },
28
+ { name: 'Copia e condividi', text: 'Copia negli appunti con un solo clic o condividi un link diretto con il pulsante di condivisione.' },
29
+ ];
30
+
31
+ const faqSchema: WithContext<FAQPage> = {
32
+ '@context': 'https://schema.org',
33
+ '@type': 'FAQPage',
34
+ mainEntity: faqData.map((item) => ({
35
+ '@type': 'Question',
36
+ name: item.question,
37
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
38
+ })),
39
+ };
40
+
41
+ const howToSchema: WithContext<HowToThing> = {
42
+ '@context': 'https://schema.org',
43
+ '@type': 'HowTo',
44
+ name: title,
45
+ description,
46
+ step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
47
+ };
48
+
49
+ const appSchema: WithContext<SoftwareApplication> = {
50
+ '@context': 'https://schema.org',
51
+ '@type': 'SoftwareApplication',
52
+ name: title,
53
+ description,
54
+ applicationCategory: 'UtilityApplication',
55
+ operatingSystem: 'All',
56
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
57
+ inLanguage: 'it',
58
+ };
59
+
60
+ const ui: PromptLibraryUI = {
61
+ placeholderSearch: 'Cerca per parola chiave o tag...',
62
+ btnNew: 'Nuovo Prompt',
63
+ emptyTitle: 'La tua libreria è vuota',
64
+ emptyDesc: 'Crea il tuo primo prompt e inizia a costruire il tuo archivio AI personale.',
65
+ btnAddFirst: 'Aggiungi il primo',
66
+ modalTitleCreate: 'Crea Nuovo Prompt',
67
+ modalTitleEdit: 'Modifica Prompt',
68
+ labelTitle: 'Titolo identificativo',
69
+ placeholderTitle: 'Es: Esperto di Marketing SEO',
70
+ labelContent: 'Istruzione (Prompt)',
71
+ placeholderContent: 'Scrivi qui le istruzioni dettagliate per l\'AI...',
72
+ hintContent: 'Suggerimento: usa le parentesi quadre [COME QUESTE] per compilare le variabili in seguito.',
73
+ labelTags: 'Tag',
74
+ placeholderTags: 'Es: marketing, seo (spazio o virgola per aggiungere)',
75
+ btnCancel: 'Annulla',
76
+ btnSave: 'Salva in Locale',
77
+ ariaLabelStar: 'Metti in evidenza il prompt',
78
+ ariaLabelEdit: 'Modifica prompt',
79
+ ariaLabelShare: 'Condividi prompt',
80
+ ariaLabelCopy: 'Copia prompt',
81
+ ariaLabelDelete: 'Elimina prompt',
82
+ varsTitle: 'Variabili richieste',
83
+ noResults: 'Nessun prompt trovato per questa ricerca.',
84
+ confirmTitle: 'Eliminare il prompt?',
85
+ confirmDesc: 'Questa azione non può essere annullata.',
86
+ btnCancelDelete: 'Annulla',
87
+ btnConfirmDelete: 'Elimina definitivamente',
88
+ };
89
+
90
+ export const content: ToolLocaleContent<PromptLibraryUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ ui,
95
+ faqTitle: 'Domande Frequenti',
96
+ faq: faqData,
97
+ bibliographyTitle: 'Riferimenti sul Prompt Engineering',
98
+ bibliography: [
99
+ { name: 'Prompt Engineering Guide (DAIR.AI)', url: 'https://www.promptingguide.ai/' },
100
+ { name: 'Che cos\'è il prompt engineering (Google Cloud)', url: 'https://cloud.google.com/discover/what-is-prompt-engineering' },
101
+ ],
102
+ howTo: howToData,
103
+ schemas: [faqSchema, howToSchema, appSchema],
104
+ seo: [
105
+ { type: 'title', text: 'Perché hai bisogno di una Libreria Prompt?', level: 2 },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Se lavori regolarmente con strumenti AI come ChatGPT, Claude o Midjourney, di sicuro ti sarà capitato di riscrivere le stesse istruzioni più volte. Una <strong>libreria di prompt</strong> è la soluzione definitiva per smettere di perdere tempo a riformulare i tuoi comandi preferiti.',
109
+ },
110
+ { type: 'title', text: 'Vantaggi dell\'organizzazione dei prompt', level: 3 },
111
+ {
112
+ type: 'list',
113
+ items: [
114
+ '<strong>Ricerca istantanea:</strong> Trova quella specifica istruzione usata mesi fa con una semplice ricerca testuale.',
115
+ '<strong>Classificazione per tag:</strong> Etichetta i tuoi prompt come "marketing", "programmazione" o "copywriting" per filtrare rapidamente.',
116
+ '<strong>Copia in un clic:</strong> Copia il testo completo negli appunti con un solo clic.',
117
+ '<strong>Privacy totale:</strong> Tutti i tuoi dati vengono salvati localmente nel browser tramite localStorage.',
118
+ ],
119
+ },
120
+ { type: 'title', text: 'Variabili nei tuoi prompt', level: 3 },
121
+ {
122
+ type: 'paragraph',
123
+ html: 'Usa la notazione <strong>[VARIABILE]</strong> nei tuoi prompt per creare campi compilabili dinamicamente. Quando apri una scheda, appariranno degli input per ogni variabile definita. Il prompt viene copiato con i valori compilati, pronto da incollare nella tua AI.',
124
+ },
125
+ { type: 'title', text: 'Condividere i prompt', level: 3 },
126
+ {
127
+ type: 'paragraph',
128
+ html: 'Ogni prompt può essere condiviso tramite un URL. Il pulsante di condivisione genera un link che, quando aperto, mostra il modulo di creazione precompilato con il contenuto del prompt.',
129
+ },
130
+ ],
131
+ };
@@ -0,0 +1,132 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { PromptLibraryUI } from '../ui';
4
+
5
+ const slug = 'prompt-library';
6
+ const title = 'プライベート AI プロンプトライブラリ';
7
+ const description = 'ChatGPT、Midjourney、Claudeのプロンプトをプライベートに整理・タグ付け・保存。localStorageに保存される自分だけのプロンプトバンク。';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'プロンプトはどこに保存されますか?',
12
+ answer: 'プロンプトはブラウザのローカルストレージ(localStorage)にのみ保存されます。外部サーバーは使用しないため、データは100%プライベートです。',
13
+ },
14
+ {
15
+ question: 'ブラウザのCookieや履歴を削除するとどうなりますか?',
16
+ answer: 'サイトデータやローカルストレージを削除すると、保存済みのプロンプトが失われます。ブラウザを頻繁にクリアする場合は、バックアップを取ることをお勧めします。',
17
+ },
18
+ {
19
+ question: 'Midjourney、ChatGPT、DALL-Eにも使えますか?',
20
+ answer: 'はい、あらゆる種類のAI指示に対応しています。専用タグを作成してコマンドを整理し、お好みのAIツールへ簡単にコピーできます。',
21
+ },
22
+ ];
23
+
24
+ const howToData = [
25
+ { name: 'プロンプトを作成する', text: '「新規プロンプト」ボタンをクリックし、タイトルと指示を入力してください。' },
26
+ { name: 'タグを追加する', text: 'スペースまたはカンマで区切ってタグを入力し、プロンプトを分類します。' },
27
+ { name: '変数を使う', text: 'テキスト内に角括弧[このように]を使って、カード上に入力可能なフィールドを作成します。' },
28
+ { name: 'コピーして共有する', text: 'ワンクリックでクリップボードにコピーするか、共有ボタンで直接リンクをシェアします。' },
29
+ ];
30
+
31
+ const faqSchema: WithContext<FAQPage> = {
32
+ '@context': 'https://schema.org',
33
+ '@type': 'FAQPage',
34
+ mainEntity: faqData.map((item) => ({
35
+ '@type': 'Question',
36
+ name: item.question,
37
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
38
+ })),
39
+ };
40
+
41
+ const howToSchema: WithContext<HowToThing> = {
42
+ '@context': 'https://schema.org',
43
+ '@type': 'HowTo',
44
+ name: title,
45
+ description,
46
+ step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
47
+ };
48
+
49
+ const appSchema: WithContext<SoftwareApplication> = {
50
+ '@context': 'https://schema.org',
51
+ '@type': 'SoftwareApplication',
52
+ name: title,
53
+ description,
54
+ applicationCategory: 'UtilityApplication',
55
+ operatingSystem: 'All',
56
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
57
+ inLanguage: 'ja',
58
+ };
59
+
60
+ const ui: PromptLibraryUI = {
61
+ placeholderSearch: 'キーワードまたはタグで検索...',
62
+ btnNew: '新規プロンプト',
63
+ emptyTitle: 'ライブラリが空です',
64
+ emptyDesc: '最初のプロンプトを作成して、プライベートAIリポジトリの構築を始めましょう。',
65
+ btnAddFirst: '最初のものを追加',
66
+ modalTitleCreate: '新規プロンプトを作成',
67
+ modalTitleEdit: 'プロンプトを編集',
68
+ labelTitle: '識別タイトル',
69
+ placeholderTitle: '例:SEOマーケティング専門家',
70
+ labelContent: '指示(プロンプト)',
71
+ placeholderContent: 'AIへの詳細な指示をここに入力してください...',
72
+ hintContent: 'ヒント:テキスト内に角括弧[このように]を使うと、後で変数を埋めることができます。',
73
+ labelTags: 'タグ',
74
+ placeholderTags: '例:marketing, seo(スペースまたはカンマで追加)',
75
+ btnCancel: 'キャンセル',
76
+ btnSave: 'ローカルに保存',
77
+ ariaLabelStar: 'プロンプトをお気に入りに登録',
78
+ ariaLabelEdit: 'プロンプトを編集',
79
+ ariaLabelShare: 'プロンプトを共有',
80
+ ariaLabelCopy: 'プロンプトをコピー',
81
+ ariaLabelDelete: 'プロンプトを削除',
82
+ varsTitle: '必須変数',
83
+ noResults: 'この検索に一致するプロンプトが見つかりません。',
84
+ confirmTitle: 'プロンプトを削除しますか?',
85
+ confirmDesc: 'この操作は元に戻せません。',
86
+ btnCancelDelete: 'キャンセル',
87
+ btnConfirmDelete: '完全に削除',
88
+ };
89
+
90
+ export const content: ToolLocaleContent<PromptLibraryUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ ui,
95
+ faqTitle: 'よくある質問',
96
+ faq: faqData,
97
+ bibliographyTitle: 'プロンプトエンジニアリング参考資料',
98
+ bibliography: [
99
+ { name: 'Prompt Engineering Guide (DAIR.AI)', url: 'https://www.promptingguide.ai/' },
100
+ { name: 'プロンプトエンジニアリングとは(Google Cloud)', url: 'https://cloud.google.com/discover/what-is-prompt-engineering' },
101
+ ],
102
+ howTo: howToData,
103
+ schemas: [faqSchema, howToSchema, appSchema],
104
+ seo: [
105
+ { type: 'title', text: 'プロンプトライブラリが必要な理由', level: 2 },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'ChatGPT、Claude、MidjourneyなどのAIツールを日常的に使っているなら、同じ指示を何度も書き直した経験があるはずです。<strong>プロンプトライブラリ</strong>は、お気に入りのコマンドを書き直す手間をなくすための決定的な解決策です。',
109
+ },
110
+ { type: 'title', text: 'プロンプト整理のメリット', level: 3 },
111
+ {
112
+ type: 'list',
113
+ items: [
114
+ '<strong>即時検索:</strong>数ヶ月前に使った特定の指示も、シンプルなテキスト検索でサッと見つけられます。',
115
+ '<strong>タグ分類:</strong>プロンプトに「marketing」「programming」「copywriting」などのタグを付けてすばやくフィルタリング。',
116
+ '<strong>ワンクリックコピー:</strong>全文をクリップボードにたった一度のクリックでコピーできます。',
117
+ '<strong>完全なプライバシー:</strong>すべてのデータはlocalStorage経由でブラウザにローカル保存されます。',
118
+ ],
119
+ },
120
+ { type: 'title', text: 'プロンプト内の変数', level: 3 },
121
+ {
122
+ type: 'paragraph',
123
+ html: 'プロンプトに<strong>[変数名]</strong>という形式を使うと、動的に入力できるフィールドを作成できます。カードを開くと、定義した変数ごとに入力欄が表示され、値を入力した状態でプロンプトがコピーされます。そのままAIに貼り付けるだけで完了です。',
124
+ },
125
+ { type: 'title', text: 'プロンプトの共有', level: 3 },
126
+ {
127
+ type: 'paragraph',
128
+ html: '各プロンプトはURLで共有できます。共有ボタンを押すとリンクが生成され、そのリンクを開くとプロンプトの内容があらかじめ入力された作成フォームが表示されます。',
129
+ },
130
+ ],
131
+ };
132
+
@@ -0,0 +1,132 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { PromptLibraryUI } from '../ui';
4
+
5
+ const slug = 'prompt-library';
6
+ const title = 'AI 프롬프트 개인 라이브러리';
7
+ const description = 'ChatGPT, Midjourney, Claude 프롬프트를 개인적으로 정리하고 태그를 붙여 저장하세요. localStorage에 저장되는 나만의 프롬프트 뱅크.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: '프롬프트는 어디에 저장되나요?',
12
+ answer: '프롬프트는 브라우저의 로컬 스토리지(localStorage)에만 저장됩니다. 외부 서버를 사용하지 않으므로 데이터는 100% 개인 보호됩니다.',
13
+ },
14
+ {
15
+ question: '브라우저 쿠키나 기록을 삭제하면 어떻게 되나요?',
16
+ answer: '사이트 데이터나 로컬 스토리지를 삭제하면 저장된 프롬프트가 사라집니다. 브라우저를 자주 초기화하는 경우 백업을 만들어 두시기를 권장합니다.',
17
+ },
18
+ {
19
+ question: 'Midjourney, ChatGPT, DALL-E에도 사용할 수 있나요?',
20
+ answer: '네, 모든 종류의 AI 지시어와 호환됩니다. 특정 태그를 만들어 명령어를 정리하고 원하는 AI 도구에 쉽게 복사할 수 있습니다.',
21
+ },
22
+ ];
23
+
24
+ const howToData = [
25
+ { name: '프롬프트 만들기', text: '새 프롬프트 버튼을 클릭하고 제목과 지시어를 입력하세요.' },
26
+ { name: '태그 추가하기', text: '공백이나 쉼표로 구분하여 태그를 입력해 프롬프트를 분류하세요.' },
27
+ { name: '변수 사용하기', text: '텍스트에 대괄호[이렇게]를 사용해 카드에 입력 가능한 필드를 만드세요.' },
28
+ { name: '복사하고 공유하기', text: '한 번의 클릭으로 클립보드에 복사하거나 공유 버튼으로 직접 링크를 공유하세요.' },
29
+ ];
30
+
31
+ const faqSchema: WithContext<FAQPage> = {
32
+ '@context': 'https://schema.org',
33
+ '@type': 'FAQPage',
34
+ mainEntity: faqData.map((item) => ({
35
+ '@type': 'Question',
36
+ name: item.question,
37
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
38
+ })),
39
+ };
40
+
41
+ const howToSchema: WithContext<HowToThing> = {
42
+ '@context': 'https://schema.org',
43
+ '@type': 'HowTo',
44
+ name: title,
45
+ description,
46
+ step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
47
+ };
48
+
49
+ const appSchema: WithContext<SoftwareApplication> = {
50
+ '@context': 'https://schema.org',
51
+ '@type': 'SoftwareApplication',
52
+ name: title,
53
+ description,
54
+ applicationCategory: 'UtilityApplication',
55
+ operatingSystem: 'All',
56
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
57
+ inLanguage: 'ko',
58
+ };
59
+
60
+ const ui: PromptLibraryUI = {
61
+ placeholderSearch: '키워드 또는 태그로 검색...',
62
+ btnNew: '새 프롬프트',
63
+ emptyTitle: '라이브러리가 비어 있습니다',
64
+ emptyDesc: '첫 번째 프롬프트를 만들고 나만의 AI 저장소를 구축하세요.',
65
+ btnAddFirst: '첫 번째 추가하기',
66
+ modalTitleCreate: '새 프롬프트 만들기',
67
+ modalTitleEdit: '프롬프트 편집',
68
+ labelTitle: '식별 제목',
69
+ placeholderTitle: '예: SEO 마케팅 전문가',
70
+ labelContent: '지시어 (프롬프트)',
71
+ placeholderContent: 'AI를 위한 상세 지시어를 여기에 작성하세요...',
72
+ hintContent: '팁: 텍스트에 대괄호[이렇게]를 사용하면 나중에 변수를 채울 수 있습니다.',
73
+ labelTags: '태그',
74
+ placeholderTags: '예: marketing, seo (공백이나 쉼표로 추가)',
75
+ btnCancel: '취소',
76
+ btnSave: '로컬에 저장',
77
+ ariaLabelStar: '프롬프트 즐겨찾기',
78
+ ariaLabelEdit: '프롬프트 편집',
79
+ ariaLabelShare: '프롬프트 공유',
80
+ ariaLabelCopy: '프롬프트 복사',
81
+ ariaLabelDelete: '프롬프트 삭제',
82
+ varsTitle: '필수 변수',
83
+ noResults: '이 검색에 해당하는 프롬프트가 없습니다.',
84
+ confirmTitle: '프롬프트를 삭제할까요?',
85
+ confirmDesc: '이 작업은 취소할 수 없습니다.',
86
+ btnCancelDelete: '취소',
87
+ btnConfirmDelete: '영구 삭제',
88
+ };
89
+
90
+ export const content: ToolLocaleContent<PromptLibraryUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ ui,
95
+ faqTitle: '자주 묻는 질문',
96
+ faq: faqData,
97
+ bibliographyTitle: '프롬프트 엔지니어링 참고자료',
98
+ bibliography: [
99
+ { name: 'Prompt Engineering Guide (DAIR.AI)', url: 'https://www.promptingguide.ai/' },
100
+ { name: '프롬프트 엔지니어링이란 (Google Cloud)', url: 'https://cloud.google.com/discover/what-is-prompt-engineering' },
101
+ ],
102
+ howTo: howToData,
103
+ schemas: [faqSchema, howToSchema, appSchema],
104
+ seo: [
105
+ { type: 'title', text: '프롬프트 라이브러리가 필요한 이유', level: 2 },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'ChatGPT, Claude, Midjourney 같은 AI 도구를 자주 사용한다면, 같은 지시어를 반복해서 작성하느라 시간을 낭비한 경험이 있을 것입니다. <strong>프롬프트 라이브러리</strong>는 즐겨 쓰는 명령어를 다시 작성하는 번거로움을 완전히 해소해 주는 해결책입니다.',
109
+ },
110
+ { type: 'title', text: '프롬프트 정리의 장점', level: 3 },
111
+ {
112
+ type: 'list',
113
+ items: [
114
+ '<strong>즉시 검색:</strong> 몇 달 전에 사용했던 특정 지시어도 간단한 텍스트 검색으로 바로 찾을 수 있습니다.',
115
+ '<strong>태그 분류:</strong> 프롬프트에 "marketing", "programming", "copywriting" 같은 태그를 붙여 빠르게 필터링하세요.',
116
+ '<strong>원클릭 복사:</strong> 클릭 한 번으로 전체 텍스트를 클립보드에 복사합니다.',
117
+ '<strong>완전한 개인 보호:</strong> 모든 데이터는 localStorage를 통해 브라우저에 로컬로 저장됩니다.',
118
+ ],
119
+ },
120
+ { type: 'title', text: '프롬프트의 변수 활용', level: 3 },
121
+ {
122
+ type: 'paragraph',
123
+ html: '프롬프트에 <strong>[변수명]</strong> 표기법을 사용하면 동적으로 입력 가능한 필드를 만들 수 있습니다. 카드를 열면 정의된 각 변수에 대한 입력란이 나타나며, 값을 채운 상태로 프롬프트가 복사되어 AI에 바로 붙여넣을 수 있습니다.',
124
+ },
125
+ { type: 'title', text: '프롬프트 공유하기', level: 3 },
126
+ {
127
+ type: 'paragraph',
128
+ html: '각 프롬프트는 URL로 공유할 수 있습니다. 공유 버튼을 누르면 링크가 생성되며, 해당 링크를 열면 프롬프트 내용이 미리 채워진 작성 양식이 표시됩니다.',
129
+ },
130
+ ],
131
+ };
132
+