composer require nigo/doc-translator
$generator = new SimpleDocument('lang', 'path_to_save');
Класс Fb2ParallelDocumentGenerator
принимает два параметра при создании: язык и путь к папке, куда будет сохранятся файл.
Метод принимает файл, который нужно перевести, и название файла, которое будет у перевода, и возвращает false
, если файл не создался, или размер файла
$generator->generateByFile('file_for_translate', 'filename');
Метод принимает текст, который нужно перевести, и название файла, которое будет у перевода, и возвращает false
, если файл не создался, или размер файла
$generator->generate('text', 'filename');
ВСЕ ПРИМЕРЫ РАБОТАЮТ С КЛАССОМ LibreTranslator, КОТОРЫЙ ОСНОВАН НА API ИЗ ЭТОГО РЕПОЗИТОРИЯ.
Класс Fb2ParallelDocumentGenerator
в конструкторе создает переводчик.
$this->translator = new LibreTranslator();
Для изменения переводчика можно использовать следующий метод
public function setNewTranslator(TranslatorAbstract $translator): void
{
$this->translator = $translator;
}
В проекте реализован класс LibreTranslator
,
который работает на основе API из этого репозитория.
Чтобы создать свою реализацию переводчика, нужно создать класс, который будет занаследован от
abstract class TranslatorAbstract
{
}
далее нужно будет создать свою реализацию метода translate()
.
Иногда API может присылать не то, что мы хотим (LibreTranslator иногда не переводит имена, названия каких-либо мест и т.п. и возвращает ответ, где указывается, что язык выбран неправильно), и для более удобной отладки, ответы,
которые не имеют статус 200
, могут записываться в файл ./storage/logs/day_moth_year.txt
,
для этого при создании переводчика нужно передать true
в параметр logState
.
new LibreTranslator(true);
Изменить состояние для логов можно с помощью метода
public function setLogState(bool $state): void
{
$this->logState = $state;
}
Или из класса Fb2ParallelDocumentGenerator
public function setLogStateForTranslator(bool $state): void
{
$this->translator = new LibreTranslator($state);
}
Работает аналогично классу SimpleDocument
, но создает документ в формате FB2 с параллельным переводом.
$generator = new Fb2ParallelDocumentGenerator('lang', 'path_to_save');
$generator->generateByFile('path_to_file', 'filename');
Тестовые тексты для перевода берутся из ./storage/test_doc/
.
One_Day-Helen_Naylor.txt - большой текст и text.txt - маленький текст.
Класс создает файл FB2 формата без перевода.
$document = new SimpleFB2('path_to_save');
$document->generateByFile('path_to_file', 'filename');