nanneMedlem sedan dec. 19991 749 inlägg Jag har fått uppdraget att bygga en modul för att vi lätt ska kunna använda olika språk på hemsidan.
Det som vi har på våra siter nu är att man definierar $lang och sedan anropar man en funktion med t.ex. GetTxt("Hej","Hello"); Detta är givetvis inte bra eftersom om man vill lägga till ett språk så måste man gå igenom alla sidor som finns.
Nån som har något förslag?
------------------
Fatal Error: Call to undefined function:
brain() in ./self.php on line 1
nanne.net
Lagra textmassorna, rubriker, bildtexter, etc. i en databas. Varje texttyp har en kolumn 'lang' som specificerar vilket språk det är skrivet på.
På sidorna så använder du sedan någon metod, t.ex getText(id,lang) som plockar ut rätt textstycke på rätt språk från databasen.
Gör du så är det lätt att lägga till nya språk.
------------------
Murphy's Law of Thermodynamics:
Things get worse under pressure.
eurecaMedlem sedan sep. 20002 921 inlägg funderar på att göra en liknande sak, då jag sköter om en site med olika språk. kruxet är dock att dom olika språken inte kommer kunna matas in samtidigt i databasen (eftersom översättningen tar sin tid). så om man gör samma sida så kommer det på vissa språk saknas text ju..eller kan man lösa detta på ngt kul sätt? hoppas nån förstår vad jag svamlar om..;)
SweyMedlem sedan apr. 20003 971 inlägg Visa den engelska texten om det saknas översättning till det aktuella språket.
------------------
- Swey
Glömde jag säga snälla?
nanneMedlem sedan dec. 19991 749 inlägg sgtpeppar.. Jo men det gör att det blir en förbannat massa slagningar i databasen eftersom ett enkelt "Hej!" måste slås upp.
Så som jag har gjort det nu är att vi har en databas med all text som man generar textfiler av. Varje textfil består av en fet array med orginalspråket som index.
Längs ner i filen skapas funktionen GetTxt som kollar i arrayen om ordet finns översatt och retunerar det isf. Annars så matar den ut orginalordet och mailar till mig och upplyser vart ordet finns så man kan gå in och ändra.
På vår server så tar detta 0.066 sec på när jag har 1300 rader och det verkar helt okej.
Tänkte bara på om det fanns andra lösningar.
------------------
Fatal Error: Call to undefined function:
brain() in ./self.php on line 1
nanne.net
SweyMedlem sedan apr. 20003 971 inlägg nanne,
En databassökning ska alltid vara det snabbaste sättet att hantera data. Även om du gör 1000 förfrågningar på olika ord ska det förhoppningsvis vara snabbare än filhantering. Det är dock mycket bättre att lagra stycken i databasen istället för meningar/ord.
------------------
- Swey
Glömde jag säga snälla?
Ett relativt enkelt sätt är att bygga en cache-klass som funkar som ett mellanskikt mellan databasen och systemet. När en text skall hämtas ut så anropas en metod i cache-klassen och den kollar i sin hashtabell eller liknande om texten redan hämtats, om så är fallet så returneras texten som alltså redan ligger i serverns minne, annars så hämtas texten från databasen, stoppas in i hashtabellen och returneras. Nästa gång samma text efterfrågas så hämtas den alltså inte från databasen utan från minnet.
För att detta skall funka så måste cache-klassen vara av en s.k singleton-typ, dvs det får endast existera ett sådant objekt och alla anrop skall gå via just detta, hur och om det går att lösa med PHP vet jag inte, annars får du gå över till Java ;)
------------------
Murphy's Law of Thermodynamics:
Things get worse under pressure.
nanneMedlem sedan dec. 19991 749 inlägg Swey... Läste att mySQL i test bara klarar c:a 50-60 förfrågningar åt gången. Det gör att en site med kanske 500 samtidiga besökare sänks ganska fort. Det är därför vi har använt systemet.
sgtpeppar... Det där lät intressant. Du har ingen länk om ämnet som man kan få kika på?
------------------
Fatal Error: Call to undefined function:
brain() in ./self.php on line 1
nanne.net
Jo, kanske. Jag skall rota lite och återkommer.
------------------
Murphy's Law of Thermodynamics:
Things get worse under pressure.