Перейти к основному содержимому
cutty.dev
All posts

25 языков LIVE — важная веха

cutty.dev теперь говорит на двадцати пяти языках. Короткая история о том, что это значит, почему именно эти языки и как это было сделано без отправки данных вовне.

  1. Столько языков мы добавили всего за несколько недель. Начало было скромным: польский и английский, два, и на этом список закончился. Сегодня cutty.dev приветствует вас на двадцати пяти. Число красивое, но само по себе оно ничего не значит. Значение имеет то, кто стоит за этими столбиками.

Посчитай быстро. Арабский — это более 400 миллионов человек. Хинди — еще несколько сотен миллионов. Китайский, если считать мандаринский, превышает миллиард. Добавь испанский (Испания плюс почти вся Латинская Америка) и португальский (в основном благодаря Бразилии). Суммируя эти рынки, получается несколько миллиардов человек, которые могут увидеть инструмент сразу на своем языке. С первой секунды.

Почему именно эти 25

Полный список, для порядка. Польский, английский, немецкий, французский, испанский, итальянский, чешский, румынский, венгерский, греческий, нидерландский, шведский, финский, украинский, турецкий. К этому арабский и иврит (оба пишутся справа налево). Китайский, японский, корейский. Хинди, тайский, вьетнамский, индонезийский. И португальский.

Ничего здесь не взято с потолка. Первый слой — это просто Европа, рынок за рынком. Второй — это места, к которым европейский стартап обычно не прикасается, пока «не появится движение»: Ближний Восток и Северная Африка, Израиль, Восточная Азия, Индийский субконтинент, Юго-Восточная Азия.

Французский — отличный пример того, как один локаль тянет за собой полмира. Франция, конечно, но также Бельгия, Квебек и значительная часть Западной Африки. Один файл перевода, а охватывает десятки стран.

Откуда взялись эти переводы

Здесь находится часть, которой я, пожалуй, наиболее доволен. Это не было реализовано через какое-либо внешнее API. Переводила локальная модель ИИ, запущенная на нашем собственном оборудовании, в нашей сети.

Что из этого следует, простыми словами:

  • Ни одно предложение из интерфейса не покинуло пределы системы. Ни один поставщик ИИ не получил наши тексты для «обработки». Не потому, что нам есть что скрывать в кнопке «Skróć». Просто мы так настраиваем этот проект с самого начала и не делаем исключений, потому что исключения потом имеют свойство расти.
  • Это получается лучше, чем дословный перевод. Модель удерживает контекст, тон, иногда шутку. «Short link» на трех языках может иметь три разных осмысленных эквивалента, а не одну кальку.
  • Ноль затрат за запрос. Я хочу исправить одно предложение в двадцати пяти вариантах? Я делаю это и не смотрю на счетчик в счете.

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

Отражение страницы, или арабский и иврит

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

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

Шрифты, или проблема, о которой никто не задумывается, пока что-нибудь не сломается

Китайский, японский, корейский. Символы CJK, которых в обычном веб-шрифте просто нет. Если оставить всё как есть, пользователь вместо текста увидит квадратики (тот самый классический вид сломанной страницы). Поэтому мы подгружаем дополнительные шрифты, но только для этих версий. Остальные двадцать с лишним локалей используют наш легкий стандартный шрифт и не тянут ничего лишнего. Тайский, хинди и остальные письменности получили точно такой же подход.

Обратный порядок

Схема известна: запускаешь продукт на английском, а остальные языки — «когда-нибудь, когда будет трафик». Только вот трафика на испанском не будет, пока испанец, пришедший из Google, видит английский и уходит.

Мы пошли в обратном направлении. 25 языков для приветствия. Кто-то из Чехии, Тайваня, Вьетнама или Египта заходит через поисковик и с первого же экрана чувствует себя как дома.

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

А если твоего нет

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

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