Мультиязычные пагины на JS как в TinyMCE
Эта тема является продолжением темы Передача данных в IFRAME (по аналогии TinyMCE) . Чтобы было видно что здесь, сделал новую тему. Кому интересно читайте.
Вопрос стоял как сделать плагины(ифреймы, попапы) мультиязычными ТОЛЬКО средствами жс. То есть без серверной стороны! Пишу плагин: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>{#advhr.advhr_desc}</title> <script type="text/javascript" src="../../tiny_mce_popup.js"></script> <script type="text/javascript" src="js/rule.js"></script> <script type="text/javascript" src="../../utils/mctabs.js"></script> <script type="text/javascript" src="../../utils/form_utils.js"></script> <link href="css/advhr.css" rel="stylesheet" type="text/css" /> </head> <body style="display: none"> <form onsubmit="AdvHRDialog.update();return false;" action="#"> <div class="tabs"> <ul> <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab',' general_panel');" onmousedown="return false;">{#advhr.advhr_desc}</a></span></li> </ul> </div> <div class="panel_wrapper"> <div id="general_panel" class="panel current"> <table border="0" cellpadding="4" cellspacing="0"> <tr> <td><label for="width">{#advhr_dlg.width}</label></td> <td class="nowrap"> <input id="width" name="width" type="text" value="" class="mceFocus" /> <select name="width2" id="width2"> <option value="">px</option> <option value="%">%</option> </select> </td> </tr> <tr> <td><label for="size">{#advhr_dlg.size}</label></td> <td><select id="size" name="size"> <option value="">Normal</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select></td> </tr> <tr> <td><label for="noshade">{#advhr_dlg.noshade}</label></td> <td><input type="checkbox" name="noshade" id="noshade" class="radio" /></td> </tr> </table> </div> </div> <div class="mceActionPanel"> <div style="float: left"> <input type="submit" id="insert" name="insert" value="{#insert}" /> </div> <div style="float: right"> <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" /> </div> </div> </form> </body> </html> |
В tiny_mce_popup.js к бади призяывается событие онлоад
..... _onDOMLoaded:function() { var b=tinyMCEPopup,d=document.title,e,c,a; if(b.domLoaded) { return } b.domLoaded=1; if (b.features.translate_i18n!==false) { c=document.body.innerHTML;if(tinymce.isIE) { c=c.replace(/ (value|title|alt)=([^"][^\s>]+)/gi,' $1="$2"') }document.dir=b.editor.getParam("directionality"," "); if((a=b.editor.translate(c))&&a!=c){document.body. innerHTML=a} if((a=b.editor.translate(d))&&a!=d){document.title =d=a} } document.body.style.display=""; if(tinymce.isIE) { document.attachEvent("onmouseup",tinyMCEPopup._res toreSelection); b.dom.add(b.dom.select("head")[0],"base",{target:"_self"})} b.restoreSelection();b.resizeToInnerSize(); if(!b.isWindow) { b.editor.windowManager.setTitle(window,d) } else{window.focus()} if(!tinymce.isIE&&!b.isWindow) { tinymce.dom.Event._add(document,"focus",function() { b.editor.windowManager.focus(b.id)}) } tinymce.each(b.dom.select("select"),function(f){f. onkeydown=tinyMCEPopup._accessHandler}); tinymce.each(b.listeners,function(f){f.func.call(f .scope,b.editor)}); if(b.getWindowArg("mce_auto_focus",true)) { window.focus();tinymce.each(document.forms,functio n(g) { tinymce.each(g.elements,function(f){if(b.dom.hasCl ass(f,"mceFocus")&&!f.disabled){f.focus();return false}}) }) } document.onkeyup=tinyMCEPopup._closeWinKeyHandler } |
Ну и в tiny_mce.js
... translate : function(s) { var c = this.settings.language || 'en', i18n = EditorManager.i18n; if (!s) return ''; return i18n[c + '.' + s] || s.replace(/{\#([^}]+)\}/g, function(a, b) { return i18n[c + '.' + b] || '{#' + b + '}'; }); }, |
Ну и последнее для этого плагина английский язык:
tinyMCE.addI18n('en.advhr_dlg',{ width:"Width", size:"Height", noshade:"No shadow" }); |
Надеюсь данная информация пригодится кому-нибудь
|
Часовой пояс GMT +3, время: 20:59. |