Edit in JSFiddle

function getText(text, lang) {
    var text = text || '';
    var lang = lang || '';
  // Builds regex based on supplied language
  var re = new RegExp("<!--:" + lang + "-->(.*?)<!--:-->");
  
  // Returns first backreference
    var control = text.match(re);
    if (control !== null) { control = control[1] } else { control = null;}

    return control;
 
}

//establecer la cadena
var str= "<!--:es-->candena en español áéíöüñ<!--:--><!--:fr-->Qu’est-ce que je dis quand je veux m'excuser ?<!--:--><!--:en-->A long time ago.<!--:-->";

//======================= cambiar idioma es, en , fr
var lang = 'fr';

$('#output').html('idioma selecionado (' + lang +')');
$('#output').append('<br \>' + getText(str,lang));



/* Variante idioma por defecto:
defaultLang = variable con el idoma por defecto entre es, en ,fr
lang = idioma que no este dentro de la cadena
*/

var defaultLang = 'en';
lang = 'ca';

$('#output2').html('a' + getText(str,'ca'));
if (getText(str,lang) === null) {
    $('#output2').html('idioma (' + lang + ') no encontrado');
     $('#output2').append('<br />idioma por defecto (' + defaultLang + ') ' + '<br \>' + getText(str,defaultLang));
} else {
    $('#output2').html(getText(str,lang));
}
<h3>Javascript similar al plugin Qtranslate de wordpress</h3>
<div id="output"></div>
<h4>Variante idioma por defecto</h4>
<p>Variantes para mostrar una cadena con el idioma por defecto en caso de no encontrar el especifico</p>
<div id="output2"></div>