[Kritik] Välja språk på sida (PHP)

Permalänk
Medlem

[Kritik] Välja språk på sida (PHP)

Tjena

Jag har en sida som jag ville ha två språk på, googlade lite men hittade inget som passade, så jag gjorde min egen.

Här är grunden till koden:

index.html:

<html> <head> <title> Language test </title> </head> <body> <a href="lang.php?language=sv">Svenska</a> <br> <a href="lang.php?language=en">Engelska</a> </body> </html>

lang.php:

<?php session_start(); if (!isset($_GET['language'])){ header("Location: index.html"); exit; } $lang = $_GET['language']; $_SESSION['language'] = $lang; header ("Location: start.php"); ?>

start.php:

<?php session_start(); if (!isset($_SESSION['language'])){ header("Location: index.html"); exit; } ?> <html> <head> <title> Language test - 2 </title> </head> <body> <?php $sv = "sv"; $en = "en"; if ($_SESSION['language'] == $sv) { echo "Svenska"; } if ($_SESSION['language'] == $en) { echo "Engelska"; } ?> </body> </html>

Vad tycks???

mvh Fredrik

Permalänk
Medlem

I Start.php, har jag helt fel eller gör inte den där if-satsen så att om man har valt svenska, skriver den ut svenska och tvärtom.

Borde det inte vara tvärtom för att man enkelt ska kunna byta språk, man vet väl ändå vilket språk man läser på.

Sen borde det nog stå English ist. för svenska, svenskar som föredrar att läsa på engelska är det nog ont om.

Visa signatur

» Medlem i signaturgruppen militanta Appleanvändare
» Mac mini, G4 1,42GHz, 512MB ram

Permalänk
Medlem

Hmm, kanske skulle beskrivit hur jag menade. När man öppnar sidan så kommer man ju till index.html. Där får man välja vilket språk man vill ha, svenska eller engelska. Infon om vilket val man gör skickas i $_GET till lang.php. Den läses $_GET av och stoppas sen i en session, så att man hela tiden har sidan i rätt språk, också slungas man vidare till start.php. Där kollas med den andra if-satsen vilket språk man valt, och innehållet visas på det språket. Just nu består innehållet av "Svenska" eller "Engelska", vilket ju naturligtvis ska anpassas sen, likaså länkarna i index.html - det bara blev den svenska stavningen.

if (!isset($_SESSION['language'])){ header("Location: index.html"); exit; }

Den här satsen kollar om någon session är satt, om inte slungas man till index.html för att välja språk, om session är satt så tar nästa if-sats över och visar innehållet.

En brist med detta script är ju att sessions dör efter 3h. Men det kan man ju fixa till genom att sätta en cockie.

mvh Fredrik

Permalänk
Medlem

Skrev själv en klass för att hantera olika språk/template (ganska simpelt). Såg ut såhär.

<?php class Template { protected $template_file; public $change_array; function __construct($file) { $this -> template_file = $file; } function parse($value = array()) { $this -> change_array = $value; } function output() { if(isset($this -> change_array)) { extract($this -> change_array); } ob_start(); include($this -> template_file); $value = ob_get_contents(); ob_end_clean(); return $value; } } ?>

lang.php

<?php $eng = array('title' => 'English', 'meny' => 'Menu'); $swe = array('title' => 'Svenska', 'meny' => 'Meny'); ?>

content.php

<html> <head> <title><?php echo $title; ?></title> </head> <body> <?php echo $meny; ?> </body> </html>

index.php

<?php include('lang.php'); $content = New template('content.php'); if(hur du nu sätter session == eng) { $content -> parse($eng); } else { $content -> parse($swe); } echo $content -> output(); ?>