@jjlmoya/utils-cooking 1.12.0 → 1.13.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 (175) 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/title_quality.test.ts +1 -1
  19. package/src/tool/american-kitchen-converter/i18n/de.ts +356 -0
  20. package/src/tool/american-kitchen-converter/i18n/id.ts +356 -0
  21. package/src/tool/american-kitchen-converter/i18n/it.ts +356 -0
  22. package/src/tool/american-kitchen-converter/i18n/ja.ts +356 -0
  23. package/src/tool/american-kitchen-converter/i18n/ko.ts +356 -0
  24. package/src/tool/american-kitchen-converter/i18n/nl.ts +356 -0
  25. package/src/tool/american-kitchen-converter/i18n/pl.ts +356 -0
  26. package/src/tool/american-kitchen-converter/i18n/pt.ts +356 -0
  27. package/src/tool/american-kitchen-converter/i18n/ru.ts +356 -0
  28. package/src/tool/american-kitchen-converter/i18n/sv.ts +356 -0
  29. package/src/tool/american-kitchen-converter/i18n/tr.ts +356 -0
  30. package/src/tool/american-kitchen-converter/i18n/zh.ts +356 -0
  31. package/src/tool/american-kitchen-converter/index.ts +12 -0
  32. package/src/tool/banana-ripeness/i18n/de.ts +248 -0
  33. package/src/tool/banana-ripeness/i18n/id.ts +248 -0
  34. package/src/tool/banana-ripeness/i18n/it.ts +248 -0
  35. package/src/tool/banana-ripeness/i18n/ja.ts +248 -0
  36. package/src/tool/banana-ripeness/i18n/ko.ts +248 -0
  37. package/src/tool/banana-ripeness/i18n/nl.ts +248 -0
  38. package/src/tool/banana-ripeness/i18n/pl.ts +248 -0
  39. package/src/tool/banana-ripeness/i18n/pt.ts +248 -0
  40. package/src/tool/banana-ripeness/i18n/ru.ts +248 -0
  41. package/src/tool/banana-ripeness/i18n/sv.ts +248 -0
  42. package/src/tool/banana-ripeness/i18n/tr.ts +248 -0
  43. package/src/tool/banana-ripeness/i18n/zh.ts +248 -0
  44. package/src/tool/banana-ripeness/index.ts +12 -0
  45. package/src/tool/brine/i18n/de.ts +253 -0
  46. package/src/tool/brine/i18n/id.ts +253 -0
  47. package/src/tool/brine/i18n/it.ts +253 -0
  48. package/src/tool/brine/i18n/ja.ts +253 -0
  49. package/src/tool/brine/i18n/ko.ts +253 -0
  50. package/src/tool/brine/i18n/nl.ts +253 -0
  51. package/src/tool/brine/i18n/pl.ts +253 -0
  52. package/src/tool/brine/i18n/pt.ts +253 -0
  53. package/src/tool/brine/i18n/ru.ts +253 -0
  54. package/src/tool/brine/i18n/sv.ts +253 -0
  55. package/src/tool/brine/i18n/tr.ts +253 -0
  56. package/src/tool/brine/i18n/zh.ts +253 -0
  57. package/src/tool/brine/index.ts +12 -0
  58. package/src/tool/cookware-guide/i18n/de.ts +200 -0
  59. package/src/tool/cookware-guide/i18n/fr.ts +2 -2
  60. package/src/tool/cookware-guide/i18n/id.ts +200 -0
  61. package/src/tool/cookware-guide/i18n/it.ts +200 -0
  62. package/src/tool/cookware-guide/i18n/ja.ts +200 -0
  63. package/src/tool/cookware-guide/i18n/ko.ts +200 -0
  64. package/src/tool/cookware-guide/i18n/nl.ts +200 -0
  65. package/src/tool/cookware-guide/i18n/pl.ts +200 -0
  66. package/src/tool/cookware-guide/i18n/pt.ts +200 -0
  67. package/src/tool/cookware-guide/i18n/ru.ts +200 -0
  68. package/src/tool/cookware-guide/i18n/sv.ts +200 -0
  69. package/src/tool/cookware-guide/i18n/tr.ts +200 -0
  70. package/src/tool/cookware-guide/i18n/zh.ts +200 -0
  71. package/src/tool/cookware-guide/index.ts +12 -0
  72. package/src/tool/egg-timer/i18n/de.ts +252 -0
  73. package/src/tool/egg-timer/i18n/id.ts +252 -0
  74. package/src/tool/egg-timer/i18n/it.ts +252 -0
  75. package/src/tool/egg-timer/i18n/ja.ts +252 -0
  76. package/src/tool/egg-timer/i18n/ko.ts +252 -0
  77. package/src/tool/egg-timer/i18n/nl.ts +252 -0
  78. package/src/tool/egg-timer/i18n/pl.ts +252 -0
  79. package/src/tool/egg-timer/i18n/pt.ts +252 -0
  80. package/src/tool/egg-timer/i18n/ru.ts +252 -0
  81. package/src/tool/egg-timer/i18n/sv.ts +252 -0
  82. package/src/tool/egg-timer/i18n/tr.ts +252 -0
  83. package/src/tool/egg-timer/i18n/zh.ts +252 -0
  84. package/src/tool/egg-timer/index.ts +12 -0
  85. package/src/tool/ingredient-rescaler/i18n/de.ts +244 -0
  86. package/src/tool/ingredient-rescaler/i18n/id.ts +244 -0
  87. package/src/tool/ingredient-rescaler/i18n/it.ts +244 -0
  88. package/src/tool/ingredient-rescaler/i18n/ja.ts +244 -0
  89. package/src/tool/ingredient-rescaler/i18n/ko.ts +244 -0
  90. package/src/tool/ingredient-rescaler/i18n/nl.ts +244 -0
  91. package/src/tool/ingredient-rescaler/i18n/pl.ts +244 -0
  92. package/src/tool/ingredient-rescaler/i18n/pt.ts +244 -0
  93. package/src/tool/ingredient-rescaler/i18n/ru.ts +244 -0
  94. package/src/tool/ingredient-rescaler/i18n/sv.ts +244 -0
  95. package/src/tool/ingredient-rescaler/i18n/tr.ts +244 -0
  96. package/src/tool/ingredient-rescaler/i18n/zh.ts +244 -0
  97. package/src/tool/ingredient-rescaler/index.ts +12 -0
  98. package/src/tool/kitchen-timer/i18n/de.ts +174 -0
  99. package/src/tool/kitchen-timer/i18n/id.ts +170 -0
  100. package/src/tool/kitchen-timer/i18n/it.ts +174 -0
  101. package/src/tool/kitchen-timer/i18n/ja.ts +170 -0
  102. package/src/tool/kitchen-timer/i18n/ko.ts +170 -0
  103. package/src/tool/kitchen-timer/i18n/nl.ts +174 -0
  104. package/src/tool/kitchen-timer/i18n/pl.ts +170 -0
  105. package/src/tool/kitchen-timer/i18n/pt.ts +174 -0
  106. package/src/tool/kitchen-timer/i18n/ru.ts +170 -0
  107. package/src/tool/kitchen-timer/i18n/sv.ts +170 -0
  108. package/src/tool/kitchen-timer/i18n/tr.ts +170 -0
  109. package/src/tool/kitchen-timer/i18n/zh.ts +170 -0
  110. package/src/tool/kitchen-timer/index.ts +12 -0
  111. package/src/tool/meringue-peak/i18n/de.ts +221 -0
  112. package/src/tool/meringue-peak/i18n/id.ts +209 -0
  113. package/src/tool/meringue-peak/i18n/it.ts +210 -0
  114. package/src/tool/meringue-peak/i18n/ja.ts +210 -0
  115. package/src/tool/meringue-peak/i18n/ko.ts +210 -0
  116. package/src/tool/meringue-peak/i18n/nl.ts +210 -0
  117. package/src/tool/meringue-peak/i18n/pl.ts +210 -0
  118. package/src/tool/meringue-peak/i18n/pt.ts +210 -0
  119. package/src/tool/meringue-peak/i18n/ru.ts +210 -0
  120. package/src/tool/meringue-peak/i18n/sv.ts +210 -0
  121. package/src/tool/meringue-peak/i18n/tr.ts +210 -0
  122. package/src/tool/meringue-peak/i18n/zh.ts +210 -0
  123. package/src/tool/meringue-peak/index.ts +12 -0
  124. package/src/tool/mold-scaler/i18n/de.ts +183 -0
  125. package/src/tool/mold-scaler/i18n/id.ts +169 -0
  126. package/src/tool/mold-scaler/i18n/it.ts +170 -0
  127. package/src/tool/mold-scaler/i18n/ja.ts +170 -0
  128. package/src/tool/mold-scaler/i18n/ko.ts +170 -0
  129. package/src/tool/mold-scaler/i18n/nl.ts +170 -0
  130. package/src/tool/mold-scaler/i18n/pl.ts +170 -0
  131. package/src/tool/mold-scaler/i18n/pt.ts +170 -0
  132. package/src/tool/mold-scaler/i18n/ru.ts +170 -0
  133. package/src/tool/mold-scaler/i18n/sv.ts +170 -0
  134. package/src/tool/mold-scaler/i18n/tr.ts +170 -0
  135. package/src/tool/mold-scaler/i18n/zh.ts +170 -0
  136. package/src/tool/mold-scaler/index.ts +12 -0
  137. package/src/tool/pizza/i18n/de.ts +168 -0
  138. package/src/tool/pizza/i18n/id.ts +125 -0
  139. package/src/tool/pizza/i18n/it.ts +172 -0
  140. package/src/tool/pizza/i18n/ja.ts +125 -0
  141. package/src/tool/pizza/i18n/ko.ts +125 -0
  142. package/src/tool/pizza/i18n/nl.ts +164 -0
  143. package/src/tool/pizza/i18n/pl.ts +125 -0
  144. package/src/tool/pizza/i18n/pt.ts +168 -0
  145. package/src/tool/pizza/i18n/ru.ts +151 -0
  146. package/src/tool/pizza/i18n/sv.ts +164 -0
  147. package/src/tool/pizza/i18n/tr.ts +125 -0
  148. package/src/tool/pizza/i18n/zh.ts +125 -0
  149. package/src/tool/pizza/index.ts +12 -0
  150. package/src/tool/roux-guide/i18n/de.ts +165 -0
  151. package/src/tool/roux-guide/i18n/id.ts +139 -0
  152. package/src/tool/roux-guide/i18n/it.ts +165 -0
  153. package/src/tool/roux-guide/i18n/ja.ts +139 -0
  154. package/src/tool/roux-guide/i18n/ko.ts +139 -0
  155. package/src/tool/roux-guide/i18n/nl.ts +165 -0
  156. package/src/tool/roux-guide/i18n/pl.ts +139 -0
  157. package/src/tool/roux-guide/i18n/pt.ts +165 -0
  158. package/src/tool/roux-guide/i18n/ru.ts +139 -0
  159. package/src/tool/roux-guide/i18n/sv.ts +139 -0
  160. package/src/tool/roux-guide/i18n/tr.ts +139 -0
  161. package/src/tool/roux-guide/i18n/zh.ts +139 -0
  162. package/src/tool/roux-guide/index.ts +12 -0
  163. package/src/tool/sourdough-calculator/i18n/de.ts +142 -0
  164. package/src/tool/sourdough-calculator/i18n/id.ts +116 -0
  165. package/src/tool/sourdough-calculator/i18n/it.ts +142 -0
  166. package/src/tool/sourdough-calculator/i18n/ja.ts +116 -0
  167. package/src/tool/sourdough-calculator/i18n/ko.ts +116 -0
  168. package/src/tool/sourdough-calculator/i18n/nl.ts +116 -0
  169. package/src/tool/sourdough-calculator/i18n/pl.ts +116 -0
  170. package/src/tool/sourdough-calculator/i18n/pt.ts +142 -0
  171. package/src/tool/sourdough-calculator/i18n/ru.ts +116 -0
  172. package/src/tool/sourdough-calculator/i18n/sv.ts +116 -0
  173. package/src/tool/sourdough-calculator/i18n/tr.ts +116 -0
  174. package/src/tool/sourdough-calculator/i18n/zh.ts +116 -0
  175. package/src/tool/sourdough-calculator/index.ts +12 -0
@@ -0,0 +1,244 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+
3
+ const title = 'Escalador de Ingredientes Ajuste de Receitas';
4
+ const description = 'Escala receitas automaticamente segundo o número de doses. Calcula as quantidades exatas de ingredientes multiplicando ou reduzindo a tua receita sem complicações.';
5
+
6
+ const faq = [
7
+ {
8
+ question: 'Por que o meu fator de conversão inclui decimais?',
9
+ answer: 'Porque as proporções culinárias nem sempre são redondas. Se escalas uma receita para 4 pessoas para 7, o fator é exatamente 1.75. Os ingredientes são multiplicados por esse número, mesmo que encontres frações. É mais exato do que arredondar arbitrariamente.',
10
+ },
11
+ {
12
+ question: 'O que acontece se eu inserir "1/2 colher de chá de sal"?',
13
+ answer: 'O parser procura o número primeiro. Reconhecerá "1" como quantidade, depois "/2" como parte da unidade. O resultado será "0.5", e ao escalar será multiplicado corretamente. Para frações como "1/2", insere "0.5" diretamente (é mais claro) ou a ferramenta interpreta como divisão.',
14
+ },
15
+ {
16
+ question: 'Devo arredondar os resultados finais?',
17
+ answer: 'Depende do ingrediente. Para farinhas, sim. Para fermentos ou especiarias, a precisão importa menos (escala a 75% do indicado). Para ovos: se obtiveres 2.3, usa 2 inteiros + parte de um terceiro (pesado), ou arredonda para 2 se o prato o permitir.',
18
+ },
19
+ {
20
+ question: 'Por que o resultado não muda quando altero as doses?',
21
+ answer: 'Certifica-te de que o campo de ingredientes tem conteúdo. Se estiver vazio, não há nada para escalar. Verifica também se os números nos teus ingredientes são reconhecíveis (ex: "500g", "1/2 colher de chá").',
22
+ },
23
+ {
24
+ question: 'Funciona com medidas imperiais (onzas, chávenas)?',
25
+ answer: 'Tecnicamente sim, a ferramenta lê números e escala. Mas a precisão é limitada com chávenas (volume inconsistente). Recomenda-se converter para gramas antes de escalar.',
26
+ },
27
+ ];
28
+
29
+ const howTo = [
30
+ {
31
+ name: 'Insere as tuas doses',
32
+ text: 'No campo "Original", coloca o número de pessoas para o qual a receita foi desenhada. Em "Desejado", coloca o número de pessoas para quem vais cozinhar.',
33
+ },
34
+ {
35
+ name: 'Cola a tua lista de ingredientes',
36
+ text: 'Copia e cola a tua lista tal como está. Cada ingrediente numa linha. A ferramenta reconhece números no início (500g, 1/2, 2.5) e escala automaticamente.',
37
+ },
38
+ {
39
+ name: 'Ajusta segundo o contexto',
40
+ text: 'Os resultados são matematicamente exatos, mas a cozinha é arte. Especiarias: escala a 75%. Fermentos: menos do que o teórico em grandes quantidades. Tempos: nunca se escalam.',
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: 'reescalador-ingredientes',
77
+ title,
78
+ description,
79
+ ui: {
80
+ servings: 'Doses',
81
+ original: 'Original',
82
+ desired: 'Desejado',
83
+ multiplyingFactor: 'Fator Multiplicador',
84
+ ingredientsList: 'Lista de Ingredientes',
85
+ pasteHere: 'Cola aqui a tua lista.',
86
+ exampleLine1: 'Ex:',
87
+ exampleLine2: '500g Farinha',
88
+ exampleLine3: '300ml Água',
89
+ exampleLine4: '10g Sal',
90
+ result: 'Resultado',
91
+ copy: 'Copiar',
92
+ copied: 'Copiado!',
93
+ emptyState: 'Os teus ingredientes ajustados aparecerão aqui...',
94
+ defaultIngredient1: '200g Farinha',
95
+ defaultIngredient2: '100ml Leite',
96
+ defaultIngredient3: '2 Ovos',
97
+ },
98
+ faqTitle: 'Perguntas Frequentes',
99
+ faq,
100
+ bibliographyTitle: 'Bibliografia',
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 escalamento científico',
112
+ url: 'https://www.modernistcuisine.com/',
113
+ },
114
+ ],
115
+ howTo,
116
+ seo: [
117
+ {
118
+ type: 'title',
119
+ text: 'Guia Mestre para o Escalamento e Conversão de Receitas',
120
+ level: 2,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'O <strong>escalamento de ingredientes</strong> é uma das tarefas mais críticas e propensas a erros na cozinha profissional. Não se trata simplesmente de multiplicar números, mas de entender como a química e a física dos alimentos reagem a mudanças de volume e superfície.',
125
+ },
126
+ {
127
+ type: 'stats',
128
+ columns: 4,
129
+ items: [
130
+ {
131
+ value: 'x1.75',
132
+ label: 'Fator de 4 para 7 per.',
133
+ icon: 'mdi:calculator',
134
+ },
135
+ {
136
+ value: '75%',
137
+ label: 'Ajuste de Especiarias',
138
+ icon: 'mdi:shaker-outline',
139
+ },
140
+ {
141
+ value: '0%',
142
+ label: 'Escalamento de Tempo',
143
+ icon: 'mdi:timer-off',
144
+ },
145
+ {
146
+ value: '100g',
147
+ label: 'Base de Referência',
148
+ icon: 'mdi:weight-gram',
149
+ },
150
+ ],
151
+ },
152
+ {
153
+ type: 'title',
154
+ text: 'Diferenças entre Escalamento Linear e Contextual',
155
+ level: 3,
156
+ },
157
+ {
158
+ type: 'comparative',
159
+ columns: 2,
160
+ items: [
161
+ {
162
+ title: 'Escalamento Linear Matemático',
163
+ icon: 'mdi:math-log',
164
+ description: 'Multiplicação direta de todos os valores pelo fator de conversão obtido.',
165
+ points: [
166
+ 'Perfeito para farinhas e líquidos base',
167
+ 'Ideal para pastelaria de precisão',
168
+ 'Funciona bem em mudanças pequenas (x2, x0.5)',
169
+ 'Fácil de calcular automaticamente',
170
+ ],
171
+ },
172
+ {
173
+ title: 'Escalamento Contextual de Cozinha',
174
+ icon: 'mdi:chef-hat',
175
+ description: 'Ajuste de proporções baseado na saturação de sabor e evaporação.',
176
+ highlight: true,
177
+ points: [
178
+ 'Evita o excesso de sal e especiarias',
179
+ 'Considera a superfície de evaporação',
180
+ 'Ajusta fermentos segundo a massa',
181
+ 'Exige experiência e critério do chef',
182
+ ],
183
+ },
184
+ ],
185
+ },
186
+ {
187
+ type: 'title',
188
+ text: 'Fatores de Conversão por Número de Comensais',
189
+ level: 3,
190
+ },
191
+ {
192
+ type: 'table',
193
+ headers: ['De Doses', 'Para Doses', 'Fator (FC)', 'Dificuldade'],
194
+ rows: [
195
+ ['2 pessoas', '4 pessoas', 'x 2.0', 'Baixa (Linear)'],
196
+ ['4 pessoas', '6 pessoas', 'x 1.5', 'Baixa (Linear)'],
197
+ ['4 pessoas', '10 pessoas', 'x 2.5', 'Média (Atenção às especiarias)'],
198
+ ['4 pessoas', '25 pessoas', 'x 6.25', 'Alta (Contextual)'],
199
+ ],
200
+ },
201
+ {
202
+ type: 'diagnostic',
203
+ variant: 'warning',
204
+ title: 'Problemas Comuns ao Dobrar uma Receita',
205
+ html: 'Se notares que o sabor é demasiado intenso após escalar (especialmente com picantes ou sal), reduz o escalamento destes ingredientes específicos a 75%. Nunca dupliques o tempo de cozedura; a temperatura interna é atingida segundo a espessura da peça.',
206
+ },
207
+ {
208
+ type: 'title',
209
+ text: 'Glossário de Terminologia de Estandardização',
210
+ level: 3,
211
+ },
212
+ {
213
+ type: 'glossary',
214
+ items: [
215
+ {
216
+ term: 'Fator de Conversão',
217
+ definition: 'Número pelo qual se multiplicam todos os ingredientes: Quantidade Desejada / Quantidade Original.',
218
+ },
219
+ {
220
+ term: 'Perda de Cozedura',
221
+ definition: 'Perda de peso de um ingrediente por evaporação ou perda de gordura.',
222
+ },
223
+ {
224
+ term: 'Peso Bruto vs Líquido',
225
+ definition: 'O peso antes e depois de limpar o ingrediente.',
226
+ },
227
+ {
228
+ term: 'Rendimento',
229
+ definition: 'Quantidade total de produto terminado após o escalamento e a cozedura.',
230
+ },
231
+ ],
232
+ },
233
+ {
234
+ type: 'tip',
235
+ title: 'O truque do Ovo Batido',
236
+ html: 'Se a calculadora indicar 2.3 ovos, bate um ovo inteiro, pesa-o e utiliza apenas 30% do peso. É a única forma de manter a precisão em pastelaria fina.',
237
+ },
238
+ {
239
+ type: 'paragraph',
240
+ html: 'A nossa ferramenta simplifica a matemática para que possas dedicar a tua energia ao que realmente importa: criatividade e sabor.',
241
+ },
242
+ ],
243
+ schemas: [appSchema, faqSchema, howToSchema],
244
+ };
@@ -0,0 +1,244 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+
3
+ const title = 'Калькулятор масштабирования ингредиентов и рецептов';
4
+ const description = 'Автоматически изменяйте масштаб рецептов в зависимости от количества порций. Рассчитывайте точное количество ингредиентов без лишних сложностей.';
5
+
6
+ const faq = [
7
+ {
8
+ question: 'Почему мой коэффициент пересчета содержит десятичные дроби?',
9
+ answer: 'Потому что кулинарные пропорции не всегда кратны целым числам. Если вы масштабируете рецепт с 4 человек на 7, коэффициент составит ровно 1,75. Ингредиенты умножаются на это число, даже если в итоге получаются дробные значения. Это точнее, чем произвольное округление.',
10
+ },
11
+ {
12
+ question: 'Что произойдет, если я введу "1/2 чайной ложки соли"?',
13
+ answer: 'Парсер сначала ищет число. Он распознает "1" как количество, а затем "/2" как часть единицы измерения. Результат будет "0,5" и будет масштабирован правильно. Для таких дробей лучше сразу вводить "0,5" (так понятнее), либо инструмент интерпретирует их как деление.',
14
+ },
15
+ {
16
+ question: 'Нужно ли округлять финальные результаты?',
17
+ answer: 'Зависит от ингредиента. Для муки — да. Для дрожжей или специй точность менее критична (масштабируйте их до 75% от расчетного). Для яиц: если получилось 2,3, используйте 2 целых + часть третьего (взвесив его), или округлите до 2, если блюдо это позволяет.',
18
+ },
19
+ {
20
+ question: 'Почему результат не меняется при изменении порций?',
21
+ answer: 'Убедитесь, что поле ингредиентов не пустое. Если оно пустое, масштабировать нечего. Также проверьте, чтобы числа в списке ингредиентов были узнаваемыми (например, "500г", "1/2 ч.л.").',
22
+ },
23
+ {
24
+ question: 'Работает ли это с имперскими мерами (унции, чашки)?',
25
+ answer: 'Технически да, инструмент считывает числа и масштабирует их. Но точность с чашками ограничена из-за непостоянства объема. Рекомендуется переводить все в граммы перед масштабированием.',
26
+ },
27
+ ];
28
+
29
+ const howTo = [
30
+ {
31
+ name: 'Введите порции',
32
+ text: 'В поле "Оригинал" укажите количество человек, на которое рассчитан исходный рецепт. В поле "Желаемое" — сколько человек вы планируете накормить.',
33
+ },
34
+ {
35
+ name: 'Вставьте список ингредиентов',
36
+ text: 'Скопируйте и вставьте список как есть. Каждому ингредиенту — отдельная строка. Инструмент распознает числа в начале (500г, 1/2, 2.5) и автоматически изменит масштаб.',
37
+ },
38
+ {
39
+ name: 'Корректируйте по контексту',
40
+ text: 'Результаты математически точны, но кулинария — это искусство. Специи: масштабируйте до 75%. Дрожжи: при больших объемах берите чуть меньше. Время приготовления никогда не масштабируется.',
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: 'pereraschet-ingredientov',
77
+ title,
78
+ description,
79
+ ui: {
80
+ servings: 'Порции',
81
+ original: 'Оригинал',
82
+ desired: 'Желаемое',
83
+ multiplyingFactor: 'Множитель',
84
+ ingredientsList: 'Список ингредиентов',
85
+ pasteHere: 'Вставьте ваш список здесь.',
86
+ exampleLine1: 'Пример:',
87
+ exampleLine2: '500г Муки',
88
+ exampleLine3: '300мл Воды',
89
+ exampleLine4: '10г Соли',
90
+ result: 'Результат',
91
+ copy: 'Копировать',
92
+ copied: 'Скопировано!',
93
+ emptyState: 'Ваши пересчитанные ингредиенты появятся здесь...',
94
+ defaultIngredient1: '200г Муки',
95
+ defaultIngredient2: '100мл Молока',
96
+ defaultIngredient3: '2 Яйца',
97
+ },
98
+ faqTitle: 'Часто задаваемые вопросы',
99
+ faq,
100
+ bibliographyTitle: 'Библиография',
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 - Техники научного масштабирования',
112
+ url: 'https://www.modernistcuisine.com/',
113
+ },
114
+ ],
115
+ howTo,
116
+ seo: [
117
+ {
118
+ type: 'title',
119
+ text: 'Руководство мастера по масштабированию и конвертации рецептов',
120
+ level: 2,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: '<strong>Масштабирование ингредиентов</strong> — одна из самых ответственных и подверженных ошибкам задач на профессиональной кухне. Это не просто умножение чисел, но и понимание того, как химия и физика продуктов реагируют на изменение объема и поверхности.',
125
+ },
126
+ {
127
+ type: 'stats',
128
+ columns: 4,
129
+ items: [
130
+ {
131
+ value: 'x1.75',
132
+ label: 'С 4 на 7 чел.',
133
+ icon: 'mdi:calculator',
134
+ },
135
+ {
136
+ value: '75%',
137
+ label: 'Коррекция специй',
138
+ icon: 'mdi:shaker-outline',
139
+ },
140
+ {
141
+ value: '0%',
142
+ label: 'Масштаб времени',
143
+ icon: 'mdi:timer-off',
144
+ },
145
+ {
146
+ value: '100г',
147
+ label: 'Базовая единица',
148
+ icon: 'mdi:weight-gram',
149
+ },
150
+ ],
151
+ },
152
+ {
153
+ type: 'title',
154
+ text: 'Различия между линейным и контекстным масштабированием',
155
+ level: 3,
156
+ },
157
+ {
158
+ type: 'comparative',
159
+ columns: 2,
160
+ items: [
161
+ {
162
+ title: 'Линейное математическое масштабирование',
163
+ icon: 'mdi:math-log',
164
+ description: 'Прямое умножение всех значений на полученный коэффициент пересчета.',
165
+ points: [
166
+ 'Идеально для муки и базовых жидкостей',
167
+ 'Оптимально для точной кондитерской выпечки',
168
+ 'Хорошо работает при небольших изменениях (x2, x0.5)',
169
+ 'Легко рассчитывается автоматически',
170
+ ],
171
+ },
172
+ {
173
+ title: 'Контекстное кухонное масштабирование',
174
+ icon: 'mdi:chef-hat',
175
+ description: 'Корректировка пропорций с учетом интенсивности вкуса и испарения.',
176
+ highlight: true,
177
+ points: [
178
+ 'Позволяет избежать пересола и избытка специй',
179
+ 'Учитывает площадь поверхности испарения',
180
+ 'Корректирует дрожжи в зависимости от массы',
181
+ 'Требует опыта и чутья шеф-повара',
182
+ ],
183
+ },
184
+ ],
185
+ },
186
+ {
187
+ type: 'title',
188
+ text: 'Коэффициенты пересчета по количеству гостей',
189
+ level: 3,
190
+ },
191
+ {
192
+ type: 'table',
193
+ headers: ['С порций', 'На порции', 'Коэффициент', 'Сложность'],
194
+ rows: [
195
+ ['2 человека', '4 человека', 'x 2.0', 'Низкая (Линейно)'],
196
+ ['4 человека', '6 человек', 'x 1.5', 'Низкая (Линейно)'],
197
+ ['4 человека', '10 человек', 'x 2.5', 'Средняя (Осторожно со специями)'],
198
+ ['4 человека', '25 человек', 'x 6.25', 'Высокая (Контекстно)'],
199
+ ],
200
+ },
201
+ {
202
+ type: 'diagnostic',
203
+ variant: 'warning',
204
+ title: 'Типичные проблемы при удвоении рецепта',
205
+ html: 'Если вы заметили, что вкус стал слишком интенсивным после пересчета (особенно острота или соль), уменьшите масштаб этих специфических ингредиентов до 75%. Никогда не увеличивайте время приготовления пропорционально весу; внутренняя температура достигается в зависимости от толщины изделия, а не от общей массы.',
206
+ },
207
+ {
208
+ type: 'title',
209
+ text: 'Словарь терминологии стандартизации',
210
+ level: 3,
211
+ },
212
+ {
213
+ type: 'glossary',
214
+ items: [
215
+ {
216
+ term: 'Коэффициент пересчета',
217
+ definition: 'Число, на которое умножаются все ингредиенты: Желаемое количество / Исходное количество.',
218
+ },
219
+ {
220
+ term: 'Уварка/Усушка',
221
+ definition: 'Потеря веса ингредиента из-за испарения или потери жира. Не всегда линейна.',
222
+ },
223
+ {
224
+ term: 'Вес брутто и нетто',
225
+ definition: 'Вес до и после очистки ингредиента. Мы всегда масштабируем исходный вес по рецепту.',
226
+ },
227
+ {
228
+ term: 'Выход',
229
+ definition: 'Общее количество готового продукта после масштабирования и приготовления.',
230
+ },
231
+ ],
232
+ },
233
+ {
234
+ type: 'tip',
235
+ title: 'Трюк со взбитым яйцом',
236
+ html: 'Если калькулятор показывает 2,3 яйца, взбейте целое яйцо, взвесьте его и используйте только 30% веса. Это единственный способ сохранить точность в изысканной кондитерке.',
237
+ },
238
+ {
239
+ type: 'paragraph',
240
+ html: 'Наш инструмент упрощает математику, чтобы вы могли направить энергию на то, что действительно важно: творчество и вкус.',
241
+ },
242
+ ],
243
+ schemas: [appSchema, faqSchema, howToSchema],
244
+ };