Upcoming SlideShare
Loading in...5


  • 3,462 views presentation at Plone Conference 2012 presentation at Plone Conference 2012



Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment Presentation Transcript

    • Next generation multilingual story
    • Ramon Navarro Bosch CTO at Developing Plone sites since 2003 Part time musician - Ramons blog / @bloodbare
    • Víctor Fernández de AlbaLead web developer at Universitat Politècnica de Catalunya - Barcelona TechAuthor of Plone 3 Intranets (2010, Packt)Developing Plone sites since 2004 - Víctors Blog / @sneridagh
    • HistoryProject started at Girona (Catalonia) sprint in 2005Gathered some of the Plone Rock StarsDesign decisions, base infrastructureOnly for AT, DX doesn’t even exist yet
    • LinguaPloneGreat product created by Jarn“De facto” standard multilingual story for PloneOnly supports ATNow in “legacy” statusUsed (literally) in every Plone site (Ive) deployedLots of experience embedded
    • LinguaPlone design factsStores translation relations into objectsUses catalog patches to hide content depending on current languageRelies in class inheritance to extend standard AT functionalitiesNot compatible with dexterity content types
    • Enter PAMUses ZCA technologiesAT and DX compatibleManage translations via unified UI
    • (UI)plone.multilingual (core)plone.multilingualbehavior (DX support)archetypes.multilingual (AT support)
    • Rules of design1. There is no canonical content object2. Strict language root folders3. Neutral support outside LRF
    • Features
    • Language root foldersCreated on PAM setup
 (Language control panel)Plone folders implementing INavigationRootSubscribers in place...... to guarantee integrity... so each language is “jailed” inside its own LRF
    • Babel viewUnified edit form either for AT and DXNot forced every time you edit a contentLP like, but with vitaminsInstant access (ajaxified) to other available translations in the left panel
    • Language independent fieldsNo canonical implies changes in LIFs behaviorUsers can change the content inside a LIF and it gets replicated to othertranslation objects
    • Marking LIFs in AT Same way as in LPaaiSrnFed tp.tigil( yil mFed, wde=tp.tigigt igtaaiSrnWde( .. .. ), lnugIdpnetTu agaeneedn=re),
    • Marking LIFs in DX Grok directive In content type declaration classfo poemliigabhvo ipr drcie rm ln.utlnuleair mot ietvsdrcie.agaeneedn(fed) ietvslnugidpnetil
    • Marking LIFs in DX Supermodel In your content type XML file declaration<il nm=mFed fed ae"yil" tp=zp.ceaTxLn" ye"oeshm.etie lnu:needn=tu" igaidpnet"re> <ecito / dsrpin > <il>yil<tte ttemFed/il><fed /il>
    • Marking LIFs in DX Native In your codefo poemliigabhvo.nefcsipr IagaeneednFed rm ln.utlnuleairitrae mot LnugIdpnetilasPoie(Shm[mFed] IagaeneednFed lorvdsIceayil, LnugIdpnetil)
    • Marking LIFs in DX Through the webVia the content type definition in the Dexterity Content Types control panel.
    • Language selector policyThere are two policies in place in case the translation of a specific language doesnot exist (yet):LP way, the selector shows the nearest translated containerShows the user an informative view that shows the current available translationsfor the current content
    • Neutral root folder support As a necessity due to LRFs There are use cases where “neutral” content is a must Assets, resources, media, documents...
    • Translation mapAid for mental sanity of site editorsGraphical way to show content and its related translationsList of untranslated content (for mirror-translated sites)
    • Google Translation service Integration with GTS (paid service) Icon in Babel view Setup API key in Language control panel
    • LinguaPlone migrationMigration tab in Languages control panelNon-destructiveLookup your code for LP dependencies before migratingStill rough edges, should be addressed in sprint
    • Internals
    • Translatable marker interfacepoemliiga.nefcsIrnltbe ln.utlnulitrae.Tasaal
    • AdaptersITranslationManagerITranslationLocatorITranslationClonerIt’s easy to create “policies” with more specific adapters (translation locator,selector, etc.)
    • SubscribersLanguage integrity checkers Add to container Copy/paste Modify
    • Storage
    • Why?Modify translation without waking objectsDirect translation mapEasier to work on all translations (import/export)Too much catalog!!
    • Unified get/set language Unified adapter for AT and DXfo poemliiga.nefcsipr Iagae rm ln.utlnulitrae mot Lnuglnug =Iagaecnet.e_agae) agae Lnug(otx)gtlnug(lnug =Iagaecnet.e_agaea) agae Lnug(otx)stlnug(c
    • DEMO!
    • RoadmapXLIFF export/importRemoving catalog patchIterate supportLinguaPlus/Linguatools set of useful toolsLocator translation policyOutdated translations alerts and translation workflows support
    • supportAdd support for Deco layouts and tiles
    • Sprint!LinguaPlone Migration improvementsUI Rough edgesMore Testing and use casesLocator translation policyJoin us on PC Sprint!

    • Special thanks to... Anne Walter Jonathan Lewis Martijn Pieters Martin Aspeli David Glick Patrick Gerken Thomas Masmann Jean Carel Brand Mikel Larreategui
    • Thank you! Questions? Ramon Navarro Bosch (@bloodbare) Víctor Fernández de Alba (@sneridagh)