Переводы
Blockstudio поставляется с переводами в папке languages. WordPress использует их, если язык сайта или языка профиля пользователя совпадает с одним из них. Это работает одинаково, когда Blockstudio запущен как плагин, обязательный плагин или пакет Composer.
Доступные языки
Blockstudio включает переводы для локалей WordPress, указанных в прилагаемом languages/locales.json, в том числе региональные варианты, а также формальные и неформальные варианты. Английский (en_US) — исходный язык, для него файл перевода не требуется. Список объединяет локали, поддерживаемые WordPress в GlotPress, и варианты, доступные в ядре WordPress через переводы API.
Существующие переводы на немецкий (de_DE) и формальный немецкий (de_DE_formal) сохранены. Дополнительные переводы созданы с помощью ИИ на базе GPT-6 Luna и помечены как машинные в заголовках .po. Они прошли автоматическую проверку полноты и формата, но ещё не все проверены носителями языка. Исправления приветствуются.
Переводы охватывают элементы управления полями в редакторе блоков, страницу администрирования, холст, оверлей инструментов разработчика и сообщения конечных точек REST. Подписи и справочные тексты в ваших собственных файлах block.json относятся к вашей теме или плагину и используют его текстовый домен.
Выберите язык в Настройки > Общие > Язык сайта или задайте персональный язык в профиле WordPress. Blockstudio автоматически использует эту локаль. Он не добавляет языки в список выбора языка WordPress: локаль также должна быть доступна в вашей установке WordPress. На сайте не требуется запросов к ИИ, подписки на перевод или дополнительных настроек среды выполнения.
Переопределение перевода
Файлы перевода в wp-content/languages/plugins имеют приоритет над прилагаемыми файлами как для строк PHP (blockstudio-de_DE.mo или blockstudio-de_DE.l10n.php), так и для скриптов (по одному файлу на каждый идентификатор скрипта, например blockstudio-de_DE-blockstudio-blocks.json).
Внести вклад в перевод
Каждый язык представлен файлом .po, который можно редактировать в любом текстовом редакторе или с помощью инструмента перевода, например Poedit. Мы приветствуем исправления и новые языки в виде запросов на включение изменений.
- Чтобы добавить язык, скопируйте
languages/blockstudio.potвlanguages/blockstudio-<locale>.po, напримерblockstudio-fr_FR.po, и укажите заголовкиLanguageиPlural-Forms. Чтобы улучшить перевод, отредактируйте существующий файл.po. - Переведите строки. Сохраняйте в переводе заполнители, например
%1$s. - Запустите
npm run i18n. Он создаст файлы.mo,.l10n.phpи.json, которые загружает WordPress. - Добавьте файл
.poвместе со сгенерированными файлами в коммит и откройте запрос на включение изменений.
Если вы не можете запустить npm, достаточно открыть запрос на включение изменений только с файлом .po. Сгенерированные файлы можно добавить перед слиянием.
Создание недостающих переводов
Сопровождающие проекта могут создавать недостающие записи с помощью аутентифицированной команды Codex CLI. Это необязательная команда для разработки, а не то, что запускает WordPress:
npm run i18n:translate -- --dry-run
npm run i18n:translate
Модель по умолчанию — gpt-6-luna. Чтобы работать с одной локалью, используйте npm run i18n:translate -- --locale fr_FR. Команда извлекает последние исходные строки, заполняет недостающие переводы, а затем компилирует файлы .mo, .l10n.php и .json для отдельных скриптов. В Codex отправляются только общедоступные строки интерфейса, их контекст и существующие формы, но не содержимое сайта или данные пользователей.
Существующие непустые переводы никогда не заменяются. Завершённые пакеты сохраняются, поэтому после прерывания можно запустить команду повторно, чтобы продолжить перевод оставшихся строк. Перед сохранением проверяются заполнители, например %1$s, разметка HTML, технические идентификаторы и обязательные формы множественного числа. Записи, помеченные как требующие проверки, и изменённые исходные формы множественного числа оставляются переводчику на проверку. Если запрошенная модель недоступна, другая модель не используется.
npm run i18n:locales явно обновляет список локалей и правила множественного числа из WordPress/GlotPress. npm run i18n:coverage проверяет полноту всех локалей в списке, хранящемся в репозитории. Ни проверка охвата, ни обычный CI не обращаются к ИИ и не загружают данные о локалях. В README репозитория описаны варианты пакетной обработки, параллельного выполнения и восстановления.
Строки кода, доступные для перевода
- PHP: используйте функции WordPress с текстовым доменом
blockstudio, например__( 'Invalid block.', 'blockstudio' ). - JavaScript: импортируйте
__из@/utils/__и передайте строковый литерал, например__( 'Add row' ). Строку, собранную во время выполнения, нельзя перевести, поэтому используйте отдельный строковый литерал для каждого варианта. - Для нового пакета скриптов с переводимыми строками добавьте запись в
scripts/i18n.tsи вызовwp_set_script_translations()с тем же идентификатором иTranslations::script_path().
После изменения строк запустите npm run i18n. Она обновляет languages/blockstudio.pot и каждый файл .po. Новые строки остаются на английском, пока переводчик или npm run i18n:translate не заполнит их. CI запускает npm run i18n:check и npm run i18n:coverage, которые выявляют устаревшие скомпилированные файлы, проблемы извлечения строк или неполный охват локалей. Генерация по-прежнему выполняется сопровождающим явно.