YiiGuxing/TranslationPlugin

请求这里添加代码对 翻译替换markdown时进行规则判断 (目前存在以下问题)

Super1Windcloud opened this issue · 5 comments

需求/建议描述

判断当前editor.selectionRange 所在文件名是否满足 *.md , 满足则对text 进行text.replace()
替换规则有
1- 空字符串替换或者注释掉text所有存在的 html元素
2- 替换所有 中文 ')' '(' 为 英文 括号
3 - 连续三个单引号字符 ''' 替换为 ``` JavaScript模板字符串那个符号,
4 - 中文冒号: 替换为英文的:

建议的解决方案

image

附加信息

判断当前editor.selectionRange 所在文件名是否满足 *.md , 满足则对text 进行text.replace()
替换规则有
1- 空字符串替换或者注释掉text所有存在的 html元素
2- 替换所有 中文 ')' '(' 为 英文 括号
3 - 连续三个单引号字符 ''' 替换为 ``` JavaScript模板字符串那个符号,
4 - 中文冒号: 替换为英文的:

大哥, 希望能够适配markdown的翻译, 我的IDEA不是IU-2021.2的, 插件启动不了, 没法提交PR

翻译与替换操作对于某个语言的识别与适配并不是您认为的字符替换这么简单。比如在 markdown 文件里,我们不能简单粗暴地认为所有的括号、冒号等字符都是 markdown 所用的语法符号,它们可能就仅仅是文本内容的正常标点符号而已。也不是我们并不能正确地识别哪些符号是 markdown 语法符号,还是本内容的正常标点符号。从技术上是可以识别的,我们必须先进行语法识别与分析,识别出哪些是语法符号,哪些是内容文本,再跳过语法符号只针对内容文本进行翻译。我也很希望翻译与替换功能能够智能到如此地步。但是这样做难度较高,代价太大了,所花费的时间与精力太大了,我一个人目前也没有那么多的时间与精力。而且翻译与替换功能在我这边的优先级是较低的,有优先级较高的任何需要优先处理。
综上所述,由于您的需求并不合理,将不予采纳,望理解,感谢您的对此项目的关注与支持!

你代码这里的逻辑是 已经经过翻译后的text ,下一步就是替换原文本 , 所以经过我的测试, 在替换之前把上面的这些字符替换,就能够正常渲染的 , 且试无妨 ,老哥信我一次 , 就是部分中文字符导致渲染异常的 , markdown除了汉字其他都是英文符号, 按照上面的规则 replace一下很简单的 , 替换之前

fun getCurrentFileName(project: Project): String? {
    // 获取当前激活的 FileEditorManager 实例
    val fileEditorManager = FileEditorManager.getInstance(project)
    
    // 获取当前打开的文件(第一个文件)
    val currentFile: VirtualFile? = fileEditorManager.selectedFiles.firstOrNull()
    
    // 返回文件名
    return currentFile?.name
}

获取文件名然后正则匹配 markdown文件

import java.util.regex.Pattern

val pattern = Pattern.compile(".*\\.md$")

后面就是 text= text.replace( ) ,中文符号我这里打不出来 ,懒得重置输入法设置 , html可以不用管, 应该没有多少人会在markdown里面用html

大哥 , 考虑一下吧, 没有多少代码的 ,

抱歉 , 应该是这里直接返回当前光标所在文件的文件名, 然后正则匹配是否是markdown后缀

fun getCurrentFile(project: Project): VirtualFile? {
    // 获取当前打开的编辑器
    val editor = FileEditorManager.getInstance(project).selectedEditor?.editor ?: return null
    // 获取编辑器中当前打开的文件
    return editor.virtualFile.name
}