wplangs.ru wordpress WP Langs

Как создать автообновляемый файл перевода по стандарту XTD в WordPress

Стандарты перевода в WordPress продолжают развиваться, и формат XTD (Extended Translation Data) становится все более популярным для более гибкой локализации. В этой статье разберём, как создать и настроить автообновляемый файл перевода по стандарту XTD для темы или плагина WordPress, а также как автоматизировать его обновление и интеграцию в сайт.

Что такое формат XTD и зачем он нужен в WordPress?

Формат XTD расширяет привычные PO/MO-файлы, добавляя дополнительные метаданные и контекст для переводчиков. Это помогает сделать переводы более точными и качественными, особенно когда в проекте много похожих строк или сложных фраз. В отличие от классических PO-файлов, XTD поддерживает более детальную структуру, например, комментарии, контекст и связи между строками.

Использование XTD особенно актуально для проектов с большим количеством языков и сложными текстовыми элементами, например, многоязычные сайты с динамическим контентом.

WordPress пока не поддерживает XTD «из коробки», но с помощью специальных библиотек и плагинов можно интегрировать этот формат в рабочий процесс локализации.

Подготовка проекта к работе с XTD: инструменты и плагины

Для работы с XTD-файлами понадобятся следующие инструменты:

  • Poedit Pro — одна из немногих программ, поддерживающих XTD, позволяет редактировать и экспортировать файлы в этом формате.
  • WPML или Loco Translate
  • Custom скрипты на PHP для автоматической генерации и обновления XTD-файлов из исходных текстов темы или плагина.

Также рекомендуем ознакомиться с PHP-библиотекой GlotPress XTD — она позволяет работать с XTD на уровне кода.

Как создать XTD-файл перевода вручную

Для начала создадим простой XTD-файл для темы. Предположим, у нас есть тема с текстом:

<?php
echo esc_html__('Hello, world!', 'wplangs');
?>

В Poedit Pro создаём новый проект, указываем исходные языковые строки и экспортируем в XTD. В отличие от PO, XTD-файл будет содержать расширенный контекст.

Пример базовой структуры XTD-файла:

<xtd version="1.0">
  <file>
    <header>
      <project-name>wplangs-theme</project-name>
      <language>ru</language>
    </header>
    <translation-unit id="1">
      <source>Hello, world!</source>
      <target>Привет, мир!</target>
      <context>greeting</context>
      <note>Основной приветственный текст</note>
    </translation-unit>
  </file>
</xtd>

Такой файл можно загружать на сайт для локализации, но для автоматизации лучше использовать скрипты.

Автоматизация создания и обновления XTD-файлов в WordPress

Чтобы не обновлять переводы вручную, создадим PHP-функцию, которая будет сканировать исходники темы или плагина, извлекать строки для перевода и формировать XTD-файл.

Пример функции wplangs_generate_xtd():

function wplangs_generate_xtd($source_dir, $output_file) {
    $strings = [];
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source_dir));

    foreach ($iterator as $file) {
        if ($file->getExtension() === 'php') {
            $content = file_get_contents($file->getPathname());
            preg_match_all('/__\(\'(.+?)\',\s*\'(.+?)\'/s', $content, $matches);
            foreach ($matches[1] as $key => $string) {
                $domain = $matches[2][$key];
                $strings[$string] = [
                    'context' => 'default',
                    'note' => 'Автоматический сбор',
                ];
            }
        }
    }

    $xml = new SimpleXMLElement('<xtd version="1.0"><file></file></xtd>');
    $xmlFile = $xml->file;
    $header = $xmlFile->addChild('header');
    $header->addChild('project-name', 'wplangs-project');
    $header->addChild('language', 'ru');

    $id = 1;
    foreach ($strings as $string => $data) {
        $tu = $xmlFile->addChild('translation-unit');
        $tu->addAttribute('id', $id++);
        $tu->addChild('source', htmlspecialchars($string));
        $tu->addChild('target', '');
        $tu->addChild('context', $data['context']);
        $tu->addChild('note', $data['note']);
    }

    $xml->asXML($output_file);
}

Эта функция сканирует все PHP-файлы в указанной директории, извлекает строки для перевода, использующие функцию __(), и генерирует XTD-файл с базовым контекстом и пустыми переводами.

Интеграция XTD-переводов в WordPress

Чтобы WordPress мог использовать XTD-файлы, нужно преобразовывать их в PO/MO формат, который WordPress распознаёт. Для этого можно использовать связку скриптов или плагины, которые конвертируют XTD в PO при обновлении.

Например, можно настроить задачу cron, которая будет запускать конвертацию с помощью утилит Poedit Pro или кастомного PHP-скрипта, основанного на библиотеке GlotPress XTD.

Также можно дополнить функцию загрузки текстового домена, чтобы она сначала пыталась загрузить XTD, а при невозможности — fallback на PO.

Использование плагина Clearfy Pro для оптимизации перевода

Плагин Clearfy Pro помогает управлять загрузкой языковых файлов и оптимизировать работу с переводами. Он позволяет отключать ненужные языковые файлы и кешировать переводы, что ускоряет загрузку сайта.

Совместно с XTD-автоматизацией Clearfy Pro обеспечит более плавный и быстрый процесс локализации.

Резюме и рекомендации

Работа с форматом XTD в WordPress — это шаг к более профессиональной и точной локализации, особенно для сложных проектов. Автоматизация генерации и обновления XTD-файлов помогает не тратить время на ручные операции и поддерживать актуальность переводов.

Рекомендуется внедрять XTD как часть общего процесса локализации, используя инструменты, которые поддерживают конвертацию в привычные для WordPress форматы PO/MO. Для оптимизации работы с переводами стоит обратить внимание на плагины, например, Clearfy Pro.

Если вы хотите глубже погрузиться в тему XTD для WordPress, советуем изучить документацию GlotPress и возможности Poedit Pro.

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее