Can’t include Language switch in Nav Menu

You have to return the data in the qtrans function:

function qtrans_generateLanguageListCode($id='') {
    global $q_config;
    if (is_404()) $url = get_option('home'); else $url="";
    if ('' === $id) $id = 'qtranslate';
    $id .= '-chooser';
    $output="";
    foreach (qtrans_getSortedLanguages() as $language) {
        $classes = array('lang-'.$language);
        if($language == $q_config['language'])
            $classes[] = 'active';
        $output .= '<li class="'. implode(' ', $classes) .'"><a href="'.qtrans_convertURL($url, $language).'"';
        // set hreflang
        $output .= ' hreflang="'.$language.'" title="'.$q_config['language_name'][$language].'"';
        $output .= ' class="qtrans_flag qtrans_flag_'.$language.'"';
        $output .= '><span';
        $output .= ' style="display:none"';
        $output .= '>'.$q_config['language_name'][$language].'</span></a></li>';
    }
    return $output;
}

function new_nav_menu_items($items) {
    $translinks = qtrans_generateLanguageListCode();
    $items = $items . $translinks;
    return $items;
}
add_filter( 'wp_nav_menu_items', 'new_nav_menu_items' );