@jjlmoya/utils-cooking 1.2.0 → 1.3.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/tool/american-kitchen-converter/i18n/en.ts +76 -1
- package/src/tool/american-kitchen-converter/i18n/es.ts +76 -1
- package/src/tool/american-kitchen-converter/i18n/fr.ts +76 -1
- package/src/tool/banana-ripeness/i18n/en.ts +72 -1
- package/src/tool/banana-ripeness/i18n/es.ts +72 -1
- package/src/tool/banana-ripeness/i18n/fr.ts +72 -1
- package/src/tool/brine/i18n/en.ts +80 -1
- package/src/tool/brine/i18n/es.ts +80 -1
- package/src/tool/brine/i18n/fr.ts +80 -1
- package/src/tool/cookware-guide/i18n/en.ts +72 -1
- package/src/tool/cookware-guide/i18n/es.ts +72 -1
- package/src/tool/cookware-guide/i18n/fr.ts +72 -1
- package/src/tool/egg-timer/i18n/en.ts +76 -1
- package/src/tool/egg-timer/i18n/es.ts +76 -1
- package/src/tool/egg-timer/i18n/fr.ts +81 -1
- package/src/tool/ingredient-rescaler/i18n/fr.ts +72 -1
- package/src/tool/kitchen-timer/i18n/en.ts +76 -1
- package/src/tool/kitchen-timer/i18n/es.ts +76 -1
- package/src/tool/kitchen-timer/i18n/fr.ts +76 -1
- package/src/tool/meringue-peak/i18n/en.ts +76 -1
- package/src/tool/meringue-peak/i18n/es.ts +72 -1
- package/src/tool/meringue-peak/i18n/fr.ts +72 -1
- package/src/tool/pizza/i18n/en.ts +94 -1
- package/src/tool/pizza/i18n/es.ts +94 -1
- package/src/tool/pizza/i18n/fr.ts +94 -1
- package/src/tool/roux-guide/i18n/en.ts +76 -1
- package/src/tool/roux-guide/i18n/es.ts +72 -1
- package/src/tool/roux-guide/i18n/fr.ts +72 -1
- package/src/tool/sourdough-calculator/i18n/en.ts +72 -1
- package/src/tool/sourdough-calculator/i18n/es.ts +72 -1
- package/src/tool/sourdough-calculator/i18n/fr.ts +77 -1
|
@@ -1,5 +1,85 @@
|
|
|
1
1
|
import type { ToolLocaleContent } from "../../../types";
|
|
2
2
|
|
|
3
|
+
const title = "Minuteur Scientifique Précis pour Œufs et Calculatrice d";
|
|
4
|
+
const description = "Jaune coulant, blancs juste figés.";
|
|
5
|
+
const faq = [
|
|
6
|
+
{
|
|
7
|
+
question: "Pourquoi l'altitude affecte-t-elle le temps de cuisson des œufs?",
|
|
8
|
+
answer:
|
|
9
|
+
"À une altitude plus élevée, la pression atmosphérique est plus basse, ce qui réduit le point d'ébullition de l'eau. Par exemple, au niveau de la mer, l'eau bout à 100°C, mais à 1500m d'altitude, elle bout à seulement 95°C. Cela signifie que la cuisson prend plus de temps.",
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
question: "Quelle est la différence entre un œuf mollet et un œuf dur?",
|
|
13
|
+
answer:
|
|
14
|
+
"Un œuf mollet a un jaune crémeux et coulant au centre, tandis que les blancs sont fermes. Un œuf dur a complètement cuit le jaune et les blancs. La différence réside principalement dans le temps de cuisson et la température atteinte.",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: "Comment puis-je obtenir des œufs durs parfaits?",
|
|
18
|
+
answer:
|
|
19
|
+
"Utilisez des œufs à température ambiante si possible, portez l'eau à ébullition, puis plongez les œufs et laissez-les cuire selon votre altitude. Refroidissez-les immédiatement dans de l'eau glacée pour arrêter la cuisson. Notre calculateur vous donne le temps exact pour votre localisation.",
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: "Pourquoi dois-je refroidir les œufs après la cuisson?",
|
|
23
|
+
answer:
|
|
24
|
+
"Refroidir les œufs rapidement dans de l'eau glacée arrête le processus de cuisson et facilite l'épluchage. Cela empêche la cuisson excessive du jaune qui pourrait créer une bordure grisâtre.",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: "Quel est l'âge idéal des œufs pour les faire bouillir?",
|
|
28
|
+
answer:
|
|
29
|
+
"Les œufs plus anciens (au moins une semaine) sont plus faciles à éplucher car l'albumine se sépare plus facilement de la coquille. Les œufs très frais peuvent être plus difficiles à éplucher.",
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
const howTo = [
|
|
33
|
+
{
|
|
34
|
+
name: "Sélectionnez Vos Paramètres",
|
|
35
|
+
text: "Choisissez la température initiale de l'œuf, sa taille, et votre altitude. Notre calculateur déterminera automatiquement le temps de cuisson optimal.",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: "Portez l'Eau à Ébullition",
|
|
39
|
+
text: "Utilisez une casserole avec suffisamment d'eau pour couvrir les œufs d'environ 2-3cm. Portez à ébullition complète.",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "Plongez et Laissez Cuire",
|
|
43
|
+
text: "Plongez délicatement les œufs dans l'eau bouillante et commencez le minuteur selon le temps recommandé. La précision est essentielle pour le résultat parfait.",
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: "Refroidissez Immédiatement",
|
|
47
|
+
text: "Quand le temps est écoulé, plongez les œufs dans de l'eau glacée pendant au moins 5 minutes pour arrêter la cuisson et faciliter l'épluchage.",
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
const faqSchema = {
|
|
52
|
+
'@context': 'https://schema.org',
|
|
53
|
+
'@type': 'FAQPage',
|
|
54
|
+
mainEntity: faq.map((item) => ({
|
|
55
|
+
'@type': 'Question',
|
|
56
|
+
name: item.question,
|
|
57
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
58
|
+
})),
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const howToSchema = {
|
|
62
|
+
'@context': 'https://schema.org',
|
|
63
|
+
'@type': 'HowTo',
|
|
64
|
+
name: title,
|
|
65
|
+
description,
|
|
66
|
+
step: howTo.map((step) => ({
|
|
67
|
+
'@type': 'HowToStep',
|
|
68
|
+
name: step.name,
|
|
69
|
+
text: step.text,
|
|
70
|
+
})),
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
const appSchema = {
|
|
74
|
+
'@context': 'https://schema.org',
|
|
75
|
+
'@type': 'SoftwareApplication',
|
|
76
|
+
name: title,
|
|
77
|
+
description,
|
|
78
|
+
applicationCategory: 'UtilitiesApplication',
|
|
79
|
+
operatingSystem: 'Web',
|
|
80
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
81
|
+
};
|
|
82
|
+
|
|
3
83
|
export const content: ToolLocaleContent = {
|
|
4
84
|
slug: "minuteur-oeuf-parfait-calculatrice-altitude",
|
|
5
85
|
title: "Minuteur Scientifique Précis pour Œufs et Calculatrice d'Altitude",
|
|
@@ -117,5 +197,5 @@ export const content: ToolLocaleContent = {
|
|
|
117
197
|
],
|
|
118
198
|
},
|
|
119
199
|
],
|
|
120
|
-
schemas: [],
|
|
200
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
121
201
|
};
|
|
@@ -1,5 +1,76 @@
|
|
|
1
1
|
import type { ToolLocaleContent } from "../../../types";
|
|
2
2
|
|
|
3
|
+
const title = "Convertisseur de Portions et Ingrédients Professionnel";
|
|
4
|
+
const description = "Multiplication directe de toutes les valeurs par le facteur de conversion calculé.";
|
|
5
|
+
const faq = [
|
|
6
|
+
{
|
|
7
|
+
question: "Pourquoi mon facteur de conversion inclut-il des décimales ?",
|
|
8
|
+
answer:
|
|
9
|
+
"Parce que les proportions culinaires ne tombent pas toujours sur des chiffres ronds. Si vous passez d'une recette pour 4 à 7 personnes, le facteur est exactement 1,75. Multiplier par ce ratio précis est plus sûr que d'arrondir arbitrairement.",
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
question: "Comment gérer les fractions comme '1/2 cac de sel' ?",
|
|
13
|
+
answer:
|
|
14
|
+
"Notre outil reconnaît automatiquement les chiffres. Il lira '1/2' comme '0,5' et l'adaptera. Pour plus de clarté, vous pouvez aussi saisir directement des décimales.",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: "Dois-je arrondir les résultats finaux ?",
|
|
18
|
+
answer:
|
|
19
|
+
"Cela dépend de l'ingrédient. Pour les farines et liquides, oui. Pour les épices fortes ou la levure, nous recommandons de ne monter qu'à 75% du total calculé pour éviter de saturer le plat.",
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: "L'outil fonctionne-t-il avec les onces ou les tasses ?",
|
|
23
|
+
answer:
|
|
24
|
+
"Oui, l'outil multiplie n'importe quelle valeur numérique. Cependant, nous conseillons vivement de convertir en grammes pour une précision professionnelle sur de gros volumes.",
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
const howTo = [
|
|
28
|
+
{
|
|
29
|
+
name: "Entrez le nombre de portions",
|
|
30
|
+
text: "Définissez le nombre de personnes prévu initialement dans la recette, et le nombre pour lequel vous souhaitez cuisiner.",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: "Collez votre liste d'ingrédients",
|
|
34
|
+
text: "Copiez et collez l'intégralité de votre liste. L'outil reconnaît les chiffres en début de ligne (ex: 500g, 1/2, 2.5) et les convertit instantanément.",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: "Appliquez les ajustements de chef",
|
|
38
|
+
text: "Le calcul est exact, mais la cuisine est intuitive. Réduisez les épices à 75%. Ne multipliez jamais les temps de cuisson par le même facteur.",
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
const faqSchema = {
|
|
43
|
+
'@context': 'https://schema.org',
|
|
44
|
+
'@type': 'FAQPage',
|
|
45
|
+
mainEntity: faq.map((item) => ({
|
|
46
|
+
'@type': 'Question',
|
|
47
|
+
name: item.question,
|
|
48
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
49
|
+
})),
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
const howToSchema = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'HowTo',
|
|
55
|
+
name: title,
|
|
56
|
+
description,
|
|
57
|
+
step: howTo.map((step) => ({
|
|
58
|
+
'@type': 'HowToStep',
|
|
59
|
+
name: step.name,
|
|
60
|
+
text: step.text,
|
|
61
|
+
})),
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const appSchema = {
|
|
65
|
+
'@context': 'https://schema.org',
|
|
66
|
+
'@type': 'SoftwareApplication',
|
|
67
|
+
name: title,
|
|
68
|
+
description,
|
|
69
|
+
applicationCategory: 'UtilitiesApplication',
|
|
70
|
+
operatingSystem: 'Web',
|
|
71
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
72
|
+
};
|
|
73
|
+
|
|
3
74
|
export const content: ToolLocaleContent = {
|
|
4
75
|
slug: "calculateur-mise-echelle-recette-ingredients-portions",
|
|
5
76
|
title: "Convertisseur de Portions et Ingrédients Professionnel",
|
|
@@ -203,5 +274,5 @@ export const content: ToolLocaleContent = {
|
|
|
203
274
|
html: "Notre outil simplifie les calculs pour vous permettre de vous concentrer sur l'essentiel : la créativité et le goût.",
|
|
204
275
|
},
|
|
205
276
|
],
|
|
206
|
-
schemas: [],
|
|
277
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
207
278
|
};
|
|
@@ -1,5 +1,80 @@
|
|
|
1
1
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
2
|
|
|
3
|
+
const title = "Multiple Kitchen Timer";
|
|
4
|
+
const description = "Manage multiple cooking times simultaneously. Independent alarms, ideal for chefs and kitchen organization (Mise en Place).";
|
|
5
|
+
const faq = [
|
|
6
|
+
{
|
|
7
|
+
question: 'How many timers can I create?',
|
|
8
|
+
answer:
|
|
9
|
+
'Unlimited. Add as many as you need with the \'+\' button. Perfect for cooking multiple dishes simultaneously: pasta boiling, sauce reducing, meat resting, and oven baking, all at once.',
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
question: 'Why is resting time important for meat?',
|
|
13
|
+
answer:
|
|
14
|
+
'When you cut meat fresh from heat, juices escape onto the plate. If you rest 5-10 minutes, fibers relax and juices redistribute. Result: juicy meat instead of dry. Resting is passive cooking.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Does it work with screen locked?',
|
|
18
|
+
answer:
|
|
19
|
+
'Yes, but you need to grant notification permissions. Timers keep running in background and will alert you with sound and browser notification even if you switch tabs or lock your phone.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'What is the food \'Danger Zone\'?',
|
|
23
|
+
answer:
|
|
24
|
+
'Between 5°C and 65°C bacteria multiply rapidly. Cooked foods shouldn\'t stay in this range more than 2 hours (1 hour if temperature exceeds 30°C). Use a timer to monitor cooling before refrigerating.',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
const howTo = [
|
|
28
|
+
{
|
|
29
|
+
name: 'Create multiple timers',
|
|
30
|
+
text: 'Use the \'+\' button to add as many timers as you need. Perfect for orchestrating multiple dishes simultaneously.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'Customize each timer',
|
|
34
|
+
text: 'Change the name of each timer to identify what\'s cooking: \'Oven\', \'Rice\', \'Sauce\', etc.',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'Control from mobile dock',
|
|
38
|
+
text: 'On mobile, active timers appear in a sliding dock at the bottom. Pause or restart directly from there.',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'Receive notifications',
|
|
42
|
+
text: 'Authorize notifications so the browser alerts you when time\'s up, even if you switch tabs.',
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
|
|
46
|
+
const faqSchema = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'FAQPage',
|
|
49
|
+
mainEntity: faq.map((item) => ({
|
|
50
|
+
'@type': 'Question',
|
|
51
|
+
name: item.question,
|
|
52
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
53
|
+
})),
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const howToSchema = {
|
|
57
|
+
'@context': 'https://schema.org',
|
|
58
|
+
'@type': 'HowTo',
|
|
59
|
+
name: title,
|
|
60
|
+
description,
|
|
61
|
+
step: howTo.map((step) => ({
|
|
62
|
+
'@type': 'HowToStep',
|
|
63
|
+
name: step.name,
|
|
64
|
+
text: step.text,
|
|
65
|
+
})),
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const appSchema = {
|
|
69
|
+
'@context': 'https://schema.org',
|
|
70
|
+
'@type': 'SoftwareApplication',
|
|
71
|
+
name: title,
|
|
72
|
+
description,
|
|
73
|
+
applicationCategory: 'UtilitiesApplication',
|
|
74
|
+
operatingSystem: 'Web',
|
|
75
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
76
|
+
};
|
|
77
|
+
|
|
3
78
|
export const content: ToolLocaleContent = {
|
|
4
79
|
slug: 'kitchen-timer',
|
|
5
80
|
title: 'Multiple Kitchen Timer',
|
|
@@ -150,5 +225,5 @@ export const content: ToolLocaleContent = {
|
|
|
150
225
|
},
|
|
151
226
|
],
|
|
152
227
|
|
|
153
|
-
schemas: [],
|
|
228
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
154
229
|
};
|
|
@@ -1,5 +1,80 @@
|
|
|
1
1
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
2
|
|
|
3
|
+
const title = "Temporizador de Cocina Múltiple";
|
|
4
|
+
const description = "Gestiona múltiples tiempos de cocción simultáneamente. Alarmas independientes, ideal para chefs y organización en la cocina (Mise en Place).";
|
|
5
|
+
const faq = [
|
|
6
|
+
{
|
|
7
|
+
question: '¿Cuántos temporizadores puedo crear?',
|
|
8
|
+
answer:
|
|
9
|
+
'Ilimitados. Añade tantos como necesites con el botón \'+\'. Ideal para cocinar varios platos simultáneamente: pasta hirviendo, salsa reduciéndose, carne reposando, y horno funcionando, todo a la vez.',
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
question: '¿Por qué es importante el tiempo de reposo en carnes?',
|
|
13
|
+
answer:
|
|
14
|
+
'Cuando cortas carne recién salida del fuego, los jugos escapan al plato. Si reposas 5-10 minutos, las fibras se relajan y los jugos se redistribuyen. Resultado: carne jugosa en lugar de seca. El reposo es cocción pasiva.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: '¿Funciona con la pantalla bloqueada?',
|
|
18
|
+
answer:
|
|
19
|
+
'Sí, pero necesitas dar permisos de notificaciones. Los temporizadores siguen corriendo en segundo plano y te avisarán con sonido y notificación del navegador incluso si cambias de pestaña o bloqueas el móvil.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: '¿Qué es la \'Zona de Peligro\' alimentaria?',
|
|
23
|
+
answer:
|
|
24
|
+
'Entre 5°C y 65°C las bacterias se multiplican rápidamente. Los alimentos cocinados no deben estar en esta zona más de 2 horas (1 hora si hace >30°C). Usa un temporizador para controlar el enfriamiento antes de refrigerar.',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
const howTo = [
|
|
28
|
+
{
|
|
29
|
+
name: 'Crea múltiples temporizadores',
|
|
30
|
+
text: 'Usa el botón \'+\' para añadir tantos temporizadores como necesites. Ideal para orquestar varios platos simultáneamente.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'Personaliza cada temporizador',
|
|
34
|
+
text: 'Cambia el nombre de cada temporizador para identificar qué está cocinando: \'Horno\', \'Arroz\', \'Salsa\', etc.',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'Controla desde el dock móvil',
|
|
38
|
+
text: 'En móviles, los temporizadores activos aparecen en un dock deslizable en la parte inferior. Pausa o reinicia directamente desde ahí.',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'Recibe notificaciones',
|
|
42
|
+
text: 'Autoriza notificaciones para que el navegador te avise cuando se acabe el tiempo, incluso si cambias de pestaña.',
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
|
|
46
|
+
const faqSchema = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'FAQPage',
|
|
49
|
+
mainEntity: faq.map((item) => ({
|
|
50
|
+
'@type': 'Question',
|
|
51
|
+
name: item.question,
|
|
52
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
53
|
+
})),
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const howToSchema = {
|
|
57
|
+
'@context': 'https://schema.org',
|
|
58
|
+
'@type': 'HowTo',
|
|
59
|
+
name: title,
|
|
60
|
+
description,
|
|
61
|
+
step: howTo.map((step) => ({
|
|
62
|
+
'@type': 'HowToStep',
|
|
63
|
+
name: step.name,
|
|
64
|
+
text: step.text,
|
|
65
|
+
})),
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const appSchema = {
|
|
69
|
+
'@context': 'https://schema.org',
|
|
70
|
+
'@type': 'SoftwareApplication',
|
|
71
|
+
name: title,
|
|
72
|
+
description,
|
|
73
|
+
applicationCategory: 'UtilitiesApplication',
|
|
74
|
+
operatingSystem: 'Web',
|
|
75
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
76
|
+
};
|
|
77
|
+
|
|
3
78
|
export const content: ToolLocaleContent = {
|
|
4
79
|
slug: 'temporizador-cocina',
|
|
5
80
|
title: 'Temporizador de Cocina Múltiple',
|
|
@@ -150,5 +225,5 @@ export const content: ToolLocaleContent = {
|
|
|
150
225
|
},
|
|
151
226
|
],
|
|
152
227
|
|
|
153
|
-
schemas: [],
|
|
228
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
154
229
|
};
|
|
@@ -1,5 +1,80 @@
|
|
|
1
1
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
2
|
|
|
3
|
+
const title = "Multiple Kitchen Timer";
|
|
4
|
+
const description = "Manage multiple cooking times simultaneously. Independent alarms, ideal for chefs and kitchen organization (Mise en Place).";
|
|
5
|
+
const faq = [
|
|
6
|
+
{
|
|
7
|
+
question: 'How many timers can I create?',
|
|
8
|
+
answer:
|
|
9
|
+
'Unlimited. Add as many as you need with the \'+\' button. Perfect for cooking multiple dishes simultaneously: pasta boiling, sauce reducing, meat resting, and oven baking, all at once.',
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
question: 'Why is resting time important for meat?',
|
|
13
|
+
answer:
|
|
14
|
+
'When you cut meat fresh from heat, juices escape onto the plate. If you rest 5-10 minutes, fibers relax and juices redistribute. Result: juicy meat instead of dry. Resting is passive cooking.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Does it work with screen locked?',
|
|
18
|
+
answer:
|
|
19
|
+
'Yes, but you need to grant notification permissions. Timers keep running in background and will alert you with sound and browser notification even if you switch tabs or lock your phone.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'What is the food \'Danger Zone\'?',
|
|
23
|
+
answer:
|
|
24
|
+
'Between 5°C and 65°C bacteria multiply rapidly. Cooked foods shouldn\'t stay in this range more than 2 hours (1 hour if temperature exceeds 30°C). Use a timer to monitor cooling before refrigerating.',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
const howTo = [
|
|
28
|
+
{
|
|
29
|
+
name: 'Create multiple timers',
|
|
30
|
+
text: 'Use the \'+\' button to add as many timers as you need. Perfect for orchestrating multiple dishes simultaneously.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'Customize each timer',
|
|
34
|
+
text: 'Change the name of each timer to identify what\'s cooking: \'Oven\', \'Rice\', \'Sauce\', etc.',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'Control from mobile dock',
|
|
38
|
+
text: 'On mobile, active timers appear in a sliding dock at the bottom. Pause or restart directly from there.',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'Receive notifications',
|
|
42
|
+
text: 'Authorize notifications so the browser alerts you when time\'s up, even if you switch tabs.',
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
|
|
46
|
+
const faqSchema = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'FAQPage',
|
|
49
|
+
mainEntity: faq.map((item) => ({
|
|
50
|
+
'@type': 'Question',
|
|
51
|
+
name: item.question,
|
|
52
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
53
|
+
})),
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const howToSchema = {
|
|
57
|
+
'@context': 'https://schema.org',
|
|
58
|
+
'@type': 'HowTo',
|
|
59
|
+
name: title,
|
|
60
|
+
description,
|
|
61
|
+
step: howTo.map((step) => ({
|
|
62
|
+
'@type': 'HowToStep',
|
|
63
|
+
name: step.name,
|
|
64
|
+
text: step.text,
|
|
65
|
+
})),
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const appSchema = {
|
|
69
|
+
'@context': 'https://schema.org',
|
|
70
|
+
'@type': 'SoftwareApplication',
|
|
71
|
+
name: title,
|
|
72
|
+
description,
|
|
73
|
+
applicationCategory: 'UtilitiesApplication',
|
|
74
|
+
operatingSystem: 'Web',
|
|
75
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
76
|
+
};
|
|
77
|
+
|
|
3
78
|
export const content: ToolLocaleContent = {
|
|
4
79
|
slug: 'kitchen-timer',
|
|
5
80
|
title: 'Multiple Kitchen Timer',
|
|
@@ -150,5 +225,5 @@ export const content: ToolLocaleContent = {
|
|
|
150
225
|
},
|
|
151
226
|
],
|
|
152
227
|
|
|
153
|
-
schemas: [],
|
|
228
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
154
229
|
};
|
|
@@ -1,5 +1,80 @@
|
|
|
1
1
|
import type { ToolLocaleContent } from "../../../types";
|
|
2
2
|
|
|
3
|
+
const title = "Professional Meringue Sugar Ratio Calculator";
|
|
4
|
+
const description = "The simplest but least stable. Whites and sugar whipped cold.";
|
|
5
|
+
const faq = [
|
|
6
|
+
{
|
|
7
|
+
question: "What is the ideal egg white to sugar ratio?",
|
|
8
|
+
answer:
|
|
9
|
+
"The professional standard is a 1:2 ratio. For every gram of egg white, use two grams of sugar to provide enough literal 'weight' to stabilize the protein structure.",
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
question: "How can I tell if I've reached stiff peaks?",
|
|
13
|
+
answer:
|
|
14
|
+
"When you lift the whisk, the peaks should stand straight up without drooping. The mixture should also be thick, very glossy, and stay in the bowl even if held upside down.",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: "Which meringue type is best for frosting?",
|
|
18
|
+
answer:
|
|
19
|
+
"Italian meringue is preferred for frosting because the hot syrup 'cooks' the whites, making it both safe and structural enough to hold its shape for hours.",
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: "Why do my egg whites refuse to whip up?",
|
|
23
|
+
answer:
|
|
24
|
+
"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.",
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
const howTo = [
|
|
28
|
+
{
|
|
29
|
+
name: "Weigh your egg whites",
|
|
30
|
+
text: "Use a digital scale for precision. Even a 5-gram difference can change the required sugar amount.",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: "Calculate sugar needs",
|
|
34
|
+
text: "Enter the weight into our tool to get exact granulated and/or powdered sugar measurements.",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: "Choose your technique",
|
|
38
|
+
text: "Select French for simple baking, Italian for stability, or Swiss for silky fillings.",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: "Whip to perfection",
|
|
42
|
+
text: "Follow the estimated timing guide until you reach that high-gloss, vertical stiff peak.",
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
|
|
46
|
+
const faqSchema = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'FAQPage',
|
|
49
|
+
mainEntity: faq.map((item) => ({
|
|
50
|
+
'@type': 'Question',
|
|
51
|
+
name: item.question,
|
|
52
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
53
|
+
})),
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const howToSchema = {
|
|
57
|
+
'@context': 'https://schema.org',
|
|
58
|
+
'@type': 'HowTo',
|
|
59
|
+
name: title,
|
|
60
|
+
description,
|
|
61
|
+
step: howTo.map((step) => ({
|
|
62
|
+
'@type': 'HowToStep',
|
|
63
|
+
name: step.name,
|
|
64
|
+
text: step.text,
|
|
65
|
+
})),
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const appSchema = {
|
|
69
|
+
'@context': 'https://schema.org',
|
|
70
|
+
'@type': 'SoftwareApplication',
|
|
71
|
+
name: title,
|
|
72
|
+
description,
|
|
73
|
+
applicationCategory: 'UtilitiesApplication',
|
|
74
|
+
operatingSystem: 'Web',
|
|
75
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
76
|
+
};
|
|
77
|
+
|
|
3
78
|
export const content: ToolLocaleContent = {
|
|
4
79
|
slug: "meringue-sugar-ratio-calculator-stiff-peaks",
|
|
5
80
|
title: "Professional Meringue Sugar Ratio Calculator",
|
|
@@ -253,5 +328,5 @@ export const content: ToolLocaleContent = {
|
|
|
253
328
|
html: "Our calculator automates the math so you can focus on whipping until you reach that perfect, high-gloss finish.",
|
|
254
329
|
},
|
|
255
330
|
],
|
|
256
|
-
schemas: [],
|
|
331
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
257
332
|
};
|
|
@@ -1,5 +1,76 @@
|
|
|
1
1
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
2
|
|
|
3
|
+
const title = "Calculadora de Merengue y Punto de Nieve";
|
|
4
|
+
const description = "Calcula la cantidad exacta de azúcar para merengue francés, italiano o suizo según el peso de tus claras. Tiempos de batido y trucos de repostería.";
|
|
5
|
+
const faq = [
|
|
6
|
+
{
|
|
7
|
+
question: '¿Qué relación de azúcar y clara es la ideal?',
|
|
8
|
+
answer: 'La regla de oro en repostería es el ratio 1:2. Por cada gramo de clara de huevo, se deben utilizar dos gramos de azúcar para asegurar una estructura estable y firme.',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
question: '¿Cómo saber si el merengue está a punto de nieve?',
|
|
12
|
+
answer: 'El punto de nieve o pico firme se alcanza cuando, al levantar las varillas, el merengue forma una punta que se mantiene vertical sin doblarse. Además, el merengue debe verse muy brillante.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: '¿Cuál es el merengue más estable para decorar?',
|
|
16
|
+
answer: 'El merengue italiano es el más estable de los tres tipos principales, gracias a que el almíbar caliente cocina ligeramente las proteínas de la clara, creando una estructura más resistente al calor y al paso del tiempo.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: '¿Se pueden usar claras pasteurizadas de bote?',
|
|
20
|
+
answer: 'Sí, se pueden utilizar, pero suelen tardar un poco más en montar que las claras frescas. Un truco es añadir una pizca de cremor tártaro o unas gotas de limón para ayudar a la estabilidad.',
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
const howTo = [
|
|
24
|
+
{
|
|
25
|
+
name: 'Pesar las claras',
|
|
26
|
+
text: 'Utiliza una báscula digital para obtener el peso exacto de las claras de huevo sin rastro de yema.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'Introducir peso',
|
|
30
|
+
text: 'Escribe ese peso en nuestra calculadora para obtener las cantidades de azúcar necesarias.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'Elegir técnica',
|
|
34
|
+
text: 'Selecciona si vas a preparar un merengue francés (básico), italiano (estable) o suizo (sedoso).',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'Batir y verificar',
|
|
38
|
+
text: 'Sigue los tiempos estimados y comprueba la consistencia hasta alcanzar el punto de nieve firme.',
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
const faqSchema = {
|
|
43
|
+
'@context': 'https://schema.org',
|
|
44
|
+
'@type': 'FAQPage',
|
|
45
|
+
mainEntity: faq.map((item) => ({
|
|
46
|
+
'@type': 'Question',
|
|
47
|
+
name: item.question,
|
|
48
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
49
|
+
})),
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
const howToSchema = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'HowTo',
|
|
55
|
+
name: title,
|
|
56
|
+
description,
|
|
57
|
+
step: howTo.map((step) => ({
|
|
58
|
+
'@type': 'HowToStep',
|
|
59
|
+
name: step.name,
|
|
60
|
+
text: step.text,
|
|
61
|
+
})),
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const appSchema = {
|
|
65
|
+
'@context': 'https://schema.org',
|
|
66
|
+
'@type': 'SoftwareApplication',
|
|
67
|
+
name: title,
|
|
68
|
+
description,
|
|
69
|
+
applicationCategory: 'UtilitiesApplication',
|
|
70
|
+
operatingSystem: 'Web',
|
|
71
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
72
|
+
};
|
|
73
|
+
|
|
3
74
|
export const content: ToolLocaleContent = {
|
|
4
75
|
slug: 'calculadora-punto-de-nieve-merengue',
|
|
5
76
|
title: 'Calculadora de Merengue y Punto de Nieve',
|
|
@@ -230,5 +301,5 @@ export const content: ToolLocaleContent = {
|
|
|
230
301
|
},
|
|
231
302
|
],
|
|
232
303
|
|
|
233
|
-
schemas: [],
|
|
304
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
234
305
|
};
|