Heisann Halvors,
Det er et par faktorer som må taes med i betraktningen, men en mye brukt metode er som følgende (eksempler taes i PHP):
Du må bestemme deg for et hovedspråk, og skrive alt innholdet på siden. Hver selvstendig setning/stikkord må så "wrappes" i en funksjon som har som rolle å skrive ut i korrekt språk (la oss kalle den "gettext()" ).
HTML:
<h1>Products</h1>
erstattes til:
<h1><?php echo gettext("Products"); ?></h1>
Det gettext() da trenger å gjøre er å slå opp denne tekststrengen i den valgte språkfilen, finner den oversatte teksttrengen, og returnerer denne. Fordelen med å ha en egen funksjon til dette, og ikke slå direkte opp i et array vil være mtp feilhåndtering - hva skal skje om du spør om en tekst-streng som ikke finnes? Sett at jeg ikke har noen oversettelse for "Products" på norsk, så kan det være en løsning å faktisk bare returnere original-strengen - og kanskje logge en notis slik at det er lett for utvikleren å finne ut hvor det mangler oversettelser.
Så nå må du ha en språkfil for alle språk du ønsker utover originalspråket, og disse må da inneholde de originale teksttrengene samt en kobling til de oversatte.
Sett at hovedspråket er engelsk, og vi ønsker en norsk språkfil så vil den kunne være slik:
HTML:
Products
Produkter
Contact
Kontakt
- det vil være greit å holde denne i et format som er lett parse-bart til å legge i et array hvor indeksen er originalstrengene, og verdiene er de oversatte.
(olafmoriarty nevner en god løsning med å bruke arrays direkte i språkfila, og på den måten vil det være godt nok å inkludere den. Her er det stort sett kun snakk om preferanser.)
Den neste casen er da å finne ut hvilken språkfil som skal lastes inn, her har du forskjellige måter - men kan nevne tre vanlige scenarier:
1)
Sørge for at alle sider har en parameter som blir dynamisk satt:
http://example.com/index.php?lang=no
2)
http://example.com/no/index.php
http://example.com/en/index.php
Her kan du f.eks bruke en mod-rewrite (eller tilsvarende) for å omdirigere trafikken til å gå til "index.php?lang=en", og vi kan sjekke $_GET["lang"].
3)
Sette en cookie avhengig av brukervalg.
Men om du i tillegg til statisk innhold har dynamisk innhold i form av f.eks artikler så kan du være nødt til å ha forskjellige tabeller/databaser også, og evt sørge for at spørringene blir tilpasset det valgte språket. Her avhenger det av om hver eneste artikkel skal være tilgjengelig i alle språk, eller om sidene kommer til å leve litt uavhengige av hverandre.
Relevant lesning:
Gettext
Wikipedia om I18n og L10n
CakePHP's implementasjon