@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 = 'Malzeme Ölçekleyici Tarif Ayarlama';
4
+ const description = 'Tarifleri porsiyon sayısına göre otomatik olarak ölçeklendirin. Tarifinizi çarparak veya azaltarak malzeme miktarlarını karmaşa olmadan hesaplayın.';
5
+
6
+ const faq = [
7
+ {
8
+ question: 'Dönüştürmə faktörüm neden ondalık sayılar içeriyor?',
9
+ answer: 'Çünkü mutfak oranları her zaman tam sayı değildir. 4 kişilik bir tarifi 7 kişiye çıkarırsanız, faktör tam olarak 1.75 olur. Malzemeler, küsuratlı olsa bile bu sayıyla çarpılır. Bu, rastgele yuvarlamaktan daha doğrudur.',
10
+ },
11
+ {
12
+ question: '"1/2 çay kaşığı tuz" girersem ne olur?',
13
+ answer: 'Araç önce sayıyı arar. "1"i miktar, "/2"yi ise birimin parçası olarak tanır. Sonuç "0.5" olur ve doğru şekilde ölçeklenir. "1/2" gibi kesirler için doğrudan "0.5" girebilirsiniz (daha net olur) veya araç bunu bölme işlemi olarak yorumlar.',
14
+ },
15
+ {
16
+ question: 'Nihai sonuçları yuvarlamalı mıyım?',
17
+ answer: 'Malzemeye bağlıdır. Un için evet. Mayalar veya baharatlar için hassasiyet daha az önemlidir (belirtilenin %75\'ine ölçeklendirin). Yumurtalar için: 2.3 alırsanız, 2 tam + üçüncünün bir kısmını (tartarak) kullanın veya yemek uygunsa 2\'ye yuvarlayın.',
18
+ },
19
+ {
20
+ question: 'Porsiyonları değiştirdiğimde sonuç neden değişmiyor?',
21
+ answer: 'Malzeme alanının boş olmadığından emin olun. Boşsa ölçeklendirecek bir şey yoktur. Ayrıca malzemelerinizdeki sayıların tanınabilir olduğunu kontrol edin (örn: "500g", "1/2 çay kaşığı").',
22
+ },
23
+ {
24
+ question: 'İngiliz ölçü birimleriyle (ons, fincan) çalışır mı?',
25
+ answer: 'Teknik olarak evet, araç sayıları okur ve ölçeklendirir. Ancak fincan ölçülerinde hassasiyet sınırlıdır (tutarsız hacim). Ölçeklendirmeden önce grama çevirmeniz önerilir.',
26
+ },
27
+ ];
28
+
29
+ const howTo = [
30
+ {
31
+ name: 'Porsiyonlarınızı girin',
32
+ text: '"Orijinal" alanına tarifin kaç kişilik tasarlandığını girin. "İstenen" alanına kaç kişilik pişireceğinizi yazın.',
33
+ },
34
+ {
35
+ name: 'Malzeme listenizi yapıştırın',
36
+ text: 'Listenizi olduğu gibi kopyalayıp yapıştırın. Her malzeme bir satıra. Araç, baştaki sayıları (500g, 1/2, 2.5) tanır ve otomatik olarak ölçeklendirir.',
37
+ },
38
+ {
39
+ name: 'Bağlama göre ayarlayın',
40
+ text: 'Sonuçlar matematiksel olarak kesindir, ancak yemek yapmak bir sanattır. Baharatlar: %75\'e ölçeklendirin. Mayalar: büyük miktarlarda teorik değerden az kullanın. Pişirme süreleri asla ölçeklendirilmez.',
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: 'malzeme-olcekleyici',
77
+ title,
78
+ description,
79
+ ui: {
80
+ servings: 'Porsiyonlar',
81
+ original: 'Orijinal',
82
+ desired: 'İstenen',
83
+ multiplyingFactor: 'Çarpan Faktörü',
84
+ ingredientsList: 'Malzeme Listesi',
85
+ pasteHere: 'Listenizi buraya yapıştırın.',
86
+ exampleLine1: 'Örn:',
87
+ exampleLine2: '500g Un',
88
+ exampleLine3: '300ml Su',
89
+ exampleLine4: '10g Tuz',
90
+ result: 'Sonuç',
91
+ copy: 'Kopyala',
92
+ copied: 'Kopyalandı!',
93
+ emptyState: 'Ayarlanmış malzemeleriniz burada görünecek...',
94
+ defaultIngredient1: '200g Un',
95
+ defaultIngredient2: '100ml Süt',
96
+ defaultIngredient3: '2 Yumurta',
97
+ },
98
+ faqTitle: 'Sıkça Sorulan Sorular',
99
+ faq,
100
+ bibliographyTitle: 'Kaynakça',
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 - Bilimsel ölçeklendirme teknikleri',
112
+ url: 'https://www.modernistcuisine.com/',
113
+ },
114
+ ],
115
+ howTo,
116
+ seo: [
117
+ {
118
+ type: 'title',
119
+ text: 'Tarif Ölçeklendirme ve Dönüştürme İçin Usta Rehberi',
120
+ level: 2,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: '<strong>Malzeme ölçeklendirme</strong>, profesyonel mutfaktaki en kritik ve hataya açık görevlerden biridir. Bu sadece sayıları çarpmak değil, gıdaların kimyasının ve fiziğinin hacim ve yüzey alanı değişimlerine nasıl tepki verdiğini anlamaktır.',
125
+ },
126
+ {
127
+ type: 'stats',
128
+ columns: 4,
129
+ items: [
130
+ {
131
+ value: 'x1.75',
132
+ label: '4\'ten 7 kişiye faktör',
133
+ icon: 'mdi:calculator',
134
+ },
135
+ {
136
+ value: '75%',
137
+ label: 'Baharat Ayarı',
138
+ icon: 'mdi:shaker-outline',
139
+ },
140
+ {
141
+ value: '0%',
142
+ label: 'Süre Ölçekleme',
143
+ icon: 'mdi:timer-off',
144
+ },
145
+ {
146
+ value: '100g',
147
+ label: 'Referans Bazı',
148
+ icon: 'mdi:weight-gram',
149
+ },
150
+ ],
151
+ },
152
+ {
153
+ type: 'title',
154
+ text: 'Doğrusal ve Bağlamsal Ölçeklendirme Farkları',
155
+ level: 3,
156
+ },
157
+ {
158
+ type: 'comparative',
159
+ columns: 2,
160
+ items: [
161
+ {
162
+ title: 'Matematiksel Doğrusal Ölçekleme',
163
+ icon: 'mdi:math-log',
164
+ description: 'Elde edilen dönüştürme faktörü ile tüm değerlerin doğrudan çarpılması.',
165
+ points: [
166
+ 'Un ve temel sıvılar için mükemmeldir',
167
+ 'Hassas pastacılık için idealdir',
168
+ 'Küçük değişikliklerde iyi çalışır (x2, x0.5)',
169
+ 'Otomatik hesaplanması kolaydır',
170
+ ],
171
+ },
172
+ {
173
+ title: 'Mutfak Bağlamsal Ölçekleme',
174
+ icon: 'mdi:chef-hat',
175
+ description: 'Tat doygunluğu ve buharlaşmaya dayalı oran ayarlaması.',
176
+ highlight: true,
177
+ points: [
178
+ 'Aşırı tuz ve baharat kullanımını önler',
179
+ 'Buharlaşma yüzey alanını dikkate alır',
180
+ 'Mayaları kütleye göre ayarlar',
181
+ 'Şefin deneyimini ve yargısını gerektirir',
182
+ ],
183
+ },
184
+ ],
185
+ },
186
+ {
187
+ type: 'title',
188
+ text: 'Konuk Sayısına Göre Dönüştürme Faktörleri',
189
+ level: 3,
190
+ },
191
+ {
192
+ type: 'table',
193
+ headers: ['Şu Porsiyondan', 'Şu Porsiyona', 'Faktör (FC)', 'Zorluk Derecesi'],
194
+ rows: [
195
+ ['2 kişi', '4 kişi', 'x 2.0', 'Düşük (Doğrusal)'],
196
+ ['4 kişi', '6 kişi', 'x 1.5', 'Düşük (Doğrusal)'],
197
+ ['4 kişi', '10 kişi', 'x 2.5', 'Orta (Baharatlara dikkat)'],
198
+ ['4 kişi', '25 kişi', 'x 6.25', 'Yüksek (Bağlamsal)'],
199
+ ],
200
+ },
201
+ {
202
+ type: 'diagnostic',
203
+ variant: 'warning',
204
+ title: 'Bir Tarifi İki Katına Çıkarırken Sık Karşılaşılan Sorunlar',
205
+ html: 'Ölçeklendirmeden sonra tadın çok yoğun olduğunu fark ederseniz (özellikle acı veya tuz), bu spesifik malzemelerin ölçeklemesini %75\'e indirin. Pişirme süresini asla iki katına çıkarmayın; iç sıcaklık parçanın kalınlığına göre belirlenir, toplam ağırlığa göre değil.',
206
+ },
207
+ {
208
+ type: 'title',
209
+ text: 'Standardizasyon Terminolojisi Sözlüğü',
210
+ level: 3,
211
+ },
212
+ {
213
+ type: 'glossary',
214
+ items: [
215
+ {
216
+ term: 'Dönüştürme Faktörü',
217
+ definition: 'Tüm malzemelerin çarpıldığı sayı: İstenen Miktar / Orijinal Miktar.',
218
+ },
219
+ {
220
+ term: 'Pişme Kaybı',
221
+ definition: 'Buharlaşma veya yağ kaybı nedeniyle bir malzemenin ağırlık kaybı.',
222
+ },
223
+ {
224
+ term: 'Brüt ve Net Ağırlık',
225
+ definition: 'Malzemenin temizlenmeden önceki ve sonraki ağırlığı.',
226
+ },
227
+ {
228
+ term: 'Verim',
229
+ definition: 'Ölçeklendirme ve pişirme sonrası bitmiş ürünün toplam miktarı.',
230
+ },
231
+ ],
232
+ },
233
+ {
234
+ type: 'tip',
235
+ title: 'Çırpılmış Yumurta Hilesi',
236
+ html: 'Hesaplayıcı 2.3 yumurta gösteriyorsa, bir tam yumurtayı çırpın, tartın ve sadece %30\'unu kullanın. İnce pastacılıkta hassasiyeti korumanın tek yolu budur.',
237
+ },
238
+ {
239
+ type: 'paragraph',
240
+ html: 'Aracımız matematiği basitleştirir, böylece enerjinizi asıl önemli olan şeye ayırabilirsiniz: yaratıcılık ve lezzet.',
241
+ },
242
+ ],
243
+ schemas: [appSchema, faqSchema, howToSchema],
244
+ };
@@ -0,0 +1,244 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+
3
+ const title = '食材缩放器 食谱份量调整';
4
+ const description = '根据份量自动缩放食谱。通过乘算或减算快速计算精确的食材用量,无需复杂换算。';
5
+
6
+ const faq = [
7
+ {
8
+ question: '为什么我的转换系数包含小数点?',
9
+ answer: '因为烹饪比例并不总是整数。如果你将 4 人份的食谱缩放到 7 人份,系数正是 1.75。食材将乘以该数字,即使产生分数也比随意舍入更精确。',
10
+ },
11
+ {
12
+ question: '输入“1/2 茶勺盐”会发生什么?',
13
+ answer: '工具会优先识别数字。它将“1”识别为数量,将“/2”识别为单位的一部分。结果将是“0.5”,并进行正确的缩放。对于类似“1/2”的分数,建议直接输入“0.5”或通过除法逻辑识别。',
14
+ },
15
+ {
16
+ question: '我应该对最终结果进行四舍五入吗?',
17
+ answer: '这取决于食材。面粉类可以;但对于酵母或香料,精确度略次要(建议缩放到理论值的 75%)。关于鸡蛋:如果得到 2.3,建议使用 2 个全蛋 + 第 3 个鸡蛋的一部分(称重),或根据菜品情况舍入为 2。',
18
+ },
19
+ {
20
+ question: '更改份量后结果没有变化,为什么?',
21
+ answer: '请确保食材列表框中有内容。如果为空,则无法进行缩放。同时检查你的食材前是否有可识别的数字(如“500g”、“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: '直接复制并粘贴清单。每行一个食材。工具会自动识别开头的数字(500g, 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: 'recipe-ingredient-scaler-converter-servings',
77
+ title,
78
+ description,
79
+ ui: {
80
+ servings: '份量',
81
+ original: '原始',
82
+ desired: '目标',
83
+ multiplyingFactor: '转换倍数',
84
+ ingredientsList: '食材清单',
85
+ pasteHere: '在此粘贴你的清单',
86
+ exampleLine1: '例:',
87
+ exampleLine2: '500g 面粉',
88
+ exampleLine3: '300ml 水',
89
+ exampleLine4: '10g 盐',
90
+ result: '计算结果',
91
+ copy: '复制',
92
+ copied: '已复制',
93
+ emptyState: '调整后的食材将显示在这里...',
94
+ defaultIngredient1: '200g 面粉',
95
+ defaultIngredient2: '100ml 牛奶',
96
+ defaultIngredient3: '2 个鸡蛋',
97
+ },
98
+ faqTitle: '常见问题',
99
+ faq,
100
+ bibliographyTitle: '参考资料',
101
+ bibliography: [
102
+ {
103
+ name: 'Harold McGee - On Food and Cooking (食物与烹饪科学)',
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: '100g',
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: ['原始份量', '目标份量', '系数 (FC)', '调整难度'],
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: '转换系数 (Conversion Factor)',
217
+ definition: '所有食材乘以的常数:目标用量 / 原始用量。',
218
+ },
219
+ {
220
+ term: '烹饪损耗',
221
+ definition: '由于蒸发或油脂流失导致的食材重量减少,非完全线性变化。',
222
+ },
223
+ {
224
+ term: '毛重 vs 净重',
225
+ definition: '食材处理前后的重量。我们始终基于原始食谱重量缩放。',
226
+ },
227
+ {
228
+ term: '产出率 (Yield)',
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
+ };
@@ -13,6 +13,18 @@ export const ingredientRescaler: CookingToolEntry = {
13
13
  es: () => import('./i18n/es').then((m) => m.content),
14
14
  en: () => import('./i18n/en').then((m) => m.content),
15
15
  fr: () => import('./i18n/fr').then((m) => m.content),
16
+ de: () => import('./i18n/de').then((m) => m.content),
17
+ it: () => import('./i18n/it').then((m) => m.content),
18
+ pt: () => import('./i18n/pt').then((m) => m.content),
19
+ nl: () => import('./i18n/nl').then((m) => m.content),
20
+ sv: () => import('./i18n/sv').then((m) => m.content),
21
+ ru: () => import('./i18n/ru').then((m) => m.content),
22
+ tr: () => import('./i18n/tr').then((m) => m.content),
23
+ pl: () => import('./i18n/pl').then((m) => m.content),
24
+ id: () => import('./i18n/id').then((m) => m.content),
25
+ ja: () => import('./i18n/ja').then((m) => m.content),
26
+ zh: () => import('./i18n/zh').then((m) => m.content),
27
+ ko: () => import('./i18n/ko').then((m) => m.content),
16
28
  },
17
29
  };
18
30
 
@@ -0,0 +1,174 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+
3
+ const title = "Multi Küchen Timer";
4
+ const description = "Verwalten Sie mehrere Garzeiten gleichzeitig. Unabhängige Alarme, ideal für Köche und die Organisation in der Küche (Mise en Place).";
5
+ const faq = [
6
+ {
7
+ question: 'Wie viele Timer kann ich erstellen?',
8
+ answer: 'Unbegrenzt viele. Fügen Sie mit der Schaltfläche "+" so viele hinzu, wie Sie benötigen. Ideal für das gleichzeitige Kochen mehrerer Gerichte: Nudeln kochen, Sauce reduzieren, Fleisch ruhen lassen und der Ofen läuft – alles auf einmal.',
9
+ },
10
+ {
11
+ question: 'Warum ist die Ruhezeit bei Fleisch wichtig?',
12
+ answer: 'Wenn Sie Fleisch direkt vom Feuer schneiden, entweicht der Saft auf den Teller. Lassen Sie es 5-10 Minuten ruhen, entspannen sich die Fasern und der Saft verteilt sich neu. Ergebnis: saftiges statt trockenes Fleisch. Ruhen ist passives Garen.',
13
+ },
14
+ {
15
+ question: 'Funktioniert es bei gesperrtem Bildschirm?',
16
+ answer: 'Ja, aber Sie müssen Benachrichtigungsberechtigungen erteilen. Die Timer laufen im Hintergrund weiter und benachrichtigen Sie mit Ton und Browser-Benachrichtigung, auch wenn Sie den Tab wechseln oder das Handy sperren.',
17
+ },
18
+ {
19
+ question: 'Was ist die lebensmittelrelevante "Gefahrenzone"?',
20
+ answer: 'Zwischen 5°C und 65°C vermehren sich Bakterien schnell. Gekochte Lebensmittel sollten nicht länger als 2 Stunden in dieser Zone bleiben (1 Stunde, wenn es >30°C ist). Nutzen Sie einen Timer, um das Abkühlen vor dem Kühlen zu kontrollieren.',
21
+ },
22
+ ];
23
+ const howTo = [
24
+ {
25
+ name: 'Mehrere Timer erstellen',
26
+ text: 'Nutzen Sie die "+"-Schaltfläche, um so viele Timer wie nötig hinzuzufügen. Ideal für die Koordination mehrerer Gerichte.',
27
+ },
28
+ {
29
+ name: 'Jeden Timer anpassen',
30
+ text: 'Ändern Sie den Namen jedes Timers, um zu wissen, was gerade gart: "Ofen", "Reis", "Sauce" usw.',
31
+ },
32
+ {
33
+ name: 'Über das mobile Dock steuern',
34
+ text: 'Auf Mobilgeräten erscheinen aktive Timer in einem schiebbaren Dock am unteren Rand. Dort können Sie direkt pausieren oder neu starten.',
35
+ },
36
+ {
37
+ name: 'Benachrichtigungen erhalten',
38
+ text: 'Erlauben Sie Benachrichtigungen, damit der Browser Sie warnt, wenn die Zeit abgelaufen ist, auch wenn Sie den Tab wechseln.',
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
+
74
+ export const content: ToolLocaleContent = {
75
+ slug: 'kuechen-timer',
76
+ title: 'Multi Küchen Timer',
77
+ description: 'Verwalten Sie mehrere Garzeiten gleichzeitig. Unabhängige Alarme, ideal für Köche und die Organisation in der Küche (Mise en Place).',
78
+ faqTitle: 'Häufig gestellte Fragen',
79
+ bibliographyTitle: 'Referenzen',
80
+ ui: {
81
+ addTimer: 'Timer hinzufügen',
82
+ stopAll: 'Alle stoppen',
83
+ defaultName: 'Timer',
84
+ newTimerName: 'Neuer Timer',
85
+ timerDefault1: 'Timer 1',
86
+ timerDefault2: 'Timer 2',
87
+ timerDefault3: 'Timer 3',
88
+ label: 'Bezeichnung',
89
+ hours: 'Std',
90
+ minutes: 'Min',
91
+ seconds: 'Sek',
92
+ ready: 'Fertig',
93
+ start: 'Start',
94
+ pause: 'Pause',
95
+ reset: 'Reset',
96
+ addOneMin: '+1 Min',
97
+ addFiveMin: '+5 Min',
98
+ statusReady: 'Bereit',
99
+ statusRunning: 'Läuft',
100
+ statusPaused: 'Pausiert',
101
+ statusFinished: 'ZEIT UM!',
102
+ finishNotification: 'Timer beendet für',
103
+ },
104
+ faq,
105
+ bibliography: [
106
+ {
107
+ name: 'Lebensmittelsicherheit: USDA Guidelines',
108
+ url: 'https://www.fsis.usda.gov/',
109
+ },
110
+ {
111
+ name: 'Mise en Place - Die Profiküche',
112
+ url: 'https://www.escoffier.edu/',
113
+ },
114
+ ],
115
+ howTo,
116
+ seo: [
117
+ {
118
+ type: 'title',
119
+ text: 'Zeitmanagement in der Küche',
120
+ level: 2,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'In der Profiküche geht es nicht nur um Rezepte, sondern um das <strong>präzise Zeitmanagement</strong>. Das französische Konzept <em>"Mise en Place"</em> (alles an seinem Platz) umfasst Zeit als eine wesentliche Zutat. Ein Steak, das 5 Minuten ruht, verteilt seinen Saft neu und wird zart.',
125
+ },
126
+ {
127
+ type: 'paragraph',
128
+ html: 'Dieser <strong>Multi-Timer</strong> wurde für Hobbyköche und Profis entwickelt, die gleichzeitig mehrere Prozesse koordinieren müssen: kochende Nudeln, der Braten im Ofen und die Saucenreduktion.',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Die Rolle von Temperatur und Zeit',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'table',
137
+ headers: ['Lebensmittel', 'Garstufe', 'Zeit', 'Vorteil'],
138
+ rows: [
139
+ ['Weiches Ei', 'Flüssiges Eigelb', '3-4 Min', 'Zarte Proteine, leicht verdaulich'],
140
+ ['Wachsweiches Ei', 'Cremiges Eigelb', '5-6 Min', 'Perfekte Texturbalance'],
141
+ ['Hartes Ei', 'Vollständig gestockt', '9-11 Min', 'Maximale Konsistenz'],
142
+ ['Fleisch - Anbraten', 'Hohe Hitze', '1-2 Min/Seite', 'Maillard-Reaktion, Aroma'],
143
+ ['Fleisch - Ruhen', 'Ruhephase', '5-20 Min', 'Saftverteilung'],
144
+ ],
145
+ },
146
+ {
147
+ type: 'title',
148
+ text: 'Lebensmittelsicherheit: Die Gefahrenzone',
149
+ level: 3,
150
+ },
151
+ {
152
+ type: 'paragraph',
153
+ html: 'Zeit beeinflusst nicht nur die Qualität, sondern auch die Sicherheit. Bakterien vermehren sich am schnellsten zwischen 5°C und 65°C. Gekochte Speisen sollten nicht länger als <strong>2 Stunden</strong> in diesem Bereich bleiben.',
154
+ },
155
+ {
156
+ type: 'title',
157
+ text: 'Profi-Tipps zur Organisation',
158
+ level: 3,
159
+ },
160
+ {
161
+ type: 'list',
162
+ items: [
163
+ '<strong>Endzeiten staffeln:</strong> Wenn alles gleichzeitig fertig wird, geraten Sie beim Anrichten unter Stress.',
164
+ '<strong>Restwärme nutzen:</strong> Schalten Sie Nudeln oder Gemüse 1-2 Minuten früher aus.',
165
+ '<strong>Timer benennen:</strong> Benutzen Sie die Benennungsfunktion für "Ofen", "Reis" oder "Sauce".',
166
+ ],
167
+ },
168
+ {
169
+ type: 'tip',
170
+ html: '<strong>Profi-Tipp:</strong> Zeitpräzision unterscheidet den Küchenchef vom Hobbykoch. Verlassen Sie sich nicht nur auf Ihr Gefühl, sondern nutzen Sie die Technik für konstante Ergebnisse.',
171
+ },
172
+ ],
173
+ schemas: [faqSchema as any, howToSchema as any, appSchema as any],
174
+ };