@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,23 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { ALL_TOOLS } from '../tools';
3
+ import type { ToolLocaleContent } from '../types';
4
+
5
+ describe('Slug Language Code Format Validation', () => {
6
+ ALL_TOOLS.forEach((tool) => {
7
+ describe(`Tool: ${tool.entry.id}`, () => {
8
+ it('slug should not end with 2-letter language codes like -ja, -ru, -ko', async () => {
9
+ const locales = Object.keys(tool.entry.i18n);
10
+
11
+ for (const locale of locales) {
12
+ const loader = tool.entry.i18n[locale as keyof typeof tool.entry.i18n];
13
+ const content = (await loader?.()) as ToolLocaleContent;
14
+
15
+ expect(
16
+ content.slug,
17
+ `Tool "${tool.entry.id}" locale "${locale}" slug ("${content.slug}") cannot end with a 2-letter language code (e.g., -ja, -ru, -ko).`,
18
+ ).not.toMatch(/-[a-z]{2}$/);
19
+ }
20
+ });
21
+ });
22
+ });
23
+ });
@@ -0,0 +1,81 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { ALL_TOOLS } from '../tools';
3
+ import type { ToolLocaleContent } from '../types';
4
+
5
+ const sharingLocales = ['ja', 'ko', 'zh'];
6
+
7
+ interface ValidateParams {
8
+ toolId: string;
9
+ locale: string;
10
+ content: ToolLocaleContent;
11
+ enSlug: string;
12
+ slugs: Map<string, string>;
13
+ }
14
+
15
+ const validateLocaleSlug = ({
16
+ toolId,
17
+ locale,
18
+ content,
19
+ enSlug,
20
+ slugs,
21
+ }: ValidateParams) => {
22
+ expect(
23
+ content.slug,
24
+ `Tool "${toolId}" locale "${locale}" has an invalid slug ("${content.slug}"). Slugs must be transliterated (only a-z, 0-9, and -).`,
25
+ ).toMatch(/^[a-z0-9-]+$/);
26
+
27
+ if (locale === 'en') {
28
+ return;
29
+ }
30
+
31
+ if (sharingLocales.includes(locale)) {
32
+ expect(
33
+ content.slug,
34
+ `Tool "${toolId}" locale "${locale}" must use the same slug as "en" ("${enSlug}").`,
35
+ ).toBe(enSlug);
36
+ } else {
37
+ expect(
38
+ content.slug,
39
+ `Tool "${toolId}" locale "${locale}" has the same slug as "en" ("${enSlug}"). Cada slug tiene que estar en su propia idioma`,
40
+ ).not.toBe(enSlug);
41
+
42
+ if (slugs.has(content.slug)) {
43
+ const previousLocale = slugs.get(content.slug);
44
+ expect(
45
+ false,
46
+ `Tool "${toolId}" locales "${locale}" and "${previousLocale}" share the same slug ("${content.slug}"). Cada slug tiene que estar en su propia idioma`,
47
+ ).toBe(true);
48
+ }
49
+ slugs.set(content.slug, locale);
50
+ }
51
+ };
52
+
53
+ describe('Slug Localization and Uniqueness Validation', () => {
54
+ ALL_TOOLS.forEach((tool) => {
55
+ describe(`Tool: ${tool.entry.id}`, () => {
56
+ it('every locale should have a unique, translated slug', async () => {
57
+ const slugs = new Map<string, string>();
58
+ const locales = Object.keys(tool.entry.i18n);
59
+
60
+ let enSlug = '';
61
+ if (locales.includes('en')) {
62
+ const enLoader = tool.entry.i18n['en' as keyof typeof tool.entry.i18n];
63
+ const enContent = (await enLoader?.()) as ToolLocaleContent;
64
+ enSlug = enContent.slug;
65
+ }
66
+
67
+ for (const locale of locales) {
68
+ const loader = tool.entry.i18n[locale as keyof typeof tool.entry.i18n];
69
+ const content = (await loader?.()) as ToolLocaleContent;
70
+ validateLocaleSlug({
71
+ toolId: tool.entry.id,
72
+ locale,
73
+ content,
74
+ enSlug,
75
+ slugs,
76
+ });
77
+ }
78
+ });
79
+ });
80
+ });
81
+ });
@@ -40,7 +40,7 @@ describe('Project Titles - Separator Validation', () => {
40
40
  for (const pattern of titlePatterns) {
41
41
  let match;
42
42
  while ((match = pattern.exec(content)) !== null) {
43
- const title = match[1]!;
43
+ const title = match[1];
44
44
  if (title.includes('|') || title.includes('-')) {
45
45
  findings.push(title);
46
46
  }
@@ -0,0 +1,356 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+
3
+ const title = "Küchen Umrechner: Cups in Gramm und Temperaturen";
4
+ const description = "Rechnen Sie Cups, Esslöffel und Fahrenheit in das metrische System um. Der Kompass, um US-Rezepte mit professioneller Präzision zu entschlüsseln.";
5
+ const faq = [
6
+ {
7
+ question: 'Was ist der Unterschied zwischen 1 Cup und 250 ml?',
8
+ answer: '1 US-Cup entspricht 236,588 ml, nicht 250 ml. Für praktische Zwecke verwenden wir 240 ml. Obwohl dieser Unterschied von 4% klein erscheint, kann er empfindliche Rezepte wie Macarons oder Mousses beeinträchtigen.',
9
+ },
10
+ {
11
+ question: 'Warum wiegt Mehl nicht immer gleich viel?',
12
+ answer: 'Weil Mehl im Laufe der Zeit und durch den Transport komprimiert wird. Frisch gesiebtes Mehl wiegt weniger als Mehl, das lange in der Vorratskammer stand. Deshalb wiegen professionelle Bäcker immer, anstatt das Volumen zu messen.',
13
+ },
14
+ {
15
+ question: 'Was ist der Unterschied zwischen EL (Tbsp) und TL (tsp)?',
16
+ answer: '1 Tablespoon (Tbsp) = 15 ml. 1 Teaspoon (tsp) = 5 ml. Ein Esslöffel entspricht 3 Teelöffeln. In Backrezepten sind Fehler bei Gewürzen (die in TL gemessen werden) häufig.',
17
+ },
18
+ {
19
+ question: 'Ist ein US-Cup dasselbe wie ein Imperial-Cup?',
20
+ answer: 'Nein. 1 US-Cup = 236 ml. 1 Imperial-Cup (UK) = 284 ml. Das ist ein Unterschied von 20%. Die meisten US-Blogs verwenden US-Cups. Wenn das Rezept es nicht spezifiziert, gehen Sie von US-Cups aus.',
21
+ },
22
+ {
23
+ question: 'Welcher Temperatur entspricht "Gas 4" im Ofen?',
24
+ answer: 'Gas 4 = 180°C = 350°F. Dies ist die britische Skala. In der hiesigen Küche suchen wir den entsprechenden Wert an Ihrem Ofen: Einige verwenden Gasstufen, andere elektronische Gradanzeigen.',
25
+ },
26
+ ];
27
+ const howTo = [
28
+ {
29
+ name: 'Wählen Sie die Umrechnungsart',
30
+ text: 'Wählen Sie zwischen Cups in Gramm, Teelöffel/Esslöffel in Gramm oder Fahrenheit in Celsius.',
31
+ },
32
+ {
33
+ name: 'Wählen Sie die Zutat',
34
+ text: 'Jedes Lebensmittel hat eine andere Dichte. Mehl, Zucker, Butter: Alle wiegen unterschiedlich viel.',
35
+ },
36
+ {
37
+ name: 'Geben Sie die Menge ein',
38
+ text: 'Geben Sie die Anzahl der Cups, Löffel oder Grad ein. Der Umrechner berechnet sofort den Gegenwert.',
39
+ },
40
+ {
41
+ name: 'Passen Sie Ihr Rezept an',
42
+ text: 'Mit der exakten Umrechnung können Sie nun das US-Rezept mit professioneller Präzision nachkochen.',
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
+
78
+ export const content: ToolLocaleContent = {
79
+ slug: 'amerikanische-kuechenmasse-umrechner',
80
+ title: 'Küchen Umrechner: Cups in Gramm und Temperaturen',
81
+ description: 'Rechnen Sie Cups, Esslöffel und Fahrenheit in das metrische System um. Der Kompass, um US-Rezepte mit professioneller Präzision zu entschlüsseln.',
82
+ faqTitle: 'Häufig gestellte Fragen',
83
+ bibliographyTitle: 'Literaturverzeichnis',
84
+ ui: {
85
+ copied: 'Kopiert',
86
+ noHistory: 'Kein Verlauf',
87
+ load: 'Laden',
88
+ delete: 'Löschen',
89
+ tabCups: 'Cups in Gramm',
90
+ tabSpoons: 'Löffel in Gramm',
91
+ tabTemperatures: 'Temperaturen',
92
+ tabCupsAriaLabel: 'Cups in Gramm',
93
+ tabSpoonsAriaLabel: 'Löffel in Gramm',
94
+ tabTempsAriaLabel: 'Ofentemperaturen',
95
+ stepSelectIngredient: 'Zutat wählen',
96
+ stepHowManyCups: 'Wie viele Cups?',
97
+ stepSelectMeasure: 'Maßeinheit wählen',
98
+ stepQuantity: 'Menge',
99
+ stepOvenConversion: 'Ofen-Umrechnung',
100
+ stepFrequentTemps: 'Häufige Rezepttemperaturen',
101
+ cupFlour: 'Mehl',
102
+ cupFlourSub: '120g / Cup',
103
+ cupWhiteSugar: 'Weißer Zucker',
104
+ cupWhiteSugarSub: '200g / Cup',
105
+ cupBrownSugar: 'Brauner Zucker',
106
+ cupBrownSugarSub: '220g / Cup',
107
+ cupPowderSugar: 'Puderzucker',
108
+ cupPowderSugarSub: '115g / Cup',
109
+ cupButter: 'Butter',
110
+ cupButterSub: '227g / Cup',
111
+ cupCocoa: 'Kakaopulver',
112
+ cupCocoaSub: '85g / Cup',
113
+ cupLiquids: 'Flüssigkeiten',
114
+ cupLiquidsSub: '240g / Cup',
115
+ cupOats: 'Haferflocken',
116
+ cupOatsSub: '90g / Cup',
117
+ cupFlourAriaLabel: 'Mehl',
118
+ cupWhiteSugarAriaLabel: 'Weißer Zucker',
119
+ cupBrownSugarAriaLabel: 'Brauner Zucker',
120
+ cupPowderSugarAriaLabel: 'Puderzucker',
121
+ cupButterAriaLabel: 'Butter',
122
+ cupCocoaAriaLabel: 'Kakao',
123
+ cupLiquidsAriaLabel: 'Flüssigkeit',
124
+ cupOatsAriaLabel: 'Haferflocken',
125
+ stepperMinus: 'Abziehen',
126
+ stepperPlus: 'Hinzufügen',
127
+ cupsAmountLabel: 'Anzahl der Cups',
128
+ spoonQuantityLabel: 'Menge',
129
+ cupQuick1_4: '1/4 Cup',
130
+ cupQuick1_3: '1/3 Cup',
131
+ cupQuick1_2: '1/2 Cup',
132
+ cupQuick1: '1 Cup',
133
+ unitGrams: 'Gramm',
134
+ unitGramsML: 'Gramm / Milliliter',
135
+ spoonMeasureLabel: 'Maßeinheit wählen',
136
+ spoonTablespoon: 'Esslöffel (EL/Tbsp)',
137
+ spoonTeaspoon: 'Teelöffel (TL/tsp)',
138
+ spoonTablespoonAriaLabel: 'Esslöffel',
139
+ spoonTeaspoonAriaLabel: 'Teelöffel',
140
+ spoonSelectIngredient: 'Zutat wählen',
141
+ spoonLeavening: 'Triebmittel',
142
+ spoonLeaveningSub: 'Backpulver',
143
+ spoonSalt: 'Feines Salz',
144
+ spoonSaltSub: 'Mineralsalz',
145
+ spoonSugar: 'Weißer Zucker',
146
+ spoonSugarSub: 'Granuliert',
147
+ spoonLiquids: 'Flüssigkeiten',
148
+ spoonLiquidsSub: 'Wasser, Öl',
149
+ spoonLeavingAriaLabel: 'Backpulver',
150
+ spoonSaltAriaLabel: 'Salz',
151
+ spoonSugarAriaLabel: 'Weißer Zucker',
152
+ spoonLiquidsAriaLabel: 'Flüssigkeit',
153
+ spoonQuick1_4: '1/4',
154
+ spoonQuick1_2: '1/2',
155
+ spoonQuick1: '1',
156
+ spoonQuick2: '2',
157
+ tempFahrenheit: 'Fahrenheit (°F)',
158
+ tempCelsius: 'Celsius (°C)',
159
+ tempFahrenheitAriaLabel: 'Fahrenheit',
160
+ tempCelsiusAriaLabel: 'Celsius',
161
+ tempPreset275: '275°F',
162
+ tempPreset275Desc: '135°C - Trocknen',
163
+ tempPreset275AriaLabel: 'Setze 275 Fahrenheit',
164
+ tempPreset325: '325°F',
165
+ tempPreset325Desc: '165°C - Dichte Kuchen',
166
+ tempPreset325AriaLabel: 'Setze 325 Fahrenheit',
167
+ tempPreset350: '350°F',
168
+ tempPreset350Desc: '175°C - Standard-Gebäck',
169
+ tempPreset350AriaLabel: 'Setze 350 Fahrenheit',
170
+ tempPreset400: '400°F',
171
+ tempPreset400Desc: '200°C - Brot / Torten',
172
+ tempPreset400AriaLabel: 'Setze 400 Fahrenheit',
173
+ tempPreset425: '425°F',
174
+ tempPreset425Desc: '220°C - Pizza / Blätterteig',
175
+ tempPreset425AriaLabel: 'Setze 425 Fahrenheit',
176
+ },
177
+ seo: [
178
+ {
179
+ type: 'title',
180
+ text: 'Meisterleitfaden für Küchen Umrechnungen',
181
+ level: 2,
182
+ },
183
+ {
184
+ type: 'paragraph',
185
+ html: 'Die Umrechnung von <strong>Cups in Gramm</strong> oder <strong>Fahrenheit in Celsius</strong> ist der erste Schritt, um internationale Rezepte zu meistern. Die US-Küche basiert auf Volumenmessungen, was bei trockenen Zutaten wie Mehl zu einer Variabilität von bis zu 25% führen kann.',
186
+ },
187
+ {
188
+ type: 'stats',
189
+ columns: 4,
190
+ items: [
191
+ {
192
+ value: '120g',
193
+ label: '1 Cup Mehl',
194
+ icon: 'mdi:grain',
195
+ },
196
+ {
197
+ value: '227g',
198
+ label: 'Stick Butter',
199
+ icon: 'mdi:cube-outline',
200
+ },
201
+ {
202
+ value: '175°C',
203
+ label: 'Entspricht 350°F',
204
+ icon: 'mdi:thermometer',
205
+ },
206
+ {
207
+ value: '240ml',
208
+ label: 'Volumen 1 Cup',
209
+ icon: 'mdi:water-percent',
210
+ },
211
+ ],
212
+ },
213
+ {
214
+ type: 'title',
215
+ text: 'Kritische Unterschiede zwischen Volumen und Gewicht',
216
+ level: 3,
217
+ },
218
+ {
219
+ type: 'comparative',
220
+ columns: 2,
221
+ items: [
222
+ {
223
+ title: 'Volumenmessung (Cups)',
224
+ icon: 'mdi:cup-water',
225
+ description: 'Wird in US-Haushaltsrezepten verwendet. Misst den Platz, den eine Zutat einnimmt.',
226
+ points: [
227
+ 'Stark abhängig von der Verdichtung',
228
+ 'Häufiger Fehler von 20-30% bei Mehl',
229
+ 'Inkonsistent zwischen verschiedenen Cup-Marken',
230
+ 'Erfordert vorheriges Sieben für mehr Präzision',
231
+ ],
232
+ },
233
+ {
234
+ title: 'Gewichtsmessung (Gramm)',
235
+ icon: 'mdi:scale-balance',
236
+ description: 'Der Standard für professionelle Konditorei und europäisches Backen. Absolute Präzision.',
237
+ highlight: true,
238
+ points: [
239
+ 'Immer auf +/- 1g genau',
240
+ 'Konsistente und wiederholbare Ergebnisse',
241
+ 'Weniger Abwasch (nur eine Schüssel)',
242
+ 'Erleichtert das mathematische Skalieren',
243
+ ],
244
+ },
245
+ ],
246
+ },
247
+ {
248
+ type: 'title',
249
+ text: 'Entsprechungen gängiger Zutaten',
250
+ level: 3,
251
+ },
252
+ {
253
+ type: 'table',
254
+ headers: ['Zutat', '1 Cup (Volumen)', 'Gramm (Gewicht)', 'Dichte'],
255
+ rows: [
256
+ ['Weizenmehl', '1 Cup', '120g', 'Niedrig'],
257
+ ['Weißer Zucker', '1 Cup', '200g', 'Mittel'],
258
+ ['Brauner Zucker', '1 Cup', '220g (festgedrückt)', 'Hoch'],
259
+ ['Butter', '1 Cup (2 Sticks)', '227g', 'Hoch'],
260
+ ['Kakaopulver', '1 Cup', '85g', 'Sehr niedrig'],
261
+ ],
262
+ },
263
+ {
264
+ type: 'diagnostic',
265
+ variant: 'warning',
266
+ title: 'Ist Ihr Kuchen trocken geworden?',
267
+ html: 'Das häufigste Problem bei der Verwendung von Cups ist das "Eintauchen der Tasse" in den Mehlsack. Dies komprimiert das Pulver, sodass Sie bis zu 40g mehr Mehl pro Tasse hinzufügen könnten. Die Lösung ist, <strong>Mehl immer in Gramm umzurechnen</strong>, indem Sie unseren Rechner verwenden.',
268
+ },
269
+ {
270
+ type: 'title',
271
+ text: 'Glossar US-Einheiten',
272
+ level: 3,
273
+ },
274
+ {
275
+ type: 'glossary',
276
+ items: [
277
+ {
278
+ term: 'Cup (Tasse)',
279
+ definition: 'Volumeneinheit, die etwa 240 ml entspricht. Die Basis der amerikanischen Küche.',
280
+ },
281
+ {
282
+ term: 'Tbsp (Tablespoon)',
283
+ definition: 'Esslöffel, entspricht 15 ml oder 3 Teelöffeln.',
284
+ },
285
+ {
286
+ term: 'tsp (Teaspoon)',
287
+ definition: 'Teelöffel, entspricht 5 ml. Entscheidend für Triebmittel und Salz.',
288
+ },
289
+ {
290
+ term: 'Stick of Butter',
291
+ definition: 'In den USA gängige Butterform, die genau 113,5 g wiegt (ein halber Cup).',
292
+ },
293
+ ],
294
+ },
295
+ {
296
+ type: 'tip',
297
+ title: 'Der Löffel Trick',
298
+ html: 'Wenn Sie keine Waage haben und Cups verwenden MÜSSEN, füllen Sie die Tasse locker mit einem Löffel und streichen Sie sie mit einem Messer glatt. Das ist viel präziser als das Eintauchen der Tasse.',
299
+ },
300
+ {
301
+ type: 'paragraph',
302
+ html: 'Die Verwendung eines professionellen Umrechners verwandelt den Frust über ausländische Rezepte in den Erfolg eines perfekt gebackenen Ergebnisses.',
303
+ },
304
+ ],
305
+ faq: [
306
+ {
307
+ question: 'Was ist der Unterschied zwischen 1 Cup und 250 ml?',
308
+ answer: '1 US-Cup entspricht 236,588 ml, nicht 250 ml. Für praktische Zwecke verwenden wir 240 ml. Obwohl dieser Unterschied von 4% klein erscheint, kann er empfindliche Rezepte wie Macarons oder Mousses beeinträchtigen.',
309
+ },
310
+ {
311
+ question: 'Warum wiegt Mehl nicht immer gleich viel?',
312
+ answer: 'Weil Mehl im Laufe der Zeit und durch den Transport komprimiert wird. Frisch gesiebtes Mehl wiegt weniger als Mehl, das lange in der Vorratskammer stand. Deshalb wiegen professionelle Bäcker immer, anstatt das Volumen zu messen.',
313
+ },
314
+ {
315
+ question: 'Was ist der Unterschied zwischen EL (Tbsp) und TL (tsp)?',
316
+ answer: '1 Tablespoon (Tbsp) = 15 ml. 1 Teaspoon (tsp) = 5 ml. Ein Esslöffel entspricht 3 Teelöffeln. In Backrezepten sind Fehler bei Gewürzen (die in TL gemessen werden) häufig.',
317
+ },
318
+ {
319
+ question: 'Ist ein US-Cup dasselbe wie ein Imperial-Cup?',
320
+ answer: 'Nein. 1 US-Cup = 236 ml. 1 Imperial-Cup (UK) = 284 ml. Das ist ein Unterschied von 20%. Die meisten US-Blogs verwenden US-Cups. Wenn das Rezept es nicht spezifiziert, gehen Sie von US-Cups aus.',
321
+ },
322
+ {
323
+ question: 'Welcher Temperatur entspricht "Gas 4" im Ofen?',
324
+ answer: 'Gas 4 = 180°C = 350°F. Dies ist die britische Skala. In der hiesigen Küche suchen wir den entsprechenden Wert an Ihrem Ofen: Einige verwenden Gasstufen, andere elektronische Gradanzeigen.',
325
+ },
326
+ ],
327
+ bibliography: [
328
+ {
329
+ name: 'King Arthur Baking: Ingredient Weight Chart',
330
+ url: 'https://www.kingarthurbaking.com/learn/ingredient-weight-chart',
331
+ },
332
+ {
333
+ name: 'Culinary Institute of America: Conversions and Equivalents',
334
+ url: 'https://www.ciachef.edu/',
335
+ },
336
+ ],
337
+ howTo: [
338
+ {
339
+ name: 'Wählen Sie die Umrechnungsart',
340
+ text: 'Wählen Sie zwischen Cups in Gramm, Teelöffel/Esslöffel in Gramm oder Fahrenheit in Celsius.',
341
+ },
342
+ {
343
+ name: 'Wählen Sie die Zutat',
344
+ text: 'Jedes Lebensmittel hat eine andere Dichte. Mehl, Zucker, Butter: Alle wiegen unterschiedlich viel.',
345
+ },
346
+ {
347
+ name: 'Geben Sie die Menge ein',
348
+ text: 'Geben Sie die Anzahl der Cups, Löffel oder Grad ein. Der Umrechner berechnet sofort den Gegenwert.',
349
+ },
350
+ {
351
+ name: 'Passen Sie Ihr Rezept an',
352
+ text: 'Mit der exakten Umrechnung können Sie nun das US-Rezept mit professioneller Präzision nachkochen.',
353
+ },
354
+ ],
355
+ schemas: [faqSchema, howToSchema, appSchema],
356
+ };