Проект теперь поддерживает автоматическую транслитерацию русского языка при создании постов и топиков.
Функция преобразует русский текст в латиницу (ГОСТ 16876-71):
import { transliterate } from './lib/utils';
// Примеры:
transliterate('Привет мир') // 'privet-mir'
transliterate('Как дела?') // 'kak-dela'
transliterate('РУССКИЙ ЯЗЫК') // 'russkiy-yazyk'
transliterate('Ёлка, ёж и ёлочка') // 'yolka-yozh-i-yolochka'При создании топика на русском языке автоматически сохраняется транслитерированная версия заголовка:
await createTopic({
title: 'Как использовать фреймворк?',
forumSlug: 'javascript',
author: 'username',
body: 'Содержание топика...'
});
// Генерируемый файл будет содержать:
// ---
// title: Как использовать фреймворк?
// titleTranslit: kak-ispolzovat-freymuork
// forumSlug: javascript
// author: username
// createdAt: 2026-05-03T12:34:56.789Z
// ---
//
// Содержание топика...Транслитерация хранится в поле titleTranslit frontmatter-данных каждого топика:
- Исходный текст: сохраняется в поле
title - Транслитерированный текст: сохраняется в поле
titleTranslit
Это позволяет:
- ✅ Использовать оригинальный русский текст для отображения
- ✅ Генерировать читаемые URL'ы (slug'и)
- ✅ Улучшить поиск и индексацию
- ✅ Обеспечить совместимость с системами, требующими латиницы
- Все русские буквы (строчные и прописные)
- Двойные буквы (ж→zh, ц→ts, ч→ch, ш→sh, щ→sch, х→kh)
- Специальные буквы (ё→yo, ю→yu, я→ya)
- Слогообразующие символы (ы→y, э→e)
- Пробелы преобразуются в дефисы (
-) - Текст переводится в нижний регистр
- Специальные символы удаляются (кроме дефиса)
- Множественные дефисы объединяются в один
- Дефисы в начале и конце удаляются
| Исходный текст | Результат транслитерации |
|---|---|
| Привет мир | privet-mir |
| JavaScript для начинающих | javascript-dlya-nachinayushchikh |
| Что нового? | chto-novogo |
| Первая программа | pervaya-programma |
| Ёлка на праздник | yolka-na-prazdnik |
Функция transliterate() автоматически используется:
- ✅ При создании топиков - сохраняет
titleTranslit - 📋 Готово для использования в:
- Генерации URL slug'ов
- Полнотекстовом поиске
- Метаданных страниц
- Фильтрации и сортировке
При обновлении существующих топиков (не используется createTopic), поле titleTranslit может отсутствовать. Это нормально - приложение будет работать без ошибок благодаря опциональности поля.