Upcoming SlideShare
Loading in...5

Like this? Share it with your network



  • 4,487 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

  • 1. Next generation multilingual story
  • 2. Ramon Navarro Bosch CTO at Developing Plone sites since 2003 Part time musician - Ramons blog / @bloodbare
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. Enter PAMUses ZCA technologiesAT and DX compatibleManage translations via unified UI
  • 8. (UI)plone.multilingual (core)plone.multilingualbehavior (DX support)archetypes.multilingual (AT support)
  • 9. Rules of design1. There is no canonical content object2. Strict language root folders3. Neutral support outside LRF
  • 10. Features
  • 11. 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
  • 12. 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
  • 13. Language independent fieldsNo canonical implies changes in LIFs behaviorUsers can change the content inside a LIF and it gets replicated to othertranslation objects
  • 14. Marking LIFs in AT Same way as in LPaaiSrnFed tp.tigil( yil mFed, wde=tp.tigigt igtaaiSrnWde( .. .. ), lnugIdpnetTu agaeneedn=re),
  • 15. Marking LIFs in DX Grok directive In content type declaration classfo poemliigabhvo ipr drcie rm ln.utlnuleair mot ietvsdrcie.agaeneedn(fed) ietvslnugidpnetil
  • 16. 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>
  • 17. Marking LIFs in DX Native In your codefo poemliigabhvo.nefcsipr IagaeneednFed rm ln.utlnuleairitrae mot LnugIdpnetilasPoie(Shm[mFed] IagaeneednFed lorvdsIceayil, LnugIdpnetil)
  • 18. Marking LIFs in DX Through the webVia the content type definition in the Dexterity Content Types control panel.
  • 19. 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
  • 20. Neutral root folder support As a necessity due to LRFs There are use cases where “neutral” content is a must Assets, resources, media, documents...
  • 21. Translation mapAid for mental sanity of site editorsGraphical way to show content and its related translationsList of untranslated content (for mirror-translated sites)
  • 22. Google Translation service Integration with GTS (paid service) Icon in Babel view Setup API key in Language control panel
  • 23. LinguaPlone migrationMigration tab in Languages control panelNon-destructiveLookup your code for LP dependencies before migratingStill rough edges, should be addressed in sprint
  • 24. Internals
  • 25. Translatable marker interfacepoemliiga.nefcsIrnltbe ln.utlnulitrae.Tasaal
  • 26. AdaptersITranslationManagerITranslationLocatorITranslationClonerIt’s easy to create “policies” with more specific adapters (translation locator,selector, etc.)
  • 27. SubscribersLanguage integrity checkers Add to container Copy/paste Modify
  • 28. Storage
  • 29. Why?Modify translation without waking objectsDirect translation mapEasier to work on all translations (import/export)Too much catalog!!
  • 30. 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
  • 31. DEMO!
  • 32. RoadmapXLIFF export/importRemoving catalog patchIterate supportLinguaPlus/Linguatools set of useful toolsLocator translation policyOutdated translations alerts and translation workflows support
  • 33. supportAdd support for Deco layouts and tiles
  • 34. Sprint!LinguaPlone Migration improvementsUI Rough edgesMore Testing and use casesLocator translation policyJoin us on PC Sprint!

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