管理内置的 en-US 词典¶
Firefox 的 en-US 版本包含一个基于 SCOWL 数据集的内置 Hunspell 词典。本文档描述了向词典添加新单词或将其更新到当前上游版本的流程。
有关 Hunspell 或词缀文件格式的更多信息,您可以查看 Ubuntu 的 hunspell 手册页。
请求添加新的单词到 en-US 词典¶
如果您想向词典添加新单词,您可以将您的请求添加到 此 Bug
包括所有可能的词形,例如名词的复数和所有格形式,动词的不同时态。
尝试提供有关您要添加的术语的信息,特别是确认术语用法的外部来源(例如 Merriam-Webster 或 Oxford 在线词典)。
注意
如果您正在修复存在具有待处理请求的 Bug,请确保 提交一个新的 Bug 并将别名 enus-dictionary
(在“详细信息”部分)从旧的 Bug 移动到新的 Bug。
添加新的单词到 en-US 词典¶
本节描述了向词典添加新单词的流程。
获取 mozilla-central 的克隆(请参阅 Firefox 贡献者快速参考),如果您还没有,并确保您可以成功构建它。
使用以下命令进入词典源代码目录:
cd extensions/spellcheck/locales/en-US/hunspell/dictionary-sources
。通过检查文件
README_en_US.txt
来确定 SCOWL 的当前版本(在文件开头有一行类似于Generated from SCOWL Version 2020.12.07
,其中2020.12.07
是 SCOWL 版本)。从 SCOWL 主页或 SourceForce 下载相同版本的词典作为 tarball (tag.gz) 并将其解压到工作目录中。将结果文件夹从
scowl-YYYY.MM.DD
重命名为scowl
。有一个用于编辑词典的特殊脚本。该脚本仅在您将环境变量
EDITOR
设置为编辑器程序的可执行文件时才有效;如果您没有设置它,您可以使用EDITOR=vim sh edit-dictionary.sh
使用vim
进行编辑(或者您可以用其他编辑器替换它),或者如果您已经指定了EDITOR
,则可以只键入sh edit-dictionary.sh
。复制并粘贴完整的单词列表,然后保存并退出编辑器。无需按字母顺序排列单词,因为脚本会对其进行更正。
运行脚本
sh make-new-dict.sh
以生成一个新的词典并确保它能够无错误地运行。有关此脚本的更多详细信息,请参阅 make-new-dict.sh 部分。对生成的词典文件
en_US-mozilla.dic
进行完整性检查。例如,确保其大小与原始词典大致相同(或略大)。如果一切看起来都正确,请使用
sh install-new-dict.sh
将生成的文件复制到正确的位置。构建 Firefox 并测试更新后的词典。一旦您满意,请使用 编写补丁 中描述的过程来创建补丁。
请注意,更新脚本将修改词典的 2 个版本,并且都需要提交。
en-US.dic
:实际在构建中发布的词典,它使用 ISO-8859-1 编码。utf8/en-US.dic
:使用 UTF-8 编码的同一词典的版本。这用于解决 Phabricator 的问题,它允许在 diff 中显示实际的更改。
排除单词的建议¶
可以通过在 .dic
文件中定义的末尾添加词缀规则 !
来完全排除单词的建议备选方案。例如
bum
将更改为bum/!
(请注意额外的正斜杠)。bum/MS
将更改为bum/MS!
。
要排除单词的建议,请按照 向 en-US 词典添加新单词 中提供的说明进行操作。不要运行 edit-dictionary.sh
脚本(第 5 点),而是使用文本编辑器直接编辑文件 en-US.dic
,然后继续执行其余说明。
警告
确保使用正确的编码打开 en-US.dic
。例如,Visual Studio Code 将尝试将其作为 UTF-8
打开,并且需要使用编码 Western (ISO 8859-1)
重新打开它。
将词典升级到新的上游 SCOWL 版本¶
mozilla-central 中提供的英语词典基于 SCOWL 词典。SCOWL 软件包中分发的某些脚本用于生成 en-US 词典的文件。
此流程的工作目录是 extensions/spellcheck/locales/en-US/hunspell/dictionary-sources
。
从 SCOWL 主页或 SourceForce 下载最新版本的词典作为 tarball (tag.gz) 并将其解压到工作目录中。将结果文件夹从
scowl-YYYY.MM.DD
重命名为scowl
。运行脚本
sh make-new-dict.sh
以生成一个新的词典并确保它能够无错误地运行。有关此脚本的更多详细信息,请参阅 make-new-dict.sh 部分。对生成的词典文件
en_US-mozilla.dic
进行完整性检查。例如,确保其大小与原始词典大致相同(或略大)。如果一切看起来都正确,请使用
sh install-new-dict.sh
将生成的文件复制到正确的位置,并使用 编写补丁 中描述的过程来创建补丁。
文件结构信息¶
mozilla-specific.txt¶
此文件包含不应提交到上游的 Mozilla 特定单词。例如,Firefox
应该放在此文件中(请参阅 Bug 237921)。
请注意,文件 5-mozilla-specific.txt
是通过扩展 mozilla-specific.txt
生成的,不应直接编辑。
utf8 文件夹¶
dictionary-sources/utf8
用于存储词典文件的 UTF-8 编码副本。这用于解决 Phabricator 的限制,Phabricator 将 ISO-8859-1 文件视为二进制文件,并在更新它们时不会显示 diff。
包含的脚本信息¶
make-new-dict.sh¶
词典升级脚本 make-new-dict.sh
通过扩展(即“取消压缩”)词缀压缩词典来创建单词列表,并使用这些单词列表生成一个新的词典。
升级脚本期望当前上游版本保存在 orig
目录中。
该脚本将按以下顺序在 dictionary-sources/support_file
中创建一些文件。
0-special.txt
包含从 SCOWLen.dic.supp
扩展的数字和序数。1-base.txt
包含从先前版本的 SCOWL(来自orig
文件夹)中的en_US-custom.dic
扩展的单词。2-mozilla.txt
包含从当前 Mozilla 词典扩展的单词。3-upstream.txt
包含从新版本的 SCOWL(来自scowl/speller
文件夹)中的en_US-custom.dic
扩展的单词。2-mozilla-removed.txt
包含仅在 SCOWL 词典中可用的单词,即 Mozilla 删除的单词。2-mozilla-added.txt
包含仅在当前 Mozilla 词典中可用的单词,即 Mozilla 添加的单词。4-patched.txt
包含来自新 SCOWL 词典 (3-upstream.txt
) 的单词,其中删除了来自 (2-mozilla-removed.txt
) 的单词,并添加了单词 (2-mozilla-added.txt
)。5-mozilla-specific.txt
是使用 Mozilla 词典中的当前词缀规则从mozilla-specific.txt
扩展的。5-mozilla-removed.txt
和5-mozilla-added.txt
分别包含了 Mozilla 相比于**新的** SCOWL 版本删除和添加的单词。这些文件可用于提交上游更改,但包含在5-mozilla-specific.txt
中的单词应从此列表中删除。
新的词典可作为 en_US-mozilla.dic
使用,应使用 install-new-dict.sh
脚本复制。
install-new-dict.sh¶
该脚本
创建
orig
的副本为support_files/orig-bk
,并将新的上游版本复制到orig
。将现有的 Mozilla 词典复制到
support_files/mozilla-bk
。将
make-new-dict.sh
生成的词典 (.dic) 从 UTF-8 转换为 ISO-8859-1,并将其移动到父文件夹。将词缀文件 (.aff) 的
SET
设置为使用ISO8859-1
,而不是原始的UTF-8
,并删除ICONV
模式(输入转换表)。