Підступна війна росії проти України. Орієнтовні втрати ворога
(станом на 02.12.2022)
90090
осіб
280
літаків
262
гелікоптерів
2916
танків
5883
ББМ
1905
артилерія
210
ППО
395
РСЗВ
4464
машин
16
кораблі і катери
Як на практиці перекладати WordPress

Як на практиці перекладати WordPress

WordPress – це дійсно всесвітня CMS, яка користується величезною популярністю серед вебмайстрів практично кожної країни. Це система, яка з кожним роком покращується і модернізується. А останнім часом локалізації двигуна приділяється все більше уваги, зважаючи на його популярність, і не лише серед англомовних користувачів. Адже, згідно зі статистичними даними, вже в 2014 році кількість встановлених НЕ англомовних дистрибутивів WordPress перевищила кількість англомовних (вперше за весь час!).
У цьому уроці ми, на практиці, розглянемо як перекласти Вордпрес (і саму CMS, і тему для неї), щоб краще розуміти, як ця вся магія працює. Хоча готових локалізацій (мовних пакетів) для WordPress хоч відбавляй, не зайвим буде знати, як самому змінити/покращити переклад для свого власного сайту!

Отже, приступимо!
1 метод (простий): завантажити готовий переклад для потрібної вам мови (тут є перелік всіх доступних перекладів і ступінь їх повноти). Завантажуєте, копіюєте файли локалізацій в папку /wp-content/languages/, прописуєте в кореневому файлі wp-config.php рядок

define ('WPLANG', 'код мови');

і насолоджуєтеся готовим перекладом.

 

2 метод (складніше): бути готовим і уміти самому перекладати CMS Вордпрес і теми для неї.
Але спочатку трохи теорії.

 

WordPress використовує для перекладу бібліотеку інтернаціоналізації gettext GNU. У gettext для позначення рядків, що перекладаються, використовуються їх англійські оригінали та значення перекладу на потрібну мову. Бібліотека gettext зберігає перекази в файлах з розширеннями .mo (Machine Object – бінарний файл для читання програмою), .po (Portable Object – файл перекладу в людино-читабельному вигляді) і .pot (PO template – шаблон файлу .po для перекладу на нову мову).

 

 

Як це працює?

У статті «Як перекласти Мадженто на українську» ми торкнулися цього питання. За схожим принципом працює і Вордпрес: система сканує сайт і, ґрунтуючись на набори файлів .po і .mo, замінює певні слова і фрази в контенті перекладеним текстом, який виводить на екран.
Проскануємо і ми сайт, відкриємо наприклад, файл header.php в шаблоні twentyfourteen (який міститься в останніх версіях Вордпрес) через текстовий редактор і, посеред різного коду, знайдемо ось такий рядок:

<?php _e('Search', 'twentyfourteen'); ?>

 

Розберемося, що ж в ньому цікавого.

Рядок містить функцію php, яка виводить повернутий переклад тексту.
Функція _e записується у вигляді

<?php _e($text, $domain)?>

де $text – змінна, що містить оригінальний текст для перекладу, а $domain – змінна для домену, з якого буде отриманий переклад тексту. Якщо перекладу немає, або домен не завантажений, то повертається оригінальний текст. Змінні записуються в лапках.

У нашому випадку оригінальний текст для перекладу – Search, а домен для перекладу – twentyfourteen (тобто системна назва шаблону).

Виходячи з цих даних, система буде шукати значення для переведення в шаблоні (темі) TwentyFourteen, звертаючи увагу на папку languages. А в цій папці двигун буде шукати файли .pot, .po і .mo. Якщо WordPress знайде такі файли (а деякі теми і не містять їх), в них вона буде шукати рядок зі значенням Search, щоб перекласти на потрібну нам мову (зазначену у кореневому файлі wp-config.php рядком

define ('WPLANG', 'uk_UA')

– для української).

Якщо система не побачить переклад цього значення, то вона його так і виведе користувачеві на екран (тобто Search). А якщо побачить – виведе переклад тексту (будь-який, який ми напишемо: хоч «Пошук», хоч «Пошукай-но», який захочете)!

 

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

Увага! Не перекладайте безпосередньо вихідний код двигуна або теми!

Файли перекладів зберігаються в папках languages:

  • /wp-content/languages/ – для перекладу всього двигуна
  • /wp-content/languages/plugins/ – для перекладу деяких плагінів
  • /wp-content/themes/ВАША_ТЕМА/languages/ – для перекладу певної теми

 

Як правило переклади двигуна практично повні, тому ми зосередимося на перекладі тем (шаблонів). Хоча принцип один і той же.

Для роботи з файлами перекладів зручніше використовувати програму Poedit (скачати можна тут). Вона безкоштовна і проста.

Після того, як ви встановили Poedit, можете відкривати у себе на комп’ютері мовні файли .pot: Файл > Створити з POT файлу. Потім вибираєте файл .pot в папці languages теми, яку хочете перекласти.

poedit

Працювати з програмою нескладно – вихідний текст ліворуч, а ваш переклад – праворуч. Щоб відредагувати переклад, натисніть на відповідний рядок і внизу вікна програми введіть своє значення. Після цього потрібно зберегти .po-файл з кодом мови (наприклад uk_UA.po – для української). Зазвичай Poedit автоматично створює і потрібний файл .mo.
Після збереження залишається тільки завантажити створені файли через FTP в потрібну папку на сайті.

 

Що ще потрібно знати?

Функції для перекладу

Щоб система знала, що значення потрібно перекладати, воно має міститись у відповідній функції. Їх величезна кількість, але розглянемо тільки основні.

__('Якийсь текст')
_e('Якийсь текст')
_n('Якийсь текст')
_x('Якийсь текст')

 

Перші дві функції __() і _e() є найбільш основними формами перекладу. Функція подвійного підкреслення поверне наш текст, а _e() буде виводити текст, використовуючи echo. Обидві функції будуть шукати в локальному каталозі перекладу (в файлах .mo і .po) значення для перекладу. Якщо знайдуть – виведуть перекладений текст, в іншому випадку виведуть тільки оригінальне значення.

Метод _n() використовується у випадках множинності. Він буде корисний, наприклад, для виведення кількості повідомлень, коментарів і в інших випадках, коли значення змінюється динамічно (наприклад, «1 коментар», «2 коментаря» і т.д.).

Більш складна функція _x() і _ex() використовується для розрізнення слів з аналогічними значеннями, але залежно від контексту. У цьому випадку використовується наступний код:

<?php _ex($text, $context, $domain)?>

, де $context – додаткова інформаційна змінна для перекладача.

 

 

Що робити, якщо у вашій темі немає файлу .pot?

Його можна створити самому. Для цієї мети підійде і розглянута програма Poedit.

  • Відкрийте програму і перейдіть Файл > Створити
  • Вкажіть мову перекладу
  • Заповніть вкладки в меню Каталог > Властивості: Властивості перекладу (назва проекту, кодування та ін.), Папки з вихідними файлами (шлях до папки з вашою темою на Вордпрес), Ключові слова вихідних файлів (перелік ключових слів – розглянуті вище функції для перекладу).
  • Збережіть файл у форматі .pot
  • Натисніть кнопку «Оновити» вгорі, або Каталог > Оновити з вихідного коду. Програма просканує всю вашу тему і виведе рядки, які доступні для перекладу.
  • Перекладіть текст, а потім збережіть.

 

2-й спосіб: встановити плагін Codestyling Localization і перекладати тему через консоль сайту. Або створити плагіном .pot-файл, завантажити його, а потім вже переводити через програму Poedit (кому як зручніше).

 

 

Як підключити файл перекладу до теми?

Якщо у вашій темі немає файлів перекладу, тоді їх потрібно спочатку створити (попереднє питання), а потім підключити.
Файли перекладу підключаються через файл functions.php у вашій темі. Для цього відкрийте його і додайте наступний код:

add_action('after_setup_theme', 'dev_load_theme_textdomain');
  function dev_load_theme_textdomain() {
    load_theme_textdomain('НАЗВА_ВАШОЇ_ТЕМИ', get_template_directory() . '/languages');
  }

 

У даному прикладі ми підключаємо файли перекладів за адресою:
/wp-content/themes/НАЗВА_ВАШОЇ_ТЕМИ/languages/

Коли це може знадобитися? Наприклад, якщо ви хочете перекладати тему через консоль сайту за допомогою плагіну Codestyling Localization, а він не визначає вашу тему. Після підключення він «побачить» вашу тему і ви зможете зайнятися повноцінним перекладом.

 

 

Є ще способи перекладу?

Можна ще перекладати за допомогою текстового редактора Notepad++. Якщо ви відкриєте редактором файл .po, то побачите щось подібне:

#: wp-includes/link-template.php:2297
#@ default
msgid "&laquo; Older Comments"
msgstr "&larr; Попередні коментарі"

 

  • 1-й рядок вказує на файл, у якому знайдена функція і в якому саме рядку.
  • 2-й рядок вказує область дії перекладу (тобто весь сайт)
  • 3-й рядок: оригінальне значення, в лапках
  • 4-й рядок: переклад оригінального значення, в лапках.

Виходячи з цього, ви можете і таким чином перекладати тему (сайт) – вручну додаючи/змінюючи рядки.

 

Що робити, якщо в темі код не підтримує переклад?

Оптимізувати його для перекладу. Наприклад, рядок

<div class="readmore"><span>read more</span></div>

можна оформити так:

<div class="readmore"><span><?php _e('read more', 'домен-локалізації'); ?></span></div>

тим самим додавши можливість його перекладу (актуально, якщо ваш сайт багатомовний).

 

 

Сподіваюся, що вам даний урок приніс користь!
Якщо у вас є додаткові коментарі або питання, не соромтеся ділитися ними в коментарях до даної статті.

 

І на доповнення до посту перегляньте відео-урок:

 

 

(Photo credit: EMMEALCUBO/Foter/CC BY-SA)

 

У цьому відео-уроці ми розглянемо питання перекладу Вордпрес (і саму CMS, і тему для неї), щоб розуміти, як це працює, та знати, як змінити/покращити переклад свого сайту.

 

Напишіть тут свою думку/питання

Ваша пошта не публікуватиметься.