SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
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




     -   Ramon's blog / @bloodbare
Víctor Fernández de Alba
Lead web developer at Universitat Politècnica de Catalunya - Barcelona Tech
Author of Plone 3 Intranets (2010, Packt)
Developing Plone sites since 2004
                        -   Víctor's Blog / @sneridagh
History
Project started at Girona (Catalonia) sprint in 2005

Gathered some of the Plone Rock Stars
Design decisions, base infrastructure

Only for AT, DX doesn’t even exist yet
LinguaPlone
Great product created by Jarn
“De facto” standard multilingual story for Plone

Only supports AT

Now in “legacy” status
Used (literally) in every Plone site (I've) deployed
Lots of experience embedded
LinguaPlone design facts
Stores translation relations into objects
Uses catalog patches to hide content depending on current language

Relies in class inheritance to extend standard AT functionalities
Not compatible with dexterity content types
Enter PAM
Uses ZCA technologies

AT and DX compatible
Manage translations via unified UI
Components
plone.app.multilingual (UI)

plone.multilingual (core)


plone.multilingualbehavior (DX support)
archetypes.multilingual (AT support)
Rules of design
1. There is no canonical content object
2. Strict language root folders

3. Neutral support outside LRF
Features
Language root folders
Created on PAM setup

                    (Language control panel)

Plone folders implementing INavigationRoot
Subscribers in place...

... to guarantee integrity
... so each language is “jailed” inside its own LRF
Babel view
Unified edit form either for AT and DX
Not forced every time you edit a content

LP like, but with vitamins
Instant access (ajaxified) to other available translations in the left panel
Language independent fields
No canonical implies changes in LIFs behavior
Users can change the content inside a LIF and it gets replicated to other
translation objects
Marking LIFs in AT
          Same way as in LP
aaiSrnFed
 tp.tigil(
   'yil'
    mFed,
   wde=tp.tigigt
    igtaaiSrnWde(
   ..
    ..
   ),
   lnugIdpnetTu
    agaeneedn=re
),
Marking LIFs in DX
                      Grok directive

             In content type declaration class
fo poemliigabhvo ipr drcie
 rm ln.utlnuleair mot ietvs
drcie.agaeneedn(fed)
 ietvslnugidpnet'il'
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 code
fo poemliigabhvo.nefcsipr IagaeneednFed
 rm ln.utlnuleairitrae mot LnugIdpnetil
asPoie(Shm[mFed] IagaeneednFed
 lorvdsIcea'yil', LnugIdpnetil)
Marking LIFs in DX
                             Through the web

Via the content type definition in the Dexterity Content Types control panel.
Language selector policy
There are two policies in place in case the translation of a specific language does
not exist (yet):
LP way, the selector shows the nearest translated container
Shows the user an informative view that shows the current available translations

for 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 map
Aid for mental sanity of site editors
Graphical way to show content and its related translations

List 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 migration
Migration tab in Languages control panel

Non-destructive
Lookup your code for LP dependencies before migrating

Still rough edges, should be addressed in sprint
Internals
Translatable marker interface
poemliiga.nefcsIrnltbe
 ln.utlnulitrae.Tasaal
Adapters
ITranslationManager

ITranslationLocator
ITranslationCloner
It’s easy to create “policies” with more specific adapters (translation locator,
selector, etc.)
Subscribers
Language integrity checkers
         Add to container

         Copy/paste

         Modify
Storage
Why?
Modify translation without waking objects

Direct translation map
Easier to work on all translations (import/export)

Too much catalog!!
Unified get/set language
             Unified adapter for AT and DX
fo poemliiga.nefcsipr Iagae
 rm ln.utlnulitrae mot Lnug
lnug =Iagaecnet.e_agae)
 agae  Lnug(otx)gtlnug(
lnug =Iagaecnet.e_agae'a)
 agae  Lnug(otx)stlnug(c'
DEMO!
Roadmap
XLIFF export/import

Removing catalog patch
Iterate support
LinguaPlus/Linguatools set of useful tools
Locator translation policy

Outdated translations alerts and translation workflows support
Future
plone.app.toolbar support

Add support for Deco layouts and tiles
Sprint!
LinguaPlone Migration improvements
UI Rough edges

More Testing and use cases
Locator translation policy


Join 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)
http://github.com/plone/plone.app.multilingual
    http://pypi.org/plone.app.multilingual
             http://pam.iskra.cat
plone.app.multilingual

Mais conteúdo relacionado

Mais procurados

How to use Ruby code inside Elixir
How to use Ruby code inside ElixirHow to use Ruby code inside Elixir
How to use Ruby code inside ElixirWeverton Timoteo
 
Ch1 language design issue
Ch1 language design issueCh1 language design issue
Ch1 language design issueJigisha Pandya
 
Compiler Construction | Lecture 1 | What is a compiler?
Compiler Construction | Lecture 1 | What is a compiler?Compiler Construction | Lecture 1 | What is a compiler?
Compiler Construction | Lecture 1 | What is a compiler?Eelco Visser
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to pythonJaya Kumari
 
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...Integrated Language Definition Testing: Enabling Test-Driven Language Develop...
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...lennartkats
 
Lecture 1 Compiler design , computation
Lecture 1 Compiler design , computation Lecture 1 Compiler design , computation
Lecture 1 Compiler design , computation Rebaz Najeeb
 
Theory of programming
Theory of programmingTheory of programming
Theory of programmingtcc_joemarie
 
Ndu06 typesof language
Ndu06 typesof languageNdu06 typesof language
Ndu06 typesof languagenicky_walters
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloudlennartkats
 
Using Aspects for Language Portability (SCAM 2010)
Using Aspects for Language Portability (SCAM 2010)Using Aspects for Language Portability (SCAM 2010)
Using Aspects for Language Portability (SCAM 2010)lennartkats
 
Principles Of Programing Languages
Principles Of Programing LanguagesPrinciples Of Programing Languages
Principles Of Programing LanguagesMatthew McCullough
 
The Spoofax Language Workbench (SPLASH 2010)
The Spoofax Language Workbench (SPLASH 2010)The Spoofax Language Workbench (SPLASH 2010)
The Spoofax Language Workbench (SPLASH 2010)lennartkats
 
Remix Your Language Tooling (JSConf.eu 2012)
Remix Your Language Tooling (JSConf.eu 2012)Remix Your Language Tooling (JSConf.eu 2012)
Remix Your Language Tooling (JSConf.eu 2012)lennartkats
 
Compiler Design
Compiler DesignCompiler Design
Compiler DesignMir Majid
 
OOP Comparative Study
OOP Comparative StudyOOP Comparative Study
OOP Comparative StudyDarren Tan
 

Mais procurados (20)

How to use Ruby code inside Elixir
How to use Ruby code inside ElixirHow to use Ruby code inside Elixir
How to use Ruby code inside Elixir
 
Ch1 language design issue
Ch1 language design issueCh1 language design issue
Ch1 language design issue
 
Compiler Construction | Lecture 1 | What is a compiler?
Compiler Construction | Lecture 1 | What is a compiler?Compiler Construction | Lecture 1 | What is a compiler?
Compiler Construction | Lecture 1 | What is a compiler?
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
 
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...Integrated Language Definition Testing: Enabling Test-Driven Language Develop...
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...
 
Plc part 1
Plc part 1Plc part 1
Plc part 1
 
Lecture 1 Compiler design , computation
Lecture 1 Compiler design , computation Lecture 1 Compiler design , computation
Lecture 1 Compiler design , computation
 
Theory of programming
Theory of programmingTheory of programming
Theory of programming
 
Ndu06 typesof language
Ndu06 typesof languageNdu06 typesof language
Ndu06 typesof language
 
ASSIGNMENT-II(a)
ASSIGNMENT-II(a)ASSIGNMENT-II(a)
ASSIGNMENT-II(a)
 
perl lauange
perl lauangeperl lauange
perl lauange
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloud
 
Using Aspects for Language Portability (SCAM 2010)
Using Aspects for Language Portability (SCAM 2010)Using Aspects for Language Portability (SCAM 2010)
Using Aspects for Language Portability (SCAM 2010)
 
Principles Of Programing Languages
Principles Of Programing LanguagesPrinciples Of Programing Languages
Principles Of Programing Languages
 
LIL Presentation
LIL PresentationLIL Presentation
LIL Presentation
 
The Spoofax Language Workbench (SPLASH 2010)
The Spoofax Language Workbench (SPLASH 2010)The Spoofax Language Workbench (SPLASH 2010)
The Spoofax Language Workbench (SPLASH 2010)
 
Remix Your Language Tooling (JSConf.eu 2012)
Remix Your Language Tooling (JSConf.eu 2012)Remix Your Language Tooling (JSConf.eu 2012)
Remix Your Language Tooling (JSConf.eu 2012)
 
Create Your Own Language
Create Your Own LanguageCreate Your Own Language
Create Your Own Language
 
Compiler Design
Compiler DesignCompiler Design
Compiler Design
 
OOP Comparative Study
OOP Comparative StudyOOP Comparative Study
OOP Comparative Study
 

Destaque

Think innovation issue 4 share - scamper
Think innovation issue 4   share - scamperThink innovation issue 4   share - scamper
Think innovation issue 4 share - scamperThinkInnovation
 
World Cultures Slide Show
World Cultures Slide ShowWorld Cultures Slide Show
World Cultures Slide ShowMrs. McCabe
 
Flower Presentation
Flower PresentationFlower Presentation
Flower PresentationMrs. McCabe
 
Bridges Of 2008 No Names
Bridges Of 2008   No NamesBridges Of 2008   No Names
Bridges Of 2008 No Nameslisadydx
 
Hosting Startup Tot Enterprise
Hosting Startup Tot EnterpriseHosting Startup Tot Enterprise
Hosting Startup Tot EnterpriseCombell NV
 
Lista Unitária de Ordenação Final Horário nº 29- Grupo de recrutamento de cód...
Lista Unitária de Ordenação Final Horário nº 29- Grupo de recrutamento de cód...Lista Unitária de Ordenação Final Horário nº 29- Grupo de recrutamento de cód...
Lista Unitária de Ordenação Final Horário nº 29- Grupo de recrutamento de cód...Pedro França
 
Qlda Chp2 Quan Ly Tong The
Qlda Chp2 Quan Ly Tong TheQlda Chp2 Quan Ly Tong The
Qlda Chp2 Quan Ly Tong TheQuynh Khuong
 
Aviso nº 3 CONTRATAÇÃO DE ESCOLA Técnicos Especializados
Aviso nº 3    CONTRATAÇÃO DE ESCOLA  Técnicos EspecializadosAviso nº 3    CONTRATAÇÃO DE ESCOLA  Técnicos Especializados
Aviso nº 3 CONTRATAÇÃO DE ESCOLA Técnicos EspecializadosPedro França
 
Conte \"La Castanyera\"
Conte \"La Castanyera\"Conte \"La Castanyera\"
Conte \"La Castanyera\"Veronicavm
 
Brand Valuation - Review of the 2013 League Tables
Brand Valuation - Review of the 2013 League TablesBrand Valuation - Review of the 2013 League Tables
Brand Valuation - Review of the 2013 League TablesType 2 Consulting
 
Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012Combell NV
 

Destaque (20)

Skies.Mccabe
Skies.MccabeSkies.Mccabe
Skies.Mccabe
 
Think innovation issue 4 share - scamper
Think innovation issue 4   share - scamperThink innovation issue 4   share - scamper
Think innovation issue 4 share - scamper
 
Musicalsby144
Musicalsby144Musicalsby144
Musicalsby144
 
Semicolon Cautions
Semicolon CautionsSemicolon Cautions
Semicolon Cautions
 
World Cultures Slide Show
World Cultures Slide ShowWorld Cultures Slide Show
World Cultures Slide Show
 
Flower Presentation
Flower PresentationFlower Presentation
Flower Presentation
 
Poetic Landscapes
Poetic LandscapesPoetic Landscapes
Poetic Landscapes
 
Bridges Of 2008 No Names
Bridges Of 2008   No NamesBridges Of 2008   No Names
Bridges Of 2008 No Names
 
Gospel at home 2
Gospel at home 2Gospel at home 2
Gospel at home 2
 
Hosting Startup Tot Enterprise
Hosting Startup Tot EnterpriseHosting Startup Tot Enterprise
Hosting Startup Tot Enterprise
 
Lista Unitária de Ordenação Final Horário nº 29- Grupo de recrutamento de cód...
Lista Unitária de Ordenação Final Horário nº 29- Grupo de recrutamento de cód...Lista Unitária de Ordenação Final Horário nº 29- Grupo de recrutamento de cód...
Lista Unitária de Ordenação Final Horário nº 29- Grupo de recrutamento de cód...
 
Qlda Chp2 Quan Ly Tong The
Qlda Chp2 Quan Ly Tong TheQlda Chp2 Quan Ly Tong The
Qlda Chp2 Quan Ly Tong The
 
Anurag&Rupali
Anurag&RupaliAnurag&Rupali
Anurag&Rupali
 
25 n 2010_powerpointatalayas
25 n 2010_powerpointatalayas25 n 2010_powerpointatalayas
25 n 2010_powerpointatalayas
 
Mohenjo Daro
Mohenjo DaroMohenjo Daro
Mohenjo Daro
 
Aviso nº 3 CONTRATAÇÃO DE ESCOLA Técnicos Especializados
Aviso nº 3    CONTRATAÇÃO DE ESCOLA  Técnicos EspecializadosAviso nº 3    CONTRATAÇÃO DE ESCOLA  Técnicos Especializados
Aviso nº 3 CONTRATAÇÃO DE ESCOLA Técnicos Especializados
 
Conte \"La Castanyera\"
Conte \"La Castanyera\"Conte \"La Castanyera\"
Conte \"La Castanyera\"
 
Blogger Sofrasi Sunum
Blogger Sofrasi SunumBlogger Sofrasi Sunum
Blogger Sofrasi Sunum
 
Brand Valuation - Review of the 2013 League Tables
Brand Valuation - Review of the 2013 League TablesBrand Valuation - Review of the 2013 League Tables
Brand Valuation - Review of the 2013 League Tables
 
Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012
 

Semelhante a plone.app.multilingual

Putting DITA Localization into Practice
Putting DITA Localization into PracticePutting DITA Localization into Practice
Putting DITA Localization into PracticeXMetaL
 
Beyond 49x Transformers: Don't be afraid of (the) Python!
Beyond 49x Transformers: Don't be afraid of (the) Python!Beyond 49x Transformers: Don't be afraid of (the) Python!
Beyond 49x Transformers: Don't be afraid of (the) Python!Safe Software
 
Understanding and Configuring the FO Plug-in for Generating PDF Files: Part I...
Understanding and Configuring the FO Plug-in for Generating PDF Files: Part I...Understanding and Configuring the FO Plug-in for Generating PDF Files: Part I...
Understanding and Configuring the FO Plug-in for Generating PDF Files: Part I...Suite Solutions
 
Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...IndicThreads
 
C:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse InfocenterC:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse InfocenterSuite Solutions
 
CLTL: Description of web services and sofware. Nijmegen 2013
CLTL: Description of web services and sofware. Nijmegen 2013CLTL: Description of web services and sofware. Nijmegen 2013
CLTL: Description of web services and sofware. Nijmegen 2013Rubén Izquierdo Beviá
 
introduction of python in data science
introduction of python in data scienceintroduction of python in data science
introduction of python in data sciencebhavesh lande
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to pythonMohammed Rafi
 
Introduction to domino_global_workbench_8.5
Introduction to domino_global_workbench_8.5Introduction to domino_global_workbench_8.5
Introduction to domino_global_workbench_8.5hepeiwei
 
Multi Lingual Websites In Umbraco
Multi Lingual Websites In UmbracoMulti Lingual Websites In Umbraco
Multi Lingual Websites In UmbracoPaul Marden
 
Os Worthington
Os WorthingtonOs Worthington
Os Worthingtonoscon2007
 
[EclipseCon France 2017] Language Server Protocol in action
[EclipseCon France 2017] Language Server Protocol in action[EclipseCon France 2017] Language Server Protocol in action
[EclipseCon France 2017] Language Server Protocol in actionMickael Istria
 
Fedora Overview
Fedora OverviewFedora Overview
Fedora Overvieweposthumus
 
Software Internationalization Crash Course
Software Internationalization Crash CourseSoftware Internationalization Crash Course
Software Internationalization Crash CourseWill Iverson
 

Semelhante a plone.app.multilingual (20)

Putting DITA Localization into Practice
Putting DITA Localization into PracticePutting DITA Localization into Practice
Putting DITA Localization into Practice
 
Beyond 49x Transformers: Don't be afraid of (the) Python!
Beyond 49x Transformers: Don't be afraid of (the) Python!Beyond 49x Transformers: Don't be afraid of (the) Python!
Beyond 49x Transformers: Don't be afraid of (the) Python!
 
Php packages
Php packagesPhp packages
Php packages
 
CLTL Software and Web Services
CLTL Software and Web Services CLTL Software and Web Services
CLTL Software and Web Services
 
Olf2016
Olf2016Olf2016
Olf2016
 
Understanding and Configuring the FO Plug-in for Generating PDF Files: Part I...
Understanding and Configuring the FO Plug-in for Generating PDF Files: Part I...Understanding and Configuring the FO Plug-in for Generating PDF Files: Part I...
Understanding and Configuring the FO Plug-in for Generating PDF Files: Part I...
 
Tlf2016
Tlf2016Tlf2016
Tlf2016
 
Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...
 
Lfnw2016
Lfnw2016Lfnw2016
Lfnw2016
 
C:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse InfocenterC:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse Infocenter
 
CLTL: Description of web services and sofware. Nijmegen 2013
CLTL: Description of web services and sofware. Nijmegen 2013CLTL: Description of web services and sofware. Nijmegen 2013
CLTL: Description of web services and sofware. Nijmegen 2013
 
introduction of python in data science
introduction of python in data scienceintroduction of python in data science
introduction of python in data science
 
Epub IDPF update & futures-Garth Conboy
Epub IDPF update & futures-Garth ConboyEpub IDPF update & futures-Garth Conboy
Epub IDPF update & futures-Garth Conboy
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
 
Introduction to domino_global_workbench_8.5
Introduction to domino_global_workbench_8.5Introduction to domino_global_workbench_8.5
Introduction to domino_global_workbench_8.5
 
Multi Lingual Websites In Umbraco
Multi Lingual Websites In UmbracoMulti Lingual Websites In Umbraco
Multi Lingual Websites In Umbraco
 
Os Worthington
Os WorthingtonOs Worthington
Os Worthington
 
[EclipseCon France 2017] Language Server Protocol in action
[EclipseCon France 2017] Language Server Protocol in action[EclipseCon France 2017] Language Server Protocol in action
[EclipseCon France 2017] Language Server Protocol in action
 
Fedora Overview
Fedora OverviewFedora Overview
Fedora Overview
 
Software Internationalization Crash Course
Software Internationalization Crash CourseSoftware Internationalization Crash Course
Software Internationalization Crash Course
 

Mais de Ramon Navarro

Pipelines for model deployment
Pipelines for model deploymentPipelines for model deployment
Pipelines for model deploymentRamon Navarro
 
How containers helped a SaaS startup be developed and go live
How containers helped a SaaS startup be developed and go liveHow containers helped a SaaS startup be developed and go live
How containers helped a SaaS startup be developed and go liveRamon Navarro
 
Plone 5 and machine learning
Plone 5 and machine learningPlone 5 and machine learning
Plone 5 and machine learningRamon Navarro
 
CI on large open source software : Plone & Plone 5 is here!
CI on large open source software : Plone & Plone 5 is here!CI on large open source software : Plone & Plone 5 is here!
CI on large open source software : Plone & Plone 5 is here!Ramon Navarro
 
Resource registries plone conf 2014
Resource registries plone conf 2014Resource registries plone conf 2014
Resource registries plone conf 2014Ramon Navarro
 
Multilingual sites in plone
Multilingual sites in ploneMultilingual sites in plone
Multilingual sites in ploneRamon Navarro
 
Presentacio meetup Python BCN
Presentacio meetup Python BCNPresentacio meetup Python BCN
Presentacio meetup Python BCNRamon Navarro
 
WPD Barcelona 2008 Què és Plone ?
WPD Barcelona 2008 Què és Plone ?WPD Barcelona 2008 Què és Plone ?
WPD Barcelona 2008 Què és Plone ?Ramon Navarro
 

Mais de Ramon Navarro (12)

Guillotina
GuillotinaGuillotina
Guillotina
 
Pipelines for model deployment
Pipelines for model deploymentPipelines for model deployment
Pipelines for model deployment
 
Plone server
Plone serverPlone server
Plone server
 
How containers helped a SaaS startup be developed and go live
How containers helped a SaaS startup be developed and go liveHow containers helped a SaaS startup be developed and go live
How containers helped a SaaS startup be developed and go live
 
Plone 5 and machine learning
Plone 5 and machine learningPlone 5 and machine learning
Plone 5 and machine learning
 
CI on large open source software : Plone & Plone 5 is here!
CI on large open source software : Plone & Plone 5 is here!CI on large open source software : Plone & Plone 5 is here!
CI on large open source software : Plone & Plone 5 is here!
 
Resource registries plone conf 2014
Resource registries plone conf 2014Resource registries plone conf 2014
Resource registries plone conf 2014
 
Pyramid
PyramidPyramid
Pyramid
 
Multilingual sites in plone
Multilingual sites in ploneMultilingual sites in plone
Multilingual sites in plone
 
Cafè amb web
Cafè amb webCafè amb web
Cafè amb web
 
Presentacio meetup Python BCN
Presentacio meetup Python BCNPresentacio meetup Python BCN
Presentacio meetup Python BCN
 
WPD Barcelona 2008 Què és Plone ?
WPD Barcelona 2008 Què és Plone ?WPD Barcelona 2008 Què és Plone ?
WPD Barcelona 2008 Què és Plone ?
 

Último

UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 

Último (20)

UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 

plone.app.multilingual

  • 1. plone.app.multilingual Next generation multilingual story http://pam.iskra.cat
  • 2. Ramon Navarro Bosch CTO at Iskra.cat Developing Plone sites since 2003 Part time musician - Ramon's blog / @bloodbare
  • 3. Víctor Fernández de Alba Lead web developer at Universitat Politècnica de Catalunya - Barcelona Tech Author of Plone 3 Intranets (2010, Packt) Developing Plone sites since 2004 - Víctor's Blog / @sneridagh
  • 4. History Project started at Girona (Catalonia) sprint in 2005 Gathered some of the Plone Rock Stars Design decisions, base infrastructure Only for AT, DX doesn’t even exist yet
  • 5. LinguaPlone Great product created by Jarn “De facto” standard multilingual story for Plone Only supports AT Now in “legacy” status Used (literally) in every Plone site (I've) deployed Lots of experience embedded
  • 6. LinguaPlone design facts Stores translation relations into objects Uses catalog patches to hide content depending on current language Relies in class inheritance to extend standard AT functionalities Not compatible with dexterity content types
  • 7. Enter PAM Uses ZCA technologies AT and DX compatible Manage translations via unified UI
  • 9. Rules of design 1. There is no canonical content object 2. Strict language root folders 3. Neutral support outside LRF
  • 11. Language root folders Created on PAM setup
 (Language control panel) Plone folders implementing INavigationRoot Subscribers in place... ... to guarantee integrity ... so each language is “jailed” inside its own LRF
  • 12. Babel view Unified edit form either for AT and DX Not forced every time you edit a content LP like, but with vitamins Instant access (ajaxified) to other available translations in the left panel
  • 13. Language independent fields No canonical implies changes in LIFs behavior Users can change the content inside a LIF and it gets replicated to other translation objects
  • 14. Marking LIFs in AT Same way as in LP aaiSrnFed tp.tigil( 'yil' mFed, wde=tp.tigigt igtaaiSrnWde( .. .. ), lnugIdpnetTu agaeneedn=re ),
  • 15. Marking LIFs in DX Grok directive In content type declaration class fo poemliigabhvo ipr drcie rm ln.utlnuleair mot ietvs drcie.agaeneedn(fed) ietvslnugidpnet'il'
  • 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 code fo poemliigabhvo.nefcsipr IagaeneednFed rm ln.utlnuleairitrae mot LnugIdpnetil asPoie(Shm[mFed] IagaeneednFed lorvdsIcea'yil', LnugIdpnetil)
  • 18. Marking LIFs in DX Through the web Via the content type definition in the Dexterity Content Types control panel.
  • 19. Language selector policy There are two policies in place in case the translation of a specific language does not exist (yet): LP way, the selector shows the nearest translated container Shows the user an informative view that shows the current available translations for 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 map Aid for mental sanity of site editors Graphical way to show content and its related translations List 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 migration Migration tab in Languages control panel Non-destructive Lookup your code for LP dependencies before migrating Still rough edges, should be addressed in sprint
  • 26. Adapters ITranslationManager ITranslationLocator ITranslationCloner It’s easy to create “policies” with more specific adapters (translation locator, selector, etc.)
  • 27. Subscribers Language integrity checkers Add to container Copy/paste Modify
  • 29. Why? Modify translation without waking objects Direct translation map Easier to work on all translations (import/export) Too much catalog!!
  • 30. Unified get/set language Unified adapter for AT and DX fo poemliiga.nefcsipr Iagae rm ln.utlnulitrae mot Lnug lnug =Iagaecnet.e_agae) agae Lnug(otx)gtlnug( lnug =Iagaecnet.e_agae'a) agae Lnug(otx)stlnug(c'
  • 31. DEMO!
  • 32. Roadmap XLIFF export/import Removing catalog patch Iterate support LinguaPlus/Linguatools set of useful tools Locator translation policy Outdated translations alerts and translation workflows support
  • 33. Future plone.app.toolbar support Add support for Deco layouts and tiles
  • 34. Sprint! LinguaPlone Migration improvements UI Rough edges More Testing and use cases Locator translation policy Join 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) http://github.com/plone/plone.app.multilingual http://pypi.org/plone.app.multilingual http://pam.iskra.cat