首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TinyMCE 4插件:无法使tinymce.Editor.getLang()工作

TinyMCE 4插件:无法使tinymce.Editor.getLang()工作
EN

Stack Overflow用户
提问于 2014-05-19 12:48:09
回答 3查看 1.7K关注 0票数 5

我目前正在将插件从TinyMCE 3.x切换到新版本TinyMCE 4.0.26。当我试图国际化插件标签时,我遇到了严重的问题。

在我的plugin.js中,我通过调用

代码语言:javascript
复制
tinymce.PluginManager.requireLangPack('myplugin');

我的i18n文件langs/de.js看起来如下所示:

代码语言:javascript
复制
tinyMCE.addI18n('de', {
  myplugin: {
    button : 'Link einf\u00FCgen/bearbeiten',
    title : 'Link einf\u00FCgen/bearbeiten'
  }
});

当我访问静态上下文时

代码语言:javascript
复制
tinymce.i18n.data.myplugin

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

问题是:

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

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

代码语言:javascript
复制
getLang: function(name, defaultVal) {
            return (
                this.editorManager.i18n[(this.settings.language || 'en') + '.' + name] ||
                (defaultVal !== undefined ? defaultVal : '{#' + name + '}')
            );
        },

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

我做错什么了吗?是否有人为新的TinyMCE版本创建了插件,并设法实现了国际化?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-10-27 19:38:16

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

在TinyMCE版本4.2.6中,下面的所有内容都运行得很好,也很简单。

在这里,使用名为示例的插件来完成所有操作的步骤。

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

代码语言:javascript
复制
tinymce.addI18n('de_AT', {
  'Title': 'Titel',
  'Example plugin': 'Beispielplugin'
});

  • 在我的示例中,所有的英文标签在设置automatically时都被翻译成de_AT:

代码语言:javascript
复制
<!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的所有开发人员。

票数 1
EN

Stack Overflow用户

发布于 2015-03-24 10:40:01

可以使用以下方法直接访问正确的字符串:

代码语言:javascript
复制
tinymce.EditorManager.i18n.data[ed.getParam('language') + '.myplugin_name']['my_key'];
票数 0
EN

Stack Overflow用户

发布于 2015-06-11 19:33:43

我终于让它起作用了,也许它能帮上忙,虽然这已经一岁了,但是可以帮助别人。由于创建插件的整个方式从3.X改为4.X,所以我添加到插件中的requireLangPack位于一个错误的位置。

我在做:

代码语言:javascript
复制
tinymce.PluginManager.add('myplugin', function(editor, url) {
     tinymce.PluginManager.requireLangPack('myplugin');
     ...
});

当它应该是:

代码语言:javascript
复制
tinymce.PluginManager.requireLangPack('myplugin');
tinymce.PluginManager.add('myplugin', function(editor, url) {

         ...
});

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

代码语言:javascript
复制
editor.getLang("myplugin").title;

而不是

代码语言:javascript
复制
editor.getLang("myplugin.title");

希望它能在同样的情况下为其他人工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23738175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档