Mudlet: Настройте веб-службу перевода для Mudlet

Созданный на 9 апр. 2017  ·  45Комментарии  ·  Источник: Mudlet/Mudlet

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

Доступные альтернативы:
Launchpad - однако его будущее под вопросом
Transifex - демонстрационный проект здесь: https://www.transifex.com/mudlet/mudlet/dashboard/

Самый полезный комментарий

Ребят, пробная версия crowdin истечет через 4 дня, так что мне нужно "да" или "нет" - мы, кажется, довольны этим до сих пор.

Все 45 Комментарий

Есть POEditor как интеграция с github, что позволяет переводить XLIFF
файлы (которые предположительно поддерживаются лингвистом qt). И у них есть ОС
лицензия.

Другой вариант - Кордоба, которая вроде ничего не стоит и нативно
поддержка ts-файлов.

Никогда не пользовался услугами/приложениями для перевода, поэтому у меня нет предпочтений.

Вадим Перетокин [email protected] schrieb я Зв, 9. Apr. 2017,
13:14:

Нам нужно сделать так, чтобы людям было очень легко вносить свой вклад в перевод Mudlet.

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

Доступные альтернативы:
Launchpad https://translations.launchpad.net/ - это будущее
однако сомнительно


Вы получаете это, потому что подписаны на эту тему.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/Mudlet/Mudlet/issues/856 или отключить поток
https://github.com/notifications/unsubscribe-auth/ABAeDUJoAsg-zvnOq1YUvuIqn-fbRwcCks5ruL2WgaJpZM4M3_u1
.

Re: XLIFF the _Qt Linguist Manual: Translators_ Qt Doc примечания:

__Перевод строк__
Вы открываете исходные файлы перевода (TS) в Qt Linguist для перевода. Файлы TS представляют собой удобочитаемые XML-файлы, содержащие исходные фразы и их переводы. Файлы TS обычно создаются и обновляются с помощью lupdate. Если у вас нет файла TS, см. раздел Release Manager, чтобы узнать, как его создать.
Вы также можете использовать Qt Linguist для перевода файлов в международный формат XML Localization Interchange File Format (XLIFF), созданных другими программами. Однако для стандартных проектов Qt используется только формат файла TS. Минимальная поддерживаемая версия для файлов формата XLIFF — 1.1.

В настоящее время существуют веб-платформы для перевода, которые имеют огромные преимущества перед настольными приложениями: не нужно устанавливать какое-либо программное обеспечение, предлагать переводы для уже переведенного текста и т. д.

@SlySven Я прочитал это, поэтому я сказал то, что сказал. Это читается как не полностью поддерживаемая или запоздалая мысль, поэтому я якобы добавил (я никогда не проверял это).

@ vadi2 Продукты, которые я упомянул, представляют собой веб-платформы. Но вам все равно нужно будет использовать qt лингвист, чтобы сделать вывод этих платформ пригодным для использования фреймворком перевода Qt. Что также привязывает нас к поддерживаемым форматам файлов TS и XLIFF .

Я играл с Linguist, и пользовательский интерфейс, насколько я могу судить, довольно хорош (я фанат :heart_eyes:), он воспроизводит диалоги пользовательского интерфейса {и показывает исходный код, откуда берется текстовая строка для C++, происходящая из QStrings }, так что вы можете увидеть, как они будут выглядеть на разных языках, и вы можете работать над несколькими переводами одновременно. Я просто надеюсь, что Qt будет более жестким в том, чтобы не переупорядочивать содержимое файлов TS без необходимости, чтобы уменьшить шум git, когда файл обновляется участником - в отличие, скажем, от QGridLayouts в файлах .ui. * вздох *

Что касается необходимости использовать Qt Linguist - я думаю, что, поскольку мы обычно используем библиотеки Qt, мы, вероятно, будем привержены этому (как на уровне _Pig_, а не _Chicken_ уровни приверженности в _becon-and-egg sarnie_), кроме того, что мы станем родными gettext было бы _жестче_ в не очень хорошем смысле.

Похоже, я заинтересован в том, чтобы Qt Linguist экспортировал что-то в Интернете, с возможностью для людей устанавливать и просматривать свои переводы в реальном времени, если они захотят. Я посмотрю на сервисы @keneanung , которые вы упомянули, они выглядят красиво.

Я также думал о Transifex, но, похоже, он уже не так хорош.

Другая платформа веб-перевода: https://hosted.weblate.org/projects/tilix/translations/

Вот как проект Mozilla обрабатывает локализацию и перевод: https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Quick_start_guide/Translation_phase

Еще один подробный подробный обзор нескольких альтернатив и процесса в целом в этой магистерской диссертации на тему «Переводы в бесплатном программном обеспечении»: https://larjona.wordpress.com/translations-in-libre-software/

Спасибо @Kebap , я прочитал статью, на которую вы

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

Weblate кажется хорошим и открытым исходным кодом, но их размещенная версия также сейчас недоступна — как и все размещенные переводы, такие как для проекта Tilix. Фигово. Я также опасаюсь размещать что-либо еще на нашем сервере, потому что он уже работает на пределе.

Собираюсь попробовать демо Transifex. Они поддерживают открытый исходный код и кажутся гораздо более крупными магазинами, поэтому гораздо меньше шансов выйти из строя, в отличие от Weblate.

С учетом сказанного, если интеграция Weblates с Git действительно работает, ее будет намного лучше использовать, поскольку она _должна_ автоматически обновлять новый исходный текст из Git и, возможно, фиксировать его обратно. С другой стороны, Transifex требует, чтобы я вручную загружал файлы для перевода.

Хотя Transifex изначально поддерживает файлы .ts, кажется, что он задыхается при загрузке. Однако сработало использование ts2po и загрузка файлов .po .

Похоже, вы можете иметь автоматические двусторонние обновления между Transifex и Github с помощью некоторого промежуточного программного обеспечения: https://docs.transifex.com/integrations/github-txgh.

Мне удалось скачать .po с неповрежденным переводом с Transifex, но po2ts захлебывается файлом с ошибкой кодировки Python:

po2ts: WARNING: Error processing: input ./for_use_mudlet_rupo_1_ru.po, output ./for_use_mudlet_rupo_1_ru.ts, template None: 'ascii' codec can't encode characters in position 1994-1999: ordinal not in range(128)

Я оставлю проект Transifex на https://www.transifex.com/mudlet/mudlet/dashboard, если кто-то еще захочет его перевести для @Kebap @keneanung. В следующий раз попробую Weblate.

Weblate удобен — у него есть _тонна_ сторонних вариантов входа в систему, поэтому присоединиться к нему действительно легко.

@vadi2 написал:

Мне удалось загрузить .po с неповрежденным переводом с Transifex, но po2ts задыхается от файла с ошибкой кодировки Python:

Кажется, я где-то читал, что их версия po2ts работает только со старой спецификацией файла .ts и нуждается в обновлении (в конце концов, я думаю) — я отмечаю, что это происходит из набора инструментов перевода от Переведите исходный код House страница интернационализации mixxx .

На самом деле эта ошибка «кодирования» звучит так, как будто она пытается создать файл .ts котором используется кодировка ASCII, а НЕ UTF-8, поэтому возникает рвота в точке, где необходимо использовать некоторые символы (в _переведенной_ строке) это не ASCII...

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

Во вторник, 19 сентября 2017 г., в 18:18 Стивен Лайонс, [email protected] написал:

@vadi2 написал:

Мне удалось скачать .po с неповрежденным переводом с Transifex,
но po2ts давится файлом с ошибкой кодировки Python:

Кажется, я где-то читал, что их версия po2ts работает только со старым
спецификация файла .ts и необходимое обновление (я думаю, в конце) - я
обратите внимание, что это происходит из инструментария перевода
http://toolkit.translatehouse.org/ из источника Translate House Github
код https://github.com/translate/translate и последняя версия
2.2.5 (я не знаю, что они используют) на момент написания. Найти
веб-страница из другого проекта (не уверен, что она основана на GitHub, но
общий процесс для них выглядел примерно так же, как и нам: mixxx
страница интернационализации
https://mixxx.org/wiki/doku.php/internationalization .


Вы получаете это, потому что вы были назначены.

Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/Mudlet/Mudlet/issues/856#issuecomment-330592819 или отключить звук
нить
https://github.com/notifications/unsubscribe-auth/AAGxjEdeBPs-7fDkUwfoLjUt48eJJhl0ks5sj-lagaJpZM4M3_u1
.

Weblate, похоже, не в лучшем положении. Я еще не получил ответа на свое размещенное приложение, и проект не получает много обновлений. Вернемся к Transifex.

Советы по настройке Transifex с Qt: https://forum.qt.io/topic/36750/qt5-ts-files-and-transifex-continuous-translation-localization

https://bugreports.qt.io/browse/QTBUG-1136 :

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

Qt Linguist — это тупиковая технология — она не получит никаких функций в будущем, поэтому здесь мы должны использовать веб-платформу.

Я позабочусь о том, чтобы переводы Transifex заработали теперь, когда доступен #1334.

Просто чтобы повторить то, что я упомянул в перекрестной ссылке Kebap, что .ts а также имеют интеграцию с Github – функция псевдолокализации также должна помочь нам предотвратить проблемы в графическом интерфейсе, потому что мы не структурировали текст должным образом ( я думаю ), и, безусловно, поможет нам обеспечить достаточную свободу действий для языков со строками длиннее, чем en-US ...

crowdin выглядит красиво — давайте посмотрим, как он сравнивается с Transifex, у меня есть тестовый проект здесь .

@SlySven, что изменение кода, чтобы сделать html более

peek 2018-05-18 13-36

Я так понял - у краудина тоже есть такая возможность. Просто выберите «скрыть» в настройках тегов редактора :

selection_143

Это означает, что нам больше не нужно изменять код, который делал

Я доволен предложением @SlySven «s использования @crowdin переводов. @Kebap , @keneanung , @SlySven ваши мысли?

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

Привет,

Я являюсь частью команды Crowdin и с радостью помогу с дальнейшей настройкой, если это необходимо! Не стесняйтесь упоминать меня, если возникнут какие-либо вопросы

У меня тоже все в порядке с краудином. Поначалу его пользовательский интерфейс сбивал с толку, но я уверен, что мы (я) к нему привыкнем.

Признаюсь, я не смотрел внимательно на Transifex, так как я мысленно выключил его, так как понял, что он не справляется с текущим форматом Qt .ts хорошо / напрямую - это изменилось или я был неправ в этой вере?

Одна вещь о Crowdin, которую я вижу в недавних коммитах git, заключается в том, что вы загружали несколько файлов .ts которые были настроены локально для определенного языка. Теперь вы как бы исправили это, отправив только один файл mudlet_en.ts но мне это все еще кажется не совсем правильным. Вы можете удалить или закомментировать TRANSLATIONS = линии в mudlet.pro файл и есть скрипт , который работает (в базе источника):

lupdate -recursive ./src/ -ts ./translations/mudlet.ts

чтобы сгенерировать один файл, не зависящий от языка, для передачи в процесс перевода Crowdin и получить его для создания файлов mudlet_xx_YY.ts которые мы хотим (я уже изменил одну настройку в Crowdin, чтобы указать _xx_YY Language+locale суффиксы, где изначально казалось, что он установлен только на язык _xx ). Это по-прежнему приведет к тому, что набор файлов будет скопирован обратно в тот же каталог, готовый к lrelease .

Кстати, оставить простой файл без суффикса полезно, потому что это означает, что заинтересованные стороны, говорящие на языке меньшинства, могут скопировать и переименовать его для работы в частном порядке, если они того пожелают, для другого, непокрытого языка с предоставленным Qt Linguist. {Может быть, например, пиратский на 19 сентября!!!}

Я думаю, что предпринятые мной шаги по предотвращению обфускации HTML, похоже, стали немного менее необходимыми, поскольку плагин Qt Designer, похоже, стал немного меньше стремиться коверкать HTML в последних двух версиях Qt. Я еще не полностью убежден, что он не будет мешать и менять вещи, скажем, заставляя использовать определенные шрифты, которые последний человек, редактирующий его, имеет в своих системах, вместо того, чтобы оставить его как общий, который может работать на всех платформах. Я посмотрю еще раз и сообщу об этом здесь, потому что это повлияет на то, как мы записываем такой HTML в нашей работе.

Признаюсь, я не смотрел внимательно на Transifex, так как я мысленно отключился, рассматривая его, поскольку я понял, что он не справляется с текущим форматом Qt .ts хорошо / напрямую - это изменилось или я был неправ в этом убеждении?

Я тоже был, кажется, он изменился: https://docs.transifex.com/formats/qt-ts

Я не планирую использовать плагин Qt Designer, поэтому какие бы изменения он ни делал, это не имеет значения - краудин достаточно хорошо справляется с переводами сам по себе, и рендеринг HTML со стилем «скрыть» допустим.

О, он все еще делает это - вставляет таблицы и DTD - так, что легче читать и анализировать людям, это:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'FreeSans'; font-size:9pt; font-weight:400; font-style:normal;">
<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:large; font-weight:600;">Welcome to Mudlet!</span></p>
<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click on one of the MUDs on the list to play.</p>
<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">To play a game not in the list, click on <img src=":/icons/list-add_small.png" /><span style=" color:#555753;">New</span>, fill in the <span style=" font-style:italic;">Profile Name</span>, <span style=" font-style:italic;">Server address</span>, and <span style=" font-style:italic;">Port</span> fields in the <span style=" font-style:italic;">Required</span> area.</p>
<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">After that, click <img src=":/icons/dialog-ok-apply_small.png" /><span style=" color:#555753;">Connect</span> to play.</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Have fun!</p>
<p align="right" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The Mudlet Team <img src=":/icons/mudlet_main_16px.png" /></p></body></html>

или это, которое делает то же самое, насколько мы заинтересованы:

<html><head/><body><center><big><b>Welcome to Mudlet!</b></big></center></p>
<p><center>Click on one of the MUDs on the list to play.<center></p>
<p><center>To play a game not in the list, click on <img src=":/icons/list-add_small.png"/> <span style="color:#555753;">New</span>, fill in the <i>Profile Name</i>, <i>Server address</i>, and <i>Port</i> fields in the <i>Required</i> area.<center></p>
<p><center>After that, click <img src=":/icons/dialog-ok-apply_small.png"/> <span style=" color:#555753;">Connect</span> to play.</center></p>
<p>Have fun!</p>
<p align="right">The Mudlet Team <img src=":/icons/mudlet_main_16px.png"/></p></body></html>

Технически это весь форматированный текст Qt, который является лишь подмножеством HTML (так зачем принудительно включать строгий HTML 4.0 DTD?)

Даже показывая здесь < и > вместо &lt; и &gt; в необработанном файле, который увидят переводчики, я думаю, ясно, что будет с ним будет проще работать при отсутствии виджета отображения HTML/Qt Rich Text...

Я думаю, что где-то читал, что языки CJK действительно не должны использовать эффекты шрифта Bold или Italics (вместо этого я думаю, что они используют эквивалент точечного акцента на одном краю глифа) - так что в этих случаях разметка может быть задействована в процесс перевода...

Запуск сценариев оболочки не переносим (для Windows), поэтому я бы не стал этого делать. Текущий файл mudlet_en.ts работает нормально?

Сегодня пятница, так что давайте придем к выводу об этом в ближайшие пару дней, чтобы мы могли приступить к следующим шагам, которые, я думаю, будут такими:

1) процесс, позволяющий переводчикам сообщать о запутанных строках - если переводчик не может понять это, скорее всего, наши пользователи тоже не понимают
2) фактический процесс перевода и как он будет работать с нашим рабочим процессом

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

Насколько я вижу сейчас, у нас есть несколько различных основных источников текста:

  • Сам мудлет-клиент
  • Мадлет-сайт
  • Мадлет вики
  • "другие" спонтанные тексты нужно включать вручную

Тогда процессы для каждого почти одинаковы, но их необходимо рассматривать отдельно:

  • Узнайте, как отличить устаревшие тексты от релевантных текущих текстов, которые нуждаются в переводе.
  • Получить тексты из источников (см. выше). Можно ли это автоматизировать с помощью какого-либо инструмента? Кто должен нести ответственность?
  • Получите тексты в инструменте перевода.
  • Перевод внутри инструмента (хорошо, этого следовало ожидать, но также нужен хороший интерфейс и рабочие процессы)
  • Переводчики сообщают команде Mudlet о запутанных строках с информацией о том, как их нужно исправить.
  • Команда Mudlet обновляет текст в исходном коде. Либо из-за отчетов, либо из-за естественной эволюции.
  • Обновленные тексты из источника нуждаются в обновлении в инструменте перевода. Экспорт и импорт снова, плюс диф.
  • Переведенные тексты будут готовы. Экспортируйте их из инструмента перевода. Опять автоматизация?
  • Импорт переведенного текста в источник.
  • Отображение переводов в источнике. Здесь нам понадобится какой-то переключатель языка в каждом источнике.

Я заметил некоторые плагины для Wordpress и Mediawiki, а также интеграцию в Crowdin и Transifex, но не было много времени, чтобы исследовать все это более подробно.

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

Что касается исходного кода/диалога (формы):

  • Узнайте, как отличить устаревшие тексты от релевантных текущих текстов, которые нуждаются в переводе.
  • Получить тексты из источников (см. выше). Можно ли это автоматизировать с помощью какого-либо инструмента? Кто должен нести ответственность?

    • Оба выполняются с помощью команды lupdate которая извлекает исходные тексты, угадайте что, из исходного кода и добавляет/обновляет их записи в - что, как я думаю, должно быть нейтральным к языку файлу mudlet.ts (файл текущий mudlet_en.ts сигнализирует некоторым сторонам, что он специально содержит переводы на английский язык, тогда как - с тем, как мы будем использовать его в качестве исходного кода ==> средство передачи даты Crowdin, он будет использоваться для всех, кроме английского (американского) ) случай. Если не вызываться с опцией --no-obsolete то существующие, но теперь исчезнувшие строки не будут удалены - это то, что нам нужно, по крайней мере, на этапах разработки. По этой причине я предлагаю сгенерировать отдельную строку для локаль en-US, потому что она будет очень короткой и содержит только строки для множественного числа, т. е. места, где у нас будут исходные строки, такие как «удаление %n комнат (комнат)», так что в этом случае либо «удаление 1 комнаты», либо «удаление 2 комнат».

  • Получите тексты в инструменте перевода.

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

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

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

  • Команда Mudlet обновляет текст в исходном коде. Либо из-за отчетов, либо из-за естественной эволюции.

    • Включая места, где исходный текст сбивает с толку или содержит ошибки в ожидаемой форме en_US — например, я мог использовать лицензию ( существительное en-GB, cf license как глагол en-GB), но это всегда лицензия в en-US для обеих форм.

  • Обновленные тексты из источника нуждаются в обновлении в инструменте перевода. Экспорт и импорт снова, плюс диф.

    • перезапустите lupdate - но это должно произойти естественным образом с помощью сценариев CI в обновлениях ветки "разработка"

  • Переведенные тексты будут готовы. Экспортируйте их из инструмента перевода. Опять автоматизация?

    • Один из нас может «загрузить переводы» в виде полного набора файлов mudlet_xx_YY.ts вручную из Crowdin и git закоммитить их в каталог /translations — помните, что эти файлы не обновляются lupdate за исключением, возможно, только множественного числа mudlet_en_US.ts one — вместо этого они генерируются в Crowdin из файла mudlet.ts .

  • Импорт переведенного текста в источник.

    • Не совсем то, что требуется, тексты перевода не читаются приложением из файлов .ts . Вместо этого, как только я переделаю код и опубликую его, мудлет-приложение будет считывать переводы во время выполнения, загружая выбранный двоичный файл mudlet_xx_YY.qm (вместе с соответствующим файлом Qt — который, как я заметил, мы уже распространение с версиями установщика!) Итак, сначала я представляю, что один из нас запустит lrelease чтобы преобразовать файлы .ts в соответствующие файлы .qm и зафиксировать их в репозитории git как Что ж. В конце концов, Вадим предложил, что мы будем выпускать релизные версии с набором из .qm файлов, включенных в качестве файла ресурсов. Это подходит для версий установщика, но упаковщики Linux вместо этого рассчитывают хранить их, скажем, в /usr/share/mudlet/translations только для чтения (вместе с внешними файлами lua Mudlet). У меня есть код-прототип, который позволяет обрабатывать обе эти схемы, но, позволяя пользователю загружать файлы перевода из другого места (возможно, из каталога /translations в исходном коде), это позволит разрабатывать переводы автономно. для других миноритарных языков заинтересованными сторонами с помощью оригинального инструмента Qt Linguist — это также позволит разработчикам работать над частными/тестовыми примерами.

  • Отображение переводов в источнике. Здесь нам понадобится какой-то переключатель языка в каждом источнике.

    • Из экспериментов использование QLangaugeEvent более сложно, чем нам нужно, поскольку оно срабатывает каждый раз, когда вызывается QQTranslator::load(...) Я обнаружил, что проще иметь класс emit mudlet emit a (void) signal_translatorChangeCompleted(const QString&, const QString&) где аргументы текущего и предыдущего кодов xx_YY (language_COUNTRY/REGION) практически не используются, за исключением IIRC Host который генерирует событие lua для скрипта. /package обработчики событий, с которыми нужно работать. Этот сигнал отправляется каждому классу с постоянными текстами GUI в slot_guiLanguageChange() где он вызывает требуемый retranslateUi(this) который определен в каждом классе, который также использует setupUi(this) при условии, что вы настроили вариант в Qt IDE правильно (я не знаю, как это работает при прямом использовании qmake ):

      qt_options

      этот вызов изменит переводы для каждой переводимой строки в формах/диалогах, а затем мы должны перегенерировать все тексты графического интерфейса, которые мы создаем во время выполнения, принимая во внимание, какие когда-либо условия могли привести к тому, что разные тексты были объединены. Это не так плохо, как кажется, потому что нам нужно изменить только постоянную, т.е. существующую в течение длительного времени, строку, потому что временные тексты будут автоматически использовать новый перевод всякий раз, когда для их создания используется tr(...) .

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

Спасибо за эти подробности SlySven! Мне кажется, может быть, вы делали это раньше? Для другого приложения? С Корудином? Это сделало бы перевод самого приложения Mudlet намного проще.

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

Я не рассмотрел ответ выше полностью, но у Crowdin есть интеграция с Github, которую он не учитывает - https://github.com/Mudlet/Mudlet/pull/1692 - это автоматически сгенерированный PR, нам не нужно будет делать любая ручная загрузка или скачивание; просто объединить PR. Таким образом, процесс будет немного проще, чем описано!

Ребят, пробная версия crowdin истечет через 4 дня, так что мне нужно "да" или "нет" - мы, кажется, довольны этим до сих пор.

От меня был ура!

Привет! ;)

Я пробовал https://crowdin.com/ … для перевода это нормально, я не знаю, подходит ли для быстрой обратной связи, запросов и так далее… например, «контестуализация» для перевода или примера...

Как насчет раздела комментариев в crowdin?

Привет @Joker-ITA,

На самом деле есть несколько способов добавить дополнительный контекст для переводчиков:

1) В редакторе нажмите «Редактировать контекст» под строкой, чтобы предоставить больше информации переводчикам;
2) Вы можете оставить комментарий к любой строке в редакторе (в правой панели введите свой комментарий);
3) Добавить контекст для любой строки через настройки проекта -> вкладка «Строки»;
4) Бьюсь об заклад, у вас есть некоторые специфические термины, которые обычные переводчики могут не понять, поэтому имеет смысл создать глоссарий и загрузить его на Crowdin. Подробнее . Это может быть даже электронная таблица Excel с 2 столбцами: термин и описание;
5) Если у вас есть комментарии внутри файлов (например, Android XML, строки iOS, .properties, .yml, Google Chrome JSON), они будут автоматически импортированы вместе с файлом;
6) Вы можете загрузить скриншот на Crowdin и пометить на нем любую строку: https://support.crowdin.com/adding-screenshots/
7) Если говорить о webapp l10n, имеет смысл попробовать нашу функцию In-Context, чтобы переводчики могли переводить прямо на вашем сайте.

Это только основные способы контекстуализации текстов для перевода 😄

@Kebap написал:

Спасибо за эти подробности SlySven! Мне кажется, может быть, вы делали это раньше? Для другого приложения? С Корудином? Это сделало бы перевод самого приложения Mudlet намного проще.

Только вручную, используя собственные инструменты Qt (за последние пару лет я провел пару недель на юге Франции, разрабатывая детали). Мы по-прежнему будем использовать два из них — lupdate и lrelease — но мы заменим Qt Linguist (являющийся инструментом, который добавляет переводы к исходным текстам, присутствующим в ряде .ts файлы, сгенерированные lupdate для каждого перевода, прежде чем lrelease превратит их в нужные файлы mudlet_xx_YY.qm конкретного языка/местоположения — опять по одному на каждый язык/местоположение перевода предлагается) с Crowdin, который возьмет один файл mudlet.ts и вместо этого сгенерирует файлы mudlet_xx_YY.ts .

Одно важное различие между использованием linguist и тем, что мы будем делать с помощью Crowid, заключается в том, что мы можем обойтись без:

TRANSLATIONS =

строка в файле проекта для Crowid.

На самом деле, я думаю, нам понадобятся два файла — mudlet.ts для всех локалей, которые будут проходить через процесс Crowdin, и mudlet_en_US.ts которые будут извлечены с опцией -pluralonly и будут содержать только несколько переводов для преобразования сообщений типа tr("deleted %n room(s)", "", roomCount) в "deleted 1 room" или "deleted 2 rooms" зависимости от значения roomCount и, вероятно, могут быть выполнены вашим покорным слугой...

Отлично - мы идем с Crowdin :)

Я изменю имя файла, как предлагает

Отвечая на вопросы @Kebap , принимая во внимание ответ @SlySven :

  • Узнайте, как отличить устаревшие тексты от релевантных текущих текстов, которые нуждаются в переводе.

    • Инструмент lupdate делает это

  • Получить тексты из источников (см. выше). Можно ли это автоматизировать с помощью какого-либо инструмента? Кто должен нести ответственность?
  • Получите тексты в инструменте перевода.

    • мы вручную запускаем lupdate и фиксируем их в development — эта часть может ежедневно автоматизироваться Трэвисом

    • crowdin автоматически подбирает их благодаря интеграции с github

  • Перевод внутри инструмента (хорошо, этого следовало ожидать, но также нужен хороший интерфейс и рабочие процессы)

    • интерфейс перевода Crowdin

  • Переводчики сообщают команде Mudlet о запутанных строках с информацией о том, как их нужно исправить.

    • написать вопрос в crowdin

  • Команда Mudlet обновляет текст в исходном коде. Либо из-за отчетов, либо из-за естественной эволюции.
  • Обновленные тексты из источника нуждаются в обновлении в инструменте перевода. Экспорт и импорт снова, плюс диф.

    • Краудин подбирает это

  • Переведенные тексты будут готовы. Экспортируйте их из инструмента перевода. Опять автоматизация?
  • Импорт переведенного текста в источник.
  • Отображение переводов в источнике. Здесь нам понадобится какой-то переключатель языка в каждом источнике.

    • @SlySven сотворит здесь магию :)

Зачем нужен отдельный файл переводов только для множественного числа?

Инструкции по переводу доступны по адресу https://wiki.mudlet.org/w/Translating_Mudlet.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги