Answers:
该答案将演示如何完全自定义语言环境,可以选择使用现有语言环境作为基础。该答案中将使用的语言环境i18n
类型是type;答案正文中每次提及“语言环境”时,都将暗含这种语言环境。
定制语言环境的第一件事就是了解语言环境的格式。该Web语言环境编辑器对语言环境中的每个字段都有全面的描述,尽管任何人都不能立即使用它。这将是使用指南。
您需要使用语言环境的唯一工具是
我建议您创建一个目录,并将与您将在其语言环境中进行的工作相关的所有内容保存到该目录中。
注意:如果您使用的是非常见字符,则我在下面编写的脚本可能会出现问题;您可能想看看nass链接的替代脚本。
将以下代码保存到文件中。该文件将被系统标识为python脚本,可以,因为它是一个。本指南假定您调用了脚本encodestr
。
#!/usr/bin/python
def encode(string):
newstring = str()
for ch in string:
newstring += "<U%04X>" % ord(ch)
return newstring
if __name__ == '__main__':
import sys
print encode(sys.argv[1])
保存后,授予文件执行权限-这将派上用场。您可以使用nautilus或通过从终端在保存脚本的目录上运行以下命令来执行此操作: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
LC_SECTION
您要修改的部分在哪里,以及locale
您要从中复制该部分的语言环境。
例如,如果要在英语语言环境中复制时间格式,则可以使用以下文本作为自定义语言环境文件:
LC_TIME
copy "en_GB"
END LC_TIME
这样可以节省大量工作,并确保对引用的语言环境所做的任何更改都将反映到您的语言环境中。
我将在下面显示的步骤可能不是最佳方法,但是可以工作。
编译您的语言环境。不要惊慌!这没有时间。只需运行命令sudo localedef -i custom -f UTF-8 custom.UTF-8 -c -v
where custom
是您的语言环境的名称。
将您的语言环境复制到/usr/share/i18n/locales/
目录。您肯定会需要sudo特权来执行此操作,并且可以使用以下命令来执行此操作:sudo cp locale /usr/share/i18n/locales/
where locale
是自定义语言环境的文件名。
在中指定您的语言环境/var/lib/locales/supported.d/
。例如,创建一个文件名/var/lib/locales/supported.d/asd
并添加line 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"
注意:如果要对每个语言环境设置使用一个语言环境,请LC_ALL="locale"
在其中locale
输入自定义语言环境的名称。如果你想使用一个区域的一切,但在语言,你可以写LANG="locale"
和(另一线路,当然)LANGUAGE="locale":XX
这里XX
是你想要的语言的2字母代码。
例如,如果要使用荷兰语区域设置和英语,则可以使用:
LANG="nl_NL"
LANGUAGE="nl_NL:en"
下次登录时,应使用您的语言环境。您可以通过locale
再次运行命令来进行测试。
请评论本指南中的不一致或错误陈述!
custom UTF-8
到/usr/share/i18n/SUPPORTED
我能运行之前sudo locale-gen
。否则它将不在列表中。
不确定要进行哪种自定义,但是可以使用来设置一些语言环境变量~/.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"
也可以生成自定义语言环境。有关日期,请参见本指南。
en_US
对LC_NUMERIC
,并de_DE
为LC_MONETARY
和LC_MEASUREMENT
为您提供了其他副作用吗?另请参见用于生成个人语言环境的新链接。
πμ
,它输出<U00CF><U0080><U00CE><U00BC>
而不是预期字符<U03C0><U03BC>
。这是一个有效的链接。