01. juni 2004 - 20:53Der er
16 kommentarer og 2 løsninger
Ide til sprog site
Hej alle
Jeg har før spurg om noget i den her stil, og jeg blev også vist en løsning, men jeg kan ikke lige finde ud af det...
Jeg skal lave et site med flere sprog.. Jeg har tænkt mig at lave følgende tabeller:
sprog - lan_id - navn
fasteord - fasteord_id - code
ord - ord_id - fasteord_id - ord
tekst - tekst_id - lan_id - tekst
Og så en tabel der sætter faste ord, ord og sprog sammen..
Det er så meningen at jeg vil i fasteord lave ord som "new_member" og i ord sætte man så "new_member" lig med foreksempel dansk og ordet "opret medlem" eller lign.
Lyder det som en fornuft måde at gøre det på.. og er mine tabeller fornuftige... ???
Nu ved jeg ikke hvor meget du er inde i php, men der er ikke nogen grund til at genopfinde hjulet, så du skulle måske tage et kig på PEAR. Der findes en translation klasse, som kan bruges til lige netop det du efterlyser http://pear.php.net/package/Translation
Det kræver at du sætter dig ind i PEAR, og at du har PEAR på din server. Desuden skal du kende til Objektorienteret PHP.
Jeg føler selv at jeg er meget godt inde i php, har dog ikke lavet det så længe, legede i asp før i tiden, men synes at jeg er kommet godt efter det.. :D
altså det jeg gør er at lave sprogfiler i php da.php, eng.php, se.php, fi.php osv osv og så bruger jeg browseren til at vælge hvilket sprog brugeren skal have vis siden i, ed ikke om det er noget derhenad du kunne tænke dig ??
thb: "Jeg har siddet og læst din ide til en løsning i linket..." .. var det til mig ?
Hvis det er mit indlæg d. 21/05-2004 00:56:43 så kan jeg da godt forsøge:
language: id=1, sprog=da, charset=iso-8855-etelelrandetjegharglemt :) language: id=2, sprog=en, charset=iso-8855-etelelrandetjegharglemt :) language_item: id=1, language_id=2, name="WELCOME", value="Welcome to my homepage" language_item: id=2, language_id=1, name="WELCOME", value="Velkommen til min hjemmeside"
osv..
.. men eksemplet er bare for at forsøge på at opfylde de krav der var. Jeg ville nok ikke bruge databasen til at lagre den slags. Men det skal siges at jeg endnu ikke har haft en multi-sprog side, så jeg har ikke nogen praktisk erfaringer. Men på samme side er der en del forslag om ikke andet :)
krydset > Det jeg har prøvet endtil videre med overstående ide/system, er lidt det som du siger bare i en db istedet for en fil... Jeg føler at jeg har lidt bedre styr over det hvis det er i en db, og jeg kan lave et ordentligt admin system, hvor man vil kunne oprette sprog og tilføje ord til ordbogen..
Jeg sad og baksede med funktionen array_combine() og så ender jeg der hvor du er: $lang['navn'] = værdi print $lang['navn']
Men jeg ved ikke om det tager med server kraft at gøre det på den måde..
Og så ved jeg ikke om min db struktur er ordentlig, den må jo gerne være hurtig. Det hedder vist normaliseret.. :D
Jep. Det var også bare et hurtig eksempel. Men det var heller ikke lige databaseløsningen du skulle se.. Du skulle mere se de andre forslag der er :)
Grunden til at jeg ikke går ned på ord-niveau er at sprog er underlige. Tænk f.eks på dansk der har vi flere ord der betyder noget forskellige alt efter sammenhæng så du skal nok passe på med at oversætte enkelt-ord (sådan tolker jeg dit db-struktur).. Og nogle ord staves forskelligt alt efter hvad det henviser til.. osv.. Men det er bare overvejelser om hvad du putter i databasen - ikke selve dit design af det.
Så jeg har bare foreslået en simpel udgave :)
Men for at vende tilbage til dit spørgsmål. Ja, det er fornuftigt. "Bedre" er svært at sige, uden at kende til hvilke krav du har. Men de opfylder garanteret det du ønsker de skal, så mon ikke det er godt nok. Det ser da fornuftigt ud - og bare det du gør der tanker om det før du har implementeret det, er jo et god ting :)
Sådan normaliseringsmæssigt er det også fint. Jeg kan ikke finde på noget at brokke mig over :-)
Personligt, vil jeg kun "lege" med sprog når brugeren tillader en cookie. Og den cookie bestemmer sproget. Altså, ved hver request tjekkes cookien, og på den måde bestemmes lang.
Om du så vil ha' filer liggende med lang, eller gemme tekst i DB..................
Sådan et array som jeg har tænkt mig at bruger: $lang['new_member'] = "opret medlem" vil sådan et array kunne opbevares i en session... og kræver det meget ?
Hvis du gemmer det i session skal php ved hver hit hente en stor session ind (da den så vil indeholde alle teksterne) .. og da der er een session pr bruger så er det meget plads (Da det egenligt er unødvendigt). Og da teksterne ikke er forskellige pr bruger (udover evt om man vil have dansk eller engelsk) så er det spild af plads.
Gem det bare i en almindelig fil. :)
Hvis det er fordi du ønsker at indgå at php skal læse en ekstra fil pr. hit, så skal du huske på at session (normalt) også bliver gemt som almindelig filer.
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.