Нам нужно сделать так, чтобы людям было очень легко вносить свой вклад в перевод Mudlet — это означает что-то веб-ориентированное, где единственным препятствием является просто вход в систему. Возможно, существует существующий веб-сервис, который мог бы предложить нам лицензию с открытым исходным кодом для установки. .
Доступные альтернативы:
Launchpad - однако его будущее под вопросом
Transifex - демонстрационный проект здесь: https://www.transifex.com/mudlet/mudlet/dashboard/
Есть 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 более
Я так понял - у краудина тоже есть такая возможность. Просто выберите «скрыть» в настройках тегов редактора :
Это означает, что нам больше не нужно изменять код, который делал
Я доволен предложением @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?)
Даже показывая здесь <
и >
вместо <
и >
в необработанном файле, который увидят переводчики, я думаю, ясно, что будет с ним будет проще работать при отсутствии виджета отображения HTML/Qt Rich Text...
Я думаю, что где-то читал, что языки CJK действительно не должны использовать эффекты шрифта Bold или Italics (вместо этого я думаю, что они используют эквивалент точечного акцента на одном краю глифа) - так что в этих случаях разметка может быть задействована в процесс перевода...
Запуск сценариев оболочки не переносим (для Windows), поэтому я бы не стал этого делать. Текущий файл mudlet_en.ts
работает нормально?
Сегодня пятница, так что давайте придем к выводу об этом в ближайшие пару дней, чтобы мы могли приступить к следующим шагам, которые, я думаю, будут такими:
1) процесс, позволяющий переводчикам сообщать о запутанных строках - если переводчик не может понять это, скорее всего, наши пользователи тоже не понимают
2) фактический процесс перевода и как он будет работать с нашим рабочим процессом
Я бы рекомендовал сначала больше подумать о деталях нужных нам процессов, а уже потом решать, какой инструмент им подходит лучше всего.
Насколько я вижу сейчас, у нас есть несколько различных основных источников текста:
Тогда процессы для каждого почти одинаковы, но их необходимо рассматривать отдельно:
Я заметил некоторые плагины для Wordpress и Mediawiki, а также интеграцию в Crowdin и Transifex, но не было много времени, чтобы исследовать все это более подробно.
Я хотел бы максимально автоматизированный процесс для всех вышеперечисленных шагов и выбрать тот инструмент, который лучше всего поддерживает.
Что касается исходного кода/диалога (формы):
lupdate
которая извлекает исходные тексты, угадайте что, из исходного кода и добавляет/обновляет их записи в - что, как я думаю, должно быть нейтральным к языку файлу mudlet.ts
(файл текущий mudlet_en.ts
сигнализирует некоторым сторонам, что он специально содержит переводы на английский язык, тогда как - с тем, как мы будем использовать его в качестве исходного кода ==> средство передачи даты Crowdin, он будет использоваться для всех, кроме английского (американского) ) случай. Если не вызываться с опцией --no-obsolete
то существующие, но теперь исчезнувшие строки не будут удалены - это то, что нам нужно, по крайней мере, на этапах разработки. По этой причине я предлагаю сгенерировать отдельную строку для локаль en-US, потому что она будет очень короткой и содержит только строки для множественного числа, т. е. места, где у нас будут исходные строки, такие как «удаление %n комнат (комнат)», так что в этом случае либо «удаление 1 комнаты», либо «удаление 2 комнат»..ts
будет загружен из (я предлагаю) сборки linux CI (потому что для нас проще всего написать сценарий)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
):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
— эта часть может ежедневно автоматизироваться ТрэвисомЗачем нужен отдельный файл переводов только для множественного числа?
Инструкции по переводу доступны по адресу https://wiki.mudlet.org/w/Translating_Mudlet.
Самый полезный комментарий
Ребят, пробная версия crowdin истечет через 4 дня, так что мне нужно "да" или "нет" - мы, кажется, довольны этим до сих пор.