SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Downloaden Sie, um offline zu lesen
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!

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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?
 

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie Translating Drupal the New Way in Drupal 6

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
 

Ähnlich wie Translating Drupal the New Way in Drupal 6 (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
 

Kürzlich hochgeladen

UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
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
 
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
 
(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
 
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 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
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 

Kürzlich hochgeladen (20)

UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
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
 
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
 
(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...
 
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 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.
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 

Translating Drupal the New Way in Drupal 6

  • 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