Flerspråkig Drupalwebbplats

Att bygga en flerspråkig webbplats kan vid första anblick tyckas simpelt, inte minst med tanke på att det finns stöd för flerspråkighet redan i Drupal core. När man ger sig i kast med det upptäcker man dock att ett flertal kluriga frågor dyker upp, dessutom behöver man förstå sig på hur de funktioner som finns att tillgå fungerar och hur de kan användas för att åstadkomma vad man önskar uppnå.

Flerspråkig drupalwebbplats

Flerspråkighet tillhandahålls i grunden av Drupal core via modulen Locale som gör så att flera språk kan aktiveras med översättningar av administrationsgränssnittet.

Ytterligare en modul i core, Content translation, ger möjlighet till översättning av innehåll till flera språk. Noteras bör här att konfiguration av språkstöd skall göras för varje innehållstyp. Vidare så sker översättning på så vis att det skapas multipla sammanhängande noder, en för varje språk. Vilket språk som skall visas kan styras på lite olika sätt och ställs in under Konfiguration->Lokalt och språk->Språk->Avkänning och val , vanligast görs språkstyrning via tillägg i url, exempelvis min.domän.com/sv/node/5.

En rekommenderad modul för att förenkla administration av översättningar är Translation overview.

Så långt allt väl, innehåll kan översättas, man kan fritt välja url-alias för varje språk, och språkinformation samt språkväljare finns tillgänglig längst ned på varje nod. Såvida man inte bara är ute efter möjligheten att översätta viss brödtext utan faktiskt vill ha en sann flerspråkig webbplats så räcker dock inte detta särskilt långt. Främst fattas i detta möjligheten att ha en flerspråkig navigering med menyer som byter språk med innehållet. Likaså är det inte nödvändigtvis så att det givna upplägget med språkinformation och språkväljare på varje nod faller en i smaken. Nästa steg blir därför att bekanta sig med modulpaketet Internationalization som innefattar en mängd submoduler för olika tillämpningar, en rätt komplex uppsättning moduler och funktioner att sätta sig in i. För att alls kunna använda dessa moduler krävs även modulen Variable. Huvudmodulen i paketet heter just Internationalization och krävs för övriga submoduler.

Den första submodul i Internationalization som kan rekommenderas är Multilingual content, vilken tillhandahåller extra inställningar för node-visning. Efter att ha installerat denna submodul så kan man via Konfiguration->Lokalt och språk->Multilingual settings->Node options bland annat välja om man vill dölja översättningslänken vid nodvisning. När vi ändå är inne på nodvisning är det även värt att här nämna att man på motsvarande sätt kan slå av/på nodvisningens språkinformation (som anger vilket språk noden har) genom att gå in på innehållstypens visningsalternativ där "Language" finns listat som ett fält. Om man väljer att ta bort språkval från noderna så kan detta istället göras med språkvalsblocket i valfri region, eller med godtycklig länk till nod med ett visst språk. Om man vill använda någon av språkväljarna, i block eller på nod, kan man installera tillägsmodulen Language icons (ej del av Internationalization) för att få snygga språkikoner istället för textlänkar.

Så hur bygger man en fungerande flerspråkig navigering? Min slutsats efter att ha botaniserat i Internationalizations utbud är att detta ännu känns som ett väldigt omoget område med flera alternativa vägar där ingen känns särskilt elegant, stabil eller skalbar, åtminstone inte alla på samma gång.

En bra genomgång av de två huvudalternativ för flerspråkiga menyer som finns är Menu languages and translation . Kort kan sägas ett det första alternativet bygger på att man skapar separata menyer för vardera språk där varje nod (varje översättning av en nod skapar ju som nämnts ovan en ny nod) sedan ges en post i sitt språks meny, och menyerna (som placeras i samma block) kan via synlighetsinställningar fås att endast visas om dess språk är aktivt. Med den andra lösningen introducerar man ett mer komplext översättningssystem för menyer som borde vara mer skalbart och elegant, men som i dagsläget känns väldigt omoget och bristfälligt på gränsen till hårslitande buggigt.

Med det första alternativet är det väldigt lite funktionalitet som saknas i core, den enda submodul förutom huvudmodulen från Internationalization som vi behöver aktivera är Block languages, samt stödmodulen String translation. Med Block languages tillhandahålls blocksynlighetsinställningar baserat på språk så att vi exempelvis kan konfigurera svenskt menyblock att endast visas då svenskt innehåll visas och motsvarande för övriga språk. Utöver detta så görs allt i nodredigeringen där menyposter skapas på nodens språk i språkets meny, likaså kan url-alias väljas fritt för varje nod (språk) så att såväl innehåll som menyposter och sökvägar blir helt och fullt språkanpassat.

Det andra alternativet innebär att man bygger navigering med flerspråkiga menyer där menyposter översätts på motsvarande sätt som innehållet och sedan visas på aktuellt språk istället för att bygga olika menyer för varje språk, en i mina ögon elegantare och mer skalbar lösning. För att åstadkomma detta använder man submodulen Menu translation, vilken tillhandahåller flerspråkighet för menyposter. Konceptuellt kan upplägget verka attraktivt, dock är det förvirrande på många punkter och integrerar dåligt med nodredigeringen då översättningar måste läggas till via menyadministrationen. Vidare tycks det fungera dåligt i kombination med url-alias och efter flera timmars hårslitande så gav jag upp försöken att få detta att fungera tillfredsställande. Det må vara rätt väg att gå i långa loppet, men min slutsats är för stunden att mycket återstår att göra innan Menu translation integrerar väl med övriga delar.