Avatar billede soerent Nybegynder
13. august 2008 - 13:39 Der er 12 kommentarer og
1 løsning

Javascript dialog i forskellige sprog

Vi har et website, hvor der skal oversætte til forskellige sprog (engelsk/dansk osv).

Er der nogen der kender en snedig måde hvor man dynamisk kan lave sit javascript så dialogen bliver hentet fra en database eller lign. Altså således at dialogen er afhængigt af hvilket sprog brugeren vælger?
Avatar billede pidgeot Nybegynder
13. august 2008 - 13:50 #1
I kan jo lade JavaScriptet blive outputtet via et server-side script, som henter den rette tekst og indsætter den det rigtige sted i scriptet. Da jeg gætter på indholdet på siderne alligevel kommer via noget server-side, var det vel en nærliggende mulighed.

Afhængigt af hvad man har af krav, er der naturligvis også andre løsninger (f.eks. kunne man have en "sprog-Javascript-fil" der kun placerede tekster i vairable, og så referere til disse).
Avatar billede soerent Nybegynder
13. august 2008 - 13:58 #2
Ok. Kan du forklare mig lidt nærmere om hvordan den sidste metode fungere eller vise et eksempel på hvordan det implementeres?
Avatar billede pidgeot Nybegynder
13. august 2008 - 14:12 #3
Forestil dig du har en samling Javascriptfiler:

lang_da.js
lang_de.js
lang_en.js

Hver af disse indeholdte en lang række variabeldeklarationer (pseudokode - i virkeligheden må man ikke bruge tegn > 127 direkte i en streng, men skal escape):

lang_da.js:
var OnlyNumbersError = 'Du må kun indtaste tal.';
var NoNumbersError = 'Du må ikke indtaste tal.';

lang_de.js:
var OnlyNumbersError = 'Sie dürfen nur Zahlen benutzen.';
var NoNumbersError = 'Sie dürfen keine Zahlen benutzen.';

lang_en.js:
var OnlyNumbersError = 'You must enter numbers.';
var NoNumbersError = 'You may not enter numbers.';

Du starter din <head> sektion med at smide det rette script ind, afhængigt af det valgte sprog.
Hvis du ikke kan vide det på forhånd, så er du nok nødt til at have dem alle med, og så skrive de filer så du faktisk arbejder med en form for arrays hvor sproget er nøglen - det vil nok være meget passende at skrive en funktion til formålet, så du nemmere kan lave fallback til et fast "grundsprog" hvis der er noget der ikke er blevet oversat i den pågældende sprogfil.

Når du skal bruge teksten, henviser du blot til variablen, eks.:

alert(OnlyNumbersError);

og den vil så bruge den tekst der blev sat i den lang_*.js fil der blev sat ind tidligere.
Avatar billede soerent Nybegynder
13. august 2008 - 14:19 #4
Ok. Super. Tak skal du have.
Avatar billede pidgeot Nybegynder
13. august 2008 - 14:25 #5
Det tager jeg som en opfordring til at smide et svar.
Avatar billede soerent Nybegynder
13. august 2008 - 14:43 #6
Sådan. Pidgeot
Avatar billede roenving Novice
14. august 2008 - 00:14 #7
-- og du kan se et eksempel på at gøre det på den måde, hvis du går ind på http://roenving.users.whitehat.dk/date/roenvingDate.html og fjerner eller tilføjer sprog-filen på engelsk !-)
Avatar billede roenving Novice
14. august 2008 - 00:15 #8
-- der arbejder jeg dog desuden med default-værdier, hvilket du måske kan bruge !o]
Avatar billede olebole Juniormester
14. august 2008 - 00:46 #9
<ole>

- og det vil nok være meget smart at samle alle variablerne i ét objekt, så de ikke i større hobe skvulper rundt i det globale scope  ;o)

var oLng = {
    OnlyNumbersError: 'Du må kun indtaste tal.',
    NoNumbersError: 'Du må ikke indtaste tal.'
};

alert(oLng.OnlyNumbersError);

/mvh
</bole>
Avatar billede roenving Novice
14. august 2008 - 00:54 #10
-- jeg har jo så snydt, for jeg arbejder med et array, men det giver kun mening i et begrænset scope, som jeg har !o]
Avatar billede olebole Juniormester
14. august 2008 - 01:06 #11
- og jeg må indrømme, at jeg faktisk slet ikke har tjekket dit link, men kommenterede egentlig bare på pidgeots løsning  =)
Avatar billede roenving Novice
14. august 2008 - 01:11 #12
-- der er nu ikke noget særligt i min løsning, jeg undersøger bare om et array er defineret, er det ikke det, definerer jeg det, og teksten indsættes i svar fra f.eks. i den prototypede Date.format-metode !-)
Avatar billede roenving Novice
14. august 2008 - 01:24 #13
-- hvilket i øvrigt betyder, at sprog-tingen skal klares server-side med den aktuelle kode, da der ikke kan skiftes sprog online (hvis der var det behov skulle vi zq nok klare den også !-)
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