Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🚀 功能建议:识别代码文档翻译,把多余的注释符号去掉 #135

Closed
3 of 4 tasks
chachako opened this issue Jun 29, 2023 · 31 comments
Closed
3 of 4 tasks
Assignees
Labels
enhancement New feature or request fixed in next release The issue will be closed once next release is available

Comments

@chachako
Copy link

请先确认以下事项

  • 已仔细阅读了 README
  • issues 页面搜索过(包括已关闭的 issue),未发现类似功能建议
  • Easydict 已升级到最新版本

功能描述

image

如图,bob 支持这个功能,在翻译一些文档的时候还是很方便的

使用场景(可选)

No response

实现方案(可选)

No response

是否愿意提交 PR 实现该功能

  • 我愿意提交 PR!
@chachako chachako added the enhancement New feature or request label Jun 29, 2023
@tisfeng
Copy link
Owner

tisfeng commented Jun 30, 2023

可以,我还在思考如何做这个功能,后面想重新设计右上角的快捷按钮功能。

@abigmiu
Copy link

abigmiu commented Oct 3, 2023

驼峰转换也可以考虑下。

image

@tisfeng
Copy link
Owner

tisfeng commented Oct 3, 2023

英文翻译结果转驼峰格式吗,这个可以加,但我有点担心这些功能太杂了。

@chachako
Copy link
Author

chachako commented Oct 3, 2023

驼峰转换也可以考虑下。

image

+1+1

但我有点担心这些功能太杂了。

感觉可以做个开关默认不开启。

不过这部分逻辑感觉可能很容易造成混淆,比如 Migrate SwipeableState to AnchoredDraggableState 会不会处理成 Migrate Swipeable State to Anchored Draggable State 翻译

或许只在文本完全是驼峰时才转换?

@tisfeng
Copy link
Owner

tisfeng commented Oct 3, 2023

其实很多小工具都有类似功能,比如下面截图使用的 Boop

转驼峰这种功能,对写代码还是挺有用的,如果后面添加的话,应该会设置成可选项,图标放在翻译结果下面的链接🔗后面,这样方便在 Easydict 中直接使用。

功能实现不会很复杂,就是将英文文本以单词为单元进行切割,第一个单词首字母小写,其他单词首字母大写。

image image

@chachako
Copy link
Author

chachako commented Oct 6, 2023

转驼峰这种功能,对写代码还是挺有用的,如果后面添加的话,应该会设置成可选项,图标放在翻译结果下面的链接🔗后面,这样方便在 Easydict 中直接使用。

唔...可能我描述的有误。

实际上我想要的是:

假设输入的是 AnchoredDraggableState 那么应该翻译为 "锚定可拖动状态",也就是驼峰转换为空格再翻译(Anchored Draggable State)。

但如果输入的是 Migrate SwipeableState to AnchoredDraggableState 则应该翻译为 "将 SwipeableState 迁移到 AnchoredDraggableState",也就是什么都不转换,直接翻译原句。

#135 (comment) 描述的应该也是这种情况


至于你说的英文文本本身的驼峰转换,我也认为没有必要内置到 Easydict 中,毕竟是个翻译器(

@tisfeng
Copy link
Owner

tisfeng commented Oct 6, 2023

明白了,你说的对原输入文本进行处理后,再翻译。

这个想法很不错,有兴趣来 PR 吗?或者等后面我来做也行。

@chachako
Copy link
Author

chachako commented Oct 6, 2023

这个想法很不错,有兴趣来 PR 吗?或者等后面我来做也行。

等我之后有机会学习了 OC 一定 🥲

@tisfeng
Copy link
Owner

tisfeng commented Oct 6, 2023

行,那稍后我来看一下。

@tisfeng
Copy link
Owner

tisfeng commented Oct 9, 2023

加了,现在如果输入内容为单个单词,会尝试以驼峰和下划线形式进行分词,然后再查询

@tisfeng
Copy link
Owner

tisfeng commented Oct 9, 2023

处理了一些特殊情况,如 LaTeX 会被分词为 La Te X,添加引号后 ‘LaTeX’ 将不会自动分词,而是直接查询。

感觉可以再优化一下,后面再看看。

@chachako
Copy link
Author

chachako commented Oct 9, 2023

太棒了!那源码文档的注释处理是不是应该也能完成了~坐等新版本

@tisfeng
Copy link
Owner

tisfeng commented Oct 10, 2023

之前想过这个功能,但是具体如何实现有点困惑,因为不同编程语言的注释符号不同,比较麻烦,同时也担心会误删除查询内容,我不太想额外添加一个设置项了。。

你有什么建议吗?

@chachako
Copy link
Author

不加设置的话感觉确实没法做到十全十美,不过一般情况下我认为像 bob 那样有个快捷开关就挺好的,担心的话可以默认关闭。如果考虑加设置选项应该会方便得多,像这样
image

@tisfeng
Copy link
Owner

tisfeng commented Oct 10, 2023

了解。

我想了想,正好下个版本会开放 OpenAI #28 (comment) ,正好会空出 beta 这个选项,可以用上这个,开启 beta 时就自动去除注释符号。 等后整理设置项 UI 时再单独弄一个选项。

稍微看了一下,各个语言注释符号使用最多的是://, /* */#,那暂时就只处理这几个。

@chachako
Copy link
Author

其实还有换行符,多行注释文本只删除注释符号换行符没删除的话翻译结果还是怪怪的(

@tisfeng
Copy link
Owner

tisfeng commented Oct 11, 2023

你说的换行符,请问这个具体指什么,能给个示例吗

@chachako
Copy link
Author

chachako commented Oct 11, 2023

像很多注释其实都有行数限制,这个时候不就换行继续写了吗。

// These values will persist after the process is killed by the system
// and remain available via the same object.

像这种如果是按照下面的形式翻译,有一些句子就会不对

These values will persist after the process is killed by the system
and remain available via the same object.

正确应该是一句话连起来翻译

These values will persist after the process is killed by the system and remain available via the same object.

@tisfeng
Copy link
Owner

tisfeng commented Oct 11, 2023

明白了,我尝试一下。

@tisfeng tisfeng added the fixed in next release The issue will be closed once next release is available label Oct 14, 2023
@tisfeng
Copy link
Owner

tisfeng commented Oct 25, 2023

你好,2.0.1 版本已实现该功能。

@tisfeng tisfeng closed this as completed Oct 25, 2023
@chachako
Copy link
Author

你好,2.0.1 版本已实现该功能。

我看到说明写着

支持输入文本自动去除代码注释符号,需手动开启

请问怎么开呢~

@tisfeng
Copy link
Owner

tisfeng commented Oct 26, 2023

我想了想,正好下个版本会开放 OpenAI #28 (comment) ,正好会空出 beta 这个选项,可以用上这个,开启 beta 时就自动去除注释符号。 等后整理设置项 UI 时再单独弄一个选项。

使用命令开启 beta 即可。后续 beta 也可能会增加一些其他类型实验性的功能,观察一段时候后,如果没问题就会移除 beta,直接放到正式版。

easydict://writeKeyValue?EZBetaFeatureKey=1

@chachako
Copy link
Author

看起来还是有点问题:

    /**
     * Creates a {@code UUID} from the string standard representation as
     * described in the {@link #toString} method.
     *
     * @param  name
     *         A string that specifies a {@code UUID}
     *
     * @return  A {@code UUID} with the specified value
     *
     * @throws  IllegalArgumentException
     *          If name does not conform to the string representation as
     *          described in {@link #toString}
     *
     */

the string representation as 后面没有和
described in 连接起来:

image

正确来说应该是:
image

@tisfeng
Copy link
Owner

tisfeng commented Oct 26, 2023

确实没有考虑到这种 /**/ 多行注释且需要清除换行符的情况。

仔细看了一下代码,[/*]+ 这个正则式都写错了,还好没有直接发布。。

我看看怎么改,稍后会发布一个修复版本。

image

@tisfeng tisfeng reopened this Oct 26, 2023
@tisfeng tisfeng self-assigned this Oct 28, 2023
@tisfeng
Copy link
Owner

tisfeng commented Nov 16, 2023

2.0.2 版本已修复该问题。

@tisfeng tisfeng closed this as completed Nov 16, 2023
@chachako
Copy link
Author

chachako commented Nov 20, 2023

image image

这种情况不处理吗

@tisfeng
Copy link
Owner

tisfeng commented Nov 20, 2023

主要没考虑到这种情况,,各种场景太多了,如果有小伙伴来 PR 测试处理就好了, 我一个人写起来有点心累 😢

稍后我尝试处理一下吧。

@tisfeng
Copy link
Owner

tisfeng commented Dec 3, 2023

image image
这种情况不处理吗

2.1.0 已支持多行以*开头的注释符号。

@tisfeng
Copy link
Owner

tisfeng commented Dec 3, 2023

2.2.0 版本支持自动去除多行的 /// 注释符号。

  /// Use this equal-to operator (`==`) to compare any two optional instances of
  /// a type that conforms to the `Equatable` protocol. The comparison returns
  /// `true` if both arguments are `nil` or if the two arguments wrap values
  /// that are equal. Conversely, the comparison returns `false` if only one of
  /// the arguments is `nil` or if the two arguments wrap values that are not
  /// equal.

@Kerwin1202
Copy link

@tisfeng 2.4 这种就不行,可以考虑用正则 切单词就行 大写切
image

@tisfeng
Copy link
Owner

tisfeng commented Dec 24, 2023

这个 issue 功能已完成,后面的内容有点偏离主题了,新的问题请另外开 issue,方便跟踪管理。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request fixed in next release The issue will be closed once next release is available
Projects
None yet
Development

No branches or pull requests

4 participants