Blogg

Alfresco och ECM

Alfresco flerspråkiga properties – feature eller bug

okt 30 2011

Kategorier : Anteckningar

Många av er som använder Alfresco förmodligen inte medvetna om att Alfresco har inbyggt stöd för flerspråkiga egenskaper. Out of the box använder Alfresco det för titel och beskrivning, men bara för dessa två. Vad detta innebär för dokument är att om du är inloggad på Share som en användare med sv_SE locale preferenser och skapar ett dokument med titeln ”Min svenska Titel” och beskrivningen ”Min svenska beskrivning”, sedan en användare med en_US (för en engelsk användare) uppdaterar egenskaper för titel med ”Min engelska Titel” och beskrivningen ”Min engelska beskrivning”, så kommer alla användare med sv_SE fortfarande se den ursprungliga svenska texten, och en_US användare kommer se den ”översätta” engelska texten. För att detta ska hända behöver du inte ha det aktuella språkpaket installerat. Vill ni snabbt testa detta rekommenderar jag Firefox med plugin Quick Locale Switcher.

Detta är en mycket trevlig funktion, som bara fungerar. Men det finns några problem med detta. För det första så finns det ingen indikation i Share formulär att detta sker, det bör åtminstone vara en visuell indikation på att det sker. Andra problemet är att titel och egenskaper beskrivning inte bara används för dokument, det används för många andra komponenter i Alfresco. Jag har gjort några tester, och jag har funnit att webbplatsens namn och beskrivning, Blogginlägg titel, diskussion ämnesrubrik, Data List namn och beskrivning, och Data List rad namn och beskrivning kommer att visa olika texter beroende på språk om den har redigerats med olika språkpreferenser i webbläsaren. Återigen detta händer bara om egenskaperna redigeras med ett annat språk, förmodligen inte händer så många gånger att en diskussion redigeras med olika språkinställningar, men att Webbplatsansvariga från olika länder ändrar webbplatsens rubrik och beskrivning är inte osannolikt.

Det var en kund till mig som först upptäckte detta beteende, och jag registrerade en bugg ALF-3756 i juli 2010. Min första reaktion var att användarna inte ska se olika saker, och att det var på grund av att användare använde olika webbläsare, och att detta skulle fixas. Som det visar sig, är det inte på grund av olika webbläsare, utan det är det på grund av olika språkinställningar i olika webbläsare. Det har nyligen fixats i HEAD källkoden, så jag testar med förhoppningen att det är fixat, men ingenting hade förändrats och beteendet är detsamma. Så jag anmälde en ALF-11166 , men efter att funderat lite på flerspråkiga beteende, så harjag kommit fram till att det inte är en bugg trots allt, och det är därför jag skriver det här inlägget.

Jag har tänkt på olika sätt att fixa detta, kunde vara att du ändrar egenskapen definitionen av cm:title och cm:description i datamodellen från d:mltext till d:text. Vissa begränsade tester visar att denna fix kommer en egenskap fortsätta vara flerspråkig (d: mltext) till nästa redigering, då det sparas som d:text, och alla användare kommer se samma sak oberoende av språk. Ändra i standardmodellen är inget jag rekommenderar, och jag gjorde bara en mycket begränsad test för att se vad som hände. Och det är nog inte rätt sätt att fixa detta, eftersom det tar bort en mycket bra funktion. Alfresco hanterar flerspråkighet (I18N) mycket bra, och nästan allt är lokaliserat, och från 4.0 egenskapslistor (constraints) möjliga att ha på flera språk. Så det faktum att man kan ha webbplatsens titel och beskrivning på olika språk är en bra sak.

Så rätt fix för detta är att visuellt visa vad som händer i alla formulär och dialogrutor. Det kan genomföras i steg om inte den fullständiga metoden kan tas på en gång

  1. Skapa en kontroll med flagga som motsvarar de som visar vilket soråk som används, så att du visuellt se vad språket som för närvarande redigeras.

  2. Ändra i kontrollen så att du kan lista andra värden för att se basspråket och de aktuella värdena för övriga språk. Så att du kan hålla reda på översättningar och hålla dem i synk.

Jag skapade (eller egentligen uppdaterade befintliga textkontroller) och då ser det ut så här för flerspråkig egenskaper

Fullständig information om hur jag gjorde detta är frågan ALF-11166. Det är ett litet första steg fixat genom att redigera freemarker mallen för textkontrollen, en mer komplett lösning som jag beskrev är möjligheten att lista alla värden för olika språk. Låt mig veta vad du tycker.