2

我遷移TinyMCE的3.X插件到4.x與翻譯

插件TinyMCE的窗口管理器中打開HTML表單使用了一些個別HTML文件中定義的對話框。這些文件裏面有國際化字符串,例如,

<select id="reading" name="reading"> 
    <option value="corr">{#wce.correction}</option> 
    <option value="comm">{#wce.commentary}</option> 
    <option value="alt">{#wce.alternative}</option> 
</select> 

在TinyMCE的3.x中似乎彈出插件通過跑TinyMCE中的這些內容翻譯工具,但使用4.x的,美其名曰:

tinymce.activeEditor.windowManager.open 

的字符串不會被翻譯。

有什麼建議嗎?

回答

1

OK,所以看3.X tinymce_popup代碼,我已經抓住了適當的線,我現在在做這在我的對話框的HTML文件:

$(document).ready(function() { 
    translate(); 
}); 
function translate() { 
    var c=document.body.innerHTML; 
    var d=document.title; 
    var a; 
    if(top.tinymce.isIE){c=c.replace(/ (value|title|alt)=([^"][^\s>]+)/gi,' $1="$2"')} 
    a=c.replace(/\{\#([^\}]+)\}/g, function(a, b) { 
    var c=top.tinymce.translate(b); 
    return (c != b) ? c : '{#' + b + '}'; 
    }); 
    if(a!=c){document.body.innerHTML=a} 
    a=d.replace(/\{\#([^\}]+)\}/g, function(a, b) { 
    var c=top.tinymce.translate(b); 
    return (c != b) ? c : '{#' + b + '}'; 
    }); 
    if(a!=d){document.title=d=a} 
} 

我也不得不修改我的插件區域文件從註冊字符串中刪除插件名稱。例如,從:

tinyMCE.addI18n('en.wce',{ 
    'key' : 'value', 
    ... 

tinymce.addI18n('en',{ 
    'key' : 'value', 
    ... 

和我所有的

{#wce.tokens} 

簡單

{#tokens} 
在我的HTML

這讓我現在主要的工作。希望對他人有幫助。

+0

這個「翻譯」方法的身體似乎過於複雜,因爲大部分代碼是在Editor.translate方法,但由於某種原因editor.translate沒有我的插件語言包可用,但tinymce.translate確實有我的插件語言包可用。不幸的是,tinymce.translate不包括執行令牌替換的代碼。因此,直到我們能夠得到正式答案,如何使用TinyMCE 4.x輕鬆實現這一點,我們都保持現狀。 – scribe