Avatar billede vix-mix Nybegynder
15. april 2007 - 20:50 Der er 8 kommentarer og
1 løsning

Vælge andet sprog?

Hej.

Jeg skal have lavet en hjemmeside med minimum 2 sprog. Hvordan gør jeg det nemmest. det er ikke et problem at lave sessionen som der bliver sat til Dan eller Eng .. mit problem er at gøre det med databasen.. Hvad er nemmest?

Er det at have to databaser til siden? - bliver det så ikke at problem at lave så man både kan smide dk og eng tekst op med adminfunktionen på samme tid?

Eller er det at lave et ekstra felt til hver variable i tabellen i min db? altså under forside så have et felt der hedder tekst_dk og tekst_eng .. men hvordan får jeg siden til at hente de rigtige dataer ud i min query ??
Avatar billede jakobdo Ekspert
15. april 2007 - 21:43 #1
Du kunne f.eks. lave det med en tabel!
I den tabel kunne du så have et felt ID, dansk og engelsk

1, velkommen, welcome
Så bruger du data fra tabellen, hvor id = 1 til at skrive velkommen, alt efter hvad brugeren har valgt af sprog.
Man kan også lave det med 2 databaser, og så vælge databasen som passer til ens sprog som du selv er inde på.
Avatar billede vix-mix Nybegynder
15. april 2007 - 22:33 #2
Ja det du skriver først er det jeg skriver her "Eller er det at lave et ekstra felt til hver variable i tabellen i min db?" - mit problem er bare hvordan skulle den finde ud af at den skal tage feltet dansk hvis den står til Dan i session og engelsk hvis der står Eng? - så skal jeg jo lave noget ala:

if ($sprog == "dan") {
$query =  mysql_query("SELECT tekst_dk FROM tabel");
$row = mysql_fetch_array($query);
$bla= $row['bla'];
} else {
if ($sprog == "eng") {
$query =  mysql_query("SELECT tekst_eng FROM tabel");
$row = mysql_fetch_array($query);
$bla= $row['bla'];
} - hvergang at man skal hente noget.. det er jo bare meget spilde kode er det ikke?

Og det andet med to databaser var det jeg syntes var det mest oplagte så kunne man have to db.php filer.. en db_dk.php og en db_eng.php, men jeg får jo så et lille problem hvis jeg skal kunne rette i begge databaser på engang? som ville se sådan ud

db_dk.php:
<?php
mysql_connect("localhost", "bruger", "kode");
mysql_select_db("db_dk");
?>

db_eng.php
<?php
mysql_connect("localhost", "bruger", "kode");
mysql_select_db("db_eng");
?>

men ville den kunne finde ud af det?
Avatar billede showsource Seniormester
16. april 2007 - 01:55 #3
Den ene gang jeg har lavet noget med flere sprog, blev det til at ha' flere tabeller i databasen, som endte på _sprog, f.eks.

forside_dk
forside_en
forside_de

D.v.s. en tabel til hvert sprog

Og som det første tjekkede jeg om der var en cookie, med sprog, og om dens værdi fandtes i et array som var sat på forhånd.

$sprog = array("dk", "en", "de");

$default = $sprog[0];

if(isset($_COOKIE["lang"]) && in_array($_COOKIE["lang"], $sprog)) {
$default = $_COOKIE["lang"];
}

$webside = mysql_query("SELECT * FROM forside_". $default ."") or die (mysql_error());

Men en anden go' ting, (sikkert), er at tjekke

$_SERVER["HTTP_ACCEPT_LANGUAGE"]

og på den måde hente fra den "rigtige" lang tabel
Avatar billede kimox Nybegynder
16. april 2007 - 09:46 #4
den går ikke helt den med $_SERVER["HTTP_ACCEPT_LANGUAGE"] desværre.. og det er en halv stor side som skal laves, og hvis jeg skulle lave en ekstra tabel til hver side på siden så bliver det en kæmpe database, så det tror jeg ikke det skal være.
Avatar billede vix-mix Nybegynder
16. april 2007 - 09:54 #5
Ja jeg giver kimox ret.

Dog er det ikke en så stor side som jeg skal lave. Men alligevel så synes jeg det biver besværligt..

men jeg kan jo godt lave lige som dig showsource med $webside = mysql_query("SELECT * FROM forside_". $default ."") or die (mysql_error()); hvor den bare tjekker min session. så skal den bare se sådan her ud:

$webside = mysql_query("SELECT tekst__". $default ." FROM forside") or die (mysql_error());
Avatar billede showsource Seniormester
16. april 2007 - 10:19 #6
Hvis man gemmer de forskellige tekster i DB, vil det jo fylde.
Hvis der laves en tabel for hvert sprog, er det jo kun selve tabel/feltnavne som er ekstrafyld.

Mængden af indhold vil jo være det samme?

Og m.h.t. brugen af $_SERVER["HTTP_ACCEPT_LANGUAGE"] kan den jo bruges hvis f.eks. der ikke er sat en cookie, for at vælge et default sprog.

At brugeren måske nok er dansker, men bruger en browser hvis første værdi er engelsk kan man jo ikke vide, men blot for at vælge sprog.

Måske også noget "ip-lookup" kan bruges til at definere default sprog.

Og umiddelbart ville jeg nok lave det med en get variabel,

side.dk/da/kontakt.php
side.dk/en/kontakt.php
Avatar billede vix-mix Nybegynder
16. april 2007 - 10:35 #7
Ja men det er mere med overskueligheden og så det med at skulle gemme flere sprog på en gang i adminsektionen. og det gør det mere besværligt hvis der er 3 tabeller med 3 forskellige id'er som der skal gemmes i, men en god mulighed som jeg skriver oppe ovenover ville være dette: $webside = mysql_query("SELECT tekst_". $default ." FROM forside") or die (mysql_error());

Det var heller ikke detjeg var enig i med kimox, $_SERVER["HTTP_ACCEPT_LANGUAGE"] kan sagtens bruges, men problemet er bla. at det er et dansk firma i grækenland som har en .com side.. så det bliver meget rodet, så jeg laver den bare dansk så snart man kommer ind på siden, og så kan man ændre det med flag i det ene hjørne.. Det bliver så gemt i en session. :)
Avatar billede vix-mix Nybegynder
26. april 2007 - 17:02 #8
jeg fik det lavet, smider i, et svar?
Avatar billede vix-mix Nybegynder
03. maj 2008 - 23:52 #9
svarer selv eftersom i ikke har svaret.

-lukket-
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester