Предложенная система локализации предоставляет возможности для создания естественно выглядящих переводов элементов интерфейса, не загнанных в жёсткие рамки и не ограничивающиеся переводом 1 в 1 эталонных фраз. С одной стороны Fluent позволяет предельно просто реализовывать простейшие переводы, но с другой предоставляет гибкий инструментарий для перевода сложных взаимодействий, учитывающих род, склонения множественных чисел, спряжения и другие языковые особенности.
Во Fluent допускается создание асинхронных переводов, в которых простая строка на английском языке может быть сопоставлена с достаточно сложным многовариантным переводом на другом языке (например, "Вера добавила фотографию", "Вася добавил пять фотографий"). При этом синтаксис Fluent, определяющий переводы, остаётся достаточно легко читаем и воспринимаем. Система изначально рассчитана на использование не техническими специалистами, что позволяет вовлекать в процесс перевода и рецензирования переводчиков без навыков программирования.
Код:
- Код: Выделить всё
shared-photos =
В {$userGender ->
[male] его
[female] её
*[other] их
} коллекцию
{$userName} {$photoCount ->
[one] добавлена новая фотография
[few] добавлены {$photoCount} новые фотографии
*[other] добавлено {$photoCount} новых фотографий
}.
Основным элементом перевода во Fluent является сообщение. Каждое сообщение связывается с идентификатором (например, "hello = Hello, world!"), который прикрепляется к коду приложений в месте своего применения. Сообщения могут быть как простыми текстовыми фразами, так и многострочными сценариями, учитывающими разные варианты грамматики и включающие условные выражения (селекторы), переменные, атрибуты, термины и функции (форматирование чисел, преобразование дат и времени). Возможно использование категорий, например, селектор "few" охватывает значения 2~4, 22~24, 32~34 и т.п. Поддерживаются ссылки - одни сообщения могут включаться в состав других сообщений, причём допускаются ссылки между разными файлами. Перед сборкой файлы с сообщениями объединяются в наборы.
Fluent обеспечивает высокую стойкость к ошибкам - неверно оформленное сообщение не приводит к повреждению всего файла с переводами или рядом расположенных сообщений. Для добавления контекстной информации о назначении сообщений и групп возможно добавление комментариев. Fluent уже применяется для локализации сайтов проектов Firefox Send и Common Voice. В прошлом году началась миграция Firefox на Fluent, в настоящий момент уже подготовлено более 3000 сообщений с переводами (всего в Firefox около 13 тысяч строк для перевода).
Источник: OpenNET
Публикаций на английском: Fluent 1.0: a localization system for natural-sounding translations