Я наконец сделал это так:
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 (которая заменяет обратную косую черту на косую черту в путях и обрабатывает еще несколько случаев)
Я никогда не был другом проприетарных инструментов локализации для бесплатных или открытых приложений. Используя dxgettext , порт GNU gettext на Delphi кажется мне гораздо лучшим вариантом:
Использование электронная таблица для перевода не кажется мне подходящим решением, если у вас есть несколько языков. Предположим, новая версия программы добавляет 2 новые строки и незначительно изменяет 10 строк - не будет • Вам нужно добавить новые строки и выделить измененные строки во всех нескольких десятках файлов электронных таблиц и снова отправить их своим переводчикам? Используя dxgettext, вы просто отправляете им всем измененный po-файл.
Edit:
Есть интересный комментарий о проблемах, которые могут возникнуть с dxgettext и библиотеками. Я никогда этого не испытывал, так как вообще перестал использовать строки ресурсов. Большая часть наших программ написана на немецком языке, и лишь некоторые из них на английском или переведены на несколько языков.
Наши внутренние библиотеки используют "_ (...)" вокруг всех переводимых строк. Существуют определения ENGLISH
и USEGETTEXT
, которые устанавливаются для каждого проекта. Если определены АНГЛИЙСКИЙ
или USEGETTEXT
, то английские тексты компилируются в блоки DCU, иначе немецкий текст компилируется в DCU. Если USEGETTEXT
не определен, «_ ()» компилируется как функция, которая возвращает свой параметр как есть, иначе используется поиск преобразования dxgettext.
У меня ... Могут возникнуть некоторые проблемы.
Для полноты, вот еще один инструмент локализации Delphi под названием Delphi Localizer , который я недавно обнаружил, он выглядит хорошо спроектированным и отполированным. Инструмент является бесплатным для коммерческого использования, за исключением правительственных проектов (не совсем уверен, почему это исключение).
FWIW Раньше я использовал TsiLang Translation Suite, а в настоящее время работаю над другим проектом, используя инструменты локализации, поставляемые с DevExpress VCL. . Последний прекрасно интегрируется со своими компонентами, а также со сторонними компонентами.
Я использовал TsiLang Translation Suite , чтобы конечные пользователи могли переводить. Я изменил код, чтобы разрешить шифрование, чтобы, если кто-то действительно хорошо поработал, он мог защитить свое имя от файла перевода, но в целом идея заключается в том, что люди могут делиться своими переводами и добавлять / редактировать любую небольшую часть, которую они хотят. Учитывая, что все это происходит в приложении и мгновенно видно, все работает отлично.
Как вы упомянули, D2009 поставляется с инструментами локализации. Почему бы просто не использовать их? AFAIK вы можете распространять внешний менеджер переводов (etm.exe). Вам что-нибудь еще нужно?
Кроме того, локализация - это больше, чем просто перевод текста. ETM также поддерживает перевод ресурсов .dfm.