Tjena
Håller på med en större sajt som i nuläget ska finnas på fem språk, med möjlighet att bli på, ja, hur många språk som helst.
Jag har gjort sidan i UTF-8 och använder MySQL för lagringen av data.
Nu sitter jag och funderar på hur jag ska översätta alla statiska texter (knappar, rubriker mm...).
Tidigare när jag gjort liknande saker, fast i ASP, har jag använt XML filer till det här och sen en funktion i ASP för att hämta "rätt" sträng från den fil som är vald.
Nu är jag ute efter nått liknande, men vet inte var jag ska börja.
Har sökt här på forumet men hittar inget som jag har direkt nytta av.
Jag har även googlat en hel del, men egentligen bara hittat liknande lösningar för mallsystem, där htmlkoden körs genom en funktion och allt mellan {} översätts.
Jag undrar om någon kan hjälpa mig med det här, en start iaf.för i nuläget står jag still och stampar och vet inte riktigt hur jag ska göra.
Tänkte från början hämta dessa strängar från databasen, men det känns onödigt att göra flera databasanrop på varje undersida, för prestandans skull.
I Java brukar man använda sig av ResourceBundle och ha en properties-file för varje språk. En properties file är en fil med <nyckel, värde>-par. Tycker det borde finnas något liknande för .NET.
En språkfil för svenska:
welcome = Välkommen
message = Ett meddelande till dig
En språkfil för engelska:
welcome = Welcome
message = A message to you
Tänkte från början hämta dessa strängar från databasen, men det känns onödigt att göra flera databasanrop på varje undersida, för prestandans skull.
Håller med. Sedan tycker jag inte all data är lämplig att ha i en databas.
/r Ojdå, jag som inte läste ordentligt. Trodde det var ASP.net det gällde men nu såg jag att det gäller PHP. Du skulle kanske kunna implementera en lösning för PHP på samma sätt som Java? Dvs implementera din egna ResourceBundle klass :)
Den tråden har jag redan sett, eftersom jag sökt en hel del innan jag skrev det här ;)
Tycker inte att det där är en särskilt fin lösning alls, det verkar krångligt medtanke på att min målsättning är att kunden själv ska kunna lägga till fler språk i efterhand och då ska det var enkelt och snyggt ;)
Är mest inne på en lösning med XML filer, men behöver alltså lite support på hur själva funktionen för läsning av XML fil samt sökning efter rätt fras ska se ut.
Men du kommenterade aldrig properties-file lösningen, måste vara ännu enklare en XML-filer. Men kör du vidare på XML om du nu är inne på det spåret, dock har jag själv inte pysslat alltför mycket med kombinationen PHP/XML.
Ska kolla mer på propertieslösningen lite senare, jag sitter paralellt och söker lite, det verkar inte finnas så mycket om XML lösningar, så jag kanske är på helt fel spår?
Jag vet att tex. vBulletin kör med XML och den administrationen dom har är klockren.
Nu hittade jag en sak på phpportalen, att göra med INI filer som man bygger upp med variabler:
Det är typ som att bygga upp med Define, eller med variabler i en PHP-fil, bara det att risken för att något ska pajja inte är så stor om man ger kunden i uppgift att själv översätta.
Det går alltså inte att lägga in "fulkod" eller nått som kan förstöra med en sådan lösning, har jag fattat det som.
Ska försöka hitta lite mer info om andra lösningar.
Nu håller jag på och testar en sak.
Steg ett är att plocka ut alla tillgängliga språk från databasen, spara dessa i en array och när man väljer ett språk med ?lang=xx_xx så ska det alltså kollas om detta finns.
Har gjort såhär:
Problemet är att "finns inte..:" skrivs ut hur jag än bär mig åt, dessa språk som finns, finns alltså _inte_ enl. ifsatsen ovan.
Skriver jag ut min array enl. foreach-loopen ovan får jag:
"sv_SE"
"en_EN"
...
Om jag då skickar med ?lang=sv_SE till sidan så bör ju "finns" skrivas ut av ifsatsen, men det händer aldrig.