Изменение языка вывода 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, но в рамках моих текущих ограничений я не вижу прямого способа сделать это.