46
THEME & PLUGIN LOCALISATION @ThemeBoy

Theme & Plugin Localisation

Embed Size (px)

DESCRIPTION

Brian Miyaji discusses the advantages of localizing code for WordPress, things to consider when developing software for a global audience, and how to save time for developers and translators. Images: "tokyo" by Osamu Kaneko, used under CC BY 2.0 https://www.flickr.com/photos/osamukaneko/9237609761/ "Confused" by Mika Hiltunen, used under CC BY 2.0 https://www.flickr.com/photos/saaste/13150099564/ “Union Jack Teapot" by The Hamster Factor, used under CC BY 2.0 / Desaturated from original https://www.flickr.com/photos/disaster_area/8424925130/ "Paris" by Moyan Brenn, used under CC BY 2.0 / Desaturated from original https://www.flickr.com/photos/aigle_dore/5238554034/ "Chinese Calligraphy" by Jiwei Han, used under CC BY 2.0 https://www.flickr.com/photos/p_h/2199524538 "Oak and Ash" by Let Ideas Compete, used under CC BY 2.0 https://www.flickr.com/photos/question_everything/4107359250/ "Butterfly" by Auntie P, used under CC BY 2.0 / Desaturated from original https://www.flickr.com/photos/auntiep/1170669/ "Boy and Girl Hummel Figurines" by Jason Pratt, used under CC BY 2.0 / Desaturated from original https://www.flickr.com/photos/jasonpratt/2347428960/ "Arabic Writing" by Pietro Izzo, used under CC BY 2.0 / Desaturated from original https://www.flickr.com/photos/pietroizzo/4527056064/ "WordPress Moleskine notebook" by Nikolay Bachiyski, used under CC BY 2.0 / Desaturated from original https://www.flickr.com/photos/nbachiyski/2186228674/

Citation preview

Page 1: Theme & Plugin Localisation

THEME & PLUGIN

LOCALISATION

@ThemeBoy

Page 2: Theme & Plugin Localisation

¿POR QUÉ?

Page 3: Theme & Plugin Localisation

56% OF WEBSITES ARE IN ENGLISH

Page 4: Theme & Plugin Localisation

56% OF WEBSITES ARE IN ENGLISH

27% OF INTERNET USERS SPEAK ENGLISH

Page 5: Theme & Plugin Localisation

JE M'EN FOUS

Page 6: Theme & Plugin Localisation

CAN’T READ =

WON’T BUY

Page 7: Theme & Plugin Localisation

LANGUAGES ARE ALL

DIFFERENT

Page 8: Theme & Plugin Localisation

WORD LENGTH

Page 9: Theme & Plugin Localisation

WORD LENGTHBUTTERFLYENGLISH:

Page 10: Theme & Plugin Localisation

WORD LENGTHBUTTERFLY 蝶

ENGLISH: CHINESE:

Page 11: Theme & Plugin Localisation

WORD LENGTHBUTTERFLY 蝶 SCHMETTERLING

ENGLISH: CHINESE: GERMAN:

Page 12: Theme & Plugin Localisation

WORD LENGTHSOLUTION: CSS

Page 13: Theme & Plugin Localisation

GENDER

Page 14: Theme & Plugin Localisation

GENDERADD NEW EVENT:

ДОДАДИ НОВ НАСТАН !

!

!

Page 15: Theme & Plugin Localisation

GENDERADD NEW EVENT:

ДОДАДИ НОВ НАСТАН ADD NEW TEAM:

ДОДАДИ НОВА ЕКИПА !

Page 16: Theme & Plugin Localisation

GENDERADD NEW EVENT:

ДОДАДИ НОВ НАСТАН ADD NEW TEAM:

ДОДАДИ НОВА ЕКИПА ADD NEW PERFORMANCE:

ДОДАИ НОВИ ПЕРФОРМАНСИИ

Page 17: Theme & Plugin Localisation

GENDERMORE EFFICIENT: printf( __( ‘Add New %s’ ), __( ‘Team’ ) );

MORE ACCURATE: _e( ‘Add New Team’ );

Page 18: Theme & Plugin Localisation

RTL

Page 19: Theme & Plugin Localisation

RTLDIRECTION OF

TEXT

Page 20: Theme & Plugin Localisation

RTLDIRECTION OF INFORMATION

Page 21: Theme & Plugin Localisation

RTL

SOLUTION: RTL STYLESHEET

Page 22: Theme & Plugin Localisation

RTLif ( is_rtl() ) {

wp_enqueue_style(

‘rtl-stylesheet’,

get_template_directory_uri() . ‘/rtl.css’

);

}

Page 23: Theme & Plugin Localisation

TRANSIFEX& POEDIT

Page 24: Theme & Plugin Localisation

SET IT UP<?php load_theme_textdomain( $domain, $path ) ?>

<?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?>

LOAD TRANSLATED STRINGS

define ('WPLANG', ‘pt_BR’); // To this

CHANGE WORDPRESS LANGUAGEdefine ('WPLANG', ‘’); // Change this

Page 25: Theme & Plugin Localisation

GETTEXT FUNCTIONS// Return translation

__( ‘Hello’, ‘my-text-domain’ );

// Echo translation

_e( ‘Hello’, ‘my-text-domain’ );

// Placeholders

printf( __( ‘Add New %s.’, 'my-text-domain' ), $label );

// Plurals

printf( _n( ‘One post’, ‘%s posts’, $count, ‘my-text-domain’ ), $count );

// Disambiguation by context

_x( ‘Post’, ‘noun’, ‘my-text-domain’ );

_x( ‘Post’, ‘verb’, ‘my-text-domain’ );

Page 26: Theme & Plugin Localisation

CREATE A POT FILE

POEDIT SOURCE KEYWORDS

__

_e

_n:1,2

_x:1,2

_ex:1,2

_nx:4c,1,2

esc_attr__

esc_attr_e

esc_attr_x:1,2c

esc_html__

esc_html_e

esc_html_x:1,2c

_n_noop:1,2

_nx_noop:3c,1,2

__ngettext_noop:1,2

Page 27: Theme & Plugin Localisation

USE CORE LOCALES

ALL TRANSLATIONS OF WP CORE: https://github.com/ThemeBoy/wp-languages

Page 28: Theme & Plugin Localisation

USE CORE STRINGS

ALL TRANSLATIONS OF WP CORE: https://github.com/ThemeBoy/wp-languages

Page 29: Theme & Plugin Localisation

# python get-pip.py

TRANSIFEX CLIENThttps://bootstrap.pypa.io/get-pip.py

GET PIP

# pip install transifex-client

INSTALL THE TRANSIFEX CLIENT

Page 30: Theme & Plugin Localisation

TRANSIFEX CLIENTINITIALISE & CONFIGURE$ cd my-plugin

$ tx init

$ nano .tx/config

[main]

host = https://www.transifex.com

![project_slug.resource_slug]

file_filter = languages/my-plugin—<lang>.po

source_file = languages/my-plugin.pot

source_lang = en_US

Page 31: Theme & Plugin Localisation

$ tx push -s

TRANSIFEX CLIENTPUSH SOURCE STRINGS

$ tx pull -l ja

PULL TRANSLATIONS FROM A LANGUAGE

$ tx pull

PULL ALL TRANSLATIONS

Page 32: Theme & Plugin Localisation

GNU GETTEXTDOWNLOAD & INSTALL

$ for file in $(find ./languages/ -name *.po -type f);

do msgfmt "$file" -o “${file%po}mo”;

done

http://www.gnu.org/software/gettext/

https://gist.github.com/mbillard/1647940

COMPILE ALL .PO FILES TO .MO

Page 33: Theme & Plugin Localisation

RECAP

Page 34: Theme & Plugin Localisation
Page 35: Theme & Plugin Localisation

BECAUSE

STATISTICS

Page 36: Theme & Plugin Localisation

BECAUSE

YOU CARE

Page 37: Theme & Plugin Localisation

BECAUSE

MONEY

Page 38: Theme & Plugin Localisation
Page 39: Theme & Plugin Localisation

THINK ABOUT

WORD LENGTH

Page 40: Theme & Plugin Localisation

THINK ABOUT

GENDER

Page 41: Theme & Plugin Localisation

THINK ABOUT

RTL

Page 42: Theme & Plugin Localisation
Page 43: Theme & Plugin Localisation

USE

POEDIT

Page 44: Theme & Plugin Localisation

USE

TRANSIFEX

Page 45: Theme & Plugin Localisation

USE

WP CORE

Page 46: Theme & Plugin Localisation

QUESTIONS@ThemeBoy