Локалізація
У фреймворку є вбудована підтримка мультимовних веб-застосунків. Механізм локалізації використовує PHP-розширення gettext або якщо воно не встановлено на сервері, аналогічну реалізацію на PHP.
Локалізація додатків
Для відображення перекладу рядка слово мовою користувача потрібно в коді використовувати наступні конструкції:
- у PHP-файлах: _w('слово')
- у шаблонах Smarty: [`слово`]
Якщо переклад рядка не буде знайдено, система відобразить текст слово без перекладу.
Файл із розширенням імені .po — це текстовий файл спеціального формату, що містить переклад рядків для конкретної мовної локалі. Для підключення перекладу з .po-файлу його необхідно скомпілювати у файл з розширенням.mo, наприклад, за допомогою програми poEdit.
Приклад вмісту .po-файлу з перекладом рядків українською мовою:
Пари «ключ-переклад»
Ключ та його переклад представлені у .po-файлі двома послідовними рядками наступного виду:
- msgid - це ключ рядка локалізації, який використовується в коді програми (PHP або Smarty)
- msgstr — переклад рядка
Рекомендується використовувати як ключі локалізації рядка англійською мовою. При такому підході програма відразу отримує робочий варіант інтерфейсу англійською мовою. Якщо в додатку буде (частково або повністю) відсутній переклад, замість переведених рядків в інтерфейсі програми будуть використовуватися їх ключі англійською мовою.
Множинні форми рядків локалізації
Множинні форми перекладу дозволяють легко відображати в додатку слова в потрібній формі, наприклад: 21 запись, 22 записі, 25 записї.
Наступний рядок у заголовках .po-файлу вказує, щоукраїнською є три множинні форми (як у прикладі вище) і задає формулу, за якою визначається потрібна форма слова для будь-якого цілого числа:
Приклад перекладу множинної форми в .po-файлі:
Для отримання потрібної форми слова в PHP коді потрібно використовувати наступну конструкцію:
Аналогічна конструкція для шаблонів Smarty:
Зверніть увагу на відмінність цієї конструкцій від синтаксису перекладу звичайних (трохи) форм, що використовуються в Smarty. Для множинних перекладів рекомендується використовувати в шаблонах Smarty конструкцію виду [рядок].
Функція _w() вміє також автоматично замінювати в перекладі підрядок %d значення $n засобами PHP-функції sprintf , наприклад:
Автоматичне складання .po-файлу
Фреймворк дозволяє автоматично виконувати аналіз всього коду програми, збирати ключі локалізації, що використовуються в ньому, і дописувати відсутні ключі в .po-файл. Якщо сам .po-файл відсутній, він створюється автоматично. Для запуску скрипта автоматичного складання .po-файлу виконайте наступну команду в терміналі командного рядка:
Приклад
Автоматичне складання .po-файлів плагінів виконується аналогічно:
Приклад
Увага : у поточній версії скрипт автоматичного складання файлу локалізації не підтримує конструкції для перекладу множинних форм, тому такі рядки потрібно додавати у файл вручну.
Локалізація плагінів додатків
Для локалізації плагінів за допомогою власних файлів локалізації в PHP-код замість функції _w() слід використовувати функцію_wp () .
Локалізація системних плагінів
В іменах файлів локалізації системних плагінів, що розміщуються в директорії wa-plugins/, як префікс імені слідвикористовувати ідентифікатори payment_, shipping_, sms_ — залежно від імені піддиректорії, в якій розміщується системний плагін. Приклад .po-файлу локалізації для української мови деякого платіжного плагіна з ідентифікатором some : wa-plugins/payment/some/locale/ru_RU/LC_MESSAGES/payment _some.po
Щоб підключити рядки локалізації системного плагіна в його вихідному коді, використовуйте публічний метод базового класу _w() waSystemPlugin , як показано нижче:
Розробка продукту, призначеного для використання лише однією мовою
Якщо ваш продукт (додаток або плагін) гарантовано призначений для використання лише однією мовою, використовувати механізм локалізації немає необхідності. У такому випадку всі рядки локалізації пишіть у вихідному коді продукту безпосередньо тією мовою, якою ним користуватимуться. Конструкції _w() , _wp() і [``] у разі використовувати не потрібно.
Webasyst - це CMS нового покоління, що поєднує в собі інструменти для управління сайтом та інтернет-магазином з корисними програмами для спільної роботи з колегами та взаємодії з клієнтами. Єдиний центр керування бізнесом через інтернет.
Магазин Webasyst
Ми отримуємо та обробляємо персональні дані відвідувачів сайту відповідно доПолітики обробки персональних даних. Надсилання персональних даних за допомогою будь-якої сторінки сайту передбачає згоду з усіма пунктами Політики.