@jjlmoya/utils-nature 1.20.0 → 1.22.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 (139) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +3 -2
  3. package/src/entries.ts +5 -1
  4. package/src/index.ts +4 -0
  5. package/src/pages/[locale]/[slug].astro +5 -4
  6. package/src/tests/diacritics_density.test.ts +1 -1
  7. package/src/tests/inverted_punctuation.test.ts +1 -1
  8. package/src/tests/script_density.test.ts +1 -1
  9. package/src/tests/seo_length.test.ts +1 -0
  10. package/src/tests/seo_translation_completeness.test.ts +69 -0
  11. package/src/tests/title_quality.test.ts +1 -1
  12. package/src/tests/tool_validation.test.ts +2 -3
  13. package/src/tests/translation_copy.test.ts +2 -2
  14. package/src/tool/compostBinVolumeRatioCalculator/bibliography.astro +18 -0
  15. package/src/tool/compostBinVolumeRatioCalculator/bibliography.ts +12 -0
  16. package/src/tool/compostBinVolumeRatioCalculator/component.astro +77 -0
  17. package/src/tool/compostBinVolumeRatioCalculator/compost-bin-volume-ratio-calculator.css +509 -0
  18. package/src/tool/compostBinVolumeRatioCalculator/controller.ts +189 -0
  19. package/src/tool/compostBinVolumeRatioCalculator/dom-views.ts +162 -0
  20. package/src/tool/compostBinVolumeRatioCalculator/entry.ts +28 -0
  21. package/src/tool/compostBinVolumeRatioCalculator/evaluator.ts +26 -0
  22. package/src/tool/compostBinVolumeRatioCalculator/i18n/de.ts +193 -0
  23. package/src/tool/compostBinVolumeRatioCalculator/i18n/en.ts +193 -0
  24. package/src/tool/compostBinVolumeRatioCalculator/i18n/es.ts +193 -0
  25. package/src/tool/compostBinVolumeRatioCalculator/i18n/fr.ts +193 -0
  26. package/src/tool/compostBinVolumeRatioCalculator/i18n/id.ts +185 -0
  27. package/src/tool/compostBinVolumeRatioCalculator/i18n/it.ts +193 -0
  28. package/src/tool/compostBinVolumeRatioCalculator/i18n/ja.ts +190 -0
  29. package/src/tool/compostBinVolumeRatioCalculator/i18n/ko.ts +190 -0
  30. package/src/tool/compostBinVolumeRatioCalculator/i18n/nl.ts +190 -0
  31. package/src/tool/compostBinVolumeRatioCalculator/i18n/pl.ts +190 -0
  32. package/src/tool/compostBinVolumeRatioCalculator/i18n/pt.ts +190 -0
  33. package/src/tool/compostBinVolumeRatioCalculator/i18n/ru.ts +190 -0
  34. package/src/tool/compostBinVolumeRatioCalculator/i18n/sv.ts +190 -0
  35. package/src/tool/compostBinVolumeRatioCalculator/i18n/tr.ts +190 -0
  36. package/src/tool/compostBinVolumeRatioCalculator/i18n/zh.ts +190 -0
  37. package/src/tool/compostBinVolumeRatioCalculator/index.ts +11 -0
  38. package/src/tool/compostBinVolumeRatioCalculator/logic.test.ts +55 -0
  39. package/src/tool/compostBinVolumeRatioCalculator/logic.ts +165 -0
  40. package/src/tool/compostBinVolumeRatioCalculator/seo.astro +23 -0
  41. package/src/tool/compostBinVolumeRatioCalculator/storage.ts +25 -0
  42. package/src/tool/compostBinVolumeRatioCalculator/ui.ts +54 -0
  43. package/src/tool/cricketThermometer/component.astro +1 -1
  44. package/src/tool/cricketThermometer/i18n/de.ts +2 -2
  45. package/src/tool/cricketThermometer/i18n/en.ts +2 -2
  46. package/src/tool/cricketThermometer/i18n/es.ts +2 -2
  47. package/src/tool/cricketThermometer/i18n/fr.ts +2 -2
  48. package/src/tool/cricketThermometer/i18n/id.ts +2 -2
  49. package/src/tool/cricketThermometer/i18n/it.ts +2 -2
  50. package/src/tool/cricketThermometer/i18n/ja.ts +2 -2
  51. package/src/tool/cricketThermometer/i18n/ko.ts +2 -2
  52. package/src/tool/cricketThermometer/i18n/nl.ts +2 -2
  53. package/src/tool/cricketThermometer/i18n/pl.ts +2 -2
  54. package/src/tool/cricketThermometer/i18n/pt.ts +2 -2
  55. package/src/tool/cricketThermometer/i18n/ru.ts +2 -2
  56. package/src/tool/cricketThermometer/i18n/sv.ts +2 -2
  57. package/src/tool/cricketThermometer/i18n/tr.ts +2 -2
  58. package/src/tool/cricketThermometer/i18n/zh.ts +2 -2
  59. package/src/tool/cricketThermometer/index.ts +1 -0
  60. package/src/tool/digitalCarbon/component.astro +3 -3
  61. package/src/tool/digitalCarbon/i18n/de.ts +2 -2
  62. package/src/tool/digitalCarbon/i18n/en.ts +2 -2
  63. package/src/tool/digitalCarbon/i18n/es.ts +2 -2
  64. package/src/tool/digitalCarbon/i18n/fr.ts +2 -2
  65. package/src/tool/digitalCarbon/i18n/id.ts +2 -2
  66. package/src/tool/digitalCarbon/i18n/it.ts +2 -2
  67. package/src/tool/digitalCarbon/i18n/ja.ts +2 -2
  68. package/src/tool/digitalCarbon/i18n/ko.ts +2 -2
  69. package/src/tool/digitalCarbon/i18n/nl.ts +2 -2
  70. package/src/tool/digitalCarbon/i18n/pl.ts +2 -2
  71. package/src/tool/digitalCarbon/i18n/pt.ts +2 -2
  72. package/src/tool/digitalCarbon/i18n/ru.ts +2 -2
  73. package/src/tool/digitalCarbon/i18n/sv.ts +2 -2
  74. package/src/tool/digitalCarbon/i18n/tr.ts +2 -2
  75. package/src/tool/digitalCarbon/i18n/zh.ts +2 -2
  76. package/src/tool/digitalCarbon/index.ts +1 -0
  77. package/src/tool/rainHarvester/i18n/de.ts +2 -2
  78. package/src/tool/rainHarvester/i18n/en.ts +2 -2
  79. package/src/tool/rainHarvester/i18n/es.ts +2 -2
  80. package/src/tool/rainHarvester/i18n/fr.ts +2 -2
  81. package/src/tool/rainHarvester/i18n/id.ts +2 -2
  82. package/src/tool/rainHarvester/i18n/it.ts +2 -2
  83. package/src/tool/rainHarvester/i18n/ja.ts +2 -2
  84. package/src/tool/rainHarvester/i18n/ko.ts +2 -2
  85. package/src/tool/rainHarvester/i18n/nl.ts +2 -2
  86. package/src/tool/rainHarvester/i18n/pl.ts +2 -2
  87. package/src/tool/rainHarvester/i18n/pt.ts +2 -2
  88. package/src/tool/rainHarvester/i18n/ru.ts +2 -2
  89. package/src/tool/rainHarvester/i18n/sv.ts +2 -2
  90. package/src/tool/rainHarvester/i18n/tr.ts +2 -2
  91. package/src/tool/rainHarvester/i18n/zh.ts +2 -2
  92. package/src/tool/rainHarvester/index.ts +1 -0
  93. package/src/tool/seedCalculator/i18n/de.ts +2 -2
  94. package/src/tool/seedCalculator/i18n/en.ts +2 -2
  95. package/src/tool/seedCalculator/i18n/es.ts +2 -2
  96. package/src/tool/seedCalculator/i18n/fr.ts +2 -2
  97. package/src/tool/seedCalculator/i18n/id.ts +2 -2
  98. package/src/tool/seedCalculator/i18n/it.ts +2 -2
  99. package/src/tool/seedCalculator/i18n/ja.ts +2 -2
  100. package/src/tool/seedCalculator/i18n/ko.ts +2 -2
  101. package/src/tool/seedCalculator/i18n/nl.ts +2 -2
  102. package/src/tool/seedCalculator/i18n/pl.ts +2 -2
  103. package/src/tool/seedCalculator/i18n/pt.ts +2 -2
  104. package/src/tool/seedCalculator/i18n/ru.ts +2 -2
  105. package/src/tool/seedCalculator/i18n/sv.ts +2 -2
  106. package/src/tool/seedCalculator/i18n/tr.ts +2 -2
  107. package/src/tool/seedCalculator/i18n/zh.ts +2 -2
  108. package/src/tool/seedCalculator/index.ts +1 -0
  109. package/src/tool/urbanGardenPlanner/bibliography.astro +9 -0
  110. package/src/tool/urbanGardenPlanner/bibliography.ts +16 -0
  111. package/src/tool/urbanGardenPlanner/component.astro +131 -0
  112. package/src/tool/urbanGardenPlanner/controller.ts +88 -0
  113. package/src/tool/urbanGardenPlanner/dom-views.ts +84 -0
  114. package/src/tool/urbanGardenPlanner/entry.ts +29 -0
  115. package/src/tool/urbanGardenPlanner/evaluator.ts +27 -0
  116. package/src/tool/urbanGardenPlanner/i18n/de.ts +50 -0
  117. package/src/tool/urbanGardenPlanner/i18n/en.ts +179 -0
  118. package/src/tool/urbanGardenPlanner/i18n/es.ts +50 -0
  119. package/src/tool/urbanGardenPlanner/i18n/fr.ts +50 -0
  120. package/src/tool/urbanGardenPlanner/i18n/id.ts +50 -0
  121. package/src/tool/urbanGardenPlanner/i18n/it.ts +45 -0
  122. package/src/tool/urbanGardenPlanner/i18n/ja.ts +39 -0
  123. package/src/tool/urbanGardenPlanner/i18n/ko.ts +39 -0
  124. package/src/tool/urbanGardenPlanner/i18n/nl.ts +39 -0
  125. package/src/tool/urbanGardenPlanner/i18n/pl.ts +39 -0
  126. package/src/tool/urbanGardenPlanner/i18n/pt.ts +39 -0
  127. package/src/tool/urbanGardenPlanner/i18n/ru.ts +39 -0
  128. package/src/tool/urbanGardenPlanner/i18n/sv.ts +39 -0
  129. package/src/tool/urbanGardenPlanner/i18n/tr.ts +104 -0
  130. package/src/tool/urbanGardenPlanner/i18n/zh.ts +104 -0
  131. package/src/tool/urbanGardenPlanner/index.ts +11 -0
  132. package/src/tool/urbanGardenPlanner/logic.test.ts +45 -0
  133. package/src/tool/urbanGardenPlanner/logic.ts +55 -0
  134. package/src/tool/urbanGardenPlanner/seo.astro +15 -0
  135. package/src/tool/urbanGardenPlanner/storage.ts +25 -0
  136. package/src/tool/urbanGardenPlanner/ui.ts +38 -0
  137. package/src/tool/urbanGardenPlanner/urban-garden-rainwater-and-soil-planner.css +531 -0
  138. package/src/tools.ts +5 -2
  139. package/src/types.ts +4 -4
@@ -0,0 +1,193 @@
1
+ import type {
2
+ FAQPage,
3
+ HowTo,
4
+ SoftwareApplication,
5
+ WithContext,
6
+ } from "schema-dts";
7
+ import { bibliography } from "../bibliography";
8
+ import type { CompostBinVolumeRatioCalculatorLocaleContent } from "../entry";
9
+
10
+ const slug = "calcolatore-volume-compostiera-rapporto-marroni-verdi";
11
+ const title = "Calcolatore Volume Compostiera e Rapporto Marroni Verdi";
12
+ const description =
13
+ "Calcola il volume interno di una compostiera rettangolare o cilindrica e verifica l equilibrio pratico tra materiali marroni, verdi, umidita e aria.";
14
+
15
+ const faq = [
16
+ {
17
+ question: "Come si calcola il volume di una compostiera?",
18
+ answer:
19
+ "Misura l interno del contenitore. Per una compostiera rettangolare, moltiplica larghezza per profondita per altezza e converti i centimetri cubi in litri. Per un cilindro, usa pi greco per il raggio al quadrato per l altezza.",
20
+ },
21
+ {
22
+ question: "Qual e il giusto rapporto tra marroni e verdi nel compost?",
23
+ answer:
24
+ "Un buon punto di partenza pratico e da due a tre parti di materiali marroni ricchi di carbonio in volume per ogni parte di materiali verdi ricchi di azoto. Regola osservando umidita, odore e ventilazione.",
25
+ },
26
+ {
27
+ question: "Quanto compost posso inserire nella compostiera?",
28
+ answer:
29
+ "Confronta il volume dei tuoi materiali con la capacita interna della compostiera e lascia spazio sufficiente per la circolazione dell aria e per rivoltare il cumulo.",
30
+ },
31
+ {
32
+ question: "Cosa significa umidita da spugna strozzata?",
33
+ answer:
34
+ "I materiali devono risultare umidi al tatto senza rilasciare acqua quando strizzati. Un cumulo troppo secco rallenta la decomposizione, mentre uno troppo bagnato ha bisogno di marroni secchi e aerazione.",
35
+ },
36
+ ];
37
+
38
+ const howTo = [
39
+ {
40
+ name: "Scegli la forma della compostiera",
41
+ text: "Seleziona la forma rettangolare o cilindrica e inserisci le dimensioni interne in centimetri o pollici con precisione.",
42
+ },
43
+ {
44
+ name: "Aggiungi i volumi di materiale distinti",
45
+ text: "Stima separatamente il volume dei materiali marroni ricchi di carbonio e dei materiali verdi ricchi di azoto.",
46
+ },
47
+ {
48
+ name: "Imposta il livello di umidita del cumulo",
49
+ text: "Scegli tra secco, spugna strizzata o bagnato per ricevere consigli pratici di manutenzione adatti alla compostiera.",
50
+ },
51
+ {
52
+ name: "Valuta il risultato e l azione da intraprendere",
53
+ text: "Utilizza capacita, livello di riempimento e rapporto per capire se aggiungere marroni, acqua o rivoltare il cumulo.",
54
+ },
55
+ ];
56
+
57
+ const faqSchema: WithContext<FAQPage> = {
58
+ "@context": "https://schema.org",
59
+ "@type": "FAQPage",
60
+ mainEntity: faq.map((item) => ({
61
+ "@type": "Question",
62
+ name: item.question,
63
+ acceptedAnswer: { "@type": "Answer", text: item.answer },
64
+ })),
65
+ };
66
+
67
+ const howToSchema: WithContext<HowTo> = {
68
+ "@context": "https://schema.org",
69
+ "@type": "HowTo",
70
+ name: title,
71
+ description,
72
+ step: howTo.map((step, index) => ({
73
+ "@type": "HowToStep",
74
+ position: index + 1,
75
+ name: step.name,
76
+ text: step.text,
77
+ })),
78
+ };
79
+
80
+ const appSchema: WithContext<SoftwareApplication> = {
81
+ "@context": "https://schema.org",
82
+ "@type": "SoftwareApplication",
83
+ name: title,
84
+ description,
85
+ applicationCategory: "UtilityApplication",
86
+ operatingSystem: "All",
87
+ offers: { "@type": "Offer", price: "0", priceCurrency: "EUR" },
88
+ inLanguage: "it",
89
+ };
90
+
91
+ export const content: CompostBinVolumeRatioCalculatorLocaleContent = {
92
+ slug,
93
+ title,
94
+ description,
95
+ ui: {
96
+ unitMetric: "Metrico",
97
+ unitImperial: "Imperiale",
98
+ shapeTitle: "Forma della compostiera",
99
+ shapeRectangular: "Rettangolare",
100
+ shapeCylindrical: "Cilindrica",
101
+ widthLabel: "Larghezza interna",
102
+ depthLabel: "Profondità interna",
103
+ diameterLabel: "Diametro interno",
104
+ heightLabel: "Altezza interna",
105
+ brownLabel: "Marroni",
106
+ greenLabel: "Verdi",
107
+ moistureTitle: "Livello di umidità",
108
+ moistureDry: "Secco",
109
+ moistureSponge: "Spugna strizzata",
110
+ moistureWet: "Bagnato",
111
+ moistureAdviceDry: "Secco: inumidisci gradualmente e rivolta il cumulo.",
112
+ moistureAdviceSponge: "Ottimale: mantieni la consistenza di una spugna strizzata.",
113
+ moistureAdviceWet: "Bagnato: aggiungi marroni secchi e aerare.",
114
+ recipeTitle: "Miscela consigliata",
115
+ recipeKitchen: "Scarti di cucina",
116
+ recipeGarden: "Scarti da giardino",
117
+ recipeLeafy: "Miscela di foglie",
118
+ sceneTitle: "Sezione trasversale del cumulo",
119
+ resultCapacity: "Capacità interna della compostiera",
120
+ resultMaterials: "Materiali inseriti",
121
+ resultRatio: "Rapporto marroni su verdi",
122
+ resultFill: "Capacità utilizzata",
123
+ brownTarget: "Obiettivo materiali marroni",
124
+ waterAction: "Umidità",
125
+ airAction: "Aria e struttura",
126
+ statusBalanced: "Buon equilibrio iniziale",
127
+ statusTooGreen: "Aggiungi più marroni",
128
+ statusTooBrown: "Aggiungi più verdi",
129
+ statusNoGreens: "Inserisci materiali verdi",
130
+ statusOverfilled: "La compostiera è troppo piena",
131
+ statusDry: "Il cumulo è troppo secco",
132
+ statusWet: "Il cumulo è troppo bagnato",
133
+ statusGoodMoisture: "Umidità nel intervallo ottimale",
134
+ statusNote: "Rivolta il cumulo per riaprire le sacche d aria.",
135
+ volumeUnitLiters: "L",
136
+ volumeUnitGallons: "gal",
137
+ dimensionUnitCm: "cm",
138
+ dimensionUnitIn: "in",
139
+ formulaTitle: "Calcolo geometrico del volume",
140
+ formulaText:
141
+ "Il calcolatore determina la capacita utile dalle dimensioni interne. I contenitori rettangolari usano larghezza × profondita × altezza, mentre quelli cilindrici usano π × raggio² × altezza. Tutti i volumi vengono convertiti prima di mostrare il livello di riempimento.",
142
+ practicalTitle: "Il rapporto come guida pratica",
143
+ practicalText:
144
+ "L obiettivo consiglia da due a tre volte il volume di marroni rispetto ai verdi. Umidita e aerazione sono fondamentali: mantieni la consistenza di una spugna strizzata e rivolta periodicamente.",
145
+ localNote:
146
+ "Tutti i calcoli avvengono localmente nel browser. Questa risorsa e una guida pratica per il compostaggio domestico.",
147
+ resetLabel: "Ripristina",
148
+ },
149
+ seo: [
150
+ {
151
+ type: "title",
152
+ text: "Calcola la Capacità Reale di una Compostiera Domestica",
153
+ level: 2,
154
+ },
155
+ {
156
+ type: "paragraph",
157
+ html: "Un calcolatore di volume per compostiera e utile quando misura le dimensioni interne effettive del contenitore anziche basarsi solo sulla capacita dichiarata dal produttore. Inserisci la larghezza, la profondita e l altezza per una compostiera rettangolare o il diametro e l altezza per modelli cilindrici per scoprire il volume netto utile in litri o galloni.",
158
+ },
159
+ { type: "title", text: "Formule Geometriche del Volume", level: 3 },
160
+ {
161
+ type: "paragraph",
162
+ html: "Per un contenitore rettangolare usa la formula <code>larghezza × profondita × altezza</code>. Dividi i centimetri cubi ottenuti per 1.000 per calcolare i litri netti. Per un cilindro usa <code>π × raggio² × altezza</code>, dove il raggio equivale alla meta del diametro interno utile. Misura solo lo spazio interno libero senza contare pareti e coperchio.",
163
+ },
164
+ {
165
+ type: "list",
166
+ items: [
167
+ "<strong>Rettangolare:</strong> larghezza × profondita × altezza.",
168
+ "<strong>Cilindrica:</strong> π × raggio² × altezza.",
169
+ "<strong>Conversione:</strong> 1.000 centimetri cubi equivalgono a 1 litro.",
170
+ "<strong>Riempimento:</strong> somma del volume dei marroni e dei verdi confrontato con la capacita netta.",
171
+ ],
172
+ },
173
+ { type: "title", text: "Equilibrio tra Marroni e Verdi", level: 3 },
174
+ {
175
+ type: "paragraph",
176
+ html: "Utilizza da due a tre parti in volume di materiali marroni ricchi di carbonio (come foglie secche, cartone sminuzzato o piccoli rametti) per ogni parte di materiali verdi azotati (come scarti alimentari e sfalci d erba freschi). Il calcolatore indica la fascia target dei marroni consigliata.",
177
+ },
178
+ { type: "title", text: "Controllo di Umidità e Aerazione", level: 3 },
179
+ {
180
+ type: "paragraph",
181
+ html: "Mantieni l umidita ideale simile a quella di una spugna strizzata. Se il cumulo e troppo bagnato rischia di perdere ossigeno e generare cattivi odori, quindi aggiungi marroni secchi e rivolta con frequenza per ripristinare i vuoti d aria.",
182
+ },
183
+ {
184
+ type: "tip",
185
+ title: "Nota Pratica di Utilizzo",
186
+ html: "Questo calcolo del volume e una guida orientativa per il compostaggio domestico e da giardino e non sostituisce un analisi chimica C:N di laboratorio.",
187
+ },
188
+ ],
189
+ faq,
190
+ bibliography,
191
+ howTo,
192
+ schemas: [faqSchema, howToSchema, appSchema],
193
+ };
@@ -0,0 +1,190 @@
1
+ import type {
2
+ FAQPage,
3
+ HowTo,
4
+ SoftwareApplication,
5
+ WithContext,
6
+ } from "schema-dts";
7
+ import { bibliography } from "../bibliography";
8
+ import type { CompostBinVolumeRatioCalculatorLocaleContent } from "../entry";
9
+
10
+ const slug = "compost-bin-volume-and-browns-greens-ratio-calculator";
11
+ const title = "コンポスト容器容量とブラウン・グリーン比率計算ツール";
12
+ const description =
13
+ "直方体または円筒形のコンポスト容器の内部容量を計算し、炭素素材(ブラウン)、窒素素材(グリーン)、水分量、通気性の適切なバランスを確認できます。";
14
+
15
+ const faq = [
16
+ {
17
+ question: "コンポスト容器の容量はどのように計算しますか?",
18
+ answer:
19
+ "容器の内寸を測定します。直方体の場合は幅×奥行き×高さ、円筒形の場合は円周率×半径の2乗×高さを計算してリットルに換算します。",
20
+ },
21
+ {
22
+ question: "ブラウン素材とグリーン素材の適切な比率は?",
23
+ answer:
24
+ "体積比で炭素豊富なブラウン素材2〜3に対して窒素豊富なグリーン素材1が実用的な目安です。水分や臭いの状態に合わせて調整してください。",
25
+ },
26
+ {
27
+ question: "コンポスト容器にはどのくらいの量を投入できますか?",
28
+ answer:
29
+ "投入する資材の合計体積と容器の内部容量を比較します。切り返しや空気の通り道を確保するため、上部に余裕を残してください。",
30
+ },
31
+ {
32
+ question: "固く絞ったスポンジの湿度とはどういう意味ですか?",
33
+ answer:
34
+ "手で握っても水が滴り落ちず、湿り気を感じる状態です。乾燥しすぎると分解が遅くなり、湿りすぎると酸素不足になります。",
35
+ },
36
+ ];
37
+
38
+ const howTo = [
39
+ {
40
+ name: "コンポスト容器の形状を選択",
41
+ text: "直方体または円筒形を選択し、センチメートルまたはインチで内寸を入力します。",
42
+ },
43
+ {
44
+ name: "資材の投入量を入力",
45
+ text: "炭素豊富なブラウン素材と窒素豊富なグリーン素材の体積をそれぞれ見積もって入力します。",
46
+ },
47
+ {
48
+ name: "湿度の状態を設定",
49
+ text: "乾燥、固く絞ったスポンジ、過湿から現在の状態を選択し、管理アドバイスを確認します。",
50
+ },
51
+ {
52
+ name: "結果を確認",
53
+ text: "容量、充填率、比率、警告サインを確認して、ブラウン素材の追加や切り返しを行ってください。",
54
+ },
55
+ ];
56
+
57
+ const faqSchema: WithContext<FAQPage> = {
58
+ "@context": "https://schema.org",
59
+ "@type": "FAQPage",
60
+ mainEntity: faq.map((item) => ({
61
+ "@type": "Question",
62
+ name: item.question,
63
+ acceptedAnswer: { "@type": "Answer", text: item.answer },
64
+ })),
65
+ };
66
+
67
+ const howToSchema: WithContext<HowTo> = {
68
+ "@context": "https://schema.org",
69
+ "@type": "HowTo",
70
+ name: title,
71
+ description,
72
+ step: howTo.map((step, index) => ({
73
+ "@type": "HowToStep",
74
+ position: index + 1,
75
+ name: step.name,
76
+ text: step.text,
77
+ })),
78
+ };
79
+
80
+ const appSchema: WithContext<SoftwareApplication> = {
81
+ "@context": "https://schema.org",
82
+ "@type": "SoftwareApplication",
83
+ name: title,
84
+ description,
85
+ applicationCategory: "UtilityApplication",
86
+ operatingSystem: "All",
87
+ offers: { "@type": "Offer", price: "0", priceCurrency: "EUR" },
88
+ inLanguage: "ja",
89
+ };
90
+
91
+ export const content: CompostBinVolumeRatioCalculatorLocaleContent = {
92
+ slug,
93
+ title,
94
+ description,
95
+ ui: {
96
+ unitMetric: "メートル法",
97
+ unitImperial: "ヤード・ポンド法",
98
+ shapeTitle: "容器の形状",
99
+ shapeRectangular: "直方体",
100
+ shapeCylindrical: "円筒形",
101
+ widthLabel: "内側の幅",
102
+ depthLabel: "内側の奥行き",
103
+ diameterLabel: "内径",
104
+ heightLabel: "内側の高さ",
105
+ brownLabel: "ブラウン資材",
106
+ greenLabel: "グリーン資材",
107
+ moistureTitle: "水分状態",
108
+ moistureDry: "乾燥",
109
+ moistureSponge: "固く絞ったスポンジ",
110
+ moistureWet: "過湿",
111
+ moistureAdviceDry: "乾燥:少しずつ加水し、切り返しを行ってください。",
112
+ moistureAdviceSponge: "良好:固く絞ったスポンジの湿度を維持してください。",
113
+ moistureAdviceWet: "過湿:乾燥したブラウン資材を追加して混ぜてください。",
114
+ recipeTitle: "おすすめの配合例",
115
+ recipeKitchen: "生ごみメイン",
116
+ recipeGarden: "庭の手入れごみ",
117
+ recipeLeafy: "落ち葉メイン",
118
+ sceneTitle: "堆肥層の断面イメージ",
119
+ resultCapacity: "コンポスト容器の内部容量",
120
+ resultMaterials: "投入資材の合計",
121
+ resultRatio: "ブラウン対グリーン比率",
122
+ resultFill: "使用容量率",
123
+ brownTarget: "目標ブラウン量",
124
+ waterAction: "水分調整",
125
+ airAction: "空気と構造",
126
+ statusBalanced: "良好なバランスです",
127
+ statusTooGreen: "ブラウン資材を追加してください",
128
+ statusTooBrown: "グリーン資材を追加してください",
129
+ statusNoGreens: "グリーン資材を投入してください",
130
+ statusOverfilled: "容器の容量を超過しています",
131
+ statusDry: "乾燥しています",
132
+ statusWet: "水分が多すぎます",
133
+ statusGoodMoisture: "湿度は最適範囲内です",
134
+ statusNote: "切り返しを行って空気の通り道を確保してください。",
135
+ volumeUnitLiters: "L",
136
+ volumeUnitGallons: "gal",
137
+ dimensionUnitCm: "cm",
138
+ dimensionUnitIn: "in",
139
+ formulaTitle: "容量計算の数式",
140
+ formulaText: "内寸から有効容量を計算します。直方体は 幅×奥行き×高さ、円筒形は π×半径²×高さ を使用します。資材の体積を統一して充填率を表示します。",
141
+ practicalTitle: "配合比率は目安です",
142
+ practicalText: "グリーン資材の体積に対してブラウン資材を2〜3倍にするのが基本です。水分と空気の保持も重視し、定期的な切り返しを行ってください。",
143
+ localNote: "すべての計算はブラウザ内でローカルに処理されます。",
144
+ resetLabel: "リセット",
145
+ },
146
+ seo: [
147
+ {
148
+ type: "title",
149
+ text: "コンポスト容器の正確な容量を計算",
150
+ level: 2,
151
+ },
152
+ {
153
+ type: "paragraph",
154
+ html: "コンポスト容器の容量計算ツールは、製品表記ではなく実際の「内寸」から内部有効容量を導き出します。直方体容器の幅・奥行き・高さ、または円筒形容器の直径・高さを入力して、リットルまたはガロン単位で正確な容積を確認できます。",
155
+ },
156
+ { type: "title", text: "幾何学容量の計算式", level: 3 },
157
+ {
158
+ type: "paragraph",
159
+ html: "直方体容器の場合は <code>幅 × 奥行き × 高さ</code> を計算し、立方センチメートルを1,000で割ることでリットルを求めます。円筒形容器の場合は <code>π × 半径² × 高さ</code> を使用します。",
160
+ },
161
+ {
162
+ type: "list",
163
+ items: [
164
+ "<strong>直方体:</strong> 幅 × 奥行き × 高さ",
165
+ "<strong>円筒形:</strong> π × 半径² × 高さ",
166
+ "<strong>単位換算:</strong> 1,000 cm3 = 1 リットル",
167
+ "<strong>充填率:</strong> 投入資材の合計体積を内部容量と比較",
168
+ ],
169
+ },
170
+ { type: "title", text: "ブラウン素材とグリーン素材のバランス", level: 3 },
171
+ {
172
+ type: "paragraph",
173
+ html: "落ち葉やダンボールなどのブラウン素材(炭素源)2〜3に対して、生ごみや雑草などのグリーン素材(窒素源)1の割合が理想的です。",
174
+ },
175
+ { type: "title", text: "水分管理と切り返しの重要性", level: 3 },
176
+ {
177
+ type: "paragraph",
178
+ html: "固く絞ったスポンジのような湿り気を保つことが重要です。水分過多の場合は乾燥したブラウン素材を混ぜて切り返しを行ってください。",
179
+ },
180
+ {
181
+ type: "tip",
182
+ title: "実践のアドバイス",
183
+ html: "この計算ツールの結果は体積ベースの目安です。家庭用コンポストの管理にお役立てください。",
184
+ },
185
+ ],
186
+ faq,
187
+ bibliography,
188
+ howTo,
189
+ schemas: [faqSchema, howToSchema, appSchema],
190
+ };
@@ -0,0 +1,190 @@
1
+ import type {
2
+ FAQPage,
3
+ HowTo,
4
+ SoftwareApplication,
5
+ WithContext,
6
+ } from "schema-dts";
7
+ import { bibliography } from "../bibliography";
8
+ import type { CompostBinVolumeRatioCalculatorLocaleContent } from "../entry";
9
+
10
+ const slug = "compost-bin-volume-and-browns-greens-ratio-calculator";
11
+ const title = "퇴비 용기 용량 및 갈색 녹색 재료 비율 계산기";
12
+ const description =
13
+ "직육면체 또는 원통형 퇴비 용기의 내부 용량을 계산하고 탄소 재료(갈색), 질소 재료(녹색), 습도, 공기 순환의 적절한 균형을 확인하세요.";
14
+
15
+ const faq = [
16
+ {
17
+ question: "퇴비 용기 용량은 어떻게 계산하나요?",
18
+ answer:
19
+ "용기 내부 치수를 측정합니다. 직육면체는 가로×세로×높이를 곱하고, 원통형은 원주율×반지름²×높이를 계산하여 리터로 환산합니다.",
20
+ },
21
+ {
22
+ question: "갈색 재료와 녹색 재료의 적절한 비율은 얼마인가요?",
23
+ answer:
24
+ "부피 기준으로 탄소가 풍부한 갈색 재료 2~3에 대해 질소가 풍부한 녹색 재료 1의 비율이 실용적인 기준입니다.",
25
+ },
26
+ {
27
+ question: "퇴비 용기에 얼마나 많은 재료를 넣을 수 있나요?",
28
+ answer:
29
+ "투입할 재료의 부피와 용기 내부 용량을 비교하세요. 공기 순환과 퇴비 뒤집기를 위해 상부에 여유 공간을 남겨두어야 합니다.",
30
+ },
31
+ {
32
+ question: "꽉 짠 스펀지 정도의 습도는 무엇을 의미하나요?",
33
+ answer:
34
+ "손으로 쥐었을 때 물이 떨어지지 않으면서 촉촉함이 느껴지는 상태입니다. 너무 건조하면 분해가 늦어지고 너무 젖으면 산소가 부족해집니다.",
35
+ },
36
+ ];
37
+
38
+ const howTo = [
39
+ {
40
+ name: "용기 모양 선택",
41
+ text: "직육면체 또는 원통형을 선택하고 센티미터 또는 인치 단위로 내부 치수를 입력합니다.",
42
+ },
43
+ {
44
+ name: "재료 부피 입력",
45
+ text: "탄소 함량이 높은 갈색 재료와 질소 함량이 높은 녹색 재료의 부피를 각각 예상하여 입력합니다.",
46
+ },
47
+ {
48
+ name: "습도 상태 설정",
49
+ text: "건조, 꽉 짠 스펀지, 과습 중에서 현재 상태를 선택하여 맞춤 관리 조언을 확인합니다.",
50
+ },
51
+ {
52
+ name: "결과 확인",
53
+ text: "용량, 채움 비율, 재료 비율을 확인하여 갈색 재료 추가나 퇴비 뒤집기를 결정합니다.",
54
+ },
55
+ ];
56
+
57
+ const faqSchema: WithContext<FAQPage> = {
58
+ "@context": "https://schema.org",
59
+ "@type": "FAQPage",
60
+ mainEntity: faq.map((item) => ({
61
+ "@type": "Question",
62
+ name: item.question,
63
+ acceptedAnswer: { "@type": "Answer", text: item.answer },
64
+ })),
65
+ };
66
+
67
+ const howToSchema: WithContext<HowTo> = {
68
+ "@context": "https://schema.org",
69
+ "@type": "HowTo",
70
+ name: title,
71
+ description,
72
+ step: howTo.map((step, index) => ({
73
+ "@type": "HowToStep",
74
+ position: index + 1,
75
+ name: step.name,
76
+ text: step.text,
77
+ })),
78
+ };
79
+
80
+ const appSchema: WithContext<SoftwareApplication> = {
81
+ "@context": "https://schema.org",
82
+ "@type": "SoftwareApplication",
83
+ name: title,
84
+ description,
85
+ applicationCategory: "UtilityApplication",
86
+ operatingSystem: "All",
87
+ offers: { "@type": "Offer", price: "0", priceCurrency: "EUR" },
88
+ inLanguage: "ko",
89
+ };
90
+
91
+ export const content: CompostBinVolumeRatioCalculatorLocaleContent = {
92
+ slug,
93
+ title,
94
+ description,
95
+ ui: {
96
+ unitMetric: "미터법",
97
+ unitImperial: "야드·파운드법",
98
+ shapeTitle: "용기 모양",
99
+ shapeRectangular: "직육면체",
100
+ shapeCylindrical: "원통형",
101
+ widthLabel: "내부 가로",
102
+ depthLabel: "내부 세로",
103
+ diameterLabel: "내부 지름",
104
+ heightLabel: "내부 높이",
105
+ brownLabel: "갈색 재료",
106
+ greenLabel: "녹색 재료",
107
+ moistureTitle: "습도 상태",
108
+ moistureDry: "건조함",
109
+ moistureSponge: "꽉 짠 스펀지",
110
+ moistureWet: "과습함",
111
+ moistureAdviceDry: "건조함: 조금씩 물을 주고 퇴비를 뒤집어주세요.",
112
+ moistureAdviceSponge: "양호함: 꽉 짠 스펀지 정도의 습도를 유지하세요.",
113
+ moistureAdviceWet: "과습함: 건조한 갈색 재료를 섞고 뒤집어주세요.",
114
+ recipeTitle: "추천 혼합 비율",
115
+ recipeKitchen: "주방 음식물 쓰레기",
116
+ recipeGarden: "정원 부산물",
117
+ recipeLeafy: "낙엽 혼합물",
118
+ sceneTitle: "퇴비층 단면도",
119
+ resultCapacity: "퇴비 용기 내부 용량",
120
+ resultMaterials: "투입된 재료 총 부피",
121
+ resultRatio: "갈색 대 녹색 비율",
122
+ resultFill: "용량 사용률",
123
+ brownTarget: "목표 갈색 재료 양",
124
+ waterAction: "수분 조절",
125
+ airAction: "공기 및 구조",
126
+ statusBalanced: "좋은 초기 균형입니다",
127
+ statusTooGreen: "갈색 재료를 더 추가하세요",
128
+ statusTooBrown: "녹색 재료를 더 추가하세요",
129
+ statusNoGreens: "녹색 재료를 투입하세요",
130
+ statusOverfilled: "용기 용량을 초과했습니다",
131
+ statusDry: "퇴비가 건조합니다",
132
+ statusWet: "퇴비가 너무 젖어 있습니다",
133
+ statusGoodMoisture: "습도가 적정 범위에 있습니다",
134
+ statusNote: "퇴비를 뒤집어 공기 구멍을 확보하세요.",
135
+ volumeUnitLiters: "L",
136
+ volumeUnitGallons: "gal",
137
+ dimensionUnitCm: "cm",
138
+ dimensionUnitIn: "in",
139
+ formulaTitle: "부피 계산 수식",
140
+ formulaText: "내부 치수로 유효 용량을 계산합니다. 직육면체는 가로×세로×높이, 원통형은 π×반지름²×높이 공식을 사용합니다.",
141
+ practicalTitle: "비율은 기준점입니다",
142
+ practicalText: "녹색 재료 부피 대비 갈색 재료를 2~3배 넣는 것이 기본입니다. 습도와 공기 순환을 위해 주기적으로 뒤집어주세요.",
143
+ localNote: "모든 계산은 브라우저 내에서 처리됩니다.",
144
+ resetLabel: "초기화",
145
+ },
146
+ seo: [
147
+ {
148
+ type: "title",
149
+ text: "퇴비 용기의 실제 유효 용량 계산",
150
+ level: 2,
151
+ },
152
+ {
153
+ type: "paragraph",
154
+ html: "퇴비 용기 용량 계산기는 표기된 외형 치수가 아닌 실제 내부 측정값을 바탕으로 유효 용량을 계산합니다. 가로, 세로, 높이 또는 지름과 높이를 입력하여 정확한 리터 단위 부피를 확인하세요.",
155
+ },
156
+ { type: "title", text: "입체 부피 공식", level: 3 },
157
+ {
158
+ type: "paragraph",
159
+ html: "직육면체 용기는 <code>가로 × 세로 × 높이</code>를 계산하고 1,000으로 나눠 리터로 환산합니다. 원통형 용기는 <code>π × 반지름² × 높이</code> 공식을 적용합니다.",
160
+ },
161
+ {
162
+ type: "list",
163
+ items: [
164
+ "<strong>직육면체:</strong> 가로 × 세로 × 높이",
165
+ "<strong>원통형:</strong> π × 반지름² × 높이",
166
+ "<strong>단위 환산:</strong> 1,000 cm3 = 1 리터",
167
+ "<strong>채움 비율:</strong> 갈색 및 녹색 재료 총 부피와 용기 내부 용량 비교",
168
+ ],
169
+ },
170
+ { type: "title", text: "갈색 및 녹색 재료의 균형", level: 3 },
171
+ {
172
+ type: "paragraph",
173
+ html: "낙엽, 상자 조각 등 탄소가 풍부한 갈색 재료 2~3 비율에 대해 주방 쓰레기 등 질소가 풍부한 녹색 재료 1 비율을 섞는 것이 정석입니다.",
174
+ },
175
+ { type: "title", text: "수분 관리와 뒤집기", level: 3 },
176
+ {
177
+ type: "paragraph",
178
+ html: "꽉 짠 스펀지 정도의 촉촉함을 유지하세요. 너무 젖으면 악취가 발생할 수 있으므로 건조한 갈색 재료를 추가하고 뒤집어주어야 합니다.",
179
+ },
180
+ {
181
+ type: "tip",
182
+ title: "실전 조언",
183
+ html: "본 계산기는 홈 가드닝 및 가정용 퇴비 만들기를 위한 실용적인 가이드입니다.",
184
+ },
185
+ ],
186
+ faq,
187
+ bibliography,
188
+ howTo,
189
+ schemas: [faqSchema, howToSchema, appSchema],
190
+ };