我想为某些应用程序使用特定区域设置,但不为系统的其余部分使用特定区域设置。我该怎么做?
答案1
理论部分
您可以在创建特定流程之前,通过更改其环境来更改其区域设置或仅其部分内容。
gnome-calculator
通过以下方式查看
env LC_NUMERIC=de_DE.UTF-8 gnome-calculator
如果你目前使用句点作为小数点,并且通过
env LC_NUMERIC=en_IE.UTF-8 gnome-calculator
如果您当前使用逗号作为小数点。
该gnome-calculator
过程将使用其调用之前指定的语言环境。
请注意,如果您关闭应用程序并通过 Dash 打开它或只是gnome-calculator
在终端中调用它,则这种情况不会持续存在。事实上,它是特定于进程的,您可以使用多个实例gnome-calculator
,其中一些使用句点,一些使用逗号作为小数点。通过gnome-calculator
在另一个终端中运行来检查它。它将使用您的正常设置。
寻找合适的语言环境
您不需要找到一个可以满足您所有需求的单一语言环境。相反,只需找到一个符合您特定本地化类别需求的语言环境即可。在这里,我们只关心时间格式,它可以通过操作环境变量来更改LC_TIME
。
你可能对国际时间格式感兴趣(ISO 8601) 或您知道其时间格式的某个国家/地区的时间格式。对于前者,使用en_DK.UTF-8
。对于后者,使用语言的 2 个字母缩写(小写字母)、下划线、国家/地区的 2 个字母缩写(大写字母),然后.UTF-8
。例如,en_IE.UTF-8
是爱尔兰英语,de_DE.UTF-8
是德语,de_CH.UTF-8
是瑞士德语,fr_CH.UTF-8
是瑞士法语。
实践部分
现在您已经了解了 Linux 有多么酷,让我们进入实际部分。
您可能通过 Dash 启动应用程序。如果这样做,则使用桌面文件。找到您的桌面文件。它位于 或/usr/share/applications
中~/.local/share/applications
。前者是系统范围的,后者是用户特定的。
我将使用 Firefox 作为示例应用程序。它的桌面文件是/usr/share/applications/firefox.desktop
。
找到要操作的桌面文件后,将其复制到用户的桌面文件夹:
cp /usr/share/applications/firefox.desktop ~/.local/share/applications
您现在可以操作副本,以使您的更改仅影响用户本地版本。
在文本编辑器中打开它。使用命令行或图形编辑器都没关系。普通的 Ubuntu 自带 GEdit 作为其默认的图形文本编辑器:
gedit ~/.local/share/applications/firefox.desktop
如果由于您使用的 Ubuntu 版本未附带 GEdit 而导致此方法不起作用,则只需使用nano
:
nano ~/.local/share/applications/firefox.desktop
找到以 开头的行Exec=
。对于 Firefox,它是Exec=firefox %u
。然后获取后面的内容Exec=
并将其转换为以下格式,并使用您想要的语言环境代替en_DK.UTF-8
:
Exec=env LC_TIME=en_DK.UTF-8 firefox %u
当然,您需要en_DK.UTF-8
用您想要使用的任何语言环境来替换。
保存文件。
完成更改后,您需要使桌面文件可执行。您复制的文件是可执行的,但该属性未被复制,因此您需要为新文件再次设置它。为此,请运行以下命令:
chmod +x ~/.local/share/applications/firefox.desktop
现在,重新启动您的应用程序。
Dash 通常会自动更新桌面文件,但在较慢的系统上,可能需要一段时间。或者至少在某些版本中是这样的。如果它不能立即生效,请注销并重新登录。
答案2
我更喜欢使用包装器 shell 脚本来执行此操作。首先使用您选择的文本编辑器创建脚本。示例脚本:
$ cat ~/bin/firefox
#!/bin/sh
export LC_TIME=en_DK.UTF-8
exec /usr/bin/firefox $@
然后使其可执行:
chmod +x ~/bin/firefox
此方法的优点:
- 没有文件的本地副本,当包更新时,
.desktop
它将覆盖原始文件的可能更改。.desktop
- 从图形环境启动应用程序和从终端启动应用程序时均可工作。