SlideShare a Scribd company logo
GlotPress aka
translate.WordPress.org
WordCamp Praha 2015
Marko Heijnen
• Lead developer of GlotPress

• Core contributor for WordPress

• Working for 1&1 as their
WordPress specialist
To start with, what is
GlotPress
• GlotPress is a collaborative, web-based software
translation tool
• GlotPress will let you, or an entire team, to translate their
favourite software
• It is as open-source like WordPress is
Features
• Different roles: Translators, Validators and Admins
• Translate strings
• Validate strings
• Manage strings by reject/approve them
• Having a glossary with common words
• Import/Export different formats
Default theme
Custom theme
Translations overview
Translations flow
The history behind it
The history
• Started in April 2008 by Nikolay Bachiyski.
• Uses BackPress as a framework.
• And it’s OOP developed.
• March 2013 I started managing GlotPress.
• In 2014 we had our first GSoC project.
How it is structured
OOP
• Uses BackPress which has a lot of useful classes (and
functions).
• And we build on top of that our features like routers,
formats and things.
• Those three type of objects always need to extend the
generic class.
• The generic classes have shared functionality or abstract
methods the derived class needs.
GP_Thing
• Because of the generic classes we can make our code
more readable.
• You can define in a thing which fields are required to
create a new item.
• A thing is a project, user, translations etc.
• GP_Glossary file has only 42 lines of code and has all
validations in place.
The use of functions
• We still use them a lot like WordPress does for in themes.
• A lot of them are copied over from WordPress.
• This is a great thing cause if you are using GlotPress
yourself you can “easily” add a feature to GlotPress
because the hook system is in place.
• And so many other great features you use when building
for WordPress
CLI
• GlotPress has a lot of scripts that you can or must use.
• Like adding a new admin is a must due missing user
management. Will have an add user script soon.
• Or things like import/export originals or translations.
• It creates possibilities to build automatic tasks
WordPress core & translate.WordPress.org
translate.WordPress.org instalation
Current Status

downloadable packages
• 141 locales with a wp_locale
• 41 locales are up to date
• 15 locales are still on 4.1
• 8 locales are one major version behind
• 16 locales are behind by two or more major version
• 61 locales don’t have a package
• 40 locales have a language pack
• Oldest version is 2.8.5.
For Czech
For future
• More integrated in the WordPress environment
• Soon it will include all plugins and themes
• Currently ~10.000 plugins are translatable
Some of the new features
Glossary
Profiles
Upcoming features
• Decline with feedback
• User dashboard
• Notifications
• Improved workflow
• New theme

https://github.com/GlotPress/New-Default-Theme
What can you do with it as a developer?
Use it yourself
• Using it for your own themes, plugins or projects
• Almost as easy to extend as WordPress
• It has a grunt plugin to download translations easily
Grunt
THE JAVASCRIPT TASK RUNNER 

http://gruntjs.com
• Running tasks by using CLI
• Easy to use, harder to configure
• Extendable with your own plugins
• Uses npm for plugin management
The GlotPress grunt task
grunt.initConfig({

	 glotpress_download: {

	 	 core: {

	 	 	 options: {

	 	 	 	 domainPath: 'languages',

	 	 	 	 url: 'http://wp-translate.org',

	 	 	 	 slug: 'tabify-edit-screen',

	 	 	 	 textdomain: 'tabify-edit-screen',

	 	 	 }

	 	 },

	 },

});
GP_Plugin
• Has a set of useful methods based on your defined id.
• get_option, update_option
• add_action, add_filter
• remove_action, remove_filter
The base of your plugin
<?php
class My_First_Plugin extends GP_Plugin {
	 public $id = 'my-first-plugin';
	 public function __construct() {
	 }
}
GP::$plugins->my_first_plugin = new My_First_Plugin;
Plugins out there
• https://github.com/Yoast/glotpress-seo
• https://github.com/Yoast/i18n-module
• https://github.com/markoheijnen/GlotPress-APCu-Cache
• https://github.com/markoheijnen/GlotPress-Analytics
• https://github.com/markoheijnen/GlotPress-child-theme
• Private project: GlotPress Updater
WP-Translate.org
Updater
The tools we use
Tools we use
• We do have a certain amount of Unit tests Travis to run
our unit tests
• https://scrutinizer-ci.com/g/GlotPress/GlotPress/ for
Code quality scans
• https://coveralls.io/ for code coverage history and stats
Thank you for listening
Questions?
@markoheijnen

markoheijnen.com

More Related Content

PDF
Develop and Deploy Outside the Repo
PDF
VersionPress - WordPress + Git
PDF
Unscrambling An Omelette - How Companies Can Use WordPress Better - Jeremy Ke...
PDF
Building a community of Open Source intranet users
PPTX
WP-CLI: WordCamp Nashville 2016
PPTX
The Ultimate WordPress Development Environment
PDF
Building SaaS with WordPress - WordCamp Netherlands 2016
PPTX
WordPress Multilingual: WordCamp Antwerp 2016
Develop and Deploy Outside the Repo
VersionPress - WordPress + Git
Unscrambling An Omelette - How Companies Can Use WordPress Better - Jeremy Ke...
Building a community of Open Source intranet users
WP-CLI: WordCamp Nashville 2016
The Ultimate WordPress Development Environment
Building SaaS with WordPress - WordCamp Netherlands 2016
WordPress Multilingual: WordCamp Antwerp 2016

What's hot (17)

PPTX
WordPress plugin development
ODP
OpenNTF Essentials
PPTX
DotNetCampus - Analizzare le performance di un'applicazione asp.net con Glimpse
PPTX
Develop 4 Developers
PPTX
Analizzare le performance di un'applicazione ASP.NET con Glimpse
PPTX
Vaadin slides for @Devoxx 2012
PPTX
That worked before
PDF
How to create a WordPress not understanding WordPress, so more on the headles...
PPTX
Visual Studio: The best tool for web developers.
PPTX
Build testable react app
PDF
Slim PHP when you don't need the kitchen sink
PDF
Django Deployer
PPTX
Dockerizing react app
PPTX
WebMatrix
PDF
Robin Böhm - Angular 2 - code.talks 2015
PDF
Advanced Custom Fields(ACF) + Page Builder at WordPress meetup Stockholm 2016...
PPTX
Continuous Delivery with VS2015 and TFS2015
WordPress plugin development
OpenNTF Essentials
DotNetCampus - Analizzare le performance di un'applicazione asp.net con Glimpse
Develop 4 Developers
Analizzare le performance di un'applicazione ASP.NET con Glimpse
Vaadin slides for @Devoxx 2012
That worked before
How to create a WordPress not understanding WordPress, so more on the headles...
Visual Studio: The best tool for web developers.
Build testable react app
Slim PHP when you don't need the kitchen sink
Django Deployer
Dockerizing react app
WebMatrix
Robin Böhm - Angular 2 - code.talks 2015
Advanced Custom Fields(ACF) + Page Builder at WordPress meetup Stockholm 2016...
Continuous Delivery with VS2015 and TFS2015
Ad

Viewers also liked (20)

PPTX
Web Performance: 3 Stages to Success
PDF
WordCamp Montreal 2015: Combining Custom Post Types, Fields, and Meta Boxes t...
PDF
Using the Editor the Proper Way - WordCamp Toronto 2015
PDF
WooCommerce: An E-Commerce Solution for Wordpress
ODP
Do you really- need a 2kg pocket knife-
PPTX
Content Creation Regimen - WordCamp Hamilton 2016
PDF
Pressnomics 2015 - Managing Client Expectations
PPTX
Project Management or how to herd cats
PPTX
Flexing Your WordPress Themes
PDF
Word press gets responsive 4x3
PPTX
Not One and Done - Repurposing Your Content
PDF
CSS na steroidima (SASS)
PDF
2013-08-10 WordCamp Russia - Aleksandr Stankevic
PPTX
2016 #WCFAY Anatomy of a Website
PDF
WordPress mit React – Mehr als eine Zweckehe?!
PDF
My Contributor Story
PPTX
WordPress 101 from WordCamp Cincinatti 2016
PDF
WordPress & Front-end performance
PDF
WordPress Performance optimization
PDF
Learning java script and wordpress rest api by tom hermans wordcamp netherl...
Web Performance: 3 Stages to Success
WordCamp Montreal 2015: Combining Custom Post Types, Fields, and Meta Boxes t...
Using the Editor the Proper Way - WordCamp Toronto 2015
WooCommerce: An E-Commerce Solution for Wordpress
Do you really- need a 2kg pocket knife-
Content Creation Regimen - WordCamp Hamilton 2016
Pressnomics 2015 - Managing Client Expectations
Project Management or how to herd cats
Flexing Your WordPress Themes
Word press gets responsive 4x3
Not One and Done - Repurposing Your Content
CSS na steroidima (SASS)
2013-08-10 WordCamp Russia - Aleksandr Stankevic
2016 #WCFAY Anatomy of a Website
WordPress mit React – Mehr als eine Zweckehe?!
My Contributor Story
WordPress 101 from WordCamp Cincinatti 2016
WordPress & Front-end performance
WordPress Performance optimization
Learning java script and wordpress rest api by tom hermans wordcamp netherl...
Ad

Similar to GlotPress aka translate.wordpress.org (20)

PDF
Task runners + theming automating your workflow
PDF
Let's create a multilingual site in WordPress
PPTX
Translate word press to your language
PPTX
From WordPress With Love
PDF
The development and future of GlotPress
PDF
Week6 office-hours
PDF
Working in Harmony: Manchester - Optimize development and content workflows
PDF
Managing Translation Workflows in Drupal 7
PPTX
Aiming for automatic updates - Drupal Dev Days Lisbon 2018
PDF
Upgrading to Drupal 8: Benefits and Gotchas
PDF
appengine ja night #25 Google App Engine for PHP (English)
PPTX
FrameMaker and the DITA Open Toolkit
PPTX
Branding office 365 with front end tooling
PDF
Updating WordPress Themes, Plugins, and Core Safely
PDF
Working in harmony
PDF
Using Grunt with Drupal
PPTX
Branding Office 365 w/ Front End Tools + SharePoint PnP
PPTX
Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...
PDF
Stop making, start composing - Using Composer for Drupal development
PDF
Dig1108C Lesson 1 Fall 2014
Task runners + theming automating your workflow
Let's create a multilingual site in WordPress
Translate word press to your language
From WordPress With Love
The development and future of GlotPress
Week6 office-hours
Working in Harmony: Manchester - Optimize development and content workflows
Managing Translation Workflows in Drupal 7
Aiming for automatic updates - Drupal Dev Days Lisbon 2018
Upgrading to Drupal 8: Benefits and Gotchas
appengine ja night #25 Google App Engine for PHP (English)
FrameMaker and the DITA Open Toolkit
Branding office 365 with front end tooling
Updating WordPress Themes, Plugins, and Core Safely
Working in harmony
Using Grunt with Drupal
Branding Office 365 w/ Front End Tools + SharePoint PnP
Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...
Stop making, start composing - Using Composer for Drupal development
Dig1108C Lesson 1 Fall 2014

More from Marko Heijnen (20)

PDF
Custom coded projects
PDF
Security, more important than ever!
PDF
WooCommerce & Apple TV
PDF
The moment my site got hacked - WordCamp Sofia
PDF
Mijn site beveiliging
PDF
The moment my site got hacked
PDF
My complicated WordPress site
PDF
Node.js to the rescue
PDF
Protecting your site by detection
PDF
Writing clean and maintainable code
PDF
Extending WordPress as a pro
PDF
Bootstrapping your plugin
PDF
Why Javascript matters
PDF
The code history of WordPress
PDF
Building plugins like a pro
PDF
Perfect your images using WordPress - WordCamp Europe 2013
PDF
Dealing with media
PDF
The awesome things you can do with images inside WordPress
PDF
De nieuwe media flow in WordPress en hoe verder
PDF
WordPress 3.5
Custom coded projects
Security, more important than ever!
WooCommerce & Apple TV
The moment my site got hacked - WordCamp Sofia
Mijn site beveiliging
The moment my site got hacked
My complicated WordPress site
Node.js to the rescue
Protecting your site by detection
Writing clean and maintainable code
Extending WordPress as a pro
Bootstrapping your plugin
Why Javascript matters
The code history of WordPress
Building plugins like a pro
Perfect your images using WordPress - WordCamp Europe 2013
Dealing with media
The awesome things you can do with images inside WordPress
De nieuwe media flow in WordPress en hoe verder
WordPress 3.5

Recently uploaded (20)

PDF
Electronic commerce courselecture one. Pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
DOCX
The AUB Centre for AI in Media Proposal.docx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
MYSQL Presentation for SQL database connectivity
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
KodekX | Application Modernization Development
PDF
cuic standard and advanced reporting.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
Electronic commerce courselecture one. Pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Reach Out and Touch Someone: Haptics and Empathic Computing
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
The AUB Centre for AI in Media Proposal.docx
“AI and Expert System Decision Support & Business Intelligence Systems”
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
MYSQL Presentation for SQL database connectivity
The Rise and Fall of 3GPP – Time for a Sabbatical?
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Dropbox Q2 2025 Financial Results & Investor Presentation
Advanced methodologies resolving dimensionality complications for autism neur...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
KodekX | Application Modernization Development
cuic standard and advanced reporting.pdf
Encapsulation_ Review paper, used for researhc scholars

GlotPress aka translate.wordpress.org

  • 2. Marko Heijnen • Lead developer of GlotPress • Core contributor for WordPress • Working for 1&1 as their WordPress specialist
  • 3. To start with, what is
  • 4. GlotPress • GlotPress is a collaborative, web-based software translation tool • GlotPress will let you, or an entire team, to translate their favourite software • It is as open-source like WordPress is
  • 5. Features • Different roles: Translators, Validators and Admins • Translate strings • Validate strings • Manage strings by reject/approve them • Having a glossary with common words • Import/Export different formats
  • 11. The history • Started in April 2008 by Nikolay Bachiyski. • Uses BackPress as a framework. • And it’s OOP developed. • March 2013 I started managing GlotPress. • In 2014 we had our first GSoC project.
  • 12. How it is structured
  • 13. OOP • Uses BackPress which has a lot of useful classes (and functions). • And we build on top of that our features like routers, formats and things. • Those three type of objects always need to extend the generic class. • The generic classes have shared functionality or abstract methods the derived class needs.
  • 14. GP_Thing • Because of the generic classes we can make our code more readable. • You can define in a thing which fields are required to create a new item. • A thing is a project, user, translations etc. • GP_Glossary file has only 42 lines of code and has all validations in place.
  • 15. The use of functions • We still use them a lot like WordPress does for in themes. • A lot of them are copied over from WordPress. • This is a great thing cause if you are using GlotPress yourself you can “easily” add a feature to GlotPress because the hook system is in place. • And so many other great features you use when building for WordPress
  • 16. CLI • GlotPress has a lot of scripts that you can or must use. • Like adding a new admin is a must due missing user management. Will have an add user script soon. • Or things like import/export originals or translations. • It creates possibilities to build automatic tasks
  • 17. WordPress core & translate.WordPress.org
  • 19. Current Status
 downloadable packages • 141 locales with a wp_locale • 41 locales are up to date • 15 locales are still on 4.1 • 8 locales are one major version behind • 16 locales are behind by two or more major version • 61 locales don’t have a package • 40 locales have a language pack • Oldest version is 2.8.5.
  • 21. For future • More integrated in the WordPress environment • Soon it will include all plugins and themes • Currently ~10.000 plugins are translatable
  • 22. Some of the new features
  • 25. Upcoming features • Decline with feedback • User dashboard • Notifications • Improved workflow • New theme
 https://github.com/GlotPress/New-Default-Theme
  • 26. What can you do with it as a developer?
  • 27. Use it yourself • Using it for your own themes, plugins or projects • Almost as easy to extend as WordPress • It has a grunt plugin to download translations easily
  • 28. Grunt THE JAVASCRIPT TASK RUNNER 
 http://gruntjs.com • Running tasks by using CLI • Easy to use, harder to configure • Extendable with your own plugins • Uses npm for plugin management
  • 29. The GlotPress grunt task grunt.initConfig({
 glotpress_download: {
 core: {
 options: {
 domainPath: 'languages',
 url: 'http://wp-translate.org',
 slug: 'tabify-edit-screen',
 textdomain: 'tabify-edit-screen',
 }
 },
 },
 });
  • 30. GP_Plugin • Has a set of useful methods based on your defined id. • get_option, update_option • add_action, add_filter • remove_action, remove_filter
  • 31. The base of your plugin <?php class My_First_Plugin extends GP_Plugin { public $id = 'my-first-plugin'; public function __construct() { } } GP::$plugins->my_first_plugin = new My_First_Plugin;
  • 32. Plugins out there • https://github.com/Yoast/glotpress-seo • https://github.com/Yoast/i18n-module • https://github.com/markoheijnen/GlotPress-APCu-Cache • https://github.com/markoheijnen/GlotPress-Analytics • https://github.com/markoheijnen/GlotPress-child-theme • Private project: GlotPress Updater
  • 36. Tools we use • We do have a certain amount of Unit tests Travis to run our unit tests • https://scrutinizer-ci.com/g/GlotPress/GlotPress/ for Code quality scans • https://coveralls.io/ for code coverage history and stats
  • 37. Thank you for listening Questions? @markoheijnen markoheijnen.com