Comments 30
В моем понятии идеальный переводчик это тот который иммигрировал от 5 до 10 лет в страну на который нужно перевести из страны первоначального языка перевода, или наоборот. На мой взгляд будущее за фрилансерами переводчиками.
«Например, фраза «Вы понравились 2 девушкам» греет душу не только приятным фактом предстоящего знакомства, но и чистым и понятным русским языком.»

Ну, как-бы, фраза должна звучать: «Вы понравились __2м__ девушкам», а лучше: «Вы понравились двум девушкам». Потому как просто цифра может быть воспринята, даже в условии контекста, как «два», вместо «двум»
Согласен, числа прописью делают текст более естественным, но съедают много места, особенно при больших значениях. Давайте считать наш пример промежуточным: не идеальным, но всё же достаточно понятным и гибким (учтены и склонения, и зависимость от числа).
В английском языке, например, есть правила (или просто рекомендации) — когда писать число, а когда текст.
Хотя, на мой взгляд, в электронных интерфейсах лучше использовать числа, за них проще зацепиться взгляду.
есть еще языки, помимо английского, там бывают очень другие правила.
Вы понравились {{users_num}} {{users_word#Dative}}».


Какие падежи используете, венгерские?

Хотелось бы знать, как вы работаете с падежами подробнее, точнее как вы их мапите, например, в русском это дательный, в венгерском — винительный. Т.е. падеж тут выступает как параметр, понятно что если в языке нет падежа — берем перевод без падежа (поднимаемся ввер по дереву переводов). Как быть в данном случае? не делать же разные шаблоны для таких языков?
Шаблоны, конечно же, одни на всех. Переводчик видит лексему и переменные в ней, исходный вид "{{users_num}} {{users_word}} liked you" — никаких падежей.

Для каждого языка существует свой собственный набор падежей, и переводчик сам решает, какой падеж применить в его конкретном случае. Фразу ведь можно перефразировать как "{{users_num}} {{users_word}} заценили вас", тогда нужно использовать именительный падеж.

Пусть у нас есть две лексемы:

Вы понравились {{users_num}} {{users_word#Dative}}

{{users_num}} {{users_word#Nominative}} заценили вас

Разработчики обеспечивают, что в шаблонизатор попадёт не конкретное слово «девушка», а объект-обёртка, умеющий получать правильную форму по числу и правильный падеж (указанный в переменной).

Разработчик не знает как переводчик составит фразу, он просто обеспечивает покрытие всех кейсов. А переводчики подготавливают этот универсальный объект примено так:
Спасибо за ответ!
объект-обёртка, умеющий получать правильную форму по числу и правильный падеж (указанный в переменной

Число и падеж это достаточно передавать для всех языков (которые вы воддерживаете)? Т.е такой ситуации не бывает, что для русского нужно передать падеж, а для венгерского — падеж, число, погоду и еще что-то?
Да, я не объяснил, извините :)

Объект-обёртка создаётся для конкретного языка, на котором отображается сайт или генерируется ответ для мобильного приложения. Ну и наши объекты умеют зависеть только от числа (передаётся из кода) и падежа (выбирается переводчиком). То есть в псевдокоде как-то так:

$current_language = 'RU'; //Берём текущий язык
$Localisation = new Localisation($current_language); //Создаём объект "локализация"

$users_num = 5; //Число пользователей
$users_word = 'girl'; //Идентификатор слово, которое будет зависеть от числа и склоняться
$Word = $Localization->getNumDependent($users_word, $users_num); //Получаем тот самый "объект-обёртку"

//Готовим параметры для шаблонизатора
$params = array(
    'users_num' => $users_num,
    'users_word' => $Word,
);

//Выводим "Вы понравились 5 девушкам"
echo Render('Вы понравились {{users_num}} {{users_word#Dative}}', $params);
О чем вам было бы наиболее интересно узнать из следующих статей?

Пишите обо всём, не промахнётесь! Все потенциальные темы статей выглядят очень интересными. Хотя, как программисту, мне было бы наиболее интересно узнать про потрохи работы с выражениями «Вы понравились {{users_num}} {{users_word#Dative}}» и тому подобное.
Спасибо, постараемся.

Тема склонений действительно очень интересна, но текущая реализация нас не очень устраивает из-за того, что разработчик должен обеспечить передачу объекта-контейнера в шаблонизатор. Сейчас мы работаем над тем, чтобы переводчик мог сам, без участия разработчиков, сделать часть лексемы зависимой от числа и/или заменить слово объектом-контейнером. Самый сложный вопрос в таком решении — насколько это ударит по перфомансу.
Хм, а вот как вы поступаете со сложными вещами, типа рода. Ведь в Чешском, например, девушки среднего рода, если среди них не предполагается мужчины. Как с такими вещами поступаете?
Как правило для фраз, зависящих от пола, создаётся три варианта: Male, Female и Unknown
Unknown используется не только в тех случаях, когда пол не указан, но и когда речь идёт о пользователях разных полов. Такие лексемы перефразируются максимально нейтрально.
Чем геттекст то не угодил?
Там же всё это давно есть — и множественные формы (одно яблоко, 2 яблока, 5 яблок) и контекст (msgctxt) и память переводов (впрочем, зависит от софта для перевода) и утилиты для извлечения фраз из исходников и формат хранилища с O(1) доступом (.mo) и куча опыта.
Разве что многоуровнего фейловера нет, но это мелочь.
Как я уже говорил, мы затачиваем свою систему переводов под себя. И поверьте, система переводов Badoo гораздо сложнее, чем простое key-value хранилище. Для геттекста пришлось бы выстраивать «наше АПИ поверх», и не факт что было бы быстрее в разработке и производительнее. Мы выбрали гибкость.

Судя по текущему состоянию голосования, следующая статья будет как раз об этом ;)
Не описанные вопросы:
Использовала ли Badoo какую-то готовую систему или же это все писалось в компании с нуля?
Интересно например, при такой нагрузке — вероятно где-то заранее(на каком этапе?) формируется готовый набор языковых шаблонов, или же какие-то из описанных ситуаций в нем все-же остаются переменными?
Также интересно, насколько система переводов в Badoo является самостоятельной и монолитной. Или же наоборот, ее части размазаны по проекту.
Почитайте комментарии, мы частично обсуждали эти же вопросы.

Использовала ли Badoo какую-то готовую систему или же это все писалось в компании с нуля?


Писали с нуля, затачивали под свои нужды.

Интересно например, при такой нагрузке — вероятно где-то заранее(на каком этапе?) формируется готовый набор языковых шаблонов, или же какие-то из описанных ситуаций в нем все-же остаются переменными?


Да и да :) Статичные лексемы (не зависящие от внешних данных, например «Здравствуйте, {{user_name}}») генерируются на этапе деплоя кода — почитайте нашу статью про разработку и деплой.

В лексемах, зависящих от числа и использующих склонения остаётся определённая доля динамики (например, «Вы понравились 3 девушкам» = «Вы понравились {{users_num}} {{users_word#Dative}}»)

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


Система достаточно монолитна. У нас есть два типа хранения переводов: словари и текст в шаблонах. При этом в шаблонах нет никаких указаний на переводы, а в коде присутствуют только вызовы «дай-ка мне вот эту фразу из словаря». Словари используются как для веб, так и для мобильных приложений. И словари, и шаблоны генерируются на этапе деплоя веба или на этапе сборки приложения.
У меня дипломной работой была «Локализация китайских MMORPG-игр на русский», затрагивал практически все те же самые аспекты. Жаль тогда было мало материалов, подобных этой статье :-)
Чистое любопытсво: почему китайских? Полагаю, первая и основная проблема была с дизайном: то что можно сказать двумя иероглифами приходится писать пятью словами на не-иероглифических языках?
Всё просто: специальность — китайский язык, а диплом на практическом фрилансерском опыте писался.
Да, один из главных головняков это строка в 12 символов, куда нужно уместить какой-нибудь «позолоченный драконий клинок славы 12-го уровня — зелёный»
Сам тоже занимаюсь локализацией и часто возникает мысль, что нужно просто оставить английский язык в качестве языка для 90% интерфейсов и успокоиться. Я, конечно, понимаю, что это в какой-то мере утопия, но все-таки, что народ думает по этому поводу?
Это зависит от того, насколько популярно ваше приложение или сайт. Популярные приложения нужно переводить на родной язык аудитории — массовый пользователь не будет пользоваться сервисом на неродном языке. Приложения или сайты, рассчитаные на узкую целевую аудиторию можно и не переводить.
Я все же думаю, что если бы у детей все гаджеты и программные интерфейсы были на английском языке, то проблемы с локализацей бы не стояло. Ведь, например, никого не напрягает, что 99% языков программирования на английском языке и никто не собирается их локализовывать, т.к. все привыкли. Вот, например, слово toolbar (7 букв), а на русском «панель инструментов»… Ужосссс...)))
Тогда появилась бы другая проблема — дети не говорили бы на русском языке. Я, конечно, утрирую, но тем не менее, незнание английского языка — не самая большая проблема России. 99 языков программирования вряд ли знает 1 % населения России и мира, например, поэтому почти никого не напряжет, даже если они будут на суахили написаны :-)
Я не совсем согласен. Русский язык изменяется так или иначе. По этой причине из «панели инструментов» рано или поздно все равно получиться «тулбар». И тулбар станет частью русского языка также, как куча других подобных примеров.
Скажите, а варианта с добавлением динамики в том числе к выбору склонений как функции языка/управления/рода/числа — рассматривалась и была отвергнута или не рассматривалась?
Only those users with full accounts are able to leave comments. Log in, please.
Information
Founded

1 January 2006

Location

Россия

Website

badoo.com

Employees

201–500 employees

Registered

15 December 2009

Habr blog