Это первая публикация в нашем блоге в 2019 году, но она очень важная для всех нас. Мы наконец-то запускаем англоязычную версию ! У нас было почти всё готово ещё к середине декабря, но релизиться перед Новым Годом — это как выкатывать релиз в пятницу вечером. Поэтому отправку в большое плавание мы решили перенести на начало 2019 года.
Айсберг
Разработка английской версии Хабра была похожа на айсберг, верхушкой которого стало пользовательское «было бы неплохо иметь возможность публиковать посты на английском языке» — один из многочисленных фич-реквестов без хотя бы примерной оценки масштабов всех работ.
Почти год этот фич-реквест собирал лайки, в итоге собрал ни много, ни мало — один, но мысль сделать это родилась у нас задолго до этого. Идея казалась перспективной, ведь англоязычных конкурентов можно сосчитать на пальцах одной руки. Мы долго думали, прикидывали, выслушивали просьбы пользователей и клиентов, пропускали статьи в «Песочнице» на английском языке, но всё равно итоговый паззл в единое целое не складывался.
Как известно, около 90% айсберга скрыто под водой, а у нашего айсберга была ещё более высокая плотность и в итоге переделать пришлось чуть ли не весь Хабр. Собственно, на это мы и потратили половину 2018-го года. И сейчас, в начале 2019-го рады представить вам результаты работ.
Что было сделано
Когда мы анонсировали выход Хабра за пределы России, у нас уже был план. Грубая оценка работ и сроков по ним. Но уже в процессе работ мы поняли, что переделки будут более масштабными.
Хабр довольно-таки большой — и внутри и снаружи. Когда в каком-нибудь разделе настроек добавляешь новую строчку текста, этих масштабов не замечаешь, но когда переводишь весь сайт, понимаешь, что это реально айсберг. Стало понятно, чтобы сделать англоязычный Хабр мало просто перевести «Хабр» → «Habr».
1. Структура переводов
Опыта локализации у нас практически не было, при разработке Хабра мы не закладывали в него мультиязычность. Поэтому в архитектуре проекта пришлось многое поменять для того, чтобы поддержка нового языка в принципе была возможна и работала корректно.
Сначала мы попытались решить задачу по-быстрому, через классический gettext, но очень скоро стало понятно, что его возможностей недостаточно…
Все работы по переводам у нас поделились на три функциональных блока:
- Интерфейс (языковые файлы)
Для полноценной интернационализации интерфейса был выбран ICU-формат — с ним стал возможен перевод дат, окончаний и т.д. Каждому элементу перевода был присвоен уникальный ID, для удобства они группировались по сущностям. Дальше переводчику в работу отправлялся многострочный языковой файл.
- Шаблоны (справочный раздел, документы, руководства, письма)
Большие «самостоятельные» тексты переводились отдельно, своими силами. Но перевод юридических документов (а у нас их оказалось немало) — это отдельная вселенная со своими чёрными дырами, поэтому пришлось прибегнуть к помощи НЛО.
Мы старались переводить даже картинки, попутно освежая их. Например:
БылоСталоВ этом руководстве): - Справочники (хабы, бейджи, потоки)
Тут в целом всё просто — классический CRUD с отдельным разделом в панели администрирования.
В дальнейшем подобный подход позволит (при необходимости) добавить на сайт и другие языки. Если ты смелый, ловкий, умелый вы хотите попытать свои силы в переводе Хабра на новый язык, пожалуйста, напишите нам.
Немного цифр:
Интерфейс: около 250 КБ текста, более 3000 строк
Шаблоны: более 800 КБ текста
Письма: более 400 КБ текста
2. Настройки мультиязычности
Предстояло решить, как всё это будет работать. Вариант создания отдельного сайта мы не рассматривали всерьёз, но в процессе работы такая мысль нас эпизодически посещала.
Поэтому мы пошли по пути разделения контента и осталось придумать, как это можно сделать. В итоге остановились на наиболее гибком варианте: чтобы каждый пользователь мог выбирать и язык интерфейсов сайта, и язык контента.
Для этого каждый пользователь в настройках может указать, что и на каком языке будет. Можно оставить в ленте только контент на русском языке, можно только на английском, а можно сразу на обоих.
Итак, с сегодняшнего дня на Хабре появилось две настройки:
- Язык интерфейса
Язык всех элементов сайта. Пока поддерживается или русский, или английский языки. Мы постарались сделать «умное» автоопределение языка (на основе заголовка accept language), но эту настройку всегда можно переопределить самостоятельно.
- Язык публикаций
Эта настройка позволяет пользователю видеть в своей ленте публикации на выбранных языках. От неё же зависит содержимое контекстных блоков («Самое читаемое», «Читают сейчас», «Что обсуждают»). По-умолчанию она наследуется от языка интерфейса, но её тоже в любой момент можно поменять.
До авторизации выбор языков находится в левом верхнем углу (иконка планеты), после авторизации — переезжает в пользовательское меню. В мобильной версии поведение похожее — настройки находятся в футере и в меню пользователя.
В ленте можно выбрать как один конкретный язык, так и несколько. А вот при создании публикации можно выбрать только один язык.
3. SEO
Всё сделали, перевели, начали тестировать. Понравилось, но чувствовалось какое-то отсутствие-присутствие. И вспомнили, что забыли про бога SEO.
Когда ваш сайт на одном языке, то про поисковую оптимизацию можно часто не думать — всё как-то работает само. Но когда на сайте появляется контент на разных языках, то этот момент уже нельзя игнорировать.
До этого Хабр был только на русском языке и в целом неплохо индексировался. С приходом мультиязычности появилась необходимость научить поисковики правильно «видеть» как русскоязычную, так и англоязычную версии. Для этого пришлось провести комплексный аудит и переделать некоторые вещи на сайте — поменять ссылки, изменить sitemap, прописать верные canonical-url и прочее.
Как-то так:
β-тестирование
По большому счёту сейчас мы объявляем бета-тест новой функциональности, поэтому будем благодарны за любой фидбек, а особенно за идеи и сообщения о багах. Нужно тщательно и в разных условиях протестировать нововведение: на разных платформах, на разных ОС и браузерах, из разных стран, с/без VPN и т.д. Исторически наши пользователи — самые лучшие тестеры, и мы надеемся на вашу помощь.
Let’s play!
С сегодняшнего дня можно в полной мере начать размещать свои публикации на английском языке и делать переводы русскоязычных статей. А также приглашать друзей, проживающих в других странах и владеющих английским языком. Если каждый пригласит хотя бы одного такого друга, обязательно заживём, а наша смелая попытка вылезти за пределы нашей зарегулированной песочницы будет выглядеть не такой уж безумной. Чтобы это было проще сделать, каждому пользователю с положительной кармой мы начислим сегодня по одному приглашению.
Впереди много интересного — проработка стратегии, поиск новых авторов и переводчиков, SMM, аналитика и много чего ещё, поэтому если можете что-то предложить, то пишите на welcome@habr.com — мы всегда рады новым знакомствам.
На связи!
Автор: Denis Kryuchkov