[英]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的插件使一切工作的步骤:
tinymce.addI18n('de_AT', { 'Title': 'Titel', 'Example plugin': 'Beispielplugin' });
<!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.