@jjlmoya/utils-cooking 1.25.0 → 1.27.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.
- package/package.json +1 -1
- package/src/category/i18n/fr.ts +16 -16
- package/src/category/i18n/ru.ts +7 -7
- package/src/category/i18n/zh.ts +1 -1
- package/src/tests/no_en_dash.test.ts +70 -0
- package/src/tool/american-kitchen-converter/i18n/en.ts +2 -2
- package/src/tool/american-kitchen-converter/i18n/fr.ts +2 -2
- package/src/tool/american-kitchen-converter/i18n/pl.ts +2 -2
- package/src/tool/american-kitchen-converter/i18n/ru.ts +13 -13
- package/src/tool/american-kitchen-converter/i18n/sv.ts +2 -2
- package/src/tool/american-kitchen-converter/i18n/zh.ts +3 -3
- package/src/tool/american-kitchen-converter/seo.astro +2 -2
- package/src/tool/banana-ripeness/banana-ripeness.css +56 -0
- package/src/tool/banana-ripeness/i18n/fr.ts +5 -5
- package/src/tool/banana-ripeness/i18n/ru.ts +5 -5
- package/src/tool/banana-ripeness/seo.astro +2 -2
- package/src/tool/brine/i18n/fr.ts +4 -4
- package/src/tool/brine/i18n/ru.ts +3 -3
- package/src/tool/brine/i18n/sv.ts +9 -9
- package/src/tool/brine/seo.astro +2 -2
- package/src/tool/cookware-guide/i18n/fr.ts +9 -9
- package/src/tool/cookware-guide/i18n/ru.ts +6 -6
- package/src/tool/cookware-guide/i18n/zh.ts +3 -3
- package/src/tool/cookware-guide/seo.astro +2 -2
- package/src/tool/egg-timer/i18n/ru.ts +4 -4
- package/src/tool/egg-timer/seo.astro +2 -2
- package/src/tool/ingredient-rescaler/i18n/en.ts +1 -1
- package/src/tool/ingredient-rescaler/i18n/fr.ts +3 -3
- package/src/tool/ingredient-rescaler/i18n/pl.ts +1 -1
- package/src/tool/ingredient-rescaler/i18n/ru.ts +5 -5
- package/src/tool/ingredient-rescaler/i18n/zh.ts +5 -5
- package/src/tool/ingredient-rescaler/seo.astro +2 -2
- package/src/tool/kitchen-timer/i18n/de.ts +1 -1
- package/src/tool/kitchen-timer/i18n/fr.ts +8 -8
- package/src/tool/kitchen-timer/i18n/id.ts +1 -1
- package/src/tool/kitchen-timer/i18n/nl.ts +1 -1
- package/src/tool/kitchen-timer/i18n/pl.ts +1 -1
- package/src/tool/kitchen-timer/i18n/ru.ts +4 -4
- package/src/tool/kitchen-timer/i18n/sv.ts +1 -1
- package/src/tool/kitchen-timer/i18n/zh.ts +5 -5
- package/src/tool/kitchen-timer/seo.astro +2 -2
- package/src/tool/meringue-peak/i18n/en.ts +3 -3
- package/src/tool/meringue-peak/i18n/ru.ts +3 -3
- package/src/tool/meringue-peak/i18n/zh.ts +2 -2
- package/src/tool/meringue-peak/seo.astro +2 -2
- package/src/tool/mold-scaler/seo.astro +2 -2
- package/src/tool/pizza/i18n/de.ts +1 -1
- package/src/tool/pizza/i18n/fr.ts +4 -4
- package/src/tool/pizza/i18n/ru.ts +6 -6
- package/src/tool/pizza/seo.astro +2 -2
- package/src/tool/roux-guide/i18n/fr.ts +3 -3
- package/src/tool/roux-guide/i18n/ru.ts +4 -4
- package/src/tool/roux-guide/i18n/zh.ts +1 -1
- package/src/tool/roux-guide/seo.astro +2 -2
- package/src/tool/sourdough-calculator/i18n/ru.ts +2 -2
- package/src/tool/sourdough-calculator/i18n/zh.ts +2 -2
- package/src/tool/sourdough-calculator/seo.astro +2 -2
- package/src/tool/yeast-converter/i18n/de.ts +1 -1
- package/src/tool/yeast-converter/i18n/en.ts +1 -1
- package/src/tool/yeast-converter/i18n/fr.ts +19 -19
- package/src/tool/yeast-converter/i18n/id.ts +1 -1
- package/src/tool/yeast-converter/i18n/nl.ts +1 -1
- package/src/tool/yeast-converter/i18n/pl.ts +1 -1
- package/src/tool/yeast-converter/i18n/pt.ts +1 -1
- package/src/tool/yeast-converter/i18n/ru.ts +4 -4
- package/src/tool/yeast-converter/i18n/sv.ts +1 -1
- package/src/tool/yeast-converter/seo.astro +2 -2
|
@@ -6,7 +6,7 @@ const description = "Zarządzaj wieloma czasami gotowania jednocześnie. Niezale
|
|
|
6
6
|
const faq = [
|
|
7
7
|
{
|
|
8
8
|
question: 'Ile minutników mogę stworzyć?',
|
|
9
|
-
answer: 'Nieograniczoną liczbę. Dodaj tyle, ile potrzebujesz przyciskiem "+". Idealne do gotowania kilku potraw naraz: gotujący się makaron, redukujący się sos, odpoczywające mięso i pracujący piekarnik
|
|
9
|
+
answer: 'Nieograniczoną liczbę. Dodaj tyle, ile potrzebujesz przyciskiem "+". Idealne do gotowania kilku potraw naraz: gotujący się makaron, redukujący się sos, odpoczywające mięso i pracujący piekarnik - wszystko jednocześnie.',
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
question: 'Dlaczego odpoczynek mięsa jest ważny?',
|
|
@@ -6,11 +6,11 @@ const description = "Управляйте несколькими процесс
|
|
|
6
6
|
const faq = [
|
|
7
7
|
{
|
|
8
8
|
question: 'Сколько таймеров я могу создать?',
|
|
9
|
-
answer: 'Неограниченно. Добавляйте столько, сколько нужно, кнопкой "+". Идеально для одновременного приготовления нескольких блюд: варка пасты, выпаривание соуса, отдых мяса и работа духовки
|
|
9
|
+
answer: 'Неограниченно. Добавляйте столько, сколько нужно, кнопкой "+". Идеально для одновременного приготовления нескольких блюд: варка пасты, выпаривание соуса, отдых мяса и работа духовки - всё сразу.',
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
question: 'Почему важен отдых мяса?',
|
|
13
|
-
answer: 'Если разрезать мясо сразу после огня, соки вытекут на тарелку. При отдыхе в течение 5
|
|
13
|
+
answer: 'Если разрезать мясо сразу после огня, соки вытекут на тарелку. При отдыхе в течение 5-10 минут волокна расслабляются, и соки распределяются равномерно. Результат: сочное мясо вместо сухого.',
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
question: 'Работает ли таймер при заблокированном экране?',
|
|
@@ -110,7 +110,7 @@ export const content: ToolLocaleContent = {
|
|
|
110
110
|
},
|
|
111
111
|
{
|
|
112
112
|
type: 'paragraph',
|
|
113
|
-
html: 'Профессиональная кухня
|
|
113
|
+
html: 'Профессиональная кухня - это не только рецепты, но и <strong>точный тайминг</strong>. Концепция <em>"Mise en Place"</em> (всё на своих местах) включает время как один из важнейших ингредиентов.',
|
|
114
114
|
},
|
|
115
115
|
{
|
|
116
116
|
type: 'title',
|
|
@@ -135,7 +135,7 @@ export const content: ToolLocaleContent = {
|
|
|
135
135
|
},
|
|
136
136
|
{
|
|
137
137
|
type: 'paragraph',
|
|
138
|
-
html: 'Время влияет и на безопасность. "Опасная зона" размножения бактерий
|
|
138
|
+
html: 'Время влияет и на безопасность. "Опасная зона" размножения бактерий - от 5°C до 65°C. Блюда не должны находиться в этом диапазоне более <strong>2 часов</strong>.',
|
|
139
139
|
},
|
|
140
140
|
{
|
|
141
141
|
type: 'title',
|
|
@@ -6,7 +6,7 @@ const description = "Hantera flera tillagningstider samtidigt. Oberoende larm, i
|
|
|
6
6
|
const faq = [
|
|
7
7
|
{
|
|
8
8
|
question: 'Hur många timers kan jag skapa?',
|
|
9
|
-
answer: 'Obegränsat antal. Lägg till så många du behöver med "+"-knappen. Perfekt för att laga flera rätter samtidigt: pasta som kokar, sås som reduceras, kött som vilar och ugnen igång
|
|
9
|
+
answer: 'Obegränsat antal. Lägg till så många du behöver med "+"-knappen. Perfekt för att laga flera rätter samtidigt: pasta som kokar, sås som reduceras, kött som vilar och ugnen igång - allt på en gång.',
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
question: 'Varför är vilotiden viktig för kött?',
|
|
@@ -6,7 +6,7 @@ const description = "同时管理多个烹饪时间。独立闹钟设计,专
|
|
|
6
6
|
const faq = [
|
|
7
7
|
{
|
|
8
8
|
question: '我可以创建多少个计时器?',
|
|
9
|
-
answer: '
|
|
9
|
+
answer: '无限制。通过"+"按钮,你可以为每道菜添加一个计时器。非常适合同时管控多项任务:在煮面条的同时,收浓酱汁、让肉类静置、并监控烤箱。',
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
question: '为什么肉类静置过程很重要?',
|
|
@@ -17,18 +17,18 @@ const faq = [
|
|
|
17
17
|
answer: '是的,但你需要开启浏览器的通知权限。计时器会在后台持续运行,即使你切换标签页或锁屏手机,它也会通过声音和系统通知提醒你。',
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
|
-
question: '
|
|
20
|
+
question: '什么是食品"危险温度带"?',
|
|
21
21
|
answer: '细菌在 5°C 到 65°C 之间繁殖最快。烹饪后的食物在该温度区间内不应停留超过 2 小时(如果环境温度超过 30°C,则限制为 1 小时)。使用计时器来控制降温冷却的时间。',
|
|
22
22
|
},
|
|
23
23
|
];
|
|
24
24
|
const howTo = [
|
|
25
25
|
{
|
|
26
26
|
name: '创建多个计时器',
|
|
27
|
-
text: '
|
|
27
|
+
text: '点击"+"按钮,根据你的需要添加多个计时器。适合协调多道菜肴同步进行。',
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
name: '个性化计时器名称',
|
|
31
|
-
text: '
|
|
31
|
+
text: '修改每个计时器的标签以便识别正在烹饪的内容:"烤箱"、"米饭"、"酱汁"等。',
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
name: '移动端便捷控制',
|
|
@@ -147,7 +147,7 @@ export const content: ToolLocaleContent = {
|
|
|
147
147
|
items: [
|
|
148
148
|
'<strong>错开完成时间:</strong> 如果所有菜同时完成,装盘时你会手忙脚乱。尽量规划让配菜早于主菜 5 分钟准备好。',
|
|
149
149
|
'<strong>利用余热:</strong> 在计时器响铃前 1-2 分钟关闭火源。余热会温柔地完成最后的烹制。',
|
|
150
|
-
'<strong>重命名你的计时器:</strong>
|
|
150
|
+
'<strong>重命名你的计时器:</strong> 忙碌时容易忘记闹钟是哪道菜。使用本工具的重命名功能,标注"烤箱"、"米饭"或"酱汁"。',
|
|
151
151
|
],
|
|
152
152
|
},
|
|
153
153
|
{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
-
import {
|
|
3
|
+
import { kitchenTimer } from './entry';
|
|
4
4
|
import type { KnownLocale } from '../../types';
|
|
5
5
|
|
|
6
6
|
interface Props {
|
|
@@ -8,7 +8,7 @@ interface Props {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
const { locale = 'es' } = Astro.props;
|
|
11
|
-
const content = await
|
|
11
|
+
const content = await kitchenTimer.i18n[locale]?.();
|
|
12
12
|
if (!content) return null;
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -22,7 +22,7 @@ const faq = [
|
|
|
22
22
|
{
|
|
23
23
|
question: "Why do my egg whites refuse to whip up?",
|
|
24
24
|
answer:
|
|
25
|
-
"Even a microscopic trace of fat
|
|
25
|
+
"Even a microscopic trace of fat-from leftover grease on the bowl or a tiny drop of yolk-will prevent the whites from forming a stable foam. Always use a clean metal or glass bowl.",
|
|
26
26
|
},
|
|
27
27
|
];
|
|
28
28
|
const howTo = [
|
|
@@ -139,7 +139,7 @@ export const content: ToolLocaleContent = {
|
|
|
139
139
|
{
|
|
140
140
|
question: "Why do my egg whites refuse to whip up?",
|
|
141
141
|
answer:
|
|
142
|
-
"Even a microscopic trace of fat
|
|
142
|
+
"Even a microscopic trace of fat-from leftover grease on the bowl or a tiny drop of yolk-will prevent the whites from forming a stable foam. Always use a clean metal or glass bowl.",
|
|
143
143
|
},
|
|
144
144
|
],
|
|
145
145
|
howTo: [
|
|
@@ -272,7 +272,7 @@ export const content: ToolLocaleContent = {
|
|
|
272
272
|
type: "diagnostic",
|
|
273
273
|
variant: "warning",
|
|
274
274
|
title: "Is Your Meringue 'Weeping' or Releasing Liquid?",
|
|
275
|
-
html: "If you see syrup leaking (syneresis), it's either because the sugar didn't fully dissolve or from high ambient humidity. In Italian meringue, ensure the syrup is poured in a slow, steady stream
|
|
275
|
+
html: "If you see syrup leaking (syneresis), it's either because the sugar didn't fully dissolve or from high ambient humidity. In Italian meringue, ensure the syrup is poured in a slow, steady stream-never directly onto the whisk.",
|
|
276
276
|
},
|
|
277
277
|
{
|
|
278
278
|
type: "title",
|
|
@@ -6,7 +6,7 @@ const description = "Рассчитайте точное количество с
|
|
|
6
6
|
const faq = [
|
|
7
7
|
{
|
|
8
8
|
question: 'Какое соотношение сахара и белков идеально?',
|
|
9
|
-
answer: 'Золотое правило кондитерского искусства
|
|
9
|
+
answer: 'Золотое правило кондитерского искусства - соотношение 1:2. На каждый грамм яичного белка следует использовать два грамма сахара, чтобы обеспечить стабильную и плотную структуру.',
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
question: 'Как понять, что белки взбиты "до твердых пиков"?',
|
|
@@ -14,7 +14,7 @@ const faq = [
|
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
question: 'Какая меренга самая стабильная для декора?',
|
|
17
|
-
answer: 'Итальянская меренга
|
|
17
|
+
answer: 'Итальянская меренга - самая стабильная из трех основных видов. Благодаря горячему сиропу белки слегка завариваются, создавая структуру, более устойчивую к теплу и влаге.',
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
question: 'Можно ли использовать пастеризованные белки из бутылки?',
|
|
@@ -94,7 +94,7 @@ export const content: ToolLocaleContent = {
|
|
|
94
94
|
stageStiffPeaksDesc: 'Острый, плотный и блестящий пик.',
|
|
95
95
|
frenchSugarWhite: 'Сахар',
|
|
96
96
|
frenchSugarPowder: 'Сахарная пудра',
|
|
97
|
-
frenchTip: 'Французская меренга
|
|
97
|
+
frenchTip: 'Французская меренга - самая простая, идеальна для выпекания безе. Не подходит для употребления в сыром виде.',
|
|
98
98
|
frenchTime1: '1-2 мин',
|
|
99
99
|
frenchTime2: '3-5 мин',
|
|
100
100
|
frenchTime3: '7-9 мин',
|
|
@@ -9,7 +9,7 @@ const faq = [
|
|
|
9
9
|
answer: '烘焙中的黄金法则比例是 1:2。每 1 克蛋白,应使用 2 克糖,以确保结构稳定且坚挺。',
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
|
-
question: '
|
|
12
|
+
question: '如何判断蛋白已经打发到了"硬性发泡"?',
|
|
13
13
|
answer: '硬性发泡(Stiff Peak)是指提起搅拌头时,蛋白霜形成一个竖直的尖角,且不会垂下。此外,蛋白霜应显示出非常迷人的光泽。',
|
|
14
14
|
},
|
|
15
15
|
{
|
|
@@ -191,7 +191,7 @@ export const content: ToolLocaleContent = {
|
|
|
191
191
|
},
|
|
192
192
|
{
|
|
193
193
|
type: 'tip',
|
|
194
|
-
title: '
|
|
194
|
+
title: '关于搅拌盆的"除油"秘诀',
|
|
195
195
|
html: '在开始前,用纸巾蘸取少量白醋或柠檬汁擦拭搅拌盆。任何微笑的油脂残留都会导致蛋白无法打发。',
|
|
196
196
|
},
|
|
197
197
|
],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
-
import {
|
|
3
|
+
import { meringuePeak } from './entry';
|
|
4
4
|
import type { KnownLocale } from '../../types';
|
|
5
5
|
|
|
6
6
|
interface Props {
|
|
@@ -8,7 +8,7 @@ interface Props {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
const { locale = 'es' } = Astro.props;
|
|
11
|
-
const content = await
|
|
11
|
+
const content = await meringuePeak.i18n[locale]?.();
|
|
12
12
|
if (!content) return null;
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
-
import {
|
|
3
|
+
import { moldScaler } from './entry';
|
|
4
4
|
import type { KnownLocale } from '../../types';
|
|
5
5
|
|
|
6
6
|
interface Props {
|
|
@@ -8,7 +8,7 @@ interface Props {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
const { locale = 'es' } = Astro.props;
|
|
11
|
-
const content = await
|
|
11
|
+
const content = await moldScaler.i18n[locale]?.();
|
|
12
12
|
if (!content) return null;
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -119,7 +119,7 @@ export const content: ToolLocaleContent = {
|
|
|
119
119
|
},
|
|
120
120
|
{
|
|
121
121
|
type: 'paragraph',
|
|
122
|
-
html: '<strong>Neapolitanische Pizza</strong> ist mehr als ein Rezept
|
|
122
|
+
html: '<strong>Neapolitanische Pizza</strong> ist mehr als ein Rezept - es ist ein Kulturerbe. Erfolg basiert auf dem Verständnis von Zeit, Temperatur und Hydratation.',
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
125
|
type: 'stats',
|
|
@@ -27,7 +27,7 @@ const faq = [
|
|
|
27
27
|
{
|
|
28
28
|
question: "Quelle farine dois-je utiliser ?",
|
|
29
29
|
answer:
|
|
30
|
-
"Idéal
|
|
30
|
+
"Idéal: Caputo Pizzeria (W260-280) ou Manitoba (W350-400). Alternative: toute farine avec 11-13g de protéines pour 100g. Évitez les farines faibles (W130-160) pour les longues fermentations.",
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
question: "Pourquoi la pâte se déchire-t-elle lors de l'étalage ?",
|
|
@@ -153,7 +153,7 @@ export const content: ToolLocaleContent = {
|
|
|
153
153
|
{
|
|
154
154
|
question: "Quelle farine dois-je utiliser ?",
|
|
155
155
|
answer:
|
|
156
|
-
"Idéal
|
|
156
|
+
"Idéal: Caputo Pizzeria (W260-280) ou Manitoba (W350-400). Alternative: toute farine avec 11-13g de protéines pour 100g. Évitez les farines faibles (W130-160) pour les longues fermentations.",
|
|
157
157
|
},
|
|
158
158
|
{
|
|
159
159
|
question: "Pourquoi la pâte se déchire-t-elle lors de l'étalage ?",
|
|
@@ -195,7 +195,7 @@ export const content: ToolLocaleContent = {
|
|
|
195
195
|
},
|
|
196
196
|
{
|
|
197
197
|
type: "paragraph",
|
|
198
|
-
html: "La <strong>pizza napolitaine</strong> est bien plus qu'une recette
|
|
198
|
+
html: "La <strong>pizza napolitaine</strong> est bien plus qu'une recette: c'est un héritage culturel protégé qui exige une précision scientifique. Le succès dépend de la compréhension de l'interaction entre le temps, la température et l'hydratation.",
|
|
199
199
|
},
|
|
200
200
|
{
|
|
201
201
|
type: "stats",
|
|
@@ -356,7 +356,7 @@ export const content: ToolLocaleContent = {
|
|
|
356
356
|
},
|
|
357
357
|
{
|
|
358
358
|
type: "paragraph",
|
|
359
|
-
html: "Notre calculateur automatise les proportions spécifiques pour que vous puissiez vous concentrer sur l'essentiel
|
|
359
|
+
html: "Notre calculateur automatise les proportions spécifiques pour que vous puissiez vous concentrer sur l'essentiel: la technique et la passion pour le produit final.",
|
|
360
360
|
},
|
|
361
361
|
],
|
|
362
362
|
bibliography,
|
|
@@ -6,11 +6,11 @@ const description = "Рассчитайте точные пропорции му
|
|
|
6
6
|
const faq = [
|
|
7
7
|
{
|
|
8
8
|
question: "Какая гидратация идеальна для неаполитанской пиццы?",
|
|
9
|
-
answer: "Согласно протоколу AVPN, стандартная гидратация составляет 63
|
|
9
|
+
answer: "Согласно протоколу AVPN, стандартная гидратация составляет 63-67%. Для новичков 60-62% более удобны в работе. Профессионалы, использующие сильную муку (W300+), могут использовать 70-75% для исключительных результатов.",
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
question: "Как долго должно ферментироваться тесто?",
|
|
13
|
-
answer: "Минимум 24 часа в холодильнике (4°C) для активации ферментов. Оптимально 48
|
|
13
|
+
answer: "Минимум 24 часа в холодильнике (4°C) для активации ферментов. Оптимально 48-72 часа. Для выдержки более 72 часов требуется очень сильная мука (W300+), иначе тесто перекиснет.",
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
question: "Можно ли использовать сухие дрожжи?",
|
|
@@ -18,7 +18,7 @@ const faq = [
|
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
question: "Можно ли приготовить неаполитанскую пиццу в домашней духовке?",
|
|
21
|
-
answer: "Да, но с нюансами. Разогрейте духовку до максимума (250
|
|
21
|
+
answer: "Да, но с нюансами. Разогрейте духовку до максимума (250-280°C) с пекарским камнем в течение 45-60 минут. Выпечка займет 5-7 минут вместо 60-90 секунд.",
|
|
22
22
|
},
|
|
23
23
|
];
|
|
24
24
|
const howTo = [
|
|
@@ -28,11 +28,11 @@ const howTo = [
|
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
name: "Замесите тесто",
|
|
31
|
-
text: "Смешайте муку с теплой водой (22
|
|
31
|
+
text: "Смешайте муку с теплой водой (22-25°C), солью и дрожжами. Вымешивайте 8-10 минут в комбайне или 15-20 минут руками.",
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
name: "Холодная ферментация",
|
|
35
|
-
text: "После предварительной расстойки поместите шарики теста в герметичный контейнер и уберите в холодильник (4°C) на 24
|
|
35
|
+
text: "После предварительной расстойки поместите шарики теста в герметичный контейнер и уберите в холодильник (4°C) на 24-72 часа. Это секрет вкуса.",
|
|
36
36
|
},
|
|
37
37
|
];
|
|
38
38
|
|
|
@@ -111,7 +111,7 @@ export const content: ToolLocaleContent = {
|
|
|
111
111
|
},
|
|
112
112
|
{
|
|
113
113
|
type: 'paragraph',
|
|
114
|
-
html: '<strong>Неаполитанская пицца</strong>
|
|
114
|
+
html: '<strong>Неаполитанская пицца</strong> - это культурное наследие. Успех зависит от точности времени, температуры и гидратации.',
|
|
115
115
|
},
|
|
116
116
|
{
|
|
117
117
|
type: 'stats',
|
package/src/tool/pizza/seo.astro
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
-
import {
|
|
3
|
+
import { pizza } from './entry';
|
|
4
4
|
import type { KnownLocale } from '../../types';
|
|
5
5
|
|
|
6
6
|
interface Props {
|
|
@@ -8,7 +8,7 @@ interface Props {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
const { locale = 'es' } = Astro.props;
|
|
11
|
-
const content = await
|
|
11
|
+
const content = await pizza.i18n[locale]?.();
|
|
12
12
|
if (!content) return null;
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -18,7 +18,7 @@ const faq = [
|
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
question: "Comment éviter les grumeaux ?",
|
|
21
|
-
answer: "Appliquez la règle du choc thermique
|
|
21
|
+
answer: "Appliquez la règle du choc thermique: versez un liquide froid sur un roux chaud, ou un liquide chaud sur un roux froid. Versez progressivement en fouettant énergiquement.",
|
|
22
22
|
},
|
|
23
23
|
];
|
|
24
24
|
const howTo = [
|
|
@@ -115,7 +115,7 @@ export const content: ToolLocaleContent = {
|
|
|
115
115
|
rouxBrownLabel: "Roux Brun",
|
|
116
116
|
descWhite: "Cuire juste assez pour faire perdre l'odeur de farine crue. Sans coloration.",
|
|
117
117
|
descBlond: "Recherchez une couleur beurre noisette et un léger arôme de noix.",
|
|
118
|
-
descBrown: "Feu très doux. Couleur chocolate. Note
|
|
118
|
+
descBrown: "Feu très doux. Couleur chocolate. Note: nécessite +10% de poids.",
|
|
119
119
|
timeWhite: "2-3 min",
|
|
120
120
|
timeBlond: "5-8 min",
|
|
121
121
|
timeBrown: "15-20 min",
|
|
@@ -136,7 +136,7 @@ export const content: ToolLocaleContent = {
|
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
138
|
question: "Comment éviter les grumeaux ?",
|
|
139
|
-
answer: "Appliquez la règle du choc thermique
|
|
139
|
+
answer: "Appliquez la règle du choc thermique: versez un liquide froid sur un roux chaud, ou un liquide chaud sur un roux froid. Versez progressivement en fouettant énergiquement.",
|
|
140
140
|
},
|
|
141
141
|
],
|
|
142
142
|
howTo: [
|
|
@@ -10,15 +10,15 @@ const faq = [
|
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
question: ' Какая идеальная пропорция для Ру?',
|
|
13
|
-
answer: 'Стандартная пропорция
|
|
13
|
+
answer: 'Стандартная пропорция - 1:1 по весу. Например, 50 г масла и 50 г муки. Эта смесь может загустить примерно 1 литр жидкости в зависимости от желаемой плотности.',
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
question: 'В чем разница между видами Ру?',
|
|
17
|
-
answer: 'Белый Ру готовится 2-3 мин (Бешамель). Золотистый 5-8 мин (Велюте). Темный Ру
|
|
17
|
+
answer: 'Белый Ру готовится 2-3 мин (Бешамель). Золотистый 5-8 мин (Велюте). Темный Ру - до 15-20 мин (Эспаньоль). Чем темнее цвет, тем больше орехового вкуса, но меньше загущающая способность.',
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
question: 'Как избежать комочков?',
|
|
21
|
-
answer: 'Золотое правило
|
|
21
|
+
answer: 'Золотое правило - контраст температур: холодная жидкость в горячий Ру или горячая жидкость в холодный Ру. Добавляйте жидкость понемногу, постоянно помешивая венчиком.',
|
|
22
22
|
},
|
|
23
23
|
];
|
|
24
24
|
const howTo = [
|
|
@@ -82,7 +82,7 @@ export const content: ToolLocaleContent = {
|
|
|
82
82
|
},
|
|
83
83
|
{
|
|
84
84
|
type: 'paragraph',
|
|
85
|
-
html: '<strong>Ру</strong>
|
|
85
|
+
html: '<strong>Ру</strong> - это структурная основа классической французской кухни. Понимание соотношения муки, масла и жидкости - это разница между бархатистым соусом и жидкостью с комочками.',
|
|
86
86
|
},
|
|
87
87
|
],
|
|
88
88
|
ui: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
-
import {
|
|
3
|
+
import { rouxGuide } from './entry';
|
|
4
4
|
import type { KnownLocale } from '../../types';
|
|
5
5
|
|
|
6
6
|
interface Props {
|
|
@@ -8,7 +8,7 @@ interface Props {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
const { locale = 'es' } = Astro.props;
|
|
11
|
-
const content = await
|
|
11
|
+
const content = await rouxGuide.i18n[locale]?.();
|
|
12
12
|
if (!content) return null;
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -14,7 +14,7 @@ const faq = [
|
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
question: 'Что такое "sweet spot" 1:5:5?',
|
|
17
|
-
answer: 'Соотношение 1:5:5
|
|
17
|
+
answer: 'Соотношение 1:5:5 - это "золотая середина" для многих пекарей. Оно позволяет ферментировать закваску 8-12 часов при комнатной температуре до достижения пика.',
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
question: 'Можно ли использовать свои пропорции?',
|
|
@@ -82,7 +82,7 @@ export const content: ToolLocaleContent = {
|
|
|
82
82
|
},
|
|
83
83
|
{
|
|
84
84
|
type: 'paragraph',
|
|
85
|
-
html: '<strong>Закваска</strong>
|
|
85
|
+
html: '<strong>Закваска</strong> - это не просто ингредиент, а живая экосистема диких дрожжей и молочнокислых бактерий. Здоровье этой культуры - ключ к превосходному хлебу.',
|
|
86
86
|
},
|
|
87
87
|
],
|
|
88
88
|
ui: {
|
|
@@ -13,8 +13,8 @@ const faq = [
|
|
|
13
13
|
answer: '1:2:2 比例用于激活酸面种。它产生的发酵较慢但更可控。如果你将菌种冷藏并想要恢复其活力,这是理想的选择。',
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
|
-
question: '什么是 1:5:5
|
|
17
|
-
answer: '1:5:5
|
|
16
|
+
question: '什么是 1:5:5 的"完美点"(Sweet Spot)?',
|
|
17
|
+
answer: '1:5:5 比例是许多烘焙师的"理想点"。它允许在室温下发酵 8-12 小时后菌种达到巅峰状态。',
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
question: '我可以使用自定义比例吗?',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
-
import {
|
|
3
|
+
import { sourdoughCalculator } from './entry';
|
|
4
4
|
import type { KnownLocale } from '../../types';
|
|
5
5
|
|
|
6
6
|
interface Props {
|
|
@@ -8,7 +8,7 @@ interface Props {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
const { locale = 'es' } = Astro.props;
|
|
11
|
-
const content = await
|
|
11
|
+
const content = await sourdoughCalculator.i18n[locale]?.();
|
|
12
12
|
if (!content) return null;
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -35,7 +35,7 @@ const howTo = [
|
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
name: 'Menge eingeben',
|
|
38
|
-
text: 'Geben Sie die Menge in Gramm ein. Seien Sie präzise für beste Ergebnisse
|
|
38
|
+
text: 'Geben Sie die Menge in Gramm ein. Seien Sie präzise für beste Ergebnisse - verwenden Sie nach Möglichkeit eine Küchenwaage.',
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
name: 'Umrechnung anwenden',
|
|
@@ -35,7 +35,7 @@ const howTo = [
|
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
name: 'Enter the amount',
|
|
38
|
-
text: 'Input the quantity in grams. Be precise for best results
|
|
38
|
+
text: 'Input the quantity in grams. Be precise for best results-use a kitchen scale whenever possible.',
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
name: 'Apply the conversions',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
2
|
import { bibliography } from '../bibliography';
|
|
3
3
|
|
|
4
|
-
const title = 'Convertisseur de Levure
|
|
4
|
+
const title = 'Convertisseur de Levure: Fraîche, Sèche et Levain';
|
|
5
5
|
const description =
|
|
6
6
|
'Convertissez avec précision entre la levure fraîche, la levure sèche et le levain. Obtenez les ajustements de recette nécessaires lors de l\'utilisation du levain pour maintenir une hydratation parfaite.';
|
|
7
7
|
|
|
@@ -9,7 +9,7 @@ const faq = [
|
|
|
9
9
|
{
|
|
10
10
|
question: 'Quelle est la différence entre la levure fraîche et la levure sèche ?',
|
|
11
11
|
answer:
|
|
12
|
-
'La levure fraîche contient environ 70 % d\'eau, tandis que la levure sèche en contient environ 8 %. Le facteur de conversion est le suivant
|
|
12
|
+
'La levure fraîche contient environ 70 % d\'eau, tandis que la levure sèche en contient environ 8 %. Le facteur de conversion est le suivant: 1 part de levure sèche équivaut à 3 parts de levure fraîche. La levure sèche est plus puissante et stable, ce qui la rend idéale pour une conservation à long terme.',
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
question: 'De quelle quantité de levain ai-je besoin ?',
|
|
@@ -24,18 +24,18 @@ const faq = [
|
|
|
24
24
|
{
|
|
25
25
|
question: 'Puis-je utiliser de la levure instantanée au lieu de la levure sèche active ?',
|
|
26
26
|
answer:
|
|
27
|
-
'La levure instantanée est un type de levure sèche très finement moulue. Le ratio de conversion reste le même
|
|
27
|
+
'La levure instantanée est un type de levure sèche très finement moulue. Le ratio de conversion reste le même: 1:3 entre la levure sèche et la levure fraîche. La levure instantanée peut nécessiter légèrement moins de liquide en raison de sa finesse.',
|
|
28
28
|
},
|
|
29
29
|
];
|
|
30
30
|
|
|
31
31
|
const howTo = [
|
|
32
32
|
{
|
|
33
33
|
name: 'Sélectionnez votre type de levure',
|
|
34
|
-
text: 'Choisissez le type de levure dont vous disposez
|
|
34
|
+
text: 'Choisissez le type de levure dont vous disposez: Fraîche (en cube), Sèche (instantanée ou active) ou Levain (hydratation 100 %).',
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
name: 'Entrez la quantité',
|
|
38
|
-
text: 'Saisissez la quantité en grammes. Soyez précis pour obtenir les meilleurs résultats
|
|
38
|
+
text: 'Saisissez la quantité en grammes. Soyez précis pour obtenir les meilleurs résultats: utilisez une balance de cuisine si possible.',
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
name: 'Appliquez les conversions',
|
|
@@ -151,10 +151,10 @@ export const content: ToolLocaleContent = {
|
|
|
151
151
|
icon: 'mdi:cube',
|
|
152
152
|
description: 'Cellules de levure vivantes en suspension dans l\'amidon et l\'humidité.',
|
|
153
153
|
points: [
|
|
154
|
-
'Puissance
|
|
155
|
-
'Conservation
|
|
156
|
-
'Teneur en eau
|
|
157
|
-
'Idéal pour
|
|
154
|
+
'Puissance: 100 % (référence)',
|
|
155
|
+
'Conservation: 2-3 semaines au frais',
|
|
156
|
+
'Teneur en eau: ~70 %',
|
|
157
|
+
'Idéal pour: Boulangers pros, usage immédiat',
|
|
158
158
|
],
|
|
159
159
|
},
|
|
160
160
|
{
|
|
@@ -162,10 +162,10 @@ export const content: ToolLocaleContent = {
|
|
|
162
162
|
icon: 'mdi:spray-bottle',
|
|
163
163
|
description: 'Cellules de levure déshydratées, plus concentrées que la fraîche.',
|
|
164
164
|
points: [
|
|
165
|
-
'Puissance
|
|
166
|
-
'Conservation
|
|
167
|
-
'Teneur en eau
|
|
168
|
-
'Idéal pour
|
|
165
|
+
'Puissance: 3x levure fraîche',
|
|
166
|
+
'Conservation: 1-2 ans non ouvert',
|
|
167
|
+
'Teneur en eau: ~8 %',
|
|
168
|
+
'Idéal pour: Boulangers amateurs, stockage long',
|
|
169
169
|
],
|
|
170
170
|
},
|
|
171
171
|
{
|
|
@@ -174,10 +174,10 @@ export const content: ToolLocaleContent = {
|
|
|
174
174
|
description: 'Culture de levures sauvages et de bactéries à 100 % d\'hydratation.',
|
|
175
175
|
highlight: true,
|
|
176
176
|
points: [
|
|
177
|
-
'Puissance
|
|
178
|
-
'Conservation
|
|
179
|
-
'Teneur en eau
|
|
180
|
-
'Idéal pour
|
|
177
|
+
'Puissance: 1 part = 5 parts de levure fraîche',
|
|
178
|
+
'Conservation: Indéfinie avec soin',
|
|
179
|
+
'Teneur en eau: 50 % (autant de farine)',
|
|
180
|
+
'Idéal pour: Arôme complexe, fermentation lente',
|
|
181
181
|
],
|
|
182
182
|
},
|
|
183
183
|
],
|
|
@@ -202,7 +202,7 @@ export const content: ToolLocaleContent = {
|
|
|
202
202
|
{
|
|
203
203
|
type: 'diagnostic',
|
|
204
204
|
variant: 'warning',
|
|
205
|
-
title: 'Crucial
|
|
205
|
+
title: 'Crucial: Ajustement de recette pour le levain',
|
|
206
206
|
html: 'Lorsque vous remplacez la levure par du levain, vous DEVEZ ajuster votre recette. Le levain contient 50 % de farine et 50 % d\'eau. Si votre conversion demande 100 g de levain, retirez 50 g de farine et 50 ml d\'eau de votre recette pour maintenir l\'hydratation.',
|
|
207
207
|
},
|
|
208
208
|
{
|
|
@@ -221,7 +221,7 @@ export const content: ToolLocaleContent = {
|
|
|
221
221
|
},
|
|
222
222
|
{
|
|
223
223
|
type: 'tip',
|
|
224
|
-
title: 'Conseil Pro
|
|
224
|
+
title: 'Conseil Pro: Ajustements de Température',
|
|
225
225
|
html: 'Une fermentation à froid avec du levain (2-4°C pendant 8-16 heures) développe des saveurs et une structure supérieures. C\'est pourquoi les boulangeries professionnelles préfèrent le levain pour les pains à longue fermentation.',
|
|
226
226
|
},
|
|
227
227
|
{
|
|
@@ -35,7 +35,7 @@ const howTo = [
|
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
name: 'Masukkan jumlahnya',
|
|
38
|
-
text: 'Masukkan jumlah dalam gram. Berikan angka yang presisi untuk hasil terbaik
|
|
38
|
+
text: 'Masukkan jumlah dalam gram. Berikan angka yang presisi untuk hasil terbaik-gunakan timbangan dapur jika memungkinkan.',
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
name: 'Terapkan konversi',
|
|
@@ -35,7 +35,7 @@ const howTo = [
|
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
name: 'Voer de hoeveelheid in',
|
|
38
|
-
text: 'Voer de hoeveelheid in grammen in. Wees nauwkeurig voor het beste resultaat
|
|
38
|
+
text: 'Voer de hoeveelheid in grammen in. Wees nauwkeurig voor het beste resultaat-gebruik indien mogelijk een keukenweegschaal.',
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
name: 'Pas de omrekening toe',
|
|
@@ -35,7 +35,7 @@ const howTo = [
|
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
name: 'Wprowadź ilość',
|
|
38
|
-
text: 'Podaj ilość w gramach. Bądź precyzyjny
|
|
38
|
+
text: 'Podaj ilość w gramach. Bądź precyzyjny - jeśli to możliwe, użyj wagi kuchennej.',
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
name: 'Zastosuj przeliczenie',
|