Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Мультиязычные пагины на JS как в TinyMCE (https://javascript.ru/forum/events/14138-multiyazychnye-paginy-na-js-kak-v-tinymce.html)

PashaTurok 01.01.2011 22:01

Мультиязычные пагины на 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>

PashaTurok 01.01.2011 22:03

В 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
}

PashaTurok 01.01.2011 22:06

Ну и в 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 + '}';
});
},

PashaTurok 01.01.2011 22:08

Ну и последнее для этого плагина английский язык:
tinyMCE.addI18n('en.advhr_dlg',{
width:"Width",
size:"Height",
noshade:"No shadow"
});

PashaTurok 01.01.2011 22:08

Надеюсь данная информация пригодится кому-нибудь


Часовой пояс GMT +3, время: 00:21.