Monchoman45

Langscan

Apr 19th, 2016
39,456
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. window.Langscan = {
  2.     buffer: true,
  3.     threads: 10,
  4.     running: 0,
  5.     queue: [],
  6.  
  7.     domain: window.location.host,
  8.  
  9.     style: {
  10.         checking: {},
  11.         failed: {
  12.             background: '#a00',
  13.             color: '#fff',
  14.         },
  15.         found: {
  16.             background: '#13a',
  17.             color: '#fff',
  18.         },
  19.         connected: {
  20.             background: '#0c0',
  21.             color: '#fff',
  22.         },
  23.     },
  24.     text: {
  25.         unknown: '',
  26.         checking: 'Checking...',
  27.         failed: 'Does not exist',
  28.         found: 'Exists but is not connected',
  29.         connected: 'Exists & Connected',
  30.     },
  31.  
  32.     /* pulled from http://wlb.wikia.com/wiki/Portal:Main/language_names
  33.     var str = '';
  34.     for(var i = 1; i < trs.length; i++) {
  35.         lang = trs[i].children[0].textContent;
  36.         lang = lang.substring(lang.indexOf('-') + 1, lang.length - 3);
  37.         text = trs[i].children[2].textContent.trim();
  38.         for(var i = text.indexOf('\''); i != -1; i = text.indexOf('\'', i + 2)) {text = text.substring(0, i) + '\\\'' + text.substring(i + 1);}
  39.         str += '\t\t\'' + lang + '\': {lang: \'' + lang + '\', text: \'' + text + '\', status: \'unknown\'},\n';
  40.     }
  41.     str;
  42.     */
  43.     langs: {
  44.         'aa': {lang: 'aa', text: 'Afar', status: 'unknown'},
  45.         'ab': {lang: 'ab', text: 'Abkhaz', status: 'unknown'},
  46.         'ace': {lang: 'ace', text: 'Acehnese', status: 'unknown'},
  47.         'af': {lang: 'af', text: 'Afrikaans', status: 'unknown'},
  48.         'ak': {lang: 'ak', text: 'Akan', status: 'unknown'},
  49.         'aln': {lang: 'aln', text: 'Gheg', status: 'unknown'},
  50.         'als': {lang: 'als', text: 'Tosk Albanian', status: 'unknown'},
  51.         'am': {lang: 'am', text: 'Amharic', status: 'unknown'},
  52.         'an': {lang: 'an', text: 'Aragonese', status: 'unknown'},
  53.         'ang': {lang: 'ang', text: 'Old English', status: 'unknown'},
  54.         'anp': {lang: 'anp', text: 'Angika', status: 'unknown'},
  55.         'ar': {lang: 'ar', text: 'Arabic', status: 'unknown'},
  56.         'arc': {lang: 'arc', text: 'Aramaic', status: 'unknown'},
  57.         'arn': {lang: 'arn', text: 'Mapudungün', status: 'unknown'},
  58.         'ary': {lang: 'ary', text: 'Moroccan Arabic', status: 'unknown'},
  59.         'arz': {lang: 'arz', text: 'Egyptian Arabic', status: 'unknown'},
  60.         'as': {lang: 'as', text: 'Assamese', status: 'unknown'},
  61.         'ast': {lang: 'ast', text: 'Asturian', status: 'unknown'},
  62.         'av': {lang: 'av', text: 'Avar', status: 'unknown'},
  63.         'avk': {lang: 'avk', text: 'Kotava', status: 'unknown'},
  64.         'ay': {lang: 'ay', text: 'Aymara', status: 'unknown'},
  65.         'az': {lang: 'az', text: 'Azerbaijani', status: 'unknown'},
  66.         'ba': {lang: 'ba', text: 'Bashkir', status: 'unknown'},
  67.         'bal': {lang: 'bal', text: 'Balochi', status: 'unknown'},
  68.         'bar': {lang: 'bar', text: 'Bavarian', status: 'unknown'},
  69.         'bat-smg': {lang: 'bat-smg', text: 'Samogitian', status: 'unknown'},
  70.         'bcc': {lang: 'bcc', text: 'Southern Balochi', status: 'unknown'},
  71.         'bcl': {lang: 'bcl', text: 'Central Bikol', status: 'unknown'},
  72.         'be': {lang: 'be', text: 'Belarusian', status: 'unknown'},
  73.         'be-tarask': {lang: 'be-tarask', text: 'Belarusian (Trasianka)', status: 'unknown'},
  74.         'be-x-old': {lang: 'be-x-old', text: 'Belarusian (Trasianka)', status: 'unknown'},
  75.         'bg': {lang: 'bg', text: 'Bulgarian', status: 'unknown'},
  76.         'bh': {lang: 'bh', text: 'Bihari', status: 'unknown'},
  77.         'bho': {lang: 'bho', text: 'Bhojpuri', status: 'unknown'},
  78.         'bi': {lang: 'bi', text: 'Bislama', status: 'unknown'},
  79.         'bjm': {lang: 'bjm', text: 'Bajelani', status: 'unknown'},
  80.         'bjn': {lang: 'bjn', text: 'Banjar', status: 'unknown'},
  81.         'bm': {lang: 'bm', text: 'Bambara', status: 'unknown'},
  82.         'bn': {lang: 'bn', text: 'Bengali', status: 'unknown'},
  83.         'bo': {lang: 'bo', text: 'Tibetan', status: 'unknown'},
  84.         'bpy': {lang: 'bpy', text: 'Bishnupriya Manipuri', status: 'unknown'},
  85.         'bqi': {lang: 'bqi', text: 'Bakhtiari', status: 'unknown'},
  86.         'br': {lang: 'br', text: 'Breton', status: 'unknown'},
  87.         'brh': {lang: 'brh', text: 'Brahui', status: 'unknown'},
  88.         'bs': {lang: 'bs', text: 'Bosnian', status: 'unknown'},
  89.         'bug': {lang: 'bug', text: 'Buginese', status: 'unknown'},
  90.         'bxr': {lang: 'bxr', text: 'Buryat', status: 'unknown'},
  91.         'ca': {lang: 'ca', text: 'Catalan', status: 'unknown'},
  92.         'cbk': {lang: 'cbk', text: 'Chavacano', status: 'unknown'},
  93.         'cbk-zam': {lang: 'cbk-zam', text: 'Chavacano (Zamboanga)', status: 'unknown'},
  94.         'cdo': {lang: 'cdo', text: 'Eastern Min', status: 'unknown'},
  95.         'ce': {lang: 'ce', text: 'Chechen', status: 'unknown'},
  96.         'ceb': {lang: 'ceb', text: 'Cebuano', status: 'unknown'},
  97.         'ch': {lang: 'ch', text: 'Chamorro', status: 'unknown'},
  98.         'cho': {lang: 'cho', text: 'Choctaw', status: 'unknown'},
  99.         'chr': {lang: 'chr', text: 'Cherokee', status: 'unknown'},
  100.         'chy': {lang: 'chy', text: 'Cheyenne', status: 'unknown'},
  101.         'ckb': {lang: 'ckb', text: 'Central Kurdish', status: 'unknown'},
  102.         'cmn': {lang: 'cmn', text: 'Mandarin', status: 'unknown'},
  103.         'co': {lang: 'co', text: 'Corsican', status: 'unknown'},
  104.         'cps': {lang: 'cps', text: 'Capiznon', status: 'unknown'},
  105.         'cr': {lang: 'cr', text: 'Cree', status: 'unknown'},
  106.         'crh': {lang: 'crh', text: 'Crimean Tatar', status: 'unknown'},
  107.         'crh-cyrl': {lang: 'crh-cyrl', text: 'Crimean Tatar (Cyrillic)', status: 'unknown'},
  108.         'crh-latn': {lang: 'crh-latn', text: 'Crimean Tatar (Latin)', status: 'unknown'},
  109.         'cs': {lang: 'cs', text: 'Czech', status: 'unknown'},
  110.         'csb': {lang: 'csb', text: 'Kashubian', status: 'unknown'},
  111.         'cu': {lang: 'cu', text: 'Old Church Slavonic', status: 'unknown'},
  112.         'cv': {lang: 'cv', text: 'Chuvash', status: 'unknown'},
  113.         'cy': {lang: 'cy', text: 'Welsh', status: 'unknown'},
  114.         'da': {lang: 'da', text: 'Danish', status: 'unknown'},
  115.         'de': {lang: 'de', text: 'German', status: 'unknown'},
  116.         'diq': {lang: 'diq', text: 'Dimli', status: 'unknown'},
  117.         'dsb': {lang: 'dsb', text: 'Lower Sorbian', status: 'unknown'},
  118.         'dtp': {lang: 'dtp', text: 'Kadazan Dusun', status: 'unknown'},
  119.         'dv': {lang: 'dv', text: 'Dhivehi', status: 'unknown'},
  120.         'dz': {lang: 'dz', text: 'Dzongkha', status: 'unknown'},
  121.         'ee': {lang: 'ee', text: 'Ewe', status: 'unknown'},
  122.         'el': {lang: 'el', text: 'Greek', status: 'unknown'},
  123.         'eml': {lang: 'eml', text: 'Emilian-Romagnol', status: 'unknown'},
  124.         'en': {lang: 'en', text: 'English', status: 'unknown'},
  125.         'en-au': {lang: 'en-au', text: 'Australian English', status: 'unknown'},
  126.         'en-ca': {lang: 'en-ca', text: 'Canadian English', status: 'unknown'},
  127.         'en-gb': {lang: 'en-gb', text: 'British English', status: 'unknown'},
  128.         'en-us': {lang: 'en-us', text: 'American English', status: 'unknown'},
  129.         'eo': {lang: 'eo', text: 'Esperanto', status: 'unknown'},
  130.         'es': {lang: 'es', text: 'Spanish', status: 'unknown'},
  131.         'es-la': {lang: 'es-la', text: 'Spanish (Latin America)', status: 'unknown'},
  132.         'et': {lang: 'et', text: 'Estonian', status: 'unknown'},
  133.         'eu': {lang: 'eu', text: 'Basque', status: 'unknown'},
  134.         'ext': {lang: 'ext', text: 'Extremaduran', status: 'unknown'},
  135.         'fa': {lang: 'fa', text: 'Persian', status: 'unknown'},
  136.         'ff': {lang: 'ff', text: 'Fula', status: 'unknown'},
  137.         'fi': {lang: 'fi', text: 'Finnish', status: 'unknown'},
  138.         'fiu-vro': {lang: 'fiu-vro', text: 'Võro', status: 'unknown'},
  139.         'fj': {lang: 'fj', text: 'Fijian', status: 'unknown'},
  140.         'fo': {lang: 'fo', text: 'Faroese', status: 'unknown'},
  141.         'fr': {lang: 'fr', text: 'French', status: 'unknown'},
  142.         'fr-ca': {lang: 'fr-ca', text: 'Canadian French', status: 'unknown'},
  143.         'frp': {lang: 'frp', text: 'Franco-Provençal', status: 'unknown'},
  144.         'frr': {lang: 'frr', text: 'North Frisian', status: 'unknown'},
  145.         'fur': {lang: 'fur', text: 'Friulian', status: 'unknown'},
  146.         'fy': {lang: 'fy', text: 'Frisian', status: 'unknown'},
  147.         'ga': {lang: 'ga', text: 'Irish', status: 'unknown'},
  148.         'gag': {lang: 'gag', text: 'Gagauz', status: 'unknown'},
  149.         'gan': {lang: 'gan', text: 'Gan', status: 'unknown'},
  150.         'gan-hans': {lang: 'gan-hans', text: 'Gan (Simplified)', status: 'unknown'},
  151.         'gan-hant': {lang: 'gan-hant', text: 'Gan (Traditional)', status: 'unknown'},
  152.         'gd': {lang: 'gd', text: 'Scottish Gaelic', status: 'unknown'},
  153.         'gl': {lang: 'gl', text: 'Galician', status: 'unknown'},
  154.         'glk': {lang: 'glk', text: 'Gilaki', status: 'unknown'},
  155.         'gn': {lang: 'gn', text: 'Guarani', status: 'unknown'},
  156.         'got': {lang: 'got', text: 'Gothic', status: 'unknown'},
  157.         'grc': {lang: 'grc', text: 'Ancient Greek', status: 'unknown'},
  158.         'gsw': {lang: 'gsw', text: 'Alemannic German', status: 'unknown'},
  159.         'gu': {lang: 'gu', text: 'Gujarati', status: 'unknown'},
  160.         'gv': {lang: 'gv', text: 'Manx', status: 'unknown'},
  161.         'ha': {lang: 'ha', text: 'Hausa', status: 'unknown'},
  162.         'hak': {lang: 'hak', text: 'Hakka', status: 'unknown'},
  163.         'haw': {lang: 'haw', text: 'Hawaiian', status: 'unknown'},
  164.         'he': {lang: 'he', text: 'Hebrew', status: 'unknown'},
  165.         'hes': {lang: 'hes', text: 'Hessian', status: 'unknown'},
  166.         'hi': {lang: 'hi', text: 'Hindi', status: 'unknown'},
  167.         'hif': {lang: 'hif', text: 'Fiji Hindi', status: 'unknown'},
  168.         'hif-latn': {lang: 'hif-latn', text: 'Fiji Hindi (Latin)', status: 'unknown'},
  169.         'hil': {lang: 'hil', text: 'Hiligaynon', status: 'unknown'},
  170.         'ho': {lang: 'ho', text: 'Hiri Motu', status: 'unknown'},
  171.         'hr': {lang: 'hr', text: 'Croatian', status: 'unknown'},
  172.         'hsb': {lang: 'hsb', text: 'Upper Sorbian', status: 'unknown'},
  173.         'ht': {lang: 'ht', text: 'Haitian Creole', status: 'unknown'},
  174.         'hu': {lang: 'hu', text: 'Hungarian', status: 'unknown'},
  175.         'hy': {lang: 'hy', text: 'Armenian', status: 'unknown'},
  176.         'hz': {lang: 'hz', text: 'Herero', status: 'unknown'},
  177.         'ia': {lang: 'ia', text: 'Interlingua', status: 'unknown'},
  178.         'id': {lang: 'id', text: 'Indonesian', status: 'unknown'},
  179.         'ie': {lang: 'ie', text: 'Occidental', status: 'unknown'},
  180.         'ig': {lang: 'ig', text: 'Igbo', status: 'unknown'},
  181.         'ii': {lang: 'ii', text: 'Nuosu', status: 'unknown'},
  182.         'ik': {lang: 'ik', text: 'Inupiat', status: 'unknown'},
  183.         'ike-cans': {lang: 'ike-cans', text: 'Inuktitut (Inuktitut syllabics)', status: 'unknown'},
  184.         'ike-latn': {lang: 'ike-latn', text: 'Inuktitut (Latin)', status: 'unknown'},
  185.         'ilo': {lang: 'ilo', text: 'Ilocano', status: 'unknown'},
  186.         'inh': {lang: 'inh', text: 'Ingush', status: 'unknown'},
  187.         'io': {lang: 'io', text: 'Ido', status: 'unknown'},
  188.         'is': {lang: 'is', text: 'Icelandic', status: 'unknown'},
  189.         'it': {lang: 'it', text: 'Italian', status: 'unknown'},
  190.         'iu': {lang: 'iu', text: 'Inuktitut', status: 'unknown'},
  191.         'ja': {lang: 'ja', text: 'Japanese', status: 'unknown'},
  192.         'jam': {lang: 'jam', text: 'Jamaican Patois', status: 'unknown'},
  193.         'jbo': {lang: 'jbo', text: 'Lojban', status: 'unknown'},
  194.         'jut': {lang: 'jut', text: 'Jutlandic', status: 'unknown'},
  195.         'jv': {lang: 'jv', text: 'Javanese', status: 'unknown'},
  196.         'ka': {lang: 'ka', text: 'Georgian', status: 'unknown'},
  197.         'kaa': {lang: 'kaa', text: 'Karakalpak', status: 'unknown'},
  198.         'kab': {lang: 'kab', text: 'Kabyle', status: 'unknown'},
  199.         'kbd': {lang: 'kbd', text: 'Kabardian', status: 'unknown'},
  200.         'kbd-cyrl': {lang: 'kbd-cyrl', text: 'Kabardian (Cyrillic)', status: 'unknown'},
  201.         'kca': {lang: 'kca', text: 'Khanty', status: 'unknown'},
  202.         'kg': {lang: 'kg', text: 'Kongo', status: 'unknown'},
  203.         'khw': {lang: 'khw', text: 'Khowar', status: 'unknown'},
  204.         'ki': {lang: 'ki', text: 'Kikuyu', status: 'unknown'},
  205.         'kiu': {lang: 'kiu', text: 'Kirmanjki', status: 'unknown'},
  206.         'kj': {lang: 'kj', text: 'Kwanyama', status: 'unknown'},
  207.         'kk': {lang: 'kk', text: 'Kazakh', status: 'unknown'},
  208.         'kk-arab': {lang: 'kk-arab', text: 'Kazakh (Arabic)', status: 'unknown'},
  209.         'kk-cn': {lang: 'kk-cn', text: 'Kazakh (People\'s Republic of China)', status: 'unknown'},
  210.         'kk-cyrl': {lang: 'kk-cyrl', text: 'Kazakh (Cyrillic)', status: 'unknown'},
  211.         'kk-kz': {lang: 'kk-kz', text: 'Kazakh (Kazakhstan)', status: 'unknown'},
  212.         'kk-latn': {lang: 'kk-latn', text: 'Kazakh (Latin)', status: 'unknown'},
  213.         'kk-tr': {lang: 'kk-tr', text: 'Kazakh (Turkish)', status: 'unknown'},
  214.         'kl': {lang: 'kl', text: 'Greenlandic', status: 'unknown'},
  215.         'km': {lang: 'km', text: 'Khmer', status: 'unknown'},
  216.         'kn': {lang: 'kn', text: 'Kannada', status: 'unknown'},
  217.         'ko': {lang: 'ko', text: 'Korean', status: 'unknown'},
  218.         'koi': {lang: 'koi', text: 'Komi-Permyak', status: 'unknown'},
  219.         'ko-kp': {lang: 'ko-kp', text: 'Korean (North Korea)', status: 'unknown'},
  220.         'kr': {lang: 'kr', text: 'Kanuri', status: 'unknown'},
  221.         'krc': {lang: 'krc', text: 'Karachay-Balkar', status: 'unknown'},
  222.         'kri': {lang: 'kri', text: 'Krio', status: 'unknown'},
  223.         'krj': {lang: 'krj', text: 'Karay-a', status: 'unknown'},
  224.         'ks': {lang: 'ks', text: 'Kashmiri', status: 'unknown'},
  225.         'ks-arab': {lang: 'ks-arab', text: 'Kashmiri (Arabic)', status: 'unknown'},
  226.         'ks-deva': {lang: 'ks-deva', text: 'Kashmiri (Devanagari)', status: 'unknown'},
  227.         'ksh': {lang: 'ksh', text: 'Ripuarian', status: 'unknown'},
  228.         'ku': {lang: 'ku', text: 'Kurdish', status: 'unknown'},
  229.         'ku-arab': {lang: 'ku-arab', text: 'Kurdish (Arabic)', status: 'unknown'},
  230.         'ku-latn': {lang: 'ku-latn', text: 'Kurdish (Latin)', status: 'unknown'},
  231.         'kv': {lang: 'kv', text: 'Komi', status: 'unknown'},
  232.         'kw': {lang: 'kw', text: 'Cornish', status: 'unknown'},
  233.         'ky': {lang: 'ky', text: 'Kyrgyz', status: 'unknown'},
  234.         'la': {lang: 'la', text: 'Latin', status: 'unknown'},
  235.         'lad': {lang: 'lad', text: 'Judaeo-Spanish', status: 'unknown'},
  236.         'lb': {lang: 'lb', text: 'Luxembourgish', status: 'unknown'},
  237.         'lbe': {lang: 'lbe', text: 'Lak', status: 'unknown'},
  238.         'lez': {lang: 'lez', text: 'Lezgian', status: 'unknown'},
  239.         'lfn': {lang: 'lfn', text: 'Lingua Franca Nova', status: 'unknown'},
  240.         'lg': {lang: 'lg', text: 'Luganda', status: 'unknown'},
  241.         'li': {lang: 'li', text: 'Limburgish', status: 'unknown'},
  242.         'lij': {lang: 'lij', text: 'Ligurian', status: 'unknown'},
  243.         'liv': {lang: 'liv', text: 'Livonian', status: 'unknown'},
  244.         'lmo': {lang: 'lmo', text: 'Lombard', status: 'unknown'},
  245.         'ln': {lang: 'ln', text: 'Lingala', status: 'unknown'},
  246.         'lo': {lang: 'lo', text: 'Lao', status: 'unknown'},
  247.         'loz': {lang: 'loz', text: 'Lozi', status: 'unknown'},
  248.         'lt': {lang: 'lt', text: 'Lithuanian', status: 'unknown'},
  249.         'ltg': {lang: 'ltg', text: 'Latgalian', status: 'unknown'},
  250.         'lv': {lang: 'lv', text: 'Latvian', status: 'unknown'},
  251.         'lzh': {lang: 'lzh', text: 'Classical Chinese', status: 'unknown'},
  252.         'lzz': {lang: 'lzz', text: 'Laz', status: 'unknown'},
  253.         'mai': {lang: 'mai', text: 'Maithili', status: 'unknown'},
  254.         'map-bms': {lang: 'map-bms', text: 'Banyumasan', status: 'unknown'},
  255.         'mdf': {lang: 'mdf', text: 'Moksha', status: 'unknown'},
  256.         'mg': {lang: 'mg', text: 'Malagasy', status: 'unknown'},
  257.         'mh': {lang: 'mh', text: 'Marshallese', status: 'unknown'},
  258.         'mhr': {lang: 'mhr', text: 'Meadow Mari', status: 'unknown'},
  259.         'mi': {lang: 'mi', text: 'Māori', status: 'unknown'},
  260.         'min': {lang: 'min', text: 'Minangkabau', status: 'unknown'},
  261.         'mk': {lang: 'mk', text: 'Macedonian', status: 'unknown'},
  262.         'ml': {lang: 'ml', text: 'Malayalam', status: 'unknown'},
  263.         'mn': {lang: 'mn', text: 'Mongolian', status: 'unknown'},
  264.         'mns': {lang: 'mns', text: 'Mansi', status: 'unknown'},
  265.         'mo': {lang: 'mo', text: 'Moldovan', status: 'unknown'},
  266.         'mr': {lang: 'mr', text: 'Marathi', status: 'unknown'},
  267.         'mrj': {lang: 'mrj', text: 'Hill Mari', status: 'unknown'},
  268.         'ms': {lang: 'ms', text: 'Malay', status: 'unknown'},
  269.         'mt': {lang: 'mt', text: 'Maltese', status: 'unknown'},
  270.         'mus': {lang: 'mus', text: 'Muscogee', status: 'unknown'},
  271.         'mwl': {lang: 'mwl', text: 'Mirandese', status: 'unknown'},
  272.         'my': {lang: 'my', text: 'Burmese', status: 'unknown'},
  273.         'myv': {lang: 'myv', text: 'Erzya', status: 'unknown'},
  274.         'mzn': {lang: 'mzn', text: 'Mazanderani', status: 'unknown'},
  275.         'na': {lang: 'na', text: 'Nauruan', status: 'unknown'},
  276.         'nb': {lang: 'nb', text: 'Bokmål', status: 'unknown'},
  277.         'nah': {lang: 'nah', text: 'Nahuatl', status: 'unknown'},
  278.         'nan': {lang: 'nan', text: 'Southern Min', status: 'unknown'},
  279.         'nap': {lang: 'nap', text: 'Neapolitan', status: 'unknown'},
  280.         'nds': {lang: 'nds', text: 'Low German', status: 'unknown'},
  281.         'nds-nl': {lang: 'nds-nl', text: 'Dutch Low Saxon', status: 'unknown'},
  282.         'ne': {lang: 'ne', text: 'Nepali', status: 'unknown'},
  283.         'new': {lang: 'new', text: 'Newar', status: 'unknown'},
  284.         'ng': {lang: 'ng', text: 'Ndonga', status: 'unknown'},
  285.         'nio': {lang: 'nio', text: 'Nganasan', status: 'unknown'},
  286.         'niu': {lang: 'niu', text: 'Niuean', status: 'unknown'},
  287.         'nl': {lang: 'nl', text: 'Dutch', status: 'unknown'},
  288.         'nl-informal': {lang: 'nl-informal', text: 'Dutch (informal)', status: 'unknown'},
  289.         'nn': {lang: 'nn', text: 'Nynorsk', status: 'unknown'},
  290.         'no': {lang: 'no', text: 'Norwegian', status: 'unknown'},
  291.         'non': {lang: 'non', text: 'Old Norse', status: 'unknown'},
  292.         'nov': {lang: 'nov', text: 'Novial', status: 'unknown'},
  293.         'nrm': {lang: 'nrm', text: 'Narom', status: 'unknown'},
  294.         'nso': {lang: 'nso', text: 'Northern Sotho', status: 'unknown'},
  295.         'nv': {lang: 'nv', text: 'Navajo', status: 'unknown'},
  296.         'ny': {lang: 'ny', text: 'Chewa', status: 'unknown'},
  297.         'oc': {lang: 'oc', text: 'Occitan', status: 'unknown'},
  298.         'om': {lang: 'om', text: 'Oromo', status: 'unknown'},
  299.         'or': {lang: 'or', text: 'Odia', status: 'unknown'},
  300.         'os': {lang: 'os', text: 'Ossetian', status: 'unknown'},
  301.         'pa': {lang: 'pa', text: 'Punjabi', status: 'unknown'},
  302.         'pag': {lang: 'pag', text: 'Pangasinan', status: 'unknown'},
  303.         'pam': {lang: 'pam', text: 'Kapampangan', status: 'unknown'},
  304.         'pap': {lang: 'pap', text: 'Papiamento', status: 'unknown'},
  305.         'pcd': {lang: 'pcd', text: 'Picard', status: 'unknown'},
  306.         'pdc': {lang: 'pdc', text: 'Pennsylvania German', status: 'unknown'},
  307.         'pdt': {lang: 'pdt', text: 'Plautdietsch', status: 'unknown'},
  308.         'pfl': {lang: 'pfl', text: 'Palatine German', status: 'unknown'},
  309.         'pi': {lang: 'pi', text: 'Pali', status: 'unknown'},
  310.         'pih': {lang: 'pih', text: 'Pitcairnese', status: 'unknown'},
  311.         'pl': {lang: 'pl', text: 'Polish', status: 'unknown'},
  312.         'pms': {lang: 'pms', text: 'Piedmontese', status: 'unknown'},
  313.         'pnb': {lang: 'pnb', text: 'Punjabi', status: 'unknown'},
  314.         'pnt': {lang: 'pnt', text: 'Pontic Greek', status: 'unknown'},
  315.         'prg': {lang: 'prg', text: 'Old Prussian', status: 'unknown'},
  316.         'ps': {lang: 'ps', text: 'Pashto', status: 'unknown'},
  317.         'pt': {lang: 'pt', text: 'Portuguese', status: 'unknown'},
  318.         'pt-br': {lang: 'pt-br', text: 'Brazilian Portuguese', status: 'unknown'},
  319.         'pt-pt': {lang: 'pt-pt', text: 'European Portuguese', status: 'unknown'},
  320.         'qu': {lang: 'qu', text: 'Quechua', status: 'unknown'},
  321.         'qug': {lang: 'qug', text: 'Kichwa', status: 'unknown'},
  322.         'rgn': {lang: 'rgn', text: 'Romagnolo', status: 'unknown'},
  323.         'rif': {lang: 'rif', text: 'Riffian', status: 'unknown'},
  324.         'rm': {lang: 'rm', text: 'Romansh', status: 'unknown'},
  325.         'rmy': {lang: 'rmy', text: 'Vlax Romani', status: 'unknown'},
  326.         'rn': {lang: 'rn', text: 'Kirundi', status: 'unknown'},
  327.         'ro': {lang: 'ro', text: 'Romanian', status: 'unknown'},
  328.         'roa-rup': {lang: 'roa-rup', text: 'Aromanian', status: 'unknown'},
  329.         'roa-tara': {lang: 'roa-tara', text: 'Tarantino', status: 'unknown'},
  330.         'rot': {lang: 'rot', text: 'Rothons', status: 'unknown'},
  331.         'ru': {lang: 'ru', text: 'Russian', status: 'unknown'},
  332.         'rue': {lang: 'rue', text: 'Rusyn', status: 'unknown'},
  333.         'rup': {lang: 'rup', text: 'Aromanian', status: 'unknown'},
  334.         'ruq': {lang: 'ruq', text: 'Megleno-Romanian', status: 'unknown'},
  335.         'ruq-cyrl': {lang: 'ruq-cyrl', text: 'Megleno-Romanian (Cyrillic)', status: 'unknown'},
  336.         'ruq-latn': {lang: 'ruq-latn', text: 'Megleno-Romanian (Latin)', status: 'unknown'},
  337.         'rw': {lang: 'rw', text: 'Kinyarwanda', status: 'unknown'},
  338.         'sa': {lang: 'sa', text: 'Sanskrit', status: 'unknown'},
  339.         'sah': {lang: 'sah', text: 'Yakut', status: 'unknown'},
  340.         'sc': {lang: 'sc', text: 'Sardinian', status: 'unknown'},
  341.         'scn': {lang: 'scn', text: 'Sicilian', status: 'unknown'},
  342.         'sco': {lang: 'sco', text: 'Scots', status: 'unknown'},
  343.         'sd': {lang: 'sd', text: 'Sindhi', status: 'unknown'},
  344.         'sdc': {lang: 'sdc', text: 'Sassarese', status: 'unknown'},
  345.         'se': {lang: 'se', text: 'Northern Sami', status: 'unknown'},
  346.         'sei': {lang: 'sei', text: 'Seri', status: 'unknown'},
  347.         'sg': {lang: 'sg', text: 'Sango', status: 'unknown'},
  348.         'sgs': {lang: 'sgs', text: 'Samogitian', status: 'unknown'},
  349.         'sh': {lang: 'sh', text: 'Serbo-Croatian', status: 'unknown'},
  350.         'shi': {lang: 'shi', text: 'Shilha', status: 'unknown'},
  351.         'shi-latn': {lang: 'shi-latn', text: 'Shilha (Latin)', status: 'unknown'},
  352.         'shi-tfng': {lang: 'shi-tfng', text: 'Shilha (Tifinagh)', status: 'unknown'},
  353.         'si': {lang: 'si', text: 'Sinhalese', status: 'unknown'},
  354.         'sk': {lang: 'sk', text: 'Slovak', status: 'unknown'},
  355.         'sl': {lang: 'sl', text: 'Slovene', status: 'unknown'},
  356.         'sli': {lang: 'sli', text: 'Lower Silesian / German Silesian', status: 'unknown'},
  357.         'sm': {lang: 'sm', text: 'Samoan', status: 'unknown'},
  358.         'sma': {lang: 'sma', text: 'Southern Sami', status: 'unknown'},
  359.         'sn': {lang: 'sn', text: 'Shona', status: 'unknown'},
  360.         'so': {lang: 'so', text: 'Somali', status: 'unknown'},
  361.         'sq': {lang: 'sq', text: 'Albanian', status: 'unknown'},
  362.         'sqi': {lang: 'sqi', text: 'Albanian', status: 'unknown'},
  363.         'sr': {lang: 'sr', text: 'Serbian', status: 'unknown'},
  364.         'sr-ec': {lang: 'sr-ec', text: 'Serbian (Cyrillic)', status: 'unknown'},
  365.         'sr-el': {lang: 'sr-el', text: 'Serbian (Latin)', status: 'unknown'},
  366.         'srn': {lang: 'srn', text: 'Sranan', status: 'unknown'},
  367.         'ss': {lang: 'ss', text: 'Swazi', status: 'unknown'},
  368.         'st': {lang: 'st', text: 'Sotho', status: 'unknown'},
  369.         'stq': {lang: 'stq', text: 'Saterland Frisian', status: 'unknown'},
  370.         'su': {lang: 'su', text: 'Sundanese', status: 'unknown'},
  371.         'sv': {lang: 'sv', text: 'Swedish', status: 'unknown'},
  372.         'sw': {lang: 'sw', text: 'Swahili', status: 'unknown'},
  373.         'szl': {lang: 'szl', text: 'Silesian', status: 'unknown'},
  374.         'ta': {lang: 'ta', text: 'Tamil', status: 'unknown'},
  375.         'tcy': {lang: 'tcy', text: 'Tulu', status: 'unknown'},
  376.         'te': {lang: 'te', text: 'Telugu', status: 'unknown'},
  377.         'tet': {lang: 'tet', text: 'Tetum', status: 'unknown'},
  378.         'tg': {lang: 'tg', text: 'Tajik', status: 'unknown'},
  379.         'tg-cyrl': {lang: 'tg-cyrl', text: 'Tajik (Cyrillic)', status: 'unknown'},
  380.         'tg-latn': {lang: 'tg-latn', text: 'Tajik (Latin)', status: 'unknown'},
  381.         'th': {lang: 'th', text: 'Thai', status: 'unknown'},
  382.         'ti': {lang: 'ti', text: 'Tigrinya', status: 'unknown'},
  383.         'tk': {lang: 'tk', text: 'Turkmen', status: 'unknown'},
  384.         'tl': {lang: 'tl', text: 'Tagalog', status: 'unknown'},
  385.         'tlh': {lang: 'tlh', text: 'Klingon', status: 'unknown'},
  386.         'tly': {lang: 'tly', text: 'Talysh', status: 'unknown'},
  387.         'tn': {lang: 'tn', text: 'Tswana', status: 'unknown'},
  388.         'to': {lang: 'to', text: 'Tongan', status: 'unknown'},
  389.         'tpi': {lang: 'tpi', text: 'Tok Pisin', status: 'unknown'},
  390.         'tr': {lang: 'tr', text: 'Turkish', status: 'unknown'},
  391.         'ts': {lang: 'ts', text: 'Tsonga', status: 'unknown'},
  392.         'tt': {lang: 'tt', text: 'Tatar', status: 'unknown'},
  393.         'tt-cyrl': {lang: 'tt-cyrl', text: 'Tatar (Cyrillic)', status: 'unknown'},
  394.         'tt-latn': {lang: 'tt-latn', text: 'Tatar (Latin)', status: 'unknown'},
  395.         'tum': {lang: 'tum', text: 'Tumbuka', status: 'unknown'},
  396.         'tw': {lang: 'tw', text: 'Twi', status: 'unknown'},
  397.         'ty': {lang: 'ty', text: 'Tahitian', status: 'unknown'},
  398.         'tyv': {lang: 'tyv', text: 'Tuvan', status: 'unknown'},
  399.         'udm': {lang: 'udm', text: 'Udmurt', status: 'unknown'},
  400.         'ug': {lang: 'ug', text: 'Uyghur', status: 'unknown'},
  401.         'ug-arab': {lang: 'ug-arab', text: 'Uyghur (Arabic)', status: 'unknown'},
  402.         'ug-latn': {lang: 'ug-latn', text: 'Uyghur (Latin)', status: 'unknown'},
  403.         'uk': {lang: 'uk', text: 'Ukrainian', status: 'unknown'},
  404.         'ur': {lang: 'ur', text: 'Urdu', status: 'unknown'},
  405.         'uz': {lang: 'uz', text: 'Uzbek', status: 'unknown'},
  406.         'val': {lang: 'val', text: 'Valencian', status: 'unknown'},
  407.         've': {lang: 've', text: 'Venda', status: 'unknown'},
  408.         'vec': {lang: 'vec', text: 'Venetian', status: 'unknown'},
  409.         'vep': {lang: 'vep', text: 'Veps', status: 'unknown'},
  410.         'vi': {lang: 'vi', text: 'Vietnamese', status: 'unknown'},
  411.         'vls': {lang: 'vls', text: 'West Flemish', status: 'unknown'},
  412.         'vmf': {lang: 'vmf', text: 'Main-Franconian', status: 'unknown'},
  413.         'vo': {lang: 'vo', text: 'Volapük', status: 'unknown'},
  414.         'vot': {lang: 'vot', text: 'Votic', status: 'unknown'},
  415.         'vro': {lang: 'vro', text: 'Võro', status: 'unknown'},
  416.         'wa': {lang: 'wa', text: 'Walloon', status: 'unknown'},
  417.         'war': {lang: 'war', text: 'Waray', status: 'unknown'},
  418.         'wo': {lang: 'wo', text: 'Wolof', status: 'unknown'},
  419.         'wuu': {lang: 'wuu', text: 'Wu', status: 'unknown'},
  420.         'xal': {lang: 'xal', text: 'Kalmyk', status: 'unknown'},
  421.         'xh': {lang: 'xh', text: 'Xhosa', status: 'unknown'},
  422.         'xlp': {lang: 'xlp', text: 'Lepontic', status: 'unknown'},
  423.         'xmf': {lang: 'xmf', text: 'Mingrelian', status: 'unknown'},
  424.         'yi': {lang: 'yi', text: 'Yiddish', status: 'unknown'},
  425.         'yo': {lang: 'yo', text: 'Yoruba', status: 'unknown'},
  426.         'yrk': {lang: 'yrk', text: 'Nenets / Yurak', status: 'unknown'},
  427.         'yue': {lang: 'yue', text: 'Cantonese', status: 'unknown'},
  428.         'za': {lang: 'za', text: 'Zhuang', status: 'unknown'},
  429.         'zea': {lang: 'zea', text: 'Zeelandic', status: 'unknown'},
  430.         'zh': {lang: 'zh', text: 'Chinese', status: 'unknown'},
  431.         'zh-cn': {lang: 'zh-cn', text: 'Chinese (People\'s Republic of China)', status: 'unknown'},
  432.         'zh-hans': {lang: 'zh-hans', text: 'Chinese (simplified)', status: 'unknown'},
  433.         'zh-hant': {lang: 'zh-hant', text: 'Chinese (traditional)', status: 'unknown'},
  434.         'zh-hk': {lang: 'zh-hk', text: 'Chinese (Hong Kong)', status: 'unknown'},
  435.         'zh-min-nan': {lang: 'zh-min-nan', text: 'Southern Min', status: 'unknown'},
  436.         'zh-mo': {lang: 'zh-mo', text: 'Chinese (Macau)', status: 'unknown'},
  437.         'zh-my': {lang: 'zh-my', text: 'Malaysian Chinese', status: 'unknown'},
  438.         'zh-sg': {lang: 'zh-sg', text: 'Singaporean Chinese', status: 'unknown'},
  439.         'zh-tw': {lang: 'zh-tw', text: 'Chinese (Taiwan)', status: 'unknown'},
  440.         'zh-yue': {lang: 'zh-yue', text: 'Cantonese', status: 'unknown'},
  441.         'zu': {lang: 'zu', text: 'Zulu', status: 'unknown'},
  442.         'zza': {lang: 'zza', text: 'Zaza', status: 'unknown'},
  443.     },
  444. };
  445. if(Langscan.langs[Langscan.domain.substring(0, Langscan.domain.indexOf('.'))]) {Langscan.domain = Langscan.domain.substring(Langscan.domain.indexOf('.') + 1);}
  446.  
  447. Langscan.onload = function() {
  448.     if(wgCanonicalNamespace == 'Special' && wgTitle == 'Langscan') {
  449.         document.title = 'Langscan - ' + wgSiteName;
  450.         if(window.skin == 'oasis') {
  451.             var body = 'WikiaArticle';
  452.             if(document.getElementById('WikiaPageHeader')) {
  453.                 document.getElementById('WikiaPageHeader').getElementsByTagName('h1')[0].innerHTML = 'Langscan';
  454.                 document.getElementById('WikiaPageHeader').getElementsByTagName('h2')[0].innerHTML = 'Scans langs';
  455.             }
  456.         }
  457.         else {
  458.             var body = 'bodyContent';
  459.             document.getElementById('firstHeading').innerHTML = 'Langscan';
  460.         }
  461.         while(document.getElementById(body).children.length > 0) {document.getElementById(body).removeChild(document.getElementById(body).firstChild);}
  462.         if(document.getElementById('AdminDashboardHeader')) {
  463.             var div = document.createElement('div');
  464.                 div.classList.add('AdminDashboardGeneralHeader');
  465.                 div.classList.add('AdminDashboardArticleHeader');
  466.                 var h1 = document.createElement('h1');
  467.                     h1.textContent = 'Langscan';
  468.                 div.appendChild(h1);
  469.             document.getElementById(body).appendChild(div);
  470.         }
  471.  
  472.         var div = document.createElement('div');
  473.             div.id = 'langscan-button';
  474.             var button = document.createElement('button');
  475.                 button.type = 'button';
  476.                 button.textContent = 'Scan';
  477.                 button.addEventListener('click', Langscan.scan);
  478.             div.appendChild(button);
  479.             var button = document.createElement('button');
  480.                 button.type = 'button';
  481.                 button.textContent = 'Filter table';
  482.                 button.addEventListener('click', Langscan.filter_table);
  483.             div.appendChild(button);
  484.         document.getElementById(body).appendChild(div);
  485.         var table = document.createElement('table');
  486.             table.id = 'langscan-table';
  487.             table.classList.add('article-table');
  488.             table.style.width = '100%';
  489.             var thead = document.createElement('thead');
  490.                 var tr = document.createElement('tr');
  491.                     var th = document.createElement('th');
  492.                         th.textContent = 'Language';
  493.                     tr.appendChild(th);
  494.                     var th = document.createElement('th');
  495.                         th.textContent = 'Language Code';
  496.                     tr.appendChild(th);
  497.                     var th = document.createElement('th');
  498.                         th.textContent = 'Link';
  499.                     tr.appendChild(th);
  500.                     var th = document.createElement('th');
  501.                         th.textContent = 'Status';
  502.                     tr.appendChild(th);
  503.                 thead.appendChild(tr);
  504.             table.appendChild(thead);
  505.             var tbody = document.createElement('tbody');
  506.                 for(var i in Langscan.langs) {
  507.                     var tr = document.createElement('tr');
  508.                         tr.id = 'langscan-lang-' + i;
  509.                         tr.classList.add('langscan-row-unknown');
  510.                         var td = document.createElement('td');
  511.                             td.textContent = Langscan.langs[i].text;
  512.                         tr.appendChild(td);
  513.                         var td = document.createElement('td');
  514.                             td.textContent = i;
  515.                         tr.appendChild(td);
  516.                         var td = document.createElement('td');
  517.                             var a = document.createElement('a');
  518.                                 a.href = 'http://' + i + '.' + Langscan.domain + '/wiki/';
  519.                                 a.target = '_blank';
  520.                                 a.textContent = i + '.' + Langscan.domain + '/wiki/';
  521.                             td.appendChild(a);
  522.                         tr.appendChild(td);
  523.                         var td = document.createElement('td');
  524.                             td.textContent = Langscan.text.unknown;
  525.                         tr.appendChild(td);
  526.                     tbody.appendChild(tr);
  527.                 }
  528.             table.appendChild(tbody);
  529.         document.getElementById(body).appendChild(table);
  530.  
  531.         var xhr = new XMLHttpRequest();
  532.         xhr.addEventListener('loadend', function() {
  533.             if(this.status == 200 && !this.response.error) {
  534.                 var wikis = this.response.query.interwikimap;
  535.                 for(var i = 0; i < wikis.length; i++) {
  536.                     if(wikis[i].language) {Langscan.mark(wikis[i].prefix, 'connected');}
  537.                 }
  538.             }
  539.             else {
  540.                 if(this.status != 200) {document.getElementById('langscan-button').textContent = 'Could not access interwikimap for this wiki. (Status: ' + this.status + ')';}
  541.                 else if(this.response.error) {document.getElementById('langscan-button').textContent = 'Could not access interwikimap for this wiki. (' + this.response.error.code + ': ' + this.response.error.message + ')';}
  542.                 document.getElementById('langscan-button').classList.remove('confirm');
  543.                 document.getElementById('langscan-button').classList.add('error');
  544.             }
  545.         });
  546.         xhr.open('GET', '/api.php?action=query&meta=siteinfo&siprop=interwikimap&sifilteriw=local&format=json', true);
  547.         xhr.responseType = 'json';
  548.         xhr.setRequestHeader('Api-Client', 'Langscan/1.0');
  549.         xhr.send();
  550.     }
  551. };
  552.  
  553. Langscan.jsonp = function(lang) {
  554.     if(Langscan.langs[lang].status != 'unknown') {return;}
  555.     var script = document.createElement('script');
  556.         script.src = '//' + lang + '.' + Langscan.domain + '/api.php?action=query&meta=siteinfo&format=json&callback=()';
  557.         script.type = 'text/javascript';
  558.         script.setAttribute('data-lang', lang);
  559.         script.addEventListener('error', Langscan.failure_callback);
  560.         script.addEventListener('load', Langscan.success_callback);
  561.     document.head.appendChild(script);
  562.     Langscan.mark(lang, 'checking');
  563.     Langscan.running++;
  564. };
  565. Langscan.success_callback = function() {
  566.     Langscan.mark(this.getAttribute('data-lang'), 'found');
  567.     this.parentNode.removeChild(this);
  568.     Langscan.running--;
  569.     while(Langscan.queue.length > 0 && Langscan.running < Langscan.threads) {Langscan.jsonp(Langscan.queue.shift());}
  570. };
  571. Langscan.failure_callback = function() {
  572.     Langscan.mark(this.getAttribute('data-lang'), 'failed');
  573.     this.parentNode.removeChild(this);
  574.     Langscan.running--;
  575.     while(Langscan.queue.length > 0 && Langscan.running < Langscan.threads) {Langscan.jsonp(Langscan.queue.shift());}
  576. };
  577.  
  578. Langscan.mark = function(lang, mode) {
  579.     Langscan.langs[lang].status = mode;
  580.     var row = document.getElementById('langscan-lang-' + lang);
  581.     for(var i in Langscan.style[mode]) {row.style[i] = Langscan.style[mode][i];}
  582.     row.lastChild.textContent = Langscan.text[mode];
  583.     row.className = '';
  584.     row.classList.add('langscan-row-' + mode);
  585. };
  586.  
  587. Langscan.filter_table = function() {
  588.     var rows = document.getElementById('langscan-table').getElementsByTagName('tbody')[0].getElementsByTagName('tr');
  589.     for(var i = 0; i < rows.length; i++) {
  590.         if(rows[i].classList.contains('langscan-row-failed')) {rows[i].style.display = 'none';}
  591.     }
  592. };
  593.  
  594. Langscan.scan = function() {
  595.     for(var i in Langscan.langs) {
  596.         if(!Langscan.buffer || Langscan.running < Langscan.threads) {Langscan.jsonp(i);}
  597.         else {Langscan.queue.push(i);}
  598.     }
  599. };
  600.  
  601. if(document.readyState == 'complete') {Langscan.onload();}
  602. else {window.addEventListener('load', Langscan.onload);}
Advertisement
Add Comment
Please, Sign In to add comment