我目前正在将插件从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 + '}')
);
},@见https://github.com/tinymce/tinymce/blob/4.0.26/js/tinymce/classes/Editor.js#L1105
我做错什么了吗?是否有人为新的TinyMCE版本创建了插件,并设法实现了国际化?
发布于 2015-10-27 19:38:16
感谢所有想帮我解决问题的人。不幸的是,我无法使我的插件在弹出窗口中使用翻译标签,但最终找到了解决方案。
在TinyMCE版本4.2.6中,下面的所有内容都运行得很好,也很简单。
在这里,使用名为示例的插件来完成所有操作的步骤。
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的所有开发人员。
发布于 2015-03-24 10:40:01
可以使用以下方法直接访问正确的字符串:
tinymce.EditorManager.i18n.data[ed.getParam('language') + '.myplugin_name']['my_key'];发布于 2015-06-11 19:33:43
我终于让它起作用了,也许它能帮上忙,虽然这已经一岁了,但是可以帮助别人。由于创建插件的整个方式从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");希望它能在同样的情况下为其他人工作。
https://stackoverflow.com/questions/23738175
复制相似问题