更改gpg2.exe的输出语言

时间:2016-11-02 12:33:33

标签: config gnupg

我正在自动化一个进程,我使用GPG2.exe。 因为我需要解析控制台输出 - 可能来自不同的系统,我需要将语言设置为受控值。

我正在遵循the manual中的说明

  

LANGUAGE
  除了GNU的使用之外,它在W32版本中用于覆盖   通过注册表完成语言选择。如果使用并设置为有效和   可用的语言名称(langid),从中加载带有翻译的文件   gpgdir / gnupg.nls / langid.mo。这里gpgdir是其中的目录   gpg二进制文件已加载。如果无法加载,则尝试使用注册表   最后使用本机Windows语言环境系统。

我发现thread from 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

我将输出ecpext为英语,但它仍然是德语。

enter image description here

手册陈述了某处有一个“gnupg.nls”文件夹。 我无法找到这个文件夹,这让我想知道德语的加载位置。 手册页中是否有错误? 手册页的pdf版本显示的内容与安装附带的手册页相同。

有人可以对此有所了解吗?

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,即输出是瑞典语,但我想要的是英语。 Windows 显示语言设置为英语,我也尝试设置环境变量,但为我解决的是删除此处找到的 gnupg 文件的瑞典语翻译:

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

删除“sv”目录后,所有输出都是英文的。

答案 1 :(得分:0)

语言目录可以从注册表中提取,或者我认为它也可以有一个固定的路径,因为我在注册表中找不到这些信息。

在我的testsysten上,路径是'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​​时仍然是正确的,但在我目前的限制范围内,我没有看到这样做的直接方式。

答案 2 :(得分:-2)

这不是一个编程问题,正如关闭的投票中所述。

回答可以从编程角度提出的另一个问题:当a well-defined library API具有相同的功能时,不要解析固有可更改的控制台输出。