SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
Translating Drupal
  (the new way)
       Gábor Hojtsy
   September 19., 2007.
Sponsored by

 All of my work explained in
this session was sponsored by
Google Summer of Code 2007.

      Thanks Google!
About me

• Using and contributing to Drupal
  since 2003
• Multiple modules, Hungarian
  translations
• Drupal 6 core committer
• Locale module maintainer
About you


• Users of existing translations?
• Translating in-house modules?
• Occasional translation contributors?
• Members of official translation teams?
Setting the topic
Translating Drupal


• Translate the built-in interface
• User provided content translation is
  out of scope here (sessions about this
  topic were before lunch)
History
t() is born
          January 22, 2001

     <?

     function t($string) {
       return $string;
     }

     ?>

(format_plural() was there earlier)
Timeline
• Jan 22, 2001 - t()
• Feb 12, 2001 - Locale module
• Feb 17, 2001 - Basic Translation
  interface, the strikethrough overview,
  languages added by SQL DDL
Timeline

various smaller updates before I start
     watching Formula 1 with [a] a
  0.5 liter box of Haagen-Dhaz (Belgian
    Choclate) and [b] my laptop on
  my lap for drupal hacking. Life hardly
      can get any better than this.
         Commit comment by Dries for locale.inc 1.7
Timeline

• Jul 24, 2001 - Search form, even
   module filtering, thanks to:
quot;location LIKE '%module.php?mod=quot;. check_input($edit[module]) .quot;%'quot;


• Jan 5, 2002 - Locale cache
• June 2, 2003 - Module filtering
   removed, due to URL restructuring
Timeline

• Sept 11, 2003 - Extractor.php is born
• Dec 28, 2003 - Short string cache
• Aug 11, 2004 - Gettext format based
  string sharing, web administration,
  plural formulas

• Aug 18, 2006 - @ and ! placeholders
Timeline

• Sep 1, 2006 - Translatable installer
• Mar 26, 2007 - New language system
• May 15-22, 2007 - Automated
  translation import
• Jun 8, 2007 - JavaScript translation
How does it work?
Translate in PHP

• t(‘Go to %page’, array(‘%page’ => $p));
• format_plural($count, ‘1 year’,
  ‘@count years’);
• Several special cases: permissions,
  watchdog type names, and so on
Original process

• t() stores new strings for translation,
  when called with unknown text
• Web interface to translate
• Different sharing methods through
  the years: SQL, Gettext
Collaborative process

• A preprocessor generates translation
  templates
• Translators grab templates and
  translate
• Package is distributed
• Users import the translations
Translate in JavaScript


• Drupal.t() and Drupal.formatPlural()
  to translate strings in JavaScript
• Works just as well with on the fly string
  collection or preprocessing
Drupal core process
Drupal contrib process
Still too hard
• Know CVS
• Have write permissions
• Use gettext tools to merge and translate
• Time releases properly
• Track project progress and goals
• Reuse translations as you can
Translation packages

• http://drupal.org/project/Translations
• Contributed project translations
  scattered all around the repository

• Some teams even have their own
  download locations
Usability problems


• Although users upload and install
  modules, they need to upload
  translations on the web separately

• Existing translations can be broken by
  new uploads
Executive summary:
 Pain for translators
    Pain for users
Better for users in
    Drupal 6
Locale automation

• Language selection at start of installer
• Fully localized installer, imports
  translations for all enabled modules

• Automated import when
  • new language is added
  • module is installed
  • theme is enabled
In need of a cleanup


• Unfortunately we don’t know what to
  remove when a module is disabled or
  uninstalled

• This is solved in part by version
  tracking in locale module
New packaging format

• All these changes required a new
  packaging format
• Based on more smaller files in a well
  defined directory structure

• ‘po’ renamed to ‘translations’
• Now also used with core modules
New packaging format
Also better for
onsite translators
   in Drupal 6
On-page translation

• Drupl 6 changes made on-page
  translation possible

• Served with the l10n_client
  contributed module

• Interface still to be refined (a lot)
Demo
What about
collaboration?
Simplifying our lives

• Drupal.org knows about all the
  projects and releases available

• Their source code can be parsed for
  translatables

• Can be automated - we can even
  inform module developers about
  errors found
Localization server

• In part based on ideas from
  Bruno Massa
• Maintains a list of projects and
  releases
• Parses source packages for
  translatables
Localization community

• Translation community interface,
  based on organic groups
• Collaborate on project translations
• Different permission levels
• Import/export with Gettext support
New process

• Have seen groups.drupal.org?
• Translation groups, two permission
  levels: open and controlled

• Can host discussions, debates,
  “vocabularies”, “dictionaries”
New process

• Projects and releases are
  automatically available

• Translations can be imported from PO
  file, exported in PO packages

• Web based editing on custom interface
• TODO: backwards connection with
  projects
Demo
So when will this go live?

• Hopefully before or around the
  Drupal 6 release
• There are still features to implement
  and perfect
• It needs to fit nicely into the
  drupal.org infrastructure
Thanks!

Contenu connexe

Tendances

Multilingual WordPress
Multilingual WordPressMultilingual WordPress
Multilingual WordPressMatt Smith
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go langAmal Mohan N
 
J Ruby Whirlwind Tour
J Ruby Whirlwind TourJ Ruby Whirlwind Tour
J Ruby Whirlwind Touroscon2007
 
A brief intro to RubyMotion
A brief intro to RubyMotionA brief intro to RubyMotion
A brief intro to RubyMotionKamil Lelonek
 
QBASIC
QBASICQBASIC
QBASICnivi88
 
Intro to Crystal Programming Language
Intro to Crystal Programming LanguageIntro to Crystal Programming Language
Intro to Crystal Programming LanguageAdler Hsieh
 
Jslab rssh: JS as language platform
Jslab rssh:  JS as language platformJslab rssh:  JS as language platform
Jslab rssh: JS as language platformRuslan Shevchenko
 
Google Go! language
Google Go! languageGoogle Go! language
Google Go! languageAndré Mayer
 
Coding with golang
Coding with golangCoding with golang
Coding with golangHannahMoss14
 
Unit 1-introduction to scripts
Unit 1-introduction to scriptsUnit 1-introduction to scripts
Unit 1-introduction to scriptssana mateen
 
Introduction To Rails
Introduction To RailsIntroduction To Rails
Introduction To RailsEric Gruber
 
Introduction to PHP (SDPHP)
Introduction to PHP   (SDPHP)Introduction to PHP   (SDPHP)
Introduction to PHP (SDPHP)Eric Johnson
 
Rpc framework
Rpc frameworkRpc framework
Rpc frameworkjuly mon
 

Tendances (19)

Multilingual WordPress
Multilingual WordPressMultilingual WordPress
Multilingual WordPress
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
 
PHP Basics
PHP BasicsPHP Basics
PHP Basics
 
Crystal
CrystalCrystal
Crystal
 
Go Language presentation
Go Language presentationGo Language presentation
Go Language presentation
 
J Ruby Whirlwind Tour
J Ruby Whirlwind TourJ Ruby Whirlwind Tour
J Ruby Whirlwind Tour
 
A brief intro to RubyMotion
A brief intro to RubyMotionA brief intro to RubyMotion
A brief intro to RubyMotion
 
QBASIC
QBASICQBASIC
QBASIC
 
Intro to Crystal Programming Language
Intro to Crystal Programming LanguageIntro to Crystal Programming Language
Intro to Crystal Programming Language
 
Jslab rssh: JS as language platform
Jslab rssh:  JS as language platformJslab rssh:  JS as language platform
Jslab rssh: JS as language platform
 
Google Go! language
Google Go! languageGoogle Go! language
Google Go! language
 
Coding with golang
Coding with golangCoding with golang
Coding with golang
 
Unit 1-introduction to scripts
Unit 1-introduction to scriptsUnit 1-introduction to scripts
Unit 1-introduction to scripts
 
Introduction To Rails
Introduction To RailsIntroduction To Rails
Introduction To Rails
 
Go Lang
Go LangGo Lang
Go Lang
 
[submission] Final_Presentation
[submission] Final_Presentation[submission] Final_Presentation
[submission] Final_Presentation
 
Introduction to PHP (SDPHP)
Introduction to PHP   (SDPHP)Introduction to PHP   (SDPHP)
Introduction to PHP (SDPHP)
 
Rpc framework
Rpc frameworkRpc framework
Rpc framework
 
What is PHP?
What is PHP?What is PHP?
What is PHP?
 

En vedette

Gianluigi Viscusi, Informatica per le PA.
Gianluigi Viscusi, Informatica per le PA.Gianluigi Viscusi, Informatica per le PA.
Gianluigi Viscusi, Informatica per le PA.Andrea Rossetti
 
Anatomy of a Glacier
Anatomy of a GlacierAnatomy of a Glacier
Anatomy of a GlacierAlan Doherty
 
Wishing Well Alpha
Wishing Well AlphaWishing Well Alpha
Wishing Well Alphamezusa
 
Primary Elections in Palermo: A Case Study
Primary Elections in Palermo: A Case StudyPrimary Elections in Palermo: A Case Study
Primary Elections in Palermo: A Case Studyjexxon
 
Giuseppe Vaciago, Cybercrime, Digital Investigation e Digital Forensics
Giuseppe Vaciago, Cybercrime, Digital Investigation e Digital ForensicsGiuseppe Vaciago, Cybercrime, Digital Investigation e Digital Forensics
Giuseppe Vaciago, Cybercrime, Digital Investigation e Digital ForensicsAndrea Rossetti
 
Getting Started with Real-Time Analytics
Getting Started with Real-Time AnalyticsGetting Started with Real-Time Analytics
Getting Started with Real-Time AnalyticsAmazon Web Services
 
Lennon Imagine
Lennon ImagineLennon Imagine
Lennon Imaginesoclarale
 
Joseph-Smarr-Plaxo-OSCON-2006
Joseph-Smarr-Plaxo-OSCON-2006Joseph-Smarr-Plaxo-OSCON-2006
Joseph-Smarr-Plaxo-OSCON-2006guestfbf1e1
 
Il Partito politico nella Società dell'Informazione?
Il Partito politico nella Società dell'Informazione?Il Partito politico nella Società dell'Informazione?
Il Partito politico nella Società dell'Informazione?jexxon
 
Japan - A Society in Transition
 Japan - A Society in Transition Japan - A Society in Transition
Japan - A Society in TransitionAlan Doherty
 
P 5 hem plantat enciams
P 5 hem plantat enciamsP 5 hem plantat enciams
P 5 hem plantat enciamsmarblocs
 
Mastering Anytime Anywhere
Mastering Anytime AnywhereMastering Anytime Anywhere
Mastering Anytime AnywhereBertram Gugel
 
Marco T. Giordano, Identità Digitale e Reputazione Online – Pt. 2
Marco T. Giordano, Identità Digitale e Reputazione Online – Pt. 2Marco T. Giordano, Identità Digitale e Reputazione Online – Pt. 2
Marco T. Giordano, Identità Digitale e Reputazione Online – Pt. 2Andrea Rossetti
 
10 Thought Leaders Boiled Down
10 Thought Leaders Boiled Down10 Thought Leaders Boiled Down
10 Thought Leaders Boiled DownJustin Kistner
 
Introduction
IntroductionIntroduction
IntroductionJeff12982
 

En vedette (20)

Gianluigi Viscusi, Informatica per le PA.
Gianluigi Viscusi, Informatica per le PA.Gianluigi Viscusi, Informatica per le PA.
Gianluigi Viscusi, Informatica per le PA.
 
Anatomy of a Glacier
Anatomy of a GlacierAnatomy of a Glacier
Anatomy of a Glacier
 
Wishing Well Alpha
Wishing Well AlphaWishing Well Alpha
Wishing Well Alpha
 
she de franco
she de francoshe de franco
she de franco
 
Primary Elections in Palermo: A Case Study
Primary Elections in Palermo: A Case StudyPrimary Elections in Palermo: A Case Study
Primary Elections in Palermo: A Case Study
 
Giuseppe Vaciago, Cybercrime, Digital Investigation e Digital Forensics
Giuseppe Vaciago, Cybercrime, Digital Investigation e Digital ForensicsGiuseppe Vaciago, Cybercrime, Digital Investigation e Digital Forensics
Giuseppe Vaciago, Cybercrime, Digital Investigation e Digital Forensics
 
Getting Started with Real-Time Analytics
Getting Started with Real-Time AnalyticsGetting Started with Real-Time Analytics
Getting Started with Real-Time Analytics
 
111
111111
111
 
Lennon Imagine
Lennon ImagineLennon Imagine
Lennon Imagine
 
She-Catriel
She-CatrielShe-Catriel
She-Catriel
 
Joseph-Smarr-Plaxo-OSCON-2006
Joseph-Smarr-Plaxo-OSCON-2006Joseph-Smarr-Plaxo-OSCON-2006
Joseph-Smarr-Plaxo-OSCON-2006
 
Il Partito politico nella Società dell'Informazione?
Il Partito politico nella Società dell'Informazione?Il Partito politico nella Società dell'Informazione?
Il Partito politico nella Società dell'Informazione?
 
Japan - A Society in Transition
 Japan - A Society in Transition Japan - A Society in Transition
Japan - A Society in Transition
 
P 5 hem plantat enciams
P 5 hem plantat enciamsP 5 hem plantat enciams
P 5 hem plantat enciams
 
clase ungs
clase ungsclase ungs
clase ungs
 
Mastering Anytime Anywhere
Mastering Anytime AnywhereMastering Anytime Anywhere
Mastering Anytime Anywhere
 
Marco T. Giordano, Identità Digitale e Reputazione Online – Pt. 2
Marco T. Giordano, Identità Digitale e Reputazione Online – Pt. 2Marco T. Giordano, Identità Digitale e Reputazione Online – Pt. 2
Marco T. Giordano, Identità Digitale e Reputazione Online – Pt. 2
 
教案與教材設計
教案與教材設計教案與教材設計
教案與教材設計
 
10 Thought Leaders Boiled Down
10 Thought Leaders Boiled Down10 Thought Leaders Boiled Down
10 Thought Leaders Boiled Down
 
Introduction
IntroductionIntroduction
Introduction
 

Similaire à Translating Drupal

Multilingual Drupal presentation from "Do it With Drupal"
Multilingual Drupal presentation from "Do it With Drupal"Multilingual Drupal presentation from "Do it With Drupal"
Multilingual Drupal presentation from "Do it With Drupal"Gábor Hojtsy
 
Evergreen Docs Planning Session 2009
Evergreen Docs Planning Session 2009Evergreen Docs Planning Session 2009
Evergreen Docs Planning Session 2009Evergreen ILS
 
GlotPress aka translate.wordpress.org
GlotPress aka translate.wordpress.orgGlotPress aka translate.wordpress.org
GlotPress aka translate.wordpress.orgMarko Heijnen
 
Introduction to Drupal Basics
Introduction to Drupal BasicsIntroduction to Drupal Basics
Introduction to Drupal BasicsJuha Niemi
 
Introduction to OpenOffice.org 2.0
Introduction to OpenOffice.org 2.0Introduction to OpenOffice.org 2.0
Introduction to OpenOffice.org 2.0Isriya Paireepairit
 
[drupalday2017] - Devel - D8 release party
[drupalday2017] - Devel - D8 release party[drupalday2017] - Devel - D8 release party
[drupalday2017] - Devel - D8 release partyDrupalDay
 
[Luca Lusso] - Devel - D8 release party
[Luca Lusso] - Devel - D8 release party[Luca Lusso] - Devel - D8 release party
[Luca Lusso] - Devel - D8 release partyWellnet srl
 
DrupalCon Paris Muiltilingual Panel
DrupalCon Paris Muiltilingual PanelDrupalCon Paris Muiltilingual Panel
DrupalCon Paris Muiltilingual PanelDoug Green
 
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016Paul McKibben
 
SynapseIndia drupal presentation on drupal info
SynapseIndia drupal  presentation on drupal infoSynapseIndia drupal  presentation on drupal info
SynapseIndia drupal presentation on drupal infoSynapseindiappsdevelopment
 
Android Bootcamp
Android   BootcampAndroid   Bootcamp
Android Bootcampahkjsdcsadc
 
Nuxeo Roadmap 2008/06
Nuxeo Roadmap 2008/06Nuxeo Roadmap 2008/06
Nuxeo Roadmap 2008/06Eric Barroca
 
Composer JSON kills make files
Composer JSON kills make filesComposer JSON kills make files
Composer JSON kills make filesropsu
 
Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life DevOps.com
 
One Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp LondonOne Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp Londonhernanibf
 
Bring drupal 8 to all in their native languages
Bring drupal 8 to all in their native languagesBring drupal 8 to all in their native languages
Bring drupal 8 to all in their native languagesSébastien Corbin
 
APIs and SDKs: Breaking Into and Succeeding in a Specialty Market
APIs and SDKs: Breaking Into and Succeeding in a Specialty MarketAPIs and SDKs: Breaking Into and Succeeding in a Specialty Market
APIs and SDKs: Breaking Into and Succeeding in a Specialty MarketScott Abel
 

Similaire à Translating Drupal (20)

Multilingual Drupal presentation from "Do it With Drupal"
Multilingual Drupal presentation from "Do it With Drupal"Multilingual Drupal presentation from "Do it With Drupal"
Multilingual Drupal presentation from "Do it With Drupal"
 
Evergreen Docs Planning Session 2009
Evergreen Docs Planning Session 2009Evergreen Docs Planning Session 2009
Evergreen Docs Planning Session 2009
 
GlotPress aka translate.wordpress.org
GlotPress aka translate.wordpress.orgGlotPress aka translate.wordpress.org
GlotPress aka translate.wordpress.org
 
Introduction to Drupal Basics
Introduction to Drupal BasicsIntroduction to Drupal Basics
Introduction to Drupal Basics
 
Drupal
DrupalDrupal
Drupal
 
Introduction to OpenOffice.org 2.0
Introduction to OpenOffice.org 2.0Introduction to OpenOffice.org 2.0
Introduction to OpenOffice.org 2.0
 
[drupalday2017] - Devel - D8 release party
[drupalday2017] - Devel - D8 release party[drupalday2017] - Devel - D8 release party
[drupalday2017] - Devel - D8 release party
 
[Luca Lusso] - Devel - D8 release party
[Luca Lusso] - Devel - D8 release party[Luca Lusso] - Devel - D8 release party
[Luca Lusso] - Devel - D8 release party
 
DrupalCon Paris Muiltilingual Panel
DrupalCon Paris Muiltilingual PanelDrupalCon Paris Muiltilingual Panel
DrupalCon Paris Muiltilingual Panel
 
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
 
SynapseIndia drupal presentation on drupal info
SynapseIndia drupal  presentation on drupal infoSynapseIndia drupal  presentation on drupal info
SynapseIndia drupal presentation on drupal info
 
Android Bootcamp
Android   BootcampAndroid   Bootcamp
Android Bootcamp
 
Nuxeo Roadmap 2008/06
Nuxeo Roadmap 2008/06Nuxeo Roadmap 2008/06
Nuxeo Roadmap 2008/06
 
Composer JSON kills make files
Composer JSON kills make filesComposer JSON kills make files
Composer JSON kills make files
 
Rails data migrations
Rails data migrationsRails data migrations
Rails data migrations
 
Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life
 
One Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp LondonOne Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp London
 
Mono Repo
Mono RepoMono Repo
Mono Repo
 
Bring drupal 8 to all in their native languages
Bring drupal 8 to all in their native languagesBring drupal 8 to all in their native languages
Bring drupal 8 to all in their native languages
 
APIs and SDKs: Breaking Into and Succeeding in a Specialty Market
APIs and SDKs: Breaking Into and Succeeding in a Specialty MarketAPIs and SDKs: Breaking Into and Succeeding in a Specialty Market
APIs and SDKs: Breaking Into and Succeeding in a Specialty Market
 

Dernier

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
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...Drew Madelung
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
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 WorkerThousandEyes
 
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 WorkerThousandEyes
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
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 2024Rafal Los
 

Dernier (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
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...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
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
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
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
 

Translating Drupal

  • 1. Translating Drupal (the new way) Gábor Hojtsy September 19., 2007.
  • 2. Sponsored by All of my work explained in this session was sponsored by Google Summer of Code 2007. Thanks Google!
  • 3. About me • Using and contributing to Drupal since 2003 • Multiple modules, Hungarian translations • Drupal 6 core committer • Locale module maintainer
  • 4. About you • Users of existing translations? • Translating in-house modules? • Occasional translation contributors? • Members of official translation teams?
  • 6. Translating Drupal • Translate the built-in interface • User provided content translation is out of scope here (sessions about this topic were before lunch)
  • 8. t() is born January 22, 2001 <? function t($string) { return $string; } ?> (format_plural() was there earlier)
  • 9. Timeline • Jan 22, 2001 - t() • Feb 12, 2001 - Locale module • Feb 17, 2001 - Basic Translation interface, the strikethrough overview, languages added by SQL DDL
  • 10. Timeline various smaller updates before I start watching Formula 1 with [a] a 0.5 liter box of Haagen-Dhaz (Belgian Choclate) and [b] my laptop on my lap for drupal hacking. Life hardly can get any better than this. Commit comment by Dries for locale.inc 1.7
  • 11. Timeline • Jul 24, 2001 - Search form, even module filtering, thanks to: quot;location LIKE '%module.php?mod=quot;. check_input($edit[module]) .quot;%'quot; • Jan 5, 2002 - Locale cache • June 2, 2003 - Module filtering removed, due to URL restructuring
  • 12. Timeline • Sept 11, 2003 - Extractor.php is born • Dec 28, 2003 - Short string cache • Aug 11, 2004 - Gettext format based string sharing, web administration, plural formulas • Aug 18, 2006 - @ and ! placeholders
  • 13. Timeline • Sep 1, 2006 - Translatable installer • Mar 26, 2007 - New language system • May 15-22, 2007 - Automated translation import • Jun 8, 2007 - JavaScript translation
  • 14. How does it work?
  • 15. Translate in PHP • t(‘Go to %page’, array(‘%page’ => $p)); • format_plural($count, ‘1 year’, ‘@count years’); • Several special cases: permissions, watchdog type names, and so on
  • 16. Original process • t() stores new strings for translation, when called with unknown text • Web interface to translate • Different sharing methods through the years: SQL, Gettext
  • 17. Collaborative process • A preprocessor generates translation templates • Translators grab templates and translate • Package is distributed • Users import the translations
  • 18. Translate in JavaScript • Drupal.t() and Drupal.formatPlural() to translate strings in JavaScript • Works just as well with on the fly string collection or preprocessing
  • 21. Still too hard • Know CVS • Have write permissions • Use gettext tools to merge and translate • Time releases properly • Track project progress and goals • Reuse translations as you can
  • 22. Translation packages • http://drupal.org/project/Translations • Contributed project translations scattered all around the repository • Some teams even have their own download locations
  • 23. Usability problems • Although users upload and install modules, they need to upload translations on the web separately • Existing translations can be broken by new uploads
  • 24. Executive summary: Pain for translators Pain for users
  • 25. Better for users in Drupal 6
  • 26. Locale automation • Language selection at start of installer • Fully localized installer, imports translations for all enabled modules • Automated import when • new language is added • module is installed • theme is enabled
  • 27. In need of a cleanup • Unfortunately we don’t know what to remove when a module is disabled or uninstalled • This is solved in part by version tracking in locale module
  • 28. New packaging format • All these changes required a new packaging format • Based on more smaller files in a well defined directory structure • ‘po’ renamed to ‘translations’ • Now also used with core modules
  • 30. Also better for onsite translators in Drupal 6
  • 31. On-page translation • Drupl 6 changes made on-page translation possible • Served with the l10n_client contributed module • Interface still to be refined (a lot)
  • 32. Demo
  • 34. Simplifying our lives • Drupal.org knows about all the projects and releases available • Their source code can be parsed for translatables • Can be automated - we can even inform module developers about errors found
  • 35. Localization server • In part based on ideas from Bruno Massa • Maintains a list of projects and releases • Parses source packages for translatables
  • 36. Localization community • Translation community interface, based on organic groups • Collaborate on project translations • Different permission levels • Import/export with Gettext support
  • 37. New process • Have seen groups.drupal.org? • Translation groups, two permission levels: open and controlled • Can host discussions, debates, “vocabularies”, “dictionaries”
  • 38. New process • Projects and releases are automatically available • Translations can be imported from PO file, exported in PO packages • Web based editing on custom interface • TODO: backwards connection with projects
  • 39. Demo
  • 40. So when will this go live? • Hopefully before or around the Drupal 6 release • There are still features to implement and perfect • It needs to fit nicely into the drupal.org infrastructure