@jjlmoya/utils-nature 1.13.0 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/category/i18n/fr.ts +6 -6
- package/src/category/i18n/ru.ts +5 -5
- package/src/layouts/PreviewLayout.astro +1 -1
- package/src/pages/[locale]/[slug].astro +32 -14
- package/src/tests/diacritics_density.test.ts +118 -0
- package/src/tests/inverted_punctuation.test.ts +84 -0
- package/src/tests/locale_completeness.test.ts +1 -31
- package/src/tests/no_en_dash.test.ts +71 -0
- package/src/tests/script_density.test.ts +94 -0
- package/src/tests/shared-test-helpers.ts +56 -0
- package/src/tests/tool_exports.test.ts +34 -0
- package/src/tool/cricketThermometer/bibliography.ts +12 -0
- package/src/tool/cricketThermometer/i18n/de.ts +6 -18
- package/src/tool/cricketThermometer/i18n/en.ts +3 -15
- package/src/tool/cricketThermometer/i18n/es.ts +3 -15
- package/src/tool/cricketThermometer/i18n/fr.ts +9 -21
- package/src/tool/cricketThermometer/i18n/id.ts +3 -15
- package/src/tool/cricketThermometer/i18n/it.ts +3 -15
- package/src/tool/cricketThermometer/i18n/ja.ts +3 -15
- package/src/tool/cricketThermometer/i18n/ko.ts +3 -15
- package/src/tool/cricketThermometer/i18n/nl.ts +3 -15
- package/src/tool/cricketThermometer/i18n/pl.ts +6 -18
- package/src/tool/cricketThermometer/i18n/pt.ts +3 -15
- package/src/tool/cricketThermometer/i18n/ru.ts +8 -20
- package/src/tool/cricketThermometer/i18n/sv.ts +3 -15
- package/src/tool/cricketThermometer/i18n/tr.ts +3 -15
- package/src/tool/cricketThermometer/i18n/zh.ts +8 -20
- package/src/tool/cricketThermometer/seo.astro +1 -1
- package/src/tool/cricketThermometer/ui.ts +0 -2
- package/src/tool/digitalCarbon/bibliography.ts +8 -0
- package/src/tool/digitalCarbon/digital-carbon-footprint-calculator.css +57 -1
- package/src/tool/digitalCarbon/i18n/de.ts +4 -10
- package/src/tool/digitalCarbon/i18n/en.ts +2 -8
- package/src/tool/digitalCarbon/i18n/es.ts +2 -8
- package/src/tool/digitalCarbon/i18n/fr.ts +6 -12
- package/src/tool/digitalCarbon/i18n/id.ts +2 -8
- package/src/tool/digitalCarbon/i18n/it.ts +2 -8
- package/src/tool/digitalCarbon/i18n/ja.ts +2 -8
- package/src/tool/digitalCarbon/i18n/ko.ts +2 -8
- package/src/tool/digitalCarbon/i18n/nl.ts +2 -8
- package/src/tool/digitalCarbon/i18n/pl.ts +2 -8
- package/src/tool/digitalCarbon/i18n/pt.ts +2 -8
- package/src/tool/digitalCarbon/i18n/ru.ts +3 -9
- package/src/tool/digitalCarbon/i18n/sv.ts +2 -8
- package/src/tool/digitalCarbon/i18n/tr.ts +2 -8
- package/src/tool/digitalCarbon/i18n/zh.ts +2 -8
- package/src/tool/digitalCarbon/seo.astro +1 -1
- package/src/tool/rainHarvester/bibliography.ts +20 -0
- package/src/tool/rainHarvester/i18n/de.ts +5 -23
- package/src/tool/rainHarvester/i18n/en.ts +2 -20
- package/src/tool/rainHarvester/i18n/es.ts +2 -20
- package/src/tool/rainHarvester/i18n/fr.ts +3 -21
- package/src/tool/rainHarvester/i18n/id.ts +2 -20
- package/src/tool/rainHarvester/i18n/it.ts +2 -20
- package/src/tool/rainHarvester/i18n/ja.ts +2 -20
- package/src/tool/rainHarvester/i18n/ko.ts +2 -20
- package/src/tool/rainHarvester/i18n/nl.ts +2 -20
- package/src/tool/rainHarvester/i18n/pl.ts +5 -23
- package/src/tool/rainHarvester/i18n/pt.ts +2 -20
- package/src/tool/rainHarvester/i18n/ru.ts +8 -26
- package/src/tool/rainHarvester/i18n/sv.ts +2 -20
- package/src/tool/rainHarvester/i18n/tr.ts +2 -20
- package/src/tool/rainHarvester/i18n/zh.ts +5 -23
- package/src/tool/rainHarvester/seo.astro +1 -1
- package/src/tool/seedCalculator/bibliography.ts +16 -0
- package/src/tool/seedCalculator/i18n/de.ts +2 -18
- package/src/tool/seedCalculator/i18n/en.ts +2 -18
- package/src/tool/seedCalculator/i18n/es.ts +2 -18
- package/src/tool/seedCalculator/i18n/fr.ts +3 -19
- package/src/tool/seedCalculator/i18n/id.ts +2 -18
- package/src/tool/seedCalculator/i18n/it.ts +2 -18
- package/src/tool/seedCalculator/i18n/ja.ts +2 -18
- package/src/tool/seedCalculator/i18n/ko.ts +2 -18
- package/src/tool/seedCalculator/i18n/nl.ts +2 -18
- package/src/tool/seedCalculator/i18n/pl.ts +3 -19
- package/src/tool/seedCalculator/i18n/pt.ts +2 -18
- package/src/tool/seedCalculator/i18n/ru.ts +6 -22
- package/src/tool/seedCalculator/i18n/sv.ts +2 -18
- package/src/tool/seedCalculator/i18n/tr.ts +2 -18
- package/src/tool/seedCalculator/i18n/zh.ts +2 -18
- package/src/tool/seedCalculator/seo.astro +8 -2
- package/src/tool/seedCalculator/ui.ts +0 -2
- package/src/types.ts +0 -2
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { ToolDefinition } from '../types';
|
|
2
|
+
|
|
3
|
+
export interface ToolExportValidationResult {
|
|
4
|
+
passed: boolean;
|
|
5
|
+
failures: string[];
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
function validateComponentType(
|
|
9
|
+
toolId: string,
|
|
10
|
+
componentName: string,
|
|
11
|
+
component: unknown,
|
|
12
|
+
failures: string[],
|
|
13
|
+
): void {
|
|
14
|
+
if (typeof component !== 'function') {
|
|
15
|
+
failures.push(`${toolId}: ${componentName} is not a function (${typeof component})`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
async function validateComponentExecution(
|
|
20
|
+
toolId: string,
|
|
21
|
+
componentName: string,
|
|
22
|
+
fn: () => Promise<unknown>,
|
|
23
|
+
failures: string[],
|
|
24
|
+
): Promise<void> {
|
|
25
|
+
try {
|
|
26
|
+
const result = await fn();
|
|
27
|
+
if (!result || typeof result !== 'object') {
|
|
28
|
+
failures.push(`${toolId}: ${componentName} import returned invalid result`);
|
|
29
|
+
}
|
|
30
|
+
} catch (error) {
|
|
31
|
+
failures.push(`${toolId}: ${componentName} execution error - ${error instanceof Error ? error.message : 'unknown'}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export async function validateToolExports(tools: ToolDefinition[]): Promise<ToolExportValidationResult> {
|
|
36
|
+
const failures: string[] = [];
|
|
37
|
+
|
|
38
|
+
for (const tool of tools) {
|
|
39
|
+
validateComponentType(tool.entry.id, 'Component', tool.Component, failures);
|
|
40
|
+
validateComponentType(tool.entry.id, 'SEOComponent', tool.SEOComponent, failures);
|
|
41
|
+
validateComponentType(tool.entry.id, 'BibliographyComponent', tool.BibliographyComponent, failures);
|
|
42
|
+
|
|
43
|
+
const componentFn = tool.Component as () => Promise<unknown>;
|
|
44
|
+
const seoFn = tool.SEOComponent as () => Promise<unknown>;
|
|
45
|
+
const bibFn = tool.BibliographyComponent as () => Promise<unknown>;
|
|
46
|
+
|
|
47
|
+
await validateComponentExecution(tool.entry.id, 'Component', componentFn, failures);
|
|
48
|
+
await validateComponentExecution(tool.entry.id, 'SEOComponent', seoFn, failures);
|
|
49
|
+
await validateComponentExecution(tool.entry.id, 'BibliographyComponent', bibFn, failures);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
passed: failures.length === 0,
|
|
54
|
+
failures,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { ALL_TOOLS } from '../tools';
|
|
3
|
+
import { validateToolExports } from './shared-test-helpers';
|
|
4
|
+
|
|
5
|
+
describe('Tool Exports Pattern Validation', () => {
|
|
6
|
+
describe('Component Exports Format', () => {
|
|
7
|
+
ALL_TOOLS.forEach((tool) => {
|
|
8
|
+
it(`${tool.entry.id}: Component should be a lazy-loaded function`, () => {
|
|
9
|
+
expect(typeof tool.Component).toBe('function');
|
|
10
|
+
expect(tool.Component).toBeInstanceOf(Function);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it(`${tool.entry.id}: SEOComponent should be a lazy-loaded function`, () => {
|
|
14
|
+
expect(typeof tool.SEOComponent).toBe('function');
|
|
15
|
+
expect(tool.SEOComponent).toBeInstanceOf(Function);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it(`${tool.entry.id}: BibliographyComponent should be a lazy-loaded function`, () => {
|
|
19
|
+
expect(typeof tool.BibliographyComponent).toBe('function');
|
|
20
|
+
expect(tool.BibliographyComponent).toBeInstanceOf(Function);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
describe('Dynamic Import Validation', () => {
|
|
26
|
+
it('all tools must have functional dynamic imports', async () => {
|
|
27
|
+
const result = await validateToolExports(ALL_TOOLS);
|
|
28
|
+
if (!result.passed) {
|
|
29
|
+
throw new Error(`Tool export validation failed:\n${result.failures.join('\n')}`);
|
|
30
|
+
}
|
|
31
|
+
expect(result.passed).toBe(true);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BibliographyEntry } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const bibliography: BibliographyEntry[] = [
|
|
4
|
+
{
|
|
5
|
+
name: 'The American Naturalist - The Cricket as a Thermometer',
|
|
6
|
+
url: 'https://www.jstor.org/stable/2453256',
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
name: 'Wikipedia - Dolbear\'s Law',
|
|
10
|
+
url: 'https://en.wikipedia.org/wiki/Dolbear%27s_law',
|
|
11
|
+
},
|
|
12
|
+
];
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { CricketThermometerUI } from '../ui';
|
|
4
5
|
|
|
5
6
|
const slug = 'grillen-thermometer';
|
|
6
|
-
const title = 'Grillen Thermometer
|
|
7
|
+
const title = 'Grillen Thermometer: Dolbearsches Gesetz Temperaturrechner';
|
|
7
8
|
const description =
|
|
8
9
|
'Kein Thermometer zur Hand? Hören Sie den Grillen zu. Berechnen Sie die exakte Temperatur, indem Sie das Zirpen mit unserem Dolbearsches Gesetz Rechner zählen.';
|
|
9
10
|
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'Häufig gestellte Fragen',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'The American Naturalist - Die Grille als Thermometer',
|
|
96
|
-
url: 'https://www.jstor.org/stable/2453256',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'Wikipedia - Dolbearsches Gesetz',
|
|
100
|
-
url: 'https://de.wikipedia.org/wiki/Dolbearsches_Gesetz',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -115,7 +105,7 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
115
105
|
{
|
|
116
106
|
type: 'tip',
|
|
117
107
|
title: 'Warum singen Grillen?',
|
|
118
|
-
html: '<p>Der
|
|
108
|
+
html: '<p>Der "Gesang" der Grille, auch <strong>Stridulation</strong> genannt, ist eigentlich ein Paarungsruf. Die Männchen reiben ihre Flügel (nicht ihre Beine) aneinander, um diesen Laut zu erzeugen. Faszinierenderweise hängt die Geschwindigkeit dieses Reibens direkt von der Wärmeenergie der Luft ab, da Grillen wechselwarme Tiere (Ektothermen) sind.</p>',
|
|
119
109
|
},
|
|
120
110
|
{
|
|
121
111
|
type: 'title',
|
|
@@ -156,9 +146,9 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
156
146
|
{
|
|
157
147
|
type: 'list',
|
|
158
148
|
items: [
|
|
159
|
-
'<strong>Thermometer der Liebe:</strong> Einige Theorien besagen, dass Weibchen Männchen bevorzugen, die in der
|
|
149
|
+
'<strong>Thermometer der Liebe:</strong> Einige Theorien besagen, dass Weibchen Männchen bevorzugen, die in der "korrekten" Frequenz für die aktuelle Temperatur singen, da dies darauf hindeutet, dass das Männchen gesund ist und einen starken Stoffwechsel hat.',
|
|
160
150
|
'<strong>Kältegrenze:</strong> Unterhalb von 10°C (50°F) hören die meisten Grillen auf zu singen, da ihr Stoffwechsel zu langsam ist, um die muskuläre Anstrengung aufrechtzuerhalten.',
|
|
161
|
-
'<strong>Synchronisation:</strong> In warmen Nächten können tausende Grillen ihr Zirpen synchronisieren und so einen beeindruckenden
|
|
151
|
+
'<strong>Synchronisation:</strong> In warmen Nächten können tausende Grillen ihr Zirpen synchronisieren und so einen beeindruckenden "Wellen"-Klangeffekt erzeugen.',
|
|
162
152
|
],
|
|
163
153
|
},
|
|
164
154
|
{
|
|
@@ -175,7 +165,5 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
175
165
|
btnSoundOn: 'Ton: Ein',
|
|
176
166
|
btnSoundOff: 'Ton: Aus',
|
|
177
167
|
unitChirpsMin: 'Zirp/Min',
|
|
178
|
-
faqTitle: 'Häufig gestellte Fragen',
|
|
179
|
-
bibliographyTitle: 'Wissenschaftliche Referenzen',
|
|
180
168
|
},
|
|
181
169
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { CricketThermometerUI } from '../ui';
|
|
4
5
|
|
|
5
6
|
const slug = 'cricket-thermometer';
|
|
6
|
-
const title = 'Cricket Thermometer
|
|
7
|
+
const title = 'Cricket Thermometer: Dolbear\'s Law Temperature Calculator';
|
|
7
8
|
const description =
|
|
8
9
|
'No thermometer? Listen to the crickets. Calculate the exact temperature by counting chirps with our Dolbear\'s Law calculator.';
|
|
9
10
|
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'Frequently Asked Questions',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'The American Naturalist - The Cricket as a Thermometer',
|
|
96
|
-
url: 'https://www.jstor.org/stable/2453256',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'Wikipedia - Dolbear\'s Law',
|
|
100
|
-
url: 'https://en.wikipedia.org/wiki/Dolbear%27s_law',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -175,7 +165,5 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
175
165
|
btnSoundOn: 'Sound: On',
|
|
176
166
|
btnSoundOff: 'Sound: Off',
|
|
177
167
|
unitChirpsMin: 'chirps/min',
|
|
178
|
-
faqTitle: 'Frequently Asked Questions',
|
|
179
|
-
bibliographyTitle: 'Scientific References',
|
|
180
168
|
},
|
|
181
169
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { CricketThermometerUI } from '../ui';
|
|
4
5
|
|
|
5
6
|
const slug = 'termometro-grillo';
|
|
6
|
-
const title = '¿Qué temperatura hace
|
|
7
|
+
const title = '¿Qué temperatura hace?: Termómetro de Grillos (Ley de Dolbear)';
|
|
7
8
|
const description =
|
|
8
9
|
'¿No tienes termómetro? Escucha a los grillos. Calcula la temperatura exacta contando sus chirridos con nuestra calculadora de la Ley de Dolbear.';
|
|
9
10
|
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'Preguntas Frecuentes',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'The American Naturalist - The Cricket as a Thermometer',
|
|
96
|
-
url: 'https://www.jstor.org/stable/2453256',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'Wikipedia - Dolbear\'s Law',
|
|
100
|
-
url: 'https://en.wikipedia.org/wiki/Dolbear%27s_law',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -175,7 +165,5 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
175
165
|
btnSoundOn: 'Sonido: On',
|
|
176
166
|
btnSoundOff: 'Sonido: Off',
|
|
177
167
|
unitChirpsMin: 'chirridos/min',
|
|
178
|
-
faqTitle: 'Preguntas Frecuentes',
|
|
179
|
-
bibliographyTitle: 'Referencias Científicas',
|
|
180
168
|
},
|
|
181
169
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { CricketThermometerUI } from '../ui';
|
|
4
5
|
|
|
5
6
|
const slug = 'thermometre-grillon';
|
|
6
|
-
const title = 'Thermomètre à Grillons
|
|
7
|
+
const title = 'Thermomètre à Grillons: Loi de Dolbear';
|
|
7
8
|
const description =
|
|
8
9
|
'Pas de thermomètre ? Écoutez les grillons. Calculez la température exacte en comptant les stridulations avec notre calculateur de la Loi de Dolbear.';
|
|
9
10
|
|
|
@@ -87,25 +88,14 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'Questions Fréquentes',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'The American Naturalist - The Cricket as a Thermometer',
|
|
96
|
-
url: 'https://www.jstor.org/stable/2453256',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'Wikipedia - Dolbear\'s Law',
|
|
100
|
-
url: 'https://en.wikipedia.org/wiki/Dolbear%27s_law',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
106
96
|
{
|
|
107
97
|
type: 'title',
|
|
108
|
-
text: 'Guide Complet
|
|
98
|
+
text: 'Guide Complet: Comment Utiliser la Loi de Dolbear pour Calculer la Température',
|
|
109
99
|
level: 2,
|
|
110
100
|
},
|
|
111
101
|
{
|
|
@@ -119,12 +109,12 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
119
109
|
},
|
|
120
110
|
{
|
|
121
111
|
type: 'title',
|
|
122
|
-
text: 'La Science
|
|
112
|
+
text: 'La Science: Ectothermie et Métabolisme',
|
|
123
113
|
level: 3,
|
|
124
114
|
},
|
|
125
115
|
{
|
|
126
116
|
type: 'paragraph',
|
|
127
|
-
html: 'Contrairement aux mammifères, qui maintiennent une température corporelle constante, les insectes dépendent de la chaleur externe. Leurs réactions biochimiques suivent l\'<strong>Équation d\'Arrhenius</strong
|
|
117
|
+
html: 'Contrairement aux mammifères, qui maintiennent une température corporelle constante, les insectes dépendent de la chaleur externe. Leurs réactions biochimiques suivent l\'<strong>Équation d\'Arrhenius</strong>: plus il fait chaud, plus la réaction est rapide.',
|
|
128
118
|
},
|
|
129
119
|
{
|
|
130
120
|
type: 'paragraph',
|
|
@@ -146,7 +136,7 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
146
136
|
},
|
|
147
137
|
{
|
|
148
138
|
type: 'paragraph',
|
|
149
|
-
html: 'Notre outil fait cela automatiquement
|
|
139
|
+
html: 'Notre outil fait cela automatiquement: il mesure le temps entre vos tapotements, calcule les stridulations par minute (BPM) et applique la formule instantanément.',
|
|
150
140
|
},
|
|
151
141
|
{
|
|
152
142
|
type: 'title',
|
|
@@ -172,10 +162,8 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
172
162
|
labelTapping: 'Continuez à tapoter...',
|
|
173
163
|
tapInstruction: 'Chaque fois que vous entendez une stridulation',
|
|
174
164
|
btnReset: 'Réinitialiser',
|
|
175
|
-
btnSoundOn: 'Son
|
|
176
|
-
btnSoundOff: 'Son
|
|
165
|
+
btnSoundOn: 'Son: On',
|
|
166
|
+
btnSoundOff: 'Son: Off',
|
|
177
167
|
unitChirpsMin: 'strid./min',
|
|
178
|
-
faqTitle: 'Questions Fréquentes',
|
|
179
|
-
bibliographyTitle: 'Références Scientifiques',
|
|
180
168
|
},
|
|
181
169
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { CricketThermometerUI } from '../ui';
|
|
4
5
|
|
|
5
6
|
const slug = 'termometer-jangkrik';
|
|
6
|
-
const title = 'Termometer Jangkrik
|
|
7
|
+
const title = 'Termometer Jangkrik: Kalkulator Suhu Hukum Dolbear';
|
|
7
8
|
const description =
|
|
8
9
|
'Tidak ada termometer? Dengarkan jangkrik. Hitung suhu tepat dengan menghitung kerikan menggunakan kalkulator Hukum Dolbear kami.';
|
|
9
10
|
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'Pertanyaan yang Sering Diajukan',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'The American Naturalist - The Cricket as a Thermometer',
|
|
96
|
-
url: 'https://www.jstor.org/stable/2453256',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'Wikipedia - Dolbear\'s Law',
|
|
100
|
-
url: 'https://en.wikipedia.org/wiki/Dolbear%27s_law',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -175,7 +165,5 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
175
165
|
btnSoundOn: 'Suara: Aktif',
|
|
176
166
|
btnSoundOff: 'Suara: Nonaktif',
|
|
177
167
|
unitChirpsMin: 'kerikan/menit',
|
|
178
|
-
faqTitle: 'Pertanyaan yang Sering Diajukan',
|
|
179
|
-
bibliographyTitle: 'Referensi Ilmiah',
|
|
180
168
|
},
|
|
181
169
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { CricketThermometerUI } from '../ui';
|
|
4
5
|
|
|
5
6
|
const slug = 'termometro-a-grillo';
|
|
6
|
-
const title = 'Termometro a Grillo
|
|
7
|
+
const title = 'Termometro a Grillo: Calcolatore della Temperatura via Legge di Dolbear';
|
|
7
8
|
const description =
|
|
8
9
|
'Senza termometro? Ascolta i grilli. Calcola la temperatura esatta contando i friniti con il nostro calcolatore basato sulla Legge di Dolbear.';
|
|
9
10
|
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'Domande Frequenti',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'The American Naturalist - The Cricket as a Thermometer',
|
|
96
|
-
url: 'https://www.jstor.org/stable/2453256',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'Wikipedia - Dolbear\'s Law',
|
|
100
|
-
url: 'https://en.wikipedia.org/wiki/Dolbear%27s_law',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -175,7 +165,5 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
175
165
|
btnSoundOn: 'Suono: On',
|
|
176
166
|
btnSoundOff: 'Suono: Off',
|
|
177
167
|
unitChirpsMin: 'friniti/min',
|
|
178
|
-
faqTitle: 'Domande Frequenti',
|
|
179
|
-
bibliographyTitle: 'Riferimenti Scientifici',
|
|
180
168
|
},
|
|
181
169
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { CricketThermometerUI } from '../ui';
|
|
4
5
|
|
|
5
6
|
const slug = 'cricket-thermometer';
|
|
6
|
-
const title = '
|
|
7
|
+
const title = 'コオロギ温度計: ドルベアの法則による温度計算機';
|
|
7
8
|
const description =
|
|
8
9
|
'温度計がない?そんな時はコオロギの声を聞きましょう。ドルベアの法則に基づき、鳴き声を数えるだけで正確な温度を算出します。';
|
|
9
10
|
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'よくある質問',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'The American Naturalist - The Cricket as a Thermometer',
|
|
96
|
-
url: 'https://www.jstor.org/stable/2453256',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'Wikipedia - Dolbear\'s Law',
|
|
100
|
-
url: 'https://en.wikipedia.org/wiki/Dolbear%27s_law',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -175,7 +165,5 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
175
165
|
btnSoundOn: 'サウンド:ON',
|
|
176
166
|
btnSoundOff: 'サウンド:OFF',
|
|
177
167
|
unitChirpsMin: '回/分',
|
|
178
|
-
faqTitle: 'よくある質問',
|
|
179
|
-
bibliographyTitle: '科学的参考文献',
|
|
180
168
|
},
|
|
181
169
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { CricketThermometerUI } from '../ui';
|
|
4
5
|
|
|
5
6
|
const slug = 'cricket-thermometer';
|
|
6
|
-
const title = '귀뚜라미
|
|
7
|
+
const title = '귀뚜라미 온도계: 돌베어 법칙 온도 계산기';
|
|
7
8
|
const description =
|
|
8
9
|
'온도계가 없으신가요? 귀뚜라미 소리에 귀를 기울여 보세요. 돌베어 법칙 계산기를 사용하여 귀뚜라미 울음소리 횟수로 정확한 온도를 계산할 수 있습니다.';
|
|
9
10
|
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: '자주 묻는 질문',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'The American Naturalist - The Cricket as a Thermometer',
|
|
96
|
-
url: 'https://www.jstor.org/stable/2453256',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'Wikipedia - Dolbear\'s Law',
|
|
100
|
-
url: 'https://en.wikipedia.org/wiki/Dolbear%27s_law',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -175,7 +165,5 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
175
165
|
btnSoundOn: '소리: 켜짐',
|
|
176
166
|
btnSoundOff: '소리: 꺼짐',
|
|
177
167
|
unitChirpsMin: '회/분',
|
|
178
|
-
faqTitle: '자주 묻는 질문',
|
|
179
|
-
bibliographyTitle: '과학적 참고 문헌',
|
|
180
168
|
},
|
|
181
169
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { CricketThermometerUI } from '../ui';
|
|
4
5
|
|
|
5
6
|
const slug = 'krekels-thermometer';
|
|
6
|
-
const title = 'Krekels thermometer
|
|
7
|
+
const title = 'Krekels thermometer: Dolbears wet temperatuurcalculator';
|
|
7
8
|
const description =
|
|
8
9
|
'Geen thermometer? Luister naar de krekels. Bereken de exacte temperatuur door het aantal tsjirpen te tellen met onze Dolbears wet calculator.';
|
|
9
10
|
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'Veelgestelde Vragen',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'The American Naturalist - The Cricket as a Thermometer',
|
|
96
|
-
url: 'https://www.jstor.org/stable/2453256',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'Wikipedia - Dolbear\'s Law',
|
|
100
|
-
url: 'https://en.wikipedia.org/wiki/Dolbear%27s_law',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -175,7 +165,5 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
175
165
|
btnSoundOn: 'Geluid: Aan',
|
|
176
166
|
btnSoundOff: 'Geluid: Uit',
|
|
177
167
|
unitChirpsMin: 'tsjirpen/min',
|
|
178
|
-
faqTitle: 'Veelgestelde Vragen',
|
|
179
|
-
bibliographyTitle: 'Wetenschappelijke Bronnen',
|
|
180
168
|
},
|
|
181
169
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { CricketThermometerUI } from '../ui';
|
|
4
5
|
|
|
5
6
|
const slug = 'termometr-swierszczy';
|
|
6
|
-
const title = 'Termometr świerszczowy
|
|
7
|
+
const title = 'Termometr świerszczowy: Kalkulator temperatury według prawa Dolbeara';
|
|
7
8
|
const description =
|
|
8
9
|
'Nie masz termometru? Posłuchaj świerszczy. Oblicz dokładną temperaturę, licząc cykania za pomocą naszego kalkulatora opartego na prawie Dolbeara.';
|
|
9
10
|
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'Często zadawane pytania',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'The American Naturalist - The Cricket as a Thermometer',
|
|
96
|
-
url: 'https://www.jstor.org/stable/2453256',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'Wikipedia - Dolbear\'s Law',
|
|
100
|
-
url: 'https://en.wikipedia.org/wiki/Dolbear%27s_law',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -114,8 +104,8 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
114
104
|
},
|
|
115
105
|
{
|
|
116
106
|
type: 'tip',
|
|
117
|
-
title: 'Dlaczego świerszcze
|
|
118
|
-
html: '<p
|
|
107
|
+
title: 'Dlaczego świerszcze "śpiewają"?',
|
|
108
|
+
html: '<p>"Śpiew" świerszcza, czyli <strong>strydulacja</strong>, to w rzeczywistości wołanie godowe. Samce pocierają o siebie skrzydła (nie nogi), aby wydać ten dźwięk. Co ciekawe, ponieważ są to zwierzęta zmiennocieplne (ektotermy), szybkość tego pocierania zależy bezpośrednio od energii cieplnej powietrza.</p>',
|
|
119
109
|
},
|
|
120
110
|
{
|
|
121
111
|
type: 'title',
|
|
@@ -156,7 +146,7 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
156
146
|
{
|
|
157
147
|
type: 'list',
|
|
158
148
|
items: [
|
|
159
|
-
'<strong>Termometry miłości:</strong> Niektóre teorie sugerują, że samice wolą samców śpiewających z
|
|
149
|
+
'<strong>Termometry miłości:</strong> Niektóre teorie sugerują, że samice wolą samców śpiewających z "właściwą" częstotliwością dla aktualnej temperatury, ponieważ świadczy to o zdrowiu samca i silnym metabolizmie.',
|
|
160
150
|
'<strong>Granica zimna:</strong> Poniżej 10°C (50°F) większość świerszczy przestaje śpiewać, ponieważ ich metabolizm jest zbyt wolny, by podtrzymać wysiłek mięśni.',
|
|
161
151
|
'<strong>Synchronizacja:</strong> W ciepłe noce tysiące świerszczy potrafią zsynchronizować swoje cykanie, tworząc imponujący efekt fali dźwiękowej.',
|
|
162
152
|
],
|
|
@@ -175,7 +165,5 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
175
165
|
btnSoundOn: 'Dźwięk: Wł.',
|
|
176
166
|
btnSoundOff: 'Dźwięk: Wył.',
|
|
177
167
|
unitChirpsMin: 'cyknięć/min',
|
|
178
|
-
faqTitle: 'Często zadawane pytania',
|
|
179
|
-
bibliographyTitle: 'Źródła naukowe',
|
|
180
168
|
},
|
|
181
169
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { CricketThermometerUI } from '../ui';
|
|
4
5
|
|
|
5
6
|
const slug = 'termometro-grilo';
|
|
6
|
-
const title = 'Termómetro de Grilo
|
|
7
|
+
const title = 'Termómetro de Grilo: Calculadora de Temperatura da Lei de Dolbear';
|
|
7
8
|
const description =
|
|
8
9
|
'Sem termómetro? Ouça os grilos. Calcule a temperatura exata contando os cri-cris com a nossa calculadora da Lei de Dolbear.';
|
|
9
10
|
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'Perguntas Frequentes',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'The American Naturalist - The Cricket as a Thermometer',
|
|
96
|
-
url: 'https://www.jstor.org/stable/2453256',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'Wikipedia - Dolbear\'s Law',
|
|
100
|
-
url: 'https://en.wikipedia.org/wiki/Dolbear%27s_law',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -175,7 +165,5 @@ export const content: ToolLocaleContent<CricketThermometerUI> = {
|
|
|
175
165
|
btnSoundOn: 'Som: Ligado',
|
|
176
166
|
btnSoundOff: 'Som: Desligado',
|
|
177
167
|
unitChirpsMin: 'cantos/min',
|
|
178
|
-
faqTitle: 'Perguntas Frequentes',
|
|
179
|
-
bibliographyTitle: 'Referências Científicas',
|
|
180
168
|
},
|
|
181
169
|
};
|