@jjlmoya/utils-home 1.23.0 → 1.25.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/entries.ts +4 -1
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tool/acTonnageCalculator/ac-tonnage-calculator.css +467 -0
- package/src/tool/acTonnageCalculator/bibliography.astro +14 -0
- package/src/tool/acTonnageCalculator/bibliography.ts +5 -0
- package/src/tool/acTonnageCalculator/client-animations.ts +80 -0
- package/src/tool/acTonnageCalculator/client.ts +171 -0
- package/src/tool/acTonnageCalculator/component.astro +186 -0
- package/src/tool/acTonnageCalculator/entry.ts +29 -0
- package/src/tool/acTonnageCalculator/i18n/de.ts +63 -0
- package/src/tool/acTonnageCalculator/i18n/en.ts +136 -0
- package/src/tool/acTonnageCalculator/i18n/es.ts +136 -0
- package/src/tool/acTonnageCalculator/i18n/fr.ts +61 -0
- package/src/tool/acTonnageCalculator/i18n/id.ts +61 -0
- package/src/tool/acTonnageCalculator/i18n/it.ts +61 -0
- package/src/tool/acTonnageCalculator/i18n/ja.ts +61 -0
- package/src/tool/acTonnageCalculator/i18n/ko.ts +61 -0
- package/src/tool/acTonnageCalculator/i18n/nl.ts +61 -0
- package/src/tool/acTonnageCalculator/i18n/pl.ts +61 -0
- package/src/tool/acTonnageCalculator/i18n/pt.ts +61 -0
- package/src/tool/acTonnageCalculator/i18n/ru.ts +61 -0
- package/src/tool/acTonnageCalculator/i18n/sv.ts +61 -0
- package/src/tool/acTonnageCalculator/i18n/tr.ts +61 -0
- package/src/tool/acTonnageCalculator/i18n/zh.ts +61 -0
- package/src/tool/acTonnageCalculator/index.ts +8 -0
- package/src/tool/acTonnageCalculator/logic.ts +56 -0
- package/src/tool/acTonnageCalculator/seo.astro +15 -0
- package/src/tool/acTonnageCalculator/ui.ts +39 -0
- package/src/tools.ts +2 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { AcTonnageCalculatorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'calculadora-tonelagem-ar-condicionado';
|
|
7
|
+
const title = 'Calculadora de Tonelagem e Capacidade de Refrigeração';
|
|
8
|
+
const description =
|
|
9
|
+
'Calcule o tamanho exato do ar condicionado para o seu cômodo em BTUs, frigorias e toneladas. Insira área, pé-direito, ocupantes e fontes de calor.';
|
|
10
|
+
|
|
11
|
+
const faqData = [
|
|
12
|
+
{ question: 'Quantos BTUs por metro quadrado?', answer: 'A base padrão é 600 BTUs por metro quadrado para um pé-direito de 2,5 m em clima temperado. Aumenta com altura, sol e pessoas.' },
|
|
13
|
+
{ question: 'O que é uma frigoria?', answer: 'Frigoria é uma unidade antiga de refrigeração comum na Espanha e América Latina. Uma frigoria equivale a aproximadamente 3,968 BTUs por hora.' },
|
|
14
|
+
{ question: 'Como converter BTUs em toneladas?', answer: 'Uma tonelada de refrigeração equivale a 12.000 BTUs por hora. Divida o total de BTUs por 12.000.' },
|
|
15
|
+
{ question: 'O pé-direito afeta o dimensionamento?', answer: 'Sim. Cada metro acima de 2,7 m aumenta a necessidade de refrigeração em cerca de 8%.' },
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
const howToData = [
|
|
19
|
+
{ name: 'Meça o cômodo', text: 'Meça comprimento e largura em metros e multiplique para obter a área.' },
|
|
20
|
+
{ name: 'Conte pessoas e aparelhos', text: 'Adicione pessoas e fontes de calor como computadores e televisores.' },
|
|
21
|
+
{ name: 'Exposição solar', text: 'Escolha leve, média ou forte conforme o sol direto.' },
|
|
22
|
+
{ name: 'Leia a recomendação', text: 'A calculadora mostra BTUs, frigorias e toneladas para qualquer mercado.' },
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
26
|
+
'@context': 'https://schema.org', '@type': 'FAQPage',
|
|
27
|
+
mainEntity: faqData.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
|
|
28
|
+
};
|
|
29
|
+
const howToSchema: WithContext<HowTo> = {
|
|
30
|
+
'@context': 'https://schema.org', '@type': 'HowTo', name: title, description,
|
|
31
|
+
step: howToData.map((step) => ({ '@type': 'HowToStep', name: step.name, text: step.text })),
|
|
32
|
+
};
|
|
33
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
34
|
+
'@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description,
|
|
35
|
+
applicationCategory: 'UtilityApplication', operatingSystem: 'All',
|
|
36
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' }, inLanguage: 'pt',
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const content: ToolLocaleContent<AcTonnageCalculatorUI> = {
|
|
40
|
+
slug, title, description, faq: faqData, bibliography, howTo: howToData,
|
|
41
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
42
|
+
seo: [
|
|
43
|
+
{ type: 'title', text: 'Qual tamanho de ar condicionado preciso?', level: 2 },
|
|
44
|
+
{ type: 'paragraph', html: 'O tamanho certo depende da área, pé-direito, pessoas e sol. Use esta calculadora para BTUs, frigorias e toneladas exatos.' },
|
|
45
|
+
{ type: 'table', headers: ['Área', 'BTU recomendado', 'Tonelagem', 'Uso típico'], rows: [['10 m² (quarto pequeno)', '6.000 - 7.000 BTU', '0,5 - 0,75 t', 'Quarto de hóspedes'], ['15 m² (quarto)', '9.000 - 10.000 BTU', '0,75 - 1 t', 'Quarto principal'], ['20 m² (sala)', '12.000 - 14.000 BTU', '1 - 1,25 t', 'Sala pequena'], ['30 m² (planta aberta)', '18.000 - 21.000 BTU', '1,5 - 1,75 t', 'Estúdio'], ['40 m² (sala grande)', '24.000 - 28.000 BTU', '2 - 2,5 t', 'Sala grande + jantar']] },
|
|
46
|
+
{ type: 'title', text: 'Por que errar o tamanho custa dinheiro', level: 2 },
|
|
47
|
+
{ type: 'paragraph', html: 'Um ar condicionado subdimensionado funciona sem parar, nunca atinge a temperatura e desgasta o compressor. Um superdimensionado sopra ar frio em rajadas curtas e deixa o ambiente úmido.' },
|
|
48
|
+
{ type: 'stats', items: [{ value: '600', label: 'BTU por m² base', icon: 'mdi:thermometer' }, { value: '12000', label: 'BTU por tonelada', icon: 'mdi:snowflake' }, { value: '3.968', label: 'BTU por frigoria', icon: 'mdi:calculator' }], columns: 3 },
|
|
49
|
+
],
|
|
50
|
+
ui: {
|
|
51
|
+
labelRoomSize: 'Área do cômodo', labelRoomSizeFt: 'Área', labelCeilingHeight: 'Pé-direito', labelCeilingHeightFt: 'Altura',
|
|
52
|
+
labelPeople: 'Pessoas', labelHeatSources: 'Fontes de calor', labelSunExposure: 'Exposição solar', labelRoomType: 'Tipo de cômodo',
|
|
53
|
+
labelCalculate: 'Calcular', labelResult: 'Resultado', labelBtus: 'BTU/h', labelFrigorias: 'Frigorias', labelTons: 'Toneladas',
|
|
54
|
+
labelRequired: 'Necessário', labelRecommended: 'Recomendado', labelUnitBtu: 'BTU/h', labelUnitFrigorias: 'Frigorias', labelUnitTons: 'Toneladas',
|
|
55
|
+
labelMetric: 'Métrico', labelImperial: 'Imperial', labelRoomCozy: 'Confortável', labelRoomWarm: 'Quente', labelRoomHot: 'Muito quente',
|
|
56
|
+
bdBaseCooling: 'Refrigeração base', bdCeilingHeight: 'Pé-direito', bdPeople: 'Pessoas', bdHeatSources: 'Fontes de calor', bdSunRoom: 'Sol e tipo de cômodo',
|
|
57
|
+
sunLight: 'Leve', sunMedium: 'Média', sunHeavy: 'Forte',
|
|
58
|
+
roomBedroom: 'Quarto', roomLiving: 'Sala de estar', roomKitchen: 'Cozinha', roomOffice: 'Escritório', roomServer: 'Sala de servidores',
|
|
59
|
+
errorRequired: 'Preencha todos os campos',
|
|
60
|
+
},
|
|
61
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { AcTonnageCalculatorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'kalkulyator-moshchnosti-konditsionera';
|
|
7
|
+
const title = 'Калькулятор мощности и тоннажа кондиционера';
|
|
8
|
+
const description =
|
|
9
|
+
'Рассчитайте точный размер кондиционера для вашей комнаты в BTU, фригориях и тоннах. Укажите площадь, высоту потолка, количество людей и источники тепла.';
|
|
10
|
+
|
|
11
|
+
const faqData = [
|
|
12
|
+
{ question: 'Сколько BTU нужно на квадратный метр?', answer: 'Стандартная база - 600 BTU на квадратный метр при высоте потолка 2,5 м в умеренном климате. Она увеличивается с высотой, солнцем и количеством людей.' },
|
|
13
|
+
{ question: 'Что такое фригория?', answer: 'Фригория - старая единица охлаждения, распространённая в Испании и Латинской Америке. Одна фригория равна примерно 3,968 BTU в час.' },
|
|
14
|
+
{ question: 'Как перевести BTU в тонны?', answer: 'Одна тонна охлаждения равна 12 000 BTU в час. Разделите общее количество BTU на 12 000.' },
|
|
15
|
+
{ question: 'Влияет ли высота потолка?', answer: 'Да. Каждый метр выше 2,7 м увеличивает потребность в охлаждении примерно на 8%.' },
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
const howToData = [
|
|
19
|
+
{ name: 'Измерьте комнату', text: 'Измерьте длину и ширину в метрах и перемножьте, чтобы получить площадь.' },
|
|
20
|
+
{ name: 'Учтите людей и приборы', text: 'Добавьте количество людей и источники тепла, такие как компьютеры и телевизоры.' },
|
|
21
|
+
{ name: 'Выберите освещённость', text: 'Выберите лёгкую, среднюю или сильную в зависимости от прямого солнечного света.' },
|
|
22
|
+
{ name: 'Получите рекомендацию', text: 'Калькулятор покажет BTU, фригории и тонны для любого рынка.' },
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
26
|
+
'@context': 'https://schema.org', '@type': 'FAQPage',
|
|
27
|
+
mainEntity: faqData.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
|
|
28
|
+
};
|
|
29
|
+
const howToSchema: WithContext<HowTo> = {
|
|
30
|
+
'@context': 'https://schema.org', '@type': 'HowTo', name: title, description,
|
|
31
|
+
step: howToData.map((step) => ({ '@type': 'HowToStep', name: step.name, text: step.text })),
|
|
32
|
+
};
|
|
33
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
34
|
+
'@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description,
|
|
35
|
+
applicationCategory: 'UtilityApplication', operatingSystem: 'All',
|
|
36
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' }, inLanguage: 'ru',
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const content: ToolLocaleContent<AcTonnageCalculatorUI> = {
|
|
40
|
+
slug, title, description, faq: faqData, bibliography, howTo: howToData,
|
|
41
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
42
|
+
seo: [
|
|
43
|
+
{ type: 'title', text: 'Какой размер кондиционера мне нужен?', level: 2 },
|
|
44
|
+
{ type: 'paragraph', html: 'Правильный размер зависит от площади, высоты потолка, количества людей и солнечного света. Используйте этот калькулятор для точных BTU, фригорий и тонн.' },
|
|
45
|
+
{ type: 'table', headers: ['Площадь', 'Рекомендуемые BTU', 'Тоннаж', 'Типичное использование'], rows: [['10 м² (маленькая спальня)', '6 000 - 7 000 BTU', '0,5 - 0,75 т', 'Гостевая комната'], ['15 м² (спальня)', '9 000 - 10 000 BTU', '0,75 - 1 т', 'Главная спальня'], ['20 м² (гостиная)', '12 000 - 14 000 BTU', '1 - 1,25 т', 'Маленькая гостиная'], ['30 м² (открытая планировка)', '18 000 - 21 000 BTU', '1,5 - 1,75 т', 'Студия'], ['40 м² (большая гостиная)', '24 000 - 28 000 BTU', '2 - 2,5 т', 'Большая гостиная + столовая']] },
|
|
46
|
+
{ type: 'title', text: 'Почему неправильный размер стоит денег', level: 2 },
|
|
47
|
+
{ type: 'paragraph', html: 'Слишком маленький кондиционер работает без остановки, никогда не достигает нужной температуры и преждевременно изнашивает компрессор. Слишком большой выбрасывает холодный воздух короткими порывами и оставляет комнату влажной.' },
|
|
48
|
+
{ type: 'stats', items: [{ value: '600', label: 'BTU на м² база', icon: 'mdi:thermometer' }, { value: '12000', label: 'BTU на тонну', icon: 'mdi:snowflake' }, { value: '3.968', label: 'BTU на фригорию', icon: 'mdi:calculator' }], columns: 3 },
|
|
49
|
+
],
|
|
50
|
+
ui: {
|
|
51
|
+
labelRoomSize: 'Площадь комнаты', labelRoomSizeFt: 'Площадь', labelCeilingHeight: 'Высота потолка', labelCeilingHeightFt: 'Высота',
|
|
52
|
+
labelPeople: 'Люди', labelHeatSources: 'Источники тепла', labelSunExposure: 'Освещённость', labelRoomType: 'Тип комнаты',
|
|
53
|
+
labelCalculate: 'Рассчитать', labelResult: 'Результат', labelBtus: 'BTU/ч', labelFrigorias: 'Фригории', labelTons: 'Тонны',
|
|
54
|
+
labelRequired: 'Требуется', labelRecommended: 'Рекомендуется', labelUnitBtu: 'BTU/ч', labelUnitFrigorias: 'Фригории', labelUnitTons: 'Тонны',
|
|
55
|
+
labelMetric: 'Метрическая', labelImperial: 'Имперская', labelRoomCozy: 'Уютно', labelRoomWarm: 'Тепло', labelRoomHot: 'Жарко',
|
|
56
|
+
bdBaseCooling: 'Базовое охлаждение', bdCeilingHeight: 'Высота потолка', bdPeople: 'Люди', bdHeatSources: 'Источники тепла', bdSunRoom: 'Солнце и тип комнаты',
|
|
57
|
+
sunLight: 'Лёгкая', sunMedium: 'Средняя', sunHeavy: 'Сильная',
|
|
58
|
+
roomBedroom: 'Спальня', roomLiving: 'Гостиная', roomKitchen: 'Кухня', roomOffice: 'Офис', roomServer: 'Серверная',
|
|
59
|
+
errorRequired: 'Заполните все поля',
|
|
60
|
+
},
|
|
61
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { AcTonnageCalculatorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'tonnage-kalkylator-luftkonditionering';
|
|
7
|
+
const title = 'Tonnage och Kylkapacitetskalkylator för Luftkonditionering';
|
|
8
|
+
const description =
|
|
9
|
+
'Beräkna exakt luftkonditioneringsstorlek för ditt rum i BTU, frigorier och ton. Ange rumsstorlek, takhöjd, personer och värmekällor.';
|
|
10
|
+
|
|
11
|
+
const faqData = [
|
|
12
|
+
{ question: 'Hur många BTU per kvadratmeter?', answer: 'Standardbasen är 600 BTU per kvadratmeter för ett tak på 2,5 m i tempererat klimat. Det ökar med höjd, sol och personer.' },
|
|
13
|
+
{ question: 'Vad är en frigorie?', answer: 'En frigorie är en äldre kylenhet som används i Spanien och Latinamerika. En frigorie är ungefär 3,968 BTU per timme.' },
|
|
14
|
+
{ question: 'Hur konverterar jag BTU till ton?', answer: 'Ett kylton är 12 000 BTU per timme. Dela totala BTU med 12 000 för tonnage.' },
|
|
15
|
+
{ question: 'Påverkar takhöjden?', answer: 'Ja. Varje meter över 2,7 m ökar kylbehovet med cirka 8%.' },
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
const howToData = [
|
|
19
|
+
{ name: 'Mät ditt rum', text: 'Mät längd och bredd i meter och multiplicera för att få arean.' },
|
|
20
|
+
{ name: 'Räkna personer och enheter', text: 'Lägg till personer och värmekällor som datorer och TV-apparater.' },
|
|
21
|
+
{ name: 'Välj soleksponering', text: 'Välj lätt, medel eller kraftig baserat på direkt solljus.' },
|
|
22
|
+
{ name: 'Läs rekommendationen', text: 'Kalkylatorn visar BTU, frigorier och ton för alla marknader.' },
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
26
|
+
'@context': 'https://schema.org', '@type': 'FAQPage',
|
|
27
|
+
mainEntity: faqData.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
|
|
28
|
+
};
|
|
29
|
+
const howToSchema: WithContext<HowTo> = {
|
|
30
|
+
'@context': 'https://schema.org', '@type': 'HowTo', name: title, description,
|
|
31
|
+
step: howToData.map((step) => ({ '@type': 'HowToStep', name: step.name, text: step.text })),
|
|
32
|
+
};
|
|
33
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
34
|
+
'@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description,
|
|
35
|
+
applicationCategory: 'UtilityApplication', operatingSystem: 'All',
|
|
36
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' }, inLanguage: 'sv',
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const content: ToolLocaleContent<AcTonnageCalculatorUI> = {
|
|
40
|
+
slug, title, description, faq: faqData, bibliography, howTo: howToData,
|
|
41
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
42
|
+
seo: [
|
|
43
|
+
{ type: 'title', text: 'Vilken luftkonditioneringsstorlek behöver jag?', level: 2 },
|
|
44
|
+
{ type: 'paragraph', html: 'Rätt storlek beror på area, takhöjd, personer och sol. Använd denna kalkylator för exakta BTU, frigorier och ton.' },
|
|
45
|
+
{ type: 'table', headers: ['Area', 'Rekommenderade BTU', 'Tonnage', 'Typisk användning'], rows: [['10 m² (litet sovrum)', '6 000 - 7 000 BTU', '0,5 - 0,75 t', 'Gästrum'], ['15 m² (sovrum)', '9 000 - 10 000 BTU', '0,75 - 1 t', 'Huvudsovrum'], ['20 m² (vardagsrum)', '12 000 - 14 000 BTU', '1 - 1,25 t', 'Litet vardagsrum'], ['30 m² (öppen planlösning)', '18 000 - 21 000 BTU', '1,5 - 1,75 t', 'Studio'], ['40 m² (stort vardagsrum)', '24 000 - 28 000 BTU', '2 - 2,5 t', 'Stort vardagsrum + matsal']] },
|
|
46
|
+
{ type: 'title', text: 'Varför fel storlek kostar pengar', level: 2 },
|
|
47
|
+
{ type: 'paragraph', html: 'En för liten AC kör oavbrutet, når aldrig temperaturen och sliter ut kompressorn i förtid. En för stor blåser korta kalla luftstötar och lämnar rummet fuktigt.' },
|
|
48
|
+
{ type: 'stats', items: [{ value: '600', label: 'BTU per m² bas', icon: 'mdi:thermometer' }, { value: '12000', label: 'BTU per ton', icon: 'mdi:snowflake' }, { value: '3.968', label: 'BTU per frigorie', icon: 'mdi:calculator' }], columns: 3 },
|
|
49
|
+
],
|
|
50
|
+
ui: {
|
|
51
|
+
labelRoomSize: 'Rumsarea', labelRoomSizeFt: 'Area', labelCeilingHeight: 'Takhöjd', labelCeilingHeightFt: 'Höjd',
|
|
52
|
+
labelPeople: 'Personer', labelHeatSources: 'Värmekällor', labelSunExposure: 'Solexponering', labelRoomType: 'Rumstyp',
|
|
53
|
+
labelCalculate: 'Beräkna', labelResult: 'Resultat', labelBtus: 'BTU/h', labelFrigorias: 'Frigorier', labelTons: 'Ton',
|
|
54
|
+
labelRequired: 'Krävs', labelRecommended: 'Rekommenderas', labelUnitBtu: 'BTU/h', labelUnitFrigorias: 'Frigorier', labelUnitTons: 'Ton',
|
|
55
|
+
labelMetric: 'Metrisk', labelImperial: 'Imperial', labelRoomCozy: 'Mysigt', labelRoomWarm: 'Varmt', labelRoomHot: 'Het',
|
|
56
|
+
bdBaseCooling: 'Grundkylning', bdCeilingHeight: 'Takhöjd', bdPeople: 'Personer', bdHeatSources: 'Värmekällor', bdSunRoom: 'Sol & rumstyp',
|
|
57
|
+
sunLight: 'Lätt', sunMedium: 'Mellan', sunHeavy: 'Kraftig',
|
|
58
|
+
roomBedroom: 'Sovrum', roomLiving: 'Vardagsrum', roomKitchen: 'Kök', roomOffice: 'Kontor', roomServer: 'Serverrum',
|
|
59
|
+
errorRequired: 'Fyll i alla fält',
|
|
60
|
+
},
|
|
61
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { AcTonnageCalculatorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'klima-tonaj-hesaplama';
|
|
7
|
+
const title = 'Klima Tonaj ve Soğutma Kapasitesi Hesaplayıcı';
|
|
8
|
+
const description =
|
|
9
|
+
'Odanız için gereken tam klima boyutunu BTU, frigori ve ton cinsinden hesaplayın. Oda büyüklüğü, tavan yüksekliği, kişi sayısı ve ısı kaynaklarını girin.';
|
|
10
|
+
|
|
11
|
+
const faqData = [
|
|
12
|
+
{ question: 'Metrekare başına kaç BTU gerekir?', answer: 'Ilıman iklimde 2,5 m tavan için standart baz 600 BTU/m²\'dir. Yükseklik, güneş ve kişi sayısıyla artar.' },
|
|
13
|
+
{ question: 'Frigori nedir?', answer: 'Frigori, İspanya ve Latin Amerika\'da kullanılan eski bir soğutma birimidir. Bir frigori yaklaşık 3,968 BTU/saat\'tir.' },
|
|
14
|
+
{ question: 'BTU\'yu ton\'a nasıl çeviririm?', answer: 'Bir soğutma tonu 12.000 BTU/saat\'tir. Toplam BTU\'yu 12.000\'e bölün.' },
|
|
15
|
+
{ question: 'Tavan yüksekliği önemli mi?', answer: 'Evet. 2,7 m\'nin üzerindeki her metre, soğutma ihtiyacını yaklaşık %8 artırır.' },
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
const howToData = [
|
|
19
|
+
{ name: 'Odanızı ölçün', text: 'Uzunluk ve genişliği metre cinsinden ölçün ve alanı bulmak için çarpın.' },
|
|
20
|
+
{ name: 'Kişileri ve cihazları sayın', text: 'Kişi sayısını ve bilgisayar, TV gibi ısı kaynaklarını ekleyin.' },
|
|
21
|
+
{ name: 'Güneş maruziyetini seçin', text: 'Doğrudan güneş ışığına göre hafif, orta veya yoğun seçin.' },
|
|
22
|
+
{ name: 'Öneriyi okuyun', text: 'Hesaplayıcı, her pazar için BTU, frigori ve ton cinsinden sonuç gösterir.' },
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
26
|
+
'@context': 'https://schema.org', '@type': 'FAQPage',
|
|
27
|
+
mainEntity: faqData.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
|
|
28
|
+
};
|
|
29
|
+
const howToSchema: WithContext<HowTo> = {
|
|
30
|
+
'@context': 'https://schema.org', '@type': 'HowTo', name: title, description,
|
|
31
|
+
step: howToData.map((step) => ({ '@type': 'HowToStep', name: step.name, text: step.text })),
|
|
32
|
+
};
|
|
33
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
34
|
+
'@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description,
|
|
35
|
+
applicationCategory: 'UtilityApplication', operatingSystem: 'All',
|
|
36
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' }, inLanguage: 'tr',
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const content: ToolLocaleContent<AcTonnageCalculatorUI> = {
|
|
40
|
+
slug, title, description, faq: faqData, bibliography, howTo: howToData,
|
|
41
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
42
|
+
seo: [
|
|
43
|
+
{ type: 'title', text: 'Ne boyutta klima ihtiyacım var?', level: 2 },
|
|
44
|
+
{ type: 'paragraph', html: 'Doğru boyut, alan, tavan yüksekliği, kişi sayısı ve güneşe bağlıdır. Kesin BTU, frigori ve ton için bu hesaplayıcıyı kullanın.' },
|
|
45
|
+
{ type: 'table', headers: ['Alan', 'Önerilen BTU', 'Tonaj', 'Tipik kullanım'], rows: [['10 m² (küçük yatak odası)', '6.000 - 7.000 BTU', '0,5 - 0,75 t', 'Misafir odası'], ['15 m² (yatak odası)', '9.000 - 10.000 BTU', '0,75 - 1 t', 'Ana yatak odası'], ['20 m² (oturma odası)', '12.000 - 14.000 BTU', '1 - 1,25 t', 'Küçük oturma odası'], ['30 m² (açık plan)', '18.000 - 21.000 BTU', '1,5 - 1,75 t', 'Stüdyo'], ['40 m² (büyük salon)', '24.000 - 28.000 BTU', '2 - 2,5 t', 'Büyük salon + yemek odası']] },
|
|
46
|
+
{ type: 'title', text: 'Yanlış boyut neden para kaybettirir?', level: 2 },
|
|
47
|
+
{ type: 'paragraph', html: 'Çok küçük bir klima sürekli çalışır, sıcaklığa asla ulaşamaz ve kompresörü erken yıpratır. Çok büyük bir klima kısa soğuk hava patlamaları yapar ve odayı nemli bırakır.' },
|
|
48
|
+
{ type: 'stats', items: [{ value: '600', label: 'm² başına BTU baz', icon: 'mdi:thermometer' }, { value: '12000', label: 'Ton başına BTU', icon: 'mdi:snowflake' }, { value: '3.968', label: 'Frigori başına BTU', icon: 'mdi:calculator' }], columns: 3 },
|
|
49
|
+
],
|
|
50
|
+
ui: {
|
|
51
|
+
labelRoomSize: 'Oda alanı', labelRoomSizeFt: 'Alan', labelCeilingHeight: 'Tavan yüksekliği', labelCeilingHeightFt: 'Yükseklik',
|
|
52
|
+
labelPeople: 'Kişi sayısı', labelHeatSources: 'Isı kaynakları', labelSunExposure: 'Güneş maruziyeti', labelRoomType: 'Oda tipi',
|
|
53
|
+
labelCalculate: 'Hesapla', labelResult: 'Sonuç', labelBtus: 'BTU/saat', labelFrigorias: 'Frigori', labelTons: 'Ton',
|
|
54
|
+
labelRequired: 'Gerekli', labelRecommended: 'Önerilen', labelUnitBtu: 'BTU/saat', labelUnitFrigorias: 'Frigori', labelUnitTons: 'Ton',
|
|
55
|
+
labelMetric: 'Metrik', labelImperial: 'Imperial', labelRoomCozy: 'Rahat', labelRoomWarm: 'Sıcak', labelRoomHot: 'Çok sıcak',
|
|
56
|
+
bdBaseCooling: 'Temel soğutma', bdCeilingHeight: 'Tavan yüksekliği', bdPeople: 'Kişi', bdHeatSources: 'Isı kaynakları', bdSunRoom: 'Güneş & oda tipi',
|
|
57
|
+
sunLight: 'Hafif', sunMedium: 'Orta', sunHeavy: 'Yoğun',
|
|
58
|
+
roomBedroom: 'Yatak odası', roomLiving: 'Oturma odası', roomKitchen: 'Mutfak', roomOffice: 'Ofis', roomServer: 'Sunucu odası',
|
|
59
|
+
errorRequired: 'Lütfen tüm alanları doldurun',
|
|
60
|
+
},
|
|
61
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { AcTonnageCalculatorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'ac-tonnage-calculator';
|
|
7
|
+
const title = '空调吨位和制冷能力计算器';
|
|
8
|
+
const description =
|
|
9
|
+
'以BTU、 frigorías和吨为单位计算您房间所需的确切空调尺寸。输入房间面积、天花板高度、人数和热源。';
|
|
10
|
+
|
|
11
|
+
const faqData = [
|
|
12
|
+
{ question: '每平方米需要多少BTU?', answer: '在温带气候下,2.5米天花板的基准是每平方米600 BTU。随着天花板高度、日照和人数增加。' },
|
|
13
|
+
{ question: '什么是 frigoría?', answer: 'Frigoría是西班牙和拉丁美洲使用的旧式制冷单位。1 frigoría约等于3.968 BTU/小时。' },
|
|
14
|
+
{ question: '如何将BTU转换为吨?', answer: '1制冷吨等于12,000 BTU/小时。将总BTU除以12,000即可得到吨位。' },
|
|
15
|
+
{ question: '天花板高度有影响吗?', answer: '是的。超过2.7米的每米,制冷需求增加约8%。' },
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
const howToData = [
|
|
19
|
+
{ name: '测量房间', text: '以米为单位测量长度和宽度,相乘得到面积。' },
|
|
20
|
+
{ name: '统计人数和设备', text: '添加定期使用房间的人数和电脑、电视等热源。' },
|
|
21
|
+
{ name: '选择日照强度', text: '根据直射阳光量选择轻度、中度或重度。' },
|
|
22
|
+
{ name: '查看推荐', text: '计算器显示BTU、frigorías和吨,方便在任何市场购买。' },
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
26
|
+
'@context': 'https://schema.org', '@type': 'FAQPage',
|
|
27
|
+
mainEntity: faqData.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
|
|
28
|
+
};
|
|
29
|
+
const howToSchema: WithContext<HowTo> = {
|
|
30
|
+
'@context': 'https://schema.org', '@type': 'HowTo', name: title, description,
|
|
31
|
+
step: howToData.map((step) => ({ '@type': 'HowToStep', name: step.name, text: step.text })),
|
|
32
|
+
};
|
|
33
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
34
|
+
'@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description,
|
|
35
|
+
applicationCategory: 'UtilityApplication', operatingSystem: 'All',
|
|
36
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' }, inLanguage: 'zh',
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const content: ToolLocaleContent<AcTonnageCalculatorUI> = {
|
|
40
|
+
slug, title, description, faq: faqData, bibliography, howTo: howToData,
|
|
41
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
42
|
+
seo: [
|
|
43
|
+
{ type: 'title', text: '我需要多大尺寸的空调?', level: 2 },
|
|
44
|
+
{ type: 'paragraph', html: '正确的尺寸取决于面积、天花板高度、人数和日照。使用此计算器获取准确的BTU、frigorías和吨位。' },
|
|
45
|
+
{ type: 'table', headers: ['面积', '推荐BTU', '吨位', '典型用途'], rows: [['10 m²(小卧室)', '6,000 - 7,000 BTU', '0.5 - 0.75 t', '客房'], ['15 m²(卧室)', '9,000 - 10,000 BTU', '0.75 - 1 t', '主卧室'], ['20 m²(客厅)', '12,000 - 14,000 BTU', '1 - 1.25 t', '小客厅'], ['30 m²(开放式)', '18,000 - 21,000 BTU', '1.5 - 1.75 t', '工作室'], ['40 m²(大客厅)', '24,000 - 28,000 BTU', '2 - 2.5 t', '大客厅+餐厅']] },
|
|
46
|
+
{ type: 'title', text: '为什么尺寸错误会浪费钱', level: 2 },
|
|
47
|
+
{ type: 'paragraph', html: '过小的空调持续运行,永远达不到设定温度,并提前磨损压缩机。过大的空调短促吹出冷风,让房间又冷又湿。' },
|
|
48
|
+
{ type: 'stats', items: [{ value: '600', label: '每m²基准BTU', icon: 'mdi:thermometer' }, { value: '12000', label: '每吨BTU', icon: 'mdi:snowflake' }, { value: '3.968', label: '每frigoría的BTU', icon: 'mdi:calculator' }], columns: 3 },
|
|
49
|
+
],
|
|
50
|
+
ui: {
|
|
51
|
+
labelRoomSize: '房间面积', labelRoomSizeFt: '面积', labelCeilingHeight: '天花板高度', labelCeilingHeightFt: '高度',
|
|
52
|
+
labelPeople: '人数', labelHeatSources: '热源', labelSunExposure: '日照强度', labelRoomType: '房间类型',
|
|
53
|
+
labelCalculate: '计算', labelResult: '结果', labelBtus: 'BTU/小时', labelFrigorias: 'Frigorías', labelTons: '吨',
|
|
54
|
+
labelRequired: '需要', labelRecommended: '推荐', labelUnitBtu: 'BTU/小时', labelUnitFrigorias: 'Frigorías', labelUnitTons: '吨',
|
|
55
|
+
labelMetric: '公制', labelImperial: '英制', labelRoomCozy: '舒适', labelRoomWarm: '温暖', labelRoomHot: '炎热',
|
|
56
|
+
bdBaseCooling: '基础制冷', bdCeilingHeight: '天花板高度', bdPeople: '人数', bdHeatSources: '热源', bdSunRoom: '日照和房间类型',
|
|
57
|
+
sunLight: '轻度', sunMedium: '中度', sunHeavy: '重度',
|
|
58
|
+
roomBedroom: '卧室', roomLiving: '客厅', roomKitchen: '厨房', roomOffice: '办公室', roomServer: '服务器机房',
|
|
59
|
+
errorRequired: '请填写所有字段',
|
|
60
|
+
},
|
|
61
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { acTonnageCalculator } from './entry';
|
|
2
|
+
export * from './entry';
|
|
3
|
+
export const AC_TONNAGE_CALCULATOR_TOOL: ToolDefinition = {
|
|
4
|
+
entry: acTonnageCalculator,
|
|
5
|
+
Component: () => import('./component.astro'),
|
|
6
|
+
SEOComponent: () => import('./seo.astro'),
|
|
7
|
+
BibliographyComponent: () => import('./bibliography.astro'),
|
|
8
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export interface AcInput {
|
|
2
|
+
area: number;
|
|
3
|
+
ceilingHeight: number;
|
|
4
|
+
people: number;
|
|
5
|
+
heatSources: number;
|
|
6
|
+
sunExposure: 'light' | 'medium' | 'heavy';
|
|
7
|
+
roomType: 'bedroom' | 'living' | 'kitchen' | 'office' | 'server';
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface AcResult {
|
|
11
|
+
btu: number;
|
|
12
|
+
frigorias: number;
|
|
13
|
+
tons: number;
|
|
14
|
+
breakdown: { key: string; value: number }[];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const BASE_BTU_PER_SQ_M = 600;
|
|
18
|
+
|
|
19
|
+
const SUN_MULT: Record<string, number> = {
|
|
20
|
+
light: 1,
|
|
21
|
+
medium: 1.15,
|
|
22
|
+
heavy: 1.35,
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const ROOM_MULT: Record<string, number> = {
|
|
26
|
+
bedroom: 1,
|
|
27
|
+
living: 1.1,
|
|
28
|
+
kitchen: 1.25,
|
|
29
|
+
office: 1.15,
|
|
30
|
+
server: 1.6,
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export function calculateAcTonnage(input: AcInput): AcResult {
|
|
34
|
+
const areaFactor = input.area * BASE_BTU_PER_SQ_M;
|
|
35
|
+
const heightFactor = input.ceilingHeight > 2.7 ? 1 + (input.ceilingHeight - 2.7) * 0.08 : 1;
|
|
36
|
+
const peopleFactor = input.people * 500;
|
|
37
|
+
const heatFactor = input.heatSources * 400;
|
|
38
|
+
|
|
39
|
+
const rawBtu = (areaFactor * heightFactor * SUN_MULT[input.sunExposure] * ROOM_MULT[input.roomType]) + peopleFactor + heatFactor;
|
|
40
|
+
const btu = Math.round(rawBtu / 1000) * 1000;
|
|
41
|
+
const frigorias = Math.round(btu / 3.968 / 100) * 100;
|
|
42
|
+
const tons = Math.round((btu / 12000) * 10) / 10;
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
btu,
|
|
46
|
+
frigorias,
|
|
47
|
+
tons,
|
|
48
|
+
breakdown: [
|
|
49
|
+
{ key: 'baseCooling', value: Math.round(areaFactor) },
|
|
50
|
+
{ key: 'ceilingHeight', value: Math.round(areaFactor * (heightFactor - 1)) },
|
|
51
|
+
{ key: 'people', value: peopleFactor },
|
|
52
|
+
{ key: 'heatSources', value: heatFactor },
|
|
53
|
+
{ key: 'sunRoom', value: Math.round(rawBtu - areaFactor - peopleFactor - heatFactor - (areaFactor * (heightFactor - 1))) },
|
|
54
|
+
],
|
|
55
|
+
};
|
|
56
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { acTonnageCalculator } from './index';
|
|
4
|
+
import type { KnownLocale } from '../../types';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
locale?: KnownLocale;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { locale = 'es' } = Astro.props;
|
|
11
|
+
const content = await acTonnageCalculator.i18n[locale]?.();
|
|
12
|
+
if (!content) return null;
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
{content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export interface AcTonnageCalculatorUI extends Record<string, string> {
|
|
2
|
+
labelRoomSize: string;
|
|
3
|
+
labelRoomSizeFt: string;
|
|
4
|
+
labelCeilingHeight: string;
|
|
5
|
+
labelCeilingHeightFt: string;
|
|
6
|
+
labelPeople: string;
|
|
7
|
+
labelHeatSources: string;
|
|
8
|
+
labelSunExposure: string;
|
|
9
|
+
labelRoomType: string;
|
|
10
|
+
labelCalculate: string;
|
|
11
|
+
labelResult: string;
|
|
12
|
+
labelBtus: string;
|
|
13
|
+
labelFrigorias: string;
|
|
14
|
+
labelTons: string;
|
|
15
|
+
labelRequired: string;
|
|
16
|
+
labelRecommended: string;
|
|
17
|
+
labelUnitBtu: string;
|
|
18
|
+
labelUnitFrigorias: string;
|
|
19
|
+
labelUnitTons: string;
|
|
20
|
+
labelMetric: string;
|
|
21
|
+
labelImperial: string;
|
|
22
|
+
labelRoomCozy: string;
|
|
23
|
+
labelRoomWarm: string;
|
|
24
|
+
labelRoomHot: string;
|
|
25
|
+
bdBaseCooling: string;
|
|
26
|
+
bdCeilingHeight: string;
|
|
27
|
+
bdPeople: string;
|
|
28
|
+
bdHeatSources: string;
|
|
29
|
+
bdSunRoom: string;
|
|
30
|
+
sunLight: string;
|
|
31
|
+
sunMedium: string;
|
|
32
|
+
sunHeavy: string;
|
|
33
|
+
roomBedroom: string;
|
|
34
|
+
roomLiving: string;
|
|
35
|
+
roomKitchen: string;
|
|
36
|
+
roomOffice: string;
|
|
37
|
+
roomServer: string;
|
|
38
|
+
errorRequired: string;
|
|
39
|
+
}
|
package/src/tools.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { LED_SAVING_CALCULATOR_TOOL } from './tool/ledSavingCalculator/index';
|
|
|
8
8
|
import { TARIFF_COMPARATOR_TOOL } from './tool/tariffComparator/index';
|
|
9
9
|
import { HEATING_COMPARATOR_TOOL } from './tool/heatingComparator/index';
|
|
10
10
|
import { WIFI_RANGE_SIMULATOR_TOOL } from './tool/wifiRangeSimulator/index';
|
|
11
|
+
import { AC_TONNAGE_CALCULATOR_TOOL } from './tool/acTonnageCalculator/index';
|
|
11
12
|
|
|
12
13
|
export const ALL_TOOLS: ToolDefinition[] = [
|
|
13
14
|
QR_GENERATOR_TOOL,
|
|
@@ -18,5 +19,6 @@ export const ALL_TOOLS: ToolDefinition[] = [
|
|
|
18
19
|
TARIFF_COMPARATOR_TOOL,
|
|
19
20
|
HEATING_COMPARATOR_TOOL,
|
|
20
21
|
WIFI_RANGE_SIMULATOR_TOOL,
|
|
22
|
+
AC_TONNAGE_CALCULATOR_TOOL,
|
|
21
23
|
];
|
|
22
24
|
|