@jjlmoya/utils-tools 1.1.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.
Files changed (185) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +172 -0
  3. package/src/category/i18n/id.ts +172 -0
  4. package/src/category/i18n/it.ts +172 -0
  5. package/src/category/i18n/ja.ts +172 -0
  6. package/src/category/i18n/ko.ts +172 -0
  7. package/src/category/i18n/nl.ts +172 -0
  8. package/src/category/i18n/pl.ts +172 -0
  9. package/src/category/i18n/pt.ts +172 -0
  10. package/src/category/i18n/ru.ts +172 -0
  11. package/src/category/i18n/sv.ts +172 -0
  12. package/src/category/i18n/tr.ts +172 -0
  13. package/src/category/i18n/zh.ts +172 -0
  14. package/src/category/index.ts +13 -1
  15. package/src/tests/i18n_coverage.test.ts +36 -0
  16. package/src/tests/locale_completeness.test.ts +1 -1
  17. package/src/tests/slug_uniqueness.test.ts +81 -0
  18. package/src/tests/title_quality.test.ts +0 -1
  19. package/src/tool/date-diff-calculator/i18n/de.ts +132 -0
  20. package/src/tool/date-diff-calculator/i18n/fr.ts +1 -1
  21. package/src/tool/date-diff-calculator/i18n/id.ts +132 -0
  22. package/src/tool/date-diff-calculator/i18n/it.ts +132 -0
  23. package/src/tool/date-diff-calculator/i18n/ja.ts +132 -0
  24. package/src/tool/date-diff-calculator/i18n/ko.ts +132 -0
  25. package/src/tool/date-diff-calculator/i18n/nl.ts +132 -0
  26. package/src/tool/date-diff-calculator/i18n/pl.ts +132 -0
  27. package/src/tool/date-diff-calculator/i18n/pt.ts +132 -0
  28. package/src/tool/date-diff-calculator/i18n/ru.ts +132 -0
  29. package/src/tool/date-diff-calculator/i18n/sv.ts +132 -0
  30. package/src/tool/date-diff-calculator/i18n/tr.ts +132 -0
  31. package/src/tool/date-diff-calculator/i18n/zh.ts +132 -0
  32. package/src/tool/date-diff-calculator/index.ts +12 -0
  33. package/src/tool/drive-direct-link/i18n/de.ts +118 -0
  34. package/src/tool/drive-direct-link/i18n/id.ts +118 -0
  35. package/src/tool/drive-direct-link/i18n/it.ts +118 -0
  36. package/src/tool/drive-direct-link/i18n/ja.ts +118 -0
  37. package/src/tool/drive-direct-link/i18n/ko.ts +118 -0
  38. package/src/tool/drive-direct-link/i18n/nl.ts +118 -0
  39. package/src/tool/drive-direct-link/i18n/pl.ts +118 -0
  40. package/src/tool/drive-direct-link/i18n/pt.ts +118 -0
  41. package/src/tool/drive-direct-link/i18n/ru.ts +118 -0
  42. package/src/tool/drive-direct-link/i18n/sv.ts +118 -0
  43. package/src/tool/drive-direct-link/i18n/tr.ts +118 -0
  44. package/src/tool/drive-direct-link/i18n/zh.ts +118 -0
  45. package/src/tool/drive-direct-link/index.ts +12 -0
  46. package/src/tool/email-list-cleaner/i18n/de.ts +140 -0
  47. package/src/tool/email-list-cleaner/i18n/es.ts +1 -1
  48. package/src/tool/email-list-cleaner/i18n/fr.ts +1 -1
  49. package/src/tool/email-list-cleaner/i18n/id.ts +140 -0
  50. package/src/tool/email-list-cleaner/i18n/it.ts +140 -0
  51. package/src/tool/email-list-cleaner/i18n/ja.ts +140 -0
  52. package/src/tool/email-list-cleaner/i18n/ko.ts +140 -0
  53. package/src/tool/email-list-cleaner/i18n/nl.ts +140 -0
  54. package/src/tool/email-list-cleaner/i18n/pl.ts +140 -0
  55. package/src/tool/email-list-cleaner/i18n/pt.ts +140 -0
  56. package/src/tool/email-list-cleaner/i18n/ru.ts +140 -0
  57. package/src/tool/email-list-cleaner/i18n/sv.ts +140 -0
  58. package/src/tool/email-list-cleaner/i18n/tr.ts +140 -0
  59. package/src/tool/email-list-cleaner/i18n/zh.ts +140 -0
  60. package/src/tool/email-list-cleaner/index.ts +12 -0
  61. package/src/tool/env-badge-spain/i18n/de.ts +153 -0
  62. package/src/tool/env-badge-spain/i18n/es.ts +1 -1
  63. package/src/tool/env-badge-spain/i18n/fr.ts +1 -1
  64. package/src/tool/env-badge-spain/i18n/id.ts +153 -0
  65. package/src/tool/env-badge-spain/i18n/it.ts +153 -0
  66. package/src/tool/env-badge-spain/i18n/ja.ts +153 -0
  67. package/src/tool/env-badge-spain/i18n/ko.ts +153 -0
  68. package/src/tool/env-badge-spain/i18n/nl.ts +153 -0
  69. package/src/tool/env-badge-spain/i18n/pl.ts +153 -0
  70. package/src/tool/env-badge-spain/i18n/pt.ts +153 -0
  71. package/src/tool/env-badge-spain/i18n/ru.ts +153 -0
  72. package/src/tool/env-badge-spain/i18n/sv.ts +153 -0
  73. package/src/tool/env-badge-spain/i18n/tr.ts +153 -0
  74. package/src/tool/env-badge-spain/i18n/zh.ts +153 -0
  75. package/src/tool/env-badge-spain/index.ts +12 -0
  76. package/src/tool/morse-beacon/i18n/de.ts +157 -0
  77. package/src/tool/morse-beacon/i18n/es.ts +1 -1
  78. package/src/tool/morse-beacon/i18n/id.ts +157 -0
  79. package/src/tool/morse-beacon/i18n/it.ts +157 -0
  80. package/src/tool/morse-beacon/i18n/ja.ts +157 -0
  81. package/src/tool/morse-beacon/i18n/ko.ts +157 -0
  82. package/src/tool/morse-beacon/i18n/nl.ts +157 -0
  83. package/src/tool/morse-beacon/i18n/pl.ts +157 -0
  84. package/src/tool/morse-beacon/i18n/pt.ts +157 -0
  85. package/src/tool/morse-beacon/i18n/ru.ts +157 -0
  86. package/src/tool/morse-beacon/i18n/sv.ts +157 -0
  87. package/src/tool/morse-beacon/i18n/tr.ts +157 -0
  88. package/src/tool/morse-beacon/i18n/zh.ts +157 -0
  89. package/src/tool/morse-beacon/index.ts +13 -1
  90. package/src/tool/password-generator/i18n/de.ts +166 -0
  91. package/src/tool/password-generator/i18n/fr.ts +1 -1
  92. package/src/tool/password-generator/i18n/id.ts +166 -0
  93. package/src/tool/password-generator/i18n/it.ts +166 -0
  94. package/src/tool/password-generator/i18n/ja.ts +166 -0
  95. package/src/tool/password-generator/i18n/ko.ts +166 -0
  96. package/src/tool/password-generator/i18n/nl.ts +166 -0
  97. package/src/tool/password-generator/i18n/pl.ts +166 -0
  98. package/src/tool/password-generator/i18n/pt.ts +166 -0
  99. package/src/tool/password-generator/i18n/ru.ts +166 -0
  100. package/src/tool/password-generator/i18n/sv.ts +166 -0
  101. package/src/tool/password-generator/i18n/tr.ts +166 -0
  102. package/src/tool/password-generator/i18n/zh.ts +166 -0
  103. package/src/tool/password-generator/index.ts +13 -1
  104. package/src/tool/routes/i18n/de.ts +157 -0
  105. package/src/tool/routes/i18n/es.ts +1 -1
  106. package/src/tool/routes/i18n/id.ts +157 -0
  107. package/src/tool/routes/i18n/it.ts +157 -0
  108. package/src/tool/routes/i18n/ja.ts +157 -0
  109. package/src/tool/routes/i18n/ko.ts +157 -0
  110. package/src/tool/routes/i18n/nl.ts +157 -0
  111. package/src/tool/routes/i18n/pl.ts +157 -0
  112. package/src/tool/routes/i18n/pt.ts +157 -0
  113. package/src/tool/routes/i18n/ru.ts +157 -0
  114. package/src/tool/routes/i18n/sv.ts +157 -0
  115. package/src/tool/routes/i18n/tr.ts +157 -0
  116. package/src/tool/routes/i18n/zh.ts +157 -0
  117. package/src/tool/routes/index.ts +13 -1
  118. package/src/tool/rule-of-three/i18n/de.ts +171 -0
  119. package/src/tool/rule-of-three/i18n/en.ts +1 -1
  120. package/src/tool/rule-of-three/i18n/id.ts +171 -0
  121. package/src/tool/rule-of-three/i18n/it.ts +171 -0
  122. package/src/tool/rule-of-three/i18n/ja.ts +171 -0
  123. package/src/tool/rule-of-three/i18n/ko.ts +171 -0
  124. package/src/tool/rule-of-three/i18n/nl.ts +171 -0
  125. package/src/tool/rule-of-three/i18n/pl.ts +171 -0
  126. package/src/tool/rule-of-three/i18n/pt.ts +171 -0
  127. package/src/tool/rule-of-three/i18n/ru.ts +171 -0
  128. package/src/tool/rule-of-three/i18n/sv.ts +171 -0
  129. package/src/tool/rule-of-three/i18n/tr.ts +171 -0
  130. package/src/tool/rule-of-three/i18n/zh.ts +171 -0
  131. package/src/tool/rule-of-three/index.ts +13 -1
  132. package/src/tool/seo-content-optimizer/i18n/de.ts +136 -0
  133. package/src/tool/seo-content-optimizer/i18n/id.ts +136 -0
  134. package/src/tool/seo-content-optimizer/i18n/it.ts +136 -0
  135. package/src/tool/seo-content-optimizer/i18n/ja.ts +136 -0
  136. package/src/tool/seo-content-optimizer/i18n/ko.ts +136 -0
  137. package/src/tool/seo-content-optimizer/i18n/nl.ts +136 -0
  138. package/src/tool/seo-content-optimizer/i18n/pl.ts +136 -0
  139. package/src/tool/seo-content-optimizer/i18n/pt.ts +136 -0
  140. package/src/tool/seo-content-optimizer/i18n/ru.ts +136 -0
  141. package/src/tool/seo-content-optimizer/i18n/sv.ts +136 -0
  142. package/src/tool/seo-content-optimizer/i18n/tr.ts +136 -0
  143. package/src/tool/seo-content-optimizer/i18n/zh.ts +136 -0
  144. package/src/tool/seo-content-optimizer/index.ts +12 -0
  145. package/src/tool/speed-reader/i18n/de.ts +152 -0
  146. package/src/tool/speed-reader/i18n/es.ts +1 -1
  147. package/src/tool/speed-reader/i18n/id.ts +152 -0
  148. package/src/tool/speed-reader/i18n/it.ts +152 -0
  149. package/src/tool/speed-reader/i18n/ja.ts +152 -0
  150. package/src/tool/speed-reader/i18n/ko.ts +152 -0
  151. package/src/tool/speed-reader/i18n/nl.ts +152 -0
  152. package/src/tool/speed-reader/i18n/pl.ts +152 -0
  153. package/src/tool/speed-reader/i18n/pt.ts +152 -0
  154. package/src/tool/speed-reader/i18n/ru.ts +152 -0
  155. package/src/tool/speed-reader/i18n/sv.ts +152 -0
  156. package/src/tool/speed-reader/i18n/tr.ts +152 -0
  157. package/src/tool/speed-reader/i18n/zh.ts +152 -0
  158. package/src/tool/speed-reader/index.ts +12 -0
  159. package/src/tool/text-pixel-calculator/i18n/de.ts +133 -0
  160. package/src/tool/text-pixel-calculator/i18n/id.ts +133 -0
  161. package/src/tool/text-pixel-calculator/i18n/it.ts +133 -0
  162. package/src/tool/text-pixel-calculator/i18n/ja.ts +133 -0
  163. package/src/tool/text-pixel-calculator/i18n/ko.ts +133 -0
  164. package/src/tool/text-pixel-calculator/i18n/nl.ts +133 -0
  165. package/src/tool/text-pixel-calculator/i18n/pl.ts +133 -0
  166. package/src/tool/text-pixel-calculator/i18n/pt.ts +133 -0
  167. package/src/tool/text-pixel-calculator/i18n/ru.ts +133 -0
  168. package/src/tool/text-pixel-calculator/i18n/sv.ts +133 -0
  169. package/src/tool/text-pixel-calculator/i18n/tr.ts +133 -0
  170. package/src/tool/text-pixel-calculator/i18n/zh.ts +133 -0
  171. package/src/tool/text-pixel-calculator/index.ts +12 -0
  172. package/src/tool/whatsapp-link/i18n/de.ts +128 -0
  173. package/src/tool/whatsapp-link/i18n/es.ts +1 -1
  174. package/src/tool/whatsapp-link/i18n/id.ts +128 -0
  175. package/src/tool/whatsapp-link/i18n/it.ts +128 -0
  176. package/src/tool/whatsapp-link/i18n/ja.ts +128 -0
  177. package/src/tool/whatsapp-link/i18n/ko.ts +128 -0
  178. package/src/tool/whatsapp-link/i18n/nl.ts +128 -0
  179. package/src/tool/whatsapp-link/i18n/pl.ts +128 -0
  180. package/src/tool/whatsapp-link/i18n/pt.ts +128 -0
  181. package/src/tool/whatsapp-link/i18n/ru.ts +128 -0
  182. package/src/tool/whatsapp-link/i18n/sv.ts +128 -0
  183. package/src/tool/whatsapp-link/i18n/tr.ts +128 -0
  184. package/src/tool/whatsapp-link/i18n/zh.ts +128 -0
  185. package/src/tool/whatsapp-link/index.ts +12 -0
@@ -0,0 +1,171 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
+ import type { RuleOfThreeUI } from '../ui';
4
+
5
+ const faqData = [
6
+ {
7
+ question: 'Was ist der einfache direkte Dreisatz?',
8
+ answer: 'Es ist eine mathematische Methode zur Lösung von Proportionalitätsproblemen zwischen drei bekannten Werten und einer Unbekannten. Er wird als „direkt“ bezeichnet, da bei Erhöhung einer Größe die andere im gleichen Verhältnis steigt.',
9
+ },
10
+ {
11
+ question: 'Wann sollte ich den umgekehrten Dreisatz verwenden?',
12
+ answer: 'Er wird verwendet, wenn die Größen antiproportional sind (wenn eine steigt, sinkt die andere). Beispiel: Wenn 2 Maler 5 Stunden brauchen, brauchen 4 Maler weniger Zeit. Unser aktueller Rechner konzentriert sich auf die direkte Proportionalität.',
13
+ },
14
+ {
15
+ question: 'Ist er für professionelle Berechnungen genau genug?',
16
+ answer: 'Ja. Unser Rechner verwendet eine hohe Gleitkommapräzision, ideal für Dosierungsanpassungen, Grafikdesign-Skalierungen, kommerzielle Budgets und Rezeptumrechnungen.',
17
+ },
18
+ {
19
+ question: 'Wie wird er manuell berechnet?',
20
+ answer: 'Die Formel lautet: (Wert B * Wert C) / Wert A = X. Das heißt, Sie multiplizieren die Diagonalwerte und dividieren das Ergebnis durch den verbleibenden Wert.',
21
+ },
22
+ ];
23
+
24
+ const howToData = [
25
+ {
26
+ name: 'Basisverhältnis identifizieren',
27
+ text: 'Geben Sie die zwei bekannten Werte ein, die das ursprüngliche Verhältnis bilden (z. B. 100 km entsprechen 8 Litern).',
28
+ },
29
+ {
30
+ name: 'Dritten Wert eingeben',
31
+ text: 'Schreiben Sie den neuen Wert, dessen Äquivalent Sie finden möchten (z. B. wenn ich 250 km reisen werde...).',
32
+ },
33
+ {
34
+ name: 'Ergebnis erhalten',
35
+ text: 'Das System berechnet den unbekannten Wert (X) automatisch in Echtzeit, ohne dass Sie eine Taste drücken müssen.',
36
+ },
37
+ {
38
+ name: 'Kopieren oder Zurücksetzen',
39
+ text: 'Sie können das Ergebnis direkt in die Zwischenablage kopieren oder die Felder leeren, um eine neue Berechnung durchzuführen.',
40
+ },
41
+ ];
42
+
43
+ const faqSchema: WithContext<FAQPage> = {
44
+ '@context': 'https://schema.org',
45
+ '@type': 'FAQPage',
46
+ mainEntity: faqData.map((item) => ({
47
+ '@type': 'Question',
48
+ name: item.question,
49
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
50
+ })),
51
+ };
52
+
53
+ const howToSchema: WithContext<HowTo> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'HowTo',
56
+ name: 'So verwenden Sie den Dreisatz-Rechner',
57
+ step: howToData.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
58
+ };
59
+
60
+ const appSchema: WithContext<SoftwareApplication> = {
61
+ '@context': 'https://schema.org',
62
+ '@type': 'SoftwareApplication',
63
+ name: 'Einfacher Dreisatz-Rechner',
64
+ applicationCategory: 'UtilitiesApplication',
65
+ operatingSystem: 'Web',
66
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
67
+ description: 'Lösen Sie mathematische Proportionen sofort. Das ultimative Tool zur Berechnung von Mengen, Rezepten, Rabatten und Umrechnungen.',
68
+ };
69
+
70
+ const ui: RuleOfThreeUI = {
71
+ labelA: 'Wenn ich habe...',
72
+ labelB: 'Entspricht das...',
73
+ labelC: 'Und jetzt habe ich...',
74
+ labelX: 'Ergebnis (X)',
75
+ hintA: 'Ursprüngliche Menge',
76
+ hintB: 'Bekannter Wert',
77
+ hintC: 'Neue Menge',
78
+ hintX: 'Berechneter Wert',
79
+ separatorIsTo: 'entspricht',
80
+ separatorWillBe: 'ergibt',
81
+ copyTitle: 'Ergebnis kopieren',
82
+ };
83
+
84
+ export const content: ToolLocaleContent<RuleOfThreeUI> = {
85
+ slug: 'dreisatz-rechner',
86
+ title: 'Einfacher Dreisatz Rechner',
87
+ description: 'Lösen Sie mathematische Proportionen sofort. Das ultimative Tool zur Berechnung von Mengen, Rezepten, Rabatten und Umrechnungen.',
88
+ ui,
89
+ faqTitle: 'Häufig gestellte Fragen',
90
+ faq: faqData,
91
+ howTo: howToData,
92
+ bibliographyTitle: 'Referenzen',
93
+ bibliography: [
94
+ { name: 'Proportionalität (Mathematik) — Wikipedia', url: 'https://de.wikipedia.org/wiki/Proportionalit%C3%A4t' },
95
+ { name: 'Verhältnisse und Proportionen — Khan Academy', url: 'https://de.khanacademy.org/math/pre-algebra/pre-algebra-ratios-rates' },
96
+ ],
97
+ schemas: [faqSchema, howToSchema, appSchema],
98
+ seo: [
99
+ {
100
+ type: 'title',
101
+ text: 'Wofür wird der Dreisatz verwendet?',
102
+ level: 2,
103
+ },
104
+ {
105
+ type: 'paragraph',
106
+ html: 'Der einfache direkte Dreisatz ist das „Schweizer Taschenmesser“ der Mathematik. Er löst Probleme, bei denen drei Datenpunkte bekannt sind und wir den vierten suchen. Wenn Sie die Beziehung zwischen <strong>A und B</strong> kennen und einen neuen Wert <strong>C</strong> haben, findet der Rechner sofort <strong>X</strong>.',
107
+ },
108
+ {
109
+ type: 'comparative',
110
+ columns: 2,
111
+ items: [
112
+ {
113
+ icon: 'mdi:chef-hat',
114
+ title: 'Kochen und Rezepte',
115
+ description: 'Wenn das Rezept 500 g Mehl für 4 Personen vorsieht, wie viel brauche ich dann für 7?',
116
+ points: ['(500 × 7) ÷ 4 = 875 g'],
117
+ },
118
+ {
119
+ icon: 'mdi:shopping',
120
+ title: 'Einkaufen und Preise',
121
+ description: 'Wenn eine Packung mit 3 Dosen 2,50 € kostet, wie viel würden mich dann 10 Dosen kosten?',
122
+ points: ['(2,50 × 10) ÷ 3 = 8,33 €'],
123
+ },
124
+ {
125
+ icon: 'mdi:car',
126
+ title: 'Reisen und Entfernung',
127
+ description: 'Wenn ich 45 Min. für 60 km brauche, wie lange brauche ich dann für 140 km?',
128
+ points: ['(45 × 140) ÷ 60 = 105 Min.'],
129
+ },
130
+ {
131
+ icon: 'mdi:monitor-screenshot',
132
+ title: 'Design und Bildschirme',
133
+ description: 'Wenn das Bild 1920 px breit ist und ich es auf 800 px verkleinern möchte, wobei die Proportionen erhalten bleiben sollen...',
134
+ points: ['(Originalhöhe × 800) ÷ 1920 = neue Höhe'],
135
+ },
136
+ ],
137
+ },
138
+ {
139
+ type: 'title',
140
+ text: 'Wie funktioniert die Formel?',
141
+ level: 2,
142
+ },
143
+ {
144
+ type: 'paragraph',
145
+ html: 'Die Formel ist immer dieselbe: <strong>Multiplizieren Sie die Diagonalwerte und dividieren Sie durch den verbleibenden Wert</strong>.',
146
+ },
147
+ {
148
+ type: 'code',
149
+ code: '(B × C) ÷ A = X',
150
+ ariaLabel: 'Einfache direkte Dreisatzformel',
151
+ },
152
+ {
153
+ type: 'paragraph',
154
+ html: 'Im Rechner: Wir multiplizieren Wert <strong>B</strong> mit Wert <strong>C</strong> und dividieren durch <strong>A</strong>. Das Ergebnis ist <strong>X</strong>.',
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Professionelle und alltägliche Anwendungen',
159
+ level: 2,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Jenseits der Schulmathematik ist der Dreisatz überall: in der Apotheke zur Berechnung von Dosierungen nach Körpergewicht, in der Fotografie zur Berechnung von Belichtungszeiten, im Finanzwesen zur Berechnung von prozentualen Abweichungen oder im Druckwesen zur Skalierung von Formatmaßen.',
164
+ },
165
+ {
166
+ type: 'tip',
167
+ title: 'Tipp zur Präzision',
168
+ html: 'Das Ergebnis wird mit bis zu 4 signifikanten Nachkommastellen angezeigt. Wenn Sie mit Geld oder exakten Maßen arbeiten, denken Sie daran, je nach Kontext zu runden: Euro auf 2 Stellen, Pixel auf ganze Zahlen.',
169
+ },
170
+ ],
171
+ };
@@ -82,7 +82,7 @@ const ui: RuleOfThreeUI = {
82
82
  };
83
83
 
84
84
  export const content: ToolLocaleContent<RuleOfThreeUI> = {
85
- slug: 'rule-of-three',
85
+ slug: 'rule-of-three-calculator',
86
86
  title: 'Simple Rule of Three Calculator',
87
87
  description: 'Solve mathematical proportions instantly. The definitive tool for calculating quantities, recipes, discounts and conversions.',
88
88
  ui,
@@ -0,0 +1,171 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
+ import type { RuleOfThreeUI } from '../ui';
4
+
5
+ const faqData = [
6
+ {
7
+ question: 'Apa itu aturan tiga sederhana langsung?',
8
+ answer: 'Ini adalah metode matematika untuk menyelesaikan masalah proporsionalitas antara tiga nilai yang diketahui dan satu nilai yang tidak diketahui. Disebut "langsung" karena ketika satu kuantitas meningkat, kuantitas lainnya meningkat dalam proporsi yang sama.',
9
+ },
10
+ {
11
+ question: 'Kapan saya harus menggunakan aturan tiga invers (terbalik)?',
12
+ answer: 'Ini digunakan ketika kuantitas berbanding terbalik (jika satu meningkat, yang lain menurun). Contoh: jika 2 tukang cat butuh 5 jam, 4 tukang cat akan butuh waktu lebih singkat. Kalkulator kami saat ini berfokus pada proporsionalitas langsung.',
13
+ },
14
+ {
15
+ question: 'Apakah akurat untuk perhitungan profesional?',
16
+ answer: 'Ya. Kalkulator kami menggunakan presisi floating point tingkat tinggi, ideal untuk penyesuaian dosis, skala desain grafis, anggaran komersial, dan konversi resep.',
17
+ },
18
+ {
19
+ question: 'Bagaimana cara menghitungnya secara manual?',
20
+ answer: 'Rumusnya adalah: (Nilai B * Nilai C) / Nilai A = X. Artinya, Anda mengalikan nilai-nilai diagonal dan membagi hasilnya dengan nilai yang tersisa.',
21
+ },
22
+ ];
23
+
24
+ const howToData = [
25
+ {
26
+ name: 'Identifikasi hubungan dasar',
27
+ text: 'Masukkan dua nilai yang diketahui yang membentuk proporsi awal (misalnya 100km sama dengan 8 liter).',
28
+ },
29
+ {
30
+ name: 'Masukkan nilai ketiga',
31
+ text: 'Tulis nilai baru yang padanannya ingin Anda temukan (misalnya jika saya akan menempuh perjalanan 250km...).',
32
+ },
33
+ {
34
+ name: 'Dapatkan hasilnya',
35
+ text: 'Sistem akan secara otomatis menghitung nilai yang tidak diketahui (X) secara real-time tanpa menekan tombol apa pun.',
36
+ },
37
+ {
38
+ name: 'Salin atau reset',
39
+ text: 'Anda dapat menyalin hasilnya langsung ke papan klip atau menghapus bidang untuk melakukan perhitungan baru.',
40
+ },
41
+ ];
42
+
43
+ const faqSchema: WithContext<FAQPage> = {
44
+ '@context': 'https://schema.org',
45
+ '@type': 'FAQPage',
46
+ mainEntity: faqData.map((item) => ({
47
+ '@type': 'Question',
48
+ name: item.question,
49
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
50
+ })),
51
+ };
52
+
53
+ const howToSchema: WithContext<HowTo> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'HowTo',
56
+ name: 'Cara menggunakan kalkulator aturan tiga',
57
+ step: howToData.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
58
+ };
59
+
60
+ const appSchema: WithContext<SoftwareApplication> = {
61
+ '@context': 'https://schema.org',
62
+ '@type': 'SoftwareApplication',
63
+ name: 'Kalkulator Aturan Tiga Sederhana',
64
+ applicationCategory: 'UtilitiesApplication',
65
+ operatingSystem: 'Web',
66
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
67
+ description: 'Selesaikan proporsi matematika secara instan. Alat definitif untuk menghitung jumlah, resep, diskon, dan konversi.',
68
+ };
69
+
70
+ const ui: RuleOfThreeUI = {
71
+ labelA: 'Jika saya punya...',
72
+ labelB: 'Sama dengan...',
73
+ labelC: 'Dan sekarang saya punya...',
74
+ labelX: 'Hasil (X)',
75
+ hintA: 'Jumlah awal',
76
+ hintB: 'Nilai diketahui',
77
+ hintC: 'Jumlah baru',
78
+ hintX: 'Nilai terhitung',
79
+ separatorIsTo: 'berbanding',
80
+ separatorWillBe: 'adalah',
81
+ copyTitle: 'Salin hasil',
82
+ };
83
+
84
+ export const content: ToolLocaleContent<RuleOfThreeUI> = {
85
+ slug: 'aturan-tiga',
86
+ title: 'Kalkulator Aturan Tiga Sederhana',
87
+ description: 'Selesaikan proporsi matematika secara instan. Alat definitif untuk menghitung jumlah, resep, diskon, dan konversi.',
88
+ ui,
89
+ faqTitle: 'Pertanyaan yang Sering Diajukan',
90
+ faq: faqData,
91
+ howTo: howToData,
92
+ bibliographyTitle: 'Referensi',
93
+ bibliography: [
94
+ { name: 'Proporsionalitas (matematika) — Wikipedia', url: 'https://id.wikipedia.org/wiki/Proporsionalitas' },
95
+ { name: 'Rasio dan proporsi — Khan Academy', url: 'https://id.khanacademy.org/math/pre-algebra/pre-algebra-ratios-rates' },
96
+ ],
97
+ schemas: [faqSchema, howToSchema, appSchema],
98
+ seo: [
99
+ {
100
+ type: 'title',
101
+ text: 'Untuk apa aturan tiga digunakan?',
102
+ level: 2,
103
+ },
104
+ {
105
+ type: 'paragraph',
106
+ html: 'Aturan tiga sederhana langsung adalah "pisau lipat Swiss" dalam matematika. Ini menyelesaikan masalah di mana tiga titik data diketahui dan kita mencari titik keempat. Jika Anda mengetahui hubungan antara <strong>A dan B</strong>, dan Anda memiliki nilai baru <strong>C</strong>, kalkulator ini akan menemukan <strong>X</strong> secara instan.',
107
+ },
108
+ {
109
+ type: 'comparative',
110
+ columns: 2,
111
+ items: [
112
+ {
113
+ icon: 'mdi:chef-hat',
114
+ title: 'Memasak dan Resep',
115
+ description: 'Jika resep memerlukan 500g tepung untuk 4 orang, berapa banyak yang saya butuhkan untuk 7 orang?',
116
+ points: ['(500 × 7) ÷ 4 = 875g'],
117
+ },
118
+ {
119
+ icon: 'mdi:shopping',
120
+ title: 'Belanja dan Harga',
121
+ description: 'Jika satu pak isi 3 kaleng seharga €2,50, berapa harga 10 kaleng?',
122
+ points: ['(2,50 × 10) ÷ 3 = €8,33'],
123
+ },
124
+ {
125
+ icon: 'mdi:car',
126
+ title: 'Perjalanan dan Jarak',
127
+ description: 'Jika saya butuh 45 menit untuk menempuh 60km, berapa lama waktu yang dibutuhkan untuk menempuh 140km?',
128
+ points: ['(45 × 140) ÷ 60 = 105 menit'],
129
+ },
130
+ {
131
+ icon: 'mdi:monitor-screenshot',
132
+ title: 'Desain dan Layar',
133
+ description: 'Jika gambar lebarnya 1920px dan saya ingin menguranginya menjadi 800px dengan tetap menjaga proporsi...',
134
+ points: ['(TinggiAsli × 800) ÷ 1920 = TinggiBaru'],
135
+ },
136
+ ],
137
+ },
138
+ {
139
+ type: 'title',
140
+ text: 'Bagaimana cara kerja rumusnya?',
141
+ level: 2,
142
+ },
143
+ {
144
+ type: 'paragraph',
145
+ html: 'Rumusnya selalu sama: <strong>kalikan nilai diagonal dan bagi dengan nilai yang tersisa</strong>.',
146
+ },
147
+ {
148
+ type: 'code',
149
+ code: '(B × C) ÷ A = X',
150
+ ariaLabel: 'Rumus aturan tiga sederhana langsung',
151
+ },
152
+ {
153
+ type: 'paragraph',
154
+ html: 'Dalam kalkulator: kita mengalikan nilai <strong>B</strong> dengan nilai <strong>C</strong> dan membaginya dengan <strong>A</strong>. Hasilnya adalah <strong>X</strong>.',
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Penggunaan profesional dan sehari-hari',
159
+ level: 2,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Di luar matematika sekolah, aturan tiga ada di mana-mana: di farmasi untuk menghitung dosis berdasarkan berat badan, dalam fotografi untuk menghitung waktu pencahayaan, dalam keuangan untuk menghitung variasi persentase, atau dalam percetakan untuk menskalakan dimensi format.',
164
+ },
165
+ {
166
+ type: 'tip',
167
+ title: 'Tips presisi',
168
+ html: 'Hasil ditampilkan hingga 4 tempat desimal yang signifikan. Jika Anda bekerja dengan uang atau pengukuran yang tepat, ingatlah untuk membulatkannya sesuai konteks: euro menjadi 2 tempat desimal, piksel menjadi bilangan bulat.',
169
+ },
170
+ ],
171
+ };
@@ -0,0 +1,171 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
+ import type { RuleOfThreeUI } from '../ui';
4
+
5
+ const faqData = [
6
+ {
7
+ question: "Cos'è la regola del tre semplice diretta?",
8
+ answer: "È un metodo matematico per risolvere problemi di proporzionalità tra tre valori noti e un'incognita. Viene chiamata 'diretta' perché all'aumentare di una quantità, l'altra aumenta nella stessa proporzione.",
9
+ },
10
+ {
11
+ question: 'Quando dovrei usare la regola del tre inversa?',
12
+ answer: "Si usa quando le quantità sono inversamente proporzionali (se una aumenta, l'altra diminuisce). Ad esempio: se 2 pittori impiegano 5 ore, 4 pittori impiegheranno meno tempo. Il nostro calcolatore attuale si concentra sulla proporzionalità diretta.",
13
+ },
14
+ {
15
+ question: 'È accurato per calcoli professionali?',
16
+ answer: 'Sì. Il nostro calcolatore utilizza un\'elevata precisione in virgola mobile, ideale per regolazioni di dosaggi, scale di progettazione grafica, budget commerciali e conversioni di ricette.',
17
+ },
18
+ {
19
+ question: 'Come si calcola manualmente?',
20
+ answer: 'La formula è: (Valore B * Valore C) / Valore A = X. Ovvero, si moltiplicano i valori in diagonale e si divide il risultato per il valore rimanente.',
21
+ },
22
+ ];
23
+
24
+ const howToData = [
25
+ {
26
+ name: 'Identifica la relazione di base',
27
+ text: 'Inserisci i due valori noti che formano la proporzione iniziale (ad es. 100km equivalgono a 8 litri).',
28
+ },
29
+ {
30
+ name: 'Inserisci il terzo valore',
31
+ text: 'Scrivi il nuovo valore di cui vuoi trovare l\'equivalente (ad es. se devo percorrere 250km...).',
32
+ },
33
+ {
34
+ name: 'Ottieni il risultato',
35
+ text: 'Il sistema calcolerà automaticamente l\'incognita (X) in tempo reale senza premere alcun pulsante.',
36
+ },
37
+ {
38
+ name: 'Copia o resetta',
39
+ text: 'Puoi copiare il risultato direttamente negli appunti o cancellare i campi per eseguire un nuovo calcolo.',
40
+ },
41
+ ];
42
+
43
+ const faqSchema: WithContext<FAQPage> = {
44
+ '@context': 'https://schema.org',
45
+ '@type': 'FAQPage',
46
+ mainEntity: faqData.map((item) => ({
47
+ '@type': 'Question',
48
+ name: item.question,
49
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
50
+ })),
51
+ };
52
+
53
+ const howToSchema: WithContext<HowTo> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'HowTo',
56
+ name: 'Come usare il calcolatore della regola del tre',
57
+ step: howToData.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
58
+ };
59
+
60
+ const appSchema: WithContext<SoftwareApplication> = {
61
+ '@context': 'https://schema.org',
62
+ '@type': 'SoftwareApplication',
63
+ name: 'Calcolatore Regola del Tre Semplice',
64
+ applicationCategory: 'UtilitiesApplication',
65
+ operatingSystem: 'Web',
66
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
67
+ description: 'Risolvi proporzioni matematiche all\'istante. Lo strumento definitivo per calcolare quantità, ricette, sconti e conversioni.',
68
+ };
69
+
70
+ const ui: RuleOfThreeUI = {
71
+ labelA: 'Se ho...',
72
+ labelB: 'Equivale a...',
73
+ labelC: 'E ora ho...',
74
+ labelX: 'Risultato (X)',
75
+ hintA: 'Quantità iniziale',
76
+ hintB: 'Valore noto',
77
+ hintC: 'Nuova quantità',
78
+ hintX: 'Valore calcolato',
79
+ separatorIsTo: 'sta a',
80
+ separatorWillBe: 'sarà',
81
+ copyTitle: 'Copia risultato',
82
+ };
83
+
84
+ export const content: ToolLocaleContent<RuleOfThreeUI> = {
85
+ slug: 'regola-del-tre',
86
+ title: 'Calcolatore Regola del Tre Semplice',
87
+ description: 'Risolvi proporzioni matematiche all\'istante. Lo strumento definitivo per calcolare quantità, ricette, sconti e conversioni.',
88
+ ui,
89
+ faqTitle: 'Domande Frequenti',
90
+ faq: faqData,
91
+ howTo: howToData,
92
+ bibliographyTitle: 'Riferimenti',
93
+ bibliography: [
94
+ { name: 'Proporzionalità (matematica) — Wikipedia', url: 'https://it.wikipedia.org/wiki/Proporzionalit%C3%A0_(matematica)' },
95
+ { name: 'Rapporti e proporzioni — Khan Academy', url: 'https://it.khanacademy.org/math/arithmetic-home/arith-review-ratios-rates' },
96
+ ],
97
+ schemas: [faqSchema, howToSchema, appSchema],
98
+ seo: [
99
+ {
100
+ type: 'title',
101
+ text: 'A cosa serve la regola del tre?',
102
+ level: 2,
103
+ },
104
+ {
105
+ type: 'paragraph',
106
+ html: 'La regola del tre semplice diretta è lo "coltellino svizzero" della matematica. Risolve problemi in cui sono noti tre dati e ne cerchiamo il quarto. Se conosci la relazione tra <strong>A e B</strong>, e hai un nuovo valore <strong>C</strong>, il calcolatore trova <strong>X</strong> istantaneamente.',
107
+ },
108
+ {
109
+ type: 'comparative',
110
+ columns: 2,
111
+ items: [
112
+ {
113
+ icon: 'mdi:chef-hat',
114
+ title: 'Cucina e Ricette',
115
+ description: 'Se la ricetta richiede 500g di farina per 4 persone, di quanta ne ho bisogno per 7?',
116
+ points: ['(500 × 7) ÷ 4 = 875g'],
117
+ },
118
+ {
119
+ icon: 'mdi:shopping',
120
+ title: 'Shopping e Prezzi',
121
+ description: 'Se una confezione da 3 lattine costa 2,50 €, quanto mi costerebbero 10 lattine?',
122
+ points: ['(2,50 × 10) ÷ 3 = 8,33 €'],
123
+ },
124
+ {
125
+ icon: 'mdi:car',
126
+ title: 'Viaggi e Distanze',
127
+ description: 'Se impiego 45 min per fare 60km, quanto tempo impiegherò per farne 140km?',
128
+ points: ['(45 × 140) ÷ 60 = 105 min'],
129
+ },
130
+ {
131
+ icon: 'mdi:monitor-screenshot',
132
+ title: 'Design e Schermi',
133
+ description: 'Se l\'immagine è larga 1920px e voglio ridurla a 800px mantenendo la proporzione...',
134
+ points: ['(AltezzaOriginale × 800) ÷ 1920 = NuovaAltezza'],
135
+ },
136
+ ],
137
+ },
138
+ {
139
+ type: 'title',
140
+ text: 'Come funziona la formula?',
141
+ level: 2,
142
+ },
143
+ {
144
+ type: 'paragraph',
145
+ html: 'La formula è sempre la stessa: <strong>moltiplicare i valori in diagonale e dividere per quello rimanente</strong>.',
146
+ },
147
+ {
148
+ type: 'code',
149
+ code: '(B × C) ÷ A = X',
150
+ ariaLabel: 'Formula regola del tre semplice diretta',
151
+ },
152
+ {
153
+ type: 'paragraph',
154
+ html: 'Nel calcolatore: moltiplichiamo il valore <strong>B</strong> per il valore <strong>C</strong> e dividiamo per <strong>A</strong>. Il risultato è <strong>X</strong>.',
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Usi professionali e quotidiani',
159
+ level: 2,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Oltre alla matematica scolastica, la regola del tre è ovunque: in farmacia per calcolare i dosaggi in base al peso corporeo, in fotografia per calcolare i tempi di esposizione, in finanza per calcolare le variazioni percentuali, o nella stampa per scalare le dimensioni dei formati.',
164
+ },
165
+ {
166
+ type: 'tip',
167
+ title: 'Consiglio sulla precisione',
168
+ html: 'Il risultato viene visualizzato con un massimo di 4 cifre decimali significative. Se lavori con denaro o misure esatte, ricorda di arrotondare in base al contesto: euro a 2 decimali, pixel a numeri interi.',
169
+ },
170
+ ],
171
+ };