Någon som kan tipsa lite lätt hur man går tillväga för skapa flerspråkstöd till en webbplats, dvs att man ska kunna ändra språk från svenska till engelska.
Jag har hört att man kan använda sig av en dll men nackdelen med detta är att man måste kompilera om den när man lägger till fler ord? Det skulle vara intressant att höra era erfarenheter i frågan.
Hej kristoffer och övriga! Jag har läst det som stått och det har varit en intressant läsning. Många förespråkade att man skulle använda XML men om man har det i en databas i stället. Vad har det för fördelar respektive nackdelar i jämförelse med XML?
Personligen tycker jag att det skulle vara lättare att underhålla med XML och Serialization, vill man ändra något öppnar man bara upp sin xml fil och sparar så är det klart. Kan tyckas vara lika lätt med en databas men det blir svårare att få en lätt struktur för all text. Med XML kan varje språk på ett lätt sätt få en egen xml fil, då blir det lätt att lägga till nya språk då det endast är att skapa en ny xml fil i princip.
.resx-filerna (resursfiler) är ju finurligt om du använder vs.net eftersom de redan finns där och att du på ett enkelt och strukturerat sätt kan ha en språkfil för respektive sida. Om du däremot bara ska överätta texter i knappar och dyligt så skulle jag slänga ihop ett vanligt xml-dokument och samla upp alla språk i detta enda dokument.
En liten kort förklaring till kodexemplet i länken då. Vi hade två språkfiler (kan naturligtvis vara oändligt många språk) för samtliga sidor och en klass Language för att hantera detta. Du skickar helt enkelt in en sträng (namnet, name i din resx-fil) som sedan returnera värdet (value i din resx-fil). Beroende på språk så hämtas alltså value från den fil som innehåller det aktuella språket (filnamnet innehåller landsbeteckningen, vi döpte filerna till strings.sv.resx osv...). Vilket land du kommer ifrån läses av från dina nationella inställningar på din dator och om språket inte finns så hämtar man förslagsvis den engelska översättningen.
Alltså, för att använda klassen gör du precis som vanligt, skickar in en sträng och du får tillbaka en sträng, exempelvis:
//I koden:
MyLabel.Text = Language.Text("translate");
//i din resx-fil
name value ...
-----------------------------------------------
translate översätt
whatever vadsomhelst
osv
Klassen i sig gör inga konstigheter, den kollar var du kommer ifrån och i vilken fil den ska läsa och vad den ska returnera (beroende på vilken sträng du skickar in). Det fungerade bra för oss då och gör det nu också, har inte gjort något mer som rkäver olika språk sedan dess. :) Men om det är den ultimata lösningen låter jag vara osagt.
Vet inte riktigt hur du menar, bakåtkompatibiliteten finns ju på så sätt att du kan använda gammal asp tillsammans med .net men du kan inte programmera asp med c#, asp i sig är ju ett scriptspråk (vb-script).
red:
Möjligtvis att man kan göra det med COM men det är över mitt huvud och där ser jag inte nyttan. :)
Okej klumpigt formulerat av mig, jag menade ju asp.net :OO
Men du skrev ju vs.net och som jag förstått det så kan även c#.net användas tillsammans med asp.net. Och är det då någon skillnad eller fungerar det på samma sätt (med resx-filerna)?
mozilla: vs.net är benämningen på ett utvecklingsverktyg från Microsoft, Visual Studio .NET. C#.NET som många skriver är ett programmeringspråk för .NET, det är även VB.NET. Dessa språk kan användas för att göra en ASP.NET sida.
NETwork, är det inte så att resx filerna måste kompileras vid ändringar?
NETwork, är det inte så att resx filerna måste kompileras vid ändringar?
Jaa, men jag har för mig att jag läste här någonstans att det inte behövdes ändå... kanske jag har drömt men det låter ju inte orimligt (det är ju egentligen vanliga xml-dokument?). En stor nackdel annars.
Red:
Det var visst kollegan som skrev att det inte behövdes, finns tydligen något program som följer med VS där man kan ändra i dem utan att behöva kompilera... ska fråga i mörrn. :)
370 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9