2

スペル

PHP API を使用して、pspell がサポートする辞書の配列を、できれば人間が読める完全な名前で取得する方法はありますか?

とりあえず以下のようにしています。

$dicts = explode(PHP_EOL,rtrim(`aspell dicts`));

しかし、それでも人間に優しいバージョンは得られません (たとえば、en_CA「英語 - カナダ語」など)。


解決

これが私が思いついたものです:

$dicts = explode(PHP_EOL,rtrim(`aspell dicts`));
$ltr = array();
foreach($dicts as $dict) {
    if(preg_match('`^([a-z]+)$`',$dict,$m)) {
        $lang = _iso639_1_to_lang_name($dict) ?: $dict;
    } elseif(preg_match('`^([a-z]+)_([A-Z]+)$`',$dict,$m)) {
        $lang = (_iso639_1_to_lang_name($m[1]) ?: $m[1]).' - '.(_country_code_to_adjectival($m[2])?:$m[2]);
    } elseif(preg_match('`^([a-z]+)_([A-Z]+)-(.*)$`',$dict,$m)) {
        $lang = (_iso639_1_to_lang_name($m[1]) ?: $m[1]).' - '.(_country_code_to_adjectival($m[2])?:$m[2]).' - '.ucwords(str_replace('_',' ',$m[3]));
    } elseif(preg_match('`^([a-z]+)-(.*)$`',$dict,$m)) {
        $lang = (_iso639_1_to_lang_name($m[1]) ?: $m[1]).' - '.ucwords(str_replace('_',' ',$m[2]));
    } else {
        $lang = $dict;
    }
    $ltr[$dict] = $lang;
}

これらの関数は、ウィキペディアからスクレイピングしたデータに基づいて、ISO コードから完全な名前を検索するだけです。

4

2 に答える 2

1

システムにある辞書を見つけるということですか? pspell は、GNU aspellライブラリの非常に薄いラッパーです。aspell ライブラリがサポートするものは何でもサポートしますが、残念ながら、すべての辞書を一覧表示する方法は提供していません。その機能が追加されるといいですね。

于 2012-12-10T21:33:47.857 に答える
0

PHPドキュメントのlocale_parseとその詳細を使用する必要があります。

http://php.net/manual/en/locale.parselocale.php

于 2012-12-10T21:45:48.680 に答える