Обзор 7 онлайн-сервисов для локализации ПО

    Наверное каждый продукт, интерфейс которого имеет более одного языка, сталкивался с проблемой организации процесса локализации.

    На самом деле этот вопрос касается не только мультиязычных приложений. Далеко не всегда при проектировании фичи заранее проработаны все тексты, которые для нее понадобятся, поэтому очень часто разработчики используют «черновые» тексты, которые потом должны быть выверены и, при необходимости, переведены на другой язык. Обычно это выглядит так: «ну ты напиши пока что-нибудь там, потом подправим».

    В данном обзоре я опишу свои впечатления от тестирования 7 онлайн-сервисов для локализации ПО и сравню их по основным показателям (см. таблицу в конце статьи).

    Дисклеймер: данный обзор не претендует на полноту и объективность. Я решил поделиться своими впечатлениями от работы с несколькими сервисами, которые я тестировал в процессе решения задачи по организации процесса переводов в конкретном Ruby on Rails-проекте. Возможно, для кого-то минусы покажутся плюсами и наоборот, тут все зависит от процесса и личных впечатлений. К тому же я сам не переводчик и могу упускать какие-то важные для них моменты.

    Для каждого сервиса я опишу его ключевые особенности в свободной форме, а в конце статьи сделаю небольшую сравнительную табличку. Все скриншоты кликабельные. Ну, поехали!

    localeapp.com


    Поскольку наше приложение написано на Ruby on Rails, то естественно в первую очередь я обратил внимание на этот сервис с заманчивым слоганом «Easy localization for Rails apps». Вообще, на этот сервис уже есть краткий обзор в статье Ruby on Rails I18n: разработчик — разрабатывает, клиент — заполняет. Об остальном позаботится сервис, но я все же напишу свое впечатление, чтобы сделать обзор более целостным.

    Забегая вперед, сразу скажу, что у localeapp есть один недостаток (не единственный, впрочем), из-за которого мы отказались от его использования. Дело в том, что нам необходимо было не только переводить, но еще и делать ревью нашей дефолтной локали. А localeapp помечает все ключи в любом импортированном файле как «Complete». Т.е., загрузив нашу дефолтную локаль туда, я увидел, что она вся «Complete», и чтобы пометить ее для ревью, мне нужно сделать это вручную для каждого ключа! Я даже списался по этому поводу с разработчиками, и они ответили, что таки-да: «...there is no easy way to batch-mark complete locales as incomplete». Для нас это означает, что пришлось бы заводить фиктивную локаль в приложении, добавлять неутвержденные переводы в нее, а по мере прохождения ревью переносить их в нормальную локаль. Ну, что тут можно сказать… обидно, что из-за отсутствия возможности такой простой batch-операции сервис может терять клиентов. А все так хорошо начиналось, мне этот сервис понравился.

    Интерфейс переводчика:



    Основные особенности:

    • Сервис ориентирован в первую очередь на rails-приложения (но это не значит, что переводить можно только их).
    • Существует одноименный гем, который можно подключить к приложению и делать импорт/экспорт локалей одной командой. Также этот гем умеет пушить в localeapp все missing translations автоматически при обновлении страницы (по умолчанию только в development, но можно конфигурировать). Ну и самое вкусное: гем можно запустить как daemon на staging-сервере и он будет автоматически с заданным интервалом затягивать обновления из localeapp и применять их на сервере, так что переводчики смогут сразу видеть результат своих трудов.
    • Умеет затягивать и включать в список переводов языковые ресурсы из популярных библиотек и всех подключенных гемов. Ключи из библиотек не тарифицируются, но их набор ограничен: devise/kaminari/rails v2.3/rails v3 + еще парочка.
    • Есть различные статусы ключей, но их всего два: Complete и Incomplete. Так же в контекстном меню есть функция «Mark for review», но что именно она делает, я так и не понял. Никаких видимых изменений не произошло.
    • Ведется история изменений ключей (без версионирования текстов, только сам факт изменения).
    • Имеет возможность добавить в проект юзеров с ролями:
      — Developer (доступ ко всем функциям и локалям);
      — Translator (доступ только к переводам и не могут создавать или удалять ключи).
    • Приятный, довольно юзабельный интерфейс.
    • Интерфейс позволяет создавать новые и удалять ключи (кроме роли Translator).
    • Поиск ищет вхождение поисковой строки сразу везде: в ключах и в самих текстах переводов.
    • Есть возможность заказать платный профессиональный перевод.
    • Есть бесплатная поддержка Open Source проектов.
    • Есть бесплатный тариф для мелких закрытых проектов (до 500 ключей и до 2 локалей).

    Слабые стороны:

    • Отсутствует возможность оставить комментарий или скриншот к переводу.
    • Нельзя массово пометить переводы, как не утвержденные. Это значит, что ревью дефолтной локали можно производить только через описанный выше лайфхак с фиктивной локалью.
    • Весьма скудные возможности интерфейса переводов по сравнению с другими сервисами (хотя для кого-то минималистичный интерфейс будет скорее плюсом).
    • Самый главный минус для нас: официальный гем весьма странно мерджит переводы при обратном импорте. У нас он постоянно переставлял местами строки (даже если не было изменений в них), а также (что вообще безобразие!) пихал куски из одних yml-файлов в другие, так что разобраться в изменениях после такого импорта было невозможно. Не исключаю, что эту проблему можно было решить, но писать в суппорт и разбираться уже не стал, т.к. решили не использовать этот сервис по совокупности причин. Так что просто имейте ввиду.


    webtranslateit.com


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

    Интерфейс переводчика:



    Основные особенности:

    • Довольно богатые возможности работы в интерфейсе: удобные фильтры, групповые операции и т.п.
    • Никакой принудиловки с дефолтной локалью, в отличие от localeapp.com. Все новые импортированные ключи по умолчанию имеют статус «Unproofread», т.е. можно без проблем ревьюить существующие переводы или через групповые операции пометить их все как «Completed».
    • Много различных статусов ключей: Completed, Unproofread, Untranslated, To verify, Hidden, Obsolete. Также можно добавлять теги (labels) к ключам. Пожалуй, хватит для реализации любого бизнес-процесса.
    • Поиск такой же удобный, как на Localeapp: ищет сразу и везде (вхождения в ключах и содержимом). Есть возможность искать по регулярному выражению.
    • К каждому ключу могут быть прикреплены короткий сопроводительный текст от разработчика, а также обсуждение. Комментарий от разработчика очень полезен, когда нужно дать переводчику ссылку на страницу, где можно увидеть контекст.
    • Позволяет создать собственный глоссарий для проекта (или скопировать его из другого проекта). Если в переводимом тексте встречается слово из глоссария, сервис покажет его значение и предложенный перевод.
    • Автоматически предлагает варианты перевода слов из своей Global Translation Memory. Правда, делает это как-то странно: если переводится фраза, то вариант перевода предлагается только на первое слово.
    • Поддержка истории изменений по каждому ключу (включая версионирование текста перевода).
    • Имеет возможность добавить в проект юзеров с ролями:
      — Manager (доступ ко всем функциям и переводам);
      — Translator (доступ только к переводам на указанные локали и, опционально, возможность утверждать переводы);
      — Client (может только просматривать переводы и читать/писать).
    • Умеет импортировать файлы с компьютера, по URL или через прямую вставку из буфера обмена.
    • Есть поддержка эвентов появления новых не переведенных ключей. Можно настроить период проверки на наличие новых ключей (daily/hourly) и указать, что об этом нужно известить команду переводчиков. Очень удобно, на мой взгляд.
    • Также есть поддержка веб-хуков. После каждого перевода сервис будет отправлять на указанный URL POST-запрос с информацией о сделанном переводе и его статусе.
    • Существует кроссплатформенная утилита WebTranslateIt Command Line Interface, которая позволяет выполнять основные операции (pull/push и пр.) из командной строки.
    • В своей статье Workflow Automation они приводят сценарии реализации автоматизированного обновления переводов на staging-сервере. В отличие от Localeapp здесь нет готового решения, но они предлагают взять за основу их утилиту web_translate_it, написанную на ruby, и запилить обновление так, как вам надо (примеры прилагаются).
    • В наличии присутствует полноценный REST API.
    • Есть возможность подключить Google Translate и Bing Translator для автоматических переводов.
    • Есть бесплатный тариф для мелких закрытых проектов (до 500 ключей).

    Слабые стороны:

    • Загрузка файлов только вручную, нет автоматической синхронизации с чем-либо. Умеет понимать веб-хуки Github и затягивать обновления переводов, но это подходит только для публичных репозиториев и требует некоторых специфичных настроек.
    • Слегка корявый интерфейс, производит какое-то впечатление неряшливости. Но в целом все интуитивно понятно.
    • Нет бесплатной поддержки Open Source проектов.
    • Нет возможности заказать платный перевод через интерфейс сервиса.


    lingohub.com



    Данный сервис не обладает настолько богатыми возможностями в части переводов, как webtranslateit, однако он мне показался очень даже достойным внимания. К тому же у него, на мой взгляд, самая удобная и гибкая реализация синхронизации языковых ресурсов с проектом (в частности через Github).

    Интерфейс переводчика:



    Основные особенности:

    • Позволяет интегрироваться с гитхабом и импортировать все yml-файлы оттуда (как вручную, так и затягивать автоматически обновления из репозитория при коммитах в указанную ветку). Поддерживает различные стратегии импорта.
    • Позволяет пушить изменения обратно на гитхаб в выбранную ветку (это производится только вручную, нажатием кнопки).
    • При интеграции с Github имеет набор наиболее распространенных watch patterns — масок, по которым нужно отслеживать изменения в языковых файлах для проектов на RoR, yii, CakePHP, приложений Androis и iOS и т.д.
    • Есть свой гем для целей апдейта переводов в приложении.
    • Можно добавлять комментарий и загружать скриншоты к переводу.
    • Есть два вида интерфейса редактора переводов (классический и обновленный). Мне больше понравился обновленный (на скриншоте именно он). В классическом виде не видно самих ключей, а меня это почему-то нервирует. В обновленном виде удобно пользоваться горячими клавишами на клавиатуре (только их надо выучить, без них сложно).
    • Есть различные статусы ключей: Draft, Not translated, Translated, Reviewed.
    • Есть автоматические LingoChecks, которые помогают находить ошибки в переводах. В настройках проекта можно задать следующие политики проверок: а) проверка, что все плейсхолдеры из исходного текста используются в переводе; б) проверка, что количество переносов строк в исходном тексте совпадает с количеством в переводе; в) проверка, что количество символов в переводе не отличается от исходного текста более, чем на n%, или же что оно не больше n символов от исходного текста (очень полезно, когда есть ограничение по кол-ву символов на кнопочках); г) проверка, что определенные термины из исходного текста встречаются в переводе (например, не переводимые названия) — это настраивается. При обратном экспорте можно сразу увидеть статус LingoChecks и попросить переводчиков исправить все ошибки. Мне показалось это довольно интересной фичей.
    • Есть возможность группового изменения статусов у ключей.
    • Поддержка истории изменений по каждому ключу (включая версионирование текста перевода).
    • Позволяет добавить пользователей в проект, указав их роли: Project Administrator, Developer или Translator. Для последнего можно указать, к каким локалям он будет иметь доступ (опционально можно дать еще право ревьюить/утверждать переводы на этой локали).
    • Имеется публичный API.
    • Бесплатен для Open Source проектов.

    Слабые стороны:

    • Автоматический пуш на гитхаб реализован чрезвычайно невнятно! Пока я пытался разобраться с настройками в интерфейсе — напушил кучу коммитов в репозиторий, сам того не зная, т.к. нигде нет ни подтверждения, ни индикации того, что процесс пошел, ничего. Увидел только уже результат на гитхабе.
    • Перемудрили с поиском. Видимо хотели сделать его мощным и гибким, но пользоваться не всегда удобно. Например текст «site CMS» ищется по «site cms» и «site cm*», а по «site cm» — нет. Не все додумаются до звездочек.
    • Нет бесплатного тарифа даже для мелких коммерческих проектов. Зато минимальный план от $4.99 в месяц.
    • Нет возможности заказать платный перевод через интерфейс сервиса.


    transifex.com



    Довольно известный сервис для локализации приложений, однако его возможности, как ни странно, уступают аналогам. Часто его используют для перевода Open Source проектов.

    Интерфейс переводчика:



    Основные особенности:

    • К переводам можно добавлять комментарии и инструкции (под «instructions» видимо имеется ввиду описание контекста).
    • Можно добавлять предлагаемые переводы (suggestions).
    • История изменений у ключей есть, но она какая-то странная. Сколько бы я ни менял перевод, в истории так и оставалась висеть только одна запись.
    • Можно создать собственный глоссарий и система будет опознавать в переводимом тексте термины из него и предлагать уже готовый перевод.
    • Имеются следующие статусы переводов: Untranslated, Unreviewed, Reviewed.
    • Есть поддержка тегов у ключей, в т.ч. пара зарезервированных тегов «notranslate» и «locked», которые соответственно не позволяют переводчику переводить (только скопировать оригинал) и вообще что-либо делать с ключом.
    • Возможна групповая обработка ключей. При групповой обработке есть функция «Find and Replace», что может быть полезно.
    • Поддерживаются нотификации юзеров о каких-либо событиях (но вот о появлении новых не переведенных ключей нотификаций, похоже, нет).
    • Есть механизм Translation Memory, который запоминает ранее переведенные слова и может предлагать их перевод в будущем. Translation Memory может быть разделяемой между несколькими проектами.
    • Возможно добавить в проект пользователей с различными ролями и объединять их в команды:
      — Organization Administrator
      — Project Maintainer
      — Team Manager
      — Language Team Coordinator
      — Reviewer
      — Translator
      Подробнее про назначение ролей, можно прочитать в документации.
    • Можно заказать профессиональный перевод у одного из двух доступных вендоров, выбрав проект и целевой язык.
    • Есть своя консольная утилитка, позволяющая выполнять основные функции (pull/push/set/delete etc.).
    • Поддержка внешних сервисов машинного перевода: Microsoft Translator и Google Translate.
    • API также присутствует.
    • Бесплатен для Open Source проектов.

    Слабые стороны:

    • Только ручная загрузка файлов по одному, автоапдейт возможен только по публичному URL.
    • Нельзя редактировать основной язык-источник онлайн. Прямо так и написано: «Unfortunately, you can't edit the source strings online…».
    • Я не смог добавить в интерфейсе какие-либо языки перевода, кроме английского, французского, немецкого, португальского и испанского. Как добавить русский я, например, не понял. UPD: NightOrion в комментариях показал мне, где спряталась эта функция: http://habrahabr.ru/post/229031/#comment_7761613
    • Неудобный редактор переводов — основное рабочее место. Это скорее на уровне личных ощущений, чем что-то объективное. Вроде бы все есть, но неудобно. Мне ближе табличный вид «а-ля Excel», а здесь нужно выбирать фразу в списке слева, а справа появляется окно перевода с дополнительными функциями. Чтобы увидеть ключ, которому соответствует текущий текст, нужно куда-то лезть.
    • В поиске нужно указывать, что я хочу искать: текст, ключ или еще что-то. По умолчанию поисковая фраза ищется только по текстам переводов. Это не удобно, привычнее просто вбить фразу и посмотреть все результаты.
    • Нет бесплатного тарифа даже для мелких коммерческих проектов.


    oneskyapp.com



    Интерфейс переводчика:



    Основные особенности:

    • Можно указать «стиль перевода» для проекта: формальный/неформальный или не указывать явно. Можно написать комментарии по стилистике для переводчиков. Мне эта фича показалась интересной, т.к. для перевода одних и тех же слов на многие языки могут быть использованы различные слова и обороты, в зависимости от принятой стилистики подачи информации. Кроме того, наверное, это помогает лучше координировать разных переводчиков.
    • Можно указать, во сколько раз переведенная фраза может превышать длину оригинала, и может ли переводчик слегка превысить это значение.
    • Опционально можно активировать голосование за переводы и установить число голосов, которое должен получить перевод, чтобы автоматически утвердиться. Обычно это практикуется для Open Source проектов.
    • Возможно добавить в проект пользователей с различными ролями:
      — Translator (может переводить и голосовать за перевод)
      — Reviewer (то же, что и Translator, но может еще утверждать перевод)
      — Moderator (то же, что и Reviewer, но может еще изменять и удалять переводы).
    • Имеются следующие пары статусов переводов: Unfinalized/Finalized и Unapproved/Approved. При экспорте готовых переводов в файл будут включены только ключи со статусами «Approved» и «Finalized». Переводчики все еще могут редактировать переводы в статусе «Approved», но уже не могут редактировать ничего, если ключ перешел в статус «Finalized». Подробнее про статусы и их значение можно прочитать в хелпе.
    • Можно оставлять комментарии к ключам.
    • Поиск нормально ищет и по ключам, и по текстам.
    • Можно заказать проф. перевод со следующими опциями:
      — Только не переведенные фразы.
      — Только не утвержденные фразы.
      — Фразы, обновленные с момента последнего заказа.
      Доступен и машинный перевод (Google Translate и Bing), который, понятное дело, гораздо дешевле (но все равно платный!). Также можно опционально заказать еще ревьюеров на выполненные переводы (+ $0.05 за слово). Можно сопроводить заказ своими комментариями для переводчиков.
    • Можно создать собственный глоссарий, но добавить переводы непосредственно в нем же нельзя. Зато слова из глоссария будут выделены в тексте при переводе и если на них кликнуть, то будет предложено добавить перевод этого слова.
    • Возможность добавить пользователей в проект с ролями:
      — Moderator (может переводить, голосовать, утверждать или изменять переводы)
      — Reviewer (то же, что и Moderator, кроме изменения переводов)
      — Translator (только переводить и голосовать).
      Для каждого пользователя можно указать, к каким языкам у него должен быть доступ.
    • Проекты объединяются в группы (Project Group). Группа проектов может включать в себя проекты по переводу различных сущностей: App Store Description, Mobile App, Website / Web App, Game, Help Desk (Freshdesk), Document. После выбора сущности нужно конкретизировать ее тип. Например, для «Website / Web App» попросят выбрать: Regular Website, Regular Web App, Facebook App, Others.
    • Автоматически предупреждает, если в переведенном тексте отсутствуют плейсхолдеры из оригинала. Чтобы переводчикам проще было понять, что означает этот плейсхолдер, к нему можно добавить описание, которое будет всплывать при наведении на текст плейсхолдера в режиме перевода.
    • Соревновательный момент: все достижения переводчиков фиксируются. Можно получить одну из следующих ачивок в четырех номинациях: Newbie, Apprentice, Expert, Master или Guru.
    • API, традиционно, присутствует. Есть готовые обертки на PHP, Python и Ruby.
    • Бесплатен для Open Source проектов.
    • Бесплатен для приватных коммерческих проектов, имеющих до 5 коллабораторов (seats). На странице с ценами написано, что раньше это стоило $69 в месяц, а сейчас «Free». Как хотите, так и понимайте.

    Слабые стороны:

    • Только ручная загрузка файлов. Нет интеграции и автоматических апдейтов.
    • Иногда странная работа с комбинациями пар статусов. Можно сделать перевод например «Unapproved», но в то же время «Finalized». При этом редактировать его будет нельзя.
    • Непривычно для меня реализована возможность добавления скриншотов к ключам: если везде можно сделать это сразу при переводе фразы (на том же экране), то здесь нужно идти вообще в отдельный раздел, где можно загрузить скриншоты. После загрузки скриншота на нем можно отметить области и указать, какой ключ соответствует отмеченному участку. Оригинальная идея, но мне показалось неудобным, поэтому отнес это в минусы. Этот сервис, кстати, не единстенный, где практикуется такой подход.
    • Бесконечные подтверждения даже обратимых действий (попапы вида «Are you sure … ?») ужасно раздражают. Вообще интерфейс не стесняется показать при каждом удобном случае всякие там лоадеры, фейдеры и прочие индикаторы напряженной работы, что создает впечатление какой-то тормознутости сервиса. К тому же интерфейс частенько подглючивал.


    crowdin.net



    Интерфейс переводчика:



    Основные особенности:

    • Есть возможность организовать инлайн-редактирование переводов веб-приложений прямо в их интерфейсе. Для этого нужно завести фиктивную локаль и вставить на сайт небольшой JS-код. Тогда при переключении приложения на эту локаль и логине в CrowdIn пользователь получит возможность кликнуть на любую строку на сайте и ввести ее перевод.
    • Фича «псевдолокализации». Она заключается в том, что сервис генерирует «переводы», которые должны помочь выявить, насколько готово ваше приложение к локализации. Новые строки генерируются случайным образом по одному из доступных пресетов (суть пресетов в эмуляции использования французского, кириллического, китайского или арабского алфавита). При этом можно задать, на сколько процентов новые строки будут длиннее или короче существующий (чтобы понять, например, есть ли запас по длине строки в проблемных местах, типа кнопок и ячеек таблиц), а также какими специальными символами заменить существующие переводы (чтобы проверить, насколько правильно ваше приложение будет отображать например китайские или арабские тексты). В общем, крутая штука для тех у кого есть время и желание этим заниматься.
    • Возможность использовать глобальную Translation Memory в своих проектах. Механизм Translation Memory тривиален для такого рода сервисов: работает либо кросспроектно, либо внутри одного конкретного проекта. Память можно наполнять как автоматически, по мере перевода, так и импортом заранее готовых переводов.
    • Умеет показывать предложения от автоматических переводчиков (Microsoft Translator и MyMemory) в интерфейсе переводчика.
    • Можно создавать свой глоссарий для проекта. Опционально можно дать возможность переводчикам пополнять его (по умолчанию это могут делать: владелец проекта, менеджер и корректор).
    • Базовые настройки экспорта: пропускать не переведенные строки; экспортировать только утвержденные переводы; автоматически заполнять не переведенные региональные диалекты из языка-источника.
    • Ведется история ревизий базовых файлов с возможностью откатиться к одной из ревизий.
    • Можно добавлять пользователей в проект с ролями Translator и Proofreader или пригласить профессиональных переводчиков. У каждого переводчика есть сводка его показателей и активности в проекте.
    • Можно удалить из проекта все действия одного конкретного переводчика: переводы, валидации или голоса — такого я больше нигде не встречал!
    • Есть система внутренних сообщений между участниками проекта и возможность создавать общие для проекта обсуждения.
    • Есть возможность найти и заменить слово в текущем файле или всем проекте.
    • Можно прятать некоторые ключи от переводчиков.
    • Есть своя утилитка crowdin-cli для работы из командной строки.
    • Поддержка веб-хуков для нотификации внешних сервисов об изменениях в переводах.
    • Имеется публичный API.
    • Возможность заказать проф. переводы прямо в интерфейсе (доступно 5 источников).
    • Бесплатен для Open Source проектов.

    Слабые стороны:

    • Поиск ищет только по тексту и переводу, но не по ключам. Нам например поиск по ключам очень полезен, потому что переводчики часто спрашивают, какой ключ имеет тот или иной текст на странице.
    • Почему-то по умолчанию экспортируемый из сервиса переведенный файл имеет такое же название, как и импортируемый. Т.е. я для теста загрузил en.yml, указал, что буду переводить его на русский, перевел его и выгрузил обратно, но имя файла так и осталось «en.yml». Чтобы файлы именовались правильно, нужно отдельно в настройках задать правила именования.
    • Нет бесплатного тарифа даже для мелких коммерческих проектов.
    • Загрузка скриншотов к переводам такого же (не удобного, имхо) типа, как у oneskyapp.com. Сначала загружается скриншот, затем на нем отмечаются строки.


    phraseapp.com



    Интерфейс переводчика:



    Основные особенности:

    • Аналогично предыдущему сервису, есть возможность инлайн-редактирования переводов в интерфейсе вашего веб-приложения. После настройки этой фичи, которая делается довольно просто, переводы можно задавать прямо в интерфейсе сайта, просто кликая по кнопочкам «Edit» возле текста. Посмотреть в работе этот редактор можно на демо-версии.
    • Есть собственный гем phrase.
    • Удобный таймлайн активности по проекту (кто когда что загрузил, перевел, утвердил и т.д.).
    • Возможно создавать список исключений по маскам ключей. Исключенные переводы не участвуют в импорте/экспорте и не видны в интерфейсе переводчика. В моем тестовом проекте в исключенные автоматически попали такие маски, как «activemodel.errors.*», «number.format*», «number.currency*» и т.д. Видимо, потому что я указал тип проекта «Ruby on Rails» при его создании.
    • Можно добавлять теги к ключам и впоследствии группировать и фильтровать ключи по ним, смотреть прогресс переводов в разрезе тегов и т.д. Тег с датой импорта ключа добавляется к нему автоматически.
    • Можно добавлять новый ключ прямо в интерфейсе.
    • Для каждого ключа можно задать максимальное количество символов, которое может иметь перевод.
    • Можно добавлять скриншоты к ключам.
    • Есть Translation Memory, которая может разделяться между указанными проектами.
    • Стандартный набор статусов ключей: Untranslated, Unverified, Verified.
    • Возможность автоматически получить машинный перевод для ключа (Google Translate).
    • Можно добавлять в проект неограниченное число пользователей, указывая их должность в проекте. Зачем нужна должность, я так и не понял, т.к. еще есть опция «User is a manager», которая дает пользователю полный доступ к функциональности.
    • По каждому ключу ведется история изменений с версионированием перевода и возможностью откатиться на любую версию одной кнопкой.
    • Можно создавать руководства по стилистике перевода. Такое руководство может включать довольно много различных параметров, помогающих переводчику лучше понять контекст:
      — Описание вашего бизнеса и его целевой аудитории.
      — Описание «голоса» вашего бренда («voice of your brand» — к сожалению не знаю, какой термин здесь уместен).
      — Общую стилистику перевода (разговорная, литературная, нейтральная).
      — Требования к форматированию.
      — Мини-глоссарий.
      Это, несомненно, будет полезно при размещении заказа у внешних переводчиков.
    • Возможность заказать проф. переводы прямо в интерфейсе (через gengo), выбрав качество перевода (Professional/Standard), а также указав его желаемую стилистику (одно из ранее созданных руководств). Есть также опция, которая позволяет отметить платный перевод как не утвержденный по умолчанию.
    • Имеется API.
    • Есть бесплатный тариф для совсем мелких коммерческих проектов (до 150 ключей).
    • Бесплатен для Open Source проектов и образовательных учреждений.

    Слабые стороны:

    Как ни странно, но это наверное единственный сервис, у которого я ничего не напишу в этот раздел. Да, некоторых фич тут просто нет, но все жизненно необходимое имеется и довольно удобно реализовано.

    Таблица сравнения сервисов по основным показателям


    localeapp.com webtranslateit.com lingohub.com transifex.com oneskyapp.com crowdin.net phraseapp.com
    Бесплатный тариф для Open Source проектов
    Бесплатный тариф для мелких коммерческих проектов
    Публичный API *
    Утилиты для работы из командной строки
    Комментарии/скриншоты к ключам
    Собственный инлайн-редактор переводов в интерфейсе вашего приложения **
    Возможность заказать проф. перевод
    Варианты импорта ресурсных файлов — Гем localeapp
    — Ручной аплоад файлов (только .yml)
    — Консольная утилита wti
    — Ручной аплоад файлов
    — По указанному URL
    — Прямой ввод текста
    — Гем lingohub
    — Из репозитория Github/Bitbucket
    — Ручной аплоад файлов
    — Консольная утилита tx
    — Ручной аплоад файлов
    — Гем i18n-one_sky
    — Ручной аплоад файлов
    — Прямой ввод текста
    — Гем crowdin-cli
    — Ручной аплоад файлов
    — Создание пустого файла
    — Гем phrase
    — Ручной аплоад файлов
    — Прямой ввод текста
    Возможность из коробки автоматического обновления языковых файлов по расписанию или веб-хукам от внешних сервисов

    (автоапдейт из Github/Bitbucket)

    (автоапдейт по URL)
    Поддержка веб-хуков для нотификаций внешних сервисов об изменениях в переводах

    * — конечно, исходники гема localeapp открыты, и можно все посмотреть там, но по крайней мере какой-то общедоступной документации по API я не нашел.
    ** — нечто похожее можно реализовать в вашем Ruby-on-Rails приложении например через гем i18n_viz. Он умеет выводить во фронте ключи вместо переводов, а также сразу показывать прямую ссылку на редактирование этого ключа в сервисе переводов (см. описание гема).

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

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

    P.S. И да, я в курсе, что сервисов для огранизании онлайн-переводов на самом деле гораздо больше, но мне не хотелось перегружать статью. Такие сервисы, как например ackuna.com и www.ibabbleon.com я не стал включать в обзор, поскольку они не предназначены для самостоятельной локализации ПО. В комментариях категорически приветствуются ссылки на интересные сервисы, которые я обошел своим вниманием. Если их наберется достаточное количество — запилю вторую часть обзора.

    Only registered users can participate in poll. Log in, please.

    Каким онлайн-сервисом для локализации вашего продукта вы пользуетесь?

    Share post

    Comments 28

      0
      Большое спасибо за обзор. Как раз думаем над тем как организовать локализацию.
      Сами на чем остановились?
        0
        Сами пока склоняемся к lingohub просто по причине нативной интеграции с Github, что для нас весьма удобно. В любом случае, такого рода сервисы можно менять относительно безболезненно, так что планируем попробовать несколько уже в боевом режиме.
        +1
        Спасибо. Хороший обзор. Всё по делу. Пользовал Transifex.
          0
          Огромное спасибо за статью. Интересно, есть ли в Crowdin экспорт сразу в PHP c ключами и переводами, или надо уже вручную тянуть из yml?
            0
            Не совсем понял, что значит «экспорт сразу в PHP» (в каком формате? gettext или ...?), но есть даже библиотека для работы с API CrowdIn: github.com/akeneo/php-crowdin-api (требует PHP >= 5.3.3).
            0
            Пользовал LocaleApp но только участвовал в переводе OpenSource проекта, показалось удобным. Не знал что подобные трудности встретили владельцы проекта…
              0
              Есть ещё translatewiki.net/, но он только для open source.
                0
                Есть специфичный для Firefox аддонов сервис babelzilla.org/
                  0
                  Пользуюсь translate.google.com/toolkit/ не уверен, что подходит под ваши требования.
                    0
                    Подскажите, там машинный перевод или люди переводят?
                      0
                      Я пробовал только .po файлы, при загрузке файла можно сделать машинный перевод. Часть фраз из «словаря», для тех что нет будет обычный google translate. После предлагают заказать перевод у человека, при этом сообщают цену сразу.
                    0
                    Спасибо за подробный обзор! Всегда было интересно узнать, по каким показателям оценивают сервисы локализации разработчики приложений. Потому что с точки зрения переводчика картина была бы совсем другой. Кстати, очень интересно узнать, как в итоге пройдет локализация. Особенно интересны отзывы переводчиков на работу сервиса, количество и характер багов на этапе локализационного тестирования, ну и ваши общие впечатления.
                      0
                      А не пробовали вот эти штуки?
                      weblate.org/ru/
                      pootle.translatehouse.org/index.html
                      zanata.org/

                      Просто сейчас как раз возникла идея использовать вэб-ориентированное средство для интернационализации, которое можно было бы развернуть на собственном локальном сервере. Вот думаю, с чего начать тестирование.
                        0
                        Нет, мы конкретно эти не пробовали.
                        0
                        По поводу Transifex
                        Я не смог добавить в интерфейсе какие-либо языки перевода, кроме английского, французского, немецкого, португальского и испанского. Как добавить русский я, например, не понял.

                        Что вы тут имели в виду, локализацию всего интерфейса сервиса на русский? Чтоб оно было, надо его перевести. Я когда-то доводил перевод интерфейса до 96% и они его включали, но когда уровень переводов упал ниже 80% его выключили. Возможно такая политика сервиса, включают язык при определённом уровне перевода. А если вы имели в виду переводы русских проектов на русский, то всё это прекрасно делается, например проект в котором я участвую там прекрасно переводится
                        www.transifex.com/organization/DC/dashboard/flylinkdc
                          0
                          Я имел ввиду именно второе: перевод проекта на русский. Интуитивно я понимаю, что не должно быть тут каких-либо проблем, но я излазил уже все настройки своего тестового проекта и просто ну нигде не вижу, как я могу добавить какой-то язык, кроме перечисленных пяти. А по вашей ссылке 404, наверное это приватный проект.
                            0
                            Отнюдь, проект открытый, возможно я выдал ссылку из панели управления и мне как админу проекта там всё видно. Попробуйте эту
                            www.transifex.com/projects/p/flylinkdc/
                            Если назовете что у вас за проект могу помочь
                              0
                              А вообще языки добавляются через главное меню организации, где видно все ваши проекты, «Teams». Там будет указано на сколько языков уже переводится ваш проект и выпадающая менюшка по покажет вам очень длинный список вариантов новых языков с разными кодировками.
                                0
                                Я может быть не туда куда-то смотрю, но не вижу никаких выпадающих менюшек, вот скриншоты:
                                monosnap.com/image/TKvY8NTgWVSUzCACGYDe7baQCB85kl.png
                                monosnap.com/image/2wtT3w2k1vbL7TjyKnq9SYK2lVhrbM.png
                                  0
                                  Да, однозначно не туда. Примерно пол года назад, может чуть больше над списком языков была кнопка добавления языка, но потом её переместили в менеджер команд переводов.
                                  lh3.googleusercontent.com/-1pv_uh8v9Rk/U70MDC3BdsI/AAAAAAAADqA/acmXrdaRavU/w922-h442-no/pic1.PNG
                                  lh6.googleusercontent.com/-q1XdngJqPdg/U70MC8KXz0I/AAAAAAAADqE/udt71BQmE1A/w923-h445-no/pic2.PNG
                                    0
                                    Спасибо вам огромное! Я бы никогда в жизни этого не нашел! :)
                                    Добавил в статью ссылку на ваш комментарий со скриншотами.
                                      0
                                      Кстати у transifex сейчас в разработке новая фича для сайтов Transifex Live
                                      Они её не анонсировали оффициально и пока только пригласили на бетатестирование существующих пользователей. Смысл проекта заключается в том что на сайт для переводов заливается исходная локаль вашего сайта, переводится и дальше уже ничего никуда перезаливать не надо, сайт сам будет обращаться к Transifex и получать нужную ему локаль и сразу её отображать. посмотрим что и как у них получится.
                                        0
                                        Такую фишку уже ввели на Crowdin. Но лично мне, и голосовал за него, по душе тоже Transifex. Одна из отличительных черт — разнесены понятия проект и организация. Удобно в одной организации управлять несколькими проектами. В Crowdin пришлось бы создать новые и новые. Да и проектов на Transifex на порядок больше, особенно open source.
                                          0
                                          Что значит не стоит комментировать в позднее время суток, после тяжёлого дня. Не внимательно прочёл выше комментарий, попутал с инлайн-редактированием. Но всё равно по мне Transifex ближе и удобнее.
                            0
                            del
                            • UFO just landed and posted this here
                                0
                                В обзоре не хватает сравнения, какие правила для строк поддерживаются (а это один из самых важных параметров).
                                Например, мне в проекте необходимы расширенные Plural Rules:
                                You have {NUM_TASKS, plural,
                                            one {one task}
                                            other {# tasks}
                                            =42 {the answer to the life, the universe and everything tasks}
                                         } remaining.

                                или даже так:
                                {GENDER, select,
                                    male {He}
                                  female {She}
                                   other {They}
                                } found {NUM_RESULTS, plural,
                                            one {1 result}
                                          other {# results}
                                        } in {NUM_CATEGORIES, plural,
                                                  one {1 category}
                                                other {# categories}
                                             }


                                Unicode CLDR Project > CLDR Specifications > Plural Rules
                                ICU — International Components for Unicode
                                  0
                                  dlukyanov у lingohub появилась возможность заказать профессиональный перевод
                                    0

                                    Посоны, спасибо за обзор и отзывы. Не берите webtranslateit. Мы им пользуемся для перевода Гидры и ненавидим. В этот посте я оказался в поисках замены. Это французский сервис со всеми вытекающими странностями в интерфейсах. Но это ладно, человек — скотина терпеливая и даже к французской логике привыкает. Уи.


                                    Беда в том, что он тормозной и интеграции с гитхабом нет. Окей, интегрируемся через API. API глючный, кучу времени на него убили, но так и не получилось ничего. Техподдержка не ответила. Сам сервис не развивается последние несколько лет. Стоит дорого. Терпение кончилось, когда количество ключей подошло к лимиту, а следующий тариф у них стоит еще вдвое дороже текущего.

                                    Only users with full accounts can post comments. Log in, please.