Iva*_*van 28 customization locale
在系统?行政?语言支持? 文本。我只能选择标准语言环境,但我想微调。例如,在 Windows 中,我可以手动自定义时间和日期格式、度量单位、小数点分隔符、货币等内容 - 我如何在 Ubuntu 中执行此操作?
Sev*_*Raz 31
此答案将演示如何完全自定义语言环境,可选择使用现有语言环境作为基础。此答案中将使用的语言环境i18n类型是类型;在答案正文中每次提到“语言环境”一词时都会暗示这种类型的语言环境。
自定义语言环境所需的第一件事是了解语言环境的格式。尽管不是任何人都可以立即使用,但此 Web 区域设置编辑器对区域设置中的每个字段都有全面的描述。这将是使用指南。
使用语言环境所需的唯一工具是
我建议您创建一个目录并将与您将在语言环境中执行的工作相关的所有内容保存到该目录中。
注意:如果您使用的是非常用字符,那么我在下面编写的脚本可能会出现问题;您可能想看看nass链接的替代脚本。
将以下代码保存到文件中。这个文件会被你的系统识别为一个 python 脚本,这很好,因为它是一个。本指南假定您调用了脚本encodestr。
#!/usr/bin/env python3
import sys
def main():
if len(sys.argv) != 2:
exit(f'Usage: {sys.argv[0]} <string to encode>')
print(encode(sys.argv[1]))
def encode(s):
return ''.join(f"<U{ord(c):04X}>" for c in s)
if __name__ == '__main__':
sys.exit(main())
Run Code Online (Sandbox Code Playgroud)
保存后,授予文件执行权限 - 这会派上用场。你可以做,使用鹦鹉螺,或通过从终端下面的命令运行,在其中保存脚本的目录:chmod +x encodestr。
您现在可以通过在同一目录上运行来测试此脚本:./encodestr hello. 你应该得到一个等于 的输出<U0068><U0065><U006C><U006C><U006F>。
修改现有语言环境是最简单的情况,因为理想情况下,您将选择几乎完全符合您需求的语言环境,在这种情况下,您只需进行少量修改。要对其进行定制,您可以使用该指南了解哪些部分是您想要更改的部分,以及如何更改它们。所有已安装的语言环境都驻留在 中/usr/share/i18n/locales,但是该指南几乎包含了曾经创建的所有语言环境。
然而,当您打开一个语言环境时,您首先会注意到的是,您会像阅读奇怪的<UXXXX>代码一样阅读英文单词。您将需要能够创建这些代码 - 这就是encodestr脚本的来源。
当您知道必须更改哪些部分时,您需要知道该部分中包含的每个字段。
例如,该
LC_TIME部分包含字段t_fmt以及许多其他字段。每个字段在指南上都有自己的描述。
既然您知道要修改哪些字段,请再次使用该指南找出该字段接受哪些值。
例如,该字段
t_fmt接受文本和公共strfmt 变量。
当您知道在要修改的字段上写什么时,通过encodestr脚本运行文本以获取其编码的等效项。
注意:并非每个字段都需要编码,如果需要,请使用现有的语言环境作为参考。
例如,如果您想
Time: %T在t_fmt字段中使用时间格式,请运行./encodestr "Time: %T"; 这将返回<U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>,因此您将t_fmt <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>在您的语言环境中使用该行(当然,在它的相应部分中)。
在您修改了您想要的每个字段后,您需要继续将区域设置安装到系统中,以便可以使用它。为此,请转到安装部分。
与修改一个相反,您可以用来创建自定义语言环境的另一种方法是从头开始。如果您再次使用该指南,这并不是很困难。不过,这里有一个有用的提示:您可以从其他语言环境复制部分,而无需实际的复制和粘贴方法。您只需要遵循以下格式:
LC_SECTION
copy "locale"
END LC_SECTION
Run Code Online (Sandbox Code Playgroud)
LC_SECTION您要修改的部分在哪里,以及locale要从中复制该部分的语言环境。
例如,如果您想复制英语语言环境中的时间格式,您可以将此文本设置为您的自定义语言环境文件:
LC_TIME
copy "en_GB"
END LC_TIME
Run Code Online (Sandbox Code Playgroud)
这为您节省了大量工作,并确保对引用的语言环境所做的任何更改都将反映到您的语言环境中。
我将在下面展示的步骤可能不是最佳的,但有效。
编译您的语言环境。不要惊慌!这不需要时间。只需运行命令sudo localedef -i custom -f UTF-8 custom.UTF-8 -c -vwhere customis your locale 即可。
将您的语言环境复制到/usr/share/i18n/locales/目录中。您肯定需要sudo权限来执行此操作,您可以使用命令sudo cp locale /usr/share/i18n/locales/where localeis your custom locale来执行此操作。
在/var/lib/locales/supported.d/. 例如,创建一个文件名/var/lib/locales/supported.d/asd并添加行custom UTF-8,其中 custom 是您的语言环境的名称。
运行魔法命令。我实际上不知道这个命令到底是做什么的,但它很重要。运行sudo locale-gen。它很可能会在需要时生成对可用语言环境的引用。
告诉您的系统使用语言环境。如果您希望在系统范围内使用语言环境,请修改该/etc/environment文件。如果没有,您可以修改您的~/.profile文件,或在启动时提供的任何其他文件。如果您不知道后者的含义,请不要担心,只需使用该~/.profile文件即可。要知道您必须在其中写入什么,请首先运行该locale命令。它应该发出带有类的物品清单LANGUAGE,LC_MESSAGES,LC_CTYPE和其他许多人。您将在单独的行SECTION="locale"中SECTION为您想要的每个部分(由前一个命令列出)写下,这是locale您的自定义语言环境的部分和名称。
例如,如果您想使用来自荷兰的时间格式,但使用英语,请编写:
LANGUAGE="en_GB:en"
LC_TIME="nl_NL"
Run Code Online (Sandbox Code Playgroud)
注意:如果您想为每个语言环境设置使用一个语言环境,请写下自定义语言环境的名称LC_ALL="locale"在哪里locale。如果您想对语言以外的所有内容使用语言环境,您可以写下LANG="locale"和(当然,在另一行)您想要的语言的 2 字母代码LANGUAGE="locale":XX在哪里XX。
例如,如果您想使用荷兰语语言环境和英语,您可以使用:
LANG="nl_NL"
LANGUAGE="nl_NL:en"
Run Code Online (Sandbox Code Playgroud)
下次登录时,您的语言环境应该在使用中。您可以通过locale再次运行该命令来测试这一点。
请评论本指南中的不一致或虚假陈述!
不确定您想要什么样的自定义,但您可以使用~/.locale. 例如,要获取英语信息,但要获取德语时间和我使用的类似信息
export LC_ALL=""
export LANG="en_GB.utf8"
export LC_CTYPE="de_DE.utf8"
export LC_NUMERIC="de_DE.utf8"
export LC_TIME="de_DE.utf8"
export LC_COLLATE="de_DE.utf8"
export LC_MONETARY="de_DE.utf8"
export LC_MESSAGES="en_GB.utf8"
export LC_PAPER="de_DE.utf8"
export LC_NAME="en_GB.utf8"
export LC_ADDRESS="de_DE.utf8"
export LC_TELEPHONE="de_DE.utf8"
export LC_MEASUREMENT="de_DE.utf8"
export LC_IDENTIFICATION="de_DE.utf8"
Run Code Online (Sandbox Code Playgroud)
生成自定义语言环境也是可能的。例如,请参阅本指南了解日期。
| 归档时间: |
|
| 查看次数: |
17154 次 |
| 最近记录: |