@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
@@ -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
+ };
@@ -0,0 +1,244 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+
3
+ const title = 'Ingrediensomvandlare Receptjustering';
4
+ const description = 'Skala recept automatiskt efter antal portioner. Beräkna exakta mängder ingredienser genom att multiplicera eller minska ditt recept utan krångel.';
5
+
6
+ const faq = [
7
+ {
8
+ question: 'Varför innehåller min omvandlingsfaktor decimaler?',
9
+ answer: 'Eftersom kulinariska proportioner inte alltid är jämna tal. Om du skalar ett recept från 4 till 7 personer är faktorn exakt 1,75. Ingredienserna multipliceras med det talet, även om det resulterar i bråktal. Det är mer exakt än att runda av godtyckligt.',
10
+ },
11
+ {
12
+ question: 'Vad händer om jag skriver in "1/2 tsk salt"?',
13
+ answer: 'Verktyget letar efter talet först. Det känner igen "1" som mängd och "/2" som en del av enheten. Resultatet blir "0,5" och kommer att skalas korrekt. För bråk som "1/2" kan du skriva "0,5" direkt (tydligare), annars tolkas det som en division.',
14
+ },
15
+ {
16
+ question: 'Ska jag runda av slutresultaten?',
17
+ answer: 'Det beror på ingrediensen. För mjöl, ja. För jäst eller kryddor är precision mindre viktig (skala till 75% av det angivna värdet). För ägg: om du får 2,3, använd 2 hela ägg + en del av ett tredje (vägt), eller runda ner till 2 om rätten tillåter det.',
18
+ },
19
+ {
20
+ question: 'Varför ändras inte resultatet när jag ändrar portionerna?',
21
+ answer: 'Se till att ingrediensfältet har innehåll. Om det är tomt finns det inget att skala. Kontrollera även att siffrorna i dina ingredienser är igenkännbara (t.ex. "500g", "1/2 tsk").',
22
+ },
23
+ {
24
+ question: 'Fungerar det med imperialenheter (ounces, cups)?',
25
+ answer: 'Tekniskt sett ja, verktyget läser siffror och skalar. Men precisionen är begränsad med "cups" (inkonsistent volym). Vi rekommenderar att du konverterar till gram innan du skalar.',
26
+ },
27
+ ];
28
+
29
+ const howTo = [
30
+ {
31
+ name: 'Ange dina portioner',
32
+ text: 'I fältet "Original" anger du antalet personer som receptet är anpassat för. I "Önskat" anger du antalet personer du ska laga mat till.',
33
+ },
34
+ {
35
+ name: 'Klistra in din ingredienslista',
36
+ text: 'Kopiera och klistra in din lista precis som den är. En ingrediens per rad. Verktyget känner igen siffror i början (500g, 1/2, 2.5) och skalar automatiskt.',
37
+ },
38
+ {
39
+ name: 'Justera efter sammanhang',
40
+ text: 'Resultaten är matematiskt exakta, men matlagning är en konst. Kryddor: skala till 75%. Jäst: använd mindre än det teoretiska vid stora mängder. Tillagningstider skalas aldrig.',
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: 'omskalning-ingredienser',
77
+ title,
78
+ description,
79
+ ui: {
80
+ servings: 'Portioner',
81
+ original: 'Original',
82
+ desired: 'Önskat',
83
+ multiplyingFactor: 'Multiplikationsfaktor',
84
+ ingredientsList: 'Ingredienslista',
85
+ pasteHere: 'Klistra in din lista här.',
86
+ exampleLine1: 'Ex:',
87
+ exampleLine2: '500g Mjöl',
88
+ exampleLine3: '300ml Vatten',
89
+ exampleLine4: '10g Salt',
90
+ result: 'Resultat',
91
+ copy: 'Kopiera',
92
+ copied: 'Kopierat!',
93
+ emptyState: 'Dina justerade ingredienser visas här...',
94
+ defaultIngredient1: '200g Mjöl',
95
+ defaultIngredient2: '100ml Mjölk',
96
+ defaultIngredient3: '2 Ägg',
97
+ },
98
+ faqTitle: 'Vanliga Frågor',
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 - Vetenskapliga skalningstekniker',
112
+ url: 'https://www.modernistcuisine.com/',
113
+ },
114
+ ],
115
+ howTo,
116
+ seo: [
117
+ {
118
+ type: 'title',
119
+ text: 'Mästarguide för skalning och omvandling av recept',
120
+ level: 2,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'Att <strong>skala ingredienser</strong> är en av de mest kritiska och felbenägna uppgifterna i ett professionellt kök. Det handlar inte bara om att multiplicera siffror, utan om att förstå hur matens kemi och fysik reagerar på förändringar i volym och yta.',
125
+ },
126
+ {
127
+ type: 'stats',
128
+ columns: 4,
129
+ items: [
130
+ {
131
+ value: 'x1.75',
132
+ label: 'Faktor för 4 till 7 pers.',
133
+ icon: 'mdi:calculator',
134
+ },
135
+ {
136
+ value: '75%',
137
+ label: 'Kryddjustering',
138
+ icon: 'mdi:shaker-outline',
139
+ },
140
+ {
141
+ value: '0%',
142
+ label: 'Tidsskalning',
143
+ icon: 'mdi:timer-off',
144
+ },
145
+ {
146
+ value: '100g',
147
+ label: 'Referensbas',
148
+ icon: 'mdi:weight-gram',
149
+ },
150
+ ],
151
+ },
152
+ {
153
+ type: 'title',
154
+ text: 'Skillnader mellan linjär och kontextuell skalning',
155
+ level: 3,
156
+ },
157
+ {
158
+ type: 'comparative',
159
+ columns: 2,
160
+ items: [
161
+ {
162
+ title: 'Matematisk linjär skalning',
163
+ icon: 'mdi:math-log',
164
+ description: 'Direkt multiplikation av alla värden med den erhållna omvandlingsfaktorn.',
165
+ points: [
166
+ 'Perfekt för mjöl och basvätskor',
167
+ 'Idealisk för precisionsbakning',
168
+ 'Fungerar bra vid små ändringar (x2, x0.5)',
169
+ 'Enkel att beräkna automatiskt',
170
+ ],
171
+ },
172
+ {
173
+ title: 'Kontextuell köksskalning',
174
+ icon: 'mdi:chef-hat',
175
+ description: 'Justering av proportioner baserat på smakintensitet och avdunstning.',
176
+ highlight: true,
177
+ points: [
178
+ 'Undviker överskott av salt och kryddor',
179
+ 'Tar hänsyn till avdunstningsyta',
180
+ 'Justerar jäst efter massa',
181
+ 'Kräver erfarenhet och kockens omdöme',
182
+ ],
183
+ },
184
+ ],
185
+ },
186
+ {
187
+ type: 'title',
188
+ text: 'Omvandlingsfaktorer efter antal gäster',
189
+ level: 3,
190
+ },
191
+ {
192
+ type: 'table',
193
+ headers: ['Från Portioner', 'Till Portioner', 'Faktor (FC)', 'Svårighetsgrad'],
194
+ rows: [
195
+ ['2 personer', '4 personer', 'x 2.0', 'Låg (Linjär)'],
196
+ ['4 personer', '6 personer', 'x 1.5', 'Låg (Linjär)'],
197
+ ['4 personer', '10 personer', 'x 2.5', 'Medel (Se upp med kryddor)'],
198
+ ['4 personer', '25 personer', 'x 6.25', 'Hög (Kontextuell)'],
199
+ ],
200
+ },
201
+ {
202
+ type: 'diagnostic',
203
+ variant: 'warning',
204
+ title: 'Vanliga problem när man dubblar ett recept',
205
+ html: 'Om du märker att smaken är för intensiv efter skalning (särskilt med kryddor eller salt), minska skalningen av dessa ingredienser till 75%. Dubbla aldrig tillagningstiden; innertemperaturen uppnås beroende på tjocklek, inte totalvikt.',
206
+ },
207
+ {
208
+ type: 'title',
209
+ text: 'Ordlista för standardisering',
210
+ level: 3,
211
+ },
212
+ {
213
+ type: 'glossary',
214
+ items: [
215
+ {
216
+ term: 'Omvandlingsfaktor',
217
+ definition: 'Talet som alla ingredienser multipliceras med: Önskad mängd / Originalmängd.',
218
+ },
219
+ {
220
+ term: 'Svinnhalt',
221
+ definition: 'Viktförlust hos en ingrediens genom avdunstning eller fettförlust.',
222
+ },
223
+ {
224
+ term: 'Bruttovikt vs Nettovikt',
225
+ definition: 'Vikten före och efter anordning av ingrediensen.',
226
+ },
227
+ {
228
+ term: 'Utbyte',
229
+ definition: 'Total mängd färdig produkt efter skalning och tillagning.',
230
+ },
231
+ ],
232
+ },
233
+ {
234
+ type: 'tip',
235
+ title: 'Tricket med uppvispat ägg',
236
+ html: 'Om kalkylatorn visar 2,3 ägg, vispa upp ett helt ägg, väg det och använd endast 30% av vikten. Det är det enda sättet att behålla precision i finare bakning.',
237
+ },
238
+ {
239
+ type: 'paragraph',
240
+ html: 'Vårt verktyg förenklar matematiken så att du kan ägna din energi åt det som verkligen betyder något: kreativitet och smak.',
241
+ },
242
+ ],
243
+ schemas: [appSchema, faqSchema, howToSchema],
244
+ };