NAME

App::Greple::xlate - модуль поддержки перевода для greple

SYNOPSIS

greple -Mxlate -e ENGINE --xlate pattern target-file

greple -Mxlate::deepl --xlate pattern target-file

VERSION

Version 0.4101

DESCRIPTION

Модуль Greple xlate находит нужные текстовые блоки и заменяет их переведенным текстом. В настоящее время в качестве внутреннего движка реализованы модули DeepL (deepl.pm) и ChatGPT (gpt3.pm). Также включена экспериментальная поддержка gpt-4 и gpt-4o.

Если вы хотите перевести обычные текстовые блоки в документе, написанном в стиле Perl's pod, используйте команду greple с модулем xlate::deepl и perl следующим образом:

greple -Mxlate::deepl -Mperl --pod --re '^([\w\pP].*\n)+' --all foo.pm

В этой команде шаблонная строка ^([\w\pP].*\n)+ означает последовательные строки, начинающиеся с букв алфавитно-цифрового ряда и знаков препинания. Эта команда показывает область, которую нужно перевести, выделенной. Опция --all используется для перевода всего текста.

Затем добавьте опцию --xlate для перевода выделенной области. После этого программа найдет нужные участки и заменит их выводом команды --deepl.

По умолчанию оригинальный и транслированный текст печатается в формате "маркер конфликта", совместимом с git(1). Используя формат ifdef, можно легко получить нужную часть командой unifdef(1). Выходной формат может быть задан опцией --xlate-format.

Если требуется перевести весь текст, используйте опцию --match-all. Это сокращение для указания шаблона (?s).+, который соответствует всему тексту.

Данные формата маркеров конфликтов можно просматривать в стиле "бок о бок" с помощью команды sdif с опцией -V. Поскольку сравнивать по каждой строке не имеет смысла, рекомендуется использовать опцию --no-cdif. Если вам не нужно раскрашивать текст, укажите --no-textcolor (или --no-tc).

sdif -V --no-tc --no-cdif data_shishin.deepl-EN-US.cm

NORMALIZATION

Обработка выполняется в заданных единицах, но в случае последовательности из нескольких строк непустого текста они преобразуются в одну строку. Эта операция выполняется следующим образом:

  • Удалите пробелы в начале и конце каждой строки.

  • Если строка заканчивается полноразмерным символом препинания, объедините ее со следующей строкой.

  • Если строка заканчивается символом полной ширины и следующая строка начинается символом полной ширины, объедините строки.

  • Если конец или начало строки не являются символами полной ширины, объедините их, вставив символ пробела.

Кэш-данные управляются на основе нормализованного текста, поэтому даже если будут внесены изменения, не влияющие на результаты нормализации, кэшированные данные перевода будут по-прежнему эффективны.

Этот процесс нормализации выполняется только для первого (0-го) и четного шаблона. Таким образом, если два шаблона указаны следующим образом, то текст, соответствующий первому шаблону, будет обработан после нормализации, а для текста, соответствующего второму шаблону, процесс нормализации не будет выполняться.

greple -Mxlate -E normalized -E not-normalized

Поэтому используйте первый шаблон для текста, который должен быть обработан путем объединения нескольких строк в одну, а второй - для предварительно отформатированного текста. Если в первом шаблоне нет текста для проверки, используйте шаблон, который ничему не соответствует, например (?!).

MASKING

Иногда встречаются части текста, которые не нужно переводить. Например, теги в файлах формата markdown. На сайте DeepL предлагается в таких случаях преобразовывать исключаемые части текста в XML-теги, переводить их, а затем восстанавливать после завершения перевода. Чтобы поддержать эту идею, можно указать части, которые нужно замаскировать от перевода.

--xlate-setopt maskfile=MASKPATTERN

При этом каждая строка файла `MASKPATTERN` будет интерпретироваться как регулярное выражение, переводить строки, соответствующие ему, и возвращаться после обработки. Строки, начинающиеся с #, игнорируются.

Сложный шаблон может быть записан в нескольких строках с обратным слешем, сопровождаемым новой строкой.

Как текст преобразуется при маскировании, можно увидеть с помощью опции --xlate-mask.

Этот интерфейс является экспериментальным и может быть изменен в будущем.

OPTIONS

--xlate
--xlate-color
--xlate-fold
--xlate-fold-width=n (Default: 70)

Запустите процесс перевода для каждой совпавшей области.

Без этой опции greple ведет себя как обычная команда поиска. Таким образом, вы можете проверить, какая часть файла будет подвергнута переводу, прежде чем вызывать фактическую работу.

Результат команды выводится в стандартный аут, поэтому при необходимости перенаправьте его в файл или воспользуйтесь модулем App::Greple::update.

Опция --xlate вызывает опцию --xlate-color с опцией --color=never.

С опцией --xlate-fold преобразованный текст сворачивается на указанную ширину. Ширина по умолчанию равна 70 и может быть задана опцией --xlate-fold-width. Для обкатки зарезервировано четыре колонки, поэтому в каждой строке может содержаться не более 74 символов.

--xlate-engine=engine

Определяет используемый движок перевода. Если вы указываете модуль движка напрямую, например -Mxlate::deepl, то этот параметр использовать не нужно.

На данный момент доступны следующие движки

  • deepl: DeepL API

  • gpt3: gpt-3.5-turbo

  • gpt4: gpt-4-turbo

  • gpt4o: gpt-4o-mini

    Интерфейс gpt-4o нестабилен и в настоящее время не может быть гарантированно корректной работы.

--xlate-labor
--xlabor

Вместо того чтобы вызывать механизм перевода, вы должны работать на него. После подготовки текста для перевода он копируется в буфер обмена. Вы должны вставить их в форму, скопировать результат в буфер обмена и нажать кнопку return.

--xlate-to (Default: EN-US)

Укажите целевой язык. Вы можете получить доступные языки с помощью команды deepl languages при использовании движка DeepL.

--xlate-format=format (Default: conflict)

Укажите формат вывода оригинального и переведенного текста.

Следующие форматы, отличные от xtxt, предполагают, что переводимая часть представляет собой набор строк. На самом деле можно перевести только часть строки, и указание формата, отличного от xtxt, не даст значимых результатов.

conflict, cm

Оригинальный и преобразованный текст печатаются в формате git(1) маркеров конфликтов.

<<<<<<< ORIGINAL
original text
=======
translated Japanese text
>>>>>>> JA

Вы можете восстановить исходный файл следующей командой sed(1).

sed -e '/^<<<<<<< /d' -e '/^=======$/,/^>>>>>>> /d'
colon, :::::::

Оригинальный и переведенный текст выводятся в пользовательском стиле контейнера markdown.

::::::: ORIGINAL
original text
:::::::
::::::: JA
translated Japanese text
:::::::

Приведенный выше текст будет переведен в HTML следующим образом.

<div class="ORIGINAL">
original text
</div>
<div class="JA">
translated Japanese text
</div>

Количество двоеточий по умолчанию равно 7. Если вы укажете последовательность двоеточий, например :::::, то она будет использоваться вместо 7 двоеточий.

ifdef

Оригинальный и преобразованный текст печатаются в формате cpp(1) #ifdef.

#ifdef ORIGINAL
original text
#endif
#ifdef JA
translated Japanese text
#endif

Вы можете восстановить только японский текст командой unifdef:

unifdef -UORIGINAL -DJA foo.ja.pm
space
space+

Оригинальный и преобразованный текст выводятся на печать, разделенные одной пустой строкой. Для пробел+ после преобразованного текста также выводится новая строка.

xtxt

Если формат xtxt (переведенный текст) или неизвестен, печатается только переведенный текст.

--xlate-maxlen=chars (Default: 0)

Укажите максимальную длину текста, передаваемого в API за один раз. По умолчанию установлено значение, как для бесплатного сервиса DeepL: 128К для API (--xlate) и 5000 для интерфейса буфера обмена (--xlate-labor). Вы можете изменить эти значения, если используете услугу Pro.

--xlate-maxline=n (Default: 0)

Укажите максимальное количество строк текста, которое будет отправлено в API за один раз.

Установите значение 1, если вы хотите переводить по одной строке за раз. Этот параметр имеет приоритет перед параметром --xlate-maxlen.

--[no-]xlate-progress (Default: True)

Результат перевода можно увидеть в реальном времени в выводе STDERR.

--xlate-stripe

Используйте модуль App::Greple::stripe, чтобы показать совпадающие части в виде полосок зебры. Это удобно, когда совпадающие части соединены встык.

Цветовая палитра переключается в соответствии с цветом фона терминала. Если вы хотите указать его явно, можно использовать --xlate-stripe-light или --xlate-stripe-dark.

--xlate-mask

Выполните функцию маскирования и отобразите преобразованный текст как есть, без восстановления.

--match-all

Установите весь текст файла в качестве целевой области.

CACHE OPTIONS

Модуль xlate может хранить кэшированный текст перевода для каждого файла и считывать его перед выполнением, чтобы исключить накладные расходы на запрос к серверу. При стратегии кэширования по умолчанию auto, он сохраняет данные кэша только тогда, когда файл кэша существует для целевого файла.

Используйте --xlate-cache=clear, чтобы запустить управление кэшем или очистить все существующие данные кэша. После выполнения этой опции будет создан новый файл кэша, если он не существует, а затем он будет автоматически поддерживаться.

--xlate-cache=strategy
auto (Default)

Сохранять файл кэша, если он существует.

create

Создать пустой файл кэша и выйти.

always, yes, 1

Сохранять кэш в любом случае, пока целевой файл является обычным файлом.

clear

Сначала очистите данные кэша.

never, no, 0

Никогда не использовать файл кэша, даже если он существует.

accumulate

По умолчанию неиспользуемые данные удаляются из файла кэша. Если вы не хотите удалять их и сохранять в файле, используйте accumulate.

--xlate-update

Эта опция заставляет обновлять файл кэша, даже если в этом нет необходимости.

COMMAND LINE INTERFACE

Вы можете легко использовать этот модуль из командной строки с помощью команды xlate, входящей в дистрибутив. Информацию об использовании xlate смотрите в справке.

Команда xlate работает совместно со средой Docker, поэтому даже если у вас ничего не установлено, вы можете использовать ее, пока доступен Docker. Используйте опцию -D или -C.

Кроме того, поскольку в комплекте поставляются make-файлы для различных стилей документов, перевод на другие языки возможен без специальных уточнений. Используйте опцию -M.

Вы также можете комбинировать опции Docker и make, чтобы запускать make в среде Docker.

Выполнение команды xlate -GC запустит оболочку с подключенным текущим рабочим git-репозиторием.

Подробности читайте в японской статье в разделе "SEE ALSO".

xlate [ options ] -t lang file [ greple options ]
    -h   help
    -v   show version
    -d   debug
    -n   dry-run
    -a   use API
    -c   just check translation area
    -r   refresh cache
    -s   silent mode
    -e # translation engine (default "deepl")
    -p # pattern to determine translation area
    -x # file containing mask patterns
    -w # wrap line by # width
    -o # output format (default "xtxt", or "cm", "ifdef")
    -f # from lang (ignored)
    -t # to lang (required, no default)
    -m # max length per API call
    -l # show library files (XLATE.mk, xlate.el)
    --   terminate option parsing
Make options
    -M   run make
    -n   dry-run
Docker options
    -G   mount git top-level directory
    -B   run in non-interactive (batch) mode
    -R   mount read-only
    -E * specify environment variable to be inherited
    -I * docker image name or version (default: tecolicom/xlate:version)
    -D * run xlate on the container with the rest parameters
    -C * run following command on the container, or run shell

Control Files:
    *.LANG    translation languates
    *.FORMAT  translation foramt (xtxt, cm, ifdef, colon, space)
    *.ENGINE  translation engine (deepl, gpt3, gpt4, gpt4o)

EMACS

Загрузите файл xlate.el, включенный в репозиторий, чтобы использовать команду xlate из редактора Emacs. Функция xlate-region переводит заданный регион. Язык по умолчанию - EN-US, и вы можете указать язык, вызывая ее с помощью аргумента prefix.

ENVIRONMENT

DEEPL_AUTH_KEY

Задайте ключ аутентификации для сервиса DeepL.

OPENAI_API_KEY

Ключ аутентификации OpenAI.

INSTALL

CPANMINUS

$ cpanm App::Greple::xlate

TOOLS

Необходимо установить инструменты командной строки для DeepL и ChatGPT.

https://github.com/DeepLcom/deepl-python

https://github.com/tecolicom/App-gpty

SEE ALSO

App::Greple::xlate

App::Greple::xlate::deepl

App::Greple::xlate::gpt3

  • https://hub.docker.com/r/tecolicom/xlate

    Образ контейнера Docker.

  • https://github.com/DeepLcom/deepl-python

    DeepL Библиотека Python и команда CLI.

  • https://github.com/openai/openai-python

    Библиотека OpenAI Python

  • https://github.com/tecolicom/App-gpty

    Интерфейс командной строки OpenAI

  • App::Greple

    Подробную информацию о шаблоне целевого текста см. в руководстве greple. Используйте опции --inside, --outside, --include, --exclude для ограничения области совпадения.

  • App::Greple::update

    Вы можете использовать модуль -Mupdate для модификации файлов по результатам команды greple.

  • App::sdif

    Используйте sdif, чтобы показать формат маркера конфликта бок о бок с опцией -V.

  • App::Greple::stripe

    Использование модуля Greple stripe с помощью опции --xlate-stripe.

ARTICLES

AUTHOR

Kazumasa Utashiro

LICENSE

Copyright © 2023-2024 Kazumasa Utashiro.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.