05. januar 2010 - 19:11Der er
6 kommentarer og 2 løsninger
Flere forskellige sprog på website? (Bedste metode?)
Hej alle eksperter
Jeg har nu roddet lidt med et website som jeg skulle lave på både dansk og engelsk. Jeg havde lavet det således at en session afgjorde sproget (også en cookie version), og den tog data ud fra db.
I min db havde jeg følgende:
- pages id title_dk content_dk title_eng content_eng date_added
Er nu blevet anmodet om at også at sørge for at man kan vælge mellem Svensk og Tysk oven i de 2 sprog. Synes bare det er rimelig meget data som kommer til at lægge i én række.
Hvad er den bedste metode at bygge det på? Med en mellemtabel måske? Så man f.eks. gør følgende:
- pages id date_added
- pages_lang id page_id lang title description
Ovenstående kunne jo fungere, men ville blive lidt langhåret når man i CMS skulle lave en masse MYSQL UPDATE sætninger for hver gang man skulle rette én side, da den skal gemme det på 4 forskellige sprog (og måske endnu flere senere hen).
Er der nogen der ligger inde med en god metode at sørge for at gøre det universielt, uden alt for meget kode eller data i db'en?
Har tit gået og tænkt over dette, men aldrig kommet til noget konkret, men nu skal jeg bruge det i praksis så hjælp søges! :)
din nuværende databasestruktur er i hvert fald ikke særlig optimal - til gengæld ser dit nye forslag helt korrekt ud.
Kodemæssigt burde det heller ikke være noget større problem - du kan selvfølgelig ikke undgå at der kastes en del inserts/updates til databasen, men i stedet for at du selv skal opdatere koden for hvert sprog kan du jo lave en løkke der håndterer det hele for dig, fx i pseudokode;
'SELECT * sprog 'foreach sprog start 'UPDATE/INSERT pages WHERE sprog = foreachvalue 'foreach sprog slut
Før der blev kørt INSERT/UPDATE kunne man evt tjekke om det i det hele taget var noget tekst at behandle.
Jeg er ikke lige helt med på hvad keysersoze skriver, udover det er til update af siden ?
Min erfaring siger:
En tabel hvor hvert sprog er defineret: 1 dk 2 eng 3 de o.s.v
Du har så typisk en tabel med faste vars, f.eks. tekst i toppen af siden Og en tabel som viser div. sider, og hvor row "langid" passer til en defineret var. (Altid min. et sprog i tabel et.
Og ved hver request henter du så mulige langs. D.v.s. laver en query som henter de mulige langs i tabel et, som også har samme langid i div. andre tabeller.
Dem gemmer du i et array, og tjekker så evt. for en sat cookie, til at definere hvilket lang som skal vises.
I admin af langs, er det jo dem som er defineret i tabel et som afgør havd som skal vises.
Tror nu ikke der er den store forskel på måden. Har netop lavet en side med forsk. sprog Her valgte jeg at bruge en tabel til sprog, som nævnt. Ved hver request hentes sprog og lægges i et array. Kunne selvf. laves direkte i scriptet, men valgte en tabel for at andre kan redigere sprog på siden. Og den query som henter sprog, tjekker at der rent faktisk findes en side til sproget.
Der har jeg så godt nok en lille bøf, fordi der kan f.eks. være to undersider til dk, men kun en til eng. Men jeg er heller ikke 100% færdig med siden endnu.
Og grunden til at jeg vil ha' array'et, er for at 100% sikkert kunne definere hvilket sprog som skal vises, og samtidig være sikker på at det findes i db.
Og ved redigering vælges først sprog og derefter side.
Skal så lige tilføje også, at hvert link har ?lang=dk hvor dk er defineret førend der laves output. Og i formularer er det et hiddenfelt.
Med en .htaccess kunne man jo evt. få en lidt pænere url.
Og jeg er da bestemt ikke sikker på at måden jeg har lavet det på er optimal, men det er til en mindre side, og umiddelbart fungerer det fint.
Tak for dit input showsource. Jeg vil prøve mig lidt frem og se hvilken metode der tilpasser sig bedst til min fremgangsmåde og tage udgangspunkt i det.
Også tak til dig keysersoze.
I må meget gerne smide et svar, da det netop var nogle idéer og meninger jeg havde brug for - og det synes jeg at jeg har fået.
Der er nok ikke én måde der er den rigtige da det selvfølgelig afhænger af ens setup, dog er den metode brugt på nuværende tidspunkt meget skæv. En helt tredje mulighed kunne måske være en XML kolonne og dermed gemmer man teksterne i en XML struktur. Statiske tekster til fx menuer osv kunne lægges i deciderede XML-filer.
filer bliver kun brugt til statiske eller så godt som statiske ting såsom tekster til knapper osv og det fungerer glimragende - decideret indhold skal som udgangspunkt selvfølgelig ikke ligge i filer, men det gør det heldigvis heller ikke med xml datatyper i databaser.
Synes godt om
Ny brugerNybegynder
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.