Simple Machines Community Forum

SMF Support => Language Specific Support => Hilfe zu SMF (German) => Aiheen aloitti: Dirk67 - joulukuu 03, 2006, 12:22:12 IP

Otsikko: Sprachumschaltung mit drop-down-Liste (so wie hier)?
Kirjoitti: Dirk67 - joulukuu 03, 2006, 12:22:12 IP
Hi,

hier in diesem Board ist ja oben so eine Sprachumschaltung als drop-down-Liste realisiert,

ist das ein Mod, den man irgendwo runterladen kann,
oder wie kann ich das sonst realisieren ?
Otsikko: Re: Sprachumschaltung mit drop-down-Liste (so wie hier)?
Kirjoitti: dieter4 - joulukuu 03, 2006, 12:33:14 IP
Dies ist kein Mod und wurde vom SMF-Team hier eingebaut. Mit etwas HTML und PHP Kenntnissen ist dies einfach zu realisieren.
Otsikko: Re: Sprachumschaltung mit drop-down-Liste (so wie hier)?
Kirjoitti: Dirk67 - joulukuu 04, 2006, 01:55:52 AP
hab's (in einer einfacheren Form) hinbekommen  ;D , Danke
Otsikko: Re: Sprachumschaltung mit drop-down-Liste (so wie hier)?
Kirjoitti: ianus - joulukuu 04, 2006, 05:54:36 AP
Grüße!

Um diesen Beitrag, vor allem für Leser die die Suchfunktion benutzt haben und nicht enttäuscht einen Beitrag ohne Antwort finden wollen, etwas anzureichern, hier ein Lösungsvorschlag.

Zwar wird die Sprachauswahl nicht so hübsch in einem drop down verpackt, doch immerhin.


//Einfügen der Sprachauswahl
echo'
<a href="javascript:window.location += (window.location.href.indexOf(\'?\') != -1 ? \';\' : \'?\') + \'language=german\';void(0);"><img src="', $settings['images_url'], '/de.gif" border="0px" alt="De" /></a>
<a href="javascript:window.location += (window.location.href.indexOf(\'?\') != -1 ? \';\' : \'?\') + \'language=english\';void(0);"><img src="', $settings['images_url'], '/us.gif" border="0px" alt="En" /></a><br />
';
//Einfügen der Sprachauswahl


Wohin...
Diese Zeilen gehören in die index.template.php des verwendeten Themas

Ich habe die Zeilen direkt vor
// If the user is logged in, display stuff like their name, new messages, etc.
eingefügt. So erscheint die Auswahl direkt über dem Hallo Gast oder Hallo Mitgliedsname.
Generell kann man sich aber auch einen anderen Platz aussuchen.

Für wenn...
Dieser code erlaubt es, die Forensprache umzustellen. Diese Umstellung ist aber nur temporär. Wenn die Seite geschlossen wird, muss der Leser erneut die Sprache auswählen.
So ist dies vor allem dann interessant, wenn viele Gäste das Forum lesen, den Mitglieder werden ohnehin die bevorzugte Sprache in ihrem Profil einstellen.

Welche Sprache...
Generell lässt sich jede beliebige Sprache verwenden. Das Sprachpaket muss aber vorhanden sein. Es nütz nichts language=french zu benutzen, wenn das französische Sprachpaket nicht verfügbar ist.

Die Bilder, ...
also dieser Teil
<img src="', $settings['images_url'], '/us.gif" border="0px" alt="En" />
müssen natürlich vorher in den images Ordner hochgeladen werden.
Wenn man keine Bilder verwenden will, nimmt man
<a href="javascript:window.location += (window.location.indexOf('?') != -1 ? ';' : '?') + 'language=german';void(0);">...</a>


Wer nun der englischen Sprache mächtig ist, findet eine ausführliche Erklärung dieser Lösung von [Unknown] in folgendem Faden:
http://www.simplemachines.org/community/index.php?topic=17595.0

Habt noch viel Spaß und Erfolg bei dem was Ihr tut.



Lainaa
Mit etwas HTML und PHP Kenntnissen ist dies einfach zu realisieren.

hab's (in einer einfacheren Form) hinbekommen  ;D , Danke
Ach?
Otsikko: Re: Sprachumschaltung mit drop-down-Liste (so wie hier)?
Kirjoitti: noex - joulukuu 04, 2006, 07:00:54 AP
Oder man wagt einen kurzen Bilck ins FAQ Board (http://www.simplemachines.org/community/index.php?board=63.0):
Anleitung: Sprachauswahl für User UND Gäste (mit Flaggen) (http://www.simplemachines.org/community/index.php?topic=123766.0)
Otsikko: Re: Sprachumschaltung mit drop-down-Liste (so wie hier)?
Kirjoitti: Dirk67 - joulukuu 04, 2006, 07:18:09 AP
Lainaus käyttäjältä: ianus - joulukuu 04, 2006, 05:54:36 AP
Um diesen Beitrag, vor allem für Leser die die Suchfunktion benutzt haben und nicht enttäuscht einen Beitrag ohne Antwort finden wollen, etwas anzureichern, hier ein Lösungsvorschlag.

OK dann hier auch noch meine "quick and dirty" Lösung:




// MOD DFB_________________________________________________________--

echo '<form action="http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '" method="post" class="smalltext" style="float: right;">';

?>

<label for="language_select" class="smalltext">language:</label>
<select id="language_select" name="language" onchange="this.form.submit()" class="smalltext">
  <option value="" selected="selected">select...</option>
  <option value="german-utf8">German</option>
  <option value="english-utf8">English</option>
  <option value="french-utf8">French</option>
  <option value="spanish-utf8">Spanish</option>
</select>&nbsp;<noscript><input type="submit" value="Go" /></noscript>
</form>


<?php
echo '<span class="middletext">';

// MOD DFB END _________________________________________________________--


diese Zeilen einfügen vor:
// If the user is logged in, display stuff like their name, new messages, etc.
if ($context['user']['is_logged'])
{
echo '



Vor diesen einzufügenden Zeilen steht der Block:
if (!empty($context['user']['avatar']))
echo '
<td class="windowbg" valign="middle">', $context['user']['avatar']['image'], '</td>';

echo '
<td colspan="2" width="100%" valign="top" class="windowbg2"><span class="middletext">';


Dort entfernt man das <span class="middletext"> (um validen Code zu erzeugen [kein <form> innerhalb <span>])
der Block wird also zu:
if (!empty($context['user']['avatar']))
echo '
<td class="windowbg" valign="middle">', $context['user']['avatar']['image'], '</td>';

echo '
<td colspan="2" width="100%" valign="top" class="windowbg2">';


Diese Lösung kann noch verbessert werden, indem man erkennt welche Sprache der User gerade gewählt hat und dementsprechend das selected="selected" setzt...

Ebenso kann man natürlich die drop-down Liste dynamisch erzeugen lassen mit den Sprachen die installiert sind.
Wie das geht, kann man abgucken in den Profil-Settings unter .../index.php?action=profile;u=xxx;sa=account

....