wp i18n

Предоставляет инструменты интернационализации для проектов на WordPress.

Список команд Описание
wp i18n make-pot Создайте файл POT для проекта WordPress.
wp i18n make-json Извлекает все JavaScript строки из переведенного PO файла и создает из них JSON файлы (отдельный для каждого JS файла). C WP-CLI 2.1.0.
wp i18n make-mo Создает MO файлы из PO файлов. C версии WP-CLI 2.5.
wp i18n update-po Update PO files from a POT file.

Примеры

# Create a POT file for the WordPress plugin/theme in the current directory
$ wp i18n make-pot . languages/my-plugin.pot

Исходный код команд


wp i18n make-pot

Создайте файл POT для проекта WordPress.

Scans PHP and JavaScript files for translatable strings, as well as theme stylesheets and plugin files if the source directory is detected as either a plugin or theme.

Использование

wp i18n make-pot {source} [{destination}] [--slug={slug}] [--domain={domain}] [--ignore-domain] [--merge[={paths}]] [--subtract={paths}] [--subtract-and-merge] [--include={paths}] [--exclude={paths}] [--headers={headers}] [--location] [--skip-js] [--skip-php] [--skip-blade] [--skip-block-json] [--skip-theme-json] [--skip-audit] [--file-comment={file-comment}] [--package-name={name}]

Можно указать Глобальные параметры и следующие:

{source}
Directory to scan for string extraction.
[{destination}]
Name of the resulting POT file.
[--slug={slug}]
Plugin or theme slug. Defaults to the source directory's basename.
[--domain={domain}]
Text domain to look for in the source code, unless the --ignore-domain option is used. By default, the "Text Domain" header of the plugin or theme is used. If none is provided, it falls back to the project slug.
[--ignore-domain]
Ignore the text domain completely and extract strings with any text domain.
[--merge[={paths}]]
Comma-separated list of POT files whose contents should be merged with the extracted strings. If left empty, defaults to the destination POT file. POT file headers will be ignored.
[--subtract={paths}]
Comma-separated list of POT files whose contents should act as some sort of blacklist for string extraction. Any string which is found on that blacklist will not be extracted. This can be useful when you want to create multiple POT files from the same source directory with slightly different content and no duplicate strings between them.
[--subtract-and-merge]
Whether source code references and comments from the generated POT file should be instead added to the POT file used for subtraction. Warning: this modifies the files passed to --subtract!
[--include={paths}]
Comma-separated list of files and paths that should be used for string extraction. If provided, only these files and folders will be taken into account for string extraction. For example, --include="src,my-file.php will ignore anything besides my-file.php and files in the src directory. Simple glob patterns can be used, i.e. --include=foo-*.php includes any PHP file with the foo- prefix. Leading and trailing slashes are ignored, i.e. /my/directory/ is the same as my/directory.
[--exclude={paths}]
Comma-separated list of files and paths that should be skipped for string extraction. For example, --exclude=".github,myfile.php would ignore any strings found within myfile.php or the .github folder. Simple glob patterns can be used, i.e. --exclude=foo-*.php excludes any PHP file with the foo- prefix. Leading and trailing slashes are ignored, i.e. /my/directory/ is the same as my/directory. The following files and folders are always excluded: node_modules, .git, .svn, .CVS, .hg, vendor, *.min.js.
[--headers={headers}]
Array in JSON format of custom headers which will be added to the POT file. Defaults to empty array.
[--location]
Whether to write #: filename:line lines. Defaults to true, use --no-location to skip the removal. Note that disabling this option makes it harder for technically skilled translators to understand each message’s context.
[--skip-js]
Skips JavaScript string extraction. Useful when this is done in another build step, e.g. through Babel.
[--skip-php]
Skips PHP string extraction.
[--skip-blade]
Skips Blade-PHP string extraction.
[--skip-block-json]
Skips string extraction from block.json files.
[--skip-theme-json]
Skips string extraction from theme.json files.
[--skip-audit]
Skips string audit where it tries to find possible mistakes in translatable strings. Useful when running in an automated environment.
[--file-comment={file-comment}]

String that should be added as a comment to the top of the resulting POT file. By default, a copyright comment is added for WordPress plugins and themes in the following manner:

Copyright (C) 2018 Example Plugin Author
This file is distributed under the same license as the Example Plugin package.

If a plugin or theme specifies a license in their main plugin file or stylesheet, the comment looks like this:

Copyright (C) 2018 Example Plugin Author
This file is distributed under the GPLv2.
[--package-name={name}]
Name to use for package name in the resulting POT file's Project-Id-Version header. Overrides plugin or theme name, if applicable.

Примеры

# Create a POT file for the WordPress plugin/theme in the current directory
$ wp i18n make-pot . languages/my-plugin.pot
# Create a POT file for the continents and cities list in WordPress core.
$ wp i18n make-pot . continents-and-cities.pot --include="wp-admin/includes/continents-cities.php" --ignore-domain
wp i18n make-pot theme/ theme/languages/textdomain.pot --domain=textdomain

wp i18n make-json

Извлекает все JavaScript строки из переведенного PO файла и создает из них JSON файлы (отдельный для каждого JS файла). C WP-CLI 2.1.0.

Подробнее о переводах для JavaScript файлов читайте здесь.

Использование

wp i18n make-json {source} [{destination}] [--purge] [--update-mo-files] [--pretty-print] [--use-map={paths_or_maps}]

Можно указать Глобальные параметры и следующие:

{source}
Путь к существующему PO файлу или к папке с несколькими PO файлами.
[{destination}]
Путь к папке куда нужно выложить сконвертированный JSON файл. По умочанию ткущая папка указанная в параметре {source}.
[--purge]
Нужно ли удалить строки из исходного PO файла. Укажите --no-purge, чтобы не очищать PO файл.
По умолчанию: true (PO файл очищается).
[--update-mo-files]
Whether MO files should be updated as well after updating PO files. Only has an effect when used in combination with --purge.
[--pretty-print]
Развернуть JSON код в созданном файле, чтобы его можно было удобно читать.
[--use-map={paths_or_maps}]
Whether to use a mapping file for the strings, as a JSON value, array to specify multiple. Each element can either be a string (file path) or object (map).

Примеры

# Create JSON files for all PO files in the languages directory
$ wp i18n make-json languages
# Create JSON files for my-plugin-de_DE.po and leave the PO file untouched.
$ wp i18n make-json my-plugin-de_DE.po /tmp --no-purge
# Create JSON files with mapping
$ wp i18n make-json languages --use-map=build/map.json
# Create JSON files with multiple mappings
$ wp i18n make-json languages '--use-map=["build/map.json","build/map2.json"]'
# Create JSON files with object mapping
$ wp i18n make-json languages '--use-map={"source/index.js":"build/index.js"}'
Пример

Допустим, в папке плагина my-plugin у вас есть три исходных файла: my-plugin.php, js/my-script.js и js/my-block.js. Вы используете WP-CLI для извлечения строк и создания каталога переводов (POT) следующим образом:

wp i18n make-pot my-plugin my-plugin/languages/my-plugin.pot

Теперь вы можете перевести плагин как обычно и создать необходимые файлы PO и MO. Допустим, мы добавим немецкий перевод в my-plugin/languages/my-plugin-de_DE.po. После этого вы можете просто запустить

wp i18n make-json my-plugin/languages

Для создания файлов перевода JavaScript. Результат будет выглядеть следующим образом:

  • Новый файл my-plugin/languages/my-plugin-de_DE-537607a1a008da40abcd98432295d39e.json с переводами для my-script.js.
  • Новый файл my-plugin/languages/my-plugin-de_DE-dad939d0db25804f91959baeec56ea8a.json с переводами для my-block.js.
  • Файл my-plugin/languages/my-plugin-de_DE.po теперь не содержит переводов для JS, в нем остались только нужные для сервера переводы. Если нужно оставить строки перевода в po файле, то добавьте флаг --no-purge:
    wp i18n make-json my-plugin/languages --no-purge

wp i18n make-mo

Создает MO файлы из PO файлов. C версии WP-CLI 2.5.

Использование

wp i18n make-mo {source} [{destination}]

Можно указать Глобальные параметры и следующие:

{source}
Путь к существующему PO файлу или папке в которой лежат несколько PO файлов.
[{destination}]
Путь к папке куда будут созданы MO файлы.
По умолчанию: исходный каталог.

Примеры

Создадим отдельный .mo файл из существующего .po файла:

$ wp i18n make-mo ./wp-content/languages/slug.po
Success: Created 1 file.

Создадим несколько .mo файлов из .po файлов в папке languages:

$ wp i18n make-mo ./wp-content/languages/
Success: Created 5 files.

wp i18n update-po

Update PO files from a POT file.

This behaves similarly to the msgmerge command.

Options

You can specify global options and the following:

Использование

wp i18n update-po {source} [{destination}]
{source}
Path to an existing POT file to use for updating
[{destination}]
PO file to update or a directory containing multiple PO files. Defaults to all PO files in the source directory.