Перевод
Языком по умолчанию для NocoBase является английский. В настоящее время основное приложение поддерживает английский, итальянский, нидерландский, упрощенный китайский и японский языки. Мы искренне приглашаем вас внести вклад в переводы для дополнительных языков, чтобы пользователи по всему миру могли пользоваться еще более удобным NocoBase-опытом.
I. Системная локализация
1. Перевод системного интерфейса и плагинов
1.1 Область перевода
Это относится только к локализации системного интерфейса NocoBase и плагинов и не охватывает другие пользовательские материалы (например, таблицы данных или блоки Markdown).


1.2 Обзор содержимого локализации
Для управления содержимым локализаций NocoBase использует Git. Основной репозиторий: https://github.com/nocobase/nocobase/tree/main/locales
Каждый язык представлен JSON-файлом, названным в соответствии с его языковым кодом (например, de-DE.json, fr-FR.json). Структура файла организована по модулям плагинов: для хранения переводов используются пары ключ-значение. Например:
При переводе постепенно приводите структуру к формату, похожему на следующий:
1.3 Тестирование и синхронизация переводов
-
После завершения перевода протестируйте и проверьте, что все тексты отображаются корректно. Мы также выпустили плагин для валидации переводов — найдите
Тест локализациив маркетплейсе плагинов.
После установки скопируйте JSON-содержимое из соответствующего файла локализации в репозитории git, вставьте его внутрь и нажмите OK, чтобы проверить, эффективен ли перевод.

-
После отправки системные скрипты автоматически синхронизируют содержимое локализации с репозиторием кода.
1.4 Локализационный плагин NocoBase 2.0
Примечание (Note): Этот раздел находится в разработке. Локализационный плагин для NocoBase 2.0 имеет некоторые отличия от версии 1.x. Подробности будут добавлены в будущем обновлении.
II. Локализация документации (NocoBase 2.0)
Документация для NocoBase 2.0 ведется в новой структуре. Исходные файлы документации находятся в основном репозитории NocoBase:
https://github.com/nocobase/nocobase/tree/next/docs
2.1 Структура документации
Документация использует Rspress как генератор статического сайта и поддерживает 22 языка. Структура организована следующим образом:
2.2 Рабочий процесс перевода
-
Синхронизация с английским исходником: Все переводы должны основываться на английской документации (
docs/en/). Когда английская документация обновляется, переводы также должны быть обновлены соответствующим образом. -
Стратегия веток:
- Используйте ветку
developилиnextкак ориентир для актуального английского контента - Создайте вашу ветку перевода на основе целевой ветки
- Используйте ветку
-
Структура файлов: Каждый каталог языка должен зеркалировать структуру каталогов английского варианта. Например:
2.3 Внесение переводов
- Сделайте форк репозитория: https://github.com/nocobase/nocobase
- Склонируйте ваш форк и переключитесь на ветку
developилиnext - Перейдите в каталог
docs/docs/ - Найдите каталог языка, для которого хотите внести вклад (например,
ja/для японского) - Переведите markdown-файлы, сохранив ту же структуру файлов, что и в английской версии
- Проверьте изменения локально:
- Отправьте Pull Request в основной репозиторий
2.4 Рекомендации по переводам
- Сохраняйте единое форматирование: поддерживайте ту же структуру markdown, заголовки, блоки кода и ссылки, что и в источнике
- Сохраняйте frontmatter: не меняйте YAML frontmatter в начале файлов, если он не содержит текст, который можно переводить
- Ссылки на изображения: используйте те же пути к изображениям из
docs/public/— изображения общие для всех языков - Внутренние ссылки: обновляйте внутренние ссылки, чтобы они указывали на правильный путь к языку
- Примеры кода: как правило, примеры кода не следует переводить, но комментарии внутри кода можно переводить
2.5 Настройка навигации
Структура навигации для каждого языка задается в файлах _nav.json и _meta.json в каждом каталоге языка. При добавлении новых страниц или разделов обязательно обновляйте эти конфигурационные файлы.
III. Локализация сайта
Страницы сайта и все материалы хранятся в: https://github.com/nocobase/website
3.1 Начало работы и справочные ресурсы
При добавлении нового языка обратитесь к существующим страницам языков:
- Английский: https://github.com/nocobase/website/tree/main/src/pages/en
- Китайский: https://github.com/nocobase/website/tree/main/src/pages/cn
- Японский: https://github.com/nocobase/website/tree/main/src/pages/ja

Глобальные изменения стилей находятся по адресу:
- Английский: https://github.com/nocobase/website/blob/main/src/layouts/BaseEN.astro
- Китайский: https://github.com/nocobase/website/blob/main/src/layouts/BaseCN.astro
- Японский: https://github.com/nocobase/website/blob/main/src/layouts/BaseJA.astro

Локализация глобальных компонентов сайта доступна по адресу: https://github.com/nocobase/website/tree/main/src/components

3.2 Структура контента и метод локализации
Мы используем смешанный подход к управлению контентом. Контент и ресурсы на английском, китайском и японском языках регулярно синхронизируются из системы CMS и перезаписываются, тогда как для остальных языков можно редактировать файлы локально напрямую. Локальный контент хранится в каталоге content и организован следующим образом:
3.3 Рекомендации по переводу контента
- О переводе Markdown-содержимого
- Создайте новый файл языка на основе файла по умолчанию (например,
index.md->index.fr.md) - Добавьте локализованные свойства в соответствующие поля в JSON-файле
- Сохраняйте единообразие структуры файлов, ссылок и ссылок на изображения
- О переводе JSON-контента (JSON Content Translation) Многие метаданные контента хранятся в JSON-файлах, которые обычно содержат многоязычные поля:
Примечания к переводу:
-
Соглашение об именовании полей: Поля перевода обычно используют формат
{original_field}_{language_code}- Например: title_fr (французский заголовок), description_de (немецкое описание)
-
При добавлении нового языка:
- Добавьте соответствующую версию с суффиксом языка для каждого поля, которое нужно перевести
- Не изменяйте исходные значения полей (например, title, description и т.д.), так как они служат контентом языка по умолчанию (английский)
-
Механизм синхронизации с CMS:
- Система CMS периодически обновляет контент на английском, китайском и японском языках
- Система будет обновлять/перезаписывать контент только для этих трех языков (некоторые свойства в JSON) и не удалит поля языков, добавленные другими участниками
- Например: если вы добавили французский перевод (title_fr), синхронизация CMS не повлияет на это поле
3.4 Настройка поддержки нового языка
Чтобы добавить поддержку нового языка, нужно изменить конфигурацию SUPPORTED_LANGUAGES в файле src/utils/index.ts:
3.5 Файлы макетов и стили
Для каждого языка нужны соответствующие файлы макета:
- Создайте новый файл макета (например, для французского создайте
src/layouts/BaseFR.astro) - Можно скопировать существующий файл макета (например,
BaseEN.astro) и перевести его - Файл макета содержит переводы для глобальных элементов, таких как меню навигации, футеры и т.д.
- Обязательно обновите конфигурацию переключателя языка, чтобы корректно переключаться на вновь добавленный язык
3.6 Создание каталогов страниц для языка
Создайте отдельные каталоги страниц для нового языка:
- Создайте папку с названием, соответствующим коду языка, в каталоге
src(например,src/fr/) - Скопируйте структуру страниц из других каталогов языка (например,
src/en/) - Обновите содержимое страниц, переведя заголовки, описания и текст на целевой язык
- Убедитесь, что страницы используют правильный компонент макета (например,
.layout: '@/layouts/BaseFR.astro')
3.7 Локализация компонентов
Некоторые общие компоненты тоже нуждаются в переводе:
- Проверьте компоненты в каталоге
src/components/ - Обратите особое внимание на компоненты с фиксированным текстом (например, панели навигации, футеры и т.д.)
- Компоненты могут использовать условный рендеринг, чтобы отображать контент на разных языках:
3.8 Проверка и валидация
После завершения перевода проведите тщательное тестирование:
- Запустите сайт локально (обычно используя
yarn dev) - Проверьте, как отображаются все страницы на новом языке
- Убедитесь, что переключение языка работает корректно
- Проверьте, что все ссылки указывают на страницы нужной языковой версии
- Проверьте адаптивность, чтобы переведенный текст не ломал дизайн страниц
IV. Как начать переводить
Если вы хотите внести вклад в перевод нового языка для NocoBase, выполните следующие шаги:
После завершения перевода отправьте Pull Request в NocoBase. Новые языки появятся в системной конфигурации, что позволит выбрать, какие языки отображать.

Документация NocoBase 1.x
Чтобы ознакомиться с руководством по переводу для NocoBase 1.x, перейдите по:

