Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Intro to I18N in code
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Matthew Haines-Young
May 13, 2015
87
0
Share
Intro to I18N in code
Short introduction to writing code that can be easily translated in WordPress
Matthew Haines-Young
May 13, 2015
More Decks by Matthew Haines-Young
See All by Matthew Haines-Young
Building Sites with Gutenberg
mattheu
1
250
WordPress REST API - Writing Custom Endpoints
mattheu
0
95
Tips for writing secure code in WordPress
mattheu
1
140
Making shortcodes a piece of cake
mattheu
0
24k
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
9
850
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
WCS-LA-2024
lcolladotor
0
560
Testing 201, or: Great Expectations
jmmastey
46
8.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
390
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
270
How to Ace a Technical Interview
jacobian
281
24k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
220
Transcript
I18N Making your code translatable.
How translation it works. • Uses the gettext libraries. •
Wrap translatable strings in special gettext functions • Automated process - scans your code • Creates POT (Portable Objects Template) file with all translatable strings.
Note: Code is not executed when scanning for translatable strings.
Setup • Add the Text Domain to the theme/plugin header.
• This is a unique identifier. • Use dashes not underscores
__( 'string', 'text-domain' ) Basic translation function
_e( 'string', 'text-domain' ) Same, but outputs result.
Translate strings, not HTML
You cannot use variables in translatable strings. Translate placeholders and
use sprintf/printf
Don’t use variable for text domain.
Plurals • _n( $singular, $plural, $count, ‘text- domain’ ) •
1st param: the singular form of the string • 2nd param: the plural form of the string • 3rd param: the count.
_x( ‘string', 'context', 'text- domain' ); Disambiguation by context. Also
_ex. Same but outputs.
JavaScript • Use wp_localize_script to pass strings.
Resources • VIDEO: Rules for WordPress i18n - http://wordpress.tv/2014/02/26/ samuel-otto-wood-on-internationalization-plugins-and-themes-for-the-
whole-world/ • Otto on i18n - http://ottopress.com/2012/internationalization-youre- probably-doing-it-wrong/ • Plugin i18n - https://developer.wordpress.org/plugins/ internationalization/ • Theme i18n - https://developer.wordpress.org/themes/functionality/ internationalization/ • i18n quiz for developers: https://developer.wordpress.com/2015/04/23/ wordpress-developers-test-your-i18n-internationalization-knowledge/