Статьи

Как сделать вашу тему мультиязычной и совместимой с WooCommerce

Мэтт Малленвег, соучредитель WordPress и генеральный директор Automattic, дал интервью Джошу Янссену, где он заявил, что в мае этого года неанглоязычные загрузки WordPress впервые превысили английские загрузки.

Эта тенденция продолжается с WordPress 4.0, который делает локализованные сайты WordPress намного проще в установке и обслуживании. WordPress 4.0 теперь дает вам возможность скачать WordPress на выбранном вами языке. Это сделает процесс установки быстрым для не говорящих по-английски. В предыдущих версиях WordPress английский язык был по умолчанию, а другие языки рассматривались как исключения. WordPress 4.0 делает все языки одинаково доступными. Это изменение, несомненно, сделает WordPress еще более популярным во всем мире.

Целью этих новых функций в WordPress 4.0 является увеличение числа международных пользователей WordPress, которые ранее не могли использовать WordPress из-за языковых трудностей. Более того, согласно данным eMarketer, страны Азиатско-Тихоокеанского региона, такие как Китай, Япония, Индия, Южная Корея и Индонезия, по прогнозам, обгонят Северную Америку по объемам продаж электронной коммерции от бизнеса к потребителю.

Что это значит для вас как разработчика темы или плагина? Во-первых, это означает, что ваш продукт должен быть готов к локализации. Все тексты должны быть заключены в вызовы `gettext`, чтобы пользователи могли запускать его на других языках; однако интернационализация — это только первый шаг. Во многих странах возможность управлять сайтом только на одном языке является серьезным ограничением. Чтобы по-настоящему выйти на мировой рынок и использовать огромный потенциал за пределами англоязычного рынка, ваши продукты также должны быть готовы к использованию на нескольких языках.

К счастью, с WPML запускать многоязычные сайты легко. Мы опишем семь лучших рекомендаций, которым нужно следовать, чтобы ваши темы и плагины отлично работали как на одноязычных, так и на многоязычных сайтах. Следуя этим простым рекомендациям и придерживаясь четкого кодирования, ваши продукты могут обеспечить работу многоязычных сайтов.

Когда вы разрабатываете свою тему, очень важно понимать, как ваши конечные пользователи будут переводить свои сайты. Как только вы поймете их точку зрения, вы поймете, что вам нужно сделать, чтобы ваша тема была многоязычной.

Типичная тема отображает верхний и нижний колонтитулы, меню, виджеты, контент и ваши собственные пользовательские элементы. Вот пример сайта WooCommerce, основанного на модифицированной теме Twentyfourteen:

WPML descriptionJPGWPML описание сообщенияJPG

WPML позволяет переводить все стандартные элементы WordPress. Это включает:

  • меню

  • Стандартные виджеты

  • Элементы навигации

  • Все тексты обернуты в вызовы `gettext`

  • Опубликовать контент, включая пользовательские поля и таксономию

  • Товары

  • Варианты темы

  • Изображения и связанные с ними строки

Вам не нужно ничего добавлять в свой код, чтобы разрешить перевод всех этих разделов. Обязательно обратите внимание на ваши пользовательские элементы, чтобы ваши пользователи тоже могли их перевести.

Ниже приведена таблица, в которой обобщено, как конечный пользователь будет переводить стандартные элементы сайта с WPML.

Поскольку он не является частью какого-либо поста, страницы или таксономии, нам нужно использовать перевод строк WPML для его перевода. Перейдите в WPML-> Перевод строк, найдите строку по ее содержимому ( название сайта ) и переведите.

название сайтаJPG

название сайта с использованием строки translationjpg

Когда вы зайдете в Внешний вид> Меню, вы увидите элементы управления переводом меню WPML. Узнайте больше о переводе меню, чтобы увидеть, как это работает.

Главное менюJPG

Многие темы или плагины имеют уникальные функции, которые хранят тексты в таблице wp_options . Вводное сообщение от Resort делает это точно. Тема или плагин сохраняет эти тексты в таблице wp_options, и нам нужно указать WPML для их перевода. Мы добавляем эту информацию в файл конфигурации языка . Там мы сообщаем WPML, какие записи в таблице wp_options требуют перевода.

Эта методика хороша, когда ключи фиксированы (как в большинстве тем). Если ваша тема использует массивы записей, которые могут увеличиваться в зависимости от пользовательского ввода, необходимо динамически регистрировать эти записи. Используйте WPML-функции icl_register_string и icl_t, чтобы сделать это.

Пользовательские headerjpg

WPML позволяет пользователям легко переводить контент. Экраны постредактирования включают элементы управления переводом WPML , позволяющие создавать новые переводы и редактировать существующие.

Вам не нужно ничего делать в теме или плагине, чтобы это произошло. Перевод контента является основной функцией WPML.

Что вам нужно проверить, так это то, что любой текст, добавляемый вашей темой в вывод, является переводимым.

Если вы новичок в использовании GetText, узнайте больше об этом в наших FAQ по переводу текстов тем .

Сообщение Редактировать ScreenJPG

WPML позволяет пользователям переводить содержимое текстовых виджетов. Он также переводит названия всех других виджетов. Если ваша тема или плагин создает свои собственные виджеты, убедитесь, что вы пропускаете их заголовки через стандартные фильтры WordPress. Таким образом, WPML позволит пользователям переводить заголовки ваших виджетов через экран перевода строк.

Виджеты ESJPGРедактирование виджетовJPG

Некоторые темы имеют собственный экран администратора для хранения текстов нижнего колонтитула. Как и другие тексты, которые мы видели, тема или плагин также сохраняли тексты нижнего колонтитула в таблице wp_options . Мы добавим эти записи в файл конфигурации языка , сказав WPML перевести их.

пользовательские footerjpg

Чтобы получить подробное объяснение того, как конечные пользователи будут использовать WPML, посетите наш учебник по достижению совместимости с WPML.

Вам не нужно переписывать всю тему или плагин, потому что WPML все это обрабатывает. Этот урок не так сложен, как восхождение на гору Эверест, но есть несколько вещей, которые вам нужно будет отредактировать, чтобы облегчить работу вашего конечного пользователя.

Теперь, когда мы рассмотрели, как люди будут переводить стандартные элементы WordPress, давайте вместе рассмотрим, что вы должны сделать, чтобы обеспечить многоязычную совместимость для ваших пользовательских элементов.

Для плагинов или тем не забудьте обернуть свой жестко запрограммированный текст в функции `gettext`. Это включает в себя заголовок, нижний колонтитул и текст виджета. Ваши файлы шаблона отображают ассортимент информации о продукте и жестко закодированный текст. Например, большинство шаблонов будут содержать название продукта и ссылку «купить». Название продукта происходит из базы данных, поэтому вам не нужно беспокоиться о его переводе.

Вы должны убедиться, что все жестко закодированные тексты являются переводимыми, используя функции `gettext`.

Хорошо

Плохо

<p> <? php _e (‘Подобные товары:’, ‘my-textdomain’)?> </ p>

<input type = ”button” name = ”buy-button” value = ”<? php esc_attr_e (‘Buy now!’, ‘my-textdomain’)?>” />

<p> <? php echo ‘Подобные товары:’; ?> </ P>

<input type = ”button” name = ”buy-button” value = ”Купить сейчас!” />

«Аналогичные продукты» и «Купить сейчас!» Не включаются в вызовы GetText.

Убедитесь, что вы используете textdomain вашей темы для всех вызовов GetText.

Многие темы электронной коммерции включают специальные страницы, такие как «корзина» или «учетная запись». Тема часто включает ссылки на эти страницы, появляющиеся на каждой странице сайта.

Если вы используете меню WordPress для этих ссылок, у вас все должно быть в порядке. WPML отображает разные меню WordPress для каждого языка, поэтому ссылки на эти «специальные страницы» будут разными для каждого языка. Однако если вы жестко закодируете эти ссылки в файлах шаблонов, вам нужно разрешить WPML заменять ссылки ссылками на эти страницы на нужном языке.

Правильный способ ссылки на специальные страницы WooCommerce — использование функций API WordPress и идентификаторов страниц WooCommerce. WooCommerce Многоязычный фильтр вызывает get_option () с идентификаторами страницы WooCommerce. Он вернет идентификатор страницы на текущем языке.

Хорошо

Плохо

<a href=veloper<?php echo get_permalink(get_option(‘woocommerce_shop_page_id’)) ?> »> <? php _e (« Страница магазина »,« my-textdomain »)?> </a>

<a href=veloper<?php echo get_permalink(wc_get_page_id(‘shop’)) ?> »> <? php _e (« Страница магазина »,« my-textdomain »)?> </a>

‘shop’ — это фрагмент страницы на языке по умолчанию.

<a href=veloper<?php echo get_permalink(5) ?> »> <? php _e (« Страница магазина »,« my-textdomain »)?> </a>

Идентификатор «страницы магазина» жестко запрограммирован. Это будет по-разному для разных сайтов и для разных языков.

<a href=veloper/shop договор> <? php _e («Страница магазина», «my-textdomain»)?> </a>

URL «страницы магазина» жестко запрограммирован. Это будет по-разному для разных языков.

Если вы используете шорткоды WooCommerce для отображения списка товаров, все готово. WooCommerce загрузит продукты на правильном языке и отобразит их.

Если вы предпочитаете загружать продукты вручную, используя собственный код, убедитесь, что вы используете вызовы WordPress API или WooCommerce API. Если вы обращаетесь к базе данных напрямую, WPML не будет фильтровать ваш звонок, и вы получите сочетание всех продуктов на всех языках.

Хорошо

Плохо

[featured_products per_page = ”12 ″ колонок =” 4 ″]

[идентификатор продукта = ”99 ″]

(Больше)

<? php $ products = get_posts (array (‘post_type’ => ‘product’, ‘suppress_filters’ => 0)); ?>

<? PHP

$ args = array (

‘post_type’ => ‘product’,

‘posts_per_page’ => 10,

);

$ products = new WP_Query ($ args);

?>

<? php $ products = get_posts (array (‘post_type’ => ‘product’)); ?>

По умолчанию для параметра suppress_filters будет установлено значение true, что исключает фильтрацию языка.

$ products = $ wpdb-> get_results ($ wpdb-> prepare («SELECT * FROM {$ wpdb-> posts} WHERE post_type = ‘product’ ORDER BY ID DESC LIMIT% d», 10));

WPML не фильтрует низкоуровневые SQL-запросы. Все продукты на всех языках будут возвращены.

После того, как вы загрузили нужные продукты, вам не нужно беспокоиться о языках при их отображении. Каждый продукт будет иметь свои собственные поля с информацией на правильном языке.

Некоторые глобальные сайты электронной коммерции нуждаются как в нескольких языках, так и в нескольких валютах. Ваша тема должна поддерживать те сайты, которые требуют мультивалютности. Для многих неамериканских сайтов поддержка нескольких валют является очень важной функцией. Например, многие европейские сайты должны будут взимать плату в евро, британских фунтах и ​​долларах США. Для восточноевропейских сайтов часто требуется российский рубль, а для азиатских сайтов нужна другая валюта.

Обмен валютыJPG

Поддержка мультивалютности включена в WooCommerce Multilingual. Чтобы позволить посетителям переключаться между валютами, ваша тема должна включать дополнительный переключатель валют.

Вы можете отобразить переключатель валют, используя вызов PHP или вставив шорткод.

<? php do_action (‘currency_switcher’, array (‘format’ => ‘% name (% symbol)’)); ?>

[Currency_switcher]

Полный учебник приведен в учебнике по мультивалютности для WooCommerce . Помните, что переключатель валют будет отображаться только в том случае, если на сайте используется несколько валют.

Английский — LTR

Иврит — RTL

Английский LTRJPG

Иврит RTL2JPG

Темы WooCommerce должны соответствовать рекомендациям RTL, как и темы WordPress. Вам следует создать файл `rtl.css` с правилами CSS для отображения RTL.

Создайте новый файл `rtl.css` и поместите его в корневой каталог вашей темы. Направление ‘dir’ в CSS выполнит большую часть работы, и вам нужно только исправить несколько мест. Для языков RTL установите атрибут ‘direction’ в CSS на ‘rtl’. Дополнительно добавьте атрибут ‘unicode-bidi-.

В селектор .body добавлен хороший RTL-дисплей:

{

Направление: РТЛ;

Юникод-биди: встраивать;

}

Теперь ваша тема будет отображаться в RTL. Для обработки исключений перейдите к Руководству по поддержке тем RTL .

Создавая готовую многоязычную тему WooCommerce, помните, что некоторые тексты будут длиннее на некоторых языках и короче на других. Некоторые языковые длины вы не можете протестировать, потому что ваши конечные пользователи будут переводить контент самостоятельно.

Например, посмотрите на эти два блока продукта.

Язык по умолчаниюJPG

CSS оптимизирован для короткого текста на английском языке

Другой языкJPG

Более длинный текст на испанском языке не умещается

Лучший способ добиться совместимости с несколькими длинами — это проверить вашу тему с текстами, которые в 2 раза длиннее и на 1/2 короче. В большинстве случаев это будет охватывать любой язык, который переводится. Настоятельно рекомендуется использовать жидкие макеты для обработки текста разных размеров. Текущее расположение позволит каждому элементу изменять размеры и захватывать необходимую область. Достижение плавного расположения занимает время, но предотвращает визуальные сбои.

Определение стиляJPG

Текст плавно перетекает на следующую строку без сбоев дисплея

WooCommerce `style.css` использует обозначение` white-space: no-wrap`. Но в нашем примере, чтобы правильно обернуть текст, вы должны использовать `white-space: normal;`.

Чтобы сделать вашу тему полностью WPML-совместимой, вы должны упростить для других запуск многоязычных сайтов с темой, создав файл языковой конфигурации.

WPML может прочитать файл конфигурации, в котором подробно указано, что нужно перевести в тему или плагин. Создайте и назовите файл `wpml-config.xml`. Сохраните файл в корневом каталоге темы. Используйте структуру и макет раздела в примере в этом файле примера wpml-config.zip и отредактируйте его со своим собственным контентом.

Содержимое файла `wpml-config.xml` должно быть заключено в следующие теги <wpml-config> открытия и закрытия:

<WPML-конфигурации>

</ WPML-конфигурации>

В файле `wpml-config` вы указываете, какие функции должны переводиться с помощью WPML, ваши пользовательские типы записей, пользовательские таксономии, настраиваемые поля и текст администратора (строка, полученная из wp_options), а также вы можете указать способ использования языка вашей темы. Switcher будет просто следовать этому короткому учебнику для полных примеров и подробностей о структурировании вашего языкового файла конфигурации, посетите наше Учебное пособие по языковым файлам конфигурации .

Теперь, когда вы понимаете необходимость сделать вашу тему или плагин многоязычной и WooCommerce готовой, и после того, как вы следуете обычным методам разработки, как описано выше, пришло время протестировать вашу тему или плагин.

Обычно, когда вы тестируете, вы пытаетесь все перевести, вставляя фиктивные переводы в каждую область вашего сайта. Но это займет много времени. Поэтому мы создали для вас инструмент тестирования: плагин инструментов тестирования совместимости WPML .

Этот инструмент будет вводить фиктивные переводы для вашего сайта, чтобы вы могли переключать языки и видеть, что было переведено, а что осталось на вашем языке оригинала. Наш инструмент тестирования сэкономит вам несколько часов тестирования и поможет вам увидеть, какие области необходимо улучшить в вашей теме или плагине.

Ваши клиенты должны будут иметь следующие плагины для многоязычных сайтов электронной коммерции с WooCommerce:

WPML поставляется с основным плагином и надстройками. Эта архитектура позволяет разным людям устанавливать разные детали, которые им нужны. Для многоязычных сайтов WooCommerce вам понадобятся следующие компоненты WPML:

  • WPML (основной)

  • WPML перевод строки

  • Управление переводами WPML

  • WPML Media Translation

WPML используется на более чем 400 000 веб-сайтов, и любая тема или плагин, использующий API WordPress, может получить многоязычную совместимость с помощью WPML. Зачем рисковать отсутствием многоязычной и WooCommerce-совместимой темы или плагина?

WPML имеет программу GoGlobal, в которой мы предлагаем бесплатные аккаунты WPML авторам тем и плагинов для тестирования совместимости. У нас есть множество тем , которые в настоящее время совместимы, в том числе несколько WooThemes, все элегантные темы, Avada и множество тем на ThemeForest.

В WPML мы серьезно относимся к совместимости с пятью опытными разработчиками и консультантами, которые работают над совместимостью для всех авторов тем и плагинов для обеспечения многоязычной совместимости. Зарегистрируйтесь бесплатно сегодня в нашей программе WPML GoGlobal .

Когда вы распространяете свою тему, вы хотите, чтобы люди могли использовать ее для одноязычных и многоязычных сайтов. Советы по разработке, которые мы давали в этой статье, в основном опираются на лучшие практики WordPress, поэтому код вашей темы едва ли содержит какой-либо конкретный код для WPML.

Вашим клиентам потребуется установить WPML и его компоненты, необходимые для запуска многоязычных сайтов. Поскольку WPML является торговой маркой (и по другим уважительным причинам), вам не следует связывать WPML с вашей темой.

Вместо этого WPML предлагает небольшой компонент для покупки и автоматической установки , который вы можете использовать. Этот компонент позволяет пользователям покупать WPML непосредственно из админа WordPress. Он также зачисляет вам партнерскую комиссию за любого такого реферала.

Интеграция этого крошечного компонента автоустановки в вашу тему — отличный способ показать людям, что ваша тема действительно совместима с WPML и может поддерживать многоязычные сайты. Это также дает вашим пользователям упрощенный процесс покупки и установки WPML без необходимости использовать FTP для загрузки его на свои серверы.

Теперь, когда мы рассмотрели семь лучших рекомендаций по подготовке вашей темы или плагина WooCommerce и Multilingual, мы надеемся, что вы готовы начать работу. Быть готовым к многоязыку легко и возможно для каждого автора темы.

Это так же просто, как использование лучших практик WordPress, таких как использование функций `gettext` и правильная обработка жестко закодированных ссылок WooCommerce, для окончательного добавления файла конфигурации языка в вашу тему. Увеличьте универсальность вашего продукта на рынке, сосредоточившись на интернационализации вашей темы или плагина.

Мы разыгрываем 8 000 долларов в нашем последнем мероприятии WPP и WooCommerce WordPress Themes Most Wanted. Вы должны быть в нем, чтобы выиграть это!