MediaWiki:SearchTranslation.js
Jump to navigation
Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
Documentation for this user script can be added at MediaWiki:SearchTranslation. |
- Report page listing warnings and errors.
$(document).ready(function(){
if ( mw.config.get('wgPageName') != "Special:Search" ) return ;
if(typeof $ == 'undefined' && typeof jQuery == 'function'){ $ = jQuery; }
// Auto-detect language by words
var lang = new Array ( "ar","bg","ca","zh","hr","cs","da","nl","tl","fi","fr","de","el","hi","id","it","ja","ko","lv","lt","no","pl","pt","ro","ru","sr","sk","sl","es","sv","uk","vi" ) ;
// var lang = new Array ( "de","fr","es" ) ;
var query = $('#powerSearchText').val() ;
if ( query == "" ) return ;
var words = query.split(" ") ;
words.push ( query ) ;
var title_string = words.join ( "|" ) ;
var found_pages = new Array () ;
var found_lang = 0 ;
$.each ( lang , function (i,l) {
var url = "https://"+l+".wikipedia.org/w/api.php?action=query&rawcontinue=&prop=info&format=json&titles=" + escape(title_string) + "&callback=?" ;
$.getJSON ( url , function (json) {
found_pages[l] = 0 ;
$.each(json.query.pages,function (j,p) {
if ( parseInt(j) <= 0 ) return ;
found_pages[l]++ ;
} ) ;
found_lang++ ;
if ( found_lang == lang.length ) check_results () ;
} ) ;
} ) ;
function check_results () {
var best_lang = '?' ;
var best_cnt = 0 ;
for ( var l in found_pages ) {
var cnt = found_pages[l] ;
if ( best_cnt > cnt ) continue ;
best_lang = l ;
best_cnt = cnt ;
}
if ( best_cnt == 0 ) return ; // No possible language found
var url = "http://toolserver.org/~nikola/mis.php?uselang="+best_lang+"&search="+escape(query) ;
$('#mw-search-top-table').append ( "<a href=\""+url+"\">Search " + best_lang + " → en" ) ;
}
});