ursus contionabundo: (Schlechte) Lösung: Mehrsprachige Inhalte in eigenen Verzeichnissen, Verweis mit Javascript

Beitrag lesen

Literatur

wenn Du jedermann zeigen willst, dass Du schlechte, aber vermeintlich einfache Lösungen bevorzugst, dass mach sowas.

Der gezeigte Code ist aus den genannten Gründen ungetestet. Bringe das oder halt "sowas" (Du kannst es verhübschen und/oder ergänzen) in der index.html im Document-Root unter:

<!Doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <script src="/selectLanguage.js"></script>
        <meta name="robots" constent="noindex,follow" />
    </head>
    <body>
      <noscript>
            <ul>
                <li><a href="/de/">deutsch</a></li>
                <li><a href="/fr/">francais</a></li>
                <li><a href="/en/">english</a></li>
            </ul>
        </noscript>
    </body>
</html>
// file: [DOCUMENT_ROOT]/selectLanguage.js

function selectLanguage {
    
    var languages = ['de', 'en', 'fr'];
    var default   = 'en'; // languages[1] geht auch...
 
    var newUri = false;  
    languages.forEach =  (function ( language ) {
        if ( navigator.language.indexOf( language ) > -1 ) {
            newUri = constructNewUri( language );
        }
    });
    if ( false == newUri ) {
        newUri = constructNewUri( default );
    }
    document.location.href = newUri;
}

function constructNewUri( language ) {

    var uri =  document.location.href;
    newUri = uri.protocol;

    if ( uri.username ) {
        newUri = newUri + uri.username;
        if ( uri.password ) {
            newUri = newUri + ':' + uri.password;
        }
    }

    if ( uri.username || uri.password ) {
        newUri = newUri + '@';
    }

    newUri + '//' + uri.host;

    if ( uri.port ) {
        newUri = newUri + ':' + uri.port;
    }

    newUri = newUri + '/' + language;

    if ( uri.pathname ) {
        newUri = newUri + uri.pathname;
    }

    if ( uri.search ) {
        newUri = newUri + uri.search;
    } else {
        newUri = newUri + '/';
    }

    if ( uri.hash ) {
        newUri = newUri + uri.hash;
    }
    
    return newUri;
}

selectLanguage();

Es könnte hilfreich sein, auch die 404er Seite mittels eines Eintrages in der .htaccess auf die /index.php zu setzen und dann in den Sprachordnern wieder zu überschreiben.