如何在 debian 上更改命令行软件的语言

Amo*_*o__ 2 debian language locale command-line debian-squeeze

我在服务器(Debian GNU/Linux 6.0.6(squeeze))上使用 \xe2\x80\x98exif\xe2\x80\x99 ,与我的开发计算机(Mac OS X 通过 MacPort)不同,它以法语运行:

\n\n
exif -h\nUtilisation: exif [OPTION...] fichier\n  -v, --version                      Display software version\n  -i, --ids                          Montre les ID plut\xc3\xb4t que les noms des marqueurs\n  -t, --tag=marqueur                 S\xc3\xa9lection du marqueur\n      --ifd=IFD                      S\xc3\xa9lection de l'IFD\n  -l, --list-tags                    Liste tous les marqueurs EXIF\n  -|, --show-mnote                   Show contents of tag MakerNote\n      --remove                       Supprime le marqueur ou l'ifd\n  -s, --show-description             Montre la description du marqueur\n  -e, --extract-thumbnail            Extrait la vignette\n  -r, --remove-thumbnail             Supprime la vignette\n  -n, --insert-thumbnail=FICHIER     Ins\xc3\xa8re le FICHIER comme vignette\n      --no-fixup                     Do not fix existing tags in files\n  -o, --output=FICHIER               Write data to FILE\n      --set-value=STRING             Value of tag\n  -c, --create-exif                  Create EXIF data if not existing\n  -m, --machine-readable             Output in a machine-readable (tab delimited) format\n  -w, --width=WIDTH                  Width of output\n  -x, --xml-output                   Output in a XML format\n  -d, --debug                        Show debugging messages\n
Run Code Online (Sandbox Code Playgroud)\n\n

我检查了我的 /etc/default/locale ,结果是

\n\n
LANG=fr_FR\nLANGUAGE=fr_FR:fr\n
Run Code Online (Sandbox Code Playgroud)\n\n

我改变了

\n\n
LANG=en_EN\nLANGUAGE=en_EN:en\n
Run Code Online (Sandbox Code Playgroud)\n\n

没有任何后果。\n关于如何强制这台机器以英语执行此软件有任何提示吗?\n因为我需要英语的 exif 数据标签:)

\n\n

谢谢 !

\n

kos*_*tix 5

/etc/default/locale文件设置呃...“全局”默认值。这意味着,任何“顶级”shell 在启动时都会读取这些默认值,然后由其运行的进程继承

长话短说,这意味着此类默认值适用于:

  • 所有守护进程(在后台运行的程序)使用位于/etc/init.d.
  • 您在登录会话中运行的交互式 shell。

因此,仅更改该文件就需要重新启动。

但是,由于该文件的内容只是一个 shell 脚本,它设置了一堆所谓的“环境变量”,因此要影响一个特定的程序,您只需让该程序看到这些变量的不同内容即可。

实现此目的的最简单方法是将它们的赋值放在要运行的程序之前,也就是说,在 shell 提示符下,您可以执行以下操作:

$ LANG=en exif -h
Run Code Online (Sandbox Code Playgroud)

并查看exif用英语与你交谈($此处的字符表示 shell 提示符 - 不要键入它)。

第二种方式是让当前shell中的所有程序都看到变量的新内容;这是通过“导出”它们来完成的,如 @clarkw 所示:导出的变量及其内容由从 shell 运行的所有进程的环境继承,因此以下内容也有效:

$ export LANG=en
$ exif -h
Run Code Online (Sandbox Code Playgroud)

或者

$ LANG=en
$ export LANG
$ exif -h
Run Code Online (Sandbox Code Playgroud)

这些环境变量在locale(1)手册页中进行了描述。

/etc/default/locale最后一个提示:不要手动更改内容- 使用 Debian 方式来管理它:运行

# dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)

它会首先询问您要编译和安装哪些语言环境(您可以跳过此步骤),然后选择哪个语言环境作为默认值。

更新:这是Debian wiki 上专门针对语言环境的页面,它几乎解释了所需的一切,包括环境变量。