@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,165 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LlmCostCalculatorUI } from '../ui';
4
+
5
+ const slug = 'llm-kostnadskalkylator';
6
+ const title = 'LLM Kostnadskalkylatör. AI Modellprisbedömmare';
7
+ const description =
8
+ 'Gratis onlineverktyg för att uppskatta kostnaden för LLM API-anrop. Jämför GPT-4o, Claude, Gemini, Llama och mer med verkliga tokenpriser per miljon.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Hur beräknas kostnaden för LLM API?',
13
+ answer:
14
+ 'LLM API:er tar separat betalt för indatatoken (din prompt) och utdatatoken (svaret). Total kostnad per förfrågan är: (indatatoken × indatapris + utdatatoken × utdatapris) / 1,000,000. Multiplicera med antal förfrågningar för att få total månadskostnad.',
15
+ },
16
+ {
17
+ question: 'Vad är tokens och hur förhåller de sig till ord?',
18
+ answer:
19
+ 'En token är den grundläggande textenheten som en språkmodell bearbetar. I genomsnitt motsvarar 1 token cirka 0,75 ord på engelska, så 1,000 tokens ≈ 750 ord. Priser anges per miljon tokens ($/1M), vilket är standardprisenheten hos alla leverantörer.',
20
+ },
21
+ {
22
+ question: 'Varför är utdatatoken dyrare än indatatoken?',
23
+ answer:
24
+ 'Att generera text (utdata) kräver att modellen beräknar varje token sekventiellt, vilket är mer beräkningsintensivt än att läsa indata. De flesta leverantörer tar ut 3–5 gånger mer för utdatatoken än indatatoken.',
25
+ },
26
+ {
27
+ question: 'Hur kan jag minska mina LLM API-kostnader?',
28
+ answer:
29
+ 'Använd den minsta modellen som uppfyller dina kvalitetskrav. Cachelagra repeterade prompts när möjligt. Minimera systemprompten och undvik onödig kontext. För enkla klassificerings- eller extraheringsuppgifter erbjuder mindre modeller som GPT-4o mini eller Gemini Flash betydande besparingar.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Välj en modell',
36
+ text: 'Välj AI-modellen du planerar att använda från den grupperade listrutan. Modeller är organiserade efter leverantör.',
37
+ },
38
+ {
39
+ name: 'Ange tokenantal',
40
+ text: 'Ange det förväntade antalet indatatoken (din prompt) och utdatatoken (svaret). Ordestimater visas under varje fält.',
41
+ },
42
+ {
43
+ name: 'Ange antal förfrågningar',
44
+ text: 'Använd skjutreglaget eller nummeringsinmatningen för att ange hur många API-anrop du förväntar. Total kostnad uppdateras i realtid.',
45
+ },
46
+ ];
47
+
48
+ const faqSchema: WithContext<FAQPage> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'FAQPage',
51
+ mainEntity: faqData.map((item) => ({
52
+ '@type': 'Question',
53
+ name: item.question,
54
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
55
+ })),
56
+ };
57
+
58
+ const howToSchema: WithContext<HowToThing> = {
59
+ '@context': 'https://schema.org',
60
+ '@type': 'HowTo',
61
+ name: title,
62
+ description,
63
+ step: howToData.map((step, i) => ({
64
+ '@type': 'HowToStep',
65
+ position: i + 1,
66
+ name: step.name,
67
+ text: step.text,
68
+ })),
69
+ };
70
+
71
+ const appSchema: WithContext<SoftwareApplication> = {
72
+ '@context': 'https://schema.org',
73
+ '@type': 'SoftwareApplication',
74
+ name: title,
75
+ description,
76
+ applicationCategory: 'DeveloperApplication',
77
+ operatingSystem: 'All',
78
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
79
+ inLanguage: 'sv',
80
+ };
81
+
82
+ const ui: LlmCostCalculatorUI = {
83
+ labelModel: 'LLM Modell',
84
+ labelInputTokens: 'Indatatoken',
85
+ labelOutputTokens: 'Utdatatoken',
86
+ labelRequests: 'Antal Förfrågningar',
87
+ unitWords: 'ord',
88
+ labelCostPerRequest: 'Kostnad per Förfrågan',
89
+ labelTotal: 'Uppskattad Total Kostnad',
90
+ labelInput: 'Indata',
91
+ labelOutput: 'Utdata',
92
+ };
93
+
94
+ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
95
+ slug,
96
+ title,
97
+ description,
98
+ ui,
99
+ faqTitle: 'Vanliga Frågor',
100
+ faq: faqData,
101
+ bibliographyTitle: 'Referenser och Priskällor',
102
+ bibliography: [
103
+ {
104
+ name: 'OpenAI API-prissättning',
105
+ url: 'https://openai.com/pricing',
106
+ },
107
+ {
108
+ name: 'Anthropic API-prissättning',
109
+ url: 'https://www.anthropic.com/pricing',
110
+ },
111
+ {
112
+ name: 'Google AI Studio-prissättning',
113
+ url: 'https://ai.google.dev/pricing',
114
+ },
115
+ {
116
+ name: 'OpenAI Tokenizer',
117
+ url: 'https://platform.openai.com/tokenizer',
118
+ },
119
+ ],
120
+ howTo: howToData,
121
+ schemas: [faqSchema, howToSchema, appSchema],
122
+ seo: [
123
+ {
124
+ type: 'title',
125
+ text: 'Förstå LLM API-prissättning',
126
+ level: 2,
127
+ },
128
+ {
129
+ type: 'paragraph',
130
+ html: 'API:er för stora språkmodeller debiterar baserat på tokenanvändning, inte tid eller förfrågningar. Varje API-anrop har två kostnader: <strong>inmatningskostnaden</strong> (bearbetar din prompt) och <strong>utmatningskostnaden</strong> (genererar svaret). Att förstå denna uppdelning är nyckeln till att uppskatta din månadsfaktura korrekt.',
131
+ },
132
+ {
133
+ type: 'title',
134
+ text: 'Indatatoken vs utdatatoken',
135
+ level: 3,
136
+ },
137
+ {
138
+ type: 'grid',
139
+ columns: 2,
140
+ },
141
+ {
142
+ type: 'card',
143
+ title: 'Indatatoken',
144
+ html: '<p>Indatatoken representerar allt som skickas <strong>till</strong> modellen: din systemprompt, konversationshistorik och användarmeddelande. De är billigare eftersom modellen bearbetar dem parallellt. En typisk systemprompt på 200 ord kostar ungefär 267 indatatoken.</p>',
145
+ },
146
+ {
147
+ type: 'card',
148
+ title: 'Utdatatoken',
149
+ html: '<p>Utdatatoken genereras sekventiellt, en i taget, vilket gör dem beräkningsmässigt dyrare. De flesta leverantörer tar ut <strong>3–5× mer</strong> för utdatatoken. Ett svar på 300 ord genererar ungefär 400 utdatatoken. Att hålla svaren korta är en av de mest effektiva kostnadsbesparingsstrategi.</p>',
150
+ },
151
+ {
152
+ type: 'title',
153
+ text: 'Välja rätt modell för din budget',
154
+ level: 3,
155
+ },
156
+ {
157
+ type: 'tip',
158
+ html: 'Börja med en kapabel mellanniesemodell som <code>GPT-4o mini</code> eller <code>Gemini 1.5 Flash</code> och uppgradera bara om kvaliteten är otillräcklig. Skillnaden i kostnad mellan en liten och stor modell kan vara 10–100×.',
159
+ },
160
+ {
161
+ type: 'paragraph',
162
+ html: 'Inte alla uppgifter kräver samma modellkvalitet. Klassificerings-, extraherings- och sammanfattningsuppgifter fungerar ofta bra med mindre, billigare modeller. Reservera stora gränsmodeller som <code>claude-3-opus</code> eller <code>o1</code> för komplexa resonemangsuppgifter där kvaliteten direkt påverkar resultaten.',
163
+ },
164
+ ],
165
+ };
@@ -0,0 +1,165 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LlmCostCalculatorUI } from '../ui';
4
+
5
+ const slug = 'llm-maliyet-hesaplayicisi';
6
+ const title = 'LLM Maliyet Hesaplayıcısı. AI Model Fiyatlandırma Tahmincisi';
7
+ const description =
8
+ 'LLM API çağrılarının maliyetini tahmin etmek için ücretsiz çevrimiçi araç. GPT-4o, Claude, Gemini, Llama ve daha fazlasını milyonda tokencik gerçek fiyatlarla karşılaştırın.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'LLM API maliyeti nasıl hesaplanır?',
13
+ answer:
14
+ 'LLM API\'leri giriş token\'ları (sizin prompt\'unuz) ve çıkış token\'ları (yanıt) için ayrı ücret alırlar. İstek başına toplam maliyet: (giriş token\'ları × giriş fiyatı + çıkış token\'ları × çıkış fiyatı) / 1.000.000. Aylık toplam maliyeti elde etmek için istek sayısıyla çarpın.',
15
+ },
16
+ {
17
+ question: 'Token\'lar nedir ve sözcüklerle nasıl ilişkili olur?',
18
+ answer:
19
+ 'Token, bir dil modelinin işlediği temel metin birimidir. Ortalama olarak, 1 token İngilizce\'de yaklaşık 0,75 sözcüğe eşittir, bu nedenle 1.000 token ≈ 750 sözcük. Fiyatlar milyon token başına belirtilir ($/1M), bu da tüm sağlayıcılarda standart fiyatlandırma birimidir.',
20
+ },
21
+ {
22
+ question: 'Çıkış token\'ları neden giriş token\'larından daha pahalıdır?',
23
+ answer:
24
+ 'Metin oluşturma (çıkış), modelin her token\'u sırayla hesaplamasını gerektirir ve bu, girişi okumaktan hesaplamalar açısından daha yoğundur. Çoğu sağlayıcı çıkış token\'ları için giriş token\'larından 3–5 kat daha fazla ücret alır.',
25
+ },
26
+ {
27
+ question: 'LLM API maliyetlerimi nasıl azaltabilirim?',
28
+ answer:
29
+ 'Kalite gereksinimlerinizi karşılayan en küçük modeli kullanın. Mümkün olduğunda tekrarlanan prompt\'ları önbelleğe alın. Sistem prompt\'unu minimize edin ve gereksiz bağlamdan kaçının. Basit sınıflandırma veya çıkarma görevleri için GPT-4o mini veya Gemini Flash gibi daha küçük modeller önemli tasarruf sağlar.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Bir model seçin',
36
+ text: 'Kullanmayı planladığınız AI modelini gruplandırılmış açılır menüden seçin. Modeller sağlayıcı tarafından düzenlenmiştir.',
37
+ },
38
+ {
39
+ name: 'Token sayılarını girin',
40
+ text: 'Beklenen giriş token\'ları (sizin prompt\'unuz) ve çıkış token\'ları (yanıt) sayısını girin. Sözcük tahminleri her alanın altında görünür.',
41
+ },
42
+ {
43
+ name: 'İstek sayısını ayarlayın',
44
+ text: 'Kaç tane API çağrısı beklediğinizi girmek için kaydırıcı veya sayı giriş kullanın. Toplam maliyet gerçek zamanlı olarak güncellenir.',
45
+ },
46
+ ];
47
+
48
+ const faqSchema: WithContext<FAQPage> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'FAQPage',
51
+ mainEntity: faqData.map((item) => ({
52
+ '@type': 'Question',
53
+ name: item.question,
54
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
55
+ })),
56
+ };
57
+
58
+ const howToSchema: WithContext<HowToThing> = {
59
+ '@context': 'https://schema.org',
60
+ '@type': 'HowTo',
61
+ name: title,
62
+ description,
63
+ step: howToData.map((step, i) => ({
64
+ '@type': 'HowToStep',
65
+ position: i + 1,
66
+ name: step.name,
67
+ text: step.text,
68
+ })),
69
+ };
70
+
71
+ const appSchema: WithContext<SoftwareApplication> = {
72
+ '@context': 'https://schema.org',
73
+ '@type': 'SoftwareApplication',
74
+ name: title,
75
+ description,
76
+ applicationCategory: 'DeveloperApplication',
77
+ operatingSystem: 'All',
78
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
79
+ inLanguage: 'tr',
80
+ };
81
+
82
+ const ui: LlmCostCalculatorUI = {
83
+ labelModel: 'LLM Modeli',
84
+ labelInputTokens: 'Giriş Token\'ları',
85
+ labelOutputTokens: 'Çıkış Token\'ları',
86
+ labelRequests: 'İstek Sayısı',
87
+ unitWords: 'sözcükler',
88
+ labelCostPerRequest: 'İstek Başına Maliyet',
89
+ labelTotal: 'Tahmini Toplam Maliyet',
90
+ labelInput: 'Giriş',
91
+ labelOutput: 'Çıkış',
92
+ };
93
+
94
+ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
95
+ slug,
96
+ title,
97
+ description,
98
+ ui,
99
+ faqTitle: 'Sık Sorulan Sorular',
100
+ faq: faqData,
101
+ bibliographyTitle: 'Referanslar ve Fiyatlandırma Kaynakları',
102
+ bibliography: [
103
+ {
104
+ name: 'OpenAI API Fiyatlandırması',
105
+ url: 'https://openai.com/pricing',
106
+ },
107
+ {
108
+ name: 'Anthropic API Fiyatlandırması',
109
+ url: 'https://www.anthropic.com/pricing',
110
+ },
111
+ {
112
+ name: 'Google AI Studio Fiyatlandırması',
113
+ url: 'https://ai.google.dev/pricing',
114
+ },
115
+ {
116
+ name: 'OpenAI Tokenizer',
117
+ url: 'https://platform.openai.com/tokenizer',
118
+ },
119
+ ],
120
+ howTo: howToData,
121
+ schemas: [faqSchema, howToSchema, appSchema],
122
+ seo: [
123
+ {
124
+ type: 'title',
125
+ text: 'LLM API Fiyatlandırmasını Anlama',
126
+ level: 2,
127
+ },
128
+ {
129
+ type: 'paragraph',
130
+ html: 'Büyük Dil Modeli API\'leri zaman veya istek olmaktan ziyade token kullanımına göre ücret alırlar. Her API çağrısı iki maliyete sahiptir: <strong>giriş maliyeti</strong> (prompt\'unuzu işleme) ve <strong>çıkış maliyeti</strong> (yanıt oluşturma). Bu ayrımı anlamak, aylık faturanızı doğru şekilde tahmin etmenin anahtarıdır.',
131
+ },
132
+ {
133
+ type: 'title',
134
+ text: 'Giriş token\'ları vs çıkış token\'ları',
135
+ level: 3,
136
+ },
137
+ {
138
+ type: 'grid',
139
+ columns: 2,
140
+ },
141
+ {
142
+ type: 'card',
143
+ title: 'Giriş token\'ları',
144
+ html: '<p>Giriş token\'ları modele <strong>gönderilen</strong> her şeyi temsil eder: sistem prompt\'unuz, sohbet geçmişi ve kullanıcı mesajı. Model bunları paralel olarak işlediği için daha ucuzdurlar. 200 sözcüklük tipik bir sistem prompt\'u yaklaşık 267 giriş token\'ı maliyete sahiptir.</p>',
145
+ },
146
+ {
147
+ type: 'card',
148
+ title: 'Çıkış token\'ları',
149
+ html: '<p>Çıkış token\'ları sırayla, teker teker oluşturulur ve bu onları hesaplamalar açısından daha pahalı hale getirir. Çoğu sağlayıcı çıkış token\'ları için <strong>3–5 kat daha fazla</strong> ücret alır. 300 sözcüklük bir yanıt yaklaşık 400 çıkış token\'ı üretir. Yanıtları kısa tutmak en etkili maliyet tasarrufu stratejilerinden biridir.</p>',
150
+ },
151
+ {
152
+ type: 'title',
153
+ text: 'Bütçeniz İçin Doğru Modeli Seçme',
154
+ level: 3,
155
+ },
156
+ {
157
+ type: 'tip',
158
+ html: '<code>GPT-4o mini</code> veya <code>Gemini 1.5 Flash</code> gibi yetenekli bir orta katman modeliyle başlayın ve yalnızca kalite yetersizse yükseltin. Küçük ve büyük bir model arasındaki maliyet farkı 10–100× olabilir.',
159
+ },
160
+ {
161
+ type: 'paragraph',
162
+ html: 'Tüm görevler aynı model kalitesini gerektirmez. Sınıflandırma, çıkarma ve özet görevleri genellikle daha küçük, daha ucuz modellerde iyi performans gösterir. <code>claude-3-opus</code> veya <code>o1</code> gibi büyük sınır modelleri, kalite sonuçları doğrudan etkilediği karmaşık akıl yürütme görevleri için rezerv tutun.',
163
+ },
164
+ ],
165
+ };
@@ -0,0 +1,166 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LlmCostCalculatorUI } from '../ui';
4
+
5
+ const slug = 'llm-cost-calculator';
6
+ const title = 'LLM 成本计算器。AI 模型定价估算工具';
7
+ const description =
8
+ '用于估算 LLM API 调用成本的免费在线工具。使用实际百万代币价格比较 GPT-4o、Claude、Gemini、Llama 等。';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'LLM API 成本如何计算?',
13
+ answer:
14
+ 'LLM API 对输入代币(您的提示)和输出代币(响应)分别收费。每个请求的总成本为:(输入代币 × 输入价格 + 输出代币 × 输出价格)/ 1,000,000。乘以请求数得到总月度成本。',
15
+ },
16
+ {
17
+ question: '什么是代币,它们与单词有什么关系?',
18
+ answer:
19
+ '代币是语言模型处理的基本文本单位。平均而言,1 个代币等于英文中约 0.75 个单词,因此 1000 个代币 ≈ 750 个单词。价格以百万代币计 ($/1M),这是所有提供商的标准定价单位。',
20
+ },
21
+ {
22
+ question: '为什么输出代币比输入代币更昂贵?',
23
+ answer:
24
+ '生成文本(输出)需要模型依次计算每个代币,这在计算上比读取输入更密集。大多数提供商对输出代币的收费是输入代币的 3–5 倍。',
25
+ },
26
+ {
27
+ question: '如何降低我的 LLM API 成本?',
28
+ answer:
29
+ '使用满足您质量要求的最小模型。尽可能缓存重复的提示。最小化系统提示长度并避免不必要的上下文。对于简单的分类或提取任务,GPT-4o mini 或 Gemini Flash 等较小的模型可以显著节省成本。',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: '选择模型',
36
+ text: '从分组下拉菜单中选择您计划使用的 AI 模型。模型按提供商组织。',
37
+ },
38
+ {
39
+ name: '输入代币计数',
40
+ text: '输入预期的输入代币数(您的提示)和输出代币数(响应)。单词估计显示在每个字段下方。',
41
+ },
42
+ {
43
+ name: '设置请求数',
44
+ text: '使用滑块或数字输入来输入您预期的 API 调用次数。总成本实时更新。',
45
+ },
46
+ ];
47
+
48
+ const faqSchema: WithContext<FAQPage> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'FAQPage',
51
+ mainEntity: faqData.map((item) => ({
52
+ '@type': 'Question',
53
+ name: item.question,
54
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
55
+ })),
56
+ };
57
+
58
+ const howToSchema: WithContext<HowToThing> = {
59
+ '@context': 'https://schema.org',
60
+ '@type': 'HowTo',
61
+ name: title,
62
+ description,
63
+ step: howToData.map((step, i) => ({
64
+ '@type': 'HowToStep',
65
+ position: i + 1,
66
+ name: step.name,
67
+ text: step.text,
68
+ })),
69
+ };
70
+
71
+ const appSchema: WithContext<SoftwareApplication> = {
72
+ '@context': 'https://schema.org',
73
+ '@type': 'SoftwareApplication',
74
+ name: title,
75
+ description,
76
+ applicationCategory: 'DeveloperApplication',
77
+ operatingSystem: 'All',
78
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
79
+ inLanguage: 'zh',
80
+ };
81
+
82
+ const ui: LlmCostCalculatorUI = {
83
+ labelModel: 'LLM 模型',
84
+ labelInputTokens: '输入代币',
85
+ labelOutputTokens: '输出代币',
86
+ labelRequests: '请求数',
87
+ unitWords: '单词',
88
+ labelCostPerRequest: '每个请求的成本',
89
+ labelTotal: '估算总成本',
90
+ labelInput: '输入',
91
+ labelOutput: '输出',
92
+ };
93
+
94
+ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
95
+ slug,
96
+ title,
97
+ description,
98
+ ui,
99
+ faqTitle: '常见问题',
100
+ faq: faqData,
101
+ bibliographyTitle: '参考资料和定价来源',
102
+ bibliography: [
103
+ {
104
+ name: 'OpenAI API 定价',
105
+ url: 'https://openai.com/pricing',
106
+ },
107
+ {
108
+ name: 'Anthropic API 定价',
109
+ url: 'https://www.anthropic.com/pricing',
110
+ },
111
+ {
112
+ name: 'Google AI Studio 定价',
113
+ url: 'https://ai.google.dev/pricing',
114
+ },
115
+ {
116
+ name: 'OpenAI 令牌生成器',
117
+ url: 'https://platform.openai.com/tokenizer',
118
+ },
119
+ ],
120
+ howTo: howToData,
121
+ schemas: [faqSchema, howToSchema, appSchema],
122
+ seo: [
123
+ {
124
+ type: 'title',
125
+ text: '理解 LLM API 定价',
126
+ level: 2,
127
+ },
128
+ {
129
+ type: 'paragraph',
130
+ html: '大型语言模型 API 根据代币使用情况计费,而不是按时间或请求次数计费。每个 API 调用有两项成本:<strong>输入成本</strong>(处理您的提示)和<strong>输出成本</strong>(生成响应)。理解这种分割是准确估算您每月账单的关键。',
131
+ },
132
+ {
133
+ type: 'title',
134
+ text: '输入代币与输出代币',
135
+ level: 3,
136
+ },
137
+ {
138
+ type: 'grid',
139
+ columns: 2,
140
+ },
141
+ {
142
+ type: 'card',
143
+ title: '输入代币',
144
+ html: '<p>输入代币代表发送<strong>给</strong>模型的所有内容:您的系统提示、对话历史和用户消息。由于模型并行处理它们,所以它们更便宜。一个 200 字的典型系统提示大约需要 267 个输入代币。</p>',
145
+ },
146
+ {
147
+ type: 'card',
148
+ title: '输出代币',
149
+ html: '<p>输出代币按顺序逐个生成,使其在计算上更昂贵。大多数提供商对输出代币的收费<strong>多出 3–5 倍</strong>。一个 300 字的响应会生成大约 400 个输出代币。保持响应简洁是最有效的成本节省策略之一。</p>',
150
+ },
151
+ {
152
+ type: 'title',
153
+ text: '为您的预算选择合适的模型',
154
+ level: 3,
155
+ },
156
+ {
157
+ type: 'tip',
158
+ html: '从有能力的中等层级模型开始,例如 <code>GPT-4o mini</code> 或 <code>Gemini 1.5 Flash</code>,仅在质量不足时升级。小型和大型模型之间的成本差异可能是 10–100×。',
159
+ },
160
+ {
161
+ type: 'paragraph',
162
+ html: '并非所有任务都需要相同的模型质量。分类、提取和汇总任务通常在较小、较便宜的模型上表现良好。保留大型前沿模型,如 <code>claude-3-opus</code> 或 <code>o1</code>,用于复杂的推理任务,其中质量直接影响结果。',
163
+ },
164
+ ],
165
+ };
166
+
@@ -10,6 +10,18 @@ export type LlmCostCalculatorLocaleContent = ToolLocaleContent<LlmCostCalculator
10
10
  import { content as es } from './i18n/es';
11
11
  import { content as en } from './i18n/en';
12
12
  import { content as fr } from './i18n/fr';
13
+ import { content as de } from './i18n/de';
14
+ import { content as id } from './i18n/id';
15
+ import { content as it } from './i18n/it';
16
+ import { content as ja } from './i18n/ja';
17
+ import { content as ko } from './i18n/ko';
18
+ import { content as nl } from './i18n/nl';
19
+ import { content as pl } from './i18n/pl';
20
+ import { content as pt } from './i18n/pt';
21
+ import { content as ru } from './i18n/ru';
22
+ import { content as sv } from './i18n/sv';
23
+ import { content as tr } from './i18n/tr';
24
+ import { content as zh } from './i18n/zh';
13
25
 
14
26
  export const llmCostCalculator: DeveloperToolEntry<LlmCostCalculatorUI> = {
15
27
  id: 'llm-cost-calculator',
@@ -21,6 +33,18 @@ export const llmCostCalculator: DeveloperToolEntry<LlmCostCalculatorUI> = {
21
33
  es: async () => es,
22
34
  en: async () => en,
23
35
  fr: async () => fr,
36
+ de: async () => de,
37
+ id: async () => id,
38
+ it: async () => it,
39
+ ja: async () => ja,
40
+ ko: async () => ko,
41
+ nl: async () => nl,
42
+ pl: async () => pl,
43
+ pt: async () => pt,
44
+ ru: async () => ru,
45
+ sv: async () => sv,
46
+ tr: async () => tr,
47
+ zh: async () => zh,
24
48
  },
25
49
  };
26
50
 
@@ -0,0 +1,121 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { MobileMockupGeneratorUI } from '../ui';
4
+
5
+ const slug = 'mobiler-mockup-generator';
6
+ const title = 'Mobiler Mockup Generator für den App Store. iPhone und Google Pixel';
7
+ const description = 'Erstellen Sie professionelle Präsentationen für den App Store und Google Play. iPhone- und Pixel-Mockups mit individuellen Hintergründen, panoramischen Layouts und massenweisem HD-Export.';
8
+
9
+ const faqData = [
10
+ { question: 'Sind diese Screenshots für den App Store und Google Play gültig?', answer: 'Ja, die generierten Bilder erfüllen die Proportions- und Qualitätsanforderungen der App-Stores. Wählen Sie einfach das passende Gerät (iPhone für iOS, Pixel für Android) vor dem Export.' },
11
+ { question: 'Kann ich eigene benutzerdefinierte Hintergründe verwenden?', answer: 'Selbstverständlich. Neben unserer Premium-Gradienten-Bibliothek können Sie beliebige Bilder von Ihrem Computer hochladen, die als Hintergrundumgebung für Ihre Mockups dienen.' },
12
+ { question: 'Ist es für kommerzielle Nutzung kostenlos?', answer: 'Ja, Sie können die generierten Mockups für kommerzielle Projekte, Portfolios oder Präsentationen ohne Kosten und ohne Wasserzeichen verwenden.' },
13
+ { question: 'Werden meine Screenshots auf einem Server gespeichert?', answer: 'Nein. Der Generator arbeitet zu 100 % lokal in Ihrem Browser. Ihre privaten Bilder verlassen Ihren Computer nie.' },
14
+ ];
15
+
16
+ const howToData = [
17
+ { name: 'Screenshots hochladen', text: 'Ziehen Sie die Screenshots Ihrer mobilen App per Drag-and-Drop oder wählen Sie sie aus, um sie zu präsentieren.' },
18
+ { name: 'Gerät auswählen', text: 'Wählen Sie das Smartphone-Modell (iPhone 15 Pro Max oder Google Pixel 8) je nach Ziel-Store.' },
19
+ { name: 'Umgebung anpassen', text: 'Passen Sie Hintergrund, Gerätewinkel und Marketing-Texte an und wählen Sie das Kompositions-Layout.' },
20
+ { name: 'In HD herunterladen', text: 'Exportieren Sie alle Ergebnisse im hochauflösenden WebP-Format, bereit zum Hochladen in den App-Store.' },
21
+ ];
22
+
23
+ const faqSchema: WithContext<FAQPage> = {
24
+ '@context': 'https://schema.org',
25
+ '@type': 'FAQPage',
26
+ mainEntity: faqData.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
27
+ };
28
+
29
+ const howToSchema: WithContext<HowToThing> = {
30
+ '@context': 'https://schema.org',
31
+ '@type': 'HowTo',
32
+ name: title,
33
+ description,
34
+ step: howToData.map((step, i) => ({ '@type': 'HowToStep', position: i + 1, name: step.name, text: step.text })),
35
+ };
36
+
37
+ const appSchema: WithContext<SoftwareApplication> = {
38
+ '@context': 'https://schema.org',
39
+ '@type': 'SoftwareApplication',
40
+ name: title,
41
+ description,
42
+ applicationCategory: 'DesignApplication',
43
+ operatingSystem: 'All',
44
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
45
+ inLanguage: 'de',
46
+ };
47
+
48
+ const ui: MobileMockupGeneratorUI = {
49
+ labelUpload: 'Screenshots hochladen',
50
+ dropHint: 'Bilder hierher ziehen',
51
+ dropFormats: 'PNG, JPG oder WEBP',
52
+ btnMassReplace: 'Massenersatz (Batch)',
53
+ massReplaceHint: 'Ersetzt die aktuellen Bilder unter Beibehaltung Ihrer Voreinstellungen und Texte. Ideal für schnelle Iterationen.',
54
+ labelSettings: 'Globale Einstellungen',
55
+ labelDevice: 'Gerät',
56
+ labelFont: 'Schriftart',
57
+ labelBackground: 'Hintergrund',
58
+ titleSwapColors: 'Farben tauschen',
59
+ labelAngle: 'Winkel',
60
+ labelSafeArea: 'Safe Area (Oben/Unten)',
61
+ labelSafeAreaColor: 'Bereichsfarbe',
62
+ emptyTitle: 'Noch keine Bilder',
63
+ emptySubtitle: 'Laden Sie Ihre Screenshots hoch, um mit dem Gestalten zu beginnen',
64
+ btnClearAll: 'Leinwand leeren',
65
+ btnExport: 'Alles exportieren (.zip)',
66
+ cardTitleDuplicate: 'Szene duplizieren',
67
+ cardTitleReplace: 'Aktuellen Screenshot ersetzen',
68
+ cardSectionLayouts: 'Master-Layouts',
69
+ cardSectionBranding: 'Branding & Texte',
70
+ cardTitleResetText: 'Text zurücksetzen',
71
+ cardLabelColor: 'Farbe',
72
+ cardTextPlaceholder: 'Text hier eingeben...',
73
+ cardSectionDevice: 'Geräte-Layout',
74
+ cardTitleResetDevice: 'Position zurücksetzen',
75
+ cardSectionScene: 'Requisiten & Hintergrund',
76
+ cardBtnSpecialBg: 'Spezieller Hintergrund',
77
+ cardBtnDeleteScene: 'Szene löschen',
78
+ cardRangeLabelSize: 'Größe',
79
+ cardRangeLabelX: 'X-Achse',
80
+ cardRangeLabelY: 'Y-Achse',
81
+ cardRangeLabelRotation: 'Drehung',
82
+ cardRangeLabelScale: 'Skalierung',
83
+ presetClassic: 'Klassisch',
84
+ presetMobileBottom: 'Handy unten',
85
+ presetMobileTop: 'Handy oben',
86
+ presetFocus: 'Fokus',
87
+ presetDynamic: 'Dynamisch',
88
+ presetSplitLeft: 'Geteilt links',
89
+ presetSplitRight: 'Geteilt rechts',
90
+ presetImageLeft: 'Bild links',
91
+ presetImageRight: 'Bild rechts',
92
+ confirmClear: 'Möchten Sie wirklich alle Mockups löschen?',
93
+ processingExport: 'Wird verarbeitet...',
94
+ exportDone: 'Fertig!',
95
+ };
96
+
97
+ export const content: ToolLocaleContent<MobileMockupGeneratorUI> = {
98
+ slug,
99
+ title,
100
+ description,
101
+ ui,
102
+ faqTitle: 'Häufig gestellte Fragen',
103
+ faq: faqData,
104
+ bibliographyTitle: 'Referenzen',
105
+ bibliography: [
106
+ { name: 'Apple App Store Screenshot Requirements', url: 'https://developer.apple.com/help/app-store-connect/reference/screenshot-specifications' },
107
+ { name: 'Google Play Screenshot Requirements', url: 'https://support.google.com/googleplay/android-developer/answer/9866151' },
108
+ ],
109
+ howTo: howToData,
110
+ schemas: [faqSchema, howToSchema, appSchema],
111
+ seo: [
112
+ { type: 'title', text: 'Heben Sie Ihre Screenshots auf das nächste Level', level: 2 },
113
+ { type: 'paragraph', html: 'Beschränken Sie sich nicht auf flache Screenshots. Unser Mockup-Tool ermöglicht Entwicklern und Designern die Erstellung wirkungsvoller visueller Assets ohne Photoshop oder Figma.' },
114
+ { type: 'title', text: 'Kraft durch Master-Layouts', level: 3 },
115
+ { type: 'grid', columns: 2 },
116
+ { type: 'card', title: 'App Store & Google Play', html: '<p>Steigern Sie Ihre Konversionsrate. iPhone 15 Pro Max und Pixel 8 Mockups sind der weltweite Standard für App-Store-Einträge.</p>' },
117
+ { type: 'card', title: 'Pitch Decks & Marketing', html: '<p>Präsentieren Sie Ihre Ideen überzeugend. Perfekt für Investoren-Präsentationen, Social-Media-Kampagnen und professionelle UI/UX-Design-Portfolios.</p>' },
118
+ { type: 'title', text: 'Professioneller Workflow', level: 3 },
119
+ { type: 'tip', html: 'Nutzen Sie die Voreinstellungen "Geteilt links" und "Geteilt rechts", um nahtlose Mockups zu erstellen, die in Instagram-Karussells oder App-Store-Screenshots fließend von einem Bild zum nächsten übergehen.' },
120
+ ],
121
+ };