您的问题是“如何创建语言”,因此我将描述新语言(或更准确地说,书写系统)需要到位的所有部分。您专门询问厄立特里亚字母表,所以我将提供现代系统如何支持它的具体示例,并尝试为您提供您所缺少的部分的指针。答案很长,并提供了很多链接来支持这两种解释。
要使用像Ge'ez(也称为 Ethiopic,用于在埃塞俄比亚写阿姆哈拉语和在厄立特里亚写提格里尼亚语的脚本)这样的脚本,您需要做一些事情。第一种是对字符进行编码的方法;代表每个字符的一组数字,计算机可以使用这些数字来表示文本。幸运的是,Unicode已经普及,并且 Unicode 被设计成一个包含世界上所有语言的通用字符集。Unicode 3.0 在U+1200-U+137F 范围内引入了埃塞俄比亚语,之后的版本在U+1380-U+1394、U+2D80-U+2DDF和U+AB00-U+AB2F范围内添加了更多晦涩字符的补充. 如果您想支持 Unicode 尚不支持的语言,您要么需要使用私人使用区域并定义您自己的字符到代码点的映射,要么提交将您的脚本添加到 Unicode 的提案;例如,参见Ethiopic的提案。
现在,Unicode 只是一个字符集;字符和数字之间的抽象映射。要将这些字符作为字节序列实际传输,请使用字符编码。有很多编码;其中一些,如ASCII和ISO-8859-1仅涵盖完整 Unicode 字符集的一个子集,而另一些,如UTF-8和UTF-16,覆盖全系列。对于 Web 上的文档,推荐使用 UTF-8 字符编码;如果你能提供帮助,你永远不应该使用其他任何东西。在 UTF-8 中,可以直接在文档中写 Ge'ez,例如:ኤርትራ。需要注意的一件事是,某些程序(尤其是在 Windows 上)会为您提供“Unicode”作为编码,当它们表示 UTF-16 时;您要确保选择 UTF-8,因为它更高效且与更广泛的软件兼容。
如果您使用的编码不涵盖 Unicode 的全部范围,或者您没有输入这些字符的好方法,并且您正在编写 HTML 或 XML,则可以使用数字字符引用来代替。为此,您需要编写要在&#
和之间引用的字符的 Unicode 代码点;
。您可以用十进制写数字,也可以用前缀 . 的十六进制写数字x
。例如,ሀ 可以写成ሀ
或ሀ
(末尾的分号很重要;它在评论中不适合你,因为你错过了它)。
既然您已经有了一个字符集和一种对其进行编码的方法,那么您需要一种显示它的方法。有些脚本更容易在其他脚本中显示。对于所有脚本,您需要一个字体;定义每个字符外观的文件。字体包含一组字形或每个字符的图形。一些文字,如拉丁字母(用于英语和大多数欧洲语言的字母)相对简单;每个字符都是一个单独的字形,它们的绘制方式并不取决于之前或之后出现的字符(尽管变音符号和连字可以使它变得更复杂一些)。其他,如阿拉伯语和印度语脚本用草书书写,其中字母相互连接,因此它们的绘制方式可能取决于它们附近的字符。这些语言需要特殊的渲染支持,如Windows上的Uniscribe或DirectWrite 、Linux 上的Pango ,或Apple Advanced Typography或Graphite等高级字体技术。
幸运的是,Ge'ez 是一个相当简单的书写系统,不需要任何专门的渲染支持或高级字体系统。每个字符都是一个单独的字形,不需要任何重新排序。因此,与大多数计算机上已经可用的渲染系统一起显示的普通OpenType字体就可以完成这项工作。但是您仍然需要字体才能显示字符。要创建自己的字体,您可以使用FontForge(免费/开源工具)、Fontographer、FontLab Studio或其他类似软件。
对于 Ethiopic,您无需创建自己的。有许多可用的字体包括埃塞俄比亚字符,但我推荐的是来自SIL (夏季语言学研究所)的Abyssinica SIL,它为少数民族语言和书写系统做了很多出色的工作。他们的字体在免费许可下可用,允许您使用字体、重新分发字体和修改字体,因此他们的字体非常灵活,可以在各种情况下使用。Windows 附带Nyala,其中包括埃塞俄比亚字符,自 Windows Vista 和Ebrima,在 Windows 8 中增加了对埃塞俄比亚字符的支持;因此,使用 Windows Vista 或更高版本的用户应该已经能够查看埃塞俄比亚字符了。从 10.6 开始,Mac OS X 随Kefa一起提供。
获得字体后,您将能够查看埃塞俄比亚字符。但是阅读您文档的其他人可能没有这些字体(如果他们使用的是旧版本的 Windows 或 Mac OS X,如果他们没有安装 Windows 附带的所有字体等),在这种情况下字符可能会在他们的机器上显示为方框或问号。您可以为这些人提供可再分发的字体,例如 Abyssinica SIL,或者他们可以购买包含埃塞俄比亚字符的字体,但这可能会带来不便。对于处理文字处理器文档或纯文本,这可能是您能做的最好的事情;他们需要在计算机上安装字体才能显示文本。如果您在计算机上创建 PDF,它应该嵌入显示文本所需的字体,
在网页上,您可以使用网页字体链接到样式表中的字体,从而允许用户的网页浏览器为该网页加载该字体。Web 字体一直支持到 IE 6以及大多数其他 Web 浏览器的最新版本,因此它们实际上得到了相当广泛的支持。不同的 Web 浏览器支持不同的字体文件格式(EOT、TTF、OpenType、SVG和WOFF),并且 CSS 的语法略有不同(旧版本的 IE 基于旧草案),因此制作起来可能有点棘手与所有浏览器兼容的页面。幸运的是,人们已经自动化了这个过程。一些网络字体可从以下网站在线获得Google Web Fonts或FontSquirrel,但遗憾的是,我找不到已经托管的任何埃塞俄比亚字体。但是,您可以将字体上传到 FontSquirrel,它会将其转换为所有主要格式,并提供适用于所有现代浏览器的示例 CSS。请注意,您应该只对允许 Web 嵌入的字体执行此操作;并非所有字体都可以。由于 Abyssinica SIL 在 Open Font License 下可用,您可以使用它,我已经通过 FontSquirrel 为您运行它;您可以查看它是如何工作的(查看 Glyphs & Languages 选项卡),或下载该工具包。要使用它,只需将字体文件 ( .ttf
, .eot
, .svg
, 和.woff
) 在您的服务器上与您的 CSS 位于同一目录中,并在您的 CSS 中包含以下内容:
@font-face {
font-family: 'abyssinica_silregular';
src: url('abyssinicasil-r.eot');
src: url('abyssinicasil-r.eot?#iefix') format('embedded-opentype'),
url('abyssinicasil-r.woff') format('woff'),
url('abyssinicasil-r.ttf') format('truetype'),
url('abyssinicasil-r.svg#abyssinica_silregular') format('svg');
font-weight: normal;
font-style: normal;
}
既然您知道如何对埃塞俄比亚语进行编码、查看埃塞俄比亚语字符以及共享包含埃塞俄比亚语字符的文档,那么您可能希望将它们键入到文档中。如果您使用的是 HTML,则只需键入上述数字字符引用即可。在其他文档中,您可以从所有字符的图表中复制并粘贴字符,例如 Wikipedia 页面。但这会变得相当麻烦。根据您的系统和设置,您还可以使用Unicode Hex Input输入任意 Unicode 字符,但这也很麻烦。
要完全支持在您的计算机上键入脚本,您需要一个键盘布局或输入法。一些脚本可以用简单的键盘布局输入,它说明了哪些键对应于哪些字符。如果脚本中的字符多于键盘上的键,则可以使用 Shift 和 Alt(或 Mac 上的 Option)来映射到更多字符。死键也可用于扩展您键入的字符范围;死键是产生单个字形的两个或多个击键序列;例如,在 Mac OS X 上,要键入“á”,您可以键入Option-E A. 要在 Windows 上创建键盘布局,您可以使用Microsoft Keyboard Layout Creator。Mac OS X 使用XML 格式用于键盘布局,因此您可以直接创建一个,或者使用SIL 的Ukelele更轻松地创建一个。在使用 X11 的系统(如 Linux)上,您可以创建自己的 XKB 布局。
如果您需要的字符多于修饰符和死键所能支持的字符,例如输入中文或日文,那么您需要一个成熟的输入法。输入法允许您运行任意代码以将某人输入的内容映射到它生成的文本中;例如,在日语输入法中,您可以键入您正在书写的内容的语音表示,它会显示与该表示匹配的可能字符的下拉列表,允许您选择合适的字符。Windows 提供了Input Method Manager用于编写输入法,Mac OS X 提供Input Method Kit,X11 提供了几种方法,例如SCIM和iBus。
埃塞俄比亚语的标准输入法广泛使用了死键。看起来目前最流行的 Ethiopic 输入法是Keyman,这是一种适用于 Mac 和 Windows 的商业输入法,此外还有一个免费的变体KMFL,适用于 Linux。SIL 有此输入法的键盘下载;他们还有一个用于 Mac OS X 的键盘布局,它使用死键来实现相同的目的。Mac OS X 有更广泛的死键支持,所以它不需要输入法来支持这种形式的输入,而在 Windows 上你需要使用像 Keyman 这样的输入法才能以这种方式输入。Google 有一个免费的 Windows 输入法,Google Input Tools for Windows,支持阿姆哈拉语,并允许您自定义其输入方案;您可以尝试调整他们对提格里尼亚语的阿姆哈拉语支持。
如果您只需要在网站上支持输入,您可以在 JavaScript 中做到这一点,方法是用 JavaScript 编写一个输入法,将某人输入的内容音译为埃塞俄比亚语。我不知道有任何现有的框架可以做到这一点;但是,我发现在 JavaScript 中实现了韩语和日语输入法。你可以看看这些是如何实现的。进一步看,我发现制作 Keyman 的 Tavultesoft 也有KeymanWeb,这是一种基于 JavaScript 的输入法,您可以购买并嵌入到您的网站中。MediaWiki 还有一个输入法扩展Narayam,其中包括用于基于 MediaWiki 的站点(例如 Wikipedia)的基于 JavaScript 的输入法,其中包括实验性的阿姆哈拉语输入法。还有一个W3C IME API 草案,它有助于在 Web 应用程序和本机 IME 以及基于 JavaScript 的 IME 之间提供接口。鉴于它仍然是一个草案,我不知道它是否在任何地方都得到支持。
通过以上所有内容(字符集、编码、字体、渲染支持和输入法),您将能够在脚本中创建、共享和查看文档。如果这就是您所需要的,那就太好了;以上将允许您使用给定脚本中的文档。但是为了在您的计算机上全面支持一种语言,而不仅仅是它的脚本或书写系统,您还需要两个部分:一个locale,以及您的软件要针对您的语言进行本地化(翻译和改编)。
语言环境指定程序应如何操作给定脚本、语言、文化和/或编码中的文本。程序执行许多常见的文本处理操作:显示数字、显示日期和时间、排序字符串或名称等。这些应该如何工作可能会因使用程序的人的语言、脚本和文化而异;例如,在瑞典语中,“ü”与“y”一起排序,而在英语和德语中,它与“u”一起排序。差异可能不基于语言:墨西哥和西班牙都使用西班牙语,但在墨西哥,数字显示.
为小数点分隔符(1½ 写为“1.5”),而在西班牙,
用作小数分隔符(1½ 写为“1,5”)。语言环境指定了所有这些规则。由于语言环境可能因语言、文化和有时其他因素而异,因此通常使用语言和国家/地区来指定语言环境,也可以使用其他信息。
命名区域设置最广泛使用的标准是RFC 4646 (BCP 47)。语言环境通常指定为“ ln - CC ”,语言代码为ln,国家代码为CC:美国英语为 en-US,英国英语为 en-UK,法国法语为 fr-FR。如果需要指定更多信息,可以包括在内。例如,塞尔维亚语可以用 Latin 或Cyrillic书写,因此塞尔维亚语中的塞尔维亚语可以是 sr-Latn-CS 或 sr-Cyrl-CS。厄立特里亚的提格里尼亚语写成ti-ER。
有多种不同的格式可用于定义特定语言环境所具有的规则。Windows 使用 NLP 文件,这是一种可以使用Microsoft Locale Builder创建的自定义格式。可以使用localedef创建 POSIX (Unix/Linux) 语言环境。如今,许多系统正在转向Unicode 通用语言环境数据注册表,它指定了语言环境数据的标准化格式以及世界上许多语言的语言环境综合数据库。ICU是一个用于 C 和 Java 的库(并被许多其他环境使用),用于根据 Unicode 规则和语言环境数据处理 Unicode 文本;他们有一个很好的浏览器对于来自 CLDR 的数据和他们自己的语言环境数据。例如,看看他们对ti-ER的条目。
最后,为了完全支持一种语言,您需要将软件本身翻译成该语言。当然,有很多软件,每个软件都包含许多需要翻译的字符串。有些软件不是为翻译而设计的;它还没有被国际化。有些软件只能由创建它的人翻译;字符串内置在程序中,第三方无法轻易修改。但是可以将某些软件本地化,将其翻译成您的语言和文化。如果该软件已经针对其他几种语言和文化进行了本地化,则它可能足够灵活以支持一种新语言,并且如果它使用易于修改本地化信息的格式,则可以由第三方进行修改。
例如,Mac OS X 上的应用程序将其本地化数据存储在应用程序包内的单独文件中。有一个名为 AppleGlot 的工具(您需要注册Mac 开发者计划并前往下载区域找到它),它可以帮助您提取数据,提供包含所有需要翻译的字符串的文件,并允许您一旦拥有,就可以再次将其与应用程序结合起来。对于开源软件,例如 Linux 上可用的许多软件,您可以与开发人员合作提供翻译。一些软件使用gettext作为翻译字符串,它使用 PO 文件格式,您可以使用poedit进行编辑。有些使用 Qt,您可以使用Qt Linguist. 或者为了处理多种格式,您可以使用诸如Swordfish或Transifex之类的商业产品。
当然,没有人能做到以上所有;在现代计算机系统上建立对新语言的支持需要许多人的共同努力。这一切都旨在成为对给定语言的语言支持的所有组件的高级导览,其参考资料将帮助您跟进您想要处理的任何方面,并展示已经完成的工作适用于 Tigrinya 和 Ge'ez 脚本。