SlideShare a Scribd company logo
1 of 37
Download to read 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

More Related Content

What's hot

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
 
Ndu06 typesof language
Ndu06 typesof languageNdu06 typesof language
Ndu06 typesof language
nicky_walters
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloud
lennartkats
 
Compiler Design
Compiler DesignCompiler Design
Compiler Design
Mir Majid
 

What's hot (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
 

Viewers also liked

Think innovation issue 4 share - scamper
Think innovation issue 4   share - scamperThink innovation issue 4   share - scamper
Think innovation issue 4 share - scamper
ThinkInnovation
 
World Cultures Slide Show
World Cultures Slide ShowWorld Cultures Slide Show
World Cultures Slide Show
Mrs. McCabe
 
Qlda Chp2 Quan Ly Tong The
Qlda Chp2 Quan Ly Tong TheQlda Chp2 Quan Ly Tong The
Qlda Chp2 Quan Ly Tong The
Quynh Khuong
 
Conte \"La Castanyera\"
Conte \"La Castanyera\"Conte \"La Castanyera\"
Conte \"La Castanyera\"
Veronicavm
 

Viewers also liked (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 to plone.app.multilingual

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
 
C:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse InfocenterC:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse Infocenter
Suite Solutions
 
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
hepeiwei
 
Os Worthington
Os WorthingtonOs Worthington
Os Worthington
oscon2007
 
Fedora Overview
Fedora OverviewFedora Overview
Fedora Overview
eposthumus
 

Similar to 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
 

More from Ramon Navarro

Multilingual sites in plone
Multilingual sites in ploneMultilingual sites in plone
Multilingual sites in plone
Ramon Navarro
 

More from 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 ?
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

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