FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Medlem
|
Hur hanterar jag flera språk på ett bra sätt. Vill att det ska ta så lite kraft som möjligt av servern.
Hur gör ni? databas? inkludefil? |
|||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Klarade millennium-buggen
|
.NET? ASP? PHP? NOTES? JSP? ...vilket serverspråk kör du?
|
|||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Medlem
|
Citat:
|
|||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Flitig postare
|
Includefil, lagrade i en array, med både key och value. Referera sedan till key och hämta därmed value.
Exempel: $LanguageList = array( "Sample1" => "Detta är ett exempelvärde för översättning", "Sample2" => "Detta är exempelvärde nummer #2" ); echo $LanguageList["Sample2"]; // Kommer alltså skriva ut 'Detta är exempelvärde nummer #2' => Gör sedan en case-sats där du väljer vilken include fil du ska ha, svenska, engelska, franska osv. |
|||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Klarade millennium-buggen
|
Bara att få använda gettext är juh värt att byta till php/unix för :-)
Att använda en array kan vara ett bra tips, även om jag tvivlar på att ovanstående fungerar särskilt bra i ASP. Dock så tappar du många trevliga funktioner genom att "bara" ha en array. Stödet i PHP för gettext är dessutom än så länge rätt så basic. Det är dock sjuukt trevligt när man genomför själva implementationen då du enkelt kan använda själva texten du vill översätta som identiferare istället för att skapa identiferare överallt vilket erbjuder dig en möjlighet att långsamt emigrera din kod samtidigt som du snabbt som tusan kan översätta din site/program. Så, nu tar vi tid på hur lång tid det tar innan en moderator rensar bort mitt meddelande utan att ange anledning. |
||
![]() |
![]() |
![]() |
#6 | |||
|
||||
Klarade millennium-buggen
|
Ok, ASP it is then (.Net har inbyggd språkhantering btw) =)
Det finns mååånga sätt att göra på, beroende på hur siten ser ut. Jag har iofs bara varit delaktig i 2 tidigare multispråkprojekt och där var iofs hela grejjen att ha språkversion på själva interfacet, inte produktdatat i sig (vilket redan var på flera språk), det gör ju saken lite lättare. I en av siterna så tillverkades ett Vb program där man satt och läste in alla ASP filer, markerade den text som skulle bli administrerbar och sedan tryckte man på en knapp. Denna text böts nu ut mot ett databasanrop + att en post skapades i databasen. Alltså först ett initialt jobb att "tagga" upp all htmlkod i ASPkoden, sedan bygga admininterface till detta (+lagra språkval i cookie odyl). I grund och botten är det ju alltid fråga om att lagra båda språken i db'n, men visst kan man lösa det genom att separera siten (koden) till olika undermappar ( /sv/ eller /eng/) men då har vi dubbeljobb vad gäller underhåll och utveckling. Tänk igenom hur du vill ha det? Kommer det att bli så att de olika språkversionerna lever olika liv pga kulturella skillnader, alltså om du tex gör en portal och inser att de olika språkregionerna har olika behov? Då kan det vara bra att köra helt dubbelt och utveckla dessa separat och skiljt ifrån varandra med olika framtida funktionalitet för de olika språken (ett utmärkt tillfälle att använda separata servrar i olika länder). Är det bara fråga om lite "enkel" översättning så kan du ju bygga dina sidor såsom ett cms-verktyg och anropa db'n på alla ställen där det ska vara text, men som sagt, det tar ju mer prestanda. Includes tar ju i princip ingen prestanda, men underhållet av dessa includer blir lite jobbigare. Du skulle kunna ha ett admininterface där du editerar texter i inklude-filerna iofs. Dessa includefiler kan ligga i mappar med språkangivelse (sv, en, us), då blir det bara för koden att byta foldernamn beroende på språk. |
|||
![]() |
![]() |
![]() |
#7 | |||
|
||||
Flitig postare
|
Citat:
Citat:
Citat:
En annan fördel med en include-fil är att du kan skicka iväg den till någon som kan översätta den till andra språk. Om man nu har lagrat allt i databasen, så måste antingen den andra personen vara ganska tekniskt kunnig, eller så får man själv bygga ett admingränssnitt (precis som Robert sa, fast gällande include-filen) där man kan ändra alla texter i databasen. - Men det måste väl ändå bli mer omständigt, mer tidskrävande, och mer prestandakrävande... Eller? |
|||
![]() |
![]() |
![]() |
#8 | ||||||
|
|||||||
Klarade millennium-buggen
|
Citat:
msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbwlkWalkthroughLocalizingWebForms.asp msdn.microsoft.com/library/default.asp?url=/library/en-us/cpqstart/html/cpsmpnetsamples-aspnetlocalization.asp Citat:
Givetvis blir prestandan lidande om ASPkodaren har gjort mycket spaghettikod och du måste dela upp sidan i kanske 10 funktionsanrop. Exempel på en sida som måste få 5 funktionsanrop (och anrop mot db): <aspkod> textmassa#1 <aspkod> textmassa#2 <aspkod> textmassa#3 <aspkod> textmassa#4 <aspkod> textmassa#5 <aspkod> textmassa#6 ...är sidan kodad så här istället: <aspkod> textmassa#1 <aspkod> så blir prestandan mycket bättre. Det gäller att koda snyggt och verkligen separera textmassa och ASP kod rent fysiskt i filen för att det ska bli smidigt. Citat:
Det beror ju på hur man menar. Skulle include-filerna innehålla ASPkod så har du problemet med dubbel administrering om du måste buggrätta/utvekla i koden. Jag menade att man bara skulle ta textbitarna och lägga i include-filer, MEN som du såg på mitt exempel ovan så skulle det kunna röra sig om ett 10tal includefiler PER SIDA och PER språk, dvs 20includes i snitt per sida. Exempel: <aspkod/logik> ... <include fil#1, språk1> ... <aspkod/logik> ... <include fil#2, språk1> ... <aspkod/logik> ... <include fil#3, språk1> ... <aspkod/logik> ... <include fil#4, språk1> ... ...etc Ganska rörigt eller hur? Och att spara includefilen i minnet är ju inte aktuellt av flera anledningar, dels pga ovanstående (flera includes för att bygga samma sida) och så tar det ju prestanda/minne av servern så det heter duga (beroende på antal besökare och hur mycket text per sida) |
||||||
![]() |
![]() |
![]() |
#9 | |||
|
||||
Flitig postare
|
Citat:
Alltså, antingen läsa in hela filen som man befinner sig på, och hämta ut innehållet mellan speciella taggar såsom: <-- START --> och <-- STOP -->, eller hämta hela sidan från en databas, om man nu har lagt in allt där? Citat:
- Varför skulle man ha flera include-filer per språk? En fil per språk räcker väl? Citat:
Hoppas vi inte kommer FÖR off-topic nu, men sånt här är ju kul :P |
|||
![]() |
![]() |
![]() |
#10 | |||
|
||||
Klarade millennium-buggen
|
Citat:
|
|||
![]() |
![]() |
Svara |
|
|