nigo / doc-translator
Пакет для создания документов с переводом
Installs: 4
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:package
Requires
- php: >=8
- ext-curl: *
- larapack/dd: ^1.1
- nigo/fb2-book: 0.0.1
- symfony/dotenv: ^6.4
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');