core-maugli 1.2.18 → 1.2.20
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/components/Card.astro +26 -1
- package/src/components/HeroImage.astro +26 -1
- package/src/components/RubricCard.astro +116 -73
- package/src/i18n/de.json +5 -1
- package/src/i18n/en.json +5 -1
- package/src/i18n/es.json +5 -1
- package/src/i18n/fr.json +19 -15
- package/src/i18n/ja.json +5 -1
- package/src/i18n/pt.json +5 -1
- package/src/i18n/ru.json +5 -1
- package/src/i18n/zh.json +5 -1
package/package.json
CHANGED
@@ -40,9 +40,34 @@ function getResponsiveImages(imagePath: string) {
|
|
40
40
|
const basePath = imagePath.replace(/\.(webp|jpg|jpeg|png)$/i, '');
|
41
41
|
const extension = imagePath.match(/\.(webp|jpg|jpeg|png)$/i)?.[0] || '.webp';
|
42
42
|
|
43
|
+
// Проверяем существование адаптивных версий
|
44
|
+
const __filename = fileURLToPath(import.meta.url);
|
45
|
+
const projectRoot = path.resolve(path.dirname(__filename), '../..');
|
46
|
+
|
47
|
+
const variants = [
|
48
|
+
{ suffix: '-400', width: '400w' },
|
49
|
+
{ suffix: '-800', width: '800w' },
|
50
|
+
{ suffix: '-1200', width: '1200w' }
|
51
|
+
];
|
52
|
+
|
53
|
+
const srcsetItems = [];
|
54
|
+
|
55
|
+
// Добавляем адаптивные версии, если они существуют
|
56
|
+
for (const variant of variants) {
|
57
|
+
const variantPath = `${basePath}${variant.suffix}${extension}`;
|
58
|
+
const filePath = path.join(projectRoot, 'public', variantPath.replace(/^\//, ''));
|
59
|
+
|
60
|
+
if (fs.existsSync(filePath)) {
|
61
|
+
srcsetItems.push(`${variantPath} ${variant.width}`);
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
// Всегда добавляем оригинальное изображение
|
66
|
+
srcsetItems.push(`${imagePath} 1200w`);
|
67
|
+
|
43
68
|
return {
|
44
69
|
src: imagePath,
|
45
|
-
srcset:
|
70
|
+
srcset: srcsetItems.join(', '),
|
46
71
|
sizes: '(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 400px'
|
47
72
|
};
|
48
73
|
}
|
@@ -25,9 +25,34 @@ function getResponsiveImages(imagePath: string) {
|
|
25
25
|
const basePath = imagePath.replace(/\.(webp|jpg|jpeg|png)$/i, '');
|
26
26
|
const extension = imagePath.match(/\.(webp|jpg|jpeg|png)$/i)?.[0] || '.webp';
|
27
27
|
|
28
|
+
// Проверяем существование адаптивных версий
|
29
|
+
const __filename = fileURLToPath(import.meta.url);
|
30
|
+
const projectRoot = path.resolve(path.dirname(__filename), '../..');
|
31
|
+
|
32
|
+
const variants = [
|
33
|
+
{ suffix: '-400', width: '400w' },
|
34
|
+
{ suffix: '-800', width: '800w' },
|
35
|
+
{ suffix: '-1200', width: '1200w' }
|
36
|
+
];
|
37
|
+
|
38
|
+
const srcsetItems = [];
|
39
|
+
|
40
|
+
// Добавляем адаптивные версии, если они существуют
|
41
|
+
for (const variant of variants) {
|
42
|
+
const variantPath = `${basePath}${variant.suffix}${extension}`;
|
43
|
+
const filePath = path.join(projectRoot, 'public', variantPath.replace(/^\//, ''));
|
44
|
+
|
45
|
+
if (fs.existsSync(filePath)) {
|
46
|
+
srcsetItems.push(`${variantPath} ${variant.width}`);
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
// Всегда добавляем оригинальное изображение
|
51
|
+
srcsetItems.push(`${imagePath} 1200w`);
|
52
|
+
|
28
53
|
return {
|
29
54
|
src: imagePath,
|
30
|
-
srcset:
|
55
|
+
srcset: srcsetItems.join(', '),
|
31
56
|
sizes: '(max-width: 768px) 100vw, (max-width: 1024px) 80vw, 1200px'
|
32
57
|
};
|
33
58
|
}
|
@@ -1,4 +1,7 @@
|
|
1
1
|
---
|
2
|
+
import fs from 'fs';
|
3
|
+
import path from 'path';
|
4
|
+
import { fileURLToPath } from 'url';
|
2
5
|
import { maugliConfig } from '../config/maugli.config';
|
3
6
|
import { slugify } from '../utils/common-utils';
|
4
7
|
import { getFilteredCollection } from '../utils/content-loader';
|
@@ -22,11 +25,22 @@ const { title, description, image, quote, isFeatured, lang } = rubric;
|
|
22
25
|
const defaultImage = maugliConfig.defaultRubricImage;
|
23
26
|
|
24
27
|
// Универсальный механизм локализации
|
25
|
-
import
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
28
|
+
import { LANGUAGES } from '../i18n/languages';
|
29
|
+
|
30
|
+
// Создаем словарь из массива языков
|
31
|
+
const dicts: Record<string, any> = Object.fromEntries(LANGUAGES.map((lang) => [lang.code, lang.dict]));
|
32
|
+
|
33
|
+
// Создаем карту локалей
|
34
|
+
const localeMap: Record<string, string> = {
|
35
|
+
ru: 'ru-RU',
|
36
|
+
en: 'en-US',
|
37
|
+
es: 'es-ES',
|
38
|
+
de: 'de-DE',
|
39
|
+
fr: 'fr-FR',
|
40
|
+
pt: 'pt-BR',
|
41
|
+
ja: 'ja-JP',
|
42
|
+
zh: 'zh-CN'
|
43
|
+
};
|
30
44
|
// Если появятся новые языки — просто добавить импорт и в объект выше
|
31
45
|
const langKey =
|
32
46
|
typeof lang === 'string' && dicts[lang]
|
@@ -35,7 +49,6 @@ const langKey =
|
|
35
49
|
? maugliConfig.defaultLang
|
36
50
|
: 'en';
|
37
51
|
const dict = dicts[langKey] || dicts['en'];
|
38
|
-
const localeMap: Record<string, string> = { ru: 'ru-RU', en: 'en-US', es: 'es-ES', de: 'de-DE' };
|
39
52
|
const locale = localeMap[langKey] || 'en-US';
|
40
53
|
|
41
54
|
// Получаем slug рубрики из title через slugify
|
@@ -90,6 +103,43 @@ yesterday.setDate(now.getDate() - 1);
|
|
90
103
|
const isYesterday = dateObj && dateObj.toDateString() === yesterday.toDateString();
|
91
104
|
const isBrandDate = isToday || isYesterday;
|
92
105
|
|
106
|
+
// Функция для получения адаптивных изображений
|
107
|
+
function getResponsiveImages(imagePath: string) {
|
108
|
+
const basePath = imagePath.replace(/\.(webp|jpg|jpeg|png)$/i, '');
|
109
|
+
const extension = imagePath.match(/\.(webp|jpg|jpeg|png)$/i)?.[0] || '.webp';
|
110
|
+
|
111
|
+
// Проверяем существование адаптивных версий
|
112
|
+
const __filename = fileURLToPath(import.meta.url);
|
113
|
+
const projectRoot = path.resolve(path.dirname(__filename), '../..');
|
114
|
+
|
115
|
+
const variants = [
|
116
|
+
{ suffix: '-400', width: '400w' },
|
117
|
+
{ suffix: '-800', width: '800w' },
|
118
|
+
{ suffix: '-1200', width: '1200w' }
|
119
|
+
];
|
120
|
+
|
121
|
+
const srcsetItems = [];
|
122
|
+
|
123
|
+
// Добавляем адаптивные версии, если они существуют
|
124
|
+
for (const variant of variants) {
|
125
|
+
const variantPath = `${basePath}${variant.suffix}${extension}`;
|
126
|
+
const filePath = path.join(projectRoot, 'public', variantPath.replace(/^\//, ''));
|
127
|
+
|
128
|
+
if (fs.existsSync(filePath)) {
|
129
|
+
srcsetItems.push(`${variantPath} ${variant.width}`);
|
130
|
+
}
|
131
|
+
}
|
132
|
+
|
133
|
+
// Всегда добавляем оригинальное изображение
|
134
|
+
srcsetItems.push(`${imagePath} 1200w`);
|
135
|
+
|
136
|
+
return {
|
137
|
+
src: imagePath,
|
138
|
+
srcset: srcsetItems.join(', '),
|
139
|
+
sizes: '(max-width: 768px) 100vw, 105px'
|
140
|
+
};
|
141
|
+
}
|
142
|
+
|
93
143
|
// Функция для получения пути к превью изображения
|
94
144
|
function getPreviewImageSrc(imageSrc: string): string {
|
95
145
|
if (!imageSrc) return maugliConfig.defaultRubricImage;
|
@@ -108,44 +158,28 @@ function getPreviewImageSrc(imageSrc: string): string {
|
|
108
158
|
// Убеждаемся, что путь абсолютный (начинается с /)
|
109
159
|
const absolutePreviewPath = previewPath.startsWith('/') ? previewPath : `/${previewPath}`;
|
110
160
|
|
111
|
-
//
|
112
|
-
|
161
|
+
// Проверяем существование превью
|
162
|
+
const __filename = fileURLToPath(import.meta.url);
|
163
|
+
const projectRoot = path.resolve(path.dirname(__filename), '../..');
|
164
|
+
const previewFilePath = path.join(projectRoot, 'public', absolutePreviewPath.replace(/^\//, ''));
|
165
|
+
|
166
|
+
if (fs.existsSync(previewFilePath)) {
|
167
|
+
return absolutePreviewPath;
|
168
|
+
}
|
169
|
+
|
170
|
+
// Если превью не найдено, возвращаем оригинальное изображение
|
171
|
+
return imageSrc;
|
113
172
|
}
|
114
173
|
|
115
174
|
// Если указано своё изображение — показываем его превью, иначе дефолтное
|
116
175
|
const previewImageSrc = getPreviewImageSrc(image?.src || maugliConfig.defaultRubricImage);
|
117
176
|
|
118
|
-
//
|
119
|
-
const
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
'по',
|
125
|
-
'от',
|
126
|
-
'до',
|
127
|
-
'за',
|
128
|
-
'над',
|
129
|
-
'под',
|
130
|
-
'о',
|
131
|
-
'об',
|
132
|
-
'у',
|
133
|
-
'для',
|
134
|
-
'к',
|
135
|
-
'ко',
|
136
|
-
'из',
|
137
|
-
'без',
|
138
|
-
'при',
|
139
|
-
'а',
|
140
|
-
'но',
|
141
|
-
'или',
|
142
|
-
'да',
|
143
|
-
'же',
|
144
|
-
'ли',
|
145
|
-
'бы',
|
146
|
-
'не',
|
147
|
-
'то',
|
148
|
-
'же',
|
177
|
+
// Генерируем адаптивные версии изображений
|
178
|
+
const rubricImage = getResponsiveImages(previewImageSrc);
|
179
|
+
|
180
|
+
// Получаем стоп-слова для текущего языка
|
181
|
+
const stopWords = dict.stopWords || [
|
182
|
+
// Fallback стоп-слова на английском, если в языковом файле их нет
|
149
183
|
'the',
|
150
184
|
'of',
|
151
185
|
'to',
|
@@ -160,6 +194,7 @@ const stopWords = [
|
|
160
194
|
'an',
|
161
195
|
'or',
|
162
196
|
'but',
|
197
|
+
'and',
|
163
198
|
'&'
|
164
199
|
];
|
165
200
|
|
@@ -195,7 +230,16 @@ if (import.meta.env.DEV) {
|
|
195
230
|
>
|
196
231
|
<!-- Левая часть: картинка и дата -->
|
197
232
|
<div class="flex flex-col items-end gap-2 w-[105px] h-[147px] relative">
|
198
|
-
<img
|
233
|
+
<img
|
234
|
+
src={rubricImage.src}
|
235
|
+
srcset={rubricImage.srcset}
|
236
|
+
sizes={rubricImage.sizes}
|
237
|
+
alt={title}
|
238
|
+
class="w-[105px] h-[107px] object-cover rounded-custom"
|
239
|
+
loading="lazy"
|
240
|
+
width="105"
|
241
|
+
height="107"
|
242
|
+
/>
|
199
243
|
{
|
200
244
|
rubricInitials && (
|
201
245
|
<span style="position:absolute;left:0;top:0;width:105px;height:107px;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:2;">
|
@@ -206,41 +250,40 @@ if (import.meta.env.DEV) {
|
|
206
250
|
</span>
|
207
251
|
)
|
208
252
|
}
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
</div>
|
253
|
+
<div class="flex flex-col items-end gap-1 w-[74px] h-[32px]">
|
254
|
+
<span class={`flex items-center gap-1 text-[12px] text-right ${isBrandDate ? 'text-[var(--brand-color)]' : 'text-[var(--text-muted)]'}`}>
|
255
|
+
<svg
|
256
|
+
width="16"
|
257
|
+
height="16"
|
258
|
+
viewBox="0 0 24 24"
|
259
|
+
fill="none"
|
260
|
+
xmlns="http://www.w3.org/2000/svg"
|
261
|
+
style="display:inline-block;vertical-align:middle;opacity:0.6; color: var(--text-muted);"
|
262
|
+
>
|
263
|
+
<path
|
264
|
+
d="M17.7909 6.12232C14.9505 3.32362 10.5815 3.00989 7.39551 5.15377L7.38659 3.92302C7.38509 3.71587 7.21589 3.54914 7.00866 3.55079L6.25874 3.55664C6.05166 3.55822 5.88516 3.72734 5.88666 3.93434L5.90736 6.74122C5.91029 7.15357 6.24576 7.48537 6.65736 7.48537C6.65886 7.48537 6.66104 7.48537 6.66321 7.48537L9.47046 7.46467C9.67761 7.46317 9.84426 7.29389 9.84269 7.08674L9.83684 6.33667C9.83526 6.12959 9.66614 5.96309 9.45914 5.96459L8.98199 5.96804C11.4928 4.71464 14.6299 5.11372 16.7377 7.19017C18.7606 9.18427 19.3134 12.182 18.1639 14.7525C18.082 14.9355 18.1491 15.1487 18.3276 15.24L18.997 15.582C19.1866 15.6789 19.4265 15.6008 19.5145 15.4069C20.9445 12.2567 20.2743 8.57039 17.7909 6.12232ZM17.3434 16.5132C17.3419 16.5132 17.3397 16.5132 17.3375 16.5132L14.5303 16.5338C14.3231 16.5354 14.1565 16.7046 14.158 16.9117L14.1639 17.6618C14.1655 17.8688 14.3346 18.0353 14.5416 18.0339L15.0183 18.0304C12.5073 19.2835 9.37079 18.8841 7.26299 16.8083C5.24009 14.8142 4.68734 11.8164 5.83686 9.24599C5.91869 9.06299 5.85164 8.84977 5.67314 8.75849L5.00376 8.41649C4.81409 8.31959 4.57424 8.39767 4.48619 8.59154C3.05609 11.7417 3.72636 15.428 6.20969 17.8762C7.81439 19.4575 9.90771 20.2456 11.9995 20.2456C13.6101 20.2456 15.2191 19.7767 16.605 18.8438L16.6139 20.0754C16.6154 20.2825 16.7846 20.4493 16.9918 20.4477L17.7418 20.4418C17.9488 20.4402 18.1153 20.2711 18.1138 20.0641L18.0931 17.2573C18.0904 16.8449 17.755 16.5132 17.3434 16.5132Z"
|
265
|
+
fill="currentColor"></path>
|
266
|
+
</svg>
|
267
|
+
{formattedDate}
|
268
|
+
</span>
|
226
269
|
</div>
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
270
|
+
</div>
|
271
|
+
<!-- Правая часть: контент -->
|
272
|
+
<div class="flex flex-col justify-start items-start h-[147px] flex-1 min-w-0">
|
273
|
+
<div class="flex flex-row items-start gap-2 w-full">
|
274
|
+
<h3 class="font-serif font-[700] text-[22px] text-[var(--text-heading)] leading-[1] truncate">{title}</h3>
|
275
|
+
<CountBadge count={postCount} />
|
276
|
+
</div>
|
277
|
+
<div class="mt-2 text-[14px] text-[var(--text-main)] leading-[1.3] line-clamp-6 opacity-80">
|
278
|
+
{description}
|
236
279
|
</div>
|
237
280
|
</div>
|
238
281
|
</article>
|
239
|
-
|
240
|
-
<style>
|
241
|
-
article:hover {
|
242
|
-
box-shadow: var(--card-shadow);
|
243
|
-
}
|
244
|
-
/* Карточка всегда двухколоночная, контент сверху, текст description не прижат к низу */
|
245
|
-
</style>
|
246
282
|
</a>
|
283
|
+
|
284
|
+
<style>
|
285
|
+
article:hover {
|
286
|
+
box-shadow: var(--card-shadow);
|
287
|
+
}
|
288
|
+
/* Карточка всегда двухколоночная, контент сверху, текст description не прижат к низу */
|
289
|
+
</style>
|
package/src/i18n/de.json
CHANGED
@@ -122,5 +122,9 @@
|
|
122
122
|
"title": "Seite nicht gefunden",
|
123
123
|
"description": "Entschuldigung, diese Seite existiert nicht oder wurde entfernt.",
|
124
124
|
"button": "Zur Hauptseite"
|
125
|
-
}
|
125
|
+
},
|
126
|
+
|
127
|
+
"stopWords": [
|
128
|
+
"der", "die", "das", "und", "in", "auf", "mit", "von", "zu", "für", "an", "bei", "nach", "vor", "über", "unter", "durch", "ohne", "gegen", "um", "aus", "bis", "seit", "während", "wegen", "trotz", "statt", "anstatt", "außer", "binnen", "dank", "entlang", "entsprechend", "gemäß", "laut", "samt", "zufolge", "zugunsten", "zulasten", "zuliebe", "zuwider", "ist", "sind", "war", "waren", "sein", "haben", "hat", "hatte", "hatten", "wird", "werden", "wurde", "wurden", "kann", "können", "konnte", "konnten", "soll", "sollen", "sollte", "sollten", "will", "wollen", "wollte", "wollten", "muss", "müssen", "musste", "mussten", "darf", "dürfen", "durfte", "durften", "mag", "mögen", "mochte", "mochten", "ein", "eine", "einer", "eines", "einem", "einen", "kein", "keine", "keiner", "keines", "keinem", "keinen", "dieser", "diese", "dieses", "diesem", "diesen", "jener", "jene", "jenes", "jenem", "jenen", "welcher", "welche", "welches", "welchem", "welchen", "alle", "alles", "allen", "aller", "manche", "mancher", "manches", "manchem", "manchen", "einige", "einiger", "einiges", "einigem", "einigen", "viele", "vieler", "vieles", "vielem", "vielen", "wenige", "weniger", "weniges", "wenigem", "wenigen", "andere", "anderer", "anderes", "anderem", "anderen", "nicht", "nichts", "nie", "niemals", "immer", "oft", "manchmal", "selten", "hier", "da", "dort", "wo", "wohin", "woher", "wann", "wie", "warum", "weshalb", "wieso", "was", "wer", "wen", "wem", "wessen", "sehr", "ziemlich", "ganz", "völlig", "etwas", "etwa", "fast", "bereits", "schon", "noch", "nur", "auch", "sogar", "zwar", "aber", "jedoch", "doch", "dennoch", "trotzdem", "sondern", "oder", "entweder", "weder", "sowohl", "als", "wie", "wenn", "falls", "obwohl", "obgleich", "während", "bevor", "nachdem", "seit", "bis", "damit", "dass", "ob", "weil", "da", "falls", "sofern", "solange", "sobald", "&"
|
129
|
+
]
|
126
130
|
}
|
package/src/i18n/en.json
CHANGED
@@ -122,5 +122,9 @@
|
|
122
122
|
"title": "Page not found",
|
123
123
|
"description": "Sorry, this page does not exist or has been removed.",
|
124
124
|
"button": "Go to main page"
|
125
|
-
}
|
125
|
+
},
|
126
|
+
|
127
|
+
"stopWords": [
|
128
|
+
"the", "of", "to", "in", "on", "at", "by", "for", "with", "from", "as", "an", "or", "but", "and", "is", "are", "was", "were", "be", "been", "have", "has", "had", "do", "does", "did", "will", "would", "could", "should", "may", "might", "can", "must", "shall", "ought", "this", "that", "these", "those", "a", "about", "above", "after", "again", "against", "all", "any", "before", "below", "between", "both", "during", "each", "few", "if", "into", "more", "most", "no", "nor", "not", "only", "other", "out", "over", "same", "so", "some", "such", "than", "too", "very", "what", "when", "where", "which", "who", "why", "how", "up", "down", "off", "through", "until", "while", "&"
|
129
|
+
]
|
126
130
|
}
|
package/src/i18n/es.json
CHANGED
@@ -122,5 +122,9 @@
|
|
122
122
|
"title": "Página no encontrada",
|
123
123
|
"description": "Lo sentimos, esta página no existe o ha sido eliminada.",
|
124
124
|
"button": "A la página principal"
|
125
|
-
}
|
125
|
+
},
|
126
|
+
|
127
|
+
"stopWords": [
|
128
|
+
"el", "la", "de", "que", "y", "a", "en", "un", "es", "se", "no", "te", "lo", "le", "da", "su", "por", "son", "con", "para", "al", "del", "los", "las", "una", "más", "como", "pero", "sus", "le", "ya", "o", "porque", "cuando", "muy", "sin", "sobre", "también", "me", "hasta", "hay", "donde", "quien", "desde", "todo", "nos", "durante", "todos", "uno", "les", "ni", "contra", "otros", "ese", "eso", "ante", "ellos", "e", "esto", "mí", "antes", "algunos", "qué", "unos", "yo", "otro", "otras", "otra", "él", "tanto", "esa", "estos", "mucho", "quienes", "nada", "muchos", "cual", "poco", "ella", "estar", "estas", "algunas", "algo", "nosotros", "mi", "mis", "tú", "te", "ti", "tu", "tus", "ellas", "nosotras", "vosotros", "vosotras", "os", "mío", "mía", "míos", "mías", "tuyo", "tuya", "tuyos", "tuyas", "suyo", "suya", "suyos", "suyas", "nuestro", "nuestra", "nuestros", "nuestras", "vuestro", "vuestra", "vuestros", "vuestras", "del", "al", "donde", "adonde", "por donde", "en donde", "a donde", "de donde", "hacia donde", "hasta donde", "desde donde", "para donde", "según", "entre", "hacia", "mediante", "durante", "salvo", "excepto", "menos", "incluso", "además", "aparte", "fuera", "dentro", "encima", "debajo", "delante", "detrás", "cerca", "lejos", "alrededor", "&"
|
129
|
+
]
|
126
130
|
}
|
package/src/i18n/fr.json
CHANGED
@@ -26,8 +26,8 @@
|
|
26
26
|
"pages": {
|
27
27
|
"authors": {
|
28
28
|
"title": "Auteurs",
|
29
|
-
"description": "Rencontrez notre équipe d'experts
|
30
|
-
"goToAuthor": "
|
29
|
+
"description": "Rencontrez notre équipe d'experts qui écrivent pour {brand}",
|
30
|
+
"goToAuthor": "Aller à l'auteur",
|
31
31
|
"avatarAlt": "Avatar",
|
32
32
|
"onPlatform": "sur"
|
33
33
|
},
|
@@ -38,7 +38,7 @@
|
|
38
38
|
},
|
39
39
|
"index": {
|
40
40
|
"title": "<Blog>",
|
41
|
-
"description": "Blog sur l'automatisation
|
41
|
+
"description": "Blog sur l'automatisation à travers les yeux de l'IA",
|
42
42
|
"articles": "Articles",
|
43
43
|
"minutes": "min"
|
44
44
|
},
|
@@ -51,15 +51,15 @@
|
|
51
51
|
"title": "Services"
|
52
52
|
},
|
53
53
|
"blog": {
|
54
|
-
"moreByTag": "Plus sur
|
54
|
+
"moreByTag": "Plus sur le sujet"
|
55
55
|
},
|
56
56
|
"productsId": {
|
57
|
-
"articlesByTag": "Articles sur
|
58
|
-
"casesByTag": "Cas sur
|
57
|
+
"articlesByTag": "Articles sur le sujet",
|
58
|
+
"casesByTag": "Cas sur le sujet"
|
59
59
|
}
|
60
60
|
},
|
61
61
|
"socials": {
|
62
|
-
"email": "
|
62
|
+
"email": "email",
|
63
63
|
"linkedin": "LinkedIn",
|
64
64
|
"twitter": "Twitter",
|
65
65
|
"telegram": "Telegram",
|
@@ -91,8 +91,8 @@
|
|
91
91
|
"faqLabel": "FAQ :"
|
92
92
|
},
|
93
93
|
"tableOfContents": {
|
94
|
-
"title": "
|
95
|
-
"ariaLabel": "
|
94
|
+
"title": "Sommaire",
|
95
|
+
"ariaLabel": "Sommaire"
|
96
96
|
},
|
97
97
|
"tagPill": {
|
98
98
|
"ariaLabel": "Tag : {tag}"
|
@@ -108,19 +108,23 @@
|
|
108
108
|
"tagAriaLabel": "Tag : {name} ({count})"
|
109
109
|
},
|
110
110
|
"themeToggle": {
|
111
|
-
"ariaLabel": "Changer le
|
111
|
+
"ariaLabel": "Changer le schéma de couleurs"
|
112
112
|
},
|
113
113
|
"pagination": {
|
114
114
|
"goToPage": "Aller à la page {page} sur {lastPage}",
|
115
115
|
"pageOf": "Page {currentPage} sur {lastPage}"
|
116
116
|
},
|
117
117
|
"subscribe": {
|
118
|
-
"heading": "
|
119
|
-
"mutedText": "Recevez
|
118
|
+
"heading": "Abonnez-vous aux mises à jour",
|
119
|
+
"mutedText": "Recevez les derniers articles et nouvelles en premier !"
|
120
120
|
},
|
121
121
|
"notFound": {
|
122
122
|
"title": "Page non trouvée",
|
123
|
-
"description": "Désolé, cette page n
|
124
|
-
"button": "Page d
|
125
|
-
}
|
123
|
+
"description": "Désolé, cette page n'existe pas ou a été supprimée.",
|
124
|
+
"button": "Page d'accueil"
|
125
|
+
},
|
126
|
+
|
127
|
+
"stopWords": [
|
128
|
+
"le", "de", "et", "à", "un", "il", "être", "en", "avoir", "que", "pour", "dans", "ce", "son", "une", "sur", "avec", "ne", "se", "pas", "tout", "pouvoir", "par", "plus", "comme", "où", "quand", "qui", "quoi", "très", "bien", "beaucoup", "peu", "aussi", "encore", "toujours", "jamais", "ici", "là", "sans", "après", "avant", "depuis", "pendant", "malgré", "selon", "contre", "vers", "chez", "sous", "entre", "parmi", "au", "aux", "du", "des", "la", "les", "cette", "ces", "dont", "lequel", "laquelle", "lesquels", "lesquelles", "auquel", "auxquels", "auxquelles", "duquel", "desquels", "desquelles", "ceci", "cela", "ça", "celui", "celle", "ceux", "celles", "même", "autre", "tel", "chaque", "quelque", "plusieurs", "certain", "aucun", "nul", "assez", "mal", "trop", "moins", "autant", "tant", "si", "partout", "nulle", "part", "ailleurs", "dedans", "dehors", "dessus", "dessous", "devant", "derrière", "près", "loin", "maintenant", "hier", "demain", "bientôt", "tard", "tôt", "&"
|
129
|
+
]
|
126
130
|
}
|
package/src/i18n/ja.json
CHANGED
@@ -122,5 +122,9 @@
|
|
122
122
|
"title": "ページが見つかりません",
|
123
123
|
"description": "申し訳ありません。このページは存在しないか削除されました。",
|
124
124
|
"button": "メインページへ"
|
125
|
-
}
|
125
|
+
},
|
126
|
+
|
127
|
+
"stopWords": [
|
128
|
+
"は", "の", "が", "を", "に", "で", "と", "から", "まで", "より", "へ", "や", "か", "も", "こそ", "でも", "しか", "だけ", "ばかり", "さえ", "すら", "など", "なら", "なり", "やら", "きり", "ぐらい", "くらい", "ほど", "だの", "とか", "し", "て", "で", "た", "だ", "である", "です", "ます", "だろう", "でしょう", "らしい", "そうだ", "ようだ", "みたいだ", "かもしれない", "にちがいない", "はずだ", "べきだ", "べきである", "のだ", "んだ", "ことだ", "ものだ", "わけだ", "つもりだ", "ところだ", "ばかりだ", "ということだ", "というものだ", "という", "といった", "とする", "とした", "として", "とすれば", "とすると", "とか", "やら", "なり", "だの", "とも", "でも", "にも", "でさえ", "にさえ", "でこそ", "にこそ", "こそ", "さえ", "すら", "ばかり", "だけ", "しか", "ほか", "以外", "だって", "って", "では", "じゃ", "なら", "ならば", "なれば", "たら", "れば", "ば", "と", "ても", "でも", "けれど", "けれども", "が", "しかし", "だが", "でも", "ところが", "それなのに", "それでも", "しかし", "でも", "ただし", "ただ", "もっとも", "もちろん", "なお", "ちなみに", "そして", "それから", "また", "さらに", "その上", "加えて", "つまり", "すなわち", "いわば", "要するに", "結局", "とにかく", "ともかく", "いずれにしても", "なんにしても", "どうせ", "せっかく", "わざわざ", "特に", "とくに", "特別に", "とりわけ", "なかでも", "中でも", "例えば", "たとえば", "いわゆる", "所謂", "いわば", "まさに", "正に", "実に", "本当に", "全く", "まったく", "非常に", "とても", "大変", "かなり", "相当", "結構", "ずいぶん", "だいぶ", "多少", "少し", "ちょっと", "やや", "わりと", "割と", "まあまあ", "そこそこ", "それなり", "&"
|
129
|
+
]
|
126
130
|
}
|
package/src/i18n/pt.json
CHANGED
@@ -122,5 +122,9 @@
|
|
122
122
|
"title": "Página não encontrada",
|
123
123
|
"description": "Desculpe, esta página não existe ou foi removida.",
|
124
124
|
"button": "Página principal"
|
125
|
-
}
|
125
|
+
},
|
126
|
+
|
127
|
+
"stopWords": [
|
128
|
+
"o", "a", "de", "e", "do", "da", "em", "um", "para", "é", "com", "não", "uma", "os", "no", "se", "na", "por", "mais", "as", "dos", "como", "mas", "foi", "ao", "ele", "das", "tem", "à", "seu", "sua", "ou", "ser", "quando", "muito", "há", "nos", "já", "está", "eu", "também", "só", "pelo", "pela", "até", "isso", "ela", "entre", "era", "depois", "sem", "mesmo", "aos", "ter", "seus", "suas", "numa", "pelos", "pelas", "esse", "esses", "essa", "essas", "num", "onde", "bem", "te", "então", "foram", "teu", "tua", "teus", "tuas", "nosso", "nossa", "nossos", "nossas", "dele", "dela", "deles", "delas", "este", "esta", "estes", "estas", "aquele", "aquela", "aqueles", "aquelas", "isto", "isso", "aquilo", "todo", "toda", "todos", "todas", "outro", "outra", "outros", "outras", "qual", "quais", "quanto", "quanta", "quantos", "quantas", "algum", "alguma", "alguns", "algumas", "nenhum", "nenhuma", "nenhuns", "nenhumas", "muito", "muita", "muitos", "muitas", "pouco", "pouca", "poucos", "poucas", "tanto", "tanta", "tantos", "tantas", "primeiro", "primeira", "primeiros", "primeiras", "último", "última", "últimos", "últimas", "grande", "grandes", "pequeno", "pequena", "pequenos", "pequenas", "novo", "nova", "novos", "novas", "velho", "velha", "velhos", "velhas", "bom", "boa", "bons", "boas", "mau", "má", "maus", "más", "melhor", "melhores", "pior", "piores", "maior", "maiores", "menor", "menores", "aqui", "aí", "ali", "lá", "cá", "onde", "aonde", "donde", "quando", "enquanto", "como", "porque", "porquê", "para", "que", "conforme", "segundo", "consoante", "salvo", "exceto", "menos", "através", "desde", "durante", "antes", "depois", "contra", "sobre", "sob", "perante", "ante", "segundo", "conforme", "mediante", "durante", "excepto", "fora", "tirante", "afora", "além", "aquém", "dentro", "fora", "perto", "longe", "acima", "abaixo", "adiante", "atrás", "diante", "&"
|
129
|
+
]
|
126
130
|
}
|
package/src/i18n/ru.json
CHANGED
@@ -119,5 +119,9 @@
|
|
119
119
|
"title": "Страница не найдена",
|
120
120
|
"description": "Упс, такой страницы не существует или она была удалена.",
|
121
121
|
"button": "На главную"
|
122
|
-
}
|
122
|
+
},
|
123
|
+
|
124
|
+
"stopWords": [
|
125
|
+
"и", "в", "на", "с", "по", "от", "до", "за", "над", "под", "о", "об", "у", "для", "к", "ко", "из", "без", "при", "а", "но", "или", "да", "же", "ли", "бы", "не", "то", "через", "между", "среди", "около", "возле", "после", "перед", "против", "вместо", "кроме", "несмотря", "благодаря", "согласно", "вопреки", "навстречу", "вслед", "ради", "что", "как", "когда", "где", "почему", "зачем", "куда", "откуда", "если", "хотя", "чтобы", "пока", "пусть", "будто", "словно", "точно", "едва", "лишь", "только", "именно", "уже", "ещё", "вот", "вон", "тут", "там", "здесь", "сюда", "туда", "сейчас", "тогда", "всегда", "никогда", "иногда", "часто", "редко", "очень", "весьма", "довольно", "почти", "совсем", "вполне", "крайне", "слишком", "чуть", "едва", "&"
|
126
|
+
]
|
123
127
|
}
|
package/src/i18n/zh.json
CHANGED
@@ -122,5 +122,9 @@
|
|
122
122
|
"title": "未找到页面",
|
123
123
|
"description": "抱歉,此页面不存在或已被删除。",
|
124
124
|
"button": "返回首页"
|
125
|
-
}
|
125
|
+
},
|
126
|
+
|
127
|
+
"stopWords": [
|
128
|
+
"的", "了", "在", "是", "我", "有", "和", "就", "不", "人", "都", "一", "一个", "上", "也", "很", "到", "说", "要", "去", "你", "会", "着", "没有", "看", "好", "自己", "这", "那", "里", "来", "他", "时候", "过", "出", "多", "么", "于", "她", "手", "可", "家", "学", "只", "以", "主", "会", "样", "年", "想", "生", "同", "老", "中", "十", "从", "面", "听", "女", "儿", "头", "明", "实", "之", "进", "着", "等", "部", "度", "家", "电", "力", "里", "如", "水", "化", "高", "自", "二", "理", "起", "小", "物", "现", "实", "加", "量", "都", "两", "体", "制", "机", "当", "使", "点", "从", "业", "本", "去", "把", "性", "好", "应", "开", "它", "合", "还", "因", "由", "其", "些", "然", "前", "外", "天", "政", "四", "日", "那", "社", "义", "事", "平", "形", "相", "全", "表", "间", "样", "与", "关", "各", "重", "新", "线", "内", "数", "正", "心", "反", "你", "明", "看", "原", "又", "么", "利", "比", "或", "但", "质", "气", "第", "向", "道", "命", "此", "变", "条", "只", "没", "结", "解", "问", "意", "建", "月", "公", "无", "系", "军", "很", "情", "者", "最", "立", "代", "想", "已", "通", "并", "提", "直", "题", "党", "程", "展", "五", "果", "料", "象", "员", "革", "位", "入", "常", "文", "总", "次", "品", "式", "活", "设", "及", "管", "特", "件", "长", "求", "老", "头", "基", "资", "边", "流", "路", "级", "少", "图", "山", "统", "接", "知", "较", "将", "组", "见", "计", "别", "她", "手", "角", "期", "根", "论", "运", "农", "指", "&"
|
129
|
+
]
|
126
130
|
}
|