Skip to content

Latest commit

 

History

History
98 lines (72 loc) · 4.15 KB

File metadata and controls

98 lines (72 loc) · 4.15 KB

Транслитерация русского языка

Проект теперь поддерживает автоматическую транслитерацию русского языка при создании постов и топиков.

Возможности

1. Функция transliterate()

Функция преобразует русский текст в латиницу (ГОСТ 16876-71):

import { transliterate } from './lib/utils';

// Примеры:
transliterate('Привет мир') // 'privet-mir'
transliterate('Как дела?') // 'kak-dela'
transliterate('РУССКИЙ ЯЗЫК') // 'russkiy-yazyk'
transliterate('Ёлка, ёж и ёлочка') // 'yolka-yozh-i-yolochka'

2. Использование при создании топиков

При создании топика на русском языке автоматически сохраняется транслитерированная версия заголовка:

await createTopic({
  title: 'Как использовать фреймворк?',
  forumSlug: 'javascript',
  author: 'username',
  body: 'Содержание топика...'
});

// Генерируемый файл будет содержать:
// ---
// title: Как использовать фреймворк?
// titleTranslit: kak-ispolzovat-freymuork
// forumSlug: javascript
// author: username
// createdAt: 2026-05-03T12:34:56.789Z
// ---
// 
// Содержание топика...

3. Хранение транслитерации

Транслитерация хранится в поле 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() автоматически используется:

  1. При создании топиков - сохраняет titleTranslit
  2. 📋 Готово для использования в:
    • Генерации URL slug'ов
    • Полнотекстовом поиске
    • Метаданных страниц
    • Фильтрации и сортировке

Примечание

При обновлении существующих топиков (не используется createTopic), поле titleTranslit может отсутствовать. Это нормально - приложение будет работать без ошибок благодаря опциональности поля.