Avatar billede noodrem Nybegynder
24. januar 2009 - 14:23 Der er 11 kommentarer og
1 løsning

Side på engelsk og dansk

Hej

Jeg står og skal lave en side, hvor der skal kunne vælges mellem engelsk og dansk.

Hele siden skal bygges op som et CMS system. Hvordan laves det smartest? Bør jeg lave to tabeller, til henholdsvis engelsk og dansk data?

Håber der er nogen der har erfaring med dette fra tidligere som kan hjælpe / give fifs.

Mvh.
Avatar billede Slettet bruger
24. januar 2009 - 14:36 #1
Avatar billede majbom Novice
24. januar 2009 - 14:37 #2
du kan lave det med en fil for hvert sprog hvor du så definerer alle dine ord:

define("NAVN", "Navn"); //dansk

define("NAVN", "Name"); //engelsk

en linje i hver sin fil selvfølgelig, og så alt efter om det skal være dansk eller engelsk, includer du den rette fil.
Avatar billede majbom Novice
24. januar 2009 - 14:44 #3
der hvor du så skal indsætte ordet, skriver du det ligesom når du indsætter en variabel, bare uden $ foran:

echo NAVN; //udskriver Navn eller Name alt efter sproget
Avatar billede tmi Nybegynder
24. januar 2009 - 15:47 #4
Det er smartest at lave 2 systemer, for hvis du på sigt regner med at det bliver en succes i to forskellige lande får du formentlig behov for at de ting det ene land ser kan være ting der ikke har interesse i det andet land. Hvis du er helt sikker på at indholdet altid skal være ens, og at du altid har mulighed for at oversætte til alle sprog hver gang du ændrer, kan du holde det i et system.

Du kan få en nyttig funktion jeg selv lavede til samme formål i sidste uge. Du kalder fx. getLanguage("sti/til/sprogfiler", "da"), hvor du så har en fil liggende i den mappe der hedder "da" - ikke "da.txt", bare "da", du kan selvf ændre parseLanguageFile, så den åbner "da.txt" i stedet hvis du synes. I denne "da"-fil ser således ud:

titel: Min titel
konto: Min konto
log_in: Log ind

beskrivelse: På denne side ser du: blabla
lala: whatever

Funktionerne er her, de returnerer et array hvor det før det først kolon som key og det efter som linjeskift. Den henter først den engelske tekst "en" og derefter overskriver den med det valgte sprog, sådan at hvis det valgte ikke er komplet, vil det engelske tekst kommer hvor der mangler.
<?
function parseLanguageFile($dir, $lang) {
    preg_match_all("#^\s*([^\s:]+)\s*:\s*(.+?)\s*$#m", @file_get_contents($dir.$lang), $matches);
    return $matches[0] ? array_combine($matches[1], $matches[2]) : array();
}
function getLanguage($dir, $lang) {
    return $lang == "en" ? parseLanguageFile($dir, "en") : array_merge(parseLanguageFile($dir, "en"), parseLanguageFile($dir, $lang)); // fallback to english
}
?>

I din database skal du også have en række for hvert sprog, og hvis du er sikker på du aldrig skal have mere end dansk og engelsk kan du nøjes med een række og så bare have felter for både hhv dansk og hhv engelsk.
Avatar billede tmi Nybegynder
24. januar 2009 - 15:48 #5
Det gik lidt stærkt håber du forstår de ting der ikke giver mening.
Avatar billede cronaldo Nybegynder
24. januar 2009 - 20:27 #6
Du kan også lave det med fx:

////////////////////
// Start of language for the news administration

$add_news['topic'] = "Emne";
$add_news['text'] = "Tekst";
$edit_news['topic'] = "Emne";
$edit_news['text'] = "Tekst";

// End og news laguage
///////////////////////////////////////


Osv., osv., osv., osv. :P ..
Avatar billede tmi Nybegynder
24. januar 2009 - 21:08 #7
Ja, så bliver det tusind gange nemmere for en der ikke har forstand på programmering at oversætte det, god idé. (Eller?)

Mine filer kan jeg køre i Google Translate, og jeg kan også lave kommentarer som du har gjort.
Avatar billede showsource Seniormester
24. januar 2009 - 21:37 #8
Den ene side jeg har lavet med mulighed for at skifte sprog, brugte jeg en tabel til hvert sprog ( mysql )
For at skifte sprog skal/skulle browseren acceptere en cookie.

D.v.s. ved hver request tjekkes om en cookie er sat, ( og findes i "langarray" ) hvor default så vælges hvis cookie ikke findes.

Men umiddelbart så er jeg egentlig til at lave et dir for hvert lang, for på den måde at gi' mulighed for at "videre - sende" et link til lige netop den side.
Det betyder så url's som domain.dk/da og domain.dk/eng m.m. hvor der så ligger en korrekt sprogfil for hvert "lang" dir.
Avatar billede noodrem Nybegynder
26. januar 2009 - 17:52 #9
Tak for svarene, ser lovende ud :)

Jeg har lidt travlt i starten af den her uge, men ser på det så snart jeg får tid.
Avatar billede noodrem Nybegynder
28. januar 2009 - 20:50 #10
Har tænkt lidt over det. Prøver i første omgang at lave det i to systemer med to databaser, hvor jeg kalder tabellerne det samme. Således forbinder jeg mig bare til den database der tilhører det valgte sprog ud fra en funktion.

Synes dog du fortjener pointene for gode svar tmi.
Avatar billede tmi Nybegynder
28. januar 2009 - 21:46 #11
Jeg håber du kunne bruge det så ;-)
Avatar billede Slettet bruger
28. januar 2009 - 21:52 #12
Kig evt. på Typo3 der er rimelig god mulighed for flere sprog.
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