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

Mehrsprachige Website

T!P-TOP

Mitglied
Will nun meine Website erweitern, indem ich Englisch als zweite Spracheden Usern zur auswahl stelle.

Nur weiß ich nicht wie ich es am besten realisieren könnte!?

Habe mir folgendes überlegt:

Sagen wir ich habe 2 Button, Home und Über mich.

Per Drop Down Feld kann man zwische den beiden Sprachen wechseln.

im php script inhalt.php speicher ich für jede Seite den Inhalt in 2 Variablen.

Auf der Home Seite soll zb stehen "Willkommen auf meiner Homepage". Auf English wäre das ganze "Welcome to my Homepage". Ok

Zum PHP Script.

Dieses Include ich auf jeder Seite ein.

Es sollte ungefähr das enthalten:

<?php
//.....
$inhalt_home_de = 'Willkommen auf meiner Homepage.';
$inhalt_home_en = 'Welcome to my Homepage.';


Tja, per Session überprüf ich ob der user in der letzten Stunde schon auf der Website war - falls nein, wird die Homepage autom. auf Deutsch angezeigt, sprich, die variable $inhalt_home_de wird ausgegeben (enthält von <hx> über links bis zu <p> eingentlich alles).

SO wenn er jetzt beim Select feld English auswählt, wird einfach nicht mehr die variable $inhalt_home_de ausgegeben, sondern eben $inhalt_home_en....


Naja, ob das ganze gut und sicher ist, kann ich jetzt net sagen...wäre klasse wenn ihr mir da bessere Vorschläge bieten könnt oder mir einfach sagen könnt, ob das was ich da geplant hab Gut ist:D

Grüße
Nico
 
Mir persönlich wäre das viel zu aufwending ^^ Das lässt sich doch viel einfacher handeln, wenn du 2 Language-Files schreibst, und jenachdem, welche Sprache aktiviert ist, dessen Language File ausließt. Und wenn du von Sessions zu Cookies wechselst, kannst du das sogar so einstellen, dass die Seite solange Englisch bleibt, bis der Cookie gelöscht wird, sprich bis der Browser geschlossen wird ;D
 
Wieso? So hab ich doch dann mehr Serveranfragen. So brauch ich überhaupt nur EIN Script!
Meine Methode ist doch die selbe wie deine, nur das ich anstatt Language Files "Language PHP Variablen" verwende, die man wechseln kann.
 
Die Struktur die du da hast ist aber ziemlich ungeeignet. Bau lieber was anständiges mit einem Array oder nimm einfach Gettext.
 
Naja, was heißt viele Serveranfragen? Du kannst doch einfach die Datei einmal auslesen lassen und dann cachen. Und mir wären die "Language PHP Variablen" zu anstrengend, weils einfach zu unübersichtlich is (wenn ich nach deinem Beispiel gehe)...
 
Hab mal ein kleines Script (für meine Seite) geschrieben, um Templates und mehrere Sprachen in meine Seite einzubinden:

PHP:
<?php
session_start();
ob_start();
error_reporting('E_ALL');

if(isset($_GET['lang']) && file_exists('lang/' . $_GET['lang'] . '.ini')){
  $_SESSION['LANGUAGE'] = $_GET['lang'];
  header('Location: index.php');
}

if(isset($_SESSION['LANGUAGE']) && $_SESSION['LANGUAGE'] == 'en'){
  $language = 'english';
  $lang = parse_ini_file("lang/en.ini");
} else {
  $language = 'german';
  $lang = parse_ini_file("lang/de.ini");
}

//$content = ob_get_clean(); 
$template = "index.htm";
$str = file_get_contents($template);

preg_match_all("/\[(\w*)\]/", $str, $var, PREG_PATTERN_ORDER);

foreach($var[1] as $wert){
  $str = str_replace('['.$wert.']', "$lang[$wert]", $str);
}

if($language == 'german'){
  echo '<a href="index.php?lang=en">English</a>';
} else {
  echo '<a href="index.php?lang=de">Deutsch</a>';
}
echo $str;
?>
Gut man könnte vieles verbessern, aber das reicht doch auch schon so. Vielleicht kannst du was damit anfangen. Die einzelnen Sprachen sind in ini-Dateien geschrieben, im Template sind die einzelnen Variablen mit eckigen Klammern deklariert, z.B. [Variable] (ich benutze in meinen Templates keine eckigen Klammern ;D). Die Sprache wird in der Session gespeichert und dann dementsprechend wird die ini-Datei ausgewählt.

Timmäh!
 
Gut man könnte vieles verbessern, aber das reicht doch auch schon so.

Naja, was machst du, wenn du z.b. so einen Text hast:

Code:
Es wurden xx Dateien gefunden

Das müßte eigentlich zu folgendem werden:

Es wurden 0 Dateien gefunden.
Es wurde 1 Datei gefunden.
Es wurden 2 Dateien gefunden.
.... usw.

Eine einfache Textersetzung reicht für Sprachdateien nicht aus.
 
Zurück
Oben