webForumDet fria alternativet

flera olika språk...

XMLur XML

12 svar · 690 visningar · startad av roady

Medlem sedan jan. 2002473 inlägg
Frågan#1

ställer egentligen samma fråga som catalina76 har gjort...

Skall bygga en sajt med sex olika språk. Kommer att scriptas med ASP. Är xml en bra lösning på flerspråksval eller???

tanken är att sajten skall laddas så snabbt som möjligt o använda sig utav så få databashämtningar osv. Vill helst slippa att behöva göra samma sida 6ggr för att skriva texten i olika språk.

Så är det möjligt att göra detta med XML eller skulle något annat vara bättre ?

Medlem sedan aug. 2001458 inlägg
#2

> Kommer att scriptas med ASP.

Har du möjlighet att använda ASP.Net? Där finns det bra stöd för flera språk, se exempelvis http://samples.gotdotnet.com/QuickStart/aspplus/default.aspx?url=/quickstart/aspplus/doc/localizingapps.aspx

Frågan om lokalisering kan göras med XML är väldigt oprecis. Det är troligt att en bra lösning har inslag av någon XML-teknik, men att använda "XML" säger väldigt lite om lösningen.

Medlem sedan jan. 2002473 inlägg
#3

hmm, det som jag alltså skall göra är att enbart ha texten på olika språk.

kan ingenting om XML, men kan man sätter ju upp det med nodpunkter eller vad det nu heter, så ifall jag exempelvis gör en sida som den skall vara, sedan hämtar jag en xml-sida med enbart texten o från den så plockar jag bara texten för det språk som skall visas????

är det en bra lösning? går det att göra ?

Medlem sedan jan. 2002473 inlägg
#4

har äntligen lyckats...
men sedan hur optimalt det är vet jag inte,,, tror det skall funka rättså schysst...

min xml-fil ser exempelvis ut såhär:

<?xml version="1.0" encoding="iso-8859-1"?>
<language>
	<swe>
		<head>Svensk text</head>
		<body>Vi skriver ut texten på svenska...</body>
	</swe>
	<eng>
		<head>English</head>
		<body>This is a english version...</body>
	</eng>
	<den>
		<head>Dei här é danske</head>
		<body>den dänske photosidän</body>
	</den>
</language>

Sedan med använder jag asp för att plocka ut den info som jag vill ha. vilket språk man skall använda skickar jag med i en querystring som t.ex sida.asp?lang=swe

speach = Request.QueryString("lang")

set xmlDoc=Server.CreateObject("Microsoft.XMLDOM") 
xmlDoc.async="false" 
fil=Server.mappath("language.xml") 
xmlDoc.load(fil) 

pelle = xmlDoc.selectSingleNode("language/"& speach &"/head").nodeTypedValue
olle = xmlDoc.selectSingleNode("language/"& speach &"/body").nodeTypedValue
Response.Write("<br><br>"& pelle &"<br>")
Response.Write(olle &"<br>")
Medlem sedan juni 20008 205 inlägg
#5

roady skrev:

har äntligen lyckats...
men sedan hur optimalt det är vet jag inte,,, tror det skall funka rättså schysst...

min xml-fil ser exempelvis ut såhär:

<?xml version="1.0" encoding="iso-8859-1"?>
<language>
	<swe>
		<head>Svensk text</head>
		<body>Vi skriver ut texten på svenska...</body>
	</swe>
	<eng>
		<head>English</head>
		<body>This is a english version...</body>
	</eng>
	<den>
		<head>Dei här é danske</head>
		<body>den dänske photosidän</body>
	</den>
</language>

Grohaaagh... det där känns inte riktigt XML:igt. Om jag vore som du skulle jag nog säga så här i stället:

<?xml version="1.0" encoding="iso-8859-1"?>
<language>
	<lang name="se">
		<head>Svensk text</head>
		<body>Vi skriver ut texten på svenska...</body>
	</lang>
	<lang name="en">
		<head>English</head>
		<body>This is a[b]n[/b] english version...</body>
	</lang>
	<lang name="da">
		<head>Dei här é danske</head>
		<body>den dänske photosidän</body>
	</lang>
</language>
---
pelle = xmlDoc.selectSingleNode("language/lang[name='" &  speach & "']/head").nodeTypedValue
olle = xmlDoc.selectSingleNode("language/lang[name='" &  speach & "']/body").nodeTypedValue

Med viss reservation för att min xpath inte är vad den borde vara

Medlem sedan jan. 2002473 inlägg
#6

oki *ler*
då testar jag detdär istället:.!

Medlem sedan jan. 2002473 inlägg
#7

menmen,, som du skrev så är inte xpathen så bra....
funkar icke alls =/

pelle = xmlDoc.selectSingleNode("language/lang[name='" &  speach & "']/head").nodeTypedValue
olle = xmlDoc.selectSingleNode("language/lang[name='" &  speach & "']/body").nodeTypedValue
Medlem sedan juni 20008 205 inlägg
#8

Då har du lärt dig en viktig läxa; det går inte att lita på alla skurkar ute på nätet... ;)
det borde funka om du säger "language/lang[@name='" & speach & "']/head" enligt http://www.w3.org/TR/xpath#path-abbrev

Medlem sedan jan. 2002473 inlägg
#9

sådär... nu funkar det kanon....
tänk va lite kan göra så mycket =)

Medlem sedan juni 20019 024 inlägg
#10

Följdfrågor

Om man fortsätter på samma XML-modell, hur ska man göra om man vill ha olika texter på olika sidor. En XML-fil per sida eller lägga upp någon form av hieraki med undernoder för varje sida?

Dessutom undrar jag hur man kan göra egna variabler i själva XML-texten:

<?xml version="1.0" encoding="iso-8859-1"?>
<language>
	<lang name="se">
		<head>Hej [red]{name}[/red]! Välkommen till...</head>
	</lang>
	...
</language>

Under parsningen ska alltså {name} bytas ut till ett namn. Finns det något smart sätt att göra detta? Eller ska man förlita sig på vanliga Replaces. Jag kommer att använda .NET.

Medlem sedan juli 20013 378 inlägg
#11

Du kan titta lite på att använda XSLT och transformera dina sidor innan du presenterar dem...

Dels för att du kan skicka med värden ("argument") till transformeringarna i de flesta XSLT-motorer (som MSXML, Xalan m.fl), och dels för att du kan skapa egna "Template languages" - mallspråk - ganska enkelt med XSLT...

Bra artikel i*det* ämnet är: http://www.xml.com/pub/a/2002/03/27/templatexslt.html

Problemet är kanske att XSLT på den här nivån kan vara ganska svårsmält för den oinvigde ;) - så kom ihåg att replace, som sagt, funkar det också om du inte vill göra något superavancerat utan komma igång snabbt :e

Jo - förresten: Om jag förstår dig rätt, så är det antagligen bättre (prestandamässigt eftersom filerna blir mindre ;) ) att lägga informationen för varje sida (med alla olika sina språkversioner) i en separat fil per sida

Medlem sedan juni 20019 024 inlägg
#12

Problemet är kanske att XSLT på den här nivån kan vara ganska svårsmält för den oinvigde - så kom ihåg att replace, som sagt, funkar det också om du inte vill göra något superavancerat utan komma igång snabbt

Jag vill veta det för framtida bruk, när jag väl behöver det ska jag givetvis sätta mig in i det bättre. ;)

Jo - förresten: Om jag förstår dig rätt, så är det antagligen bättre (prestandamässigt eftersom filerna blir mindre ) att lägga informationen för varje sida (med alla olika sina språkversioner) i en separat fil per sida

Du förstod mig precis. :e

Tack för svaret förresten!

Medlem sedan juli 20013 378 inlägg
#13

när jag väl behöver det ska jag givetvis sätta mig in i det bättre.

Som jag då - jag förstår just nu *att* metoderna i artikeln fungerar... Men inte i detalj exakt *hur*... Trots att jag jobbat lite grann med XSLT :e

140 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
131 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)