@jjlmoya/utils-nature 1.22.0 → 1.24.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 +2 -2
- package/src/category/i18n/es.ts +1 -1
- package/src/category/i18n/fr.ts +110 -110
- package/src/category/i18n/it.ts +1 -1
- package/src/category/i18n/pl.ts +1 -1
- package/src/category/i18n/pt.ts +1 -1
- package/src/category/i18n/ru.ts +110 -110
- package/src/category/seo.astro +1 -1
- package/src/components/PreviewNavSidebar.astro +1 -1
- package/src/components/PreviewToolbar.astro +1 -1
- package/src/data.ts +1 -1
- package/src/env.d.ts +1 -1
- package/src/layouts/PreviewLayout.astro +117 -117
- package/src/pages/[locale]/[slug].astro +164 -164
- package/src/pages/index.astro +1 -1
- package/src/tests/bibliography_wellformed_export.test.ts +46 -0
- package/src/tests/category_seo_quality.test.ts +74 -0
- package/src/tests/faq_count.test.ts +19 -19
- package/src/tests/mocks/astro_mock.js +1 -1
- package/src/tests/no_en_dash.test.ts +71 -71
- package/src/tests/no_h1_in_components.test.ts +1 -1
- package/src/tests/seo_length.test.ts +23 -23
- package/src/tests/seo_parity.test.ts +2 -2
- package/src/tests/seo_wellformed_export.test.ts +65 -0
- package/src/tests/spanish_leakage.test.ts +175 -175
- package/src/tool/compostBinVolumeRatioCalculator/bibliography.astro +2 -14
- package/src/tool/compostBinVolumeRatioCalculator/seo.astro +6 -14
- package/src/tool/cricketThermometer/i18n/de.ts +169 -169
- package/src/tool/cricketThermometer/i18n/en.ts +169 -169
- package/src/tool/cricketThermometer/i18n/es.ts +169 -169
- package/src/tool/cricketThermometer/i18n/fr.ts +169 -169
- package/src/tool/cricketThermometer/i18n/id.ts +169 -169
- package/src/tool/cricketThermometer/i18n/it.ts +169 -169
- package/src/tool/cricketThermometer/i18n/ja.ts +169 -169
- package/src/tool/cricketThermometer/i18n/ko.ts +169 -169
- package/src/tool/cricketThermometer/i18n/nl.ts +169 -169
- package/src/tool/cricketThermometer/i18n/pl.ts +169 -169
- package/src/tool/cricketThermometer/i18n/pt.ts +169 -169
- package/src/tool/cricketThermometer/i18n/ru.ts +169 -169
- package/src/tool/cricketThermometer/i18n/sv.ts +169 -169
- package/src/tool/cricketThermometer/i18n/tr.ts +169 -169
- package/src/tool/cricketThermometer/i18n/zh.ts +169 -169
- package/src/tool/cricketThermometer/seo.astro +15 -15
- package/src/tool/digitalCarbon/i18n/de.ts +229 -229
- package/src/tool/digitalCarbon/i18n/fr.ts +229 -229
- package/src/tool/digitalCarbon/i18n/ru.ts +229 -229
- package/src/tool/digitalCarbon/seo.astro +15 -15
- package/src/tool/rainHarvester/i18n/de.ts +167 -167
- package/src/tool/rainHarvester/i18n/en.ts +167 -167
- package/src/tool/rainHarvester/i18n/es.ts +167 -167
- package/src/tool/rainHarvester/i18n/fr.ts +167 -167
- package/src/tool/rainHarvester/i18n/id.ts +167 -167
- package/src/tool/rainHarvester/i18n/it.ts +167 -167
- package/src/tool/rainHarvester/i18n/ja.ts +167 -167
- package/src/tool/rainHarvester/i18n/ko.ts +167 -167
- package/src/tool/rainHarvester/i18n/nl.ts +167 -167
- package/src/tool/rainHarvester/i18n/pl.ts +167 -167
- package/src/tool/rainHarvester/i18n/pt.ts +167 -167
- package/src/tool/rainHarvester/i18n/ru.ts +167 -167
- package/src/tool/rainHarvester/i18n/sv.ts +167 -167
- package/src/tool/rainHarvester/i18n/tr.ts +167 -167
- package/src/tool/rainHarvester/i18n/zh.ts +167 -167
- package/src/tool/rainHarvester/seo.astro +15 -15
- package/src/tool/seedCalculator/i18n/fr.ts +197 -197
- package/src/tool/seedCalculator/i18n/pl.ts +197 -197
- package/src/tool/seedCalculator/i18n/ru.ts +197 -197
- package/src/tool/seedCalculator/seo.astro +15 -15
- package/src/types.ts +1 -1
|
@@ -1,229 +1,229 @@
|
|
|
1
|
-
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
-
import { bibliography } from '../bibliography';
|
|
3
|
-
import type { DigitalCarbonLocaleContent } from '../index';
|
|
4
|
-
|
|
5
|
-
const slug = 'kalkulyator-tsifrovogo-uglerodnogo-sleda';
|
|
6
|
-
const title = 'Калькулятор цифрового углеродного следа';
|
|
7
|
-
const description = 'Проанализируйте воздействие любой веб-страницы на окружающую среду. Оцените потребление энергии и выбросы CO₂ за посещение.';
|
|
8
|
-
|
|
9
|
-
const faqData = [
|
|
10
|
-
{
|
|
11
|
-
question: 'Что такое углеродный след веб-сайта?',
|
|
12
|
-
answer: 'Это количество парниковых газов, в первую очередь CO₂, выбрасываемых в атмосферу в результате потребления энергии серверами, сетями передачи данных и устройством пользователя для загрузки и отображения веб-страницы.',
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
question: 'Как измеряется воздействие веб-сайта?',
|
|
16
|
-
answer: 'Обычно оно измеряется в граммах эквивалента CO₂ (gCO₂e) за посещение. Эффективный сайт выбрасывает менее 0,2 г CO₂, в то время как неоптимизированная страница может превышать 2 или 3 г за загрузку.',
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
question: 'Почему интернет загрязняет окружающую среду?',
|
|
20
|
-
answer: 'Потому что вся необходимая инфраструктура (дата-центры, подводные кабели, WiFi-роутеры, смартфоны) работает на электричестве, которое в большинстве стран мира все еще производится путем сжигания угля или газа.',
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
question: 'Как я могу уменьшить выбросы CO₂ моего сайта?',
|
|
24
|
-
answer: 'Самый эффективный способ - уменьшить вес страницы: оптимизировать изображения (WebP), минифицировать файлы CSS и JS, использовать ленивую загрузку и выбрать хостинг-провайдера, использующего возобновляемую энергию.',
|
|
25
|
-
},
|
|
26
|
-
];
|
|
27
|
-
|
|
28
|
-
const howToData = [
|
|
29
|
-
{
|
|
30
|
-
name: 'Введите URL',
|
|
31
|
-
text: 'Введите веб-адрес страницы, которую вы хотите проанализировать, в поле ввода.',
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
name: 'Начните анализ',
|
|
35
|
-
text: 'Нажмите кнопку анализа, чтобы наш инструмент оценил вес ресурсов страницы.',
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
name: 'Проверьте свой рейтинг',
|
|
39
|
-
text: 'Получите оценку от A+ до F на основе энергоэффективности анализируемого веб-сайта.',
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
name: 'Примените улучшения',
|
|
43
|
-
text: 'Используйте список персонализированных советов, чтобы уменьшить вес вашего сайта и его воздействие на окружающую среду.',
|
|
44
|
-
},
|
|
45
|
-
];
|
|
46
|
-
|
|
47
|
-
const faqSchema: WithContext<FAQPage> = {
|
|
48
|
-
'@context': 'https://schema.org',
|
|
49
|
-
'@type': 'FAQPage',
|
|
50
|
-
mainEntity: faqData.map((item) => ({
|
|
51
|
-
'@type': 'Question',
|
|
52
|
-
name: item.question,
|
|
53
|
-
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
54
|
-
})),
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
const howToSchema: WithContext<HowTo> = {
|
|
58
|
-
'@context': 'https://schema.org',
|
|
59
|
-
'@type': 'HowTo',
|
|
60
|
-
name: title,
|
|
61
|
-
description,
|
|
62
|
-
step: howToData.map((step, i) => ({
|
|
63
|
-
'@type': 'HowToStep',
|
|
64
|
-
position: i + 1,
|
|
65
|
-
name: step.name,
|
|
66
|
-
text: step.text,
|
|
67
|
-
})),
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
71
|
-
'@context': 'https://schema.org',
|
|
72
|
-
'@type': 'SoftwareApplication',
|
|
73
|
-
name: title,
|
|
74
|
-
description,
|
|
75
|
-
applicationCategory: 'UtilityApplication',
|
|
76
|
-
operatingSystem: 'All',
|
|
77
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
78
|
-
inLanguage: 'ru',
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
export const content: DigitalCarbonLocaleContent = {
|
|
82
|
-
slug,
|
|
83
|
-
title,
|
|
84
|
-
description,
|
|
85
|
-
ui: {
|
|
86
|
-
headInputs: 'Анализатор URL',
|
|
87
|
-
headResults: 'Результат воздействия',
|
|
88
|
-
headTips: 'Советы по оптимизации',
|
|
89
|
-
labelUrl: 'URL страницы',
|
|
90
|
-
btnAnalyze: 'Анализировать сайт',
|
|
91
|
-
btnAnalyzing: 'Анализ...',
|
|
92
|
-
placeholderUrl: 'https://example.ru',
|
|
93
|
-
errorInvalidUrl: 'Пожалуйста, введите корректный URL.',
|
|
94
|
-
errorFetchFailed: 'Не удалось проанализировать сайт. Попробуйте другой URL.',
|
|
95
|
-
|
|
96
|
-
resultTitle: 'Цифровой углеродный след',
|
|
97
|
-
resultSubtitle: 'Оценочная эффективность страницы',
|
|
98
|
-
co2PerVisit: 'CO₂ за посещение',
|
|
99
|
-
energyPerVisit: 'Потребляемая энергия',
|
|
100
|
-
co2Annual: 'CO₂ в год (100к визитов)',
|
|
101
|
-
impactTitle: 'Реальное годовое воздействие',
|
|
102
|
-
impactTrees: 'Необходимо деревьев',
|
|
103
|
-
impactKm: 'км на авто (прим.)',
|
|
104
|
-
treesLabel: 'Деревьев',
|
|
105
|
-
kmLabel: 'Километров',
|
|
106
|
-
|
|
107
|
-
ratingExcellent: 'Отлично. Эта страница потребляет очень мало энергии по сравнению со средним мировым показателем.',
|
|
108
|
-
ratingVeryGood: 'Очень хорошая эффективность. Страница хорошо оптимизирована и имеет минимальное воздействие.',
|
|
109
|
-
ratingGood: 'Приемлемая эффективность. Есть возможности для улучшения, но показатель ниже среднего.',
|
|
110
|
-
ratingAverage: 'Средне. Страница потребляет столько, сколько ожидается в современном вебе.',
|
|
111
|
-
ratingPoor: 'Выше среднего. Подумайте об оптимизации изображений, скриптов и шрифтов.',
|
|
112
|
-
ratingVeryPoor: 'Высокое воздействие. Вес страницы значителен и должен быть уменьшен.',
|
|
113
|
-
ratingCritical: 'Очень высокое воздействие. Есть отличная возможность уменьшить размер страницы.',
|
|
114
|
-
|
|
115
|
-
tipImages: 'Преобразуйте изображения в WebP или AVIF, чтобы уменьшить их вес до 70%.',
|
|
116
|
-
tipCompression: 'Включите Brotli или GZIP на сервере для сжатия ресурсов.',
|
|
117
|
-
tipLazyLoading: 'Используйте ленивую загрузку для изображений и видео вне области видимости.',
|
|
118
|
-
tipHosting: 'Выберите хостинг с возобновляемой энергией (Cloudflare, Netlify, Vercel).',
|
|
119
|
-
tipThirdParty: 'Удалите ненужные аналитические скрипты и сторонние виджеты.',
|
|
120
|
-
tipFonts: 'Загружайте только те начертания шрифтов, которые вы действительно используете.',
|
|
121
|
-
tipCache: 'Настройте заголовки HTTP-кэша, чтобы избежать повторных загрузок.',
|
|
122
|
-
},
|
|
123
|
-
faq: faqData,
|
|
124
|
-
howTo: howToData,
|
|
125
|
-
seo: [
|
|
126
|
-
{
|
|
127
|
-
type: 'title',
|
|
128
|
-
text: 'Калькулятор цифрового углеродного следа: сколько CO₂ генерирует ваш сайт',
|
|
129
|
-
level: 2,
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
type: 'paragraph',
|
|
133
|
-
html: 'Узнайте реальное экологическое воздействие любой веб-страницы. Проанализируйте ее вес, оцените количество граммов CO₂ за посещение и узнайте, как снизить цифровое загрязнение ваших проектов.',
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
type: 'title',
|
|
137
|
-
text: 'Что такое цифровой углеродный след веб-сайта?',
|
|
138
|
-
level: 2,
|
|
139
|
-
},
|
|
140
|
-
{
|
|
141
|
-
type: 'paragraph',
|
|
142
|
-
html: 'При каждом открытии веб-страницы ваше устройство, домашний роутер, подводные кабели и серверы на другом конце света потребляют электричество. Это электричество до сих пор в значительной степени вырабатывается путем сжигания ископаемого топлива. Результат: реальное количество <strong>CO₂, выбрасываемого в атмосферу при каждом посещении</strong>.',
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
type: 'paragraph',
|
|
146
|
-
html: '<strong>Цифровой углеродный след</strong> сайта измеряется в граммах эквивалента CO₂ (gCO₂e) за посещение. Средний сайт генерирует примерно 0,5 г CO₂ за загрузку. Хотя это кажется незначительным, сайт со 100 000 посещений в месяц может выбрасывать более 600 кг CO₂ в год, что эквивалентно поездке на бензиновом автомобиле более чем на 3 000 км.',
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
type: 'title',
|
|
150
|
-
text: 'Как рассчитывается CO₂ веб-сайта?',
|
|
151
|
-
level: 2,
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
type: 'paragraph',
|
|
155
|
-
html: 'Используемая модель расчета основана на стандартах <strong>Sustainable Web Design Model</strong>, которая разделяет энергопотребление на четыре основных сегмента:',
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
type: 'card',
|
|
159
|
-
title: 'Передача данных',
|
|
160
|
-
html: 'Общий вес страницы определяет количество передаваемых гигабайт. Стандарт учитывает <code>0,81 кВтч/ГБ</code> для сетевой инфраструктуры.',
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
type: 'card',
|
|
164
|
-
title: 'Устройство пользователя',
|
|
165
|
-
html: 'Компьютер или телефон, принимающий страницу, потребляет энергию. Она оценивается в <code>0,52 кВтч/ГБ</code> обработанных данных.',
|
|
166
|
-
},
|
|
167
|
-
{
|
|
168
|
-
type: 'card',
|
|
169
|
-
title: 'Углеродная интенсивность',
|
|
170
|
-
html: 'Глобальное эталонное значение <code>442 гCO₂/кВтч</code> используется для перевода энергопотребления в реальные выбросы углерода.',
|
|
171
|
-
},
|
|
172
|
-
{
|
|
173
|
-
type: 'card',
|
|
174
|
-
title: 'Фактор кэширования',
|
|
175
|
-
html: 'Модель применяет коэффициент <code>0,75</code>, предполагая, что у 25% пользователей ресурсы уже находятся в кэше.',
|
|
176
|
-
},
|
|
177
|
-
{
|
|
178
|
-
type: 'title',
|
|
179
|
-
text: 'Что означает рейтинг эффективности?',
|
|
180
|
-
level: 2,
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
type: 'list',
|
|
184
|
-
items: [
|
|
185
|
-
'<strong>A+ и A:</strong> Менее 0,2 г CO₂. Очень легкие и оптимизированные сайты.',
|
|
186
|
-
'<strong>B:</strong> От 0,2 до 0,5 г. Ниже среднемирового уровня.',
|
|
187
|
-
'<strong>C:</strong> От 0,5 до 1 г. Средний показатель для современного веба.',
|
|
188
|
-
'<strong>D и E:</strong> От 1 до 4 г. Тяжелые страницы со значительным воздействием.',
|
|
189
|
-
'<strong>F:</strong> Более 4 г за посещение. Очень высокое воздействие.',
|
|
190
|
-
],
|
|
191
|
-
},
|
|
192
|
-
{
|
|
193
|
-
type: 'title',
|
|
194
|
-
text: 'Как снизить углеродный след вашего веб-сайта',
|
|
195
|
-
level: 2,
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
type: 'card',
|
|
199
|
-
title: 'Оптимизация изображений',
|
|
200
|
-
html: 'Используйте форматы <strong>WebP или AVIF</strong>, чтобы уменьшить размер до 80% без заметной потери качества.',
|
|
201
|
-
},
|
|
202
|
-
{
|
|
203
|
-
type: 'card',
|
|
204
|
-
title: 'Сжатие на сервере',
|
|
205
|
-
html: 'Включение <strong>Brotli или GZIP</strong> уменьшает размер текстовых файлов до 70%.',
|
|
206
|
-
},
|
|
207
|
-
{
|
|
208
|
-
type: 'card',
|
|
209
|
-
title: 'Экологичный хостинг',
|
|
210
|
-
html: 'Выбор провайдера с <strong>сертифицированной возобновляемой энергией</strong> может снизить воздействие почти на 100%.',
|
|
211
|
-
},
|
|
212
|
-
{
|
|
213
|
-
type: 'card',
|
|
214
|
-
title: 'Кэш и CDN',
|
|
215
|
-
html: 'Настройте <strong>длинные заголовки кэша</strong>, чтобы избежать ненужных повторных загрузок.',
|
|
216
|
-
},
|
|
217
|
-
{
|
|
218
|
-
type: 'title',
|
|
219
|
-
text: 'Реальное влияние интернета на климат',
|
|
220
|
-
level: 2,
|
|
221
|
-
},
|
|
222
|
-
{
|
|
223
|
-
type: 'paragraph',
|
|
224
|
-
html: 'Интернет отвечает за <strong>2-4% глобальных выбросов CO₂</strong>, что сопоставимо с авиационной промышленностью. Каждый удаленный килобайт не просто делает ваш сайт быстрее: он измеримо снижает цифровое загрязнение.',
|
|
225
|
-
},
|
|
226
|
-
],
|
|
227
|
-
bibliography,
|
|
228
|
-
schemas: [faqSchema, howToSchema, appSchema],
|
|
229
|
-
};
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { DigitalCarbonLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'kalkulyator-tsifrovogo-uglerodnogo-sleda';
|
|
6
|
+
const title = 'Калькулятор цифрового углеродного следа';
|
|
7
|
+
const description = 'Проанализируйте воздействие любой веб-страницы на окружающую среду. Оцените потребление энергии и выбросы CO₂ за посещение.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Что такое углеродный след веб-сайта?',
|
|
12
|
+
answer: 'Это количество парниковых газов, в первую очередь CO₂, выбрасываемых в атмосферу в результате потребления энергии серверами, сетями передачи данных и устройством пользователя для загрузки и отображения веб-страницы.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Как измеряется воздействие веб-сайта?',
|
|
16
|
+
answer: 'Обычно оно измеряется в граммах эквивалента CO₂ (gCO₂e) за посещение. Эффективный сайт выбрасывает менее 0,2 г CO₂, в то время как неоптимизированная страница может превышать 2 или 3 г за загрузку.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Почему интернет загрязняет окружающую среду?',
|
|
20
|
+
answer: 'Потому что вся необходимая инфраструктура (дата-центры, подводные кабели, WiFi-роутеры, смартфоны) работает на электричестве, которое в большинстве стран мира все еще производится путем сжигания угля или газа.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Как я могу уменьшить выбросы CO₂ моего сайта?',
|
|
24
|
+
answer: 'Самый эффективный способ - уменьшить вес страницы: оптимизировать изображения (WebP), минифицировать файлы CSS и JS, использовать ленивую загрузку и выбрать хостинг-провайдера, использующего возобновляемую энергию.',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{
|
|
30
|
+
name: 'Введите URL',
|
|
31
|
+
text: 'Введите веб-адрес страницы, которую вы хотите проанализировать, в поле ввода.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Начните анализ',
|
|
35
|
+
text: 'Нажмите кнопку анализа, чтобы наш инструмент оценил вес ресурсов страницы.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Проверьте свой рейтинг',
|
|
39
|
+
text: 'Получите оценку от A+ до F на основе энергоэффективности анализируемого веб-сайта.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Примените улучшения',
|
|
43
|
+
text: 'Используйте список персонализированных советов, чтобы уменьшить вес вашего сайта и его воздействие на окружающую среду.',
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
48
|
+
'@context': 'https://schema.org',
|
|
49
|
+
'@type': 'FAQPage',
|
|
50
|
+
mainEntity: faqData.map((item) => ({
|
|
51
|
+
'@type': 'Question',
|
|
52
|
+
name: item.question,
|
|
53
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
54
|
+
})),
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const howToSchema: WithContext<HowTo> = {
|
|
58
|
+
'@context': 'https://schema.org',
|
|
59
|
+
'@type': 'HowTo',
|
|
60
|
+
name: title,
|
|
61
|
+
description,
|
|
62
|
+
step: howToData.map((step, i) => ({
|
|
63
|
+
'@type': 'HowToStep',
|
|
64
|
+
position: i + 1,
|
|
65
|
+
name: step.name,
|
|
66
|
+
text: step.text,
|
|
67
|
+
})),
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
71
|
+
'@context': 'https://schema.org',
|
|
72
|
+
'@type': 'SoftwareApplication',
|
|
73
|
+
name: title,
|
|
74
|
+
description,
|
|
75
|
+
applicationCategory: 'UtilityApplication',
|
|
76
|
+
operatingSystem: 'All',
|
|
77
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
78
|
+
inLanguage: 'ru',
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export const content: DigitalCarbonLocaleContent = {
|
|
82
|
+
slug,
|
|
83
|
+
title,
|
|
84
|
+
description,
|
|
85
|
+
ui: {
|
|
86
|
+
headInputs: 'Анализатор URL',
|
|
87
|
+
headResults: 'Результат воздействия',
|
|
88
|
+
headTips: 'Советы по оптимизации',
|
|
89
|
+
labelUrl: 'URL страницы',
|
|
90
|
+
btnAnalyze: 'Анализировать сайт',
|
|
91
|
+
btnAnalyzing: 'Анализ...',
|
|
92
|
+
placeholderUrl: 'https://example.ru',
|
|
93
|
+
errorInvalidUrl: 'Пожалуйста, введите корректный URL.',
|
|
94
|
+
errorFetchFailed: 'Не удалось проанализировать сайт. Попробуйте другой URL.',
|
|
95
|
+
|
|
96
|
+
resultTitle: 'Цифровой углеродный след',
|
|
97
|
+
resultSubtitle: 'Оценочная эффективность страницы',
|
|
98
|
+
co2PerVisit: 'CO₂ за посещение',
|
|
99
|
+
energyPerVisit: 'Потребляемая энергия',
|
|
100
|
+
co2Annual: 'CO₂ в год (100к визитов)',
|
|
101
|
+
impactTitle: 'Реальное годовое воздействие',
|
|
102
|
+
impactTrees: 'Необходимо деревьев',
|
|
103
|
+
impactKm: 'км на авто (прим.)',
|
|
104
|
+
treesLabel: 'Деревьев',
|
|
105
|
+
kmLabel: 'Километров',
|
|
106
|
+
|
|
107
|
+
ratingExcellent: 'Отлично. Эта страница потребляет очень мало энергии по сравнению со средним мировым показателем.',
|
|
108
|
+
ratingVeryGood: 'Очень хорошая эффективность. Страница хорошо оптимизирована и имеет минимальное воздействие.',
|
|
109
|
+
ratingGood: 'Приемлемая эффективность. Есть возможности для улучшения, но показатель ниже среднего.',
|
|
110
|
+
ratingAverage: 'Средне. Страница потребляет столько, сколько ожидается в современном вебе.',
|
|
111
|
+
ratingPoor: 'Выше среднего. Подумайте об оптимизации изображений, скриптов и шрифтов.',
|
|
112
|
+
ratingVeryPoor: 'Высокое воздействие. Вес страницы значителен и должен быть уменьшен.',
|
|
113
|
+
ratingCritical: 'Очень высокое воздействие. Есть отличная возможность уменьшить размер страницы.',
|
|
114
|
+
|
|
115
|
+
tipImages: 'Преобразуйте изображения в WebP или AVIF, чтобы уменьшить их вес до 70%.',
|
|
116
|
+
tipCompression: 'Включите Brotli или GZIP на сервере для сжатия ресурсов.',
|
|
117
|
+
tipLazyLoading: 'Используйте ленивую загрузку для изображений и видео вне области видимости.',
|
|
118
|
+
tipHosting: 'Выберите хостинг с возобновляемой энергией (Cloudflare, Netlify, Vercel).',
|
|
119
|
+
tipThirdParty: 'Удалите ненужные аналитические скрипты и сторонние виджеты.',
|
|
120
|
+
tipFonts: 'Загружайте только те начертания шрифтов, которые вы действительно используете.',
|
|
121
|
+
tipCache: 'Настройте заголовки HTTP-кэша, чтобы избежать повторных загрузок.',
|
|
122
|
+
},
|
|
123
|
+
faq: faqData,
|
|
124
|
+
howTo: howToData,
|
|
125
|
+
seo: [
|
|
126
|
+
{
|
|
127
|
+
type: 'title',
|
|
128
|
+
text: 'Калькулятор цифрового углеродного следа: сколько CO₂ генерирует ваш сайт',
|
|
129
|
+
level: 2,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'Узнайте реальное экологическое воздействие любой веб-страницы. Проанализируйте ее вес, оцените количество граммов CO₂ за посещение и узнайте, как снизить цифровое загрязнение ваших проектов.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'title',
|
|
137
|
+
text: 'Что такое цифровой углеродный след веб-сайта?',
|
|
138
|
+
level: 2,
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'paragraph',
|
|
142
|
+
html: 'При каждом открытии веб-страницы ваше устройство, домашний роутер, подводные кабели и серверы на другом конце света потребляют электричество. Это электричество до сих пор в значительной степени вырабатывается путем сжигания ископаемого топлива. Результат: реальное количество <strong>CO₂, выбрасываемого в атмосферу при каждом посещении</strong>.',
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
type: 'paragraph',
|
|
146
|
+
html: '<strong>Цифровой углеродный след</strong> сайта измеряется в граммах эквивалента CO₂ (gCO₂e) за посещение. Средний сайт генерирует примерно 0,5 г CO₂ за загрузку. Хотя это кажется незначительным, сайт со 100 000 посещений в месяц может выбрасывать более 600 кг CO₂ в год, что эквивалентно поездке на бензиновом автомобиле более чем на 3 000 км.',
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
type: 'title',
|
|
150
|
+
text: 'Как рассчитывается CO₂ веб-сайта?',
|
|
151
|
+
level: 2,
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'paragraph',
|
|
155
|
+
html: 'Используемая модель расчета основана на стандартах <strong>Sustainable Web Design Model</strong>, которая разделяет энергопотребление на четыре основных сегмента:',
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
type: 'card',
|
|
159
|
+
title: 'Передача данных',
|
|
160
|
+
html: 'Общий вес страницы определяет количество передаваемых гигабайт. Стандарт учитывает <code>0,81 кВтч/ГБ</code> для сетевой инфраструктуры.',
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
type: 'card',
|
|
164
|
+
title: 'Устройство пользователя',
|
|
165
|
+
html: 'Компьютер или телефон, принимающий страницу, потребляет энергию. Она оценивается в <code>0,52 кВтч/ГБ</code> обработанных данных.',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: 'card',
|
|
169
|
+
title: 'Углеродная интенсивность',
|
|
170
|
+
html: 'Глобальное эталонное значение <code>442 гCO₂/кВтч</code> используется для перевода энергопотребления в реальные выбросы углерода.',
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
type: 'card',
|
|
174
|
+
title: 'Фактор кэширования',
|
|
175
|
+
html: 'Модель применяет коэффициент <code>0,75</code>, предполагая, что у 25% пользователей ресурсы уже находятся в кэше.',
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
type: 'title',
|
|
179
|
+
text: 'Что означает рейтинг эффективности?',
|
|
180
|
+
level: 2,
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
type: 'list',
|
|
184
|
+
items: [
|
|
185
|
+
'<strong>A+ и A:</strong> Менее 0,2 г CO₂. Очень легкие и оптимизированные сайты.',
|
|
186
|
+
'<strong>B:</strong> От 0,2 до 0,5 г. Ниже среднемирового уровня.',
|
|
187
|
+
'<strong>C:</strong> От 0,5 до 1 г. Средний показатель для современного веба.',
|
|
188
|
+
'<strong>D и E:</strong> От 1 до 4 г. Тяжелые страницы со значительным воздействием.',
|
|
189
|
+
'<strong>F:</strong> Более 4 г за посещение. Очень высокое воздействие.',
|
|
190
|
+
],
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
type: 'title',
|
|
194
|
+
text: 'Как снизить углеродный след вашего веб-сайта',
|
|
195
|
+
level: 2,
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
type: 'card',
|
|
199
|
+
title: 'Оптимизация изображений',
|
|
200
|
+
html: 'Используйте форматы <strong>WebP или AVIF</strong>, чтобы уменьшить размер до 80% без заметной потери качества.',
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
type: 'card',
|
|
204
|
+
title: 'Сжатие на сервере',
|
|
205
|
+
html: 'Включение <strong>Brotli или GZIP</strong> уменьшает размер текстовых файлов до 70%.',
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
type: 'card',
|
|
209
|
+
title: 'Экологичный хостинг',
|
|
210
|
+
html: 'Выбор провайдера с <strong>сертифицированной возобновляемой энергией</strong> может снизить воздействие почти на 100%.',
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
type: 'card',
|
|
214
|
+
title: 'Кэш и CDN',
|
|
215
|
+
html: 'Настройте <strong>длинные заголовки кэша</strong>, чтобы избежать ненужных повторных загрузок.',
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
type: 'title',
|
|
219
|
+
text: 'Реальное влияние интернета на климат',
|
|
220
|
+
level: 2,
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
type: 'paragraph',
|
|
224
|
+
html: 'Интернет отвечает за <strong>2-4% глобальных выбросов CO₂</strong>, что сопоставимо с авиационной промышленностью. Каждый удаленный килобайт не просто делает ваш сайт быстрее: он измеримо снижает цифровое загрязнение.',
|
|
225
|
+
},
|
|
226
|
+
],
|
|
227
|
+
bibliography,
|
|
228
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
229
|
+
};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
---
|
|
2
|
-
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
-
import { digitalCarbon } 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 digitalCarbon.i18n[locale]?.();
|
|
12
|
-
if (!content) return null;
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
{content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
1
|
+
---
|
|
2
|
+
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { digitalCarbon } 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 digitalCarbon.i18n[locale]?.();
|
|
12
|
+
if (!content) return null;
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
{content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|