Який найкращий спосіб створити плагін, готовий до перекладу?
Його не потрібно перекладати з самого початку, але він повинен бути легко перекладається, щоб колеги-розробники з різних культур могли брати участь у процесі локалізації плагіна.
Який найкращий спосіб створити плагін, готовий до перекладу?
Його не потрібно перекладати з самого початку, але він повинен бути легко перекладається, щоб колеги-розробники з різних культур могли брати участь у процесі локалізації плагіна.
Відповіді:
Не використовуйте 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 і створіть новий каталог (Файл ›Новий каталог ...) з цими налаштуваннями:
.
..
(ми збережемо мовний файл у підкаталозі плагіна під назвою 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
своє ім'я плагіна в першому та третьому параметрах 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/ )