PHP - Taal-Bestand

Status
Niet open voor verdere reacties.

marcogtafan

Gebruiker
Lid geworden
14 nov 2006
Berichten
110
Hallo,

In verband met mijn nieuwe website die ik in PHP aan het maken ben, ben ik
op zoek naar een systeem of script wat voor ieder stukje tekst in een bestand
b.v. in de /languages folder in dutch.php zoekt naar de taal van dat stukje tekst,
zodat als ik een stukje tekst wil veranderen, dit vanuit dat bestand kan.
Iemand enig idee ?

Marco.
 
Dit is niet zo heel moeilijk te maken. Je zet in zo'n taalbestand bijvoorbeeld hetvolgende:

/languages/dutch.php
PHP:
<?php

$language["Home"] = "Home";
$language["Information"] = "Informatie";
$language["Contact"] = "Contact";
$language["Dutch"] = "Nederlands";
$language["English"] = "Engels";
$language["Choose"] = "Kiezen";

?>

Vervolgens kun je een taalkiezer maken die de taal in een cookie opslaat:

/changelanguage.php
PHP:
<?php

include "language.php";

if (isset($_POST["language"]) && in_array(stripslashes($_POST["language"]), $languages)) {
    setcookie("language", stripslashes($_POST["language"]), mktime(date("h"), date("i"), date("s"), date("n"), date("j"), date("Y") + 1));
}

?>
<form action="changelanguage.php" method="post">
<select name="language">
<option value="english"><?php echo $language["English"]; ?></option>
<option value="dutch"><?php echo $language["Dutch"]; ?></option>
</select>
<input type="submit" value="<?php echo $language["Choose"]; ?>">
</form>

Dan maak je het bestand waar de taal geselecteerd wordt bij het laden van elke pagina:

/language.php
PHP:
<?php

$languages = array("dutch", "english");
if (isset($_COOKIE["language"]) && in_array($_COOKIE["language"], $languages)) {
    $language = $_COOKIE["language"];
    setcookie("language", stripslashes($_POST["language"]), mktime(date("h"), date("i"), date("s"), date("n"), date("j"), date("Y") + 1));
} else {
    $language = $languages[0];
}

include "languages/" . $language . ".php";

?>

Als laatste include je het bestand in je website en gebruik je de variabelen:

/index.php
PHP:
<?php

include "language.php";

echo $language["Home"];

?>

Ik heb dit uit de losse pols ingtypt, dus er kunnen fouten in zitten. Laat maar weten als er iets niet werkt!
 
Het makkelijkste kan je dat op de volgende manier doen:

dutch.php
PHP:
///////////////////////////////
// Language: Dutch           //
// Creator: Tha Devil        //
///////////////////////////////

$lang = array(
"monday" => "maandag",
"today" => "vandaag",
"name" => "naam",
"message" => "bericht",
//Etc
);
en

default.php
PHP:
///////////////////////////////
// Language: English         //
// Creator: Tha Devil        //
///////////////////////////////

$lang = array(
"monday" => "monday",
"today" => "today",
"name" => "name",
"message" => "message",
//Etc
);

Vervolgens hoef je alleen maar in je bestanden dit te doen
PHP:
include("url_naar_taal_bestand.php");

echo $lang['monday'];
Bij dutch is het resultaat maandag en als je default hebt gedaan dan krijg je monday

Misschien is het niet helemaal duidelijk maar de kern is dat je bij een bovenstaande array steeds het eerste deel overal hetzelfde laat en het tweede deel (Hetgeen na de =>) vertaalt.
 
Laatst bewerkt:
Ik denk dat het een beetje verkeerd begrepen is, dit is een Vertaler,
ik bedoel b.v. net als in een CMS Systeem, dat er word b.v. een
ID gegeven aan een paar regels tekst, en er word dan in /languags/dutch.php
naar de tekst die bij die ID hoort gezocht...

EDIT:
Is dit het ? : het bestand dutch.php zo maken ;

$welkomstekst = "welkom op mijn site";
$copyright = "copyright mijn site";

En dan in de index.php, dutch.php includen en dan echo $welkomstekst en
echo $copyright ? Of kan het nog anders ?

Marco.
 
Laatst bewerkt:
Ja, dat kan. Maar het is makkelijker om de variabelen dan zo te gebruiken:

PHP:
$taal["welkomsttekst"] = "Welkom op mijn site.";
$taal["copyright"] = "Copyright mijn site.";

Dan hoef je niet allemaal verschillende variabelen aan te maken, dat is veiliger, omdat je minder kans hebt dat de variabele misschien al ergens anders bestaat. Wel is het princiepe goed.
 
Dat is toch hetzelfde principe als onze posts hierboven?

Overigens kun je het makkelijker zoals mij doen, dat scheelt typwerk
PHP:
//Taal Array
$taal = array(
"welkomstekst" => "Welkom op mijn site.",
"copyright" => "Cpoyright mijn site.",

);

//Implementatie
echo '<h1>'. $taal['welkomstekst'] .'<h1>';
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan