理论部分

理论部分

我想为某些应用程序使用特定区域设置,但不为系统的其余部分使用特定区域设置。我该怎么做?

答案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
  • 从图形环境启动应用程序和从终端启动应用程序时均可工作。

相关内容