【问题标题】:CK editor 4, google Translate also translate my MATHJAX formulas, even after no translateCK editor 4,google Translate也翻译了我的MATHJAX公式,即使没有翻译
【发布时间】:2020-05-29 22:54:30
【问题描述】:

大家好,我这里有个大问题很久没有解决。

我正在使用 ck 编辑器和 Mathjax 插件来像这样添加数学公式

<script src="https://cdn.ckeditor.com/4.13.1/standard-all/ckeditor.js"></script>

<textarea name="desc" class="form-control" id="richtext" placeholder="About this category."></textarea>

<script>

var richtext = document.getElementById('richtext');
CKEDITOR.replace('richtext', {
      on : {
            change: function ( evt )  {
            $(richtext).html(evt.editor.getData().replace(/(\r\n|\n|\r)/gm,"") ) ;
            }
        },
      extraPlugins: 'mathjax,colorbutton,font,justify,print,tableresize,uploadimage,uploadfile,pastefromword,liststyle,pagebreak',
      mathJaxLib: 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-AMS_HTML',
      height: 320
    });

    if (CKEDITOR.env.ie && CKEDITOR.env.version == 8) {
      document.getElementById('ie8-warning').className = 'tip alert';
    }
                </script>

到目前为止一切正常。

现在当我发布数据并使用谷歌翻译将数据从英语翻译成印地语时

require_once ('assets/vendor/autoload.php');
use \Statickidz\GoogleTranslate;
$source = 'en';
$target = 'hi';
$text = "<p>This is a test question. please do not translate this <span class="math-tex">\(x = {-b \pm \sqrt{b^2-4ac} \over 2a}\)</span>equation.</p>";  
// i know there is an issue of double quotes in the class math-tex, but this is what i get from ckeditor. even if i replace the double quotes with single it does not does the job.

$tex4444t=str_replace(array("\r\n", "\r", "\n"), " ", $text);
$trans232 = new GoogleTranslate();
$results3 = $trans232->translate($source, $target, $tex4444t);

我知道 math-tex 类中存在双引号问题,但是 这就是我从ckeditor 得到的。即使我替换双引号 单它不能完成这项工作。我也尝试过将 notranslate 类与 math-tex 一起使用,它仍然无法正常工作。

我尝试了其他替代方法,但都没有效果,请帮我解决这个问题。

【问题讨论】:

    标签: javascript google-translate mathjax ckeditor4.x google-translation-api


    【解决方案1】:
    $text=str_replace('"', "'",$formula_text)
    $results=str_replace("\ ","\\",$text);
    

    这解决了问题

    【讨论】:

      【解决方案2】:

      这已经出现在MathJax issue tracker 中。 php google translate 似乎无法处理 notranslate 类。您可能会向他们提交错误。

      与此同时,数学“翻译”后的主要问题是反斜杠后有多余的空格。因此,也许只需要做一个正则表达式替换,将一个反斜杠后跟一个空格转换为一个反斜杠吗?

      MathJax 问题跟踪器中还建议了 another option,它更复杂,但可能是最安全的方法。

      【讨论】:

      • 非常感谢您的回答,如果我刷新页面,它会起作用,但我在这里通过 AJAX/javascript 进行语言更改,所以当我打印翻译的内容时它不起作用。谷歌有翻译,但公式变坏了,如果我通过刷新页面打印相同的内容,效果很好。至少我更近了一步。
      • 它适用于以下答案中提到的一些更改。
      猜你喜欢
      • 2014-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-28
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多