plone.app.multilingual     Next generation     multilingual story       http://pam.iskra.cat
Ramon Navarro Bosch   CTO at Iskra.cat   Developing Plone sites since 2003   Part time musician     -   Ramons blog / @blo...
Víctor Fernández de AlbaLead web developer at Universitat Politècnica de Catalunya - Barcelona TechAuthor of Plone 3 Intra...
HistoryProject started at Girona (Catalonia) sprint in 2005Gathered some of the Plone Rock StarsDesign decisions, base inf...
LinguaPloneGreat product created by Jarn“De facto” standard multilingual story for PloneOnly supports ATNow in “legacy” st...
LinguaPlone design factsStores translation relations into objectsUses catalog patches to hide content depending on current...
Enter PAMUses ZCA technologiesAT and DX compatibleManage translations via unified UI
Componentsplone.app.multilingual (UI)plone.multilingual (core)plone.multilingualbehavior (DX support)archetypes.multilingu...
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 INavigati...
Babel viewUnified edit form either for AT and DXNot forced every time you edit a contentLP like, but with vitaminsInstant ...
Language independent fieldsNo canonical implies changes in LIFs behaviorUsers can change the content inside a LIF and it g...
Marking LIFs in AT          Same way as in LPaaiSrnFed tp.tigil(   yil    mFed,   wde=tp.tigigt    igtaaiSrnWde(   ..    ....
Marking LIFs in DX                      Grok directive             In content type declaration classfo poemliigabhvo ipr d...
Marking LIFs in DX                   Supermodel     In your content type XML file declaration<il nm=mFed fed ae"yil"      ...
Marking LIFs in DX                          Native                        In your codefo poemliigabhvo.nefcsipr Iagaeneedn...
Marking LIFs in DX                             Through the webVia the content type definition in the Dexterity Content Typ...
Language selector policyThere are two policies in place in case the translation of a specific language doesnot exist (yet)...
Neutral root folder support As a necessity due to LRFs There are use cases where “neutral” content is a must Assets, resou...
Translation mapAid for mental sanity of site editorsGraphical way to show content and its related translationsList of untr...
Google Translation service    Integration with GTS (paid service)    Icon in Babel view    Setup API key in Language contr...
LinguaPlone migrationMigration tab in Languages control panelNon-destructiveLookup your code for LP dependencies before mi...
Internals
Translatable marker interfacepoemliiga.nefcsIrnltbe ln.utlnulitrae.Tasaal
AdaptersITranslationManagerITranslationLocatorITranslationClonerIt’s easy to create “policies” with more specific adapters...
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 m...
Unified get/set language             Unified adapter for AT and DXfo poemliiga.nefcsipr Iagae rm ln.utlnulitrae mot Lnugln...
DEMO!
RoadmapXLIFF export/importRemoving catalog patchIterate supportLinguaPlus/Linguatools set of useful toolsLocator translati...
Futureplone.app.toolbar supportAdd support for Deco layouts and tiles
Sprint!LinguaPlone Migration improvementsUI Rough edgesMore Testing and use casesLocator translation policyJoin us on PC S...
Special thanks to...      Anne Walter      Jonathan Lewis      Martijn Pieters      Martin Aspeli      David Glick      Pa...
Thank you!                 Questions?      Ramon Navarro Bosch (@bloodbare)     Víctor Fernández de Alba (@sneridagh)http:...
plone.app.multilingual
Upcoming SlideShare
Loading in...5
×

plone.app.multilingual

5,102

Published on

plone.app.multilingual presentation at Plone Conference 2012

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
5,102
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

plone.app.multilingual

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

  35. 35. Special thanks to... Anne Walter Jonathan Lewis Martijn Pieters Martin Aspeli David Glick Patrick Gerken Thomas Masmann Jean Carel Brand Mikel Larreategui
  36. 36. Thank you! Questions? Ramon Navarro Bosch (@bloodbare) Víctor Fernández de Alba (@sneridagh)http://github.com/plone/plone.app.multilingual http://pypi.org/plone.app.multilingual http://pam.iskra.cat
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×