更改特定应用程序的时间格式
我想为某些应用程序使用特定的语言环境,但不是为我的系统的其余部分使用。 我该怎么做呢?
理论部分
在创建特定进程之前,可以通过更改其环境来更改区域设置或仅部分区域设置。
通过启动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
如果它不起作用,因为你使用的是不带有GEdit的Ubuntu,只需使用nano
:
nano ~/.local/share/applications/firefox.desktop
找到以Exec=
开头的行。 对于Firefox,它的Exec=firefox %u
。 然后在Exec=
之后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通常会自动更新桌面文件,但在慢速系统上,可能需要一段时间。 或者至少它在某个版本中做过。 如果它不能立即生效,请退出并重新登录。
我更喜欢使用包装器shell脚本来完成它。 首先使用您选择的文本编辑器创建脚本。 示例脚本:
$ cat ~/bin/firefox #!/bin/sh export LC_TIME=en_DK.UTF-8 exec /usr/bin/firefox $@
然后使其可执行:
chmod +x ~/bin/firefox
这种方法的优点:
- 没有
.desktop
文件的本地副本,它会在更新程序包时覆盖对原始.desktop
文件的可能更改。 - 从图形环境启动应用程序和从终端启动应用程序时都可以使用。