Как сделать сайт на нескольких языках? Многоязычность сайта. 16 проблем и 5 способов решения
Вам приходилось видеть сайты на нескольких языках? А вы знаете как они устроены, какие забавные проблемы с ними возникают
и насколько возрастает трудоемкость поддержки и развития такого сайта? Сегодняшняя статья — про многоязычные сайты.
Вам приходилось видеть сайты на нескольких языках? Уверен, да.
А вы знаете как они устроены, какие забавные проблемы с ними возникают и насколько возрастает трудоемкость поддержки и развития такого сайта?
Сегодняшняя статья — про многоязычные сайты.
Буду говорить о сайтостроении вообще, но конкретные вопросы реализации опишу на примере системы 1С-Битрикс. Причины две:
— система занимает лидирующие позиции на рынке и многие читатели захотят решать задачи именно на ней;
— я хорошо знаю эту систему и весьма поверхностно — другие.
Больше не нужно искать и обзванивать каждое диджитал-агентство
Создайте конкурс на workspace.ru – получите предложения от участников CMS Magazine по цене и срокам. Это бесплатно и займет 5 минут. В каталоге 15 617 диджитал-агентств, готовых вам помочь – выберите и сэкономьте до 30%. Создать конкурс →
Что тут вообще обсуждать? Это же просто?
Зачем нужен сайт на нескольких языках?
Чаще всего делают корпоративный сайт для разных стран. Это самый простой случай. Значительно реже создаются мультиязычные СМИ, интернетмагазины и интранетпорталы.
И правда, ничего сложного
Некоторым кажется, что многоязычный сайт — это очень просто. В статье использованы скриншоты многоязычных вебпроектов:
1. microsoft.com — софтверная компания мирового масштаба;
2. rusal.ru — крупная транснациональная коммерческая компания;
3. rt.com — Russia Today, СМИ на 4 языках, представляющее Россию в мире;
4. government.ru — правительство Российской Федерации;
5. salesforce.com и bitrix24 — многоязычные saas-сервисы.
По ходу статьи мы порадуемся тому, что встречается на этих сайтах.
Кодировка
Если у вас в проекте не только латиница, придется подумать о том, в какой кодировке символов вы будете работать.
Кодировок великое множество, и нужно знать какую когда выбирать.
Вопрос кодировки для создания многоязычного сайта решается просто. Надо использовать Unicode, как правило — UTF-8. Этот формат универсален и экономичен. Недостатков у него почти нет. Проблемы с кодировками возникают в двух ситуациях: смешение кодировок и конвертация проектов.
Вавилонское смешение кодировок в работающем проекте
Может так случиться, что html сайта будет в utf-16, база в utf-8, код в национальной кодировке типа cp1251, а КЛАДР в cp866. Такой салат сайт может работать, но придется сделать преобразования и помнить где какая кодировка.
Уверен, через год никто не будет знать как оно работает и почему. Лучше сжать волю в кулак и делать все в одной кодировке, даже если время на подготовку информации возрастет.
Конвертация проекта целиком
Иногда приходится конвертировать проект целиком (например, сделали сайт в cp1251, а через полгода решили что нужна японская версия) в другую кодировку. Это крайне неприятная процедура.
В частности, в системе 1С-Битрикс нет штатного механизма для этого. Есть скрипт миграции, написанный поддержкой для себя и официально не выдаваемый разработчикам, клиентам и партнерам. Наша практика показала, что если возникла необходимость преобразовать сайт с cp1251 на utf-8, например, то гарантированный способ — поставить свежий Битрикс в нужной кодировке и все аккуратно перенести, преобразовав код и статику, где нужно, средствами IDE и текстовых редакторов. Одного рабочего дня хватит для большинства проектов. Не быстро, но гарантированно.
Если же возомнить себя Богом-Творцом и пойти по пути последовательных преобразований, можно легко получить куски текста из базы в cp1251, прочитанную кодом, как будто это utf16 и записанную в xml в какойто третьей кодировке. Обратный разбор таких цепочек конвертации займет все свободное и несвободное время.
Если сразу делать все аккуратно, в одной универсальной кодировке, то проблем не будет.
Требования к мультиязычности. Организационные и технические проблемы с полноценным переводом.
— Зачем ты это сделал? — Хотел ощутить биение жизни, — сказал Татарский и всхлипнул. — Биение жизни? Ну ощути, — сказал сирруф.
Когда Татарский пришел в себя, единственное, чего ему хотелось, — это чтобы только что испытанное переживание ... больше никогда с ним не повторялось. Ради этого он был готов на все
Виктор Пелевин. Generation П
Что такое правильный и полноценный перевод сайта на другой язык? Будем перфекционистами и максималистами. Сделаем так, чтобы иностранец, не владеющим основным языком сайта, не испытал
неудобств.
Итак, вы решились на полноценный перевод сайта. Что вас ждет?
Нет контента
Контент — король. Все для него, ничего без.
Это теория. На практике никогда не бывает так, что все готово или будет появляться своевременно. Более того, я бы не советовал браться за реализацию мультиязычности, если вы не видите реальной работы по переводу. Зачем нужны дорогие мертворожденные игрушки?
В крайнем случае — делайте так, чтобы отсутствие перевода конкретного элемента не мешало работе. Хороший компромисс — перевести 2-3 самые важные страницы.
Разные товары, новости, акции, баннеры
Сначала вам покажется, что новости, товары и статьи на всех языковых версиях будут одинаковыми, и их надо просто хранить и выводить тексты на разных языках. Как только вы заложите такую логику в проект, окажется что:
новость об открытии третьего филиала в Усть-Козлюйске европейцам показывать не нужно,
для Китая свой ассортимент товаров,
а именно в странах Латинской Америки продвигается специально для них разработанная акция.
Контент не будет совпадать на 100%. Сайт должен позволять:
легко дублировать записи и переводить их;
делать так, чтобы конкретная сущность выводилась на одной языковой версии и не выводилась на другой.
Разная структура
Дальше — больше. Вы узнаете, что целые разделы сайта должны присутствовать только на некоторых языковых версиях. Например, сайт переводится целиком, а вот интернет-заказ пока только для России. Из-за языковых, культурных и политических нюансов может потребоваться независимо менять структуру меню и отдельных страниц.
Работа переключателя между языковыми версиями
Обычно между языковыми версиями переключаются с помощью переключателя RU / EN / DE / UA или флажков.
Нажатие такого переключателя на любой странице должно приводить к открытию переведенной версии ТОЙ ЖЕ СТРАНИЦЫ.
Теоретически это несложно, на практике выдержать такой принцип не получится, если структура и содержание языковых версий не строго совпадают.
Перевод системных сообщений CMS
Вряд ли CMS вашего сайта написана с нуля специально для него. Соответственно разработчик системы писал сообщения об ошибках и технические уведомления на родном для себя языке и не думал о многоязычности. Если на «лице» сайта такие сообщения иногда появляются, их тоже придется перевести.
Перевод сообщений и файлов внешних модулей
Если вы поставили плагин фотогалереи, аудиоплеер или flash-загрузчик файлов от стороннего разработчика, придется не только разобраться тем, что они выводят, но и проверить кодировку, в которой они работают.
Перевод пользовательского контента
Современные сайты часто включают не только информацию от администрации, но и user generated контент. Такую информацию перевести невозможно, и вы обречены иметь кашу из языков. Ярким примером такой каши является страница победителя Евровидения 2014 на Youtube — ругательства на русском, греческом, немецком и английском. Досмотрит и дочитает только исключительно толерантный полиглот.
Перевод юридически значимых текстов
Перевести новость на английский или даже китайский можно. Цена ошибки невелика, даже если текст останется шероховатым или пару слов вы оставите на языке оригинала.
Публичную оферту или правила сервиса просто взять и перевести не выйдет. Нужен юрист со знанием языка, местной специфики и пониманием вашего бизнеса. А это большая редкость. Того хуже, если вы делаете печатную форму для документа, соответствующую требованиям местного законодательства. К юристу и переводчику вам потребуются проектировщик, дизайнер и программист — вероятно появление отдельного интерфейса, нетривиально связанного с остальным сайтом.
Как результат — перевод юридических текстов делают обычно только когда в стране открывается полноценное бизнес-представительство.
В системе Битрикс24 печатные формы счетов на немецкий переведены, а правила использования —
оставлены на английском.
Разная длина текстов на разных языках.
Дизайнеры знают эту особенность: английский текст выглядит красивее, аккуратнее и ... короче, чем русский.
Если вы сделали сайт на русском языке, готовьтесь к тому, что китайская версия будет содержать заметно меньше букв, а немецкая заметно больше. Отдельные немецкие слова могут оказаться еще и длиннее русских. Например Корпоративные коммуникации станут длинным, как рельс, словом Unternehmenskommunikation.
Учитывая как печально в вебе с автоматическим переносом, это может стать проблемой, особенно если верстка делается с попиксельным попаданием в сетку.
Языки с другим направлением текста. LTR и RTL.
Представьте: вы решили выпустить версию сайта для Израиля. Там, конечно, на четверть бывший наш народ, но все же версию на иврите нужно сделать.
Верстка, контент, интерфейсы должны зеркально отразиться, чтобы сайт выглядел правильно. Лого в правом верхнем углу, например.
Оффтоп: пока я писал эту статью, Adwords запутался в моих языковых пристрастиях и стал показывать мне рекламу Битрикс24 на немецком. QSoft по-прежнему предлагает себя по-русски.
Надписи на картинках
Многие элементы на сайтах делаются картинками, от логотипов до символов валют, надписей о скидках и тому подобного. HTML 5 меняет ситуацию, но вряд ли можно встретить сайт, перевод которого мог бы обойтись без создания иноязычных версий изображений.
Почтовые уведомления
Сайты присылают уведомления о регистрации, заказе, неуспешном логине, попытке смены пароля и тому подобном.
В Битриксе, например, предустановлено несколько таких шаблонов, и их часто оставляют без изменений. Сделать понятные иностранцу почтовые уведомления (а там не только текст, но и ссылки, внешние картинки), можно только с переводчиком и программистом.
Национальные стандарты для валют, календаря, оформления писем, адресов, склонений и числительных.
В разных странах свои правила для дат, валют и даже деловой переписки. Если вы их проигнорируете, вас, может быть, поймут и простят.
Однако если мы хотим сделать хорошо, нужно учитывать все.
Программисты скажут: ну это же просто, установка локали автоматизирует такие преобразования. В теории да, а на практике — вы всегда даты выводите таким образом? А валюты? А стиль написания адреса — тоже локаль сделает?
Отдельной проблемой может стать написание и склонение числительных в автоматическом режиме. Кроме того, есть языки и ситуации, где надпись будет зависеть от пола и числа. И это уже не победишь никакой локалью.
Перевод личного кабинета клиента
Если вы из России управляете многоязычным проектом, кабинет администратора CMS можно не переводить.
А вот личный кабинет покупателя интернет-магазина — придется. Для SAAS-проектов нужна полная локализация.
Это крайне трудоемкая задача.
Неясно что от меня хотят, а тут еще и смесь языков. Обратите внимание на косноязычное «7ч. просрочено». Это явная калька с английского.
Salesforce не смог. Ebay не смог. А вы все еще думаете что это просто?
Ссылки на мобильные приложения
Ссылки на приложения в магазинах Apple, Google и Microsoft могут включать язык интерфейса.
Добавление еще одного языка
Когда вы решите предыдущие 15 вопросов для своего проекта, ктото главный может сказать: «Отлично! Теперь мы легко добавим японскую и португальскую версии? Все же готово?».
Есть несколько способов добавления новых и новых языков, однако вариант, который снится некоторым руководителям — кнопка «Добавить язык» — мне видеть не приходилось. Вернее, кнопка была, но не работала.
Техника. Как же сделать сайт на нескольких языках?
Кроме описанных в статье, вероятно, есть и другие способы. Каждый из приведенных я реализовывал своими руками и помню ощущения, испытанные при этом.
«Идите лесом, я на тракторе». Автоматический перевод
Когда работы по переводу много, делать ее не хочется, и требований особых нет, сгодится автоматический переводчик Google.
Формально все хорошо.
Качество среднее, трудоемкость крайне низкая, новые языки добавлять не надо — Google знает все.
«Наивный программист». Поля и папки.
Наивный программист, впервые столкнувшийся с задачей создания языковой версии, считает что различаться будут только тексты и картинки. Код, структуру, дизайн, интерфейс он переводить не планирует.
Поэтому в базе данных появляются поля для текстов на других языках. В программном коде появляется настройка $lang, которая для английского языка $lang = «_en»
Чтобы хранить картинки на других языках, в папке сайта появится что-то вроде:
Теоретически все нормально. На практике:
Если английского контента нет, придется показывать русский. Для этого проверять существование файлов и так далее. Нужно редактировать код.
Нужно будет сделать пакет флагов видимости новости в каждой языковой версии. И написать код для проверки. Везде.
«Хлебные крошки» часто берутся из свойств разделов, таблиц, каталогов и сами не заработают. Писать код.
Добавление французской версии требует повторения всей процедуры и еще одного усложнения кода.
Судя по всему, на этой схеме основана работа сайтов РУСАЛа и Правительства РФ.
«Вы сами напросились». Язык как настройка
Однажды я работал программистом и делал сайт, где переводилось абсолютно все и планировались новые языки. Нужно было сделать добавление максимально простым.
Теорию я знал, любил придумывать абстрактные до ужаса конструкции, и решил проблему очень элегантно, как мне показалось.
Я сделал в базе данных таблицу языков, все тексты пронумеровал, вынес в отдельную таблицу значения текстов на разных языках. Действительно, любой текст мог быть переведен на любой язык. Добавление языков было реализовано через админку и приводило к клонированию записей в таблице языковых значений.
Теперь, чтобы вывести заголовок и краткий текст новости с id=3, вместо
select title, shorttext from news where id=3
для языка с номером 2 приходилось писать
select lv1.value as title, lv2.value as shorttext from news
inner join lang_value as lv1 on lv1.id_const=news.title
inner join lang_value as lv2 on lv2.id_const=news.shorttext
where news.id=3 and lv1.id_lang=2 and lv2.id_lang=2
Красиво, пока не начинаешь этим пользоваться. Проблемы:
на каждое поле добавляется join на таблицу значений. если на странице 200 надписей, это все начинает крепко тормозить.
отладка становится реально сложной, учитывая что ты всегда видишь одни числа, пока не сделаешь join на языковые значения, что в консоли неудобно.
привязать эту штуку к самописному модулю вебформ оказалось чересчур трудоемко. Проект самозакрылся раньше, чем я дописал его.
вопрос управления картинками схема не решает.
Эта и подобные архитектуры имеют право на существование (почти так в Битриксе работают инфоблоки), но:
должны быть поддержаны на всех уровнях проекта;
иметь программный уровень преобразования запросов к langвиду;
разумную денормализацию;
средства кеширования, отладки и администрирования.
Я не видел качественных реализаций такой схемы управления языками.
«Я в отчаянии». Почти полное дублирование
Говорят, копипаст — признак тупости. Однако для задачи создания языковых версий этот вариант оказывается неплохим.
Полная независимость копий дает свободу управления, но умножает работу:
редактора (новости создаем везде, товары копируем и переводим)
программиста (внесение изменений в несколько языковых версий, особенно если они успели пожить собственной жизнью, требует упорства и аккуратности)
администратора (комментарии, пользователи, рассылки, фиксация и устранение ошибок)
Тем не менее этот вариант дефакто принят очень многими компаниями. Например 4 версии сайта Russia
Today имеют разный контент, дизайн и структуру, хотя выросли из одного корневого сайта.
«Хитрый»
Непрозрачным хитрым способом реализована многоязычность в облачных сервисах SalesForce и Битрикс24, а также на сайте microsoft.com.
Разумно предположить что все что можно автоматизировать — автоматизировано, а остальное делается заботливыми руками редакторов и программистов.
Отдельно надо сказать о microsoft.com. Несмотря на старания, я не нашел вообще ни одной проблемы с многоязычностью этого сайта. Корректно переведено все, на многие языки, переключатель работает как надо.
Работа титаническая, и сделана она прекрасно.
Microsoft.com — эталон, по крайней мере в вопросе языковых версий.
Возможности различных платформ для интернационализации и локализации сайтов Далеко не все языки и системы для разработки сайтов имеют специальные средства для перевода. Упомяну лишь несколько подходов к этому вопросу, не претендуя на полноту:
Классический gettext (многие более поздние реализации используют эту технологию)
В CMS 1С-Битрикс есть несколько элементов, предназначенных для реализации многоязычности. Разработчики и идеологи Битрикса считают правильным скопировать все файлы сайта и инфоблоки
контента. При этом сложная бизнес-логика остается реализованной через компоненты и модули без копирования.
Многосайтовость
Через многосайтовость можно реализовать схему «Дублирование». Отсылаю вас к соответствующему разделу документации.
Система Битрикс имеет встроенные средства для хранения текстов на разных языках и повсеместного использования их в коде и интерфейсе. Это сделано через текстовые файлы без вышеописанных извращений с базой данных.
Я считаю использованную Битриксом схему оптимальной:
языки добавляются через панель управления и файловый менеджер;
управление переводом в визуальном интерфейсе выполняет одноименный модуль;
работа системы прозрачна для программиста;
дополнительной нагрузки многоязычность не создает;
от поддержки будущей многоязычности в коде легко отказаться, просто начав использовать русский текст вместо ссылок на языковые сообщения;
стандартные компоненты поставляются с переводами, дополнительные языки можно скачать и установить;
легко выделить работу над переводом отдельному человеку без требований к компетентности в веб-технологиях.
Некоторый недостаток — много однотипных текстовых файлов, но это вообще свойственно системе Битрикс. Можно считать это собственным стилем, который ничем не хуже однотипных констант в базе или огромных файлов с однотипными секциями.
Перевод административного интерфейса CMS 1С-Битрикс
Битрикс работает в нескольких странах с другими языками, в частности это Украина и Казахстан, где есть полноценные представительства. За пределами СНГ работа тоже ведется, оставим ее за скобками.
Честно говоря, начиная эту статью, я был уверен что полноценного перевода нет. Даже фразу написал:
Нет, пожалуй, только возможности перевести панель управления сайтом на другой язык.
Насколько мне известно, даже на украинский язык перевод так и не состоялся.
Однако в реальности все оказалось лучше. Я позволю себе процитировать почти без изменений рассказ Дмитрия Суслова, директора Украинского и Белорусского офисов.
Дмитрий Суслов:
На данный момент есть полная локализация всей платформы, то есть вся админка в любом нашем продукте будет украинской. Полностью локализован облачный Битрикс24, включая публичную часть. ну и есть отдельное решение «госсайт для украины», которое, кстати, очень скоро выйдет в совершенно новом варианте.
За всю мою работу было лишь 23 случая, когда ошибки в файлах локализации чтото поломали в продукте. Они устранялись в кратчайшие сроки, а в обновления сразу же попадали изменения. У нас есть человек, который отслеживает выход новых файлов локализации и предоставляет их нам для перевода. После этого отдаём обратно и разработчики разбирают их в свои модули и запускают в обновления.
Мы выработали подходящую схему работы с переводами. Сам процесс передачи и отслеживания теперь прост и понятен. Иногда бывает сложно взять и перевести, ибо в одних случаях это 100 фраз, а в других 10 000. Вот эта часть является самой трудоёмкой. Потому что важно не просто перевести, а именно локализовать.
Дмитрий Суслов: например, в русском варианте есть фраза «Кажется, чтото пошло не так...», если перевести её просто на украинский, то она не передаст эмоциональности этого выражения. Но в украинском языке есть поговорка «Не так сталося, як гадалося» и она чудесно передаёт смысл исходной фразы, хотя при дословном переводе довольно далека от неё
Казахской версии админки Битрикса пока нет. Процитирую директора «1СБитрикс Казахстан» Сармантая Касенова:
Потребность в админке огромная только теоретически. Я опрашивал партнеров они 1. проявили небольшой интерес к проблеме 2. мнения, что именно локализовать (БУС или КП) разделились. На продажах отсутствие локализации не особо сказывается.
Технически, как показывает опыт украинской версии, перевод возможен.
Трудоемкость поддержки сайта на нескольких языках
Возрастает кратно. И для технологов, и для менеджеров. Очень сложно сделать все хорошо, а ошибки видны всем.
Чеклист работ над многоязычностью
1. Обсужден и выбран способ реализации многоязычности
2. Кодировка всех частей проекта едина и универсальна
2.1. Статика
2.2. сторонние модули
2.3. код
2.4. верстка
2.5. база данных
3. Кто и когда готовит контент?
3.1. Вопрос задан
3.2. Ответственный найден
3.3. Получена первая часть контента
3.4. Система отлажена
4. Что может различаться в контенте между языками?
5. Есть разделы, созданные только для некоторых версий?
5.1. Скрывать в языке ___________ раздел ___________
5.2. Скрывать в языке ___________ раздел ___________
5.3. Скрывать в языке ___________ раздел ___________
5.4. Показывать только в языке ___________ раздел ___________
5.5. Показывать только в языке ___________ раздел ___________
5.6. Показывать только в языке ___________ раздел ___________
6. Обсудили как должен работать переключатель?
7. Перевод системных сообщений CMS возможен? Кто его делает?
7.1. Составили список того, что надо перевести
7.2. Назначен ответственный за перевод
7.3. Назначен ответственный за проверку самописных модулей
7.4. Назначен ответственный за операторскую работу по вводу
8. Перевод пользовательского контента все предупреждены что этого не будет?
8.1. Задать вопрос
8.2. Получить согласие что user generated content останется на языках оригинала
9. Перевод юридически значимых текстов.
9.1. Оставляем как есть. Все предупреждены
9.2. Ищем юриста. Есть ответственный
10. Разная длина текстов на разных языках.
10.1. Сделали тестовую страницу и проверили ее работу в верстке
11. Продумали изменение дизайна для языка с другим направлением текста. LTR и RTL.
12. Изображения в дизайне и контенте
12.1. Нашли все картинки в дизайне, на которых есть буквы, и перевели их.
12.2. Написали регламент подготовки картинок для сайта
13. Почтовые уведомления
13.1. Составили полный список.
13.2. Назначили ответственного за тексты
13.3. Назначили ответственного за программирование
14. Национальные стандарты для валют, календаря, оформления писем.
14.1. Обсудили вопрос
14.2. Составили белый список: что будет сделано.
14.3. Предупредили всех что придираться к тому чего нет в списке не нужно
15. Перевод личного кабинета клиента
15.1. Обсудили
15.2. Написали требования
15.3. Составили белый список: что будет сделано.
15.4. Предупредили всех что придираться к тому чего нет в списке не нужно
16. Ссылки на мобильные приложения и родственные проекты содержат верный язык
17. Добавление других языков
17.1. Когда, какие и сколько?
17.2. Вы правда этого хотите?
17.3. Сформирована и сообщена трудоемкость добавления еще одного языка
Выводы
Сайтов с полноценным переводом на несколько языков почти нет.
Вопрос локализации сайта, как правило, существенно недооценивается.
Все технические вопросы теоретически решены.
Вопросы управления, контента и практического сопровождения требуют больших затрат.
Работа менеджера проекта растет на 20% с каждым новым языком, Технологов на 30-40%, контент-редакторов и маркетологов на 100%.
ИНТЕРВОЛГА сделала около 30 сайтов с многоязычностью. Мы пользовались разными методами и приобрели опыт, которым теперь пользуемся и которым делимся.
От редакции
Предлагаем вашему вниманию результаты рейтинга веб-студий – узнайте, какие команды являются лучшими из лучших.
Помимо тематик и географического положения студий, с помощью удобных инструментов, расположенных справа от топ-100, вы также узнать, в каком ценовом диапазоне работает та или иная студия.
Для того, чтобы построить данный рейтинг, мы изучили 94 372 сайта, входящие в портфолио 4 882 студий.
Кроме хорошей программной части — должен быть хороший менеджер, который всё адекватно напишет и опубликует. Мой опыт говорит о том, что лучше не делать многоязыковую поддержку, если ей никто c толком заниматься не будет. Функционал переключения языков должен быть управляем, например, мы сделали пока только русскую версию, английскую не отображаем, пока контентом не наполним, чтобы не было всяких «site under construction» или «see you soon».
Станислав Ильин Digital manager в BORK
Чтобы сделать хороший сайт с адекватной мультиязычностью, надо сделать следующие вещи:
Принять как догму тот факт, что мультиязычный контент вовремя подготавливаться не будет (вера в этот факт достигается медитацией). И не забыть об этом во время планирования логики сайта.
Нарисовать на бумажке структуру, в которой указать какие разделы будут сквозными (О компании), какие будут частично пересекаться (новости) и какие абсолютно специфичными (акции к местным праздникам, например).
Потом, не забыть учесть тонкие моменты, например, что разные языковые версии одного документа должны появляться в продакшене в разное время, что некоторые товары не поставляются в определённый регион и т.п.
Сформировать редакционные группы под каждую языковую версию.
Открыть для себя, что «не Битриксом единым» живёт ИТ-сообщество (особенно за пределами России) и закодить получившуюся логику.
PROFIT!
Собственно задача то тривиальная )
Ольга Павлова Совладелец в «Собака Павлова»
Интересно, что сквозь технологическую шпаргалку (коей, несомненно, и является эта в высшей степени добротная статья) просвечивает главное: сайты для разноязычных людей должны быть принципиально разными.
То есть перевод снизу, по кусочкам и деталькам, не работает. Работает полное перемоделирование посетителя: его интерфейсных привычек, информационных ожиданий, норм визуальной эстетики, форматов потребления контента, сценариев взаимодействия. И создание отдельного сайта под каждую новую культуру. Маркером которой, очевидно, часто служит язык.
В общем, спасибо автору за сводку рекомендаций по механическому переводу. Но в целом мы — за культурную адаптацию интернет-решений на всех уровнях, от букв до технологий.
Тимофей Шиколенков Директор по маркетингу в "Аудиомания"
Отличная статья. Мы проходили эту тему. И даже на пару указанных грабель наступили.
Пожалуй, про интернет-магазины можно еще добавить, что иногда последовательность слов в названии товаров меняется.
Например, в России говорят «Напольная акустика Arslab Classic 3 », а по-английски это «Arslab Classic 3 Floorstanding Speaker».
Правда, несколько вещей в тексте — спорны. Например, тема перевода новостей. Часто случается, что новостей на разных языках (читай, для разной аудитории) разное количество. Они вообще могут не пересекаться. Поэтому просто «тупо» переводить этот модуль нельзя.
Насчёт торможения при использовании нескольких таблиц в одном SQL-запросе вообще удивило. При нормальном конфигурировании и использовании SQL сервера такая схема совершенно нормально работает. И, пожалуй, она — единственно правильная в данном случае.
Алексей Соколов Ведущий менеджер проектов в Uplab
Автор подробно описал основные нюансы, которые нужно учесть при разработке мультиязычных проектов. Но хочется осветить вопрос переключения языков в реализованном проекте.
Зачастую, когда клиент работает с контентом, например, создает статью для всех языковых версий, ему необходимо работать с каждым языком отдельно: сначала — с русским, потом — с английским. В таком случае названия статьи на русском и английском языках частично будут отличаться (это как минимум).
При создании динамического контента в Битриксе используется автоматическая генерация URL и, если в статьях не переписать этот URL на одинаковый, то при смене языков на странице статьи переключения не будет, а будет переход либо на главную, либо на 404 страницу (в зависимости от редиректов).
Пример:
Роман Клевцов Генеральный директор в Оптимизм.ру
Известно, что в настоящее время создание различных языковых версий веб-сайта компании все более распространено в связи с тенденцией к глобализации и стремлению бизнеса к расширению и выходу на новые рынки. Каждая компания выбирает наиболее оптимальный для себя способ перевода контента: от встраивания автоматического модуля от Google до осуществления всей работы полностью вручную.
Мы в Optimism.ru рекомендуем нашим клиентам использовать при переводе сайтов языковые файлы, то есть PHP скрипт, хранящий переводы языковых фраз на тот или иной язык. Языковые файлы, которые позволяют достаточно быстро и качественно осуществить перевод на любой язык. В дальнейшем достаточно только загрузить файл на сайт, чтобы сгенерировать новый контент. Однако следует помнить, что любые автоматизированные переводчики несовершенны и может потребоваться ручная проверка текста корректором.
Разумеется, следует учитывать, что иногда сайт переводится на другой язык не полностью: существуют страницы, предназначенные для конкретной страны (например, страницы локальных новостей или предложения определенных товаров в интернет-магазине). В этом случае необходимо задать определенное правило в языковых файлах: например, распространить их действие на конкретную область материалов.
Ищете исполнителя для реализации проекта?
Проведите конкурс среди участников CMS Magazine
Узнайте цены и сроки уже завтра. Это бесплатно и займет ≈5 минут.
\Виталий Кузнецов\\ Руководитель в Дизайн-бюро Баярд\
\
\
\
Кроме хорошей программной части — должен быть хороший менеджер, который всё адекватно напишет и опубликует. Мой опыт говорит о том, что лучше не делать многоязыковую поддержку, если ей никто c толком заниматься не будет. Функционал переключения языков должен быть управляем, например, мы сделали пока только русскую версию, английскую не отображаем, пока контентом не наполним, чтобы не было всяких «site under construction» или «see you soon».\
\
\
\ \
\
\\
\Станислав Ильин\\ Digital manager в BORK\
\
\
\
Чтобы сделать хороший сайт с адекватной мультиязычностью, надо сделать следующие вещи: \
\r\n\\r\n \
Принять как догму тот факт, что мультиязычный контент вовремя подготавливаться не будет (вера в этот факт достигается медитацией). И не забыть об этом во время планирования логики сайта.\
\r\n \
Нарисовать на бумажке структуру, в которой указать какие разделы будут сквозными (О компании), какие будут частично пересекаться (новости) и какие абсолютно специфичными (акции к местным праздникам, например).\
\r\n \
Потом, не забыть учесть тонкие моменты, например, что разные языковые версии одного документа должны появляться в продакшене в разное время, что некоторые товары не поставляются в определённый регион и т.п.\
\r\n \
Сформировать редакционные группы под каждую языковую версию.\
\r\n \
Открыть для себя, что «не Битриксом единым» живёт ИТ-сообщество (особенно за пределами России) и закодить получившуюся логику.\
\r\n \
PROFIT!\
\r\n\\r\n\
Собственно задача то тривиальная )\
\
\
\ \
\
\\
\Ольга Павлова\\ Совладелец в «Собака Павлова»\
\
\
\
Интересно, что сквозь технологическую шпаргалку (коей, несомненно, и является эта в высшей степени добротная статья) просвечивает главное: сайты для разноязычных людей должны быть принципиально разными.\
\r\n\
То есть перевод снизу, по кусочкам и деталькам, не работает. Работает полное перемоделирование посетителя: его интерфейсных привычек, информационных ожиданий, норм визуальной эстетики, форматов потребления контента, сценариев взаимодействия. И создание отдельного сайта под каждую новую культуру. Маркером которой, очевидно, часто служит язык.\
\r\n\
В общем, спасибо автору за сводку рекомендаций по механическому переводу. Но в целом мы — за культурную адаптацию интернет-решений на всех уровнях, от букв до технологий.\
\
\
\ \
\
\\
\Тимофей Шиколенков\\ Директор по маркетингу в \"Аудиомания\"\
\
\
\
Отличная статья. Мы проходили эту тему. И даже на пару указанных грабель наступили.\
\r\n\
Пожалуй, про интернет-магазины можно еще добавить, что иногда последовательность слов в названии товаров меняется.\
\r\n\
Например, в России говорят «Напольная акустика Arslab Classic 3 », а по-английски это «Arslab Classic 3 Floorstanding Speaker».\
\r\n\
Правда, несколько вещей в тексте — спорны. Например, тема перевода новостей. Часто случается, что новостей на разных языках (читай, для разной аудитории) разное количество. Они вообще могут не пересекаться. Поэтому просто «тупо» переводить этот модуль нельзя.\
\r\n\
Насчёт торможения при использовании нескольких таблиц в одном SQL-запросе вообще удивило. При нормальном конфигурировании и использовании SQL сервера такая схема совершенно нормально работает. И, пожалуй, она — единственно правильная в данном случае.\
\
\
\ \
\
\\
\Алексей Соколов\\ Ведущий менеджер проектов в Uplab\
\
\
\
Автор подробно описал основные нюансы, которые нужно учесть при разработке мультиязычных проектов. Но хочется осветить вопрос переключения языков в реализованном проекте.\
\r\n\
Зачастую, когда клиент работает с контентом, например, создает статью для всех языковых версий, ему необходимо работать с каждым языком отдельно: сначала — с русским, потом — с английским. В таком случае названия статьи на русском и английском языках частично будут отличаться (это как минимум).\
\r\n\
При создании динамического контента в Битриксе используется автоматическая генерация URL и, если в статьях не переписать этот URL на одинаковый, то при смене языков на странице статьи переключения не будет, а будет переход либо на главную, либо на 404 страницу (в зависимости от редиректов).\
\r\n\
Пример:\
\r\n\
\\
\r\n\
\\
\
\
\ \
\
\\
\Роман Клевцов\\ Генеральный директор в Оптимизм.ру\
\
\
\
Известно, что в настоящее время создание различных языковых версий веб-сайта компании все более распространено в связи с тенденцией к глобализации и стремлению бизнеса к расширению и выходу на новые рынки. Каждая компания выбирает наиболее оптимальный для себя способ перевода контента: от встраивания автоматического модуля от Google до осуществления всей работы полностью вручную.\
\r\n\
Мы в Optimism.ru рекомендуем нашим клиентам использовать при переводе сайтов языковые файлы, то есть PHP скрипт, хранящий переводы языковых фраз на тот или иной язык. Языковые файлы, которые позволяют достаточно быстро и качественно осуществить перевод на любой язык. В дальнейшем достаточно только загрузить файл на сайт, чтобы сгенерировать новый контент. Однако следует помнить, что любые автоматизированные переводчики несовершенны и может потребоваться ручная проверка текста корректором.\ \r\n\ \r\nРазумеется, следует учитывать, что иногда сайт переводится на другой язык не полностью: существуют страницы, предназначенные для конкретной страны (например, страницы локальных новостей или предложения определенных товаров в интернет-магазине). В этом случае необходимо задать определенное правило в языковых файлах: например, распространить их действие на конкретную область материалов.\
\
\
","code":"items-bitrix-multylanguage-site","previewText":"Вам приходилось видеть сайты на нескольких языках? А вы знаете как они устроены, какие забавные проблемы с ними возникают\r\nи насколько возрастает трудоемкость поддержки и развития такого сайта? Сегодняшняя статья — про многоязычные сайты.","redirectToRR":false,"title":"Как сделать сайт на нескольких языках? Многоязычность сайта. 16 проблем и 5 способов решения","companyId":4170,"tags":[{"code":"article","title":"Статья"},{"code":"1c-bitrix-cms","title":"1С-Битрикс"},{"code":"bitrix","title":"1С-Битрикс"},{"code":"tips-cms","title":"Советы"}],"id":676,"createdAt":"23 июня 2014","image":null,"company":"ИНТЕРВОЛГА","companyImage":"https://api.cabinet.cmsmagazine.ru/images/company_logos/adc8ca1b15e20915c3ea6008fc2f52ed/1603088923dnc1kNSJee3GELmrrz.png","views_count":"50 463","firstLettersOfName":"СО"},"empty":false,"isAjax":false,"request":{"url":"material","params":{"code":"items-bitrix-multylanguage-site"}},"isError":false,"similarMaterials":{"response":[{"type_id":1,"author":"Владимир Завертайлов","code":"items-bitrix-or-framework","redirectToRR":false,"title":"Битрикс или фреймворк?","company":"Сибирикс","companyImage":"https://cmsmagazine.ru/klarnetCMSlocal/resized_images/persons/300/500/uploadeb2aargv16.jpg","views_count":1266,"firstLettersOfName":"ВЗ"},{"type_id":2,"author":"Роман Забродин","code":"authors-roman-zabrodin-kak-mnogo-zarabotat-v-partnerstve-s-1c-bitrix","redirectToRR":false,"title":"Как много заработать в партнерстве с 1С-Битрикс","company":null,"companyImage":null,"views_count":2525,"firstLettersOfName":"РЗ"},{"type_id":1,"author":"Александр Живетьев","code":"items-bitrix-programmers","redirectToRR":false,"title":"Программа обучения Битрикс-разработчиков","company":"Progressive Media","companyImage":"https://cmsmagazine.ru/klarnetCMSlocal/resized_images/persons/300/500/uploadht27h3y34r.jpg","views_count":2891,"firstLettersOfName":"АЖ"},{"type_id":1,"author":"Степан Овчинников","code":"items-the-best-technological-cases","redirectToRR":false,"title":"Лучшие технологические кейсы по разработке сайтов в июне по мнению Степана Овчинникова (ИНТЕРВОЛГА)","company":"ИНТЕРВОЛГА","companyImage":"https://cmsmagazine.ru/klarnetCMSlocal/resized_images/persons/300/500/uploadjw4l5ed881.png","views_count":2060,"firstLettersOfName":"СО"},{"type_id":1,"author":"Михаил Буров","code":"items-continuous-integration-1c-bitrix","redirectToRR":false,"title":"Continuous integration 1C-Bitrix","company":null,"companyImage":"https://cmsmagazine.ru/klarnetCMSlocal/resized_images/persons/300/500/uploade6gbikxmow.png","views_count":2233,"firstLettersOfName":"МБ"},{"type_id":1,"author":"Катерина Логвинова","code":"items-value-for-online-stores","redirectToRR":false,"title":"Соответствие интернет-магазинов 54-ФЗ. Есть ли повод для волнений?","company":null,"companyImage":"https://cmsmagazine.ru/klarnetCMSlocal/resized_images/persons/300/500/uploadrlcdr6cx06.jpg","views_count":2632,"firstLettersOfName":"КЛ"},{"type_id":1,"author":"Константин Обухов","code":"items-free-ssl-certificate","redirectToRR":false,"title":"Бесплатный ssl-сертификат для интернет магазина на Битрикс и Битрикс24","company":null,"companyImage":"https://cmsmagazine.ru/klarnetCMSlocal/resized_images/persons/300/500/uploadnc1vm1n1z2.jpg","views_count":3170,"firstLettersOfName":"КО"},{"type_id":1,"author":"Дмитрий Гринкевич","code":"items-agency-bitrix24-answer-questions","redirectToRR":false,"title":"Агентство + Битрикс24 = ? Отвечаем на вопросы о внедрении самой популярной в Рунете CRM","company":"Манао","companyImage":"https://cmsmagazine.ru/klarnetCMSlocal/resized_images/persons/300/500/upload7uw7cj2o79.jpg","views_count":3517,"firstLettersOfName":"ДГ"},{"type_id":1,"author":"Станислав Мозгель","code":"items-review-of-cms-eye-specialist-support-and-site-improvements","redirectToRR":false,"title":"Обзор CMS глазами специалиста по поддержке и доработке сайтов","company":null,"companyImage":null,"views_count":41253,"firstLettersOfName":"СМ"},{"title":"Стартаперы Рунета выбирают LAMP","code":"items-startups","type_id":1,"author":"Александр Тихонов","company":"Contorra Family","companyImage":"https://cmsmagazine.ru/klarnetCMSlocal/resized_images/persons/300/500/upload01g1po1uvw.png","redirectToRR":false,"firstLettersOfName":"АТ"}],"empty":false,"isAjax":false,"request":{"url":"similarMaterials","params":{"code":"items-bitrix-multylanguage-site"}},"isError":false}},"flowsMenu":{"response":[{"title":"Маркетинг","code":"marketing","newCount":14},{"title":"Создание сайтов","code":"programming","newCount":5},{"title":"Контекстная реклама","code":"context","newCount":8},{"title":"SEO","code":"seo","newCount":5},{"title":"Комплекс услуг","code":"package_of_services","newCount":4},{"title":"Дизайн","code":"graphical_design","newCount":9},{"title":"Программирование","code":"programming","newCount":1},{"title":"SMM","code":"smm","newCount":1},{"title":"Digital","code":"digital","newCount":3},{"title":"Использование сервиса","code":"service_use","newCount":1},{"title":"Мобильная разработка","code":"moblile","newCount":1},{"title":"Юзабилити","code":"usability","newCount":2},{"title":"Брендинг","code":"branding","newCount":5},{"title":"Менеджмент","code":"management","newCount":2},{"title":"Интернет-маркетинг","code":"internet_marketing","newCount":1},{"title":"Интранет","code":"intranet","newCount":0}],"empty":false,"isAjax":false,"request":{"params":{},"url":"flowsMenu"},"isError":false}},"badges":{"isAjax":false,"isError":false,"data":{}},"abTest":{},"catalogList":{"view":"card","sort":null,"sort_direction":null},"favorites":{},"reviewForms":{"criteria":[],"isAjax":false,"success":false,"fields_errors":{}},"flowsSortType":{"sort_type":"fresh"},"agency_cookie":{}}
Руководитель в Дизайн-бюро Баярд
Кроме хорошей программной части — должен быть хороший менеджер, который всё адекватно напишет и опубликует. Мой опыт говорит о том, что лучше не делать многоязыковую поддержку, если ей никто c толком заниматься не будет. Функционал переключения языков должен быть управляем, например, мы сделали пока только русскую версию, английскую не отображаем, пока контентом не наполним, чтобы не было всяких «site under construction» или «see you soon».