Ben bezig voor me site met multi talen script.
Loop alleen vast op 1 probleem.
Even korte uitleg:
Haal de taal op via de browser met deze code
if (empty($lang)) {
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
}
switch ($lang)
{
case "nl" :
include("lang/nl.php");
break;
case "en" :
include("lang/en.php");
break;
case "de" :
include("lang/de.php");
break;
default :
include("lang/en.php");
break;
}
En dan via $title $naam haal ik het op in het script.
Dat werkt allemaal goed.
Maar nu wil ik als iemand een uitnodiging naar een andere gebruiker stuurt hij dan de taal van de persoon pakt waar die uitnodiging heen gaat nu is het de taal van de persoon die hem verstuurd.
$mysqli->query("INSERT INTO `[messages]`(`time`,`IP`,`from`,`to`,`read`,`subject`,`message`) values(NOW(),'{$_SERVER['REMOTE_ADDR']}','afzender','{$man->login}','0','uitnodiging',' $verstuurd')");
nl.php
$verstuurd = Je uitnodiging is verstuurd.
en.php
$verstuurd = Your invitation has been sent.
Dus hij zou bij $man->login moeten checken welke taal de persoon is.
In de database wordt ook de taal omgeslagen waneer iemand inlogt.
$mysqli->query("UPDATE `[users]` SET `lang`='$lang' WHERE `login`='$data->login'");
Hopelijk weet iemand een oplossing ben al tijdje mee bezig maar kom er niet uit.
Zijn gewoon standaard teksten, het blijft gewoon altijd de zelfde tekst.
Alleen in andere taal.
Ik heb op de me server dan browser in engels en op pc in nederlands zo kan ik dan testen maar hij blijft het sturen vanuit de taal van de verstuurder
Zijn gewoon standaard teksten, het blijft gewoon altijd de zelfde tekst.
Alleen in andere taal.
Lekker tegenstrijdig? Hetzelfde of anders?
Maar is het de inhoud van het bericht, of een bevestigingsmelding die de verzender ziet na het versturen?
In het laatste geval zou een simpele variabele gewoon moeten werken.
Heb nu ook via het andere forum een code gekregen.
$sql=$mysqli->query("SELECT `lang` FROM `[users]` WHERE `id`='".$mysqli->real_escape_string($id)."'");
$tmp=$sql->fetch_assoc();
$taalOntvanger=$tmp->lang;
Weet niet of dit makelijk is. om te kijken welke taal het is.
Gewoon, netjes de sql-query echo'en. Dan weet je precies welke instructies je database krijgt.
<?php
// sla de SQL-query op in een aparte string, zodat je deze makkelijk kan debuggen.
$sql = "SELECT `lang` FROM `[users]` WHERE `id`='".$mysqli->real_escape_string($id)."'";
//echo voor test-doeleinden de query.
echo "De query is :".$sql;
// Voer de query() uit met de inhoud van $sql.
$query = $mysqli->query($sql);
?>
Het is gewoon bevestiging dus zal moeten staan
Account naam heeft je uitgekocht
En als die gene engels is
Username have buy you out.
En dat bericht moet dan verzonden worden in de taal van de gene die het ontvangt.
Want als een nederlander een engelse uitbreekt krijgt de engelse anders een nederlands bericht kan die natuurlijk niet lezen.
Daarom moet het dan veranderen dus als een nederlander iemand uitbreekt die engels is de engelse gewoon het bericht in het engels krijgt of andersom.
Is het niet handiger om dan een placeholder te sturen, zoals [buy_out], welke via een str_replace() vertaald wordt in de taal van de gebruiker? Dan hoef je niks te controleren bij het versturen. En als de taal aangepast wordt, verandert het bericht gewoon mee.