Как лучше всего создать плагин, который готов к переводу?
Его не нужно переводить с самого начала, но его нужно легко перевести, чтобы коллеги-разработчики из разных культур могли участвовать в процессе локализации плагина.
Как лучше всего создать плагин, который готов к переводу?
Его не нужно переводить с самого начала, но его нужно легко перевести, чтобы коллеги-разработчики из разных культур могли участвовать в процессе локализации плагина.
Ответы:
Не используйте echo
или print()
для вывода текста, вместо этого используйте функции WordPress __()
и _e()
:
/** Not localization friendly */
echo "Welcome to my plugin";
// OR
print("Welcome to my plugin");
/** Localization friendly */
_e('Welcome to my plugin', 'my-plugin');
// OR
$my_text = __('Welcome to my plugin', 'my-plugin');
echo $my_text;
_e()
и __()
предоставит перевод - на текущем языке - текста, представленного в качестве первого параметра. _e()
выведет текст, тогда как __()
вернет его.
Второй параметр - это текстовый домен , вы будете использовать его, чтобы сообщить WordPress, что текст, предоставленный в качестве первого параметра, принадлежит этому плагину, вы можете использовать любое имя, которое хотите, но я предпочитаю использовать то же имя, которое я использовал для плагина Файл каталога, я считаю его более интуитивно понятным.
С __()
и sprintf()
:
/** Get the username */
$username = 'Magictrick';
/** Not localization friendly */
echo "Hello $username";
/** Localization friendly */
printf(__('Hello %s', 'my-plugin'), $username);
// OR
$my_text = sprintf(__('Hello %s', 'my-plugin'), $username);
echo $my_text;
Определения
Откройте Poedit и создайте новый каталог (Файл ›Новый Catallog ...) со следующими настройками:
.
..
, (мы будем хранить языковой файл в подкаталоге плагина под названием languages)__
и_e
Сохраните каталог как и отсканируйте файлы плагинов на предмет переводимого текста, нажав кнопку обновления. Когда обновление будет завершено, закройте этот каталог, вам не нужно будет обновлять этот файл, если вы не добавите в ваш плагин новые переводимые строки (т.е. вложенные в или )./my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin.pot
__()
_e()
Теперь давайте создадим первый перевод (я буду использовать fr_FR):
Используя Podeit , создайте каталог из файла POT (Файл ›Новый каталог из файла POT ...) :
Сохраните каталог как . Переведите некоторые или все строки, снова сохраните файл .po, загрузите файлы .po и .mo./my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin-fr_FR.po
Обратите внимание, что всякий раз, когда вы сохраняете файл .po, создается файл .mo с тем же именем, имя файла .po имеет решающее значение , оно состоит из конкатенации текстового домена плагина (my-plugin) и языкового стандарта ( fr_FR), всегда называйте свои .po файлы для плагинов, например: [textdomain] - [locale] .po , вот несколько примеров:
wpcf7-it_IT.po
wpcf7-pt_BR.po
wpcf7-ar.po
... Да!Всякий раз, когда плагин обновляется новым текстом, обновляйте po-файл, переводите новые строки и повторно загружайте файлы .po и .mo
Где-то в вашем плагине вы должны указать WordPress использовать ваш файл .mo, вы можете сделать это, используя этот код в начале вашего файла плагина:
function my_plugin_init() {
load_plugin_textdomain( 'my-plugin', false, 'my-plugin/languages' );
}
add_action('init', 'my_plugin_init');
Замените my-plugin
на имя вашего плагина в 1-м и 3-м параметре load_plugin_textdomain
функции.
Некоторые причины могут не работать:
_e('my text')
на _e('my text', 'my-plugin')
)Набиль довольно полон ответа, но есть несколько вариантов:
Ваш плагин находится в хранилище плагинов WordPress.org
Вы хотите, чтобы ваш плагин работал только с WordPress 4.6 или выше.
Шаги следующие:
В файле readme.txt вашего плагина добавьте
Requires at least: 4.6
. См. Https://developer.wordpress.org/plugins/wordpress-org/how-your-readme-txt-works/
если это не так, загрузите ваш плагин в хранилище плагинов WordPress. Смотрите https://wordpress.org/plugins/developers/add/ .
Найдите слаг / текстовый домен вашего плагина. Для этого перейдите на страницу вашего плагина в хранилище плагинов WordPress. URL будет похож на https://wordpress.org/plugins/your-plugin-slug/ . Последняя часть URL, «ваш-плагин-слаг», является слагом вашего плагина. Это то, что вы используете для текстовой области функций перевода.
Используйте функции перевода WordPress в вашем плагине (например __e(‘hello’, ‘my-plugin-domain’);
). Просто убедитесь, что вы используете правильный текстовый домен плагина, полученный на предыдущем шаге. См. Https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/ для получения дополнительной информации.
Если вы выполните описанные выше шаги, WordPress позаботится о:
(Ответ из моего поста здесь: https://cmljnelson.blog/2019/01/01/the-really-lazy-way-to-translate-a-wordpress-plugin/ )