Інтернаціоналізація (локалізація) для розробників WordPress

Що таке інтернаціоналізація

Інтернаціоналізація - це процес розробки плагіна, з урахуванням того, що він може бути легко перекладений іншими мовами. Локалізація описує процес перекладу плагіна, розробленого таким чином. Інтернаціоналізація в англійській мові часто позначається абревіатурою "i18n" (у слові "internationalization" між першою та останньою літерою розташовується якраз 18 символів), а локалізація - абревіатурою "l10n" (у слові "localization" між першою та останньою літерою є 10 .

Чому інтернаціоналізація така важлива?

WordPress використовується по всьому світу, тому було б непогано, щоб була можливість перекласти плагін будь-якою потрібною мовою. Як розробнику, вам буде непросто забезпечити локалізацію для всіх користувачів. Ви, зрештою, можете не знати потрібної перекладу мови. Однак, будь-який розробник може з успіхом інтернаціоналізувати тему для того, щоб інші могли б створювати локалізацію без потреби в модифікації вихідного коду.

Введення в Gettext

Для інтернаціоналізації в WordPress використовуються бібліотеки та інструменти gettext. Gettext - це давнє і досить добре зарекомендувало себе програмне забезпечення, яке використовується у світі програм з відкритим кодом.

Ось, двома словами, як воно працює:

  • Розробники «обертають» рядки, які вимагають перекладу, у спеціальні функції gettext.
  • Спеціальні інструменти аналізують файли вихідного коду і витягують рядки для переведення в POT-файли (Portable Objects Template — Шаблон об'єктів, що портуються)
  • У WordPress POT-файли найчастіше «годуються» GlotPress, який є інструментом спільноїроботи для перекладачів
  • Перекладачі роблять свою справу і в результаті виходить PO-файл (POT-файл, але з перекладом усередині)
  • PO-файли компілюються в бінарні MO-файли, які забезпечують швидкий доступ до рядків під час роботи системи.

Запам'ятайте наступне:перекладаються рядки вилучаються при аналізі спеціальних функцій у вихідному коді, вони не вилучаються під час роботи системи.

Зауважте, що в системі, що вже працює, ви побачите функцію _(), яка посилається на оригінальну php-функцію, сумісну з gettext, але в WordPress ви повинні користуватися функцією WordPress — __().

Текстові домени

Якщо ви перекладаєте плагін або тему, ви повинні використовувати текстовий домен для позначення всього тексту, який належить плагіну. Це покращує можливості портування та перекладу, а також збільшує сумісність з вже існуючим інструментарієм WordPress.Текстовий домен повинен відповідати «складу» даного плагіна.

Текстовий домен треба додати до заголовка плагіна. WordPress повинен інтернаціоналізувати метадані вашого плагіна або теми при відображенні плагіна в адмін-панелі: