Изменение языка вывода gpg2.exe

Я автоматизирую процесс и использую для этого GPG2.exe. Потому что мне нужно проанализировать вывод консоли - потенциально из разных систем мне нужно установить язык на контролируемое значение.

Я следую инструкциям из руководства, в котором говорится, что

ЯЗЫК
Помимо его использования GNU, он используется в версии W32 для отмены выбора языка, сделанного через Реестр. Если используется и установлено допустимое и доступное имя языка (langid), файл с переводом загружается из gpgdir/gnupg.nls/langid.mo. Здесь gpgdir - каталог, из которого был загружен двоичный файл gpg. Если это не может быть загружено, Реестр пытается и в качестве крайней меры используется родная система локали Windows.

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

Я создал командный файл для ручного тестирования.

@echo off
REM C is meant to display untranslated messages according to one internet source
set LANGUAGE="C"
call "C:\Program Files (x86)\GNU\GnuPG\gpg2.exe" --version
pause

Я надеюсь, что вывод будет английским, но он все еще немецкий.

введите описание изображения здесь

В руководстве говорится что-то о том, что где-то есть папка "gnupg.nls". Я не смог найти эту папку, что заставляет меня задуматься, откуда загружается немецкий. Есть ли ошибка в справочной странице? Версия справочной страницы в формате pdf показывает то же содержимое, что и справочная страница, поставляемая с установкой.

Может кто-то пролить свет на это?

3 ответа

Решение

Это не вопрос программирования, как отмечалось в голосовании, чтобы закрыть.

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

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

       C:\Program Files (x86)\gnupg\share\locale

После удаления каталога «sv» весь вывод был на английском языке.

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

На моем тестовом компьютере путь "C:\Program Files (x86)\GNU\GnuPG\share\locale". Этот путь содержит папки для каждого языка - насколько я могу судить, не все из них содержат файлы перевода для gpg2.

Переменная среды для языка - не LANGUAGE, а LANG. Установка его в C приводит к gpg2 по умолчанию на английском языке.

Я успешно проверил следующий звонок.

@echo off
set LANG=C
call "C:\Program Files (x86)\GNU\GnuPG\gpg2.exe" --version

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

Другие вопросы по тегам