Kom ihåg mig?
Home Menu

Menu


Hantera språk på ett bra sätt

 
Ämnesverktyg Visningsalternativ
Oläst 2004-11-03, 23:15 #1
Hjalmars avatar
Hjalmar Hjalmar är inte uppkopplad
Medlem
 
Reg.datum: Apr 2003
Inlägg: 151
Hjalmar Hjalmar är inte uppkopplad
Medlem
Hjalmars avatar
 
Reg.datum: Apr 2003
Inlägg: 151
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?
Hjalmar är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-03, 23:22 #2
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
.NET? ASP? PHP? NOTES? JSP? ...vilket serverspråk kör du?
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-03, 23:28 #3
Hjalmars avatar
Hjalmar Hjalmar är inte uppkopplad
Medlem
 
Reg.datum: Apr 2003
Inlägg: 151
Hjalmar Hjalmar är inte uppkopplad
Medlem
Hjalmars avatar
 
Reg.datum: Apr 2003
Inlägg: 151
Citat:
.NET? ASP? PHP? NOTES? JSP? ...vilket serverspråk kör du?
Det kan ju vara en fördel om jag skriver med det. Jag kör ASP!
Hjalmar är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-03, 23:49 #4
Starwebs avatar
Starweb Starweb är inte uppkopplad
Flitig postare
 
Reg.datum: Jan 2004
Inlägg: 332
Starweb Starweb är inte uppkopplad
Flitig postare
Starwebs avatar
 
Reg.datum: Jan 2004
Inlägg: 332
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.
Starweb är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-03, 23:54 #5
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
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.
grazzy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-04, 10:41 #6
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
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.
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-04, 10:55 #7
Starwebs avatar
Starweb Starweb är inte uppkopplad
Flitig postare
 
Reg.datum: Jan 2004
Inlägg: 332
Starweb Starweb är inte uppkopplad
Flitig postare
Starwebs avatar
 
Reg.datum: Jan 2004
Inlägg: 332
Citat:
Ok, ASP it is then (.Net har inbyggd språkhantering btw) =)
Vill du utveckla? Har jobbat med .NET en del, men aldrig sett/hittat detta... Har iofs. inte letat speciellt, men om du har någon länk/mer information eller annat, så lägg gärna upp den här i forumet.


Citat:
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).
Verkligen ett häftigt projekt! Använde ni javascript för att räkna ut vilken text som var markerad då?


Citat:
Ä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.
Varför skulle underhållet av en include-fil bli "jobbigare" än en databas? Dessutom kan man istället spara include-filen i minnet (session), och hänvisa till minnet istället för till databasen, vilket gör att det inte alls blir prestandakrävande...

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?
Starweb är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-04, 11:40 #8
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Citat:
Originally posted by Starweb@Nov 4 2004, 11:55
Citat:
Ok, ASP it is then (.Net har inbyggd språkhantering btw) =)
Vill du utveckla? Har jobbat med .NET en del, men aldrig sett/hittat detta... Har iofs. inte letat speciellt, men om du har någon länk/mer information eller annat, så lägg gärna upp den här i forumet.
Oj, finns ju en hel del om hur man tillverkar "languagepacks" för sina applikationer (har inte pysslat med detta i .net själv ännu, men stött på det många gånger):

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:

Citat:
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).
Verkligen ett häftigt projekt! Använde ni javascript för att räkna ut vilken text som var markerad då?
Nja, det var alltså ett fristående VB program vi tillverkade som såg ut som en texteditor. Man läste in ASP filen där, markerade den textmassa som skulle vara dynamisk och tryckte på en knapp. Textmassan som var markerad lades in i databasen som den "svenska" versionen (i detta fall) och byttes ut i ASP koden mot ett funktionsanrop + en unik nyckel(id) för denna chunk av textmassa. Detta går givetvis att göra manuellt direkt i ASP koden, men grejjen var den att vi tog en färdig webapplikation på xxx antal ASP sidor, så vi sparade massor av tid att göra ett litet verktyg i VB för detta.
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:

Citat:
Ä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.
Varför skulle underhållet av en include-fil bli "jobbigare" än en databas? Dessutom kan man istället spara include-filen i minnet (session), och hänvisa till minnet istället för till databasen, vilket gör att det inte alls blir prestandakrävande...

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)
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-04, 11:55 #9
Starwebs avatar
Starweb Starweb är inte uppkopplad
Flitig postare
 
Reg.datum: Jan 2004
Inlägg: 332
Starweb Starweb är inte uppkopplad
Flitig postare
Starwebs avatar
 
Reg.datum: Jan 2004
Inlägg: 332
Citat:
<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.
Varför inte använda en WYSIWYG-editor istället för hela sidan?
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:
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?
- Varför skulle include-filerna innehålla programmeringskod?
- Varför skulle man ha flera include-filer per språk? En fil per språk räcker väl?



Citat:
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)
Visst, om man har väldigt mycket text+besökare så kanske det blir en del, men tex. språkfilen till vår webbutik tar runt 30kb per språk, så det är inget problem även med en hel del besökare. 30kb = ca 30000 tecken. Men om man hade laddat varje språk-förfrågning direkt från databasen * X antal 1000-tals besökare så hade detta blivit MYCKET mer resurskrävande.


Hoppas vi inte kommer FÖR off-topic nu, men sånt här är ju kul :P
Starweb är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-04, 12:08 #10
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Citat:
Originally posted by Starweb@Nov 4 2004, 12:55
Varför inte använda en WYSIWYG-editor istället för hela sidan?
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?
Hur menar du nu?
Robert är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 14:23.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017