✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Посібник із теми WordPress для початківців – Частина 8: Переклад

3

У цьому уроці ми дізнаємося про те, як працює переклад (або інакше відомий як i18n) у WordPress і як внести необхідні зміни в наші шаблони. Ми також дізнаємося, як правильно налаштувати PoEdit, щоб створити файл перекладу для нашої теми, готовий для перекладу різними мовами.

Навіщо додавати підтримку перекладу?

Усі теми, принаймні ті, які опубліковані для використання іншими людьми, крім розробника, мають бути доступними для перекладу. Це називається інтернаціоналізацією (скорочено i18n) і дозволяє людям перекладати тексти, які ви додаєте до своєї теми, іншою мовою.

Принцип роботи полягає в тому, що ви, як автор теми або розробник плагіна, загортаєте всі свої тексти (наприклад, «Докладніше», «Без дописів») у певні функції. Ці функції дозволяють WordPress підбирати їх і вводити переклад, якщо він існує. У свою тему (або плагін) ви можете додати файли певного типу для кожної перекладеної мови або переконатися, що інші люди можуть створювати власний переклад своєю рідною мовою.

Це дуже корисно для людей, які хочуть використовувати WordPress і вашу тему (або плагін) мовою, відмінною від мови походження (яка зазвичай є англійською). Але його також можна використовувати для зміни певних текстів на щось інше в межах однієї мови.

Якщо ви зацікавлені в темі, у WordPress Codex є довгий і якісний посібник з документації щодо i18n для розробників.

Реалізація i18n у нашій темі

Ми вже виконали першу частину в попередньому кроці цієї серії посібників з теми, де ми додали load_theme_textdomainфункцію налаштування нашої теми. Якщо ви забули, ось що ми додали:

load_theme_textdomain('wptutorial', get_stylesheet_directory(). '/lang');

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

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

Наступним кроком є ​​перегляд усього коду та пошук вихідного тексту, який можна перекладати. Гарною практикою є переконатися, що ми охоплюємо абсолютно всі тексти. Ніщо не дратує так, як використання теми чи плагіна, де автор жорстко закодував тексти, що унеможливлює переклад або будь-які зміни.

Як зробити тексти придатними для перекладу

Те, що ми робимо з усіма текстами, поміщаємо їх в одну з функцій WordPress gettext, якими найчастіше є _e()або __(). Перший — це символ підкреслення «e», який використовується, коли ви хочете одночасно повторити текст. Другий — це два символи підкреслення, і він використовується, коли ви не бажаєте повторити його, а зберегти або використовувати в змінній.

У WordPress є більше функцій gettext, які служать більш конкретним цілям, наприклад esc_html__(), _n(), _x()тощо. Однак ми не будемо вдаватися в подробиці для учасників цього підручника.

Функції gettext приймають два параметри; по-перше, сам текст, а по-друге, маркер, який ви визначили в load_theme_textdomain. У цьому випадку це " wptutorial".

Наприклад, якщо у вас є щось подібне:

echo 'Read more';

Вам потрібно буде замінити його на:

_e('Read more', 'wptutorial');

І аналогічно для зберігання в змінній;

$myvariable = 'Read more';

Його потрібно написати так:

$myvariable = __('Read more', 'wptutorial');

Тепер нам потрібно знайти всі тексти в наших шаблонах! Якщо ви дотримувалися цього підручника на «Т», це небагато. У нас є рядки в index.php, а деякі в single.php.

Додавання підтримки перекладу в нашу тему

Давайте почнемо з index.phpповідомлення «Немає публікацій, вибачте», яке ми додали, якщо цикл не містив жодної публікації. Ми загортаємо цей текст всередину _e(), тому що все ще хочемо повторити його. Отже, ось що ми отримуємо:

Оскільки ви використовували _e(), ви не повинні побачити жодних змін, коли натискаєте оновити на першій сторінці чи в архіві. Але під капотом цей текст тепер можна перекладати!

Ми маємо цей самий текст у нашому single.phpта page.php. Оновіть їх так само, як у index.php. Ми додали ще кілька текстів у single.php, тож ось як це виглядає після того, як усі тексти придатні для перекладу:

Відтепер усі тексти, які ми додаємо до нашої теми, ми обов’язково загортаємо всередину __()або _e().

Файли перекладу

Є два способи надання файлів перекладу вашій темі;

  • Надайте .pot-файл
  • або надайте пару файлів .poі ..mo

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

Файли .poта .moпрацюють разом. WordPress вимагає .moдля перекладу текстів, але цей файл не читається людиною. Тому ми маємо .poфайл, який ми читаємо. За допомогою правильного програмного забезпечення він створює .moфайл щоразу, коли ви вносите зміни.

Недоліком файлів .poі .moє те, що вам потрібно створити одну пару для кожної мови, і після того, як ви переклали його на мову, немає простого способу очистити всі переклади, щоб створити іншу нову мову.

Потрібна програма для редагування .potта .poфайлів. Найпоширенішим є PoEdit. PoEdit безкоштовний і працює як для iOS, так і для Windows. Але для деяких розширених функцій (наприклад, створення .pot-файлу), на жаль, потрібна платна версія. Ми використаємо безкоштовну версію, щоб створити .poфайл для нашої теми.

Завантажте та встановіть PoEdit, щоб слідувати решті посібника.

Створення файлу .po для нашої теми за допомогою PoEdit

Створення файлу перекладу англійською мовою зазвичай не має сенсу, коли всі тексти в нашій темі все одно англійські, але для цілей цього підручника я зроблю файл перекладу англійською мовою.

1 Відкрийте PoEdit і натисніть «Файл» > «Створити…».

2 Вам буде запропоновано вибрати мову. Виберіть потрібну мову, наприклад англійську.

3 Натисніть «Зберегти» (Ctrl+S). Знайдіть папку вашої теми та увійдіть у /lang/підпапку. (Якщо ви не створили його на останньому кроці, створіть його зараз). Ім’я вашого файлу є критичним. Для тем це має бути лише код вашої мови. Для американської англійської це буде en_US, для норвезької це nb_NO. Щоб знайти код своєї мови, перегляньте її в Google або перегляньте цей огляд . Ми назвемо це en_US.po.

4 У меню натисніть Каталог > Властивості…

5 У першій вкладці ви можете ввести деяку інформацію, наприклад назву проекту (теми), або змінити мову, але це не обов’язково. Я рекомендую вам зберігати кодування в UTF-8, оскільки це те, що ми пишемо для WordPress.

Посібник із теми WordPress для початківців – Частина 8: Переклад

6 Перейдіть на вкладку Шляхи джерел. Тут вам потрібно буде визначити теки, у яких файл має шукати тексти, які можна перекладати. Шляхи відносні, і оскільки ми вже зберегли його у вкладеній папці нашої теми, ми знаємо, що він має піднятися на один каталог вище. Натисніть кнопку «+» під полем «Шляхи» та виберіть «Додати папки». Виберіть свій каталог тем. Це має додати елемент шляху «.» (піднятися на одну папку вгору). Ще раз переконайтеся, що «Основний шлях» стосується вашого кореневого каталогу теми.

Посібник із теми WordPress для початківців – Частина 8: Переклад

7 Натисніть наступну вкладку «Ключові слова джерел». Тут вам потрібно повідомити PoEdit, які функції ви використовували для перекладних текстів (наприклад __, _e, esc_html_eі так далі). Натисніть кнопку +, щоб додати кожну функцію, і запишіть їх без «()». Ви вирішуєте, чи хочете ви охопити всі свої бази та додати всі функції gettext WordPress, але ми знаємо, що в цьому підручнику ми використали лише дві. Отже, ми додаємо два елементи; __()і _e(). Додайте функції без круглих дужок.

Посібник із теми WordPress для початківців – Частина 8: Переклад

8 Натисніть OK.

9 Все, що залишається, це наказати PoEdit сканувати надані шляхи для функцій за допомогою __()та _e()(або того, що ви надали). Ви можете зробити це, натиснувши кнопку «Оновити з коду». (У версії для Windows на кнопці є текст, а у версії для iOS його немає – тому для iOS потрібно натиснути кнопку, яка зазвичай є останньою на панелі інструментів; піктограма файлу з піктограмою «повторити» вгорі. Натисніть кнопку «Оновити з коду», і ви побачите всі перелічені тексти з інтерфейсом для перекладу:

Посібник із теми WordPress для початківців – Частина 8: Переклад

приємно!

Згенеровані файли перекладу

Тепер ви можете використовувати PoEdit для перекладу кожного рядка, але ми не будемо цього робити тут, оскільки немає сенсу перекладати англійську на англійську. Не забудьте натиснути «Зберегти», щоб оновити та створити .moфайл, і щоразу, коли ви додаєте інший текст у свою тему, вам потрібно буде знову натиснути кнопку «Оновити з коду». Після цього з’являться нові зміни у ваших шаблонах.

Якщо ви перевірите /langвкладену папку в папці каталогу теми, ви побачите два файли; файл, .poякий ми щойно створили, і .moфайл із такою ж назвою, згенерований нами під час збереження в PoEdit.

Ви можете зробити копію en_US.poфайлу та перейменувати його в код іншої мови. Але пам’ятайте, що PoEdit не пропонує простий спосіб очистити всі перекладені рядки; вам доведеться очистити один за одним. Ось чому це погано для користувачів, які хочуть перекласти вашу тему іншою мовою. Отже, якщо у вас є можливість створити .potфайл, ви повинні це зробити.

WordPress шукатиме файл перекладу залежно від мови, визначеної в меню адміністратора Налаштування > Мова сайту. Якщо ви додали мову, відмінну від англійської, ви можете перевірити це, перемкнувши мову сайту та перевіривши, чи з’явиться ваш переклад!

Джерело запису: awhitepixel.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі