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 ?
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.
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????
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>")
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
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
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:
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.
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...
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
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