@jjlmoya/utils-developer 1.13.0 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/fr.ts +1 -1
  3. package/src/category/i18n/ru.ts +1 -1
  4. package/src/layouts/PreviewLayout.astro +1 -0
  5. package/src/pages/[locale]/[slug].astro +29 -12
  6. package/src/tests/diacritics_density.test.ts +118 -0
  7. package/src/tests/inverted_punctuation.test.ts +113 -0
  8. package/src/tests/no_en_dash.test.ts +73 -0
  9. package/src/tests/script_density.test.ts +94 -0
  10. package/src/tests/shared-test-helpers.ts +56 -0
  11. package/src/tests/tool_exports.test.ts +34 -0
  12. package/src/tool/aspectRatio/aspect-ratio-calculator.css +1 -1
  13. package/src/tool/aspectRatio/i18n/de.ts +1 -1
  14. package/src/tool/aspectRatio/i18n/fr.ts +1 -1
  15. package/src/tool/aspectRatio/i18n/pl.ts +2 -2
  16. package/src/tool/aspectRatio/i18n/ru.ts +4 -4
  17. package/src/tool/aspectRatio/i18n/zh.ts +1 -1
  18. package/src/tool/aspectRatio/seo.astro +2 -1
  19. package/src/tool/calculadoraTiempoDatos/data-time-calculator-web-speed-impact.css +26 -26
  20. package/src/tool/calculadoraTiempoDatos/i18n/de.ts +1 -1
  21. package/src/tool/calculadoraTiempoDatos/i18n/pl.ts +1 -1
  22. package/src/tool/calculadoraTiempoDatos/i18n/ru.ts +5 -5
  23. package/src/tool/calculadoraTiempoDatos/i18n/sv.ts +5 -5
  24. package/src/tool/calculadoraTiempoDatos/i18n/zh.ts +1 -1
  25. package/src/tool/calculadoraTiempoDatos/seo.astro +2 -1
  26. package/src/tool/colorConverter/color-converter-rgb-hex-hsl.css +9 -9
  27. package/src/tool/colorConverter/i18n/de.ts +1 -1
  28. package/src/tool/colorConverter/i18n/ru.ts +2 -2
  29. package/src/tool/colorConverter/seo.astro +2 -1
  30. package/src/tool/conversorExcelCsvHtml/excel-csv-html-table-converter.css +24 -24
  31. package/src/tool/conversorExcelCsvHtml/i18n/es.ts +1 -1
  32. package/src/tool/conversorExcelCsvHtml/i18n/pl.ts +1 -1
  33. package/src/tool/conversorExcelCsvHtml/i18n/ru.ts +2 -2
  34. package/src/tool/conversorExcelCsvHtml/i18n/zh.ts +2 -2
  35. package/src/tool/conversorExcelCsvHtml/seo.astro +2 -1
  36. package/src/tool/cronGenerator/cron.css +5 -5
  37. package/src/tool/cronGenerator/i18n/de.ts +4 -4
  38. package/src/tool/cronGenerator/i18n/en.ts +1 -1
  39. package/src/tool/cronGenerator/i18n/es.ts +2 -2
  40. package/src/tool/cronGenerator/i18n/fr.ts +5 -5
  41. package/src/tool/cronGenerator/i18n/id.ts +1 -1
  42. package/src/tool/cronGenerator/i18n/nl.ts +1 -1
  43. package/src/tool/cronGenerator/i18n/pl.ts +8 -8
  44. package/src/tool/cronGenerator/i18n/pt.ts +1 -1
  45. package/src/tool/cronGenerator/i18n/ru.ts +9 -9
  46. package/src/tool/cronGenerator/i18n/sv.ts +1 -1
  47. package/src/tool/cronGenerator/i18n/zh.ts +3 -3
  48. package/src/tool/cronGenerator/seo.astro +2 -1
  49. package/src/tool/cssSpecificityCalculator/css-specificity-calculator.css +1 -1
  50. package/src/tool/cssSpecificityCalculator/i18n/de.ts +1 -1
  51. package/src/tool/cssSpecificityCalculator/i18n/fr.ts +3 -3
  52. package/src/tool/cssSpecificityCalculator/i18n/pl.ts +2 -2
  53. package/src/tool/cssSpecificityCalculator/i18n/ru.ts +2 -2
  54. package/src/tool/cssSpecificityCalculator/seo.astro +2 -1
  55. package/src/tool/cssToInlineConverter/css-to-inline-converter.css +1 -1
  56. package/src/tool/cssToInlineConverter/i18n/de.ts +6 -6
  57. package/src/tool/cssToInlineConverter/i18n/es.ts +1 -1
  58. package/src/tool/cssToInlineConverter/i18n/fr.ts +3 -3
  59. package/src/tool/cssToInlineConverter/seo.astro +2 -1
  60. package/src/tool/duplicateCssRemover/duplicate-css-remover.css +2 -2
  61. package/src/tool/duplicateCssRemover/i18n/de.ts +7 -7
  62. package/src/tool/duplicateCssRemover/i18n/fr.ts +1 -1
  63. package/src/tool/duplicateCssRemover/i18n/id.ts +1 -1
  64. package/src/tool/duplicateCssRemover/i18n/nl.ts +1 -1
  65. package/src/tool/duplicateCssRemover/i18n/pl.ts +1 -1
  66. package/src/tool/duplicateCssRemover/i18n/pt.ts +1 -1
  67. package/src/tool/duplicateCssRemover/i18n/ru.ts +3 -3
  68. package/src/tool/duplicateCssRemover/i18n/sv.ts +1 -1
  69. package/src/tool/duplicateCssRemover/seo.astro +2 -1
  70. package/src/tool/generadorSecurityTxt/i18n/de.ts +5 -5
  71. package/src/tool/generadorSecurityTxt/i18n/ru.ts +2 -2
  72. package/src/tool/generadorSecurityTxt/security-txt-generator-rfc-9116.css +9 -9
  73. package/src/tool/generadorSecurityTxt/seo.astro +2 -1
  74. package/src/tool/hashGenerator/hash-generator.css +10 -10
  75. package/src/tool/hashGenerator/i18n/ru.ts +5 -5
  76. package/src/tool/hashGenerator/i18n/zh.ts +2 -2
  77. package/src/tool/hashGenerator/seo.astro +2 -1
  78. package/src/tool/inspectorCertificadosSsl/i18n/de.ts +6 -6
  79. package/src/tool/inspectorCertificadosSsl/i18n/ru.ts +5 -5
  80. package/src/tool/inspectorCertificadosSsl/seo.astro +2 -1
  81. package/src/tool/inspectorCertificadosSsl/ssl-tls-certificate-inspector.css +9 -9
  82. package/src/tool/jsonFormatter/i18n/de.ts +4 -4
  83. package/src/tool/jsonFormatter/i18n/en.ts +4 -4
  84. package/src/tool/jsonFormatter/i18n/es.ts +4 -4
  85. package/src/tool/jsonFormatter/i18n/fr.ts +4 -4
  86. package/src/tool/jsonFormatter/i18n/id.ts +4 -4
  87. package/src/tool/jsonFormatter/i18n/it.ts +4 -4
  88. package/src/tool/jsonFormatter/i18n/ja.ts +4 -4
  89. package/src/tool/jsonFormatter/i18n/ko.ts +4 -4
  90. package/src/tool/jsonFormatter/i18n/nl.ts +4 -4
  91. package/src/tool/jsonFormatter/i18n/pl.ts +4 -4
  92. package/src/tool/jsonFormatter/i18n/pt.ts +4 -4
  93. package/src/tool/jsonFormatter/i18n/ru.ts +5 -5
  94. package/src/tool/jsonFormatter/i18n/sv.ts +4 -4
  95. package/src/tool/jsonFormatter/i18n/tr.ts +4 -4
  96. package/src/tool/jsonFormatter/i18n/zh.ts +5 -5
  97. package/src/tool/jsonFormatter/json-formatter.css +33 -33
  98. package/src/tool/jsonFormatter/seo.astro +2 -1
  99. package/src/tool/keycode/i18n/de.ts +7 -7
  100. package/src/tool/keycode/i18n/en.ts +5 -5
  101. package/src/tool/keycode/i18n/es.ts +5 -5
  102. package/src/tool/keycode/i18n/fr.ts +7 -7
  103. package/src/tool/keycode/i18n/id.ts +5 -5
  104. package/src/tool/keycode/i18n/it.ts +5 -5
  105. package/src/tool/keycode/i18n/ja.ts +5 -5
  106. package/src/tool/keycode/i18n/ko.ts +5 -5
  107. package/src/tool/keycode/i18n/nl.ts +5 -5
  108. package/src/tool/keycode/i18n/pl.ts +7 -7
  109. package/src/tool/keycode/i18n/pt.ts +5 -5
  110. package/src/tool/keycode/i18n/ru.ts +6 -6
  111. package/src/tool/keycode/i18n/sv.ts +5 -5
  112. package/src/tool/keycode/i18n/tr.ts +5 -5
  113. package/src/tool/keycode/i18n/zh.ts +5 -5
  114. package/src/tool/keycode/keycode.css +1 -1
  115. package/src/tool/keycode/seo.astro +2 -1
  116. package/src/tool/llmCostCalculator/i18n/de.ts +4 -4
  117. package/src/tool/llmCostCalculator/i18n/en.ts +3 -3
  118. package/src/tool/llmCostCalculator/i18n/fr.ts +3 -3
  119. package/src/tool/llmCostCalculator/i18n/id.ts +3 -3
  120. package/src/tool/llmCostCalculator/i18n/pt.ts +3 -3
  121. package/src/tool/llmCostCalculator/i18n/ru.ts +3 -3
  122. package/src/tool/llmCostCalculator/i18n/sv.ts +3 -3
  123. package/src/tool/llmCostCalculator/i18n/tr.ts +3 -3
  124. package/src/tool/llmCostCalculator/i18n/zh.ts +3 -3
  125. package/src/tool/llmCostCalculator/llm-cost-calculator.css +1 -1
  126. package/src/tool/llmCostCalculator/seo.astro +2 -1
  127. package/src/tool/mobileMockupGenerator/i18n/es.ts +1 -1
  128. package/src/tool/mobileMockupGenerator/mobile-mockup-generator.css +68 -68
  129. package/src/tool/mobileMockupGenerator/seo.astro +2 -1
  130. package/src/tool/musicalTypography/i18n/de.ts +1 -1
  131. package/src/tool/musicalTypography/i18n/fr.ts +1 -1
  132. package/src/tool/musicalTypography/i18n/id.ts +1 -1
  133. package/src/tool/musicalTypography/i18n/it.ts +1 -1
  134. package/src/tool/musicalTypography/i18n/ko.ts +1 -1
  135. package/src/tool/musicalTypography/i18n/ru.ts +3 -3
  136. package/src/tool/musicalTypography/musical-typography.css +8 -8
  137. package/src/tool/musicalTypography/seo.astro +2 -1
  138. package/src/tool/placeholderGenerator/i18n/de.ts +4 -4
  139. package/src/tool/placeholderGenerator/i18n/ru.ts +1 -1
  140. package/src/tool/placeholderGenerator/placeholder-image-generator.css +2 -2
  141. package/src/tool/placeholderGenerator/seo.astro +2 -1
  142. package/src/tool/promptLibrary/i18n/de.ts +1 -1
  143. package/src/tool/promptLibrary/prompt-library.css +30 -30
  144. package/src/tool/promptLibrary/seo.astro +2 -1
  145. package/src/tool/readabilityCalculator/i18n/de.ts +2 -2
  146. package/src/tool/readabilityCalculator/seo.astro +2 -1
  147. package/src/tool/readabilityCalculator/visual-readability-calculator-wcag-apca.css +98 -14
  148. package/src/tool/svgSanitizer/i18n/de.ts +2 -2
  149. package/src/tool/svgSanitizer/i18n/id.ts +1 -1
  150. package/src/tool/svgSanitizer/i18n/pl.ts +1 -1
  151. package/src/tool/svgSanitizer/i18n/ru.ts +7 -7
  152. package/src/tool/svgSanitizer/i18n/sv.ts +3 -3
  153. package/src/tool/svgSanitizer/i18n/tr.ts +3 -3
  154. package/src/tool/svgSanitizer/i18n/zh.ts +3 -3
  155. package/src/tool/svgSanitizer/seo.astro +2 -1
  156. package/src/tool/svgSanitizer/svg-sanitizer.css +7 -7
  157. package/src/tool/svgToCss/i18n/de.ts +2 -2
  158. package/src/tool/svgToCss/i18n/es.ts +1 -1
  159. package/src/tool/svgToCss/i18n/fr.ts +1 -1
  160. package/src/tool/svgToCss/i18n/pl.ts +1 -1
  161. package/src/tool/svgToCss/i18n/ru.ts +2 -2
  162. package/src/tool/svgToCss/i18n/zh.ts +2 -2
  163. package/src/tool/svgToCss/seo.astro +2 -1
  164. package/src/tool/svgToCss/svg-to-css-converter.css +2 -2
  165. package/src/tool/urlCleaner/component.astro +23 -5
  166. package/src/tool/urlCleaner/i18n/de.ts +3 -3
  167. package/src/tool/urlCleaner/i18n/es.ts +1 -1
  168. package/src/tool/urlCleaner/i18n/id.ts +1 -1
  169. package/src/tool/urlCleaner/i18n/nl.ts +1 -1
  170. package/src/tool/urlCleaner/seo.astro +2 -1
  171. package/src/tool/urlCleaner/url-tracking-cleaner.css +104 -14
  172. package/src/tool/urlEncoderDecoder/i18n/de.ts +5 -5
  173. package/src/tool/urlEncoderDecoder/i18n/fr.ts +2 -2
  174. package/src/tool/urlEncoderDecoder/i18n/pl.ts +5 -5
  175. package/src/tool/urlEncoderDecoder/i18n/ru.ts +8 -8
  176. package/src/tool/urlEncoderDecoder/i18n/sv.ts +5 -5
  177. package/src/tool/urlEncoderDecoder/i18n/zh.ts +5 -5
  178. package/src/tool/urlEncoderDecoder/seo.astro +2 -1
  179. package/src/tool/urlEncoderDecoder/url-encoder-decoder.css +1 -1
  180. package/src/tool/utmGenerator/i18n/de.ts +2 -2
  181. package/src/tool/utmGenerator/i18n/pl.ts +5 -5
  182. package/src/tool/utmGenerator/i18n/ru.ts +6 -6
  183. package/src/tool/utmGenerator/seo.astro +2 -1
  184. package/src/tool/utmGenerator/utm-generator.css +6 -6
@@ -21,7 +21,7 @@ const faqData = [
21
21
  {
22
22
  question: 'Why are output tokens more expensive than input tokens?',
23
23
  answer:
24
- 'Generating text (output) requires the model to compute each token sequentially, which is computationally more intensive than reading the input. Most providers charge 35x more for output tokens than input tokens.',
24
+ 'Generating text (output) requires the model to compute each token sequentially, which is computationally more intensive than reading the input. Most providers charge 3-5x more for output tokens than input tokens.',
25
25
  },
26
26
  {
27
27
  question: 'How can I reduce my LLM API costs?',
@@ -146,7 +146,7 @@ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
146
146
  {
147
147
  type: 'card',
148
148
  title: 'Output tokens',
149
- html: '<p>Output tokens are generated one by one in sequence, making them more computationally expensive. Most providers charge <strong>35× more</strong> for output tokens. A 300-word response generates roughly 400 output tokens. Keeping responses concise is one of the most effective cost-saving strategies.</p>',
149
+ html: '<p>Output tokens are generated one by one in sequence, making them more computationally expensive. Most providers charge <strong>3-5× more</strong> for output tokens. A 300-word response generates roughly 400 output tokens. Keeping responses concise is one of the most effective cost-saving strategies.</p>',
150
150
  },
151
151
  {
152
152
  type: 'title',
@@ -155,7 +155,7 @@ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
155
155
  },
156
156
  {
157
157
  type: 'tip',
158
- html: 'Start with a capable mid-tier model like <code>GPT-4o mini</code> or <code>Gemini 1.5 Flash</code> and only upgrade if quality falls short. The cost difference between a small and large model can be 10100×.',
158
+ html: 'Start with a capable mid-tier model like <code>GPT-4o mini</code> or <code>Gemini 1.5 Flash</code> and only upgrade if quality falls short. The cost difference between a small and large model can be 10-100×.',
159
159
  },
160
160
  {
161
161
  type: 'paragraph',
@@ -11,7 +11,7 @@ const faqData = [
11
11
  {
12
12
  question: "Comment le coût d'une API LLM est-il calculé ?",
13
13
  answer:
14
- "Les APIs LLM facturent séparément les tokens d'entrée (le prompt) et les tokens de sortie (la réponse). Le coût total par requête est : (tokens entrée × prix entrée + tokens sortie × prix sortie) / 1 000 000. Multipliez par le nombre de requêtes pour obtenir le coût mensuel total.",
14
+ "Les APIs LLM facturent séparément les tokens d'entrée (le prompt) et les tokens de sortie (la réponse). Le coût total par requête est: (tokens entrée × prix entrée + tokens sortie × prix sortie) / 1 000 000. Multipliez par le nombre de requêtes pour obtenir le coût mensuel total.",
15
15
  },
16
16
  {
17
17
  question: 'Que sont les tokens et comment se rapportent-ils aux mots ?',
@@ -127,7 +127,7 @@ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
127
127
  },
128
128
  {
129
129
  type: 'paragraph',
130
- html: "Les APIs de modèles de langage facturent en fonction de l'utilisation des tokens, et non du temps ou des requêtes. Chaque appel a deux coûts : le <strong>coût d'entrée</strong> (traitement de votre prompt) et le <strong>coût de sortie</strong> (génération de la réponse). Comprendre cette distinction est essentiel pour estimer avec précision votre facture mensuelle.",
130
+ html: "Les APIs de modèles de langage facturent en fonction de l'utilisation des tokens, et non du temps ou des requêtes. Chaque appel a deux coûts: le <strong>coût d'entrée</strong> (traitement de votre prompt) et le <strong>coût de sortie</strong> (génération de la réponse). Comprendre cette distinction est essentiel pour estimer avec précision votre facture mensuelle.",
131
131
  },
132
132
  {
133
133
  type: 'title',
@@ -141,7 +141,7 @@ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
141
141
  {
142
142
  type: 'card',
143
143
  title: "Tokens d'entrée",
144
- html: "<p>Les tokens d'entrée représentent tout ce qui est envoyé <strong>au</strong> modèle : votre prompt système, l'historique de la conversation et le message de l'utilisateur. Ils sont moins chers car le modèle les traite en parallèle. Un prompt système typique de 200 mots génère environ 267 tokens d'entrée.</p>",
144
+ html: "<p>Les tokens d'entrée représentent tout ce qui est envoyé <strong>au</strong> modèle: votre prompt système, l'historique de la conversation et le message de l'utilisateur. Ils sont moins chers car le modèle les traite en parallèle. Un prompt système typique de 200 mots génère environ 267 tokens d'entrée.</p>",
145
145
  },
146
146
  {
147
147
  type: 'card',
@@ -21,7 +21,7 @@ const faqData = [
21
21
  {
22
22
  question: 'Mengapa token output lebih mahal daripada token input?',
23
23
  answer:
24
- 'Menghasilkan teks (output) mengharuskan model menghitung setiap token secara berurutan, yang secara komputasi lebih intensif daripada membaca input. Sebagian besar penyedia mengenakan biaya 35 kali lebih mahal untuk token output dibandingkan token input.',
24
+ 'Menghasilkan teks (output) mengharuskan model menghitung setiap token secara berurutan, yang secara komputasi lebih intensif daripada membaca input. Sebagian besar penyedia mengenakan biaya 3-5 kali lebih mahal untuk token output dibandingkan token input.',
25
25
  },
26
26
  {
27
27
  question: 'Bagaimana cara mengurangi biaya API LLM saya?',
@@ -146,7 +146,7 @@ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
146
146
  {
147
147
  type: 'card',
148
148
  title: 'Token output',
149
- html: '<p>Token output dihasilkan satu per satu secara berurutan, sehingga lebih intensif secara komputasi. Sebagian besar penyedia mengenakan biaya <strong>35× lebih mahal</strong> untuk token output. Respons 300 kata menghasilkan sekitar 400 token output. Menjaga respons tetap ringkas adalah salah satu strategi penghematan biaya yang paling efektif.</p>',
149
+ html: '<p>Token output dihasilkan satu per satu secara berurutan, sehingga lebih intensif secara komputasi. Sebagian besar penyedia mengenakan biaya <strong>3-5× lebih mahal</strong> untuk token output. Respons 300 kata menghasilkan sekitar 400 token output. Menjaga respons tetap ringkas adalah salah satu strategi penghematan biaya yang paling efektif.</p>',
150
150
  },
151
151
  {
152
152
  type: 'title',
@@ -155,7 +155,7 @@ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
155
155
  },
156
156
  {
157
157
  type: 'tip',
158
- html: 'Mulailah dengan model kelas menengah yang mumpuni seperti <code>GPT-4o mini</code> atau <code>Gemini 1.5 Flash</code> dan naik ke model yang lebih besar hanya jika kualitasnya belum memadai. Perbedaan biaya antara model kecil dan besar bisa mencapai 10100×.',
158
+ html: 'Mulailah dengan model kelas menengah yang mumpuni seperti <code>GPT-4o mini</code> atau <code>Gemini 1.5 Flash</code> dan naik ke model yang lebih besar hanya jika kualitasnya belum memadai. Perbedaan biaya antara model kecil dan besar bisa mencapai 10-100×.',
159
159
  },
160
160
  {
161
161
  type: 'paragraph',
@@ -21,7 +21,7 @@ const faqData = [
21
21
  {
22
22
  question: 'Por que os tokens de saída são mais caros que os de entrada?',
23
23
  answer:
24
- 'Gerar texto (saída) requer que o modelo compute cada token sequencialmente, o que é computacionalmente mais intensivo do que ler a entrada. A maioria dos provedores cobra 35x mais para tokens de saída do que de entrada.',
24
+ 'Gerar texto (saída) requer que o modelo compute cada token sequencialmente, o que é computacionalmente mais intensivo do que ler a entrada. A maioria dos provedores cobra 3-5x mais para tokens de saída do que de entrada.',
25
25
  },
26
26
  {
27
27
  question: 'Como posso reduzir meus custos de API LLM?',
@@ -146,7 +146,7 @@ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
146
146
  {
147
147
  type: 'card',
148
148
  title: 'Tokens de saída',
149
- html: '<p>Os tokens de saída são gerados um por um em sequência, tornando-os computacionalmente mais caros. A maioria dos provedores cobra <strong>35× mais</strong> para tokens de saída. Uma resposta de 300 palavras gera aproximadamente 400 tokens de saída. Manter as respostas concisas é uma das estratégias mais eficazes de economia de custos.</p>',
149
+ html: '<p>Os tokens de saída são gerados um por um em sequência, tornando-os computacionalmente mais caros. A maioria dos provedores cobra <strong>3-5× mais</strong> para tokens de saída. Uma resposta de 300 palavras gera aproximadamente 400 tokens de saída. Manter as respostas concisas é uma das estratégias mais eficazes de economia de custos.</p>',
150
150
  },
151
151
  {
152
152
  type: 'title',
@@ -155,7 +155,7 @@ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
155
155
  },
156
156
  {
157
157
  type: 'tip',
158
- html: 'Comece com um modelo de nível médio capaz como <code>GPT-4o mini</code> ou <code>Gemini 1.5 Flash</code> e atualize apenas se a qualidade for insuficiente. A diferença de custo entre um modelo pequeno e grande pode ser 10100×.',
158
+ html: 'Comece com um modelo de nível médio capaz como <code>GPT-4o mini</code> ou <code>Gemini 1.5 Flash</code> e atualize apenas se a qualidade for insuficiente. A diferença de custo entre um modelo pequeno e grande pode ser 10-100×.',
159
159
  },
160
160
  {
161
161
  type: 'paragraph',
@@ -21,7 +21,7 @@ const faqData = [
21
21
  {
22
22
  question: 'Почему выходные токены дороже входных?',
23
23
  answer:
24
- 'Генерирование текста (выход) требует, чтобы модель последовательно вычисляла каждый токен, что вычислительно более интенсивно, чем чтение входа. Большинство провайдеров взимают в 35 раз больше за выходные токены, чем за входные.',
24
+ 'Генерирование текста (выход) требует, чтобы модель последовательно вычисляла каждый токен, что вычислительно более интенсивно, чем чтение входа. Большинство провайдеров взимают в 3-5 раз больше за выходные токены, чем за входные.',
25
25
  },
26
26
  {
27
27
  question: 'Как я могу снизить свои расходы на API LLM?',
@@ -146,7 +146,7 @@ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
146
146
  {
147
147
  type: 'card',
148
148
  title: 'Выходные токены',
149
- html: '<p>Выходные токены генерируются один за другим последовательно, делая их вычислительно более дорогостоящими. Большинство провайдеров взимают <strong>35× больше</strong> за выходные токены. Ответ из 300 слов генерирует примерно 400 выходных токенов. Сохранение ответов краткими - одна из наиболее эффективных стратегий экономии затрат.</p>',
149
+ html: '<p>Выходные токены генерируются один за другим последовательно, делая их вычислительно более дорогостоящими. Большинство провайдеров взимают <strong>3-5× больше</strong> за выходные токены. Ответ из 300 слов генерирует примерно 400 выходных токенов. Сохранение ответов краткими - одна из наиболее эффективных стратегий экономии затрат.</p>',
150
150
  },
151
151
  {
152
152
  type: 'title',
@@ -155,7 +155,7 @@ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
155
155
  },
156
156
  {
157
157
  type: 'tip',
158
- html: 'Начните с способной модели среднего уровня, такой как <code>GPT-4o mini</code> или <code>Gemini 1.5 Flash</code>, и обновляйте, только если качество недостаточно. Разница в стоимости между маленькой и большой моделью может быть 10100×.',
158
+ html: 'Начните с способной модели среднего уровня, такой как <code>GPT-4o mini</code> или <code>Gemini 1.5 Flash</code>, и обновляйте, только если качество недостаточно. Разница в стоимости между маленькой и большой моделью может быть 10-100×.',
159
159
  },
160
160
  {
161
161
  type: 'paragraph',
@@ -21,7 +21,7 @@ const faqData = [
21
21
  {
22
22
  question: 'Varför är utdatatoken dyrare än indatatoken?',
23
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 35 gånger mer för utdatatoken än indatatoken.',
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
25
  },
26
26
  {
27
27
  question: 'Hur kan jag minska mina LLM API-kostnader?',
@@ -146,7 +146,7 @@ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
146
146
  {
147
147
  type: 'card',
148
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>35× 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>',
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
150
  },
151
151
  {
152
152
  type: 'title',
@@ -155,7 +155,7 @@ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
155
155
  },
156
156
  {
157
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 10100×.',
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
159
  },
160
160
  {
161
161
  type: 'paragraph',
@@ -21,7 +21,7 @@ const faqData = [
21
21
  {
22
22
  question: 'Çıkış token\'ları neden giriş token\'larından daha pahalıdır?',
23
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 35 kat daha fazla ücret alır.',
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
25
  },
26
26
  {
27
27
  question: 'LLM API maliyetlerimi nasıl azaltabilirim?',
@@ -146,7 +146,7 @@ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
146
146
  {
147
147
  type: 'card',
148
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>35 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>',
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
150
  },
151
151
  {
152
152
  type: 'title',
@@ -155,7 +155,7 @@ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
155
155
  },
156
156
  {
157
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ı 10100× olabilir.',
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
159
  },
160
160
  {
161
161
  type: 'paragraph',
@@ -21,7 +21,7 @@ const faqData = [
21
21
  {
22
22
  question: '为什么输出代币比输入代币更昂贵?',
23
23
  answer:
24
- '生成文本(输出)需要模型依次计算每个代币,这在计算上比读取输入更密集。大多数提供商对输出代币的收费是输入代币的 35 倍。',
24
+ '生成文本(输出)需要模型依次计算每个代币,这在计算上比读取输入更密集。大多数提供商对输出代币的收费是输入代币的 3-5 倍。',
25
25
  },
26
26
  {
27
27
  question: '如何降低我的 LLM API 成本?',
@@ -146,7 +146,7 @@ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
146
146
  {
147
147
  type: 'card',
148
148
  title: '输出代币',
149
- html: '<p>输出代币按顺序逐个生成,使其在计算上更昂贵。大多数提供商对输出代币的收费<strong>多出 35 倍</strong>。一个 300 字的响应会生成大约 400 个输出代币。保持响应简洁是最有效的成本节省策略之一。</p>',
149
+ html: '<p>输出代币按顺序逐个生成,使其在计算上更昂贵。大多数提供商对输出代币的收费<strong>多出 3-5 倍</strong>。一个 300 字的响应会生成大约 400 个输出代币。保持响应简洁是最有效的成本节省策略之一。</p>',
150
150
  },
151
151
  {
152
152
  type: 'title',
@@ -155,7 +155,7 @@ export const content: ToolLocaleContent<LlmCostCalculatorUI> = {
155
155
  },
156
156
  {
157
157
  type: 'tip',
158
- html: '从有能力的中等层级模型开始,例如 <code>GPT-4o mini</code> 或 <code>Gemini 1.5 Flash</code>,仅在质量不足时升级。小型和大型模型之间的成本差异可能是 10100×。',
158
+ html: '从有能力的中等层级模型开始,例如 <code>GPT-4o mini</code> 或 <code>Gemini 1.5 Flash</code>,仅在质量不足时升级。小型和大型模型之间的成本差异可能是 10-100×。',
159
159
  },
160
160
  {
161
161
  type: 'paragraph',
@@ -13,7 +13,7 @@
13
13
  --llm-total-to: #9333ea;
14
14
  }
15
15
 
16
- :global(.theme-dark) .llm-root {
16
+ .theme-dark .llm-root {
17
17
  --llm-card-bg: rgba(15, 23, 42, 0.9);
18
18
  --llm-card-border: rgba(255, 255, 255, 0.1);
19
19
  --llm-text: #f1f5f9;
@@ -9,6 +9,7 @@ interface Props {
9
9
 
10
10
  const { locale = 'es' } = Astro.props;
11
11
  const content = await llmCostCalculator.i18n[locale]?.();
12
+ if (!content) return null;
12
13
  ---
13
14
 
14
- {content && <SEORenderer content={{ locale, sections: content.seo }} />}
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -91,7 +91,7 @@ const ui: MobileMockupGeneratorUI = {
91
91
  presetImageRight: 'Imagen Der.',
92
92
  confirmClear: '¿Estás seguro de eliminar todos los mockups?',
93
93
  processingExport: 'Procesando...',
94
- exportDone: 'Listo!',
94
+ exportDone: '¡Listo!',
95
95
  };
96
96
 
97
97
  export const content: ToolLocaleContent<MobileMockupGeneratorUI> = {