Начинаю серию постов про локализацию (localization -> l10n) и UX-writing на реальных примерах: буду брать приложение или сайт и показывать, где можно было бы сделать лучше. Начну с приложения Facebook для Android (версии от 09-2019).
Сначала о хорошем.
У приложения в целом очень неплохой перевод на русский, учитывая количество других поддерживаемых языков. Отдельная благодарность за пункт «Язык» в меню приложения: сегодня разработчики чаще принудительно выставляют язык системы телефона, а это не всегда удобно (например, Яндекс.Карты упорно переключают мне приложение на английский из-за языка системы).
Во многих местах хорошо поработали с окончаниями существительных в зависимости от числа (1 комментарий, 8 комментариев). Но есть и недостатки.
Строки с переменными
Запросы на добавление в друзья 7
Предложение выглядит разорванным даже в исходном английском языке, зато структура очень «безопасна» для локализаторов — просто конкатенация двух строк, или одна переменная. Вероятно, в коде приложения написано что-то такое:
friends_request = {Запросов на добавление в друзья {$requestCount}}
Более человечным был бы текст формата:
У вас 7 запросов в друзья
Такой формат удаляет пассивный залог и сокращает длину строки. Конечно, если число друзей будет другим, то придётся менять окончание у слова запрос. Если для обработки текстов интерфейса используется система вроде Fluent, то локализатору достаточно написать строку в подобном формате:
friends_request =
{$requestCount ->
[one] У вас {$requestCount} запрос в друзья
[many] У вас {$requestCount} запросов в друзья
*[other] У вас {$requestCount} запроса в друзья
}
Я написал селектор для выбора строки в зависимости от значения переменной $requestCount. Например, если в переменной будет «7», то отобразится строка №2 (many) как У вас 7 запросов в друзья, а если в ней будет «23», то активируется строка №3 — У вас 23 запроса в друзья. Кстати, количество вариантов в переводе может быть больше или меньше, чем в оригинальном английском языке: тот же Fluent не делает жёсткой привязки, поэтому у локализатора есть некоторая степень свободы.
Обратите внимание на селекторы one, many — я ссылаюсь не на конкретное число, а на библиотеку множественных чисел CLDR. Добрые люди всё уже классифицировали за нас.
Если же вы крутой UX-writer, то можете добавить щепотку приятного контента с селекторами конкретных чисел:
[1] У вас один запрос в друзья
Переменная в тексте вообще не используется, слово Один можно написать буквами. И добавить других селекторов, если корпоративные стандарты позволяют 🙂
[999] У вас почти тысяча запросов в друзья
[666] У вас чертовски много запросов в друзья.
[1000] У вас ровно тысяча запросов в друзья!
Метки времени
У Facebook определённый разнобой в отображении временной метки — когда произошло то или иное событие.
{mm} мин. назад
Самый удобочитаемый формат времени из найденных в приложении, хотя с точки зрения дизайна ничто не мешало написать слово минут полностью, места полно.
{hh} ч.
Слово Назад сделало бы надпись более понятной и человечной, точно так же не навредив дизайну.
«Сейчас»
Сейчас подходит для стримов (которые идут прямо сейчас, в этот момент), а для публикаций, случившихся в одно мгновение, подошла бы фраза Только что.
Данные
В английском языке тарифицируемый интернет-трафик называют cellular data, или просто data. На русский отдельно взятое data можно перевести как даные. Но интернет-трафик принято называть трафиком. Кроме того, лучше использовать побудительное наклонение, тогда вместо абстрактной экономии вы дадите программе приказ экономить.
Пропущенные переводы
Позорно, но не удивительно при текущем подходе постоянных релизов и обновлений. Вероятно, у Facebook нет хорошей внутренней CAT или CMS, иначе такая простая ошибка, как отсутствующий перевод строки (которая даже не требует QA), дала бы о себе знать.
Перенос строки
Достаточно заменить слово Редактировать на Изменить 🙂
Итого
Интерфейс приложения Facebook локализован неплохо, но ему нехватает consistency в некоторых ключевых местах (например, время), и пропущенные переводы сильно портят картину. Оценка — 9/12.