更改特定应用程序的时间格式

我想为某些应用程序使用特定的语言环境,但不是为我的系统的其余部分使用。 我该怎么做呢?

理论部分

在创建特定进程之前,可以通过更改其环境来更改区域设置或仅部分区域设置。

通过启动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文件的可能更改。
  • 从图形环境启动应用程序和从终端启动应用程序时都可以使用。