Процесс для локализации приложения Delphi 2009 года волонтерскими переводчиками?

Я наконец сделал это так:

var slash = require('slash');
var dirname = __dirname;
if (process.platform === 'win32') dirname = slash(dirname);

global.__base = dirname + '/';

А потом потребовать var Article = require(__base + 'app/models/article');. При этом используется косая черта пакета npm (которая заменяет обратную косую черту на косую черту в путях и обрабатывает еще несколько случаев)

7
задан Argalatyr 13 August 2009 в 23:40
поделиться

5 ответов

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

  • Интеграция в программу (даже намного позже, чем ее разработка) проста.
  • ] Извлечение переводимых строк может выполняться программами командной строки и поэтому легко вводится в автоматизированную сборку.
  • Новый перевод можно добавить, просто создав новый каталог с правильной структурой, скопировав в него пустой файл перевода, и приступаем к переводу строк. Это то, что каждый пользователь может сделать сам, нет необходимости привлекать оригинального автора для создания нового перевода. Этот процесс также приносит мгновенное удовлетворение - после перезапуска программы сразу же отображаются новые переводы.
  • Изменить существующий перевод даже проще, чем создать новый. Таким образом, если пользователь обнаруживает орфографические или другие ошибки или потребности в улучшении перевода, он может легко исправить их и отправить изменения автору.
  • Новые версии программы работают со старыми переводами, система очень плавно деградирует - новые и непереведенные строки просто отображаются без изменений.
  • Переводы можно выполнять только с помощью блокнота, но есть также несколько бесплатных инструментов для создания файлов перевода и управления ими; см. ссылки на странице dxgettext. Они сами локализованы и также имеют некоторые преимущества перед электронными таблицами:
  • Изменить существующий перевод даже проще, чем создать новый. Таким образом, если пользователь обнаруживает орфографические или другие ошибки или потребности в улучшении перевода, он может легко исправить их и отправить изменения автору.
  • Новые версии программы работают со старыми переводами, система очень плавно деградирует - новые и непереведенные строки просто отображаются без изменений.
  • Переводы можно выполнять только с помощью блокнота, но есть также несколько бесплатных инструментов для создания файлов перевода и управления ими; см. ссылки на странице dxgettext. Они сами локализованы и также имеют некоторые преимущества перед электронными таблицами:
  • Изменить существующий перевод даже проще, чем создать новый. Таким образом, если пользователь обнаруживает орфографические или другие ошибки или потребности в улучшении перевода, он может легко исправить их и отправить изменения автору.
  • Новые версии программы работают со старыми переводами, система очень плавно деградирует - новые и непереведенные строки просто отображаются без изменений.
  • Переводы можно выполнять только с помощью блокнота, но есть также несколько бесплатных инструментов для создания файлов перевода и управления ими; см. ссылки на странице dxgettext. Они сами локализованы и также имеют некоторые преимущества перед электронными таблицами:
  • Новые версии программы работают со старыми переводами, система очень изящно деградирует - новые и непереведенные строки просто отображаются без изменений.
  • Переводы можно выполнять только с помощью блокнота, но есть несколько бесплатных инструментов для создания файлов переводов и управления ими ; см. ссылки на странице dxgettext. Они сами локализованы и также имеют некоторые преимущества перед электронными таблицами:
  • Новые версии программы работают со старыми переводами, система очень изящно деградирует - новые и непереведенные строки просто отображаются без изменений.
  • Переводы можно выполнять только с помощью блокнота, но есть несколько бесплатных инструментов для создания файлов переводов и управления ими ; см. ссылки на странице dxgettext. Они сами локализованы и также имеют некоторые преимущества перед электронными таблицами:
    • Расположение строк в исходном коде может быть показано (имеет смысл, конечно, только для приложений с открытым исходным кодом).
    • Отображается процент переведенных строк.
    • Также выделяются изменения в уже переведенных строках. .
  • Вся система является зрелой и ориентированной на будущее - я использовал dxgettext для программ на Delphi 4, и даже для Delphi 2009 не должно быть никаких изменений - файлы перевода всегда были в кодировке UTF-8.

Использование электронная таблица для перевода не кажется мне подходящим решением, если у вас есть несколько языков. Предположим, новая версия программы добавляет 2 новые строки и незначительно изменяет 10 строк - не будет • Вам нужно добавить новые строки и выделить измененные строки во всех нескольких десятках файлов электронных таблиц и снова отправить их своим переводчикам? Используя dxgettext, вы просто отправляете им всем измененный po-файл.

Edit:

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

Наши внутренние библиотеки используют "_ (...)" вокруг всех переводимых строк. Существуют определения ENGLISH и USEGETTEXT , которые устанавливаются для каждого проекта. Если определены АНГЛИЙСКИЙ или USEGETTEXT , то английские тексты компилируются в блоки DCU, иначе немецкий текст компилируется в DCU. Если USEGETTEXT не определен, «_ ()» компилируется как функция, которая возвращает свой параметр как есть, иначе используется поиск преобразования dxgettext.

6
ответ дан 6 December 2019 в 14:09
поделиться

У меня ... Могут возникнуть некоторые проблемы.

  • строка сама по себе не имеет большого значения, ей нужен контекст.
  • следствие, та же строка может нуждаться в более одного перевода.
  • экранное пространство: остерегайтесь разной длины в зависимости от языка, например, французский язык более многословен, чем английский.
  • , если вы не владеете данным языком, вы не сможете оценить расхождения.
4
ответ дан 6 December 2019 в 14:09
поделиться

Для полноты, вот еще один инструмент локализации Delphi под названием Delphi Localizer , который я недавно обнаружил, он выглядит хорошо спроектированным и отполированным. Инструмент является бесплатным для коммерческого использования, за исключением правительственных проектов (не совсем уверен, почему это исключение).

FWIW Раньше я использовал TsiLang Translation Suite, а в настоящее время работаю над другим проектом, используя инструменты локализации, поставляемые с DevExpress VCL. . Последний прекрасно интегрируется со своими компонентами, а также со сторонними компонентами.

1
ответ дан 6 December 2019 в 14:09
поделиться

Я использовал TsiLang Translation Suite , чтобы конечные пользователи могли переводить. Я изменил код, чтобы разрешить шифрование, чтобы, если кто-то действительно хорошо поработал, он мог защитить свое имя от файла перевода, но в целом идея заключается в том, что люди могут делиться своими переводами и добавлять / редактировать любую небольшую часть, которую они хотят. Учитывая, что все это происходит в приложении и мгновенно видно, все работает отлично.

2
ответ дан 6 December 2019 в 14:09
поделиться

Как вы упомянули, D2009 поставляется с инструментами локализации. Почему бы просто не использовать их? AFAIK вы можете распространять внешний менеджер переводов (etm.exe). Вам что-нибудь еще нужно?

Кроме того, локализация - это больше, чем просто перевод текста. ETM также поддерживает перевод ресурсов .dfm.

2
ответ дан 6 December 2019 в 14:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: