Кейс: HR-площадка для найма IT-специалистов за 2 месяца на английском языке
Рынок IT-рекрутинга в России перенасыщен: hh.ru, Habr Career, LinkedIn. Но как найти разработчика из Беларуси, Казахстана или Армении? Как построить площадку, ориентированную на англоговорящую аудиторию, но с данными на двух языках? Один из наших клиентов — стартап из сферы HR-tech — решил создать международный джоб-борд для IT-специалистов, полностью на английском, но с возможностью перевода интерфейса и данных на русский.
Мы сделали площадку за 2 месяца на Falcon Space. Всего 350 тысяч рублей (лицензия + доработки). Сейчас на ней зарегистрировано 200+ работодателей и 3000+ соискателей. Расскажу, как настроить мультиязычный сайт с личными кабинетами и не сойти с ума.
Почему мультиязычность — это не просто «перевести кнопки»
Многие думают: «Переведу интерфейс на английский — и готово». Но на практике мультиязычный сайт с личными кабинетами включает три уровня:
- Интерфейс платформы — меню, кнопки, сообщения об ошибках, датапикеры. Это статический перевод.
- Пользовательские данные — например, название вакансии, описание, требования. Они могут храниться на одном языке, а могут — на нескольких (если работодатель вводит текст на двух языках).
- Системные сообщения — письма, уведомления, чеки. Они также должны быть на языке пользователя.
- Интерфейс — английский по умолчанию, переключение на русский по кнопке.
- Вакансии и компании — работодатель может заполнить как на английском, так и на русском (или только на одном). Если соискатель выбрал русский интерфейс, ему показывается русское описание (если есть), иначе — английское.
- Письма и уведомления — отправляются на том языке, который выбран в профиле пользователя.
- SEO — URL, мета-теги, заголовки генерируются на двух языках (по поддоменам: en.site.com и ru.site.com).
- Файлы ресурсов (resx) — для перевода интерфейса. Вы можете загрузить свой перевод на нужный язык, переопределяя стандартные фразы. Мы это сделали для английского и русского.
- Переключатель языков — две кнопки в подменю (или можно добавить в любое место). Переключение происходит без перезагрузки страницы, сохраняется в сессии и профиле пользователя.
- Поддержка мультиязычных данных — для таблиц, которые требуют перевода (например, вакансии, компании, категории), мы создаём отдельные таблицы переводов.
- Профиль: имя, фамилия, стек технологий, опыт, ссылка на GitHub, зарплатные ожидания.
- Поиск вакансий по ключевым словам, стеку, городу, формату (удалёнка, офис). Результаты выводятся на двух языках (в зависимости от языка пользователя).
- Отклик на вакансию: соискатель пишет сопроводительное письмо (на том языке, на котором составлена вакансия).
- История откликов: статус (рассматривается, приглашён, отклонён).
- Резюме в формате PDF (генерируется автоматически из данных профиля на двух языках).
- Уведомления о новых вакансиях по подписке (еженедельный дайджест на выбранном языке).
- Профиль компании: название, логотип, сайт, описание на английском и русском.
- Публикация вакансии: форма на двух языках — заголовок и описание можно заполнить и на русском, и на английском (если заполнены оба, то каждому пользователю покажется его язык).
- Список вакансий компании, возможность редактировать, закрывать.
- Просмотр откликов: список соискателей с их резюме, возможность изменить статус, написать сообщение (через встроенный чат).
- Статистика по вакансии: сколько просмотров, откликов, конверсия.
- Платные опции (поднять вакансию в топ) — интеграция с платежным шлюзом.
- Зарегистрировано 230 работодателей и 3400 соискателей (80% из РФ, 20% из СНГ).
- Опубликовано более 900 вакансий.
- Среднее время закрытия вакансии — 14 дней (по данным работодателей).
- Выручка (платные размещения и продвижение) — около 150 тыс. руб/мес, проект вышел на окупаемость за 4 месяца.
- Включите поддержку локализации в настройках платформы (админ-раздел «Локализация»). Загрузите переводы интерфейса (мы даём базовые файлы для EN и RU).
- Добавьте переключатель языков на сайт (можно через шаблон).
- Для сущностей, которые требуют перевода (например, вакансии, товары), создайте таблицы переводов по описанной выше схеме.
- Модифицируйте SQL-процедуры, чтобы они учитывали язык (@lang) и подтягивали данные из таблицы переводов.
- Настройте поддомены (если нужно) или работайте через параметр lang в URL.
- Создайте мультиязычные шаблоны писем.
- Если вы делаете сами: только ваше время (2-3 недели на доработку).
- Если заказываете нам: от 100 до 250 тыс. руб (в зависимости от объёма переводимых сущностей и сложности).
- Лицензия Falcon Space — базовая (150 тыс. руб), расширенная поддержка мультиязычности (мультиязычные данные) — отдельная опция, но не обязательно (можно реализовать своими силами).
В нашем проекте были требования:
Расскажу, как это реализовано в Falcon Space.
Архитектура мультиязычности в Falcon Space
Платформа поддерживает несколько уровней локализации из коробки:
Схема для вакансий:
CREATE TABLE [app].[vacancies] (
vacancy_id int PRIMARY KEY,
company_id int,
created_at datetime,
is_active bit
);
CREATE TABLE [app].[vacancy_translations] (
translation_id int PRIMARY KEY,
vacancy_id int,
lang_code nvarchar(10), -- 'en', 'ru'
title nvarchar(200),
description nvarchar(MAX),
requirements nvarchar(MAX)
);
При отображении вакансии для текущего языка система сначала ищет перевод на язык пользователя. Если его нет — берёт язык по умолчанию (английский). Это позволяет работодателям заполнять вакансию хотя бы на одном языке, а со временем добавлять перевод.
Личные кабинеты соискателя и работодателя
На площадке две основные роли: Соискатель (Developer) и Работодатель (Employer). Есть также администратор.
Личный кабинет соискателя
Личный кабинет работодателя
Технические особенности реализации на Falcon Space
Переключение языка и хранение предпочтений
При первом заходе пользователь видит английский интерфейс. Кнопка переключения меняет язык через параметр URL: ?lang=ru. После авторизации язык сохраняется в профиле пользователя в таблице users.lang. При следующем входе система автоматически подставляет сохранённый язык.
Для неавторизованных посетителей язык хранится в сессии или куке.
Мультиязычный поиск
При поиске вакансий соискатель вводит ключевые слова на своём языке. Нужно искать и по англ, и по рус версиям заголовка, если они есть. Мы сделали полнотекстовый индекс на двух языках, используя CONTAINS.
CREATE FULLTEXT CATALOG ft_catalog AS DEFAULT;
CREATE FULLTEXT INDEX ON vacancy_translations(title, description)
KEY INDEX PK_vacancy_translations
WITH STOPLIST = SYSTEM;
Поиск: WHERE CONTAINS((title, description), @keywords).
Генерация мультиязычных URL и sitemap
Для SEO мы сделали поддомены: en.site.com — английская версия, ru.site.com — русская. В личном кабинете пользователя также есть выбор, но он может переключаться между поддоменами. Это стандартный подход для международных проектов.
Sitemap генерируется отдельно для каждого поддомена, включая все вакансии с соответствующими переводами. Это помогает поисковикам правильно индексировать версии.
Пример генерации URL для вакансии: en.site.com/vacancy/123 и ru.site.com/vacancy/123. При заходе на русскую версию заголовок и описание берутся из таблицы переводов с lang='ru'.
Письма и уведомления
Шаблоны писем хранятся в таблице email_templates с полем lang_code. При отправке письма системе передаётся язык пользователя, и она выбирает нужный шаблон. Мы подготовили шаблоны на английском и русском для всех событий: регистрация, отклик на вакансию, приглашение на собеседование.
Результаты проекта и отзывы
Проект был реализован за 2,5 месяца (с учётом тестирования). Бюджет — около 350 тыс. рублей (лицензия + доработки). Основные затраты ушли на адаптацию поиска и мультиязычную логику.
Через полгода после запуска:
Из отзыва заказчика (Startpack): «Разумный компромисс между универсальными решениями и разработкой с нуля. Готовность разработчиков развивать и добавлять функционал. Возможность в случае необходимости дальнейшей поддержки силами собственных разработчиков, владеющих только SQL и Bootstrap. Рекомендую».
Как сделать мультиязычный сайт на Falcon Space: минимальный план
Если вы планируете международный проект, закладывайте мультиязычность в ТЗ с самого начала. Переделывать потом — дороже в 3-4 раза.
Сколько стоит мультиязычность для вашего проекта
Мультиязычный сайт расширяет вашу аудиторию в разы. Если вы хотите выйти на рынок СНГ или Европы — это must-have. На Falcon Space это реализуемо за разумные деньги.
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта