Проект Post Language: улучшенная поддержка мультиязычного контента в WordPress
При обсуждении предстоящих языковых улучшений на WordCamp Seattle в этом году, Эндрю Нейсин обратил свое внимание на тот факт, что лишь 5-10% людей во всем мире говорят на английском языке. Совсем скоро основная масса сборок WordPress может быть на таких языках, как китайский, испанский, хинди и арабский.
Потребность в лучших путях поддержки мультиязычного контента ощущают многие пользователи и компании со всего мира. Одна из вещей, которая отсутствует в данный момент в WordPress – это возможность быстрого получения языка, на котором была написана запись или страница. Немецкий разработчик Каспар Хюбингер предложил добавить возможность Post Language в ядро WordPress.
Почему в WordPress должна быть поддержка языка записей?
Чтобы подтвердить потребность в поддержке языка записей, Хюбингер приводит статистику загрузки WordPress на конец апреля, показывая, что версия 3.9 скачивалась примерно в 1.36 раз чаще на различных языках, нежели на стандартном английском:
Общее число загрузок: 6,589,287 (100%)
Загрузки стандартной английской версии: 2,807,978 (42.6%)
Загрузки других версий: 3,781,309 (57.4%)
Данные взяты по состоянию на 29 апреля 2014 года.
Хюбингер желает сделать так, чтобы post_language был добавлен в качестве свойства WP_Post, как в случае с post_author, post_excerpt и другими переменными.
«Предложение базовой возможности по сохранению языка контента вместе с другой мета-информацией записей позволит выйти на новый уровень улучшений как разработчикам, так и пользователям», говорит Хюбингер.
Его предложение основано на предположении, что язык контента записи является:
- Релевантной частью мета-информации в целом
- Одним из наиболее важных параметров для разработчиков плагинов и тем, позволяющих «разгрузить» и без того сложные сферы языков и переводов.
Многие плагины, предлагающие функции перевода, требуют возможности определения языка записи, однако делают они это разными путями. Переносимость в таких плагинах очень сильно страдает – в качестве примера можно назвать плагины WPML, Polylang, Babble, Multilingual Press и другие, предлагающие подобную функциональность.
«Все эти плагины, однако, делают гораздо больше, нежели просто определяют язык записи», говорит Хюбингер. «Они предлагают интерфейс для перевода контента и установления языковых отношений между отдельными записями – плоскость настолько комплексная и сложная, что, если не брать в расчет базовый метод для определения языка, каждый из этих плагинов способен превратиться в источник проблем, когда пользователь попытается перейти от одного из них к другому».
«Как пользователь, вы в значительной степени привязаны к выбранному вами решению; при переключении между плагинами вы теряете все связи между исходными записями и их переводами. Также теряется или становится неэффективным и тот маркер, который использовался для определения языка записи», объясняет Хюбингер. Если WordPress будет иметь стандартный способ определения языка, на котором написана запись, все эти плагины могут потенциально обеспечить более переносимую функциональность.
Предложенная особенность Post Language
Таким образом, как будет выглядеть Post Language как особенность, реализованная в WordPress? В дополнение к тому, что разработчики получат больше инструментов для добавления произвольных особенностей, связанных с языками и переводами, Post Language также позволит пользователям выбирать язык в мета-поле Publish Post:
Хюбингер предложил заполнить поле выбора разными языками, определенными ранее либо через языковой пакет в пределах текущей сборки WordPress, либо через фильтр. Поле выбора языка вернуло бы ISO-код для языка и сохранило бы его в поле базы данных в виде метаданных записи, либо в расширенное поле, которое будет добавлено к таблице базы данных.
Значение для Post Language может использоваться разными путями:
- Оно должно быть доступно через теги шаблонов: the_post_language(), get_the_post_language()
- Должно по возможности затрагивать get_bloginfo( ‘language’ ), get_bloginfo( ‘text-direction’ ) и language_attributes()
- Либо должно быть реализовано через новый атрибут для каждой записи, по аналогии с post_class(): post_language()
<article <?php post_class(); ?> <?php post_language(); ?>> // ouput: <code><article class="foo bar" lang="en-US"></code>
Поскольку далеко не всем WordPress-сайтам понадобится такая возможность, Хюбингер предложил сделать ее выключенной по умолчанию. Включить ее можно будет через константу, фильтр или администраторский параметр в разделе Параметры – Общие.
Хюбингер описал свою идею в комментарии к дорожной карте Эндрю Нейсина по улучшению языковых возможностей WordPress 4.0, однако он решил подождать до выхода релиза 4.0, перед тем как официально предложить новую особенность. Добавление нового свойства к WP_Post – это крупное изменение, и, скорее всего, оно вызовет очень активное обсуждение.
Поддержка выбора языка отвечает миссии по демократизации процесса публикации в WordPress
В отличие от других CMS, таких как Drupal и Typo3, WordPress не предлагает базовую возможность публикации переводов исходного контента. «Вы не можете даже просто опубликовать отдельные записи на одном сайте в разных языках, не портя вашу разметку разными неподходящими языковыми атрибутами», утверждает Хюбингер. «Не видите в этом проблемы? Попробуйте воспользоваться машинным чтением записи, которая написана на языке, отличном от английского, при этом чтобы разметка записи говорила, что эта запись на английском. Тогда вы точно услышите проблему».
Хюбингер считает, что повышение осведомленности – это ключ к внедрению особенности Post Language. «Язык записей обычно связывается в мыслях людей с переводами, и это верно», говорит он. «Однако переводы всегда были самым крайним сценарием развития событий для нашей, в целом англоязычной, команды разработчиков ядра WordPress, и это тоже верно». Убеждение сообщества WordPress в необходимости добавления Post Language к ядру – это первый шаг на пути к реализации такой возможности.
Отсутствие поля для задания языка записей наряду с существованием форматов записей в ядре – источник недоумения для Хюбингера, который родом из мультиязычной среды.
«Если у нас есть такой визуальный праздник, как форматы записей в ядре, то самое время подумать и над языковым API, который потенциально мог бы принести большую пользу миллионам пользователей, нежели необычные форматы записей», указал Хюбингер. «Ничего не имею против форматов записей; мне они нравятся. Они просто сильно контрастируют с остальными возможностями, если оценивать их важность и значимость».
Его предложение несет в себе убедительные аргументы в пользу введения выбора языка для записей, и обращается к базовой миссии WordPress по демократизации процесса публикации:
«В конце концов, WordPress связана с публикацией контента, а контент неизбежно имеет отношение к языку. Мы не можем честно говорить о том, что ‘демократизировали публикацию’, пока мы продолжаем игнорировать важность лингвистических аспектов контента для пользователей WordPress со всего мира».
Хюбингер считает, что возможность Post Language поможет проекту выйти на более высокий уровень зрелости с помощью одного небольшого добавления к API. «В то время как огромное пространство переводов и мультиязычного контента было и будет относиться к территории плагинов, ядро WordPress должно предлагать хотя бы базовый набор API (один язык для одной записи) для авторов плагинов, который поможет пользователям избавиться от привязки себя навсегда к одному решению», утверждает Хюбингер.
Хюбингер с готовностью признает, что эта функция находится за пределами его возможностей кодирования, и надеется, что другие разработчики присоединятся к этому пути, помогут создать ее архитектуру и реализацию.
«Я полностью открыт для любых уважающих себя разработчиков, которые хотят внести свой вклад, форкнуть репозиторий, создать свой собственный репозиторий для той же самой идеи», говорит Хюбингер. «Здесь речь идет об улучшении WordPress для миллионов пользователей, не говорящих на английском, поэтому давайте просто постараемся создать языковой API самым подходящим образом!»
Как только WordPress 4.0 с улучшенной языковой поддержкой увидит свет, Хюбингер попытается заручиться большей поддержкой со стороны участников, чтобы провести активную работу над проектом. Если вы хотите помочь разработать предложение Post Language, вы можете найти проект на Github.
Источник: wptavern.com