获取不存在的国家/地区的新语言环境?如何获取?

获取不存在的国家/地区的新语言环境?如何获取?

我对语言环境有疑问。我住在爱沙尼亚。如果我选​​择像爱沙尼亚这样的国家。我会用爱沙尼亚语显示日历和其他本地内容,但我用英语显示。而且没有为爱沙尼亚设置不同语言的选项。可以解决这个问题吗?实际上,这个问题存在于任何发行版中。Ubuntu 团队假设您当前所在的国家/地区设置了您的语言,但这并不总是正确的。

答案1

有几种方法。最简单的方法是指定例外。让我用屏幕截图展示我的配置。您将打开的是“语言支持”应用程序。第一次运行时,它通常会要求您安装缺少的组件。让它这样做。

转到“安装删除语言”并获取您感兴趣的所有语言。对我来说,这些语言是英语、荷兰语、法语和德语:

已安装的语言

现在,在主窗口中,将要显示的语言拖到顶部。按优先顺序从上到下排列。我更喜欢按以下顺序排列:en_GB、en_US,最后是 en:

语言支持 - 语言顺序

最后,转到第二个选项卡“区域格式”。在那里,您可以选择要使用的日期/时间/货币格式。对我来说,这是 fr_LU:

语言支持 - 区域格式

基本上就是这样。在我的例子中,所有内容都以英文显示,但我的格式符合卢森堡标准。

如果您单击“应用系统范围”,它将成为系统范围的默认设置。我通常这样做,个人用户仍可以根据自己的喜好进行更改(如果他们有管理帐户,甚至可以为系统恢复它)。


替代方法:设置环境变量。基本上这就是上述应用程序为您做的事情。以下是我的:

$ env | grep -e LC_ -e LANG
LC_PAPER=fr_LU.UTF-8
LC_ADDRESS=fr_LU.UTF-8
LC_MONETARY=fr_LU.UTF-8
LC_NUMERIC=fr_LU.UTF-8
LC_TELEPHONE=fr_LU.UTF-8
LC_IDENTIFICATION=fr_LU.UTF-8
LANG=en_US.UTF-8
GDM_LANG=en_US
LC_MEASUREMENT=fr_LU.UTF-8
LANGUAGE=en_US
LC_TIME=fr_LU.UTF-8
LC_NAME=fr_LU.UTF-8

如果您想在系统范围内更改它们,那么您感兴趣的文件/etc/default/locale


最后,您可以创建一个新的语言环境。这是我以前常做的,但是环境变量系统对我来说已经足够好了。基本上,可以在中找到语言环境定义文件/usr/share/i18n/locales。它包含一堆名为 xx_XX 的文件。您选择符合所需格式的文件。对我来说那将是fr_LU。现在将其复制到您要创建的(不存在的)语言环境:cp fr_LU en_LU。此时编辑新文件并用单词 替换语言名称English。在我的情况下是FrenchEnglish最后,您需要将新的语言环境添加到/etc/locale.gen和 并运行sudo locale-gen,然后在 中使用它/etc/default/locale。不用说,这是一种相当复杂的方法,我是凭记忆写的。我几乎肯定忘记了什么。


对于区域设置生成(感谢 Gunnar 的明智补充),这应该是完整的过程。我包括了输出和命令。

jawtheshark@bruce:~$ sudo mkdir -p /usr/local/share/i18n/locales
jawtheshark@bruce:~$ sudo bash -c "sed s/French/English/ /usr/share/i18n/locales/fr_LU > /usr/local/share/i18n/locales/en_LU "
jawtheshark@bruce:~$ sudo bash -c "echo en_LU.UTF-8 UTF-8 >> /etc/locale.gen"
jawtheshark@bruce:~$ sudo locale-gen
Generating locales (this might take a while)...
  de_AT.UTF-8... done
  de_BE.UTF-8... done
  de_CH.UTF-8... done
  de_DE.UTF-8... done
  de_LI.UTF-8... done
  de_LU.UTF-8... done
  en_AG.UTF-8... done
  en_AU.UTF-8... done
  en_BW.UTF-8... done
  en_CA.UTF-8... done
  en_DK.UTF-8... done
  en_GB.UTF-8... done
  en_HK.UTF-8... done
  en_IE.UTF-8... done
  en_IN.UTF-8... done
  en_LU.UTF-8... done
  en_NG.UTF-8... done
  en_NZ.UTF-8... done
  en_PH.UTF-8... done
  en_SG.UTF-8... done
  en_US.UTF-8... done
  en_ZA.UTF-8... done
  en_ZM.UTF-8... done
  en_ZW.UTF-8... done
  fr_BE.UTF-8... done
  fr_CA.UTF-8... done
  fr_CH.UTF-8... done
  fr_FR.UTF-8... done
  fr_LU.UTF-8... done
  nl_AW.UTF-8... done
  nl_BE.UTF-8... done
  nl_NL.UTF-8... done
Generation complete.
jawtheshark@bruce:~$ sudo bash -c 'echo LANG="en_LU.UTF-8" > /etc/default/locale'

抱歉,又要进行一次编辑。上述创建的区域设置文件仍将以法语显示日期。由于区域设置文件定义了显示的内容,因此您现在可以编辑该文件(在我的示例中/usr/local/share/i18n/localesen_LU)。您将查找LC_TIMEEND LC_TIME。现在,将这两行中的所有内容替换为单词copy "en_GB"。重新生成您的区域设置(sudo locale-gen),新区域设置即可使用。可能还有其他语言残留,如果您对它们感到厌烦,您也必须适应它们。

然而 完成所有这些后,我们就可以更轻松地完成以下操作。编辑 /etc/defaults/locale 文件以反映您想要的内容。上面我粘贴了我的文件,里面全是fr_LU.UTF-8。这些变量中的每一个都代表了特定于语言环境的数据表示方式的一个方面。这意味着,要通过创建新语言环境来实现相同的目的,我们可以简单地这样做( 的内容/etc/default/locale

LANG=en_LU.UTF-8
LC_NUMERIC="fr_LU.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_MONETARY="fr_LU.UTF-8"
LC_PAPER="fr_LU.UTF-8"
LC_IDENTIFICATION="fr_LU.UTF-8"
LC_NAME="fr_LU.UTF-8"
LC_ADDRESS="fr_LU.UTF-8"
LC_TELEPHONE="fr_LU.UTF-8"
LC_MEASUREMENT="fr_LU.UTF-8"

这基本上告诉系统:将任何内容格式化为fr_LU.UTF-8语言环境,除了LC_TIME,因为我想在中看到en_GB.UTF-8。这应该是您正在寻找的解决方案。

备注:您可能还想删除或更改 中的这些环境变量~/.pam_environment。这些每个用户的环境变量将覆盖您在 中设置的默认设置/etc/default/locale。GUI 应用程序(如“语言支持”)可能会覆盖这些 -

答案2

是的,由于您是在爱沙尼亚安装的,Ubuntu“猜测”您更喜欢“爱沙尼亚方式”的日期和时间格式、货币等。如果您想要英语,您可以打开语言支持,选择区域格式选项卡,然后更改它

编辑:

如果您主要关注的是星期几和月份名称,同时希望尽可能保留其他格式方面,则一种选择是打开文件~/.profile进行编辑并添加以下行:

export LC_TIME=en_DK.UTF-8

答案3

  1. 单击菜单栏最右侧的图标,然后选择系统设置。
  2. 在个人部分中,单击语言支持。
  3. 单击安装/删除语言...。已安装的语言窗口列出了所有可用的语言,并选中了当前安装的语言。
  4. 选中您想要安装的语言,并取消选中您想要删除的当前安装的语言。
  5. 单击“应用更改”。
  6. 需要管理员权限。请输入您的密码,或者请求的管理员帐户的密码。

更多详情请参阅关联

相关内容