Трудности перевода: как построить мультиязычный сайт...
-
Upload
ruslan-begaliev -
Category
Technology
-
view
42 -
download
10
Transcript of Трудности перевода: как построить мультиязычный сайт...
Трудности перевода: как построить мультиязычный сайт
на WordPress
Сайт на другом языке (языках)
На сайте только один язык?
ДаНет
НетДа
Локализация → 1
Мультиязычный сайт → 3
Языковые версии сайта → 2
Контент на разных языках должен совпадать
Утилита Unix gettext()
Источники данных для утилиты gettext() - файлы .mo, скомпилированные “языковые БД” особой структуры
То, из чего компилируютя файлы .mo - файлы .po
Локализация → 1
1 -> язык2 -> языка11345 -> языковязыки4 варианта
Особая проблема - мультиязычные формыРаботает утилита Unix ngettext()
Запись мультиязычной (plural) формы на псевдоязыке в заголовке файла .poУникальна для каждого языка
Альтернатива gettext() - база данных
Вызов gettext() в PHP
*nix вызывает свою утилиту gettext()
Обращение к файлу .mo
Работа gettext() в файле .mo по поиску словопары
Найдено?
отдаем то что найдено
Да
отдаем оригинал
Нет
Загрузка страницы
Выгрузка из БД всех словопар в виде массива в память
Массив словопар [ ]
Вызов gettext() в PHP
хук gettext()
Повышение производительности: нет ни обращения к файловой системе, ни механизма поиска в файле .mo
Запись URL мультиязычных сайтов и языковых версий сайта
http://site.com/meetup-page/?lang=fi
http://site.com/lang/fi/meetup-page/
http://fi.site.com/meetup-page/
RewriteEngine on
RewriteCond %{HTTP_HOST} ^fi.site.com
RewriteRule ^(.*)$ http://site.com/lang/fi/$1 [L,NC,QSA]
Добавление правил в .htaccess позволяет не создавать никаких реальных языковых субдоменов
Языковые версии сайта → 2
EN версия сайта в поддиректорииURLhttp://doklad.wpru/en/
Почему такое возможно:.htaccess WP при создании ЧПУ(почти такой же .htaccess в Yii FW)
Мультиязычный сайт → 3 Принципы создания - всего два
Контент (ru)
Тот же контент на другом языке (fi)
Параллельный контент в БД
Переключение контента в зависимости от URL, в котором содержится язык
Создание отдельно переводов
Запрос контента
Буфер, следящий за URL
В URL есть язык?
Да
Отдаем перевод
Нет
Отдаем оригинал
ф-я обертка над любым контентом_translate()
Плагин WPML
Это локализация по принципу из БД
Основной плагин
WPML работает по принципу создания параллельного контента
Стили URL - нет варианта с языковым ключом
После инсталляции плагина - возможность добавить перевод
Оригинал Перевод
Локализация в WPML называется перевод строк - отдельный плагин. Делается вручную
Те самые параллельные посты
Связь поста и перевода в БД в отдельной таблице плагина WPML
Локализация в WPML - либо загрузка .mo файлов, либо вручнуюЭто отдельный плагин в составе WPML
Наш плагин для создания мультиязычных сайтов
One Click Localize -> OCL
Трудности перевода :)
Русская и английская версия сайта плагина OCL
БиллингОплата
Генерация ключа api_key
Генерация плагина, привязанного к ключу
Создание и размещение zip-архива
Главная ф-я ядра плагина - ф-я _ocl() (часть 1)
ф-я _ocl() продолжение и финал
Трудность 1 - локализацияПервая попытка покорить мир
Заливка файлов .po ВСЕХ официальных локализаций WP
Приведение псевдокода файлов .po в PHP, разбор словопар
Внесение локализаций в БД
БД всех официальных локализаций WP, которые есть в мире
Это создание PHP из псевдокода для plural вариантов
При инсталляции плагина и/или добавлении языковлокализации нужных языков вносятся в БД установленного WP
Трудность 2Автоматический перевод
_ocl() Запрос к системе автоматического перевода
Сервис Сложность работы
Платный Что можно переводить
Перевод с тегами HTML
Yandex Низкая Условно нет, есть неописанное суточное ограничение на число запросов
Сайт с малым обновлением контента
Да, но требует правки
Google Средняя $20 за 2 миллиона знаков 2 млн. знаков - это примерно 1400 страниц среднего размера
Да, идеально
Bing Высокая $20 за 2 миллиона знаков -//- Да, идеально
Трудность 3Тестирование плагина для разных версий WP
Общая БД, разные версии WP имеют разные префиксы
2.8.1
Файлы проинсталлированных версий WP
Папка с плагином - символическая ссылка
3.0.1 Папка с плагином - символическая ссылка
...
4.1.2 Папка с плагином - символическая ссылка
...
Реальная папка, в которую размещается плагин
URL: .../2.8.1/
URL: .../3.0.1/
URL: .../4.1.2/
WordPressмашина :)
Трудность 4Удобство редактирования переводов Это ссылка сразу на
редактирование перевода
Быстрый доступ к редактированию локализаций, их очень много, в админку не налазишься
При нажатии всплывает окно
Редактор прямо по разметке, самый удобный вариант
API плагина и теги шаблонаТрудность 5 - многообразие API самого WP вынуждает делать множество сходных ф-й