带有 hunspell 的 Laravel php-spellchecker 仅适用于 en_US 字典

问题描述

Centos 8 -> Hunspell 1.6.2 -> Laravel 8 -> tigitz/PHP-spellchecker

语言环境

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

字典列表:

SEARCH PATH:
.::/usr/share/hunspell:/usr/share/myspell:/usr/share/myspell/dicts:/Library/Spelling:/root/.openoffice.org/3/user/wordbook:/root/.openoffice.org2/user/wordbook:/root/.openoffice.org2.0/user/wordbook:/root/Library/Spelling:/opt/openoffice.org/basis3.0/share/dict/ooo:/usr/lib/openoffice.org/basis3.0/share/dict/ooo:/opt/openoffice.org2.4/share/dict/ooo:/usr/lib/openoffice.org2.4/share/dict/ooo:/opt/openoffice.org2.3/share/dict/ooo:/usr/lib/openoffice.org2.3/share/dict/ooo:/opt/openoffice.org2.2/share/dict/ooo:/usr/lib/openoffice.org2.2/share/dict/ooo:/opt/openoffice.org2.1/share/dict/ooo:/usr/lib/openoffice.org2.1/share/dict/ooo:/opt/openoffice.org2.0/share/dict/ooo:/usr/lib/openoffice.org2.0/share/dict/ooo
AVAILABLE DICTIONARIES (path is not mandatory for -d option):
./ru_UA
./ru_RU
./en_US
/usr/share/myspell/ru_UA
/usr/share/myspell/ru_RU
/usr/share/myspell/en_US
LOADED DICTIONARY:
./en_US.aff
./en_US.dic

我按照说明去做

 $hunspell = \PHPSpellcheck\Spellchecker\Hunspell::create();

 $misspellings = $hunspell->check("exxample error ошиббка",['ru_RU'],['from_example']);

添加了不同方式的词典,我试过官方

yum install  hunspell-ru

但问题是,通过PHP代码,只有en_US字典。如果我从控制台运行 Hunspell,则所有词典都可以运行 hunspell -d ru_RU

它也让我感到困惑的是,在显示字典时它总是报告

LOADED DICTIONARY:
    ./en_US.aff
    ./en_US.dic

如果我想使用其他词典,我不清楚为什么总是加载这些词典。我有一种感觉,PHP 代码会选择认的控制台编码并通过它 LANG=en_US.UTF-8 传递字典。字典通过控制台工作,但通过 PHP-spellchecker 它们总是 en_US 尽管我将不同的字典传递给函数参数。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)