WordPress Theme & Plugin i18n & L10n

32
WordPress Internationalizatio n & Localization By Md. Sajedul Haque Romi Email: [email protected]

description

This was my presentation slide at a seminar by WordPressian group. https://www.facebook.com/groups/wordpressians/ http://codebangla.com

Transcript of WordPress Theme & Plugin i18n & L10n

Page 1: WordPress Theme & Plugin i18n & L10n

WordPress Internationalization & LocalizationBy Md. Sajedul Haque RomiEmail: [email protected]

Page 2: WordPress Theme & Plugin i18n & L10n

Objetives• Understanding Internationalization & localization• Tools for localization•Implementation localization in WP themes•Implementation localization in WP plugins

Page 3: WordPress Theme & Plugin i18n & L10n

Internationalization (i18n)Internationalization is the process of designing a software application so that it can be adapted to various languages and regions without engineering changes.

Page 4: WordPress Theme & Plugin i18n & L10n

Localization (L10n)Localization is the process of adapting internationalized software for a specific region or language by adding locale-specific components and translating text.

Page 5: WordPress Theme & Plugin i18n & L10n

GNU gettextWordPress uses the gettext libraries and tools for i18n.

In WordPress, you should use the __() wordpress-defined PHP gettext-compliant translation function.

Page 6: WordPress Theme & Plugin i18n & L10n

Language FilesThere are three types of files used in the gettext translation framework.

•POT (Portable Object Template) files•PO (Portable Object) files •MO (Machine Object) files

Page 7: WordPress Theme & Plugin i18n & L10n

Basic Localization MethodIn your theme or plugin PHP files, write codes in the following way. __('message') passes the translation to the PHP return statement. _e('message') passes the translation to the PHP echo statement.Example:

<?php $translated_text = __( 'text', 'domain' ); ?>

Domain: Unique identifier for retrieving translated strings 

Page 8: WordPress Theme & Plugin i18n & L10n

Digging Into Localization•Load a text domain•Process text messages with WordPress functions•Extract these messages with the appropriate software•Provide a translation for each message•Create a language file for a particular locale•Instruct WordPress to enable localization and to load the language file

Page 9: WordPress Theme & Plugin i18n & L10n

Loading Text DomainFor Theme:In wp-content/themes/Test-Theme/functions.php

For Plugin:In wp-content/plugins/Test-Plugin/index.php

Page 10: WordPress Theme & Plugin i18n & L10n

Processing Text Messagesecho "Hello user";

_e("Hello user","mytheme");

the_content( "Read more" );

the_content( __("Read more","mytheme") );

Page 11: WordPress Theme & Plugin i18n & L10n

PHP function sprintf ()Sometimes, a text message includes dynamic data, such as a number from a PHP variable. In this case, we use the sprintf() function to produce the final message string:$results_found = 12;$message = sprintf( __("%s results found" , "mytheme") , $results_found );

Page 12: WordPress Theme & Plugin i18n & L10n

Singular & Plural TranslationWordPress provides a function for singular and plural translation of the same text message called _n():

_n( $single, $plural, $number, $domain );

Page 13: WordPress Theme & Plugin i18n & L10n

Singular & Plural Translation

Though the _n() is a built in WordPress function, using it is discouraged because the translation software parses only the first parameter of a function, and so these two text messages would not be fetched. Instead, we can use the PHP if statement:

if($results_found == 1) $message = __("1 result found" , "my-text-domain");else $message = sprintf( __("%s results found" , "my-text-domain") , $results_found );

Page 14: WordPress Theme & Plugin i18n & L10n

Date TranslationWordPress provides date_i18n() to translate dates.Example:

<?php echo date_i18n(get_option('date_format') ,strtotime("11/15-1976"));?>http://codex.wordpress.org/Function_Reference/date_i18nBangla date translation http://tareq.wedevs.com/2010/09/translate-wordpress-date-time-comment-number-to-bangla-digit/

Page 16: WordPress Theme & Plugin i18n & L10n

Sample Theme L10n

Page 17: WordPress Theme & Plugin i18n & L10n

Sample Plugin L10n

Page 18: WordPress Theme & Plugin i18n & L10n

Translation Tools

•Poedit•GlotPress•GNU gettextAmong them, Poedit is widely used for WordPress I18n & l10n. So we will be focused on Poedit translation method.

Page 19: WordPress Theme & Plugin i18n & L10n

WordPress Translation in Poedit

Page 20: WordPress Theme & Plugin i18n & L10n

WordPress Translation in PoeditGo to File>New Catalog…

Page 21: WordPress Theme & Plugin i18n & L10n

WordPress Translation in Poedit

Page 22: WordPress Theme & Plugin i18n & L10n

WordPress Translation in Poedit

Page 23: WordPress Theme & Plugin i18n & L10n

WordPress Translation in PoeditClick ok, if you add the path correctly, you should see something like this

Page 24: WordPress Theme & Plugin i18n & L10n

WordPress Translation in PoeditSave the file as .pot ( not default.po)For theme ex: languages/test-theme.potFor plugin ex: languages/test-plugin.pot

Then in Poedit, go to File>New catalog from POT file… you will see your template for translation

Page 25: WordPress Theme & Plugin i18n & L10n

WordPress Translation in PoeditSome thing like this

Page 26: WordPress Theme & Plugin i18n & L10n

WordPress Translation in PoeditSee the Source text boxAdd your translated phrase inTranslation box

Page 27: WordPress Theme & Plugin i18n & L10n

WordPress Translation in PoeditWhen you are done adding your translated phrases, save the file in the WordPress

theme as en_US.po or your language code .po file like bn_BD.po

For plugin must save your-plugin-en_US.po Ex: test-plugin-bn_BD.po

When you save the .po file a .mo file will be generated.

Page 28: WordPress Theme & Plugin i18n & L10n

Configuring WordPressOpen wp-config.php file search for define('WPLANG’Add your lanuage code and save it

Page 29: WordPress Theme & Plugin i18n & L10n

WordPress i18n & L10n

Page 30: WordPress Theme & Plugin i18n & L10n

WordPress i18n & L10n

Congratulation!You have successfully finished your

WordPress Theme & Plugin Translations.

Page 31: WordPress Theme & Plugin i18n & L10n

WordPress i18n & L10nReference:http://codex.wordpress.org/Translating_WordPresshttp://wp.smashingmagazine.com/2011/12/29/internationalizing-localizing-wordpress-theme/

Page 32: WordPress Theme & Plugin i18n & L10n

Thank youMd. Sajedul Haque RomiFounder & CEOCodeBANGLAEmail: [email protected]