繁体   English   中英

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

[英]TinyMCE 4 Plugins: Can't get tinymce.Editor.getLang() working

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

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

tinymce.PluginManager.requireLangPack('myplugin');

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

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

当我访问静态上下文时

tinymce.i18n.data.myplugin

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

问题:

当调用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 + '}')
            );
        },

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

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

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

在TinyMCE版本4.2.6中,下面的所有内容都完美无缺。

这里使用名为example的插件使一切工作的步骤:

  • plugins / example创建你的插件目录
  • 创建所需的插件JS文件插件/ 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' }); 

  • 在设置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> 

结果

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

没有特别要求 editor.getLang的调用

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

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

您可以使用以下内容直接访问正确的字符串:

tinymce.EditorManager.i18n.data[ed.getParam('language') + '.myplugin_name']['my_key'];

我终于成功了,也许它可以帮助,虽然这是1岁,但可以帮助别人。 由于创建插件的整个方式从3.X更改为4.X,因此我在插件中添加的requireLangPack位置不正确。

我在做:

tinymce.PluginManager.add('myplugin', function(editor, url) {
     tinymce.PluginManager.requireLangPack('myplugin');
     ...
});

它应该是:

tinymce.PluginManager.requireLangPack('myplugin');
tinymce.PluginManager.add('myplugin', function(editor, url) {

         ...
});

此外,我访问这些变量的方式是:

editor.getLang("myplugin").title;

代替

editor.getLang("myplugin.title");

希望它在同样的情况下适用于其他人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM