NAME

App::Greple::xlate - greple的翻译支持模块

SYNOPSIS

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

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

VERSION

Version 0.41

DESCRIPTION

Greple xlate 模块查找所需的文本块,并用翻译后的文本替换它们。目前作为后端引擎实现的有 DeepL(deepl.pm)和 ChatGPT(gpt3.pm)模块。还包括对 gpt-4 和 gpt-4o 的实验性支持。

如果您想要将Perl的pod样式文档中的普通文本块翻译成中文,请使用以下命令:greple,并结合xlate::deeplperl模块,如下所示:

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选项设置。四列用于run-in操作,因此每行最多可以容纳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

不需要调用翻译引擎,你需要亲自进行翻译。在准备好待翻译的文本后,将其复制到剪贴板。你需要将其粘贴到表单中,将结果复制到剪贴板,并按回车键。

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

指定目标语言。使用DeepL引擎时,可以通过deepl languages命令获取可用语言。

--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
:::::::

这意味着:

<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+

Original text:

xtxt

如果格式为xtxt(翻译文本)或未知,则仅打印翻译文本。

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

将以下文本逐行翻译成中文。

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

指定一次发送到API的最大文本行数。

如果要逐行翻译,请将此值设置为1。此选项优先于--xlate-maxlen选项。

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

将以下文本翻译成中文。

--xlate-stripe

使用 App::Greple::stripe 模块以斑马线条纹的方式显示匹配部分。当匹配部分连接在一起时,这是很有用的。

颜色调色板会根据终端的背景颜色进行切换。如果您想要明确指定,可以使用选项 --xlate-stripe-light--xlate-stripe-dark

--xlate-mask

执行掩码函数并显示转换后的文本,不进行恢复。

--match-all

在 STDERR 输出中实时查看翻译结果。

CACHE OPTIONS

将整个文件的文本设置为目标区域。

使用--xlate-cache=clear来启动缓存管理或清除所有现有的缓存数据。一旦使用此选项执行,如果不存在缓存文件,将会创建一个新的缓存文件,然后自动进行维护。

--xlate-cache=strategy
auto (Default)

--cache-clear 选项可用于初始化缓存管理或刷新所有现有的缓存数据。执行此选项后,如果不存在缓存文件,则会创建一个新的缓存文件,然后自动进行维护。

create

如果缓存文件存在,则维护缓存文件。

always, yes, 1

创建空的缓存文件并退出。

clear

只要目标是普通文件,就始终维护缓存。

never, no, 0

首先清除缓存数据。

accumulate

即使存在缓存文件,也不要使用缓存文件。

--xlate-update

此选项强制更新缓存文件,即使没有必要。

COMMAND LINE INTERFACE

您可以通过使用分发中包含的xlate命令,轻松地从命令行使用此模块。请参阅xlate帮助信息以了解用法。

xlate命令与Docker环境配合使用,因此即使您手头没有安装任何东西,只要Docker可用,您就可以使用它。使用-D-C选项。

此外,由于提供了各种文档样式的makefile,因此可以在不进行特殊指定的情况下将其翻译成其他语言。使用-M选项。

您还可以结合Docker和make选项,以便在Docker环境中运行make。

xlate -GC这样运行将启动一个带有当前工作git存储库挂载的shell。

请阅读"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 命令从命令行轻松使用此模块。有关用法,请参阅 xlate 帮助信息。

ENVIRONMENT

DEEPL_AUTH_KEY

加载存储库中包含的 xlate.el 文件以从 Emacs 编辑器中使用 xlate 命令。xlate-region 函数翻译给定的区域。默认语言为 EN-US,您可以使用前缀参数调用它来指定语言。

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

为 DeepL 服务设置您的身份验证密钥。

App::Greple::xlate::deepl

App::Greple::xlate::gpt3

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.