nigo/doc-translator

Пакет для создания документов с переводом

0.0.3 2024-01-21 02:53 UTC

This package is auto-updated.

Last update: 2024-04-03 14:31:30 UTC


README

Содержание

Установка

composer require nigo/doc-translator

Класс SimpleDocument

$generator = new SimpleDocument('lang', 'path_to_save');

Класс Fb2ParallelDocumentGenerator принимает два параметра при создании: язык и путь к папке, куда будет сохранятся файл.

generateByFile()

Метод принимает файл, который нужно перевести, и название файла, которое будет у перевода, и возвращает false, если файл не создался, или размер файла

$generator->generateByFile('file_for_translate', 'filename');

generate()

Метод принимает текст, который нужно перевести, и название файла, которое будет у перевода, и возвращает false, если файл не создался, или размер файла

$generator->generate('text', 'filename');

ВСЕ ПРИМЕРЫ РАБОТАЮТ С КЛАССОМ LibreTranslator, КОТОРЫЙ ОСНОВАН НА API ИЗ ЭТОГО РЕПОЗИТОРИЯ.

setNewTranslator()

Класс 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);
}

Класс Fb2ParallelDocumentGenerator

Работает аналогично классу 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 - маленький текст.

Класс SimpleFB2

Класс создает файл FB2 формата без перевода.

$document = new SimpleFB2('path_to_save');
$document->generateByFile('path_to_file', 'filename');