FAQ |
Kalender |
2011-07-05, 14:53 | #1 | |||
|
||||
Har WN som tidsfördriv
|
Jag håller just nu på med ett projekt i CodeIgniter där jag behöver lägga in stöd för flera språk. Det kommer till att börja med vara två språk, men det kommer troligen bli fler inom en inte alltför avlägsen tid.
De krav/önskemål jag har är:
Är det någon här som har erfarenhet av detta i något MVC-ramverk(CodeIgniter eller något som liknar på det i strukturen)? Hur löste ni det då? |
|||
Svara med citat |
2011-07-05, 15:33 | #2 | ||
|
|||
Klarade millennium-buggen
|
Jag jobbar med ett .NET MVC 3 projekt där jag ändrar i routes att en språkvariabel alltid ska finnas i urlen (för sökoptimeringens skull). Standard sätter jag till sv.
På varje ActionResult i Controllerna lägger jag till ett attribut (LocalizationAttribute som ärver från ActionFilterAttribute) som lägger till efterfrågat språk (som kommer ifrån urlen) i en kontext. Till sist har jag en helper som hämtar nuvarande språk från kontexten och presenterar på lite olika sätt beroende på användningsområde, som t ex hämtning från db där man filtrerar på current language. Om jag gjort det för simpelt eller för krångligt för mig själv vet jag inte, men det fungerar bra tycker jag. |
||
Svara med citat |
2011-07-05, 15:48 | #3 | |||
|
||||
Mycket flitig postare
|
Citat:
http://codeigniter.com/wiki/i18n_Mul...ibrary_Helper/ Kanske är till någon hjälp? |
|||
Svara med citat |
2011-07-06, 14:18 | #4 | |||
|
||||
Har WN som tidsfördriv
|
Citat:
Har du olika vyer då eller skickar du med en array från controllern med alla texter som ska användas i vyn? abergman: Tack, men det finns massvis med likande lösningar, till exempel den inbyggda http://codeigniter.com/user_guide/li.../language.html Problemet är ju att det i grunden blir massa språkfiler vilket kan blir lite svårhanterligt på sikt när det blir en stor sida med massa olika språk. |
|||
Svara med citat |
2011-07-13, 23:03 | #5 | ||
|
|||
Medlem
|
Själv kör jag också .net mvc3 och har byggt en väldigt simpel lösning men fungerar bra för mina ändamål.
Har en tabell [LanguageResources] med en kolumn för nycklar(detta är ett beskrivande strängvärde) och en för värden(själva språkfraserna) och sen en tredje som är id:t för själva språket. Sen cachar jag dem i minnet som en dictionary/namevalue collection och kan fråga efter dem vilket går extremt fort. Sedan kan du köra på en annan tabell som heter [Languages] där du har alla språken. Har du väldigt bra konventioner för hur all kod skrivs i din "business layer" så skulle du kunna lagra namnen på språken där då det är inte varje dag man slänger in nya språk. Men att ha dem i en tabell är nog att föredra. obs: Detta använder jag för kortare fraser som namn olika element på sidan som knappar där det står save / spara , kontakta oss / contact us osv... för ren content med mycket text bör man nog köra på nån annan lösning, mer CMS likt vad är det för typ av site? Ska en och samma domän presentera innehållet på olika språk (beroende på url parametrar eller användarinställningar) eller kommer varje språk att få en egen domän? |
||
Svara med citat |
2011-07-14, 10:01 | #6 | ||
|
|||
Klarade millennium-buggen
|
Citat:
Då det plockas upp i global.asax (routingen) så sätts språket i någon context som sedan används när .net själv hämtar den resursfil till aktuellt språk. Hellre en språkfil för varje språk (där standardspråket alltid är komplett) än att skapa olika vyer beroende på språk. |
||
Svara med citat |
2011-07-14, 21:36 | #7 | ||
|
|||
Medlem
|
Citat:
http://codeigniter.com/wiki/Category...tion::Gettext/ Jag har översatt Wordpress-sidor med gettext och det har fungerat bra... |
||
Svara med citat |
2011-07-15, 02:14 | #8 | |||
|
||||
Har WN som tidsfördriv
|
Citat:
Jag funderade lite på om man skulle göra en sån där lösning men att man har två tabeller med text. En med korta texter(datatyp: VARCHAR(255)) och en med längre beskrivande texter(datatyp: TEXT). Är det en bra lösning eller är det bättre att köra en med TEXT för allt? Texterna kommer ju cachas i memcached med lång TTL så de kommer nästan aldrig läsas ifrån databasen så det kanske inte gör något om man använder TEXT även för korta värden? Citat:
Jag tror jag kommer köra på domän.com/en/... och domän.com/se/. Möjligen kommer vissa länder få en egen domän senare. Det är inte helt klart i dagsläget. |
|||
Svara med citat |
2011-07-15, 18:38 | #9 | ||
|
|||
Administratör
|
Citat:
Själv tittade jag på gettext, tmx, tbx, xliff etc nyligen till ett nytt projekt men kom fram till att det finns alldeles för dåligt med smidiga, stabila och plattformoberoende öppna mjukvaror för hantering av alla dessa (för att inte tala om att många av formaten i sig redan har en del tveksamheter). Att göra en webb-admin med import/export till en databas kändes mycket bättre.
__________________
eldefors.com - Personlig (teknik)-blogg |
||
Svara med citat |
Svara |
|
|