Gå til innhold

To språk på en nettside


Anbefalte innlegg

Hei :)

 

Hvordan får man til å ha to språk på en nettside? Tenkte å ha en på norsk, og en på engelsk. Tenkte på å ha to små flagg øverst på nettsiden, et for Norge og et Storbritannia. Tanken er da at når brukeren trykker på det britiske flagget, blir alt av tekst på siden engelsk.

 

Blir vel sånn at jeg lager to nettsider med akkurat samme innhold, bare den ene på norsk og den andre på engelsk. Hvordan skal jeg få til akkurat den funksjonen med flaggene? Fungerer det å gjøre i html/css?

Lenke til kommentar
Videoannonse
Annonse
vet om en del som bruker google translate for den effekten... Nå vet vi jo også at det er litt begrenset hvor bra google translate oversetter, men du forstår det helt fint..

Det blir vel litt for psykedelisk.

 

Du kan lage to statiske sider som noen har foreslått, eller switche vha. javascript. Da kan du beholde alt i en side (enklere å oppdatere layout), og så toggler du av .visible attributtet på de norske elementene og omvendt på de engelske når noen trykker på det engelske flagget (onclick), og omvendt for det norske.

 

<script lang="javascript">

function toggleLang(lang)
{
  if (lang == 'eng') {
  document.getElementById('engBody').style.visibility='visible';
  document.getElementById('noBody').style.visibility='hidden';
  } else if (lang == 'no') {
  document.getElementById('engBody').style.visibility='hidden';
  document.getElementById('noBody').style.visibility='visible';
  }
}

</script>

<h1>Languages<h1>
<input type="button" value="Eng" onClick="java script:toggleLang('eng')"/>
<input type="button" value="Nor" onClick="java script:toggleLang('no')"/>

<span  id='engBody' 
  style="position: absolute; visibility: hidden; left: 10px; top: 80px; height: 400px; width: 100px; padding: 1em;">
English stuff
</span>
<span id='noBody' 
  style="position: absolute; left: 10px; top: 80px; height: 400px; width: 100px; padding: 1em;" >
Norrska grejor 
</span>

 

(du bytter seff ut inline-ccs'en med noe mindre grisete :-)

Lenke til kommentar

Funker fint å ha et lite Google Translate-ikon. Det er nok det enkleste, og du kan også klikke "Suggest a better translation" for de morsomte/flaueste oversettelsene.

 

En annen metode om du bruker php er å bruke database eller, eller ha en språkfil for hvert språk (ini-filer), så bruker du $txt=parse_ini_file("no.ini",true); eller en istedetfor no på toppen av siden.

I no.ini-filen skriver du

Welcome="Velkommen"

Help="Hjelp"

osv

 

Istedetfor å hardkode teksten "Velkommen" i filen, skriver du heller <?php echo $txt["Welcome"]?>

Lenke til kommentar

Hvis du gjør websiden din tilgjengelig på flere språk fordi du forventer besøkende som forstår disse språkene, så funker det ikke fett.

 

Vil du virkelig presentere innholdet ditt på en slik måte at du bare fôrer det gjennom en oversettelsestjeneste hvor du ikke kan gå god for hva som kommer ut på den andre siden?

Lenke til kommentar
Om du har side_no.html og side_en.html, la det norske flagget peke til side_no.html og det engelske til side_en.html?

 

Takker lassejl! Har fått det til nå ;)

Bakdelen med det, er at om du endrer noe i designet/layouten/html-koden, så må du alltid gjøre det samme i begge filene. Legger du til to språk til senere, må du endre samme html-kodene fire plasser hver gang du skal bare gjøre en bitteliten justering i designet.

Bruker du metoden jeg forelso, endrer du design kun en plass, og all tekst på siden har du tilgjengelig fra en egen fil.

Lenke til kommentar
Om du har side_no.html og side_en.html, la det norske flagget peke til side_no.html og det engelske til side_en.html?

 

Takker lassejl! Har fått det til nå ;)

Bakdelen med det, er at om du endrer noe i designet/layouten/html-koden, så må du alltid gjøre det samme i begge filene. Legger du til to språk til senere, må du endre samme html-kodene fire plasser hver gang du skal bare gjøre en bitteliten justering i designet.

Bruker du metoden jeg forelso, endrer du design kun en plass, og all tekst på siden har du tilgjengelig fra en egen fil.

 

Ja, stemmer det. Har bare 4 forskjellige sider, så blir 8 til sammen. Designet/layouten er så og si ferdig, så tror jeg holder meg til den løsningen foreløbig. Uansett takk for svar, kan hende jeg går over til din løsning etterhvert ;)

Lenke til kommentar
Funker fint å ha et lite Google Translate-ikon. Det er nok det enkleste, og du kan også klikke "Suggest a better translation" for de morsomte/flaueste oversettelsene.

 

En annen metode om du bruker php er å bruke database eller, eller ha en språkfil for hvert språk (ini-filer), så bruker du $txt=parse_ini_file("no.ini",true); eller en istedetfor no på toppen av siden.

I no.ini-filen skriver du

Welcome="Velkommen"

Help="Hjelp"

osv

 

Istedetfor å hardkode teksten "Velkommen" i filen, skriver du heller <?php echo $txt["Welcome"]?>

Hvis du skal løse dette med serverside-programmering, så gjør det i hvert fall skikkelig. I PHP finnes det én ordentlig implementert standard og den fungere bedre enn alle løsninger som involverer språk-arrays eller annet tull, og jeg prater selvfølgelig om gettext. Det finnes så klart masse verktøy for redigering av po-filer, samt for å ekstrahere ut språkdata fra prosjektet ditt. Enklere, raskere og mer effektivt får man det ikke.

Lenke til kommentar

Får litt vondt i webprogrammerer sjela mi av de nevnte statiske og litt vel eksotiske forslagene over (no offence..).

 

Jonas kommer her med den definitivt mest fornuftige og langsiktige løsningen. Å måtte oppdatere statisk innhold med ulike språk blir et designmessig helvete en eller annen gang. Hva når du skal lage helt ny layout.. nei..

 

En annen ting er jo hvordan språket skal velges/vises. Med PHP og gettext kan du hente ut den besøkendes locale og vise riktig språk med en gang.

 

Om du ikke har drevet mye med php så ikke la deg skremme! Det er ikke spesielt vanskelig å sette opp. Hør med din leverandør om de kan komme med tips og råd og les deg opp som Jonas lenker til.

 

Vil også anbefale programmet poEdit for å jobbe med språkfilene.

 

Gjør det skikkelig så trenger du ikke gjøre det om igjen og om igjen osv.

Lenke til kommentar
Vil ikke si at mitt forslag er så statisk, du har enkelt og greit en språkfil for hvert språk som består av kun tekst, ingen html eller annen layout. Men takk for forslaget, skal se på gettext før jeg evt. hiver meg i full gang :)

 

Joa, ditt forslag er ikke statisk, men det blir rimelig vrient å holde styr på alle variablene i lengden. Med gettext og poedit slipper du enklere unna.

 

Du vil da typisk gjøre som følger:

 

$_("I'm a lumberjack, but I'm okey. I sleep all night and I work all day");

 

Så lager en ulike språkfiler for de ulike språkene. poEdit viser deg hvilke fraser som mangler oversetting; perfekt om en f.eks. skal få noen andre til å oversette noe for seg på et fremmed språk.

 

Edit: En annen fordel med gettext er at en kan legge til litt dynamikk i frasene:

 

$_("Page {0} of {1}", $pagenum, $totalpages);

 

..eller til og med:

 

$_("{0}Previos{2} / {1}Next{2}", "<a href='...'>", "<a href='...'>", "</a>");

 

Dig it?

Endret av jabbamabba
Lenke til kommentar
Får litt vondt i webprogrammerer sjela mi av de nevnte statiske og litt vel eksotiske forslagene over (no offence..).

Når det er snakk om én side er vel alt som ikke er statisk det samme som å skyte spurv med kanoner? Pointet her var vel å få det til på klientsiden tror jeg.

Lenke til kommentar
Får litt vondt i webprogrammerer sjela mi av de nevnte statiske og litt vel eksotiske forslagene over (no offence..).

Når det er snakk om én side er vel alt som ikke er statisk det samme som å skyte spurv med kanoner? Pointet her var vel å få det til på klientsiden tror jeg.

 

 

To sider, bytt ut tekst...

 

Eller være jævla hardcore og kjøre en ajax som henter språkfil basert på innstillingene på nettleseren til brukeren, og som parser responseText'n som kommer i retur og oppdaterer alle div'ene. Evt kan du ha js-språkarrays i en index.html som automatisk bytter tekst; en side, 0 wait for å switche språk. Eller bruke css for å skjule/vise divs med tekst (mener noen nevnte det, bare vær siktig med css-position på overlappende divs). Er ikke alltid man kan kåle så masse med servere og php og pakker osv. Skal man lage en index.html med to språk er det unødvendig å sette opp enterprise-struktur på oversettelser :p

 

Den beste er nok å bruke to skudd med luftgeværet for å drepe spurven (les: index_no.html index_en.html)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...