webForumDet fria alternativet

Flerspråksstöd och UTF-8

20 svar · 1 141 visningar · startad av MickeA.com

MickeA.comMedlem sedan feb. 20034 441 inlägg
#1

Tjena
Håller på med en webbplats som ska finnas på 4 språk.
Det är svenska, engelska, hollänska och japanska.

Pågrund av detta använder jag UTF-8 charset på sidan. Det funkar jättebra tills jag kommer till javascriptbiten, å, ä, ö vill inte bli "rätt" översatta i när man valt svenska.
Har testat med escape / unescape / decodeURI() mm. men inget funkar.

Hur ska jag lösa det här?
Kan tillägga att all javascript ligger i en egen fil som heter scripts.js.asp och inluderas högst upp på varje undersida med SSI.

Tack på förhand!

nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

hur blir de översatta då? Att få ta en titt på sidan skulle kanske hjälpa.

MickeA.comMedlem sedan feb. 20034 441 inlägg
#3

I nuläget gäller det administrationsgränssnittet och där kan jag tyvärr inte släppa in dig, men såhär fungerar det:

De olika språken ligger i egna XML-Filer, såhär ser den svenska ut (en liten del av javascriptbiten):

<toolbox>
		<js_str_bold>Ange den text du vill g&ouml;ra fetstilt</js_str_bold>
		<js_str_italic>Ange den text du vill g&ouml;ra kursiv</js_str_italic>
		<js_str_underline>Ange den text du vill g&ouml;ra understruken</js_str_underline>
		<js_str_through>Ange den text du vill g&ouml;ra genomstruken</js_str_through>
		<js_str_insert_url>Ange en URL</js_str_insert_url>
		<js_textsize>Textstorlek</js_textsize>
		<js_size_1>Liten</js_size_1>
		<js_size_2>Normal</js_size_2>
		<js_size_3>Stor</js_size_3>
		<js_size_4>J&auml;ttestor</js_size_4>
		<phrase_js_size>Ange den text du vill &auml;ndra strorlek p&aring;.</phrase_js_size>
	</toolbox>

När jag har å, ä & ö sådär, htmlenkodad, så får jag ett frågetecken istället för "rätt" bokstav i alertrutorna.

Har testat att skriva in "%uFFF", som är "ö", escape'ad med javascript. När jag sedan kör unescape i javascript, så blir det ändå frågetecken i alertrutan. HAr även testat att skriva just "ö", men samma sak där.

Språket hämtas in m.h.a en funktion i asp, som använder regExp för att plocka ut rätt sträng i xmlfilen.

Som det är i javascriptfilen just nu, så visas strängen som den är skriven, när jag inte använder unescape eller något sådant.

Tex. "Jättestor" visas i alertrutorna.

Vill du se mer kod är det bara att säga till!

dAEkMedlem sedan feb. 20041 816 inlägg
#4

Kanske har jag missat något men varför sparar du inte XML-filen i utf-8?
Eller finns det någon speciell anledning att spara exempelvis

<js_str_bold>Ange den text du vill g&ouml;ra fetstilt</js_str_bold>

istället för

<js_str_bold>Ange den text du vill göra fetstilt</js_str_bold>

?

MickeA.comMedlem sedan feb. 20034 441 inlägg
#5

dAEk^ skrev:

Kanske har jag missat något men varför sparar du inte XML-filen i utf-8?

Ja, säg det...
Har ingen tidigare erfarenhet av det här, men såhär ser XML-Filen ut högst upp:

<?xml version="1.0" encoding="windows-1252"?>

Ska jag byta till UTF-8 där med kanske?

MickeA.comMedlem sedan feb. 20034 441 inlägg
#6

MickeA.com skrev:

Ska jag byta till UTF-8 där med kanske?

Provade och det blev ingen skillnad.
På de vanliga htmlsidorna blir alla tecken rätt, det är endast i javascript's alert-rutor det blir fel.

FuelMedlem sedan okt. 20001 285 inlägg
#7

Jag tror inte du har sparat sidan rätt .. jag kör UltraEdit och sparar i formatet "UTF-8 NO BOM"

MickeA.comMedlem sedan feb. 20034 441 inlägg
#8

Fuel skrev:

Jag tror inte du har sparat sidan rätt .. jag kör UltraEdit och sparar i formatet "UTF-8 NO BOM"

Aha, hmm, ok, ska kolla om det kan vara så.
Det ska alltså funka med tex. å i javsscript?

dAEkMedlem sedan feb. 20041 816 inlägg
#9

Du behöver inte använda html-entiteter när du kör utf-8. :)
Men visst funkar det.

zcorpanMedlem sedan dec. 20042 245 inlägg
#10

Du kan inte direkt använda "å" i XML eftersom entiteter deklareras i DTDn, och XML-processorer behöver inte läsa DTDn.

Du kan inte heller använda "å" som en sträng i javascript, eftersom det blir precis det.

Det du behöver göra är att se till att både XML-filen och JS-filen är sparade och serverade som utf-8.

dAEkMedlem sedan feb. 20041 816 inlägg
#11

Ja, precis. Lyssna på zcorpan.

Jag tänkte galet. :r

MickeA.comMedlem sedan feb. 20034 441 inlägg
#12

zcorpan skrev:

Du kan inte direkt använda "å" i XML eftersom entiteter deklareras i DTDn, och XML-processorer behöver inte läsa DTDn.

Du kan inte heller använda "å" som en sträng i javascript, eftersom det blir precis det.

Det du behöver göra är att se till att både XML-filen och JS-filen är sparade och serverade som utf-8.

Aha, så alla "konstiga" tecken ska skrivas precis som dom "ser ut" (å, ä ö) och det kommer funka sålänge XML-filen och JS-Filen är sparade som UTF-8?
I XML-filen, ska det även vara encoding="utf-8" ?

Nu ser en bit av XML-Filen ut såhär:

<?xml version="1.0" encoding="utf-8"?>
	<language>Svenska</language>
	<chpass>
		<helpbox_chpass>Antingen har ditt l&ouml;senord f&ouml;rnyats eller s&aring; har du aldrig loggat in tidigare. Du m&aring;ste d&auml;rf&ouml;r skapa ett l&ouml;senord nu. Mata in ditt tillf&auml;lliga &quot;eng&aring;ngsl&ouml;senord&quot; samt ett nytt.</helpbox_chpass>
		<phrase_old_passwd>Gammalt l&ouml;senord:</phrase_old_passwd>
		<phrase_new_passwd>Nytt l&ouml;senord: (6-8 tecken)</phrase_new_passwd>
		<phrase_new_passwd_again>Nytt l&ouml;senord: (upprepa)</phrase_new_passwd_again>
	</chpass>
</xml>

Men då sparar jag allt som UTF-8 så är det bara att åka sen?

När jag ändå tar upp det här, är det någon som har erfarenhet av japanska sidor, den här sidan jag håller på med ska nämligen även finnas på japanska, vi har skaffat fram en tolk, men hur löser jag det rent scriptmässigt?

Tack på förhand!

dAEkMedlem sedan feb. 20041 816 inlägg
#13

MickeA.com skrev:

Aha, så alla "konstiga" tecken ska skrivas precis som dom "ser ut" (å, ä ö) och det kommer funka sålänge XML-filen och JS-Filen är sparade som UTF-8?
I XML-filen, ska det även vara encoding="utf-8" ?

Jupp och jupp! Det är viktigt att filerna sparas i utf-8 också men det har redan påpekats. Det är viktigt. :)

MickeA.com skrev:

Nu ser en bit av XML-Filen ut såhär:

...

Men då sparar jag allt som UTF-8 så är det bara att åka sen?

Jupp. XML kan du se som en informationskälla där informationen med fördel sparas "as is". XML kan användas på många olika sätt, webben är bara ett område. Sparar du infon med html-entiteter förlorar du lite av flexibiliteten, spottar du t.ex. ut innehållet till ett icke-webbaserat program hänger ju entiteterna med. Sparas informationen med utf-8 encoding kan du skicka infon till webbaserade program eller vanliga desktop-program utan att behöva köra infon genom ngt filter eller så. Toksmidigt! :)

MickeA.com skrev:

När jag ändå tar upp det här, är det någon som har erfarenhet av japanska sidor, den här sidan jag håller på med ska nämligen även finnas på japanska, vi har skaffat fram en tolk, men hur löser jag det rent scriptmässigt?

Är det inte så att en del japanska tecken inte är med i utf-8, eller är det kanske Kinesiska jag tänker på? Isf kan man använda sig av utf-16 eller utf-32.
Jag har tyvärr inga erfarenheter om detta att dela med mig av.

zcorpanMedlem sedan dec. 20042 245 inlägg
#14

MickeA.com skrev:

Aha, så alla "konstiga" tecken ska skrivas precis som dom "ser ut" (å, ä ö) och det kommer funka sålänge XML-filen och JS-Filen är sparade som UTF-8?

Svar ja.

MickeA.com skrev:

I XML-filen, ska det även vara encoding="utf-8" ?

Ja, om du har med encoding="" så ska det vara "utf-8". (Det är dock valbart om du använder utf-8 eftersom det är standardvärdet.)

MickeA.com skrev:

Nu ser en bit av XML-Filen ut såhär:

<?xml version="1.0" encoding="utf-8"?>
	<language>Svenska</language>
	<chpass>
		<helpbox_chpass>Antingen har ditt l&ouml;senord f&ouml;rnyats eller s&aring; har du aldrig loggat in tidigare. Du m&aring;ste d&auml;rf&ouml;r skapa ett l&ouml;senord nu. Mata in ditt tillf&auml;lliga &quot;eng&aring;ngsl&ouml;senord&quot; samt ett nytt.</helpbox_chpass>
		<phrase_old_passwd>Gammalt l&ouml;senord:</phrase_old_passwd>
		<phrase_new_passwd>Nytt l&ouml;senord: (6-8 tecken)</phrase_new_passwd>
		<phrase_new_passwd_again>Nytt l&ouml;senord: (upprepa)</phrase_new_passwd_again>
	</chpass>
</xml>

Det här verkar inte vara välformad XML, borde nog se ut såhär:

<xml>
	<language>Svenska</language>
	<chpass>
		<helpbox_chpass>Antingen har ditt lösenord förnyats eller så har du aldrig loggat in tidigare. Du måste därför skapa ett lösenord nu. Mata in ditt tillfälliga "engångslösenord" samt ett nytt.</helpbox_chpass>
		<phrase_old_passwd>Gammalt lösenord:</phrase_old_passwd>
		<phrase_new_passwd>Nytt lösenord: (6-8 tecken)</phrase_new_passwd>
		<phrase_new_passwd_again>Nytt lösenord: (upprepa)</phrase_new_passwd_again>
	</chpass>
</xml>

(Sidonotis: du skulle kunna använda xml:lang="sv" istället för <language>Svenska</language>.)

MickeA.com skrev:

Men då sparar jag allt som UTF-8 så är det bara att åka sen?

Testa? :)

MickeA.com skrev:

När jag ändå tar upp det här, är det någon som har erfarenhet av japanska sidor, den här sidan jag håller på med ska nämligen även finnas på japanska, vi har skaffat fram en tolk, men hur löser jag det rent scriptmässigt?

Är det nån skillnad mot andra språk?

MickeA.comMedlem sedan feb. 20034 441 inlägg
#15

dAEk^ skrev:

Toksmidigt! :)

Låter ju kanon!

dAEk^ skrev:

Är det inte så att en del japanska tecken inte är med i utf-8, eller är det kanske Kinesiska jag tänker på? Isf kan man använda sig av utf-16 eller utf-32.
Jag har tyvärr inga erfarenheter om detta att dela med mig av.

Ok, har själv inte en aning ;)
Men min kollega har grävt fram det här någonstans:

*  Japanese Encodings: utf-8 (Unicode ), euc-jp , shift_jis,
*  Language Code: ja (not "jp " for Japan)

Låter lovande ;)

aronMedlem sedan mars 2004485 inlägg
#16

Allt som finns med i utf-16 och utf-32 finns väll med i utf-8 trodde jag iaf, bara olika kodning bokstäverna tar upp olika stor plats. Kan hända att man får filerna mindre om man väljer nån av de andra.

MickeA.comMedlem sedan feb. 20034 441 inlägg
#17

Oj, nu var det många samtidigt, men jag ändrar min XML fil enl. zcorpans modell.

zcorpan skrev:

Är det nån skillnad mot andra språk?

Jo, japanska är jättesvårt att förstå ;)

Ha, nä men vad bra, då är det alltså bara att sätta tolken i arbete då.

Tack för all hjälp!

dAEkMedlem sedan feb. 20041 816 inlägg
#18

aron skrev:

Allt som finns med i utf-16 och utf-32 finns väll med i utf-8 trodde jag iaf, bara olika kodning bokstäverna tar upp olika stor plats. Kan hända att man får filerna mindre om man väljer nån av de andra.

Näej, eller jag vet faktiskt inte. Jag har för mig att det är såsom jag skrev men jag är inte säker. Jag ser gärna att någon rättar mig om jag har fel.

aronMedlem sedan mars 2004485 inlägg
#19

Det är en liten djungel det där, men jag tror att man i alla fall inte kan göra mer med UTF-16 och UTF-32 än med UTF-8.
Läs om det här kan man: http://www.cl.cam.ac.uk/~mgk25/unicode.html#ucsutf

zcorpanMedlem sedan dec. 20042 245 inlägg
#20

dAEk^ skrev:

Näej, eller jag vet faktiskt inte. Jag har för mig att det är såsom jag skrev men jag är inte säker. Jag ser gärna att någon rättar mig om jag har fel.

Du har fel och aron har rätt. ;) UTF-8, UTF-16 och UTF-32 täcker alla hela Unicode, men tecknen representeras olika i bytes. "Alla" tecken finns i Unicode, inklusive kinesiska och japanska.

147 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)