MediaWiki:Api-stylesheets/wiktRU.xsl

   ltr Дополнительно Ошибка:   © Викисловарь. На условиях лицензии CC-BY-SA 3.0. 

<xsl:variable name="pageName" select="concat('http://', $contentLang, '.wiktionary.org')"/>

<xsl:template match="/">

<html dir="{$dir}" lang="{$contentLang}" xml:lang="{$contentLang}"> <meta name="generator" content="Wiktionary Extract XSLT 1.07-RU"/> <base target='_blank' href="{$pageName}" /> Wiktionary extract a.wtif1 { color: black; text-decoration: none;} a.wtif1:hover {text-decoration: underline;} .disambig-see-also, .disambig-see-also-2 {display:inline;} a.new {color: red;} <script type='text/javascript'> /*<![CDATA[*/ function setup { //Stuff to translate: var preferLang = {'en': 'Английский', 'fr': 'Французский', 'de': 'Немецкий', ru: 'Русский', uk: 'Украинский', bg: 'Болгарский', 'qqqAny': null}; //for now. var extractSeeAlso = / (См. тж. <a[^>]*>.*?)<\/td>/; //no subexpressions! var see_also_process = function (sa) {return sa[1];} var createLink = 'Создать'; // text only. var not_found = 'Невозможно получить определение выражения $1.'; //Stuff not to translate in general (setup).
 * 1) wordThisIsFor { font-weight:bold;}
 * 1) container {background-color:white; padding: 0.5em; border: solid black thin;}
 * 1) error {color: red;font-size:larger;}

var rd = location.search.match(/\&rd\=([^&]*)/); //is this from redirect. + converts to numeric. rd = rd ? (+rd[1] + 1) : 1; //redirection level. var showWord = 0; //default to not showing. 0 = none, 1 = bold, 2 = bold link. var showWordRaw = location.search.match(/\&showWord\=([^&]*)/); showWordRaw = showWordRaw ? showWordRaw[1] : 'none'; if (showWordRaw !== "none") { showWord++; } if (showWordRaw === "link") { showWord++; } var numbDfn = location.search.match(/\&count\=([^&]*)/); //count. + converts to numeric. numbDfn = numbDfn ? (+numbDfn[1]) : 1; //default to 1 var pageURL = '/w/index.php?title=' + encodeURIComponent(decodeURIComponent(location.search.match(/\&page\=([^&]*)/)[1])); var src = document.getElementById('src'); var display = document.getElementById('word-list'); var loc = location.search.match(/\&page\=([^&]*)/)[1]; var escWord = decodeURIComponent(loc).replace(/&/, '&amp;').replace(/>/, '&lt;').replace(/</, '&gt;'); //note: wordEsc does not escape quotes. DO NOT PUT AS ATTRIBUTE VALUE var preferLangCode = location.search.match(/\&lang\=([^&]*)/); if (preferLangCode) { preferLangCode = preferLangCode[1]; } else {preferLangCode = 'qqqAny';} src.normalize; var html = src.firstChild.data; var def = html //may be redefined later.

//stuff you might need to translate, but hopefully won't var subSectRegex = new RegExp(' ' + preferLang[preferLangCode] + ' [\\s\\S]*$'); var extractCurLangName = / (?!<span)([\s\S]*?)<\/h1>/; //first subexpression. ?!<span to prevent edit links try { //this assumes attribute order doesn't change!!! html = html.replace(/ [\s\S]*?<\/div>/, ''); if (preferLangCode && preferLang[preferLangCode]) { try { //strip off all definitions before tagret lang. var subSect = html.match(subSectRegex)[0]; if (subSect.match(/<ol>[\s\S]*?<li>/)) { //if it has content def = subSect; }  } catch (e) { /*alert(e)*/} }

var lang = def.match(extractCurLangName)[1]; var intro = "(" + lang + ") "; if (showWord) intro = '<a href="' + pageURL + '" id="wordThisIsFor" class="wtif' + showWord + '" >' + escWord + "</a> " + intro ;

var definitions_matched; //FIXME: in both cases the extraction method does not properly strip nested divs. This results in image thumbnails being left behind //FIXME: multiple definition is a mess. if (numbDfn === 1) { definitions_matched = def.match(/<ol>[\s\S]*?<\/ol>/)[0].replace(/<dl>[\s\S]*?<\/dl>/g, ).replace(/<div[^>]*>[\s\S]*?<\/div>/g, ).replace(/<\/div>/g, ).replace(/<ul>[\s\S]*?<\/ul>/g, ).replace(/<a href="(#[^"]*)">/g, '<a href="' + pageURL + '$1">').match(/<li>([\s\S]*?)<\/li>/)[1].replace(/\s?◆[\s\S]*$/, ""); display.innerHTML = intro +  definitions_matched;  } else {   //this use not well supported...   definitions_matched = def.match(/<ol>[\s\S]*?<\/ol>/)[0].replace(/<dl>[\s\S]*?<\/dl>/g, ).replace(/<div[^>]*>[\s\S]*?<\/div>/g, ).replace(/<\/div>/g, ).replace(/<ul>[\s\S]*?<\/ul>/g, ).replace(/<a href="(#[^"]*)">/g, '<a href="' + pageURL + '$1">').match(/<li>([\s\S]*?)<\/li>/g); var tmp = intro + '<ul>'; for (var i = 0; i < numbDfn && i < definitions_matched.length; i++) { tmp += definitions_matched[i].replace(/\s?◆[\s\S]*$/, ""); }  display.innerHTML = tmp + '</ul>'; }

} catch (e) { //alert(e) //page does not exist, not well formed, these regexs suck, etc //note: it is ok to use non-escaped loc, as text node takes care of escaping... display.appendChild(document.createTextNode(not_found.replace("$1", decodeURIComponent(loc)))); document.getElementById('more-link').firstChild.data = createLink; if (rd < 9) { //arbitrary to prevent infinite loops //make sure don't have loops. var newLoc; //this should not be urlEncoded. var remAlt = false; var dLoc = decodeURIComponent(loc);

newLoc = dLoc.charAt(0).toLowerCase + dLoc.substring(1, loc.length); //try some other redirections.

if (newLoc === dLoc) newLoc = dLoc.toLowerCase; if (newLoc === dLoc && location.search.match(/\&alt\=([^&]*)/)) { newLoc = decodeURIComponent(location.search.match(/\&alt\=([^&]*)/)[1]); remAlt = true; }  if (newLoc !== dLoc) { //redir var newURL = location.href.replace(/(^[\s\S]*?\&page\=)[^&]*([\s\S]*$)/, '$1'+ encodeURIComponent(newLoc) + '$2'); newURL = newURL.replace(/&rd\=[^&]*/, ''); //strip old redirect header. if (remAlt) { location.href.replace(/&alt\=[^&]*/, ''); }   location = newURL + '&rd=' + rd; } } } var sa = html.match(extractSeeAlso); if(sa) { document.getElementById('see-also').innerHTML = ' (' + see_also_process(sa) + ')' ; } document.getElementById('more-link').href= pageURL; }

/*]]>*/ <body onload='setup'> <xsl:apply-templates select='api/error'/> <a id='more-link'><xsl:value-of select="$more"/></a> <small id="copyright-notice"> <xsl:copy-of select="$copyright"/> <xsl:value-of select='api/parse/text'/>

</xsl:template> <xsl:template match='api/error'> <xsl:value-of select="$error"/> <xsl:value-of select='@info'/> </xsl:template>

</xsl:stylesheet>