@jjlmoya/utils-cooking 1.12.0 → 1.14.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 (182) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +94 -0
  3. package/src/category/i18n/id.ts +94 -0
  4. package/src/category/i18n/it.ts +94 -0
  5. package/src/category/i18n/ja.ts +94 -0
  6. package/src/category/i18n/ko.ts +94 -0
  7. package/src/category/i18n/nl.ts +94 -0
  8. package/src/category/i18n/pl.ts +94 -0
  9. package/src/category/i18n/pt.ts +94 -0
  10. package/src/category/i18n/ru.ts +94 -0
  11. package/src/category/i18n/sv.ts +94 -0
  12. package/src/category/i18n/tr.ts +94 -0
  13. package/src/category/i18n/zh.ts +94 -0
  14. package/src/category/index.ts +12 -0
  15. package/src/tests/faq_count.test.ts +1 -1
  16. package/src/tests/i18n_coverage.test.ts +36 -0
  17. package/src/tests/locale_completeness.test.ts +1 -1
  18. package/src/tests/slug_language_code_format.test.ts +23 -0
  19. package/src/tests/slug_uniqueness.test.ts +81 -0
  20. package/src/tests/title_quality.test.ts +1 -1
  21. package/src/tool/american-kitchen-converter/i18n/de.ts +356 -0
  22. package/src/tool/american-kitchen-converter/i18n/id.ts +356 -0
  23. package/src/tool/american-kitchen-converter/i18n/it.ts +356 -0
  24. package/src/tool/american-kitchen-converter/i18n/ja.ts +356 -0
  25. package/src/tool/american-kitchen-converter/i18n/ko.ts +356 -0
  26. package/src/tool/american-kitchen-converter/i18n/nl.ts +356 -0
  27. package/src/tool/american-kitchen-converter/i18n/pl.ts +356 -0
  28. package/src/tool/american-kitchen-converter/i18n/pt.ts +356 -0
  29. package/src/tool/american-kitchen-converter/i18n/ru.ts +356 -0
  30. package/src/tool/american-kitchen-converter/i18n/sv.ts +356 -0
  31. package/src/tool/american-kitchen-converter/i18n/tr.ts +356 -0
  32. package/src/tool/american-kitchen-converter/i18n/zh.ts +356 -0
  33. package/src/tool/american-kitchen-converter/index.ts +12 -0
  34. package/src/tool/banana-ripeness/i18n/de.ts +248 -0
  35. package/src/tool/banana-ripeness/i18n/fr.ts +1 -1
  36. package/src/tool/banana-ripeness/i18n/id.ts +248 -0
  37. package/src/tool/banana-ripeness/i18n/it.ts +248 -0
  38. package/src/tool/banana-ripeness/i18n/ja.ts +248 -0
  39. package/src/tool/banana-ripeness/i18n/ko.ts +248 -0
  40. package/src/tool/banana-ripeness/i18n/nl.ts +248 -0
  41. package/src/tool/banana-ripeness/i18n/pl.ts +248 -0
  42. package/src/tool/banana-ripeness/i18n/pt.ts +248 -0
  43. package/src/tool/banana-ripeness/i18n/ru.ts +248 -0
  44. package/src/tool/banana-ripeness/i18n/sv.ts +248 -0
  45. package/src/tool/banana-ripeness/i18n/tr.ts +248 -0
  46. package/src/tool/banana-ripeness/i18n/zh.ts +248 -0
  47. package/src/tool/banana-ripeness/index.ts +12 -0
  48. package/src/tool/brine/i18n/de.ts +253 -0
  49. package/src/tool/brine/i18n/id.ts +253 -0
  50. package/src/tool/brine/i18n/it.ts +253 -0
  51. package/src/tool/brine/i18n/ja.ts +253 -0
  52. package/src/tool/brine/i18n/ko.ts +253 -0
  53. package/src/tool/brine/i18n/nl.ts +253 -0
  54. package/src/tool/brine/i18n/pl.ts +253 -0
  55. package/src/tool/brine/i18n/pt.ts +253 -0
  56. package/src/tool/brine/i18n/ru.ts +253 -0
  57. package/src/tool/brine/i18n/sv.ts +253 -0
  58. package/src/tool/brine/i18n/tr.ts +253 -0
  59. package/src/tool/brine/i18n/zh.ts +253 -0
  60. package/src/tool/brine/index.ts +12 -0
  61. package/src/tool/cookware-guide/i18n/de.ts +200 -0
  62. package/src/tool/cookware-guide/i18n/fr.ts +3 -3
  63. package/src/tool/cookware-guide/i18n/id.ts +200 -0
  64. package/src/tool/cookware-guide/i18n/it.ts +200 -0
  65. package/src/tool/cookware-guide/i18n/ja.ts +200 -0
  66. package/src/tool/cookware-guide/i18n/ko.ts +200 -0
  67. package/src/tool/cookware-guide/i18n/nl.ts +200 -0
  68. package/src/tool/cookware-guide/i18n/pl.ts +200 -0
  69. package/src/tool/cookware-guide/i18n/pt.ts +200 -0
  70. package/src/tool/cookware-guide/i18n/ru.ts +200 -0
  71. package/src/tool/cookware-guide/i18n/sv.ts +200 -0
  72. package/src/tool/cookware-guide/i18n/tr.ts +200 -0
  73. package/src/tool/cookware-guide/i18n/zh.ts +200 -0
  74. package/src/tool/cookware-guide/index.ts +12 -0
  75. package/src/tool/egg-timer/i18n/de.ts +252 -0
  76. package/src/tool/egg-timer/i18n/id.ts +252 -0
  77. package/src/tool/egg-timer/i18n/it.ts +252 -0
  78. package/src/tool/egg-timer/i18n/ja.ts +252 -0
  79. package/src/tool/egg-timer/i18n/ko.ts +252 -0
  80. package/src/tool/egg-timer/i18n/nl.ts +252 -0
  81. package/src/tool/egg-timer/i18n/pl.ts +252 -0
  82. package/src/tool/egg-timer/i18n/pt.ts +252 -0
  83. package/src/tool/egg-timer/i18n/ru.ts +252 -0
  84. package/src/tool/egg-timer/i18n/sv.ts +252 -0
  85. package/src/tool/egg-timer/i18n/tr.ts +252 -0
  86. package/src/tool/egg-timer/i18n/zh.ts +252 -0
  87. package/src/tool/egg-timer/index.ts +12 -0
  88. package/src/tool/ingredient-rescaler/i18n/de.ts +244 -0
  89. package/src/tool/ingredient-rescaler/i18n/es.ts +95 -95
  90. package/src/tool/ingredient-rescaler/i18n/id.ts +244 -0
  91. package/src/tool/ingredient-rescaler/i18n/it.ts +244 -0
  92. package/src/tool/ingredient-rescaler/i18n/ja.ts +244 -0
  93. package/src/tool/ingredient-rescaler/i18n/ko.ts +244 -0
  94. package/src/tool/ingredient-rescaler/i18n/nl.ts +244 -0
  95. package/src/tool/ingredient-rescaler/i18n/pl.ts +244 -0
  96. package/src/tool/ingredient-rescaler/i18n/pt.ts +244 -0
  97. package/src/tool/ingredient-rescaler/i18n/ru.ts +244 -0
  98. package/src/tool/ingredient-rescaler/i18n/sv.ts +244 -0
  99. package/src/tool/ingredient-rescaler/i18n/tr.ts +244 -0
  100. package/src/tool/ingredient-rescaler/i18n/zh.ts +244 -0
  101. package/src/tool/ingredient-rescaler/index.ts +12 -0
  102. package/src/tool/kitchen-timer/i18n/de.ts +174 -0
  103. package/src/tool/kitchen-timer/i18n/id.ts +170 -0
  104. package/src/tool/kitchen-timer/i18n/it.ts +174 -0
  105. package/src/tool/kitchen-timer/i18n/ja.ts +170 -0
  106. package/src/tool/kitchen-timer/i18n/ko.ts +170 -0
  107. package/src/tool/kitchen-timer/i18n/nl.ts +174 -0
  108. package/src/tool/kitchen-timer/i18n/pl.ts +170 -0
  109. package/src/tool/kitchen-timer/i18n/pt.ts +174 -0
  110. package/src/tool/kitchen-timer/i18n/ru.ts +170 -0
  111. package/src/tool/kitchen-timer/i18n/sv.ts +170 -0
  112. package/src/tool/kitchen-timer/i18n/tr.ts +170 -0
  113. package/src/tool/kitchen-timer/i18n/zh.ts +170 -0
  114. package/src/tool/kitchen-timer/index.ts +12 -0
  115. package/src/tool/meringue-peak/i18n/de.ts +221 -0
  116. package/src/tool/meringue-peak/i18n/id.ts +209 -0
  117. package/src/tool/meringue-peak/i18n/it.ts +210 -0
  118. package/src/tool/meringue-peak/i18n/ja.ts +210 -0
  119. package/src/tool/meringue-peak/i18n/ko.ts +210 -0
  120. package/src/tool/meringue-peak/i18n/nl.ts +210 -0
  121. package/src/tool/meringue-peak/i18n/pl.ts +210 -0
  122. package/src/tool/meringue-peak/i18n/pt.ts +210 -0
  123. package/src/tool/meringue-peak/i18n/ru.ts +210 -0
  124. package/src/tool/meringue-peak/i18n/sv.ts +210 -0
  125. package/src/tool/meringue-peak/i18n/tr.ts +210 -0
  126. package/src/tool/meringue-peak/i18n/zh.ts +210 -0
  127. package/src/tool/meringue-peak/index.ts +12 -0
  128. package/src/tool/mold-scaler/i18n/de.ts +183 -0
  129. package/src/tool/mold-scaler/i18n/id.ts +169 -0
  130. package/src/tool/mold-scaler/i18n/it.ts +170 -0
  131. package/src/tool/mold-scaler/i18n/ja.ts +170 -0
  132. package/src/tool/mold-scaler/i18n/ko.ts +170 -0
  133. package/src/tool/mold-scaler/i18n/nl.ts +170 -0
  134. package/src/tool/mold-scaler/i18n/pl.ts +170 -0
  135. package/src/tool/mold-scaler/i18n/pt.ts +170 -0
  136. package/src/tool/mold-scaler/i18n/ru.ts +170 -0
  137. package/src/tool/mold-scaler/i18n/sv.ts +170 -0
  138. package/src/tool/mold-scaler/i18n/tr.ts +170 -0
  139. package/src/tool/mold-scaler/i18n/zh.ts +170 -0
  140. package/src/tool/mold-scaler/index.ts +12 -0
  141. package/src/tool/pizza/i18n/de.ts +168 -0
  142. package/src/tool/pizza/i18n/es.ts +228 -228
  143. package/src/tool/pizza/i18n/fr.ts +1 -1
  144. package/src/tool/pizza/i18n/id.ts +125 -0
  145. package/src/tool/pizza/i18n/it.ts +172 -0
  146. package/src/tool/pizza/i18n/ja.ts +125 -0
  147. package/src/tool/pizza/i18n/ko.ts +125 -0
  148. package/src/tool/pizza/i18n/nl.ts +164 -0
  149. package/src/tool/pizza/i18n/pl.ts +125 -0
  150. package/src/tool/pizza/i18n/pt.ts +168 -0
  151. package/src/tool/pizza/i18n/ru.ts +151 -0
  152. package/src/tool/pizza/i18n/sv.ts +164 -0
  153. package/src/tool/pizza/i18n/tr.ts +125 -0
  154. package/src/tool/pizza/i18n/zh.ts +125 -0
  155. package/src/tool/pizza/index.ts +12 -0
  156. package/src/tool/roux-guide/i18n/de.ts +165 -0
  157. package/src/tool/roux-guide/i18n/es.ts +172 -172
  158. package/src/tool/roux-guide/i18n/id.ts +139 -0
  159. package/src/tool/roux-guide/i18n/it.ts +165 -0
  160. package/src/tool/roux-guide/i18n/ja.ts +139 -0
  161. package/src/tool/roux-guide/i18n/ko.ts +139 -0
  162. package/src/tool/roux-guide/i18n/nl.ts +165 -0
  163. package/src/tool/roux-guide/i18n/pl.ts +139 -0
  164. package/src/tool/roux-guide/i18n/pt.ts +165 -0
  165. package/src/tool/roux-guide/i18n/ru.ts +139 -0
  166. package/src/tool/roux-guide/i18n/sv.ts +139 -0
  167. package/src/tool/roux-guide/i18n/tr.ts +139 -0
  168. package/src/tool/roux-guide/i18n/zh.ts +139 -0
  169. package/src/tool/roux-guide/index.ts +12 -0
  170. package/src/tool/sourdough-calculator/i18n/de.ts +142 -0
  171. package/src/tool/sourdough-calculator/i18n/id.ts +116 -0
  172. package/src/tool/sourdough-calculator/i18n/it.ts +142 -0
  173. package/src/tool/sourdough-calculator/i18n/ja.ts +116 -0
  174. package/src/tool/sourdough-calculator/i18n/ko.ts +116 -0
  175. package/src/tool/sourdough-calculator/i18n/nl.ts +116 -0
  176. package/src/tool/sourdough-calculator/i18n/pl.ts +116 -0
  177. package/src/tool/sourdough-calculator/i18n/pt.ts +142 -0
  178. package/src/tool/sourdough-calculator/i18n/ru.ts +116 -0
  179. package/src/tool/sourdough-calculator/i18n/sv.ts +116 -0
  180. package/src/tool/sourdough-calculator/i18n/tr.ts +116 -0
  181. package/src/tool/sourdough-calculator/i18n/zh.ts +116 -0
  182. package/src/tool/sourdough-calculator/index.ts +12 -0
@@ -4,115 +4,115 @@ const title = 'Escalador de Ingredientes Ajuste de Recetas';
4
4
  const description = 'Escala recetas automáticamente según el número de raciones. Calcula las cantidades exactas de ingredientes multiplicando o reduciendo tu receta sin complicaciones.';
5
5
 
6
6
  const faq = [
7
- {
8
- question: '¿Por qué mi factor de conversión incluye decimales?',
9
- answer: 'Porque las proporciones culinarias no siempre son redondas. Si escalas una receta para 4 personas a 7, el factor es 1.75 exactamente. Los ingredientes se multiplican por ese número, aunque encuentres fracciones. Es más exacto que redondear arbitrariamente.',
10
- },
11
- {
12
- question: '¿Qué pasa si ingreso "1/2 cucharadita de sal"?',
13
- answer: 'El parser busca el número primero. Reconocerá "1" como cantidad, luego "/2" como parte de la unidad. El resultado será "0.5", y al escalar se multiplicará correctamente. Para fracciones como "1/2", ingresa "0.5" directamente (más claro) o la herramienta las interpreta como división.',
14
- },
15
- {
16
- question: '¿Debo redondear los resultados finales?',
17
- answer: 'Depende del ingrediente. Para harinas, sí. Para levaduras o especias, la precisión importa menos (escala al 75% de lo indicado). Para huevos: si obtienes 2.3, usa 2 completos + parte de un tercero (pesada), o redondea a 2 si el plato lo permite.',
18
- },
19
- {
20
- question: '¿Por qué no cambia el resultado cuando cambio las raciones?',
21
- answer: 'Asegúrate de que el campo de ingredientes tenga contenido. Si está vacío, no hay nada que escalar. También verifica que los números en tus ingredientes sean reconocibles (ej: "500g", "1/2 cucharadita").',
22
- },
23
- {
24
- question: '¿Funciona con medidas imperiales (onzas, tazas)?',
25
- answer: 'Técnicamente sí, la herramienta lee números y escala. Pero la precisión es limitada con tazas (volumen inconsistente). Se recomienda convertir a gramos antes de escalar.',
26
- },
7
+ {
8
+ question: '¿Por qué mi factor de conversión incluye decimales?',
9
+ answer: 'Porque las proporciones culinarias no siempre son redondas. Si escalas una receta para 4 personas a 7, el factor es 1.75 exactamente. Los ingredientes se multiplican por ese número, aunque encuentres fracciones. Es más exacto que redondear arbitrariamente.',
10
+ },
11
+ {
12
+ question: '¿Qué pasa si ingreso "1/2 cucharadita de sal"?',
13
+ answer: 'El parser busca el número primero. Reconocerá "1" como cantidad, luego "/2" como parte de la unidad. El resultado será "0.5", y al escalar se multiplicará correctamente. Para fracciones como "1/2", ingresa "0.5" directamente (más claro) o la herramienta las interpreta como división.',
14
+ },
15
+ {
16
+ question: '¿Debo redondear los resultados finales?',
17
+ answer: 'Depende del ingrediente. Para harinas, sí. Para levaduras o especias, la precisión importa menos (escala al 75% de lo indicado). Para huevos: si obtienes 2.3, usa 2 completos + parte de un tercero (pesada), o redondea a 2 si el plato lo permite.',
18
+ },
19
+ {
20
+ question: '¿Por qué no cambia el resultado cuando cambio las raciones?',
21
+ answer: 'Asegúrate de que el campo de ingredientes tenga contenido. Si está vacío, no hay nada que escalar. También verifica que los números en tus ingredientes sean reconocibles (ej: "500g", "1/2 cucharadita").',
22
+ },
23
+ {
24
+ question: '¿Funciona con medidas imperiales (onzas, tazas)?',
25
+ answer: 'Técnicamente sí, la herramienta lee números y escala. Pero la precisión es limitada con tazas (volumen inconsistente). Se recomienda convertir a gramos antes de escalar.',
26
+ },
27
27
  ];
28
28
 
29
29
  const howTo = [
30
- {
31
- name: 'Ingresa tus raciones',
32
- text: 'En el campo "Original", coloca el número de personas para el que la receta está diseñada. En "Deseado", coloca el número de personas que vas a cocinar.',
33
- },
34
- {
35
- name: 'Pega tu lista de ingredientes',
36
- text: 'Copia y pega tu lista tal cual. Cada ingrediente en una línea. La herramienta reconoce números al inicio (500g, 1/2, 2.5) y escala automáticamente.',
37
- },
38
- {
39
- name: 'Ajusta según contexto',
40
- text: 'Los resultados son matemáticamente exactos, pero la cocina es arte. Especias: escala al 75%. Levaduras: menos de lo teórico en grandes cantidades. Tiempos: no se escalan nunca.',
41
- },
30
+ {
31
+ name: 'Ingresa tus raciones',
32
+ text: 'En el campo "Original", coloca el número de personas para el que la receta está diseñada. En "Deseado", coloca el número de personas que vas a cocinar.',
33
+ },
34
+ {
35
+ name: 'Pega tu lista de ingredientes',
36
+ text: 'Copia y pega tu lista tal cual. Cada ingrediente en una línea. La herramienta reconoce números al inicio (500g, 1/2, 2.5) y escala automáticamente.',
37
+ },
38
+ {
39
+ name: 'Ajusta según contexto',
40
+ text: 'Los resultados son matemáticamente exactos, pero la cocina es arte. Especias: escala al 75%. Levaduras: menos de lo teórico en grandes cantidades. Tiempos: no se escalan nunca.',
41
+ },
42
42
  ];
43
43
 
44
44
  const faqSchema = {
45
- '@context': 'https://schema.org',
46
- '@type': 'FAQPage',
47
- mainEntity: faq.map((item) => ({
48
- '@type': 'Question',
49
- name: item.question,
50
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
51
- })),
45
+ '@context': 'https://schema.org',
46
+ '@type': 'FAQPage',
47
+ mainEntity: faq.map((item) => ({
48
+ '@type': 'Question',
49
+ name: item.question,
50
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
51
+ })),
52
52
  };
53
53
 
54
54
  const howToSchema = {
55
- '@context': 'https://schema.org',
56
- '@type': 'HowTo',
57
- name: title,
58
- description,
59
- step: howTo.map((step) => ({
60
- '@type': 'HowToStep',
61
- name: step.name,
62
- text: step.text,
63
- })),
55
+ '@context': 'https://schema.org',
56
+ '@type': 'HowTo',
57
+ name: title,
58
+ description,
59
+ step: howTo.map((step) => ({
60
+ '@type': 'HowToStep',
61
+ name: step.name,
62
+ text: step.text,
63
+ })),
64
64
  };
65
65
 
66
66
  const appSchema = {
67
- '@context': 'https://schema.org',
68
- '@type': 'SoftwareApplication',
69
- name: title,
70
- description,
71
- applicationCategory: 'UtilitiesApplication',
72
- operatingSystem: 'All',
67
+ '@context': 'https://schema.org',
68
+ '@type': 'SoftwareApplication',
69
+ name: title,
70
+ description,
71
+ applicationCategory: 'UtilitiesApplication',
72
+ operatingSystem: 'All',
73
73
  };
74
74
 
75
75
  export const content: ToolLocaleContent = {
76
- slug: 'reescalador-ingredientes',
77
- title,
78
- description,
79
- ui: {
80
- servings: 'Raciones',
81
- original: 'Original',
82
- desired: 'Deseado',
83
- multiplyingFactor: 'Factor Multiplicador',
84
- ingredientsList: 'Lista de Ingredientes',
85
- pasteHere: 'Pega aquí tu lista.',
86
- exampleLine1: 'Ej:',
87
- exampleLine2: '500g Harina',
88
- exampleLine3: '300ml Agua',
89
- exampleLine4: '10g Sal',
90
- result: 'Resultado',
91
- copy: 'Copiar',
92
- copied: 'Copiado!',
93
- emptyState: 'Tus ingredientes ajustados aparecerán aquí...',
94
- defaultIngredient1: '200g Harina',
95
- defaultIngredient2: '100ml Leche',
96
- defaultIngredient3: '2 Huevos',
97
- },
98
- faqTitle: 'Preguntas Frecuentes',
99
- faq,
100
- bibliographyTitle: 'Bibliografía',
101
- bibliography: [
102
- {
103
- name: 'Harold McGee - On Food and Cooking: The Science and Lore of the Kitchen',
104
- url: 'https://en.wikipedia.org/wiki/Harold_McGee',
105
- },
106
- {
107
- name: 'The Flavor Bible by Karen Page and Andrew Dornenburg',
108
- url: 'https://www.flavorprints.com/',
109
- },
110
- {
111
- name: 'Modernist Cuisine - Técnicas de escalado científico',
112
- url: 'https://www.modernistcuisine.com/',
113
- },
114
- ],
115
- howTo,
76
+ slug: 'reescalador-ingredientes',
77
+ title,
78
+ description,
79
+ ui: {
80
+ servings: 'Raciones',
81
+ original: 'Original',
82
+ desired: 'Deseado',
83
+ multiplyingFactor: 'Factor Multiplicador',
84
+ ingredientsList: 'Lista de Ingredientes',
85
+ pasteHere: 'Pega aquí tu lista.',
86
+ exampleLine1: 'Ej:',
87
+ exampleLine2: '500g Harina',
88
+ exampleLine3: '300ml Agua',
89
+ exampleLine4: '10g Sal',
90
+ result: 'Resultado',
91
+ copy: 'Copiar',
92
+ copied: 'Copiado!',
93
+ emptyState: 'Tus ingredientes ajustados aparecerán aquí...',
94
+ defaultIngredient1: '200g Harina',
95
+ defaultIngredient2: '100ml Leche',
96
+ defaultIngredient3: '2 Huevos',
97
+ },
98
+ faqTitle: 'Preguntas Frecuentes',
99
+ faq,
100
+ bibliographyTitle: 'Bibliografía',
101
+ bibliography: [
102
+ {
103
+ name: 'Harold McGee - On Food and Cooking: The Science and Lore of the Kitchen',
104
+ url: 'https://en.wikipedia.org/wiki/Harold_McGee',
105
+ },
106
+ {
107
+ name: 'The Flavor Bible by Karen Page and Andrew Dornenburg',
108
+ url: 'https://www.flavorprints.com/',
109
+ },
110
+ {
111
+ name: 'Modernist Cuisine - Técnicas de escalado científico',
112
+ url: 'https://www.modernistcuisine.com/',
113
+ },
114
+ ],
115
+ howTo,
116
116
  seo: [
117
117
  {
118
118
  type: 'title',
@@ -241,5 +241,5 @@ export const content: ToolLocaleContent = {
241
241
  },
242
242
  ],
243
243
 
244
- schemas: [appSchema, faqSchema, howToSchema],
244
+ schemas: [appSchema, faqSchema, howToSchema],
245
245
  };
@@ -0,0 +1,244 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+
3
+ const title = 'Pengatur Takaran Bahan & Resep';
4
+ const description = 'Ubah skala resep secara otomatis berdasarkan jumlah porsi. Hitung jumlah bahan yang tepat dengan mengalikan atau mengurangi resep Anda tanpa repot.';
5
+
6
+ const faq = [
7
+ {
8
+ question: 'Mengapa faktor konversi saya menyertakan desimal?',
9
+ answer: 'Karena proporsi kuliner tidak selalu bulat. Jika Anda mengubah skala resep dari 4 orang menjadi 7 orang, faktornya tepat 1,75. Bahan-bahan dikalikan dengan angka tersebut, meskipun hasilnya berupa pecahan. Ini lebih akurat daripada pembulatan sembarangan.',
10
+ },
11
+ {
12
+ question: 'Apa yang terjadi jika saya memasukkan "1/2 sdt garam"?',
13
+ answer: 'Alat ini mencari angkanya terlebih dahulu. Ia akan mengenali "1" sebagai jumlah, lalu "/2" sebagai bagian dari satuan. Hasilnya adalah "0,5" dan akan diskalakan dengan benar. Untuk pecahan seperti "1/2", sebaiknya masukkan "0,5" secara langsung (lebih jelas) atau alat akan menginterpretasikannya sebagai pembagian.',
14
+ },
15
+ {
16
+ question: 'Haruskah saya membulatkan hasil akhirnya?',
17
+ answer: 'Tergantung pada bahannya. Untuk tepung, ya. Untuk ragi atau rempah-rempah, presisi kurang krusial (skalakan ke 75% dari yang ditentukan). Untuk telur: jika Anda mendapatkan 2,3, gunakan 2 telur utuh + bagian dari telur ketiga (ditimbang), atau bulatkan ke 2 jika masakan memungkinkan.',
18
+ },
19
+ {
20
+ question: 'Mengapa hasilnya tidak berubah saat saya mengganti porsi?',
21
+ answer: 'Pastikan kolom bahan sudah terisi. Jika kosong, tidak ada yang bisa diskalakan. Periksa juga apakah angka pada bahan Anda dapat dikenali (misalnya: "500g", "1/2 sdt").',
22
+ },
23
+ {
24
+ question: 'Apakah ini berfungsi dengan ukuran imperial (ons, cangkir)?',
25
+ answer: 'Secara teknis ya, alat ini membaca angka dan skala. Namun presisi terbatas pada ukuran cangkir (volume tidak konsisten). Disarankan untuk mengubah ke gram sebelum mengubah skala.',
26
+ },
27
+ ];
28
+
29
+ const howTo = [
30
+ {
31
+ name: 'Masukkan porsi Anda',
32
+ text: 'Pada kolom "Asli", masukkan jumlah orang sesuai desain resep. Pada kolom "Tujuan", masukkan jumlah orang yang akan Anda masak.',
33
+ },
34
+ {
35
+ name: 'Tempelkan daftar bahan Anda',
36
+ text: 'Salin dan tempel daftar Anda apa adanya. Satu bahan per baris. Alat ini mengenali angka di awal (500g, 1/2, 2,5) dan mengubah skala secara otomatis.',
37
+ },
38
+ {
39
+ name: 'Sesuaikan menurut konteks',
40
+ text: 'Hasilnya akurat secara matematis, tetapi memasak adalah seni. Rempah-rempah: skalakan ke 75%. Ragi: gunakan lebih sedikit dari teori untuk jumlah besar. Waktu masak tidak pernah diskalakan.',
41
+ },
42
+ ];
43
+
44
+ const faqSchema = {
45
+ '@context': 'https://schema.org',
46
+ '@type': 'FAQPage',
47
+ mainEntity: faq.map((item) => ({
48
+ '@type': 'Question',
49
+ name: item.question,
50
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
51
+ })),
52
+ };
53
+
54
+ const howToSchema = {
55
+ '@context': 'https://schema.org',
56
+ '@type': 'HowTo',
57
+ name: title,
58
+ description,
59
+ step: howTo.map((step) => ({
60
+ '@type': 'HowToStep',
61
+ name: step.name,
62
+ text: step.text,
63
+ })),
64
+ };
65
+
66
+ const appSchema = {
67
+ '@context': 'https://schema.org',
68
+ '@type': 'SoftwareApplication',
69
+ name: title,
70
+ description,
71
+ applicationCategory: 'UtilitiesApplication',
72
+ operatingSystem: 'All',
73
+ };
74
+
75
+ export const content: ToolLocaleContent = {
76
+ slug: 'pengatur-skala-bahan',
77
+ title,
78
+ description,
79
+ ui: {
80
+ servings: 'Porsi',
81
+ original: 'Asli',
82
+ desired: 'Tujuan',
83
+ multiplyingFactor: 'Faktor Pengali',
84
+ ingredientsList: 'Daftar Bahan',
85
+ pasteHere: 'Tempel daftar Anda di sini.',
86
+ exampleLine1: 'Misal:',
87
+ exampleLine2: '500g Tepung',
88
+ exampleLine3: '300ml Air',
89
+ exampleLine4: '10g Garam',
90
+ result: 'Hasil',
91
+ copy: 'Salin',
92
+ copied: 'Tersalin!',
93
+ emptyState: 'Bahan-bahan yang disesuaikan akan muncul di sini...',
94
+ defaultIngredient1: '200g Tepung',
95
+ defaultIngredient2: '100ml Susu',
96
+ defaultIngredient3: '2 Telur',
97
+ },
98
+ faqTitle: 'Pertanyaan yang Sering Diajukan',
99
+ faq,
100
+ bibliographyTitle: 'Bibliografi',
101
+ bibliography: [
102
+ {
103
+ name: 'Harold McGee - On Food and Cooking: The Science and Lore of the Kitchen',
104
+ url: 'https://en.wikipedia.org/wiki/Harold_McGee',
105
+ },
106
+ {
107
+ name: 'The Flavor Bible by Karen Page and Andrew Dornenburg',
108
+ url: 'https://www.flavorprints.com/',
109
+ },
110
+ {
111
+ name: 'Modernist Cuisine - Teknik penskalaan ilmiah',
112
+ url: 'https://www.modernistcuisine.com/',
113
+ },
114
+ ],
115
+ howTo,
116
+ seo: [
117
+ {
118
+ type: 'title',
119
+ text: 'Panduan Utama untuk Penskalaan dan Konversi Resep',
120
+ level: 2,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: '<strong>Penskalaan bahan</strong> adalah salah satu tugas paling kritis dan rentan kesalahan di dapur profesional. Ini bukan sekadar mengalikan angka, tetapi memahami bagaimana kimia dan fisika makanan bereaksi terhadap perubahan volume dan luas permukaan.',
125
+ },
126
+ {
127
+ type: 'stats',
128
+ columns: 4,
129
+ items: [
130
+ {
131
+ value: 'x1.75',
132
+ label: 'Faktor dari 4 ke 7 org.',
133
+ icon: 'mdi:calculator',
134
+ },
135
+ {
136
+ value: '75%',
137
+ label: 'Penyesuaian Rempah',
138
+ icon: 'mdi:shaker-outline',
139
+ },
140
+ {
141
+ value: '0%',
142
+ label: 'Penskalaan Waktu',
143
+ icon: 'mdi:timer-off',
144
+ },
145
+ {
146
+ value: '100g',
147
+ label: 'Basis Referensi',
148
+ icon: 'mdi:weight-gram',
149
+ },
150
+ ],
151
+ },
152
+ {
153
+ type: 'title',
154
+ text: 'Perbedaan Antara Penskalaan Linear dan Kontekstual',
155
+ level: 3,
156
+ },
157
+ {
158
+ type: 'comparative',
159
+ columns: 2,
160
+ items: [
161
+ {
162
+ title: 'Penskalaan Linear Matematis',
163
+ icon: 'mdi:math-log',
164
+ description: 'Perkalian langsung semua nilai dengan faktor konversi yang diperoleh.',
165
+ points: [
166
+ 'Sangat cocok untuk tepung dan cairan dasar',
167
+ 'Ideal untuk kue presisi dingin',
168
+ 'Berfungsi baik pada perubahan kecil (x2, x0,5)',
169
+ 'Mudah dihitung secara otomatis',
170
+ ],
171
+ },
172
+ {
173
+ title: 'Penskalaan Kontekstual Dapur',
174
+ icon: 'mdi:chef-hat',
175
+ description: 'Penyesuaian proporsi berdasarkan saturasi rasa dan penguapan.',
176
+ highlight: true,
177
+ points: [
178
+ 'Menghindari kelebihan garam dan rempah',
179
+ 'Mempertimbangkan luas permukaan penguapan',
180
+ 'Menyesuaikan ragi berdasarkan massa',
181
+ 'Memerlukan pengalaman dan penilaian koki',
182
+ ],
183
+ },
184
+ ],
185
+ },
186
+ {
187
+ type: 'title',
188
+ text: 'Faktor Konversi Berdasarkan Jumlah Tamu',
189
+ level: 3,
190
+ },
191
+ {
192
+ type: 'table',
193
+ headers: ['Dari Porsi', 'Ke Porsi', 'Faktor (FC)', 'Tingkat Kesulitan'],
194
+ rows: [
195
+ ['2 orang', '4 orang', 'x 2.0', 'Rendah (Linear)'],
196
+ ['4 orang', '6 orang', 'x 1.5', 'Rendah (Linear)'],
197
+ ['4 orang', '10 orang', 'x 2.5', 'Sedang (Perhatikan rempah)'],
198
+ ['4 orang', '25 orang', 'x 6.25', 'Tinggi (Kontekstual)'],
199
+ ],
200
+ },
201
+ {
202
+ type: 'diagnostic',
203
+ variant: 'warning',
204
+ title: 'Masalah Umum Saat Melipatgandakan Resep',
205
+ html: 'Jika Anda merasa rasanya terlalu kuat setelah penskalaan (terutama rasa pedas atau asin), kurangi skala bahan spesifik tersebut menjadi 75%. Jangan pernah melipatgandakan waktu masak; suhu internal dicapai berdasarkan ketebalan bahan, bukan berat total.',
206
+ },
207
+ {
208
+ type: 'title',
209
+ text: 'Glosarium Terminologi Standarisasi',
210
+ level: 3,
211
+ },
212
+ {
213
+ type: 'glossary',
214
+ items: [
215
+ {
216
+ term: 'Faktor Konversi',
217
+ definition: 'Angka yang digunakan sebagai pengali semua bahan: Jumlah Tujuan / Jumlah Asli.',
218
+ },
219
+ {
220
+ term: 'Penyusutan Masak',
221
+ definition: 'Kehilangan berat bahan karena penguapan atau keluarnya lemak.',
222
+ },
223
+ {
224
+ term: 'Berat Kotor vs Netto',
225
+ definition: 'Berat sebelum dan sesudah bahan dibersihkan.',
226
+ },
227
+ {
228
+ term: 'Hasil (Yield)',
229
+ definition: 'Jumlah total produk jadi setelah penskalaan dan pemasakan.',
230
+ },
231
+ ],
232
+ },
233
+ {
234
+ type: 'tip',
235
+ title: 'Trik Kocokan Telur',
236
+ html: 'Jika kalkulator menunjukkan 2,3 telur, kocok satu telur utuh, timbang, dan gunakan hanya 30% dari beratnya. Ini adalah satu-satunya cara menjaga presisi pada pembuatan kue halus.',
237
+ },
238
+ {
239
+ type: 'paragraph',
240
+ html: 'Alat kami menyederhanakan matematika agar Anda dapat mencurahkan energi untuk hal yang benar-benar penting: kreativitas dan rasa.',
241
+ },
242
+ ],
243
+ schemas: [appSchema, faqSchema, howToSchema],
244
+ };