TinyMCE 4插件:无法获取tinymce.Editor.getLang()正常工作

Rem*_*ben 5 javascript jquery tinymce tinymce-4

我目前正在将TinyMCE 3.x的插件切换到新版本的TinyMCE 4.0.26.在尝试国际化我的插件标签时遇到了很多问题.

在我的plugin.js中,我通过调用加载语言包

tinymce.PluginManager.requireLangPack('myplugin');
Run Code Online (Sandbox Code Playgroud)

用我的i18n文件langs/de.js看起来像这样:

tinyMCE.addI18n('de', {
  myplugin: {
    button : 'Link einf\u00FCgen/bearbeiten',
    title : 'Link einf\u00FCgen/bearbeiten'
  }
});
Run Code Online (Sandbox Code Playgroud)

当我访问静态上下文时

tinymce.i18n.data.myplugin
Run Code Online (Sandbox Code Playgroud)

我可以看到变量按钮标题都可用.

问题:

当调用editor.getLang('myplugin.button')时,我得到{#myplugin.button}而不是相应的变量值.

在我对源代码进行了一些调查之后,我发现它希望语言代码存在于tinyMCE.i18n.data .....中,这是不可用的

getLang: function(name, defaultVal) {
            return (
                this.editorManager.i18n[(this.settings.language || 'en') + '.' + name] ||
                (defaultVal !== undefined ? defaultVal : '{#' + name + '}')
            );
        },
Run Code Online (Sandbox Code Playgroud)

@see https://github.com/tinymce/tinymce/blob/4.0.26/js/tinymce/classes/Editor.js#L1105

我做错了什么吗?有没有人为新的TinyMCE版本创建了一个插件并设法使国际化工作?

Rem*_*ben 1

感谢所有试图帮助我解决这个问题的人。不幸的是,我无法让我的插件在弹出窗口中使用翻译标签,但最终找到了解决方案。

下面的所有内容在 TinyMCE 4.2.6 版本中都可以完美且轻松地工作。

以下是使用名为example的插件使一切正常工作的步骤:

  • 在plugins/example处创建您的插件目录
  • 创建所需的插件 JS 文件plugins/example/plugin.min.js(查看示例http://pastebin.com/jEARrtWN) - 正如@msqar 建议的那样,我在插件函数之前添加了requireLangPack调用。
  • 现在在langs/de_AT.jsplugins/example/langs/de_AT.js创建翻译文件(请用您的语言代码替换 de_AT )

tinymce.addI18n('de_AT', {
  'Title': 'Titel',
  'Example plugin': 'Beispielplugin'
});
Run Code Online (Sandbox Code Playgroud)

  • 设置 TinyMCE 时,所有(在我的示例中)英文标签都会自动翻译为 de_AT,如下所示:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <link rel="stylesheet" href="">
</head>
<body>
    <textarea name="test"></textarea>
    <script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
    <script src="tinymce/tinymce.min.js"></script>
    <script>
    jQuery(document).ready(function ($) {
        $('textarea').tinymce({
            theme: "modern",
            plugins: 'example',
            toolbar: 'example',
            language:'de_AT'
        });
    })
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

结果

使用工具栏内的按钮打开对话框时,窗口标题示例插件会自动翻译为Beispielplugin

不需要对 editor.getLang 进行特殊调用

我希望本指南也适用于这里的其他开发人员。我将不胜感激任何积极或消极的反馈。

非常感谢 @stackoverflow 的所有开发人员。