更改CKEditor中的语言值

时间:2013-07-04 16:58:46

标签: javascript ckeditor

我正在尝试更改语言定义的值。我需要在创建编辑器实例的情况下以及在某些条件下执行此操作。

我不想更改语言文件,因为该文件很好,也因为同一网站上的其他编辑器不需要进行特定的修改。

有人可以帮助我吗?我正在使用CKEDITOR 3.6.1

$("form textarea").each(function()
{
    var name = $(this).attr("name");
    var instance = CKEDITOR.instances[name];
    if(instance)
    {
        CKEDITOR.instances[name].destroy(true)
    }

    CKEDITOR.config.format_tags = 'h1;p';

    CKEDITOR.config.format_p = { element : 'p', attributes : { 'class' : 'my_class' } };

    //if(condition) CKEDITOR.config.lang.es.tag_h1 = "My special header";
    //if(condition) CKEDITOR.lang.es.tag_h1 = "My special header";

    CKEDITOR.replace(name);            
});

1 个答案:

答案 0 :(得分:0)

通过添加beforeInit函数修改格式插件的代码:

CKEDITOR.plugins.add( 'format', {
    requires: 'richcombo',
    beforeInit: function( editor ) {
        editor.lang.format.tag_h1 = 'Moooooooo!';
    },
    init: function( editor ) {
        ...

在此功能中,您可以修改所有语言条目,因为标签和内容会生成,插入并显示在下面的init()中。您可以使用任何类型的条件来更改lang条目。


另一个解决方案:更难但更全球化。有了这个,您可以从一个地方覆盖所有插件,而无需触及源代码:

// Save the old CKEDITOR.plugins.load
var orgLoad = CKEDITOR.plugins.load;

// Overwrite CKEDITOR.plugins.load
CKEDITOR.plugins.load = function() {
    // Save the old callback argument.
    var oldCallback = arguments[ 1 ];

    // Overwrite the old callback argument.
    arguments[ 1 ] = function( plugins ) {
        // Modify the plugin by adding beforeInit to the definition.
        plugins.format.beforeInit = function( editor ) {
            editor.lang.format.tag_h1 = 'Moooooooo!';
        };

        // Call the old callback.
        oldCallback.call( this, plugins );
    };

    // Call old CKEDITOR.plugins.load
    orgLoad.apply( this, arguments );
};