blog.exotec

TYPO3 . XHTML/CSS . JavaScript/AJAX . iPhone/iOS

Sprachwahl über Selectbox

Nachdem ich mich heute erfolglos mit der Language Selection Extension (sr_language_menu) rumgequälte, habe ich kurzer Hand eine eigene Selectbox entworfen um zwischen den Sprachen einer Typo3 Webseite umzuschalten. Heraus gekommen ist dabei eine Selectbox die in der ersten Zeile das Wort Sprachen abhängig von der gewählten Sprache anzeigt. Also im deutschen Bereich steht da dann “Sprachen …” im englischen “Languages …” usw.

Dazu habe ich zunächst über die Constants die entsprechenden Variablen vergeben:

language_de {
# cat=basic/links; type=text[varchar]; label=Selectbox Sprachen (deutsch):
value = Sprachen ...
}

language_en {
# cat=basic/links; type=text[varchar]; label=Selectbox Sprachen (englisch):
value = Languages ...
}

Diese kann man dann über das Setup anwenden und so Marker füllen, dazu gleich noch mehr. Der Setup Code um die Variablen in einen Marker ###language### zu setzen sieht bei mir dann so aus:

marks.language = TEXT
marks.language.wrap = {$language_de.value}

[globalVar = GP:L = 1]
marks.language = TEXT
marks.language.wrap = {$language_en.value}
[global]

Die Selectbox selber steht direkt im HTML Template der Seite, ebenso wie die kleine Javascript Funktion die den Wechsel überhaupt erst ermöglicht:

<script language="javascript" type="text/javascript">
<!--
function go()
{
box = document.forms[0].navi;
destination = box.options[box.selectedIndex].value;
if (destination) location.href = destination;
}

// -->
</SCRIPT>
<p id="lang">
<form action="" style="margin:0;">
<select name=navi onChange="go()" style="width:120px;">
<option value=''>###language###</option>
<option value="###sel_deutsch###">Deutsch</option>
<option value="###sel_englisch###">English</option>
</select>
</form>

Hier tauchen nun noch weitere Marker auf: ###sel_deutsch### und ###sel_englisch###. Diese erzeugen die notwendige URL die übergeben werden muss um eine Sprache anzuwählen. Diese Marker werden ebenfalls über das Setup gefüllt:

marks.sel_deutsch = COA
marks.sel_deutsch = TEXT
marks.sel_deutsch.field = uid
marks.sel_deutsch.wrap = index.php?id=|&L={$lang_de.value}

marks.sel_englisch = COA
marks.sel_englisch = TEXT
marks.sel_englisch.field = uid
marks.sel_englisch.wrap = index.php?id=|&L={$lang_en.value}

Tja und das war es auch schon, ich habe hier eine Beispielseite angelegt auf welcher die Sprachwahl zu sehen ist.

Es ist also auch ohne irgendeine Extension relativ einfach möglich eine Sprachwahl in einer Selectbox zu erstellen. Und es gefällt mir persönlich viel besser (klar sonst würde ich es hier nicht zeigen) als die o.g. genannte Extension. Diese Variante wirft vor allem keine Script Error Meldung in der Statuszeile des IE aus, so wie es bei meinen versuchen mit der Extension der Fall war.

2 Kommentare zu 'Sprachwahl über Selectbox'

Auf dem Laufenden bleiben per RSS oder TrackBack zu 'Sprachwahl über Selectbox'.

  1. Manni sagt,

    Oktober 18th, 2005 um 12:39 pm

    Gute Lösung, danke!

    Das einzige was mir nicht gefällt ist die Syntax des Javascripts - die “forms”- Collection ist ein Überbleibsel aus dunklen Zeiten von Browsern wie Netscape 4 und IE 4; anstatt auf forms[0] sollte auf document.getElementsByTagName(’form’)[0] zugegriffen werden, oder noch besser das Form eine ID bekommen und dann per document.getElementById angesprochen werden.
    Ich mag’s nicht, wenn im Jahr 2005 Javascript-Code immer noch im Stil der Jahrhundertwende geschrieben wird, des is ned schön.


  2. November 8th, 2007 um 8:22 pm

    Software Development Guide…

    I couldn’t understand some parts of this article, but it sounds interesting…

Kommentar schreiben:


90,613 Spam-Kommentare
blockiert von
Akismet