---
title: "Olika språk på en websida"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/66607-olika-språk-på-en-websida"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Fuel"
published: "2003-01-30T09:43:46.000Z"
updated: "2008-02-28T11:57:10.000Z"
replies: 14
views: 20587
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/66607-olika-språk-på-en-websida"
---

# Olika språk på en websida

## #1 — Fuel, 2003-01-30T09:43Z

language_sv.php

```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
<?php
// language_de.php ----------
define("_WELCOME_","Villkommen");
define("_LINUX_","Slackware");
define("_WEBFORUM_","Eine kleine forum");
?>
```

main.php

```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
<?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
<?php
// index.php ----------
include "main.php";
echo _WELCOME_;
?>
```

Permalänk: https://www.webforum.nu/p/66607

## #2 — Compusa, 2006-02-09T14:19Z

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
<?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;
}
?>
```

Permalänk: https://www.webforum.nu/p/1762752

## #3 — @nders, 2006-02-12T07:42Z

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:

```php
$loc = $_SERVER['HTTP_REFERER'];
if (empty($loc)) 
      $loc = "/index.asp";
header('Location: '. $loc);
```

Mvh

Permalänk: https://www.webforum.nu/p/1763559

## #4 — Fuel, 2006-02-15T17:18Z

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å.

Bilagor:

- [language_kit.rar](https://www.webforum.nu/a/9723.rar)

Permalänk: https://www.webforum.nu/p/1768489

## #5 — Guldstrand, 2007-10-01T19:17Z

Försökte använda Fuels lösning, men något strular.

```php
Parse error: parse error, unexpected ':' in /home/var/*****/lang.php on line 23
```

**Line 23:**

```php
    	deafult:  //<--- detta som strular
    		die("No such language!";

    }
```

Jag kanske har missat något?   :q

Permalänk: https://www.webforum.nu/p/2035910

## #6 — Compusa, 2007-10-01T19:21Z

```php
    	deafult:  //<--- detta som strular
    		die("No such language!");

    }
```

En missad slutparentes.

Permalänk: https://www.webforum.nu/p/2035912

## #7 — spango, 2007-10-02T08:27Z

Plus att det stavas "default"... ;)

Permalänk: https://www.webforum.nu/p/2036018

## #8 — Compusa, 2007-10-02T18:46Z

Inte många rätt m.a.o. ;)

Permalänk: https://www.webforum.nu/p/2036157

## #9 — Guldstrand, 2007-10-02T20:47Z

\------------

Permalänk: https://www.webforum.nu/p/2036216

## #10 — Guldstrand, 2007-10-03T15:25Z

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
<?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";
}
?>
```

Permalänk: https://www.webforum.nu/p/2036347

## #11 — colione, 2007-10-03T15:38Z

```php
switch ($_GET['type'])
```

Permalänk: https://www.webforum.nu/p/2036349

## #12 — Guldstrand, 2007-10-03T15:45Z

> **colione skrev:**
>
> ```php
> 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.

Permalänk: https://www.webforum.nu/p/2036352

## #13 — Vetinte, 2008-01-08T09:06Z

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?

Permalänk: https://www.webforum.nu/p/2068737

## #14 — vic, 2008-02-15T00:26Z

> **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
<?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>
```

Permalänk: https://www.webforum.nu/p/2079826

## #15 — Vetinte, 2008-02-28T11:57Z

Ja det funkar inte. Hur ska jag döpa språk filerna ska dem heta sv.php eller?
Tack för hjälp.

Permalänk: https://www.webforum.nu/p/2085372

---

Tråden på webben: https://www.webforum.nu/amne/php/66607-olika-språk-på-en-websida
