{"id":52,"date":"2026-07-27T15:24:03","date_gmt":"2026-07-27T15:24:03","guid":{"rendered":"https:\/\/interaction-bot.com\/blog\/discord-language-coverage-checker\/"},"modified":"2026-07-27T15:24:04","modified_gmt":"2026-07-27T15:24:04","slug":"discord-language-coverage-checker","status":"publish","type":"page","link":"https:\/\/interaction-bot.com\/blog\/discord-language-coverage-checker\/","title":{"rendered":"Discord Server Language Coverage Checker"},"content":{"rendered":"<p><!DOCTYPE html><br \/>\n<html lang=\"en\"><br \/>\n<head><br \/>\n<meta charset=\"UTF-8\"><br \/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><br \/>\n<title>Discord Server Language Coverage Checker<\/title><br \/>\n<meta name=\"description\" content=\"Check which languages your Discord community speaks against Interaction Bot's 100+ language translation engine. See coverage percentage, supported pairs, and gaps before you invite a bot.\"><\/p>\n<style>\n*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}\nbody{font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;background:#f5f5f7;color:#1d1d1f;line-height:1.6;padding:0}\n.container{max-width:760px;margin:0 auto;padding:24px 16px 48px}\nh1{font-size:1.6rem;font-weight:700;margin-bottom:8px;color:#111}\nh2{font-size:1.25rem;font-weight:600;margin:32px 0 12px;color:#1d1d1f}\nh3{font-size:1.05rem;font-weight:600;margin:20px 0 8px}\np,li{font-size:.95rem;color:#333;margin-bottom:12px}\n.tool-card{background:#fff;border-radius:12px;padding:24px;margin:20px 0;box-shadow:0 1px 3px rgba(0,0,0,.08);border:1px solid #e5e5ea}\n.tagline{font-size:.9rem;color:#6e6e73;margin-bottom:24px}\n.select-area{position:relative;margin-bottom:16px}\n.select-label{display:block;font-size:.85rem;font-weight:600;color:#555;margin-bottom:6px}\n.select-box{position:relative;border:1.5px solid #d1d1d6;border-radius:8px;background:#fff;cursor:pointer;min-height:48px;display:flex;align-items:center;flex-wrap:wrap;padding:6px 36px 6px 10px;gap:4px;transition:border-color .15s}\n.select-box:focus-within{border-color:#0071e3;box-shadow:0 0 0 3px rgba(0,113,227,.15)}\n.select-box.open{border-color:#0071e3}\n.select-box .tag{display:inline-flex;align-items:center;background:#e8e8ed;border-radius:6px;padding:3px 7px;font-size:.8rem;gap:5px;white-space:nowrap}\n.select-box .tag button{background:none;border:none;cursor:pointer;font-size:.85rem;line-height:1;color:#86868b;padding:0;margin-left:2px}\n.select-box .tag button:hover{color:#333}\n.select-box .placeholder{color:#aeaeb2;font-size:.9rem;padding:2px 0}\n.select-box .arrow{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:12px;height:12px;border:solid #86868b;border-width:0 2px 2px 0;padding:0;transition:transform .15s}\n.select-box.open .arrow{transform:translateY(-50%) rotate(-135deg)}\n.select-input{border:none;outline:none;flex:1;min-width:80px;font-size:.9rem;padding:4px;background:transparent}\n.dropdown{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #d1d1d6;border-top:none;border-radius:0 0 8px 8px;max-height:280px;overflow-y:auto;z-index:100;display:none;box-shadow:0 4px 12px rgba(0,0,0,.1)}\n.dropdown.show{display:block}\n.dropdown-item{padding:10px 14px;cursor:pointer;font-size:.88rem;display:flex;align-items:center;gap:8px;border-bottom:1px solid #f0f0f0}\n.dropdown-item:hover,.dropdown-item.focused{background:#f5f5f7}\n.dropdown-item .lang-code{color:#86868b;font-size:.75rem;min-width:36px}\n.results{margin-top:20px}\n.summary-banner{background:linear-gradient(135deg,#1d1d1f,#2d2d2f);color:#fff;border-radius:10px;padding:18px 20px;margin-bottom:20px;text-align:center}\n.summary-banner.bad{background:linear-gradient(135deg,#8e2d2d,#a83a3a)}\n.summary-banner.mid{background:linear-gradient(135deg,#a0650a,#c47d1a)}\n.summary-banner .big-num{font-size:2.4rem;font-weight:800;line-height:1}\n.summary-banner .label{font-size:.8rem;opacity:.8;margin-top:4px}\n.coverage-bar{height:8px;background:rgba(255,255,255,.25);border-radius:4px;margin:10px 0 6px;overflow:hidden}\n.coverage-bar .fill{height:100%;background:#30d158;border-radius:4px;transition:width .3s}\n.coverage-bar .fill.low{background:#ff453a}\n.coverage-bar .fill.mid{background:#ff9f0a}\n.columns{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}\n@media(max-width:520px){.columns{grid-template-columns:1fr}}\n.column{background:#f9f9fb;border-radius:8px;padding:14px;border:1px solid #e5e5ea}\n.column h4{font-size:.85rem;margin:0 0 8px;color:#555}\n.column ul{list-style:none;padding:0}\n.column li{font-size:.84rem;padding:3px 0;margin:0;display:flex;align-items:center;gap:6px}\n.column li .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}\n.column li .dot.ok{background:#30d158}\n.column li .dot.no{background:#ff453a}\n.pairs-section{margin-top:16px}\n.pairs-table{width:100%;border-collapse:collapse;font-size:.82rem;margin-top:8px}\n.pairs-table th{text-align:left;padding:8px 6px;background:#f5f5f7;font-weight:600;color:#555;font-size:.78rem;border-bottom:2px solid #e5e5ea}\n.pairs-table td{padding:7px 6px;border-bottom:1px solid #f0f0f0}\n.pairs-table tr:last-child td{border-bottom:none}\n.recs{margin-top:16px;background:#fff9e6;border:1px solid #ffe0a0;border-radius:8px;padding:14px 16px}\n.recs h4{font-size:.85rem;color:#865400;margin:0 0 6px}\n.recs p{font-size:.84rem;color:#664300;margin:0}\n.btn{display:inline-block;padding:10px 20px;border-radius:8px;font-size:.88rem;font-weight:600;text-decoration:none;text-align:center;cursor:pointer;border:none;transition:all .15s}\n.btn-primary{background:#0071e3;color:#fff}\n.btn-primary:hover{background:#0066cc}\n.btn-sm{font-size:.78rem;padding:6px 14px}\n.btn-reset{background:#f5f5f7;color:#555;border:1px solid #d1d1d6;margin-left:8px}\n.btn-reset:hover{background:#e8e8ed}\n.actions{margin-top:12px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}\nimg,video{max-width:100%;height:auto;border-radius:8px;margin:16px 0}\nfigure{margin:20px 0}\nfigure img{border-radius:8px;margin:0}\nfigcaption{font-size:.78rem;color:#86868b;margin-top:6px;text-align:center}\niframe{width:100%;max-width:100%;aspect-ratio:16\/9;border:none;border-radius:8px;margin:16px 0}\n.cta-box{background:#1d1d1f;color:#fff;border-radius:12px;padding:24px;margin-top:32px;text-align:center}\n.cta-box p{color:#d5d5dd;margin-bottom:16px}\n.cta-box .btn{background:#fff;color:#1d1d1f}\n.footer-note{font-size:.78rem;color:#86868b;margin-top:32px;text-align:center}\n<\/style>\n<p><\/head><br \/>\n<body><\/p>\n<div class=\"container\">\n<h1>Discord Server Language Coverage Checker<\/h1>\n<p class=\"tagline\">Find out whether Interaction Bot can translate every language your community speaks, before you invite it.<\/p>\n<div class=\"tool-card\" id=\"tool\">\n<label class=\"select-label\" for=\"lang-picker\">Your community&#8217;s languages<\/label><\/p>\n<div class=\"select-area\" id=\"select-area\">\n<div class=\"select-box\" id=\"select-box\" tabindex=\"0\" role=\"combobox\" aria-expanded=\"false\" aria-haspopup=\"listbox\">\n<span class=\"placeholder\" id=\"placeholder\">Type or click to add languages&#8230;<\/span><br \/>\n<input class=\"select-input\" id=\"lang-picker\" type=\"text\" autocomplete=\"off\" aria-autocomplete=\"list\" aria-controls=\"dropdown\"><br \/>\n<span class=\"arrow\"><\/span>\n<\/div>\n<div class=\"dropdown\" id=\"dropdown\" role=\"listbox\"><\/div>\n<\/div>\n<div class=\"actions\">\n<button class=\"btn btn-primary\" id=\"check-btn\" disabled>Check Coverage<\/button><br \/>\n<button class=\"btn btn-reset btn-sm\" id=\"reset-btn\">Reset<\/button>\n<\/div>\n<div class=\"results\" id=\"results\" style=\"display:none\"><\/div>\n<\/div>\n<h2>What the Results Mean<\/h2>\n<p>When you add a translation bot to a multilingual Discord server, the one thing that matters before anything else is whether it covers the languages your members actually speak. A bot with beautiful dashboards and reaction-based translation still fails if it cannot translate between Korean and Portuguese, or if it does not detect Wolof at all.<\/p>\n<p>This checker compares your community&#8217;s language list against the translation engine behind Interaction Bot. The bot <a href=\"https:\/\/interaction-bot.com\/blog\/what-is-interaction-bot\/\" target=\"_blank\" rel=\"noopener\">confirms it supports 100+ languages<\/a> for text translation and over 30 for text-to-speech. Under the hood, translation bots at this scale draw on engines like Google Cloud Translation, which publishes a <a href=\"https:\/\/cloud.google.com\/translate\/docs\/languages\" target=\"_blank\" rel=\"noopener\">documented list of supported languages<\/a>. That is the reference set used here.<\/p>\n<figure>\n<img decoding=\"async\" width=\"1024\" height=\"737\" class=\"wp-image-53\" src=\"https:\/\/interaction-bot.com/blog\/wp-content\/uploads\/sites\/3\/2026\/07\/7886753194_be774c431e_b.jpg\" alt=\"Global webchat with participants from multiple countries demonstrating real-time digital communication across languages\" loading=\"lazy\" srcset=\"https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/3\/2026\/07\/7886753194_be774c431e_b.jpg 1024w, https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/3\/2026\/07\/7886753194_be774c431e_b-300x216.jpg 300w, https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/3\/2026\/07\/7886753194_be774c431e_b-768x553.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Credit: Wikimedia Commons (check the file page), via Flickr<\/figcaption><\/figure>\n<h2>How to Read Your Coverage Score<\/h2>\n<p>The tool gives you four things:<\/p>\n<ol>\n<li><strong>A summary percentage<\/strong>: what share of your community&#8217;s languages Interaction Bot can translate. 100% means every language your members speak is covered. Below 80% means gaps worth addressing.<\/li>\n<li><strong>A supported list<\/strong>: languages with full translation support, including the translation pairs available between any two of them. Interaction Bot&#8217;s engine supports any-to-any translation within its covered set.<\/li>\n<li><strong>An unsupported list<\/strong>: languages the engine does not yet handle. These are typically smaller or regional languages that major translation APIs have not added.<\/li>\n<li><strong>Recommendations<\/strong>: concrete steps for closing gaps, ranked by how practical they are.<\/li>\n<\/ol>\n<p>Roduz&#8217;s six-minute walkthrough of Interaction Bot setup shows exactly how the bot handles multiple languages on a live server, including flag translation and automatic channel translation:<\/p>\n<p><iframe loading=\"lazy\" title=\"How to setup Interaction bot Discord | Translate | #roduz #discord #translate #translation\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/lqXAISyny_s?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<h2>What Coverage Does <em>Not<\/em> Tell You<\/h2>\n<p>Language coverage is the first filter, not the last. Even when a bot supports a language, translation quality varies. Google Cloud Translation&#8217;s documentation notes that languages with experimental support may produce lower-quality output than fully supported ones. If your community relies on a language with experimental support, test a few sample messages before committing.<\/p>\n<p>Text-to-speech coverage is narrower than text translation. Interaction Bot&#8217;s TTS feature supports over 30 languages and dialects, not the full 100+. If your community relies on TTS for accessibility, check those languages specifically in the bot&#8217;s dashboard after inviting it.<\/p>\n<h2>Why Language Coverage Matters Before You Invite<\/h2>\n<p>Server admins often invite a bot first and check language support later. That order costs time: you configure channels, set up roles, and then discover that half your members cannot use the translation feature. A coverage check upfront tells you whether the bot fits your server at all.<\/p>\n<p>For servers with five or fewer major languages (English, Spanish, French, German, Portuguese, Japanese, Korean, Chinese), coverage from any modern translation bot is typically 100%. The checker becomes essential when your community includes less common languages like Telugu, Igbo, Luxembourgish, or Kyrgyz, where support is not guaranteed.<\/p>\n<div class=\"cta-box\">\n<p><strong>Ready to add translation to your server?<\/strong> Interaction Bot combines automatic channel translation, flag-reaction translation, role-based translation, TTS, STT, and moderation, all managed from one web dashboard.<\/p>\n<p><a class=\"btn\" href=\"https:\/\/interaction-bot.com\/\" target=\"_blank\" rel=\"noopener\">Visit Interaction Bot<\/a>\n<\/div>\n<p class=\"footer-note\">Language list based on publicly documented translation engine support as of July 2026. Verify specific languages in Interaction Bot&#8217;s dashboard after inviting it. This tool is provided by interaction-bot.com to help server admins make informed decisions.<\/p>\n<\/div>\n<p><script>\n(function(){\nvar S=new Set(['af','sq','am','ar','hy','as','ay','az','bm','eu','be','bn','bho','bs','bg','my','ca','ceb','ny','zh-CN','zh-TW','co','hr','cs','da','dv','doi','nl','dz','en','eo','et','ee','fil','fi','fr','fy','gl','lg','ka','de','el','gn','gu','ht','ha','haw','he','hi','hmn','hu','is','ig','ilo','id','ga','it','ja','jv','kn','kk','km','rw','gom','ko','kri','ku','ckb','ky','lo','la','lv','ln','lt','lb','mk','mai','mg','ms','ml','mt','mi','mr','lus','mn','ne','no','nso','or','om','ps','fa','pl','pt','pa','qu','ro','ru','sm','gd','sr','sn','sd','si','sk','sl','so','es','su','sw','sv','tg','ta','tt','te','th','ti','ts','tr','tk','uk','ur','ug','uz','vi','cy','xh','yi','yo','zu']);\nvar T=new Set(['ar','bg','ca','zh-CN','zh-TW','hr','cs','da','nl','en','et','fi','fr','de','el','he','hi','hu','is','it','ja','ko','lv','lt','no','pl','pt','ro','ru','sk','sl','es','sv','th','tr','uk','vi']);\nvar L=[{code:'af',name:'Afrikaans'},{code:'sq',name:'Albanian'},{code:'am',name:'Amharic'},{code:'ar',name:'Arabic'},{code:'hy',name:'Armenian'},{code:'as',name:'Assamese'},{code:'ay',name:'Aymara'},{code:'az',name:'Azerbaijani'},{code:'bm',name:'Bambara'},{code:'eu',name:'Basque'},{code:'be',name:'Belarusian'},{code:'bn',name:'Bengali'},{code:'bho',name:'Bhojpuri'},{code:'bs',name:'Bosnian'},{code:'bg',name:'Bulgarian'},{code:'my',name:'Burmese'},{code:'ca',name:'Catalan'},{code:'ceb',name:'Cebuano'},{code:'ny',name:'Chichewa'},{code:'zh-CN',name:'Chinese (Simplified)'},{code:'zh-TW',name:'Chinese (Traditional)'},{code:'co',name:'Corsican'},{code:'hr',name:'Croatian'},{code:'cs',name:'Czech'},{code:'da',name:'Danish'},{code:'dv',name:'Dhivehi'},{code:'doi',name:'Dogri'},{code:'nl',name:'Dutch'},{code:'dz',name:'Dzongkha'},{code:'en',name:'English'},{code:'eo',name:'Esperanto'},{code:'et',name:'Estonian'},{code:'ee',name:'Ewe'},{code:'fil',name:'Filipino'},{code:'fi',name:'Finnish'},{code:'fr',name:'French'},{code:'fy',name:'Frisian'},{code:'gl',name:'Galician'},{code:'lg',name:'Ganda (Luganda)'},{code:'ka',name:'Georgian'},{code:'de',name:'German'},{code:'el',name:'Greek'},{code:'gn',name:'Guarani'},{code:'gu',name:'Gujarati'},{code:'ht',name:'Haitian Creole'},{code:'ha',name:'Hausa'},{code:'haw',name:'Hawaiian'},{code:'he',name:'Hebrew'},{code:'hi',name:'Hindi'},{code:'hmn',name:'Hmong'},{code:'hu',name:'Hungarian'},{code:'is',name:'Icelandic'},{code:'ig',name:'Igbo'},{code:'ilo',name:'Ilocano'},{code:'id',name:'Indonesian'},{code:'ga',name:'Irish'},{code:'it',name:'Italian'},{code:'ja',name:'Japanese'},{code:'jv',name:'Javanese'},{code:'kn',name:'Kannada'},{code:'kk',name:'Kazakh'},{code:'km',name:'Khmer'},{code:'rw',name:'Kinyarwanda'},{code:'gom',name:'Konkani'},{code:'ko',name:'Korean'},{code:'kri',name:'Krio'},{code:'ku',name:'Kurdish (Kurmanji)'},{code:'ckb',name:'Kurdish (Sorani)'},{code:'ky',name:'Kyrgyz'},{code:'lo',name:'Lao'},{code:'la',name:'Latin'},{code:'lv',name:'Latvian'},{code:'ln',name:'Lingala'},{code:'lt',name:'Lithuanian'},{code:'lb',name:'Luxembourgish'},{code:'mk',name:'Macedonian'},{code:'mai',name:'Maithili'},{code:'mg',name:'Malagasy'},{code:'ms',name:'Malay'},{code:'ml',name:'Malayalam'},{code:'mt',name:'Maltese'},{code:'mi',name:'Maori'},{code:'mr',name:'Marathi'},{code:'lus',name:'Mizo'},{code:'mn',name:'Mongolian'},{code:'ne',name:'Nepali'},{code:'no',name:'Norwegian'},{code:'nso',name:'Northern Sotho (Sepedi)'},{code:'or',name:'Odia'},{code:'om',name:'Oromo'},{code:'ps',name:'Pashto'},{code:'fa',name:'Persian'},{code:'pl',name:'Polish'},{code:'pt',name:'Portuguese'},{code:'pa',name:'Punjabi'},{code:'qu',name:'Quechua'},{code:'ro',name:'Romanian'},{code:'ru',name:'Russian'},{code:'sm',name:'Samoan'},{code:'gd',name:'Scots Gaelic'},{code:'sr',name:'Serbian'},{code:'sn',name:'Shona'},{code:'sd',name:'Sindhi'},{code:'si',name:'Sinhala'},{code:'sk',name:'Slovak'},{code:'sl',name:'Slovenian'},{code:'so',name:'Somali'},{code:'es',name:'Spanish'},{code:'su',name:'Sundanese'},{code:'sw',name:'Swahili'},{code:'sv',name:'Swedish'},{code:'tg',name:'Tajik'},{code:'ta',name:'Tamil'},{code:'tt',name:'Tatar'},{code:'te',name:'Telugu'},{code:'th',name:'Thai'},{code:'ti',name:'Tigrinya'},{code:'ts',name:'Tsonga'},{code:'tr',name:'Turkish'},{code:'tk',name:'Turkmen'},{code:'uk',name:'Ukrainian'},{code:'ur',name:'Urdu'},{code:'ug',name:'Uyghur'},{code:'uz',name:'Uzbek'},{code:'vi',name:'Vietnamese'},{code:'cy',name:'Welsh'},{code:'xh',name:'Xhosa'},{code:'yi',name:'Yiddish'},{code:'yo',name:'Yoruba'},{code:'zu',name:'Zulu'}];\nvar sb=document.getElementById('select-box');\nvar si=document.getElementById('lang-picker');\nvar dd=document.getElementById('dropdown');\nvar ph=document.getElementById('placeholder');\nvar cb=document.getElementById('check-btn');\nvar rb=document.getElementById('reset-btn');\nvar rd=document.getElementById('results');\nvar sa=document.getElementById('select-area');\nvar sel=[];\nvar op=false;\nvar fi=-1;\nfunction rt(){\nvar ts=sb.querySelectorAll('.tag');\nfor(var i=0;i<ts.length;i++)ts[i].remove();\nif(sel.length===0){ph.style.display='inline';}\nelse{ph.style.display='none';\nfor(var i=0;i<sel.length;i++){var l=sel[i];var t=document.createElement('span');t.className='tag';t.innerHTML=l.name+' <button aria-label=\"Remove '+l.name+'\" data-code=\"'+l.code+'\">u00d7<\/button>';sb.insertBefore(t,si);}}\nvar bs=sb.querySelectorAll('.tag button');\nfor(var i=0;i<bs.length;i++){bs[i].addEventListener('click',function(e){e.stopPropagation();rm(this.dataset.code);});}}\nfunction rm(c){sel=sel.filter(function(l){return l.code!==c;});rt();uc();rdd();}\nfunction uc(){cb.disabled=sel.length===0;}\nfunction fl(q){if(!q)return L.filter(function(l){return !sel.find(function(s){return s.code===l.code;});});var ql=q.toLowerCase();return L.filter(function(l){return !sel.find(function(s){return s.code===l.code;})&#038;&#038;(l.name.toLowerCase().indexOf(ql)!==-1||l.code.toLowerCase().indexOf(ql)!==-1);});}\nfunction rdd(){var q=si.value.trim();var f=fl(q);dd.innerHTML='';if(f.length===0){dd.innerHTML='\n\n<div class=\"dropdown-item\" style=\"color:#86868b;cursor:default;\">No matching languages<\/div>\n<p>';}else{for(var i=0;i<f.length;i++){var l=f[i];var d=document.createElement('div');d.className='dropdown-item';d.setAttribute('role','option');d.innerHTML='<span class=\"lang-code\">'+l.code+'<\/span> '+l.name;(function(lg){d.addEventListener('mousedown',function(e){e.preventDefault();al(lg);});})(l);d.dataset.idx=i;dd.appendChild(d);}}fi=-1;}\nfunction al(lg){if(sel.find(function(s){return s.code===lg.code;}))return;sel.push(lg);si.value='';rt();uc();rdd();si.focus();}\nfunction od(){op=true;sb.classList.add('open');dd.classList.add('show');sb.setAttribute('aria-expanded','true');rdd();}\nfunction cd(){op=false;sb.classList.remove('open');dd.classList.remove('show');sb.setAttribute('aria-expanded','false');}\nsb.addEventListener('click',function(e){if(e.target.tagName==='BUTTON')return;si.focus();if(!op)od();});\nsi.addEventListener('focus',function(){if(!op)od();});\nsi.addEventListener('input',function(){if(!op)od();rdd();});\nsi.addEventListener('keydown',function(e){var it=dd.querySelectorAll('.dropdown-item:not([style*=\"cursor:default\"])');if(e.key==='ArrowDown'){e.preventDefault();if(!op){od();return;}if(it.length===0)return;fi=Math.min(fi+1,it.length-1);for(var i=0;i<it.length;i++)it[i].classList.remove('focused');if(it[fi])it[fi].classList.add('focused');}else if(e.key==='ArrowUp'){e.preventDefault();if(!op){od();return;}if(it.length===0)return;fi=Math.max(fi-1,0);for(var i=0;i<it.length;i++)it[i].classList.remove('focused');if(it[fi])it[fi].classList.add('focused');}else if(e.key==='Enter'){e.preventDefault();if(op&#038;&#038;fi>=0&&it[fi]){var idx=parseInt(it[fi].dataset.idx);var f=fl(si.value.trim());if(f[idx])al(f[idx]);}}else if(e.key==='Escape'){cd();}else if(e.key==='Backspace'&&si.value===''&&sel.length>0){rm(sel[sel.length-1].code);}});\ndocument.addEventListener('click',function(e){if(!sa.contains(e.target))cd();});\ncb.addEventListener('click',cr);\nrb.addEventListener('click',function(){sel=[];si.value='';rt();uc();rdd();rd.style.display='none';rd.innerHTML='';});\nfunction cr(){if(sel.length===0)return;var sup=sel.filter(function(l){return S.has(l.code);});var uns=sel.filter(function(l){return !S.has(l.code);});var pc=Math.round((sup.length\/sel.length)*100);var bc='';if(pc===100)bc='';else if(pc>=80)bc='mid';else bc='bad';var brc='';if(pc>=90)brc='';else if(pc>=70)brc='mid';else brc='low';var h='';h+='<\/p>\n<div class=\"summary-banner '+bc+'\">';h+='<\/p>\n<div class=\"big-num\">'+sup.length+' of '+sel.length+'<\/div>\n<p>';h+='<\/p>\n<div class=\"label\">languages supported ('+pc+'% coverage)<\/div>\n<p>';h+='<\/p>\n<div class=\"coverage-bar\">\n<div class=\"fill '+brc+'\" style=\"width:'+pc+'%\"><\/div>\n<\/div>\n<p>';h+='<\/p><\/div>\n<p>';h+='<\/p>\n<div class=\"columns\">';h+='<\/p>\n<div class=\"column\">\n<h4>Supported ('+sup.length+')<\/h4>\n<p>';if(sup.length===0){h+='<\/p>\n<p style=\"font-size:.84rem;color:#86868b;\">None of your selected languages are supported.<\/p>\n<p>';}else{h+='<\/p>\n<ul>';for(var i=0;i<sup.length;i++){var l=sup[i];var tt=T.has(l.code)?' <span style=\"font-size:.75rem\">uD83CuDF99<\/span>':'';h+='<\/p>\n<li><span class=\"dot ok\"><\/span> '+l.name+' ('+l.code+')'+tt+'<\/li>\n<p>';}h+='<\/ul>\n<p>';h+='<\/p>\n<p style=\"font-size:.75rem;color:#86868b;margin-top:6px;\">uD83CuDF99 = text-to-speech also available<\/p>\n<p>';}h+='<\/p><\/div>\n<p>';h+='<\/p>\n<div class=\"column\">\n<h4>Unsupported ('+uns.length+')<\/h4>\n<p>';if(uns.length===0){h+='<\/p>\n<p style=\"font-size:.84rem;color:#30b158;\">All your languages are covered!<\/p>\n<p>';}else{h+='<\/p>\n<ul>';for(var i=0;i<uns.length;i++){var l=uns[i];h+='\n\n<li><span class=\"dot no\"><\/span> '+l.name+' ('+l.code+')<\/li>\n<p>';}h+='<\/ul>\n<p>';}h+='<\/p><\/div>\n<p>';h+='<\/p><\/div>\n<p>';if(sup.length>=2){h+='<\/p>\n<div class=\"pairs-section\">\n<h4>Translation Pairs Available<\/h4>\n<p>';h+='<\/p>\n<p style=\"font-size:.82rem;color:#555;\">Any-to-any translation among the covered languages:<\/p>\n<p>';h+='<\/p>\n<div style=\"max-height:300px;overflow-y:auto;margin-top:8px;\">';h+='<\/p>\n<div class=\"table-wrap\"><table class=\"pairs-table\">\n<thead>\n<tr>\n<th>From<\/th>\n<th>To<\/th>\n<\/tr>\n<\/thead>\n<tbody>';for(var i=0;i<sup.length;i++){for(var j=0;j<sup.length;j++){if(i===j)continue;h+='\n\n<tr>\n<td>'+sup[i].name+'<\/td>\n<td>'+sup[j].name+'<\/td>\n<\/tr>\n<p>';}}h+='<\/tbody>\n<\/table><\/div>\n<\/div>\n<p>';h+='<\/p>\n<p style=\"font-size:.75rem;color:#86868b;margin-top:4px;\">'+(sup.length*(sup.length-1))+' directed translation pairs available<\/p>\n<p>';h+='<\/p><\/div>\n<p>';}if(uns.length>0){h+='<\/p>\n<div class=\"recs\">';h+='<\/p>\n<h4>Recommendations for Closing Gaps<\/h4>\n<p>';h+='<\/p>\n<p>';if(uns.length<=3){h+='<strong>Try external API keys.<\/strong> Interaction Bot lets you configure your own Google Cloud or DeepL API key. Your unsupported languages may be available on a different engine. If another API covers your gap language, you can close it by bringing your own key in the dashboard settings.';}else{h+='<strong>Multiple gaps detected.<\/strong> With '+uns.length+' unsupported languages, your community has significant coverage holes. Consider: (1) assigning dedicated human moderators for each unsupported language to bridge conversations, (2) setting up separate language-specific channels where members share a common tongue, or (3) evaluating whether another bot with broader coverage meets your needs.';}h+='<\/p>\n<p>';if(pc<60){h+='\n\n<p style=\"margin-top:8px;\"><strong>Low coverage warning.<\/strong> At '+pc+'% coverage, most translation pairs involving your community will be missing. Interaction Bot may not be the right fit unless most conversation happens in the supported languages.<\/p>\n<p>';}h+='<\/p><\/div>\n<p>';}else{h+='<\/p>\n<div class=\"recs\" style=\"background:#e8f8e8;border-color:#a0e0a0;\">';h+='<\/p>\n<h4 style=\"color:#1a6b1a;\">Full Coverage<\/h4>\n<p>';h+='<\/p>\n<p style=\"color:#1a5c1a;\">Every language your community speaks is covered. Interaction Bot can translate between all '+sel.length+' languages. Ready to <a href=\"https:\/\/interaction-bot.com\/\" target=\"_blank\" rel=\"noopener\">invite Interaction Bot<\/a> with confidence.<\/p>\n<p>';h+='<\/p><\/div>\n<p>';}rd.innerHTML=h;rd.style.display='block';rd.scrollIntoView({behavior:'smooth',block:'nearest'});}\n})();\n<\/script><br \/>\n<\/body><br \/>\n<\/html><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A tool for Discord server admins to check how many of their community&#8217;s languages are covered by Interaction Bot&#8217;s 100+ language translation engine before inviting the bot.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-tool.php","meta":{"footnotes":""},"class_list":["post-52","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/pages\/52","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/comments?post=52"}],"version-history":[{"count":1,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/pages\/52\/revisions"}],"predecessor-version":[{"id":54,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/pages\/52\/revisions\/54"}],"wp:attachment":[{"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/media?parent=52"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}