So. Gerrit. Mich wundert ja, dass Du Dich mit den vorgestellten Lösungen offenbar gar nicht wirklich befasst. Sonst wäre Dir aufgefallen, dass mein Schnellschrieb von gestern den einen oder anderen kleinen Fehler enthält.
Hier also der reparierte und getestete Code der "selectLanguage.js", die, wie gezeigt, nur eingebunden werden muss. Einfacher geht es wirklich nicht.
// file: [DOCUMENT_ROOT]/selectLanguage.js
function selectLanguage () {
// Selbst festlegen
var languages = ['de', 'en', 'fr'];
var defaultLang = 'en'; // languages[1] geht auch…
// Ab hier nichts mehr ändern
var newUri = false;
for ( var i=0; i < languages.length; i++ ) {
if ( navigator.language.indexOf( languages[i] ) > -1 ) {
newUri = constructNewUri( languages[i] );
}
}
if ( false == newUri ) {
newUri = constructNewUri( defaultLang );
}
document.location.href = newUri;
}
function constructNewUri( language ) {
var uri = new URL( 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 = 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;
}
if ( uri.hash ) {
newUri = newUri + uri.hash;
}
return newUri;
}
selectLanguage();