• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Localize Drupal Org
 

Localize Drupal Org

on

  • 2,494 views

 

Statistics

Views

Total Views
2,494
Views on SlideShare
2,493
Embed Views
1

Actions

Likes
1
Downloads
9
Comments
0

1 Embed 1

http://dconparis.pronovix.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Localize Drupal Org Localize Drupal Org Presentation Transcript

    • Here comes localize.drupal.org Gábor Hojtsy, Acquia, Drupalcon Paris
    • ME • Needed a translated Drupal in 2003 • Became locale.module maintainer, Drupal 6 core committer • Developed all kinds of translation tools • Working for Acquia
    • YOU • Running translated Drupal sites? • Translating modules for “self”? • Contributing to drupal.org translations? • Writing & translating modules to “self”?
    • Take a walk
    • 2001 Jan 22 t() is born Drupal 1.0.0 2.0.0 3.0.0 2001 Feb locale.module, translation interface Drupal.org Disclaimer: time scale not exact
    • 2004 Aug 2002 Jan Gettext based sharing, Locale cache web admin, plurals 4.0.0 4.3.0 4.5.0 4.7.0 2003 Sep extractor.php Disclaimer: time scale not exact
    • 2006 Sep Translatable installer 5.0 2006 Aug 2007 May @! Automated import Disclaimer: time scale not exact
    • 2007 Jun JS translation 6.0 7.0 2009 Aug 2009 Jun localize.drupal.org Contexts Disclaimer: time scale not exact
    • All lined up
    • TRANSLATING THE BUILT-IN INTERFACE
    • TEXT COMES FROM SOURCE CODE
    • t(‘Go to %page’, array(‘%page’ => $p)); Drupal.t(‘Go to %page’, {‘%page’: num});
    • format_plural( $count, ‘1 year’, ‘@count years’ ); Drupal.formatPlural( count, ‘1 year’, ‘@count years’ );
    • D!"#$% 6 Ch!$for new versions at hojtsy.hu – Freely redistri By Gábor Hojtsy – ion API JavaScript translat to the Translates ‘Home’ play. ion API e’) language used for page dis Core PHP translat to the Drupal.t(‘Hom Translates ‘Home’ t(‘H ome’) requested language. Plural Returns the prop er translation for Drupal.format l rules in Returns the proper (count, the text based on plura format_plural & '(%$&)*' sed e. lation for the text ba ‘1 comment’, the page’s langu ag eck ($count, trans GET THE on plural rules in the ‘@coun t comments’) ‘1 comment’, guage. ’) requested lan can be provided, ‘@count comm ents placements array Optional variable realways the page language! placements array and language is Optional variable re provided in this order. n be ix characters) language code ca ats (based on pref Replacement form value escaped with features Replaced with the ut. ns using translation Other PHP functio @count check_plain() for outp format_date Translates parts of the CHEAT SHEET +,-$& (,--&bu. ble as long as credit is kept. d value escaped an ($timesta mp, date/time formatting. Replaced with the r (theme 'medium', ...) ted as a placeholde %size format interval in (‘placeh older’)). Displays the time t l Translates value as is, withou format_interva human terms. Replaced with the ting. Insecure! Only ... ) names of the segments. ($timestamp, ional format !html any addit eady sanitized your text. provided use if you alr Formats a file size e MB, y( FROM tes. Translate s th irectory’, arra ize, ...) in by me moved to @d format_size($s Example: t(‘%na => $dirname); ta . KB and byte labels lename, ‘@dire ctory’ 1.1 - '*.-/0 ‘%name’ => $fi e code at the end. an optional languag All functions accept th e installer Translating text in ed later y as t(), but translation and us Works the same wa ckend. Use Text extracted for y ba Module/theme nam e; uses a file+memor fo files description; package na me. st(‘Home’ ) only in the installer and in install HOJTSY.HU .in support. profiles. No plural names, Literal permission d hook_per m() when provided with standar ll files and any -! 15. 2007. ns array syntax. Use get_t() in .insta implementatio could run in the other code which s ‘t’ or ‘st’ $t = get_t(); installer too. It retu nction to be d rn Menu item ‘title’ an hook_menu() ‘description’ keys , when $t(‘H ome’); depending on the fu ings. t. implem entations provided as literal str used at the momen sage, Log type and mes ral nslation, your and need to use traif your module when pr ovided as lite have an .install file ler Remember: if you easily end up running in the instal e get_t()! u’, strings. Third parameter watchdog(‘men function calls could core module in an install profile. Us calls specifies the replacements becomes a ‘Items saved’) pport. array. No plural su bal context, Usage of t() in a glo ST’, t(‘...’)). The ALSO SEE mistakes e message eg. for The most common Reuse of the sam such as define(‘CON t initialized at lues, such as t($type). d drupal_set_mes sage() t ye locale system is no e is incorrect Using dynamic va s to call watchdog() an dynamic string allows t(), the later e, so this usag Whenever you use make sure that all calls. The former dis t possible. that tim nasty performance , the above functions eady in the code is no requires t(), so this e API functions and also leads to it. possibl e values are alr I. Always ca ll the abov problems. Never do l form using the AP indirection. elsewhere in litera er provided content. directly, without us Do not translate D.O/NODE/322729 so e using the API pr operly ule plugin support, rt a ar s have coder mod po Tools to verify you Drupal 6. x-2 or later version rted in reviews. Also feel free to ex . e API is repo ings appear improper use of th ule/theme and check whether all str /project/potx od http://drupal.org template for your m e t() or some en you forgot to us nn ot find mistakes wh localization client has a The potx module ca late your output. The . If certain ot her function to trans translate text displayed on the page e API. _clie nt convenient interface to , you forg ot to use th rg/project/l10n ing up for translation http://drupal.o strings are not show
    • TEXT IS FOUND AND REPLACED RUNTIME, WHEN USED
    • Hungarian Croatian Go to %page %page. oldalra ugrás ... 1 year 1 év Uhm, not so simple @count years @count év
    • TRANSLATIONS ARE STORED IN THE DATABASE
    • DRUPAL PROCESS Running source code
    • DRUPAL PROCESS Running source code Found text stored in DB
    • DRUPAL PROCESS Running source code Found text stored in DB User interface to translate text, stored in DB
    • DRUPAL PROCESS Running source code Found text stored in DB Text replaced on User interface output to translate text, stored in DB
    • Where’s the happy family?
    • TRANSLATIONS ARE SHARED IN GETTEXT .PO
    • SHARING PROCESS
    • SHARING PROCESS
    • SHARING PROCESS Static source code
    • SHARING PROCESS Static source code Gettext .pot
    • SHARING PROCESS Static source code Gettext .pot
    • SHARING PROCESS Static source code Gettext .pot Translated .po
    • SHARING PROCESS Static source code Gettext .pot Translated .po
    • SHARING PROCESS Static source code Gettext .pot Translated .po
    • •Translation template Static extractor source code •http://drupal.org/ project/potx •Web interface in your Gettext Drupal install .pot •Interfaces with coder review module to help developers
    • SHARING PROCESS Static source code Gettext .pot Translated .po
    • SHARING PROCESS Static source code Gettext .pot Translated .po
    • Desktop tools like PoEdit or just Notepad Gettext .pot Translated .po
    • SHARING PROCESS Static source code Gettext .pot Translated .po
    • SHARING PROCESS Static source code Gettext .pot Translated .po
    • •Translation teams commit .po files to CVS •http://drupal.org/project/Translations and under contributed projects •Released on the parent project’s timeframe •Drupal imports automatically Translated .po
    • SHARING PROCESS Static source code Gettext .pot Translated .po
    • SHARING PROCESS Static source code Gettext .pot Translated .po
    • •Built-in translation interface •http://drupal.org/project/l10n_client •Import and export .po(t) files manually
    • SHARING PROCESS Static source code Gettext .pot Translated .po
    • SHARING PROCESS Static source code Gettext .pot Translated .po
    • All come together
    • GIVING AWAY (THIS WAY) IS HARD
    • POTX
    • POTX .PO
    • CVS POTX .PO
    • CVS POTX .PO RELEASES
    • CVS POTX .PO RELEASES BRANCHES
    • CVS PLURAL FORMS POTX .PO RELEASES BRANCHES
    • CVS PLURAL FORMS POTX .PO SCHEDULING RELEASES BRANCHES
    • CVS PLURAL FORMS POTX .PO SCHEDULING RELEASES BRANCHES ISSUE QUEUES
    • ENOUGH!
    • LOCALIZE.DRUPAL.ORG Web UI for Drupal.org project translations
    • LOCALIZE.DRUPAL.ORG Automated parsing of Drupal.org releases on publication
    • LOCALIZE.DRUPAL.ORG Skips CVS, branching, templates, hides potx and plural forms, does not require desktop tools
    • LOCALIZE.DRUPAL.ORG Single-sign-on with Drupal.org
    • LOCALIZE.DRUPAL.ORG Organic groups based translations
    • LOCALIZE.DRUPAL.ORG Different permission levels (open/controlled)
    • LOCALIZE.DRUPAL.ORG Keeps import/export support with Gettext formats
    • LOCALIZE.DRUPAL.ORG Provides a remote submission web service for Localization client
    • Oh, those stats!
    • almost over 5000 5600 projects known releases parsed over 149000 strings to translate
    • 149000 IT IS LIKE TRANSLATING DRUPAL 43 TIMES
    • 15 TRANSLATION TEAMS LAUNCHED IN BETA (MORE IN QUEUE)
    • Take a ride!
    • Envious?
    • SOFTWARE ON L.D.O • Translation template extractor http://drupal.org/project/potx • Localization server: http://drupal.org/project/l10n_server • Organicgroups http://drupal.org/project/og
    • TRANSLATE YOUR CODE • Open Atrium and Gallery 2 uses Localization server to translate their code • Youcan set up l10n_server to parse your own code and translate in-house • Eg. https://translate.openatrium.com/
    • Long way to go
    • Color the future!
    • THESE SLIDES ARE (CC) Photo credits: http://www.flickr.com/photos/sinkdd/2853334715/ http://www.flickr.com/photos/chavals/2978360981/ http://www.flickr.com/photos/koesbong/125933266/ http://www.flickr.com/photos/cheishichiyo/3637712921/ http://www.flickr.com/photos/paky/52194393/ http://www.flickr.com/photos/patrickgage/3738107746/ http://www.flickr.com/photos/zhzheka/1240470939/ http://www.flickr.com/photos/fchouse/3270958643/ http://www.flickr.com/photos/colinj/490622069/ http://www.flickr.com/photos/brartist/313272029/ This presentation is © Gábor Hojtsy Licensed: http://creativecommons.org/licenses/by-nc-sa/2.0/
    • THANK YOU! Gábor Hojtsy, Acquia gabor@hojtsy.hu http://hojtsy.hu/