13. august 2008 - 13:39Der 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?
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).
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.
-- 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 !-)
-- 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å !-)
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.