SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

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
 

La actualidad más candente (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
 

Destacado

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
 

Destacado (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
 

Similar 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
 

Similar 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
 

Más 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
 

Más 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

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 

Último (20)

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 

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