FuelMedlem sedan okt. 20001 285 inlägg language_sv.php
<?php
// By Fuel [email]fuel@linux.nu[/email]
// language_sv.php ----------
define("_WELCOME_","Välkommen");
define("_LINUX_","Slackware");
define("_WEBFORUM_","<a href=\"adress\">WebForum</a>");
?>
language_de.php
<?php
// language_de.php ----------
define("_WELCOME_","Villkommen");
define("_LINUX_","Slackware");
define("_WEBFORUM_","Eine kleine forum");
?>
main.php
<?php
// main.php ----------
// på alla dina sidor
// kollar om en kaka är satt
if (isset($_COOKIE['language'])) {
$lang = $_COOKIE['language'];
} else {
$lang = "sv";
}
// inkluderar rätt språk fil
$langfile = $_SERVER['DOCUMENT_ROOT']."/language/language_".$lang.".php";
if (file_exists($langfile)) {
include $langfile;
} else {
echo "<h2>Hold your horses!</h2>";
echo "Document language-file is missing!<br />\n";
echo "<a href=\"http://www.microsoft.com\">Some link</a>";
exit;
}
?>
<!-- Länkar -->
<a href="/lang.php?action=set_language&type=sv"><img class="lang" src="/images/sv.gif" alt="Svenska" /></a>
<a href="/lang.php?action=set_language&type=de"><img class="lang" src="/images/de.gif" alt="Deutsch" /></a>
lang.php
<?php
// lang.php ----------
// Spara ditt val i en kaka
if ($_GET['action'] == "set_language") {
setcookie('language',$type,(time()+2592000),'/','',0);
header ("location: /index.php");
exit;
}
?>
Dina sidor..
<?php
// index.php ----------
include "main.php";
echo _WELCOME_;
?>
CompusaMedlem sedan jan. 20023 327 inlägg Jag har gjort två ändringar i filen lang.php. Denna fil fungerade inte med "register_globals = off", det är nu fixat. Ändrade också så att man skickas till den sidan man var på när man byter språk. I den förra versionen skickas man alltid till index-sidan.
<?php
// lang.php ----------
// Spara ditt val i en kaka
if ($_GET['action'] == "set_language") {
setcookie('language',$_GET['type'],(time()+2592000),'/','',0);
header('Location: '.$_SERVER['HTTP_REFERER']);
exit;
}
?>
@ndersMedlem sedan juni 200032 969 inlägg Kom dock ihåg att HTTP_REFERER inte alltid har ett vettigt värde, då vissa brandväggar (exempelvis Norton Internet Security) tycker det är skojigt att tömma den headern. Compusas förbättring kommer således inte alltid att fungera. Kanske skall man kontrollera detta med en if-sats, typ:
$loc = $_SERVER['HTTP_REFERER'];
if (empty($loc))
$loc = "/index.asp";
header('Location: '. $loc);
Mvh
FuelMedlem sedan okt. 20001 285 inlägg Updaterat
inga större förändringar .. lite småfixat & så.. typ
header.php
<?
// --------------------
// header.php
// --------------------
if ($_COOKIE['language']) {
$settings = explode("|", $_COOKIE['language']);
$lang = $settings[0];
$charset = $settings[1];
} else {
$lang = "sv";
$charset = "ISO-8859-1";
}
// inkluderar rätt språk fil
$langfile = $_SERVER['DOCUMENT_ROOT']."/language/language_".$lang.".php";
if (file_exists($langfile)) {
include $langfile;
} else {
echo "<h1>Error!</h1>\n";
echo "<h2>Document language-file is missing!</h2>\n";
echo "<p>Contact webmaster : <a href=\"mailto:webmaster@microsoft.com?subject=Language\">here</a></p>";
exit;
}
if ($_COOKIE['style']) {
$css = $_COOKIE['style'];
} else {
$css = "standard";
}
if (stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml")) {
header("Content-type: application/xhtml+xml; charset=" . $charset);
echo "<?xml version=\"1.0\" encoding=\"" . $charset . "\"?>\n";
echo "<?xml-stylesheet href=\"/styles/" . $css . ".css\" type=\"text/css\" media=\"screen\"?>\n";
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n";
echo "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"" . $lang . "\">\n";
echo "<head>\n";
} else {
header("Content-type: text/html");
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n";
echo "<html lang=\"" . $lang . "\">\n";
echo "<head>\n";
echo "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . $charset . "\" />\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/" . $css . ".css\" />\n";
}
?>
<title>domain dot com</title>
</head>
<body>
<ul>
<li><a href="/lang.php?action=set_language&type=sv">Svenska</a></li>
<li><a href="/lang.php?action=set_language&type=de">Deutsch</a></li>
<li><a href="/lang.php?action=set_language&type=en">English</a></li>
</ul>
lang.php
<?
// --------------------
// lang.php
// --------------------
if ($_GET['action'] == "set_language") {
switch ($type)
{
case "de":
$my_lang = "de";
$my_charset = "ISO-8859-1";
break;
case "en":
$my_lang = "en";
$my_charset = "UTF-8";
break;
case "sv":
$my_lang = "sv";
$my_charset = "ISO-8859-1";
break;
deafult:
die("No such language!";
}
$lang_settings = $my_lang . "|" . $my_charset;
setcookie('language',$lang_settings,(time()+2592000),'/','',0);
$loc = $_SERVER['HTTP_REFERER'];
if (empty($loc)) {
$loc = "/lang.php";
}
header('Location: '. $loc);
exit;
} else {
include "includes/header.php";
echo "<p>" . _LANGUAGE_ . "</p>";
include "includes/footer.php";
}
?>
Dina sidor..
<?
// --------------------
// index.php
// --------------------
include "includes/header.php";
echo "<h2>" . _WELCOME_ . "</h2>";
?>
<?
include "includes/footer.php";
?>
Alla filer finns med i rar filen, bara att packa upp & testa. Jag har själv dock inte testat :) reservation för småfel..
Edit: ehum.. har redan "glömt" lite som nu fattas i rar-filen, bl.a att kunna välja engelska i header.php och @nders redirect i lang.php .. men .. wtf .. det här är ändå mest ett exempel som kan vara en grund att spinna vidare på.
Försökte använda Fuels lösning, men något strular.
Parse error: parse error, unexpected ':' in /home/var/*****/lang.php on line 23
Line 23:
deafult: //<--- detta som strular
die("No such language!";
}
Jag kanske har missat något? :q
CompusaMedlem sedan jan. 20023 327 inlägg deafult: //<--- detta som strular
die("No such language!");
}
En missad slutparentes.
spangoMedlem sedan juni 20008 205 inlägg Plus att det stavas "default"... ;)
CompusaMedlem sedan jan. 20023 327 inlägg Inte många rätt m.a.o. ;)
Tack för hjälpen.
Men jag måste ha missat något mer för jag får bara "No such language!" hela tiden. :r
Här är koden i lang.php
<?php
// --------------------
// lang.php
// --------------------
if ($_GET['action'] == "set_language") {
switch ($type)
{
case "de":
$my_lang = "de";
$my_charset = "ISO-8859-1";
break;
case "en":
$my_lang = "en";
$my_charset = "UTF-8";
break;
case "sv":
$my_lang = "sv";
$my_charset = "ISO-8859-1";
break;
default:
die("No such language!");
}
$lang_settings = $my_lang . "|" . $my_charset;
setcookie('language',$lang_settings,(time()+2592000),'/','',0);
$loc = $_SERVER['HTTP_REFERER'];
if (empty($loc)) {
$loc = "/lang.php";
}
header('Location: '. $loc);
exit;
} else {
include "includes/header.php";
echo "<p>" . _LANGUAGE_ . "</p>";
//include "includes/footer.php";
}
?>
colione skrev:
switch ($_GET['type'])
Det verkade fungera bättre. :e
Ska pilla lite med detta nu ett tag. Hör av mig om det strular igen.
VetinteMedlem sedan jan. 20086 inlägg Automatisk
<?php
// main.php ----------
// på alla dina sidor
// kollar om en kaka är satt
if (isset($_COOKIE['language'])) {
$lang = $_COOKIE['language'];
} else {
$lang = "sv";
}
// inkluderar rätt språk fil
$langfile = $_SERVER['DOCUMENT_ROOT']."/language/language_".$lang.".php";
if (file_exists($langfile)) {
include $langfile;
} else {
echo "<h2>Hold your horses!</h2>";
echo "Document language-file is missing!<br />\n";
echo "<a href=\"http://www.microsoft.com\">Some link</a>";
exit;
}
?>
<!-- Länkar -->
<a href="/lang.php?action=set_language&type=sv"><img class="lang" src="/images/sv.gif" alt="Svenska" /></a>
<a href="/lang.php?action=set_language&type=de"><img class="lang" src="/images/de.gif" alt="Deutsch" /></a>
På detta vis blir språk alltså svenska men hur eller på vilken sätt kan man ändra kod så att språk på sidan blir den som man har i sin webbläsare samma som har exempel Google, i så fall finns inte den språk som finns på sidan blir exempel svenska som först, kan någon sånt?
vicMedlem sedan apr. 2006244 inlägg
Vetinte skrev:
På detta vis blir språk alltså svenska men hur eller på vilken sätt kan man ändra kod så att språk på sidan blir den som man har i sin webbläsare samma som har exempel Google, i så fall finns inte den språk som finns på sidan blir exempel svenska som först, kan någon sånt?
Typ så här borde väl gå fint, finns inte rätt språkfil så inkluderar man default språket. Vill man byta språk så anropar man ?lang=annat_språk. Det bygger på HTTP_ACCEPT_LANGUAGE (ex: en/sv/fi/de för engelska/svenska/finska/tyska) så man måste döpa språkfilerna rätt
<?php
// main.php ----------
// inkludera följande funktion på samtliga sidor
function site_language($lang = NULL)
{
$lang_dir = $_SERVER['DOCUMENT_ROOT'].'/language/';
if(isset($_COOKIE['language']) && $lang == NULL) {
return $_COOKIE['language'];
}
else {
if($lang == NULL) {
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
}
if(file_exists($lang_dir.$lang.'.php') == false) {
$lang = 'sv'; // default språk
}
setcookie('language', $lang, time()+31536000, '/');
return $lang;
}
}
// Inkludera språkfilen
include site_language( (isset($_GET['lang'])) ? $_GET['lang']:NULL )'.php';
?>
<!-- Länkar -->
<a href="/lang.php?action=set_language&type=sv"><img class="lang" src="/images/sv.gif" alt="Svenska" /></a>
<a href="/lang.php?action=set_language&type=de"><img class="lang" src="/images/de.gif" alt="Deutsch" /></a>
VetinteMedlem sedan jan. 20086 inlägg Ja det funkar inte. Hur ska jag döpa språk filerna ska dem heta sv.php eller?
Tack för hjälp.