skoro / stardict

PHP interface to StarDict dictionaries
8 stars 1 forks source link

Please help to use Stardict in find.dhamma.gift. #10

Open o28o opened 1 year ago

o28o commented 1 year ago

Олексий, здравствуйте. Меня зовут Павел я из Казахстана, делаю проект по буддистским текстам. Https://find.dhamma.gift/ к сожалению я не разработчик и очень трудно и болезненно идёт процесс.

Я уже скачал и настроил ваш пакет stardict

.../htdocs/dpdd $ composer show skoro/stardict
name     : skoro/stardict
descrip. : Provides interface to StarDict dictionaries.
keywords : dictionary, stardict
versions : * 0.1.2
type     : library

Но я не понимаю как запустить запрос. Я создал файл index.php с таким содержанием, dict файлы и папка vendor лежат там же

<?php
use StarDict\StarDict;

require './vendor/autoload.php';

$dict = StarDict::createFromFiles('dict.ifo', 'dict.idx', 'dict.dict.dz');

echo $dict->getDict()->getBookname(); // show dict name.

foreach ($dict->get('adhivacana') as $result) {
    echo $result->getValue();
}
?>

Но такая ошибка

Fatal error: Uncaught RuntimeException: Unknown type "h", maybe it should be registered ? in /data/data/com.termux/files/usr/share/apache2/default-site/htdocs/dpdd/vendor/skoro/stardict/src/DictData/TypeSequenceManager.php:42
Stack trace:
#0 /data/data/com.termux/files/usr/share/apache2/default-site/htdocs/dpdd/vendor/skoro/stardict/src/StarDict.php(51): StarDict\DictData\TypeSequenceManager->getSequences('h')
#1 /data/data/com.termux/files/usr/share/apache2/default-site/htdocs/dpdd/vendor/skoro/stardict/src/StarDict.php(115): StarDict\StarDict->__construct(Object(StarDict\Dict), Object(StarDict\Index\BinaryIndexHandler), Object(StarDict\DictData\FileDZDataReader), Object(StarDict\DictData\TypeSequenceManager))
#2 /data/data/com.termux/files/usr/share/apache2/default-site/htdocs/dpdd/vendor/skoro/stardict/src/StarDict.php(98): StarDict\StarDict::create(Object(StarDict\DictFiles))
#3 /data/data/com.termux/files/usr/share/apache2/default-site/htdocs/dpdd/index.php(7): StarDict\StarDict::createFromFiles('./dict.ifo', './dict.idx', './dict.dict.dz')
#4 {main}
  thrown in /data/data/com.termux/files/usr/share/apache2/default-site/htdocs/dpdd/vendor/skoro/stardict/src/DictData/TypeSequenceManager.php on line 42

Подскажете пожалуйста что можно сделать

skoro commented 1 year ago

sametypesequence вашего словаря не поддерживается, в текущем виде только t, P, m, W реализованы, для h еще нет реализации, подробнее про значения sametypesequence можно узнать здесь https://github.com/skoro/stardict/blob/master/docs/sametypesequence.md

Можно попробовать заменить sametypesequence с h на m в ifo файле словаря.

skoro commented 1 year ago

Fixed #12