Talen script

Door PHP Newbie, 10 jaar geleden, 5.179x bekeken

Met dit script kun je verschillende talen toevoegen op je site. Dit script werkt met losse bestandjes waar je de text in zet.

Dit is versie 1, er komt nog een versie 2 waarin de talen in een array staan, en waarin het dus gemakkelijker wordt om talen toe te voegen. Uitleg staat genoeg in het script volgens mij.

Veel plezier!

Voorbeeld: http://phphulp.chessweb.eu/?p=talen

Gesponsorde koppelingen

PHP script bestanden

  1. talen-script

 

Er zijn 23 reacties op 'Talen script'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Niek s
niek s
10 jaar geleden
 
0 +1 -0 -1
mooi script!
en goed getimed, ik zocht het net :p
Michael -
Michael -
10 jaar geleden
 
0 +1 -0 -1
Het scriptje dat in de standaard appserv pagina staat lijkt me makkelijker.

dit in je pagina:

$root = "lang";
include("lang/lang.php");

en dan een mapje "lang" met daarin een bestandje lang.php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if (empty($lang)) {
$lang = getenv("HTTP_ACCEPT_LANGUAGE");
}

switch ($lang)
    {
    case
"nl" :
    include("$root/lang-dutch.php");
    break;
    case
"en" :
    include("$root/lang-english.php");
    break;
    default :

    include("$root/lang-dutch.php");
    break;
}

?>

lang-dutch.php (of lang-english.php) ziet er als volgt uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
define("_CHARSET","ISO-8859-1");
define("_TITEL","dit is titel in nederlands");
define("_TEKST","tekstje in nederlands");
?>

(opslaan dus als lang-dutch.php en in /lang zetten of met engelse tekst opslaan als lang-english.php)

en weer in je pagina waar je lang.php include kun je de tekst gewoon zo neerzetten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo _TEKST;
?>

Om de pagina in het engels te doen verander je index.php in index.php?lang=en
Mebus  Hackintosh
Mebus Hackintosh
10 jaar geleden
 
0 +1 -0 -1
En wat nou als de taal: nl, en is? want dat is bij mij het geval:p

GR. mebus!
PHP Newbie
PHP Newbie
10 jaar geleden
 
0 +1 -0 -1
f ($browlang[0] == 'nl') //als sessie niet is gezet en browsertaal is 'nl', dan is $lang 'nl'
{
$lang = 'nl';
}
else //als de browsertaal niet 'nl' is en de sessie is niet geset, dan is de browsertaal 'en'
{
$lang = 'en';
}

dus dan wordt het 'en' ;-)

maar dit script is lang niet perfect, maar ik heb er best hard aan gewerkt, dus ik dacht, ik post het toch maar ;-)
DDragonz
DDragonz
10 jaar geleden
 
0 +1 -0 -1
Ik post eens een keer mijn taal script die wel gebruik maakt van super arrays. Bv $array['afdeling']['context'] = "";
Robert Deiman
Robert Deiman
10 jaar geleden
 
0 +1 -0 -1
Quote:
Ik post eens een keer mijn taal script die wel gebruik maakt van super arrays. Bv $array['afdeling']['context'] = "";


Super arrays?? Die zijn nieuw voor mij ;) Je bedoelt zeker Multidimensionale arrays..
Hipska BE
Hipska BE
10 jaar geleden
 
0 +1 -0 -1
even vermelden dat het instellen van de talen op je voorbeeld niet werkt!

*tip: kijk eens wat er in je link komt te staan en wat er zou moeten staan
PHP Newbie
PHP Newbie
10 jaar geleden
 
0 +1 -0 -1
Bedankt Hipsa, ik ga het zo snel mogelijk even aanpassen ;-)

edit:

het probleem is opgelost ;-)
Pjotr
Pjotr
10 jaar geleden
 
0 +1 -0 -1
Kan er iemand voor mij een werkend script mailen (de verschillende files)

ik wil ook zoiets maken, maar dan ook met een keuze net als in het voorbeeld staat. Maar ik kom er echt niet uit
PHP Newbie
PHP Newbie
10 jaar geleden
 
0 +1 -0 -1
dit is precies hetzelfde script als wat ik in het voorbeeld heb staan hoor ;-)
Niek Kasius
Niek Kasius
10 jaar geleden
 
0 +1 -0 -1
ik snap ff niet wat de bedoeling van dit script is, je gaat me toch niet wijs maken dat dit script je site in een andere taal laat zien als je op een taal klikt?
Niek Kasius
Niek Kasius
10 jaar geleden
 
0 +1 -0 -1
ik heb het ff getest en mijn vermoede klopte ook nog. het was ook te mooi om waar te zijn, ik heb het ook geinclude in mijn site, met dit is het resultaat wat ik te zien krijg:
The main language file couldn't be found, please contact the webmaster at: mail@adres.ext
Arend a
Arend a
10 jaar geleden
 
0 +1 -0 -1
Nee, natuurlijk niet. Het is een methode om je site in verschillende talen te zetten. De vertaling moet je zelf maken.
Niek Kasius
Niek Kasius
10 jaar geleden
 
0 +1 -0 -1
dus je moet eerst al de pagina's van je site vertalen en dan dit script gebruiken begrijp ik? maar dan kan ik toch net zo goed <a href="">engels</a>, duits of in wat voor taal ik het vertaald heb gebruiken. of zie ik dat verkeerd?
Arend a
Arend a
10 jaar geleden
 
0 +1 -0 -1
Verklaar je nader?
Niek Kasius
Niek Kasius
10 jaar geleden
 
0 +1 -0 -1
oke ik verklaar mij nader! mijn website is de nedelandse taal en ik vertaal die in het engels. dat hoef ik die toch alleen maar een naam te geven en op te slaan als php of html een link te plaatsen in de startpagina naar die vertaling met <a href=""> .en zo kan ik toch ieder vertaling doen, alleen als ik elke taal die er op de wereld is vertaal ja dan wordt het een beetje druk met die linken.

Arend schreef op 01.08.2006 01:45
Nee, natuurlijk niet. Het is een methode om je site in verschillende talen te zetten. De vertaling moet je zelf maken.

Dus waarom zou ik dat script gebruiken als ik het toch allemaal zelf moet doen. pas op dit is geen kritiek hoor maar ik heb gekeken in het voorbeeld maar ik snap de bedoeling er niet van. want daar staan ook 2 linken
PHP Newbie
PHP Newbie
10 jaar geleden
 
0 +1 -0 -1
hierbij staan al je teksten in 1 bestand, dit is makkelijk als je iets aan moet passen, verder kun je met dit script gewoon 1x de lay-out schrijven, en daarin het goede bestand includen
Niek Kasius
Niek Kasius
10 jaar geleden
 
0 +1 -0 -1
dus als ik het goed begrijp sla ik alle vertalingen op in een bestand en dat include in de lay-out en dan zet dit script het op de juiste plaats?
CrawlBackwards
CrawlBackwards
9 jaar geleden
 
0 +1 -0 -1
is het niet makkelijk om een multidimensional array te maken als:
$taal["nl"]["title"] = "nederlandse titel"
$taal["en"]["title"] = "english title"
een sessie aan te maken waarin in dit geval de string "nl" of "en" komt en de taal in de pagina zelf te laten zien als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<title>
<?php echo $taal[$_SESSION["taal"]]["title"];
?>

</title>


oid
My
My
9 jaar geleden
 
0 +1 -0 -1
Dankje, ik zocht al wat langer zoiets....

props, lekker simpel in elkaar gezet.
Jurgen
Jurgen
8 jaar geleden
 
0 +1 -0 -1
even een vraagje over het script van turmin
Wat moet ik nu bovenaan de pagina zetten dat hij onthoud welke taal er is geselecteerd
Leon Kunst
Leon Kunst
8 jaar geleden
 
0 +1 -0 -1
Hij bepaald de taal a.d.v. de url als ik dat zo vluchtig even lees.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? index.php?lang=en ?>


Of je kunt het in een cookie wegschrijven.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Adriaan Biesheuvel
Adriaan Biesheuvel
6 jaar geleden
 
0 +1 -0 -1
Ik weet niet zoveel van PHP
Ik wil een site maken met meerdere talen.
Ik probeerde dit script maar ik krijg een fout melding.
Deze melding
The main language file couldn't be found, please contact the webmaster at:
Nu is mijn vraag ik heb alles gedaan zoals het beschreven staat maar het werkt niet.
Het volgende heb ik gedaan.

index.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
error_reporting(E_ALL);
session_start();

$langmap = 'lang'; //de map waar je de bestanden in hebt staan voor de talen (zet hier géén '/' neer aan het eind
$ext = '.php'; //extensie voor de language files
$geentaal1 = 'The language file couldn\'t be found, please wait a moment'; // error voor als het taalbestand niet gevonden kon worden
$geentaal2 =  'The main language file couldn\'t be found, please contact the webmaster at: <a href=mailto:info@hiaonline.eu>info@hiaonline.eu</a>'; //error voor als het taal bestand niet gevonden kon worden na retry
$nietbesttaal = '<b>Error!</b> Dit is een niet bestaande taal.'; //error bij het selecteren van een niet bestaande taal

/*
met dit script kun je versschillende talen op je website neerzetten. Dit script werkt met sessies.
hierboven staan een paar variabelen die je aan moet passen, zodat het script goed werkt ;-)

Succes ermee!
Php newbie
www.phphulp.nl
*/


$browlang = $_SERVER['HTTP_ACCEPT_LANGUAGE']; //browserinfo ophalen
$browlang = explode(",", $browlang); //browserinfo splitsen
$browlang = strtolower(array_shift($browlang)); //kleine letters maken

if (isset ($_SESSION['lang'])) //als sessie is geset, dan is $lang de sessie taal
{
    $lang = $_SESSION['lang'];
}

elseif ($browlang[0] == 'nl') //als sessie niet is gezet en browsertaal is 'nl', dan is $lang 'nl'
{
    $lang = 'nl';
}

else //als de browsertaal niet 'nl' is en de sessie is niet geset, dan is de browsertaal 'en'
{
    $lang = 'en';
}


$langfile = $langmap.'/'.$lang.$ext;//variabele maken van de taal url

if (file_exists($langfile)) //als de langfile bestaan
{
    include ($langmap.'/'.$lang.$ext); // de goede taal file includen
}
else
{
    if(isset($i)) //de $i info ophalen, zodat de pagina niet steeds gerefreshed wordt als de engelse file niet bestaat
    {
        $_SESSION['lang'] = 'en'; //sessiontaal veranderen naar engels
        echo '<meta http-equiv="refresh" content="0;">'; //een meta-refresh neerzetten zodat de taal wordt toegepast
        echo $geentaal1;   //en eventjes een errortje geven
        $i = 1; //even een $i aanmaken
    }
    else
    {
        echo $geentaal2; //error geven
        exit; //stoppen met de pagina
    }
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Pagina</title>
</head>

<body>
<a href='?lang=nl'>Nederlands</a>
<br />
<a href='?lang=en'>English</a>
<br />
<br />
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo _TITEL; ?>



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
    if (isset ($_GET['lang']))
    {

        switch ($_GET['lang']): //switch maken op de $_GET['lang']
            case 'nl': //als de $_GET['lang'] nederlands is:
                $_SESSION['lang'] = 'nl'; //sessiontaal veranderen naar nederlands
                $prev = $_SESSION['vorigepagina']; //vorige pagina in een variabele zetten
                echo '<meta http-equiv="refresh" content="0;url='.$prev.'">'; //een meta-refresh neerzetten naar de vorige pagina
                echo '<br><br><br><div align="center">Taal wordt aangepast naar Nederlands</div>';   //en eventjes melden wat we aan het doen zijn.
            break; //pauzeer het script, zodat niet alles door wordt geschreven
            case 'en': //als de $_GET['lang'] engels is is:
                $_SESSION['lang'] = 'en'; //sessiontaal veranderen naar engels
                $prev = $_SESSION['vorigepagina']; //vorige pagina in een variabele zetten
                echo '<meta http-equiv="refresh" content="0;url='.$prev.'">'; //een meta-refresh neerzetten naar de vorige pagina
                echo '<br><br><br><div align="center">Changing language to English</div>';   //en eventjes melden wat we aan het doen zijn
            break; //pauzeer het script zodat niet alles wordt doorgeschreven
            default: //als de $_GET['lang'] niet nl/en is
                print $nietbesttaal; //even een errortje geven zodat mensen weten dat er ergens een fout zit
            break; //pauzeer het script zodat niet alles wordt doorgeschreven
        endswitch; //einde van het script
    }
    else //als er geen $_GET['lang'] bestaat
    {
        //weergeef hier de pagina.
    }
?>

</body>
</html>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    $_SESSION
['vorigepagina'] = $_SERVER['PHP_SELF'];
?>


Dan de lang directory gemaakt.
en de volgende files in gezet.
lang/lang.php
lang/lang-dutch.php
lang/lang-english.php

lang.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if (empty($lang)) {
$lang = getenv("HTTP_ACCEPT_LANGUAGE");
}

switch ($lang)
    {
    case
"nl" :
    include("$root/lang-dutch.php");
    break;
    case
"en" :
    include("$root/lang-english.php");
    break;
    default :

    include("$root/lang-dutch.php");
    break;
}

?>



lang-dutche.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
define("_CHARSET","ISO-8859-1");
define("_TITEL","dit is titel in nederlands");
define("_TEKST","tekstje in nederlands");
?>


lang-english.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
define("_CHARSET","ISO-8859-1");
define("_TITEL","This title is in english");
define("_TEKST","text in english");
?>


Dit zijn de files wie kan me helpen met dit probleem.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. talen-script

Labels

  • Geen tags toegevoegd.

Navigatie