SlideShare a Scribd company logo
1 of 28
Download to read offline
WordPress
- Internationalization
- Localization
- Multilingual
(April 16, 2016)
Do
It
Right
Me and Company
Dat Hoang
Community & Support at OnTheGoSystems
Image credit: Denise VanDeCruze - OnTheGoSystems.
Me and Company
OnTheGoSystems
wp-types.comwpml.org icanlocalize.com
Main Content
● What are they?
● Internationalization
● Localization
● Multilingual (with WPML)
What are They?
Internationalization (i18n) is the process of
developing your theme/plugin language, so it can
easily be translated into other languages.
Localization (l10n) describes the subsequent
process of translating an internationalized
theme/plugin.
Multilingual means there are more than one
language in sites.
Internationalization (1)
Wrong
echo 'WordPress is the best!';
Right (use gettext functions)
echo __( 'WordPress is the best!', 'my-text-domain' );
Wrong (don’t be clever!)
__( 'Translate me.' , $my_text_domain );
Right (no variable, constant… for text domains)
__( 'Translate me.' , 'my-text-domain' );
Internationalization (2)
Basic functions:
● __(), _e()
● _x(), _ex() - Disambiguation by context
_x( 'Post', 'noun', 'my-text-domain' );
_x( 'Post', 'verb', 'my-text-domain' );
● _n(), _nx() - Plural/singular nouns
sprintf(
_n( '%s star', '%s stars', $rating, 'text-domain' ),
$rating );
● _n_noop(), _nx_noop(), translate_nooped_plural()
Internationalization (3) - JavaScript
function add_my_script() {
// Register the script
wp_register_script( 'some_handle',
get_template_directory_uri() . '/custom.js' );
// Localize the script with new data
$translation_array = array (
'some_string' => __( 'Some string to translate',
'text-domain' ),
'a_value' => '10'
);
wp_localize_script( 'some_handle', 'object_name',
$translation_array );
// Enqueued script with localized data.
wp_enqueue_script( 'some_handle' );
}
add_action( 'wp_enqueue_scripts', 'add_my_script' );
Internationalization (4) - JavaScript
custom.js
<script>
// alerts 'Some string to translate'
alert( object_name.some_string);
</script>
HTML:
<script type='text/javascript'>
/* <![CDATA[ */
var object_name = {"some_string":"Some string to
translate","a_value":"10"};
/* ]]> */
</script>
Internationalization (5)
Date and number functions:
- number_format_i18n()
- date_i18n()
Escape functions:
esc_html__()
esc_html_e()
esc_html_x()
esc_attr__()
esc_attr_e()
esc_attr_x()
Internationalization (6)
Load .mo files:
function my_plugin_load_plugin_textdomain() {
load_plugin_textdomain( 'text-domain', FALSE,
basename( dirname( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded',
'my_plugin_load_plugin_textdomain' );
Last but not least: original language = ENGLISH
Localization (1)
File Types
● POT (Portable Object Template)
#: plugin-name.php:123
msgid "Page Title"
msgstr ""
● PO (Portable Object)
● MO (Machine Object)
Localization (2)
Generates POT / PO / MO files
● Plugin Repository Admin Tools
● WordPress i18n tools
● Grunt
● WPML String Translation
● MO files:
○ msgfmt -o filename.mo filename.po
○ Online tools
○ grunt-po2mo
Localization (3)
Translate
● Poedit
● Plugins:
○ Loco Translate
○ WPML String Translation
● Google Translator Toolkit
● translate.wordpress.org
Localization (4)
Feel localization!
● Settings > General > Site language
● Put the correct folders
○ wp-content/languages/plugins/text-domain-vi_VN.mo
○ wp-content/plugins/my-plugin/languages/text-domain-vi_VN.mo
Localization (5)
Contribute: Everyone can help
● https://wpvi.wordpress.com/
● https://translate.wordpress.
org/locale/vi/default/wp/dev
● https://translate.wordpress.org/projects/wp-
plugins/woocommerce
Multilingual (with WPML)
● Gettext strings
● Options (saved in wp_options)
● Content (posts, categories, menus)
● WooCommerce
● Common issues
Multilingual (1)
Gettext strings
● Important: theme and plugins are ready for
internalization/localization.
● Use .mo files
● Use WPML > String Translation
Multilingual (2)
Options - translate in WPML String Translation
● Automatically: wpml-config.xml
● Manually: adding strings in wp-admin
Multilingual (3)
Content - posts
Multilingual (4)
Content - categories
Multilingual (5)
Content - menus
Multilingual (6)
WooCommerce - install WCML
Multilingual (7)
Common issues:
● Translate custom strings
- wpml_register_single_string
- wpml_translate_single_string
● wp_query($args) or get_posts($args) doesn’t
filter out correct posts IDs for the current
language
- add "suppress_filters=0" to arguments.
Multilingual (8)
Common issues:
● A custom post is different in a second
language
$post = get_post(
apply_filters( 'wpml_object_id', $post->ID, 'cpt' ) );
● A custom taxonomy ID is different in a second
language
$tax_id =
apply_filters( 'wpml_object_id', $tax_id, 'tax' );
Discussion
Image credit: http://sweetclipart.com/diverse-people-raising-hands-968
Useful Links
1. https://developer.wordpress.
org/plugins/internationalization/localization
2. https://developer.wordpress.
org/plugin/internationalization/how-to-internationalize-your-
plugin
3. https://docs.woothemes.com/document/woocommerce-
localization/
4. https://wpml.org/documentation/related-
projects/woocommerce-multilingual/
5. https://wpml.org/documentation/support/debugging-theme-
compatibility/
6. https://wpml.org/documentation/translating-your-contents/
Big Thanks!
Dat Hoang
Community & Support
E: dat.h@icanlocalize.com
W: wpml.org | wp-types.com | icanlocalize.com
Saigon, April 16, 2016

More Related Content

What's hot

Profiling PHP & Javascript
Profiling PHP & JavascriptProfiling PHP & Javascript
Profiling PHP & Javascript
Dave Ross
 

What's hot (18)

Resume
ResumeResume
Resume
 
Web Application Intro for RailsGirls Berlin May 2013
Web Application Intro for RailsGirls Berlin May 2013Web Application Intro for RailsGirls Berlin May 2013
Web Application Intro for RailsGirls Berlin May 2013
 
Going Global - WordPress Multilingual
Going Global - WordPress MultilingualGoing Global - WordPress Multilingual
Going Global - WordPress Multilingual
 
CVsnig (1)
CVsnig (1)CVsnig (1)
CVsnig (1)
 
Profiling PHP & Javascript
Profiling PHP & JavascriptProfiling PHP & Javascript
Profiling PHP & Javascript
 
Php website developers massachusetts
Php website developers massachusettsPhp website developers massachusetts
Php website developers massachusetts
 
Bentobox exercise
Bentobox exerciseBentobox exercise
Bentobox exercise
 
Multiple countries & multilingual e-commerce platforms using Drupal
Multiple countries & multilingual e-commerce platforms using DrupalMultiple countries & multilingual e-commerce platforms using Drupal
Multiple countries & multilingual e-commerce platforms using Drupal
 
wcdk - Making your WordPress Multilingual
wcdk - Making your WordPress Multilingualwcdk - Making your WordPress Multilingual
wcdk - Making your WordPress Multilingual
 
Using Drupal to publish Web, Print and Mobile from same CMS
Using Drupal to publish Web, Print and Mobile from same CMSUsing Drupal to publish Web, Print and Mobile from same CMS
Using Drupal to publish Web, Print and Mobile from same CMS
 
Java script
Java scriptJava script
Java script
 
Learn web development: Front-end vs Back-end development
Learn web development: Front-end vs Back-end developmentLearn web development: Front-end vs Back-end development
Learn web development: Front-end vs Back-end development
 
Setting up a local web server for WordPress
Setting up a local web server for WordPressSetting up a local web server for WordPress
Setting up a local web server for WordPress
 
Ppt full stack developer
Ppt full stack developerPpt full stack developer
Ppt full stack developer
 
Basic introduction of PHP
Basic introduction of PHPBasic introduction of PHP
Basic introduction of PHP
 
Web Design class( HTML-01)
Web Design class( HTML-01)Web Design class( HTML-01)
Web Design class( HTML-01)
 
Is php dying?
Is php dying?Is php dying?
Is php dying?
 
Getting WordPress to speak your langauge
Getting WordPress to speak your langaugeGetting WordPress to speak your langauge
Getting WordPress to speak your langauge
 

Similar to WordPress Internationalization, Localization and Multilingual - Do It Right

Sanjip Shah: Internationalizing and Localizing WordPress Themes
Sanjip Shah: Internationalizing and Localizing  WordPress ThemesSanjip Shah: Internationalizing and Localizing  WordPress Themes
Sanjip Shah: Internationalizing and Localizing WordPress Themes
wpnepal
 

Similar to WordPress Internationalization, Localization and Multilingual - Do It Right (20)

Multilingual WordPress
Multilingual WordPressMultilingual WordPress
Multilingual WordPress
 
WordPress Internationalization and Localization - WordPress Translation Day 3...
WordPress Internationalization and Localization - WordPress Translation Day 3...WordPress Internationalization and Localization - WordPress Translation Day 3...
WordPress Internationalization and Localization - WordPress Translation Day 3...
 
Multilingual WordPress (WordCamp Toronto 2014)
Multilingual WordPress (WordCamp Toronto 2014)Multilingual WordPress (WordCamp Toronto 2014)
Multilingual WordPress (WordCamp Toronto 2014)
 
WCRI 2015 I18N L10N
WCRI 2015 I18N L10NWCRI 2015 I18N L10N
WCRI 2015 I18N L10N
 
i18n for Plugin and Theme Developers, WordCamp Milano 2016
i18n for Plugin and Theme Developers, WordCamp Milano 2016i18n for Plugin and Theme Developers, WordCamp Milano 2016
i18n for Plugin and Theme Developers, WordCamp Milano 2016
 
10 common mistakes WordPress developers make when building multilingual sites
10 common mistakes WordPress developers make when building multilingual sites10 common mistakes WordPress developers make when building multilingual sites
10 common mistakes WordPress developers make when building multilingual sites
 
i18n for Plugin and Theme Developers, Global WordPress Translation Day 3
i18n for Plugin and Theme Developers, Global WordPress Translation Day 3i18n for Plugin and Theme Developers, Global WordPress Translation Day 3
i18n for Plugin and Theme Developers, Global WordPress Translation Day 3
 
Drupalcamp Atlanta 2010 Internationalization Presentation
Drupalcamp Atlanta 2010 Internationalization PresentationDrupalcamp Atlanta 2010 Internationalization Presentation
Drupalcamp Atlanta 2010 Internationalization Presentation
 
The *on-going* future of Perl5
The *on-going* future of Perl5The *on-going* future of Perl5
The *on-going* future of Perl5
 
MAKE YOUR THEMES AND PLUGINS READY FOR TRANSLATION
MAKE YOUR THEMES AND PLUGINS READY FOR TRANSLATIONMAKE YOUR THEMES AND PLUGINS READY FOR TRANSLATION
MAKE YOUR THEMES AND PLUGINS READY FOR TRANSLATION
 
SynPhony2014
SynPhony2014SynPhony2014
SynPhony2014
 
PHP BASIC PRESENTATION
PHP BASIC PRESENTATIONPHP BASIC PRESENTATION
PHP BASIC PRESENTATION
 
Multi-Language Websites in ExpressionEngine
Multi-Language Websites in ExpressionEngineMulti-Language Websites in ExpressionEngine
Multi-Language Websites in ExpressionEngine
 
WordPress News and #SaigonWordPress 2015 - Saigon WordPress - Jan 17, 2015
WordPress News and #SaigonWordPress 2015  - Saigon WordPress - Jan 17, 2015WordPress News and #SaigonWordPress 2015  - Saigon WordPress - Jan 17, 2015
WordPress News and #SaigonWordPress 2015 - Saigon WordPress - Jan 17, 2015
 
Introduction to Plone
Introduction to PloneIntroduction to Plone
Introduction to Plone
 
Introduction to PHP (SDPHP)
Introduction to PHP   (SDPHP)Introduction to PHP   (SDPHP)
Introduction to PHP (SDPHP)
 
Wordpress Security 101
Wordpress Security 101Wordpress Security 101
Wordpress Security 101
 
Internationalizing and localizing wordpress theme
Internationalizing and localizing  wordpress themeInternationalizing and localizing  wordpress theme
Internationalizing and localizing wordpress theme
 
Sanjip Shah: Internationalizing and Localizing WordPress Themes
Sanjip Shah: Internationalizing and Localizing  WordPress ThemesSanjip Shah: Internationalizing and Localizing  WordPress Themes
Sanjip Shah: Internationalizing and Localizing WordPress Themes
 
Writing Multilingual Plugins and Themes - WCMIA 2016
Writing Multilingual Plugins and Themes - WCMIA 2016Writing Multilingual Plugins and Themes - WCMIA 2016
Writing Multilingual Plugins and Themes - WCMIA 2016
 

More from Dat Hoang

More from Dat Hoang (6)

Gaining Customer Loyalty through Support - A Case Study on WPML Team
Gaining Customer Loyalty through Support - A Case Study on WPML TeamGaining Customer Loyalty through Support - A Case Study on WPML Team
Gaining Customer Loyalty through Support - A Case Study on WPML Team
 
WordPress Fresh News - Saigon WordPress - Nov 29, 2014
WordPress Fresh News - Saigon WordPress - Nov 29, 2014WordPress Fresh News - Saigon WordPress - Nov 29, 2014
WordPress Fresh News - Saigon WordPress - Nov 29, 2014
 
Gaining Customer Loyalty Through Support - A Case Study on WPML Team
Gaining Customer Loyalty Through Support - A Case Study on WPML TeamGaining Customer Loyalty Through Support - A Case Study on WPML Team
Gaining Customer Loyalty Through Support - A Case Study on WPML Team
 
WordPress and Opportunities for Students
WordPress and Opportunities for StudentsWordPress and Opportunities for Students
WordPress and Opportunities for Students
 
Scaling WordPress - Project Lana WordPress Team
Scaling WordPress - Project Lana WordPress TeamScaling WordPress - Project Lana WordPress Team
Scaling WordPress - Project Lana WordPress Team
 
Introduction to WooCommerce
Introduction to WooCommerce Introduction to WooCommerce
Introduction to WooCommerce
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
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
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 

WordPress Internationalization, Localization and Multilingual - Do It Right

  • 1. WordPress - Internationalization - Localization - Multilingual (April 16, 2016) Do It Right
  • 2. Me and Company Dat Hoang Community & Support at OnTheGoSystems Image credit: Denise VanDeCruze - OnTheGoSystems.
  • 4. Main Content ● What are they? ● Internationalization ● Localization ● Multilingual (with WPML)
  • 5. What are They? Internationalization (i18n) is the process of developing your theme/plugin language, so it can easily be translated into other languages. Localization (l10n) describes the subsequent process of translating an internationalized theme/plugin. Multilingual means there are more than one language in sites.
  • 6. Internationalization (1) Wrong echo 'WordPress is the best!'; Right (use gettext functions) echo __( 'WordPress is the best!', 'my-text-domain' ); Wrong (don’t be clever!) __( 'Translate me.' , $my_text_domain ); Right (no variable, constant… for text domains) __( 'Translate me.' , 'my-text-domain' );
  • 7. Internationalization (2) Basic functions: ● __(), _e() ● _x(), _ex() - Disambiguation by context _x( 'Post', 'noun', 'my-text-domain' ); _x( 'Post', 'verb', 'my-text-domain' ); ● _n(), _nx() - Plural/singular nouns sprintf( _n( '%s star', '%s stars', $rating, 'text-domain' ), $rating ); ● _n_noop(), _nx_noop(), translate_nooped_plural()
  • 8. Internationalization (3) - JavaScript function add_my_script() { // Register the script wp_register_script( 'some_handle', get_template_directory_uri() . '/custom.js' ); // Localize the script with new data $translation_array = array ( 'some_string' => __( 'Some string to translate', 'text-domain' ), 'a_value' => '10' ); wp_localize_script( 'some_handle', 'object_name', $translation_array ); // Enqueued script with localized data. wp_enqueue_script( 'some_handle' ); } add_action( 'wp_enqueue_scripts', 'add_my_script' );
  • 9. Internationalization (4) - JavaScript custom.js <script> // alerts 'Some string to translate' alert( object_name.some_string); </script> HTML: <script type='text/javascript'> /* <![CDATA[ */ var object_name = {"some_string":"Some string to translate","a_value":"10"}; /* ]]> */ </script>
  • 10. Internationalization (5) Date and number functions: - number_format_i18n() - date_i18n() Escape functions: esc_html__() esc_html_e() esc_html_x() esc_attr__() esc_attr_e() esc_attr_x()
  • 11. Internationalization (6) Load .mo files: function my_plugin_load_plugin_textdomain() { load_plugin_textdomain( 'text-domain', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' ); } add_action( 'plugins_loaded', 'my_plugin_load_plugin_textdomain' ); Last but not least: original language = ENGLISH
  • 12. Localization (1) File Types ● POT (Portable Object Template) #: plugin-name.php:123 msgid "Page Title" msgstr "" ● PO (Portable Object) ● MO (Machine Object)
  • 13. Localization (2) Generates POT / PO / MO files ● Plugin Repository Admin Tools ● WordPress i18n tools ● Grunt ● WPML String Translation ● MO files: ○ msgfmt -o filename.mo filename.po ○ Online tools ○ grunt-po2mo
  • 14. Localization (3) Translate ● Poedit ● Plugins: ○ Loco Translate ○ WPML String Translation ● Google Translator Toolkit ● translate.wordpress.org
  • 15. Localization (4) Feel localization! ● Settings > General > Site language ● Put the correct folders ○ wp-content/languages/plugins/text-domain-vi_VN.mo ○ wp-content/plugins/my-plugin/languages/text-domain-vi_VN.mo
  • 16. Localization (5) Contribute: Everyone can help ● https://wpvi.wordpress.com/ ● https://translate.wordpress. org/locale/vi/default/wp/dev ● https://translate.wordpress.org/projects/wp- plugins/woocommerce
  • 17. Multilingual (with WPML) ● Gettext strings ● Options (saved in wp_options) ● Content (posts, categories, menus) ● WooCommerce ● Common issues
  • 18. Multilingual (1) Gettext strings ● Important: theme and plugins are ready for internalization/localization. ● Use .mo files ● Use WPML > String Translation
  • 19. Multilingual (2) Options - translate in WPML String Translation ● Automatically: wpml-config.xml ● Manually: adding strings in wp-admin
  • 24. Multilingual (7) Common issues: ● Translate custom strings - wpml_register_single_string - wpml_translate_single_string ● wp_query($args) or get_posts($args) doesn’t filter out correct posts IDs for the current language - add "suppress_filters=0" to arguments.
  • 25. Multilingual (8) Common issues: ● A custom post is different in a second language $post = get_post( apply_filters( 'wpml_object_id', $post->ID, 'cpt' ) ); ● A custom taxonomy ID is different in a second language $tax_id = apply_filters( 'wpml_object_id', $tax_id, 'tax' );
  • 27. Useful Links 1. https://developer.wordpress. org/plugins/internationalization/localization 2. https://developer.wordpress. org/plugin/internationalization/how-to-internationalize-your- plugin 3. https://docs.woothemes.com/document/woocommerce- localization/ 4. https://wpml.org/documentation/related- projects/woocommerce-multilingual/ 5. https://wpml.org/documentation/support/debugging-theme- compatibility/ 6. https://wpml.org/documentation/translating-your-contents/
  • 28. Big Thanks! Dat Hoang Community & Support E: dat.h@icanlocalize.com W: wpml.org | wp-types.com | icanlocalize.com Saigon, April 16, 2016