• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Je nach Sprache, anderes class="" verwenden

  • Ersteller Ersteller matibaski
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
M

matibaski

Guest
Moin!
Habe einen Auftrag, bei dem ich eine 3-sprachige Webseite erstellen soll.
Mein Problem ist beim Logo.
Ich habe es so:
In der style.css sind drei Headers angegeben:
Code:
.top_de {
background-image:url(images/logo_de.gif);
}

.top_hr {
background-image:url(images/logo_hr.gif);
}

.top_en {
background-image:url(images/logo_en.gif);
}

de = Deutsch, hr = Kroatisch, en = Englisch.

Und nun habe ich die class=""-Angabe momentan so:
PHP:
  <td height="141" class="<?php if($_GET['lang'] = 'de') { echo'top_de'; } if($_GET['lang='] = 'hr') { echo'top_hr'; } if($_GET['lang'] = 'en') { echo'top_en'; } ?>" valign="top"></td>

So dachte ich es, aber es funktioniert es nicht.
Es soll wenn lang=de zum Beispiel angegeben ist, class="top_de" heissen, und somit das deutsche Logo einbinden. Doch es funktioniert nicht.

MfG, matibaski
 
PHP:
<?php
$browser = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
$lang = substr($browser,0,2);
if($lang == "de") 
{
  $css = "background-image:url(images/logo_de.gif);";
} 
else if($lang == "en")
{
  $css = "background-image:url(images/logo_en.gif);";
}
else
{
  $css = "background-image:url(images/logo_hr.gif);";
}
?>
<html>
<head>
<style>
.top {
<?php echo $css; ?>
}
</style>
</head>
<body>
<table>
<tr>
<td height="141" class="top" valign="top"></td> 
</tr>
</table>
</body>
</html>
 
PHP:
$lang = array("de" => "top_de",
              "en" => "top_en",
              "hr" => "top_hr");
if(array_key_exists($_GET['lang'], $lang)){
echo "<td ... class=\"".$lang[$_GET['lang']]."\" >";
} else {
echo "<td ... class=\"top_de\" >";
}

Sollte so funktionieren.

@frank: Ich vermute mal dass er das so machen will, dass der User selber aussuchen kann welche Sprache er will ;)
 
PHP:
class="top_<?=$_GET['lang'];?>"

würds auch tun...vorher vielleicht prüfen ob in get was steht

PHP:
if(empty($_GET['lang'])) $_GET['lang'] = "de";

Gruß jan
 
Danke, für alle drei Antworten. Ich benutze aber die Lösung von pennywise, da diese am kürzesten ist.

@ pennywise
Wie kommst du auf:
PHP:
<?=
Würde mich noch interessieren.

MfG, matibaski
 
das ist die kurzform von
PHP:
<? echo $_GET['lang']; ?>

das = macht also nix anderes als echo nur das es halt kürzer ist und als php ausgabe reicht wenn du nix anderes machen willst (wie if abfragen oder so. Also wenn du innerhalb eines dokumentes nur mal eben den inhalt einer variable ausgeben willst reicht <?=$varible;?>

Gruß Jan
 
Ok, werd ich mir merken.

Da wir schon bei meiner 3-Sprachigen Seite sind.
Ich habe ein Problem mit den includes.
Es ist so:
ich habe eine function(), die je nach lang= angabe, die Datei von einem Ordner holt.
Doch nun ist mein Problem folgendes:
Bei einem Include erscheinen lauter Fragezeichen und hieroglyphen.

Hier könnt ihr es anschauen:
http://habboville.paradoxe.de/Baskavoda/index.php?lang=de

Also wenn die Deutsche Sprache iengestellt ist, dann ist alles ok.
Aber klickt mal auf der rechten Seite auf eine Sprache.
Dort erscheinen alles Hieroglyphen.

Includet habe ich sie so:
PHP:
      <?php
      $site = $_GET['lang'];
      $lang = $_GET['lang'];
      includeLang($site, $lang);
      switch($site)
      {
       default: include("$lang/left.php"); break;
       case 'navig' : include("$lang/left.php"); break;
      }
      ?>
Meine Funktion ist diese:
PHP:
<?php
function includeLang($site, $lang)
{
  if(!file_exists('./'.$lang)) // Wenn der ordner in dieser Sprache nicht exsistiert.
  {
    $lang = 'hr'; // Standardsprache anzeigen.
  }

  if(file_exists('./'.$lang.'/'.$site)) // Wenn die angeforderte datei exsistiert
  {
    include('./'.$lang.'/'.$site); // Datei in der entsprechenden sprache einbinden.
  } 
  else //Wenn nicht
  {
    $lang = 'de'; // Standardsprache anzeigen.
  }  
}
  if(!isset($_GET['lang'])) //Wenn die Sprache nicht bestimmt ist
   {
    $_GET['lang'] = 'hr'; // Standardsprache anzeigen.
   }
   
    if(!isset($_GET['site'])) //Wenn der Inhalt nicht bestimmt ist
   {
    $_GET['site'] = 'home'; // Standart wählen.
   }
?>
Ich weiss nicht was falsch ist.

Also die Datei left.php sieht so aus:
Code:
Adresse:<br>
Ul. Ivana mestrovića 11<br>
Baška voda
<hr noshade color="#000000" size="1">
Sprache:<br>
● <a href="index.php?lang=hr">Kroatisch</a>'; ?><br>
● <i>Deutsch</i><br>
● <a href="index.php?lang=de">Englisch</a>
Und je nach Sprache sind es zwei verschiedene Links.

Ich blicke da nicht ganz durch.

MfG, matibaski

edit:
Habs gelöst.
Ich musste nur Sprachen angeben:
HTML:
<meta http-equiv="Content-Language" content="de-ch">
<meta http-equiv="Content-Language" content="en">
<meta http-equiv="Content-Language" content="hr">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />

Macht sich zwar nicht gut im Quellentext, aber was solls.

MfG, matibaski
 
Zuletzt bearbeitet von einem Moderator:
mmh..sowas wird meist nur angezeigt wenn der user die entsprechenden schriftzeichen nicht installiert hat.
aber dafür sind mir zwei andere sachen aufgefallen.

1.
HTML:
<a href="index.php?lang=hr">Kroatisch</a>'; ?><br>

was soll den da der PHP tag am ende ? naja..war wohl nur ein versehen.

2.
PHP:
switch($site)
{
   default: include("$lang/left.php"); break;
   case 'navig' : include("$lang/left.php"); break;
}

das würd ich mal umdrehen denn in der der regel kommt der default eintrag am schluss da ein script von oben nach unten abgearbeitet wird und die einträge unter default meiner meinung nach ignoriert werden.

wird dir zwar jetzt leider bei deinem problem nicht weiter helfen aber mir war gerade öde und ich wollts loswerden ^^ nix für ungut

Gruß Jan

ps: noch was um dateigrößen zu reduzieren
sowas
PHP:
if(!isset($_GET['lang'])) //Wenn die Sprache nicht bestimmt ist
   {
    $_GET['lang'] = 'hr'; // Standardsprache anzeigen.
   }
kann man in eine reihe schreiben

PHP:
if(!isset($_GET['lang'])) $_GET['lang'] = 'hr';
 
Zuletzt bearbeitet:
Bei der Kürzung von !isset($_GET['lang'])

Sollten dort nicht Klammern stehen?
Also so:
PHP:
if(!isset($_GET['lang'])) { $_GET['lang'] = 'hr'; }

MfG, matibaski
 
nein...die geschweiften klammern brauchst du nur wenn du das if über mehrer zeilen verteilst damit php weis das die anweisung in den nächsten zeilen weitergeht. nur das ; nicht vergessen am ende wie bei jeder anweisung ;)

Gruß jan
 
OK werd ich mir merken.
Anscheinend bist du so ein Abkürzungs-Mensch. ;)

MfG, matibaski
 
ich muss sagen sehr gute page und ich kenne mich auch nicht php aus:twisted:.
aber: ich würde beim menü das ganze als link machen und nicht nur die schrift
...
gruß elpee
 
dobar dan mati (ja, ich kann auch ein bisschen hr ^^),

also ich würd' das ja ganz anders angehen:
die class-namen bleiben immer gleich, aber je nachdem, ob es hr, de oder en ist, soll jedesmal ein anderes style-sheet eingebaut werden.
das wäre einfacher zu machen, als jedesmal die ganzen klassen abzuändern.

Nils aka XraYSoLo
 
;) Ok. Gute Idee.
Falls ich dann andere Bilder einbinde, die je nach Sprache anderst sind.

Wieso kannst du Kroatisch? Bist du so halb-Kroate?
Ich komme ursprünglich aus Bosnien. Meine Eltern kommen beide von Bosnien, sind aber Kroaten. Ich bin auch Kroat, bin aber in der Schweiz geboren.

Du? Verwandte die Kroate sind oder einfach im Internet diesen Satz gelesen?

MfG, matibaski
 
nene, ich bin halb-polake, aber mein patenonkel ist kroate. er wohnt in der dalmatischen region nahe split auf der insel brac (dummes apostroph geht nicht auf das c....), da geh' ich seit zehn jahren regelmäßig hin ^^.

Nils aka XraYSoLo
 
In Brac wohnt die Gotte meines Bruders.
Dort gehe ich ab und zu hin.

In Kroatien bin ich meistens in Medulin, nahe Pula (Istrien) oder Bas(ch)ka Voda (Nähe Split).
In Zagreb häng'ich es auch ab und zu.

Aber meistens in Bosnien.

Muss mal gehen. Hab noch einen Handballmatch zu gewinnen.
Grüsse an deinen Patenonkel.

MfG, matibaski
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben