Author Topic: [Mod] Sprache wählen / Ori. Language Select  (Read 4347 times)

0 Members and 1 Guest are viewing this topic.

Offline Sunny C.

  • Addicted member
  • ******
  • Posts: 1.806
  • I ♥ 4I
    • View Profile
[Mod] Sprache wählen / Ori. Language Select
« on: October 14, 2008, 09:51:11 AM »
Thanks a lot to V@no for the original Mod: http://www.4homepages.de/forum/index.php?topic=4743.0
Danke vielmahls V@no für die Originale Mod: http://www.4homepages.de/forum/index.php?topic=4743.0


*Funktioniert mit  alle 4images Versionen*

Diese Mod wurde von Jan erstellt, wurde aber nie "officiell" veröffentlicht:
http://www.4homepages.de/forum/index.php?topic=3351.0
(Dann wurde die Mod von V@no gepostet.)

------ Übersicht -------------------
Mit dieser mod können die Besucher die Sprache der Seite auswählen.

Es gibt zwei Versions-Arten der Mod:

A: Nutze Dropdown Menüs
B: Benutze Texte oder Bilder als Links


----- Installation -------------------
Step 1.

--- Version A ---

Öffne /includes/page_header.php
Finde:
Code: [Select]
$site_template->register_vars(array(
  "media_url" => MEDIA_PATH,
  "thumb_url" => THUMB_PATH,
Füge davor ein:
Code: [Select]
$query_string = '';
if (!empty($HTTP_GET_VARS)) {
  foreach ($HTTP_GET_VARS as $key => $val) {
    if ($key != "l") {
      $query_string .= ($query_string != '' ? '&' : '?').$key."=".$val;
    }
  }
}
// We add the session id with "&" not "&"
$lang_url = $site_sess->url($PHP_SELF.$query_string, '&');

// Now we can better remove the "l" parameter
$lang_url = preg_replace("/[?|&]l=[^?|&]*/", "", $lang_url);

// We replace "&" with "&" to make it valid XHTML
$lang_url = str_replace("&", "&", $lang_url);

$lang_select  = "<form action=\"".$lang_url."\" method=\"post\">\n";
$lang_select .= "<select class=\"select\" name=\"l\" onChange=\"submit()\">\n";

// Now we open the "lang" folder, read out all available languages
// and add it as options to the dropdown.
$handle = opendir(ROOT_PATH."lang");

while ($folder = @readdir($handle)) {

  if (@is_dir(ROOT_PATH."lang/".$folder) && $folder != "." && $folder != "..") {

    $lang_select .= "<option value=\"".$folder."\"";

    // If the folder name matches the current language,
    // show the option as selected
    if ($folder == $config['language_dir']) {
      $lang_select .= " selected=\"selected\"";
    }

    $lang_select .= ">".$folder."</option>\n";
  }
}

$lang_select .= "</select>\n</form>";

// Register the dropdown code for the template engine
$site_template->register_vars("lang_select", $lang_select);


--- Version B ---

Öffne /includes/page_header.php
Finde:
Code: [Select]
$site_template->register_vars(array(
  "media_url" => MEDIA_PATH,
  "thumb_url" => THUMB_PATH,
Füge davor ein:
Code: [Select]
$query_string = '';
if (!empty($HTTP_GET_VARS)) {
  foreach ($HTTP_GET_VARS as $key => $val) {
    if ($key != "l") {
      $query_string .= ($query_string != '' ? '&' : '?').$key."=".$val;
    }
  }
}
$lang_url = $site_sess->url($PHP_SELF.$query_string, '&');
$lang_url = preg_replace("'&(amp|#38);'i", "&", $lang_url);
$lang_url = preg_replace("/[?|&]l=[^?|&]*/", "", $lang_url);
$lang_url = str_replace("&", "&amp;", $lang_url);
$handle = opendir(ROOT_PATH."lang");
$lang_select = "";
while ($folder = @readdir($handle)) {
  if (@is_dir(ROOT_PATH."lang/".$folder) && $folder != "." && $folder != "..") {
    if ($folder != $config['language_dir']) {
      $lang_select .= "<a class=\"lang\" href=\"".$lang_url.(preg_match("/english/i",$folder) ? "" : ((preg_match("/\?/", $lang_url) ? "&" : "?")."l=".$folder))."\" onMouseOver=\"(window.status='$folder'); return true\" onMouseOut=\"window.status=''; return true\"><img src=\"".TEMPLATE_PATH."/images/".$folder.".gif\" border=\"0\" alt=\"".$folder."\"></a>&nbsp;";
    }else{
    $lang_select .= "<img src=\"".TEMPLATE_PATH."/images/".$folder."2.gif\" border=\"0\" alt=\"".$folder."\">&nbsp;";
    }
  }
}
// Register the dropdown code for the template engine
$site_template->register_vars("lang_select", $lang_select);


Step 2. (für beide Versionen)

Öffne eine Templatedatei, egal welche: (i.e. /templates/<yourtemplate>/home.html) und füge folgenden Tag hinzu:
{lang_select}, dadurch können die User nun die Sprache wählen.



------- Final -----------------------
Dieses Skript scannt /lang/ Ordner und erkennt ob sich dort ebenfalls Ordner befinden und führt diese hinterher in der Liste auf damit der User die Sprache auswählen kann.


------- Hinweis ------------------------
Version B ist um Bilder dafür zu nutzen.
Der Name der Grafiken muss in etwas so aussehen:
language_folder_name.gif - für not für das richtige auswählen der Sprache und
language_folder_name2.gif - für die gerade gewählte Sprache!

Dieser Version beruht auf Session. Das heisst, wenn der Browser geschlossen wird, geht auch die Sprachauswahl wieder verloren.

Es gibt aber auch eine Variante die auf Cookies aufgebaut ist. Hier ist aber auch ein Nachteil vorhanden und zwar, wenn du irgendwann die Cookies deines Browser löscht, geht die Sprachauswahl auch verloren, aber nur wenn genau dieses Cookie auch gelöscht wird.

------- Hier der Einbau für Cookies ------------------------

Öffne: global.php
Finde:
Code: [Select]
if (isset($HTTP_GET_VARS['l']) || isset($HTTP_POST_VARS['l'])) {
  $l = (isset($HTTP_GET_VARS['l'])) ? trim($HTTP_GET_VARS['l']) : trim($HTTP_POST_VARS['l']);
  if (file_exists(ROOT_PATH.'lang/'.$l.'/main.php')) {
    $config['language_dir'] = $l;
  }
}
Ersetze mit:
Code: [Select]
if (isset($HTTP_GET_VARS['l']) || isset($HTTP_POST_VARS['l'])) {
  $l = (isset($HTTP_GET_VARS['l'])) ? trim($HTTP_GET_VARS['l']) : trim($HTTP_POST_VARS['l']);
  if (file_exists(ROOT_PATH.'lang/'.$l.'/main.php')) {
    $config['language_dir'] = $l;
    setcookie('4images_lang', $l, (time()+ 60 * 60 * 24 * 365), "/", "", 0);
  }
}
else
{
  if (isset($HTTP_COOKIE_VARS['4images_lang']) && file_exists(ROOT_PATH.'lang/'.$HTTP_COOKIE_VARS['4images_lang'].'/main.php'))
  {
    $l = $config['language_dir'] = $HTTP_COOKIE_VARS['4images_lang'];
  }
}
Wenn du Version B B nutzt, dann ersetze in includes/page_header.php dieses
Code: [Select]
$lang_select .= "<a class=\"lang\" href=\"".$lang_url.(preg_match("/english/i",$folder) ? "" : ((preg_match("/\?/", $lang_url) ? "&" : "?")."l=".$folder))."\" onMouseOver=\"(window.status='$folder'); return true\" onMouseOut=\"window.status=''; return true\"><img src=\"".TEMPLATE_PATH."/images/".$folder.".gif\" border=\"0\" alt=\"".$folder."\"></a>&nbsp;";mit diesem:
Code: [Select]
     $lang_select .= "<a class=\"lang\" href=\"".$lang_url.(preg_match("/\?/", $lang_url) ? "&" : "?")."l=".$folder."\" onMouseOver=\"(window.status='$folder'); return true\" onMouseOut=\"window.status=''; return true\"><img src=\"".TEMPLATE_PATH."/images/".$folder.".gif\" border=\"0\" alt=\"".$folder."\"></a>&nbsp;";
Finish
« Last Edit: October 14, 2008, 10:12:03 AM by Phisker B »

Offline mawenzi

  • Moderator
  • 4images Guru
  • *****
  • Posts: 4.500
    • View Profile
Your first three "must do" before you ask a question ! ( © by V@no )
- please read the Forum Rules ...
- please study the FAQ ...
- please try to Search for your answer ...

You are on search for top 4images MOD's ?
- then please search here ... Mawenzi's Top 100+ MOD List (unsorted sorted) ...