Lingo.dev + .md/.mdx (Документация)
Lingo.dev CLI переводит документацию, блоги и контент в формате Markdown и MDX, сохраняя форматирование, блоки кода, ссылки, React-компоненты и интерактивные элементы. CLI использует mdx
bucket как рекомендуемую конфигурацию для файлов .md
и .mdx
, защищая блоки кода и встроенный код от перевода, сохраняя URL-адреса при переводе описаний, поддерживая метаданные frontmatter, оставляя React-компоненты и импорты нетронутыми, переводя свойства JSX интеллектуально и работая без проблем с Next.js, Gatsby и инструментами MDX.
Быстрая настройка
Настройте использование mdx
bucket для файлов Markdown и MDX:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"mdx": {
"include": ["docs/[locale]/*.md", "content/[locale]/*.mdx"]
}
}
}
Напоминание: [locale]
— это плейсхолдер, который должен оставаться в конфигурации буквально, так как он заменяется на фактический локаль во время выполнения CLI.
Перевод документации
npx lingo.dev@latest i18n
Переводит контент, сохраняя все форматирование Markdown и React-компоненты MDX.
Обработка контента Markdown
Сохранение блоков кода
```javascript
const message = "Hello, world!";
console.log(message);
```
Код остается непереведенным, в то время как окружающие объяснения локализуются.
Обработка ссылок и референсов
Visit [our website](https://example.com) for more details.
See the [configuration guide](./config.md) for setup instructions.
URL-адреса и относительные пути остаются нетронутыми, в то время как текст ссылок переводится.
Защита frontmatter
---
title: "Getting Started"
date: 2024-01-15
tags: ["tutorial", "beginner"]
---
# Getting Started
Ваш контент начинается здесь...
YAML frontmatter остается нетронутым, в то время как контент переводится.
Возможности компонентов MDX
React-компоненты
import { Alert } from "@components/Alert";
# Руководство по приветствию
<Alert type="info">Это важная информация для пользователей.</Alert>
Обычное содержимое markdown переводится здесь.
Импорты компонентов и JSX остаются неизменными, в то время как текстовое содержимое локализуется.
### Встроенные элементы JSX
```mdx
Вот кнопка <Button variant="primary">Начать</Button> в тексте.
Компонент остаётся, но "Начать" переводится.
```
Свойства с переводимым содержимым
<VideoPlayer
title="Вводное видео"
description="Изучите основы за 5 минут"
src="/videos/intro.mp4"
/>
Строковые свойства переводятся, а технические свойства остаются неизменными.
Экспортные операторы
export const title = "Руководство пользователя";
export const published = "2024-01-15";
# {title}
Содержимое начинается здесь...
Именованные экспорты с переводимым содержимым локализуются.
Frontmatter с компонентами
---
title: "Начало работы"
components:
- Alert
- CodeBlock
---
import { Alert, CodeBlock } from "@components";
<Alert>Добро пожаловать на нашу платформу!</Alert>
Расширенная конфигурация
Несколько каталогов с содержимым
"mdx": {
"include": [
"docs/[locale]/*.md",
"content/[locale]/*.mdx",
"blog/[locale]/*.{md,mdx}"
]
}
Примечание: Двойные звёздочки (**
) не поддерживаются в шаблонах glob. Используйте одиночную звёздочку (*
) для поиска файлов в пределах каталогов.
Исключение определённых файлов
"mdx": {
"include": ["docs/[locale]/*.{md,mdx}"],
"exclude": ["docs/[locale]/drafts/*.{md,mdx}"]
}
Блокировка свойств компонентов
"mdx": {
"include": ["content/[locale]/*.{md,mdx}"],
"lockedKeys": ["src", "href", "id", "className"]
}