SlideShare a Scribd company logo
1 of 30
Download to read offline
Translating
WordPress
Relatore
Ing. Andrea Grillo
Roma - 13/14 Giugno 2015
@GrilloAndrea info@andreagrillo.it andrea-grillo
Website: andreagrillo.it
MI PRESENTO
•	Laureato in Ingegneria Informatica
•	Web Engineer
•	Trainer & Senior Developer @ Your Inspiration
PROBLEMA:
TRADURRE SITI WORDPRESS
•	Problemi legati al business
•	Problemi legati al cliente
TRADURRE WORDPRESS:
PERCHÉ?
•	Mercato globale
•	Aumentare il parco
clienti
•	Ampliare la gamma dei
servizi offerti
•	Offrire un’interfaccia
facile da usare
MODIFICA
DIRETTA
•	Come posso tradurre un tema
o un plugin per WordPress ?
•	Modificare il codice PHP.
Traduzione
Update
del tema/plugin
Perdita
delle stringhe
tradotte
MODIFICA
DIRETTA
PERCHÉ
EVITARLA…
•	Update del prodotto
•	Translation Ready e testo hard coded
I FILE DI LINGUA:
.PO - .MO
•	Prodotto software «translation-ready»
Directory «languages» (o lang)
File con estensione .po e .mo
•	WordPress usa i file .po e .mo
per tradurre le stringhe
I FILE «CATALOGO»:
.POT
•	Non fanno riferimento a nessuna
lingua in particolare
•	Pre-configurati
•	Forniti dallo sviluppatore del software
come base di partenza
STRUTTURA
DI UN FILE
.PO/.POT
msgid “”
msgstr “”
“Project-Id-Version: YITH WooCommerce Ajax Searchn”
“POT-Creation-Date: 2015-05-19 09:10+0100n”
“PO-Revision-Date: 2015-05-19 09:10+0100n”
“Last-Tra nslator: n”
“Language-Team: Your Inspiration Themes <plugins@yithemes.com>n”
“Language: enn”
“MIME-Version: 1.0n”
“Content-Type: text/plain; charset=UTF-8n”
“Content-Transfer-Encoding: 8bitn”
“X-Generator: Poedit 1.7.6n”
“X-Poedit-KeywordsList: __;_e;_xn”
“X-Poedit-Basepath: ./n”
“Plural-Forms: nplurals=2; plural=(n != 1);n”
“X-Poedit-SearchPath-0: ..n”
“X-Poedit-SearchPathExcluded-0: ../plugin-fwn”
STRINGHE NEL FILE
.PO/.POT
•	File di riferimento
•	Stringa nella lingua originale
•	Stringa tradotta
#: ../plugin-options/output-options.php:33
msgid “Hide thumbnail”
msgstr “Nascondi immagine”
NOME DEL FILE
.PO/.MO
•	Convenzione sul nome dei file .po/.mo
textdomain-lingua_NAZIONE.po
CODICI
ISO
Attenzione: lingua e nazione
vanno inseriti nel formato ISO.
•	Lingua: ISO 639-2 alpha 2
•	Nazioni: ISO 3166-1 alpha 2
yit-it_IT.po
Per approfondimenti:
http://it.wikipedia.org/wiki/ISO_3166-1
http://it.wikipedia.org/wiki/ISO_639-2
•	Inglese: en_EN  en_GB
•	Italiano: it_IT (Italia) - it_CH (Svizzera Italiana)
•	Portoghese: pr_BR (Brasile) - pr_PT (Portogallo)
Per approfondimenti:
http://it.wikipedia.org/wiki/ISO_3166-1
http://it.wikipedia.org/wiki/ISO_639-2
LA LOCALIZZAZIONE
•	WordPress mette a disposizione un set di
strumenti per le traduzioni
•	Funzioni senza contesto
•	Funzioni con contesto
LE FUNZIONI SENZA
CONTESTO	
__( $string, $domain )
_e( $string, $domain )
_n( $singular, $plural, $number, $domain )
•	La funzione translate( $text, $domain )
IL CONTESTO
•	Def.: Il CONTESTO può essere definito come il
quadro generale di una determinata situazione
specifica.
•	Stringhe simili
•	Contesti diversi
LE FUNZIONI CON
CONTESTO
_x( $text, $context, $domain )
_ex( $text, $context, $domain )
_nx( $singular, $plural, $number, $context,
$domain)
ESEMPI DI CONTESTO
_x( ‘Box’, ‘theatre: private stall’, ‘domain’ )
_x( ‘Box’, ‘UK slang: TV’, ‘domain’ )
_x( ‘Box’, ‘automotive: gearbox’, ‘domain’ )
_x( ‘Box’, ‘sport: be a boxer’, ‘domain’ )
CREARE UN FILE
.PO/.POT
•	Le utility GNU gettext
l’internazionalizzazione (i18n) e localizzazione del software
•	Utilizzo diretto complesso
•	Tool alternativi
(Approfondimenti: http://it.wikipedia.org/wiki/Gettext)
WORDPRESS
CONSIGLIA…
•	GNU gettext
•	GlotPress
•	Launchpad
•	Pootle
•	Kbabel
•	Poedit
(Approfondimenti: https://make.wordpress.org/polyglots/handbook/tools/)
POEDIT
•	https://poedit.net/download
•	Gettext translation editor
•	Versione corrente 1.8.1
•	Multi piattaforma
(Windows, Linux e Mac)
•	Workshop
POEDIT:
WORKSHOP
Siti multilingue:
Cosa sono?
COME POSSO REALIZZARE
UN SITO MULTILINGUA?
•	Installazioni multiple
•	WordPress Multisite
•	WordPress Multilingual
WORDPRESS MULTILINGUAL:
WPML•	Cos’è WPML?
•	Come vengono gestiti i contenuti in un
sito multilingue
•	Sito web: http://www.wpml.org
WPMLVANTAGGI
•	Facilità di gestione dei contenuti
•	Mantenimento piattaforma
•	Ottimo supporto
•	Plugin Premium
WPMLSVANTAGGI
•	Configurazione non proprio immediata
•	Rendere compatibili temi e plugin
WORKSHOP
RICAPITOLIAMO
•	Tradurre WordPress: Perché?
•	WordPress e la localizzazione
Come viene gestita
Dove vengono salvati i file localizzati
Come tradurre un tema/plugin
•	Differenza tra traduzione di un tema/plugin e sito
multilingue
Cos’è?
A cosa serve?
Realizzare un sito multilingue:
Installazioni separate
WordPress Multisite
WordPress Multilingue
DOMANDE
&
RISPOSTE

More Related Content

Similar to Grillo

DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptSinergia Totale
 
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore RomeoHTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeomarcocasario
 
WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15Andrea Cardinali
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScriptSinergia Totale
 
Groovy e Domain Specific Languages
Groovy e Domain Specific LanguagesGroovy e Domain Specific Languages
Groovy e Domain Specific LanguagesTiziano Lattisi
 
Introduzione alla localizzazione web
Introduzione alla localizzazione webIntroduzione alla localizzazione web
Introduzione alla localizzazione webQabiria
 
Scala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perchéScala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perchéEdmondo Porcu
 
Codemotion 2012 creare un proprio linguaggio di programmazione
Codemotion 2012 creare un proprio linguaggio di programmazioneCodemotion 2012 creare un proprio linguaggio di programmazione
Codemotion 2012 creare un proprio linguaggio di programmazioneGabriele Guizzardi
 
Database project alla riscossa
Database project alla riscossaDatabase project alla riscossa
Database project alla riscossaGian Maria Ricci
 
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018Marco Chiesi
 
Seminario team working - 21-1-2015
Seminario team working - 21-1-2015Seminario team working - 21-1-2015
Seminario team working - 21-1-2015Alessandro Loffredo
 
May 2010 - Hibernate search
May 2010 - Hibernate searchMay 2010 - Hibernate search
May 2010 - Hibernate searchJBug Italy
 
[Luca Cracco] - DevOps: strumenti di automazione per Drupal8
[Luca Cracco] - DevOps: strumenti di automazione per Drupal8[Luca Cracco] - DevOps: strumenti di automazione per Drupal8
[Luca Cracco] - DevOps: strumenti di automazione per Drupal8Wellnet srl
 
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8DrupalDay
 
I 1000 utilizzi di WordPress
I 1000 utilizzi di WordPressI 1000 utilizzi di WordPress
I 1000 utilizzi di WordPressMarco De Sangro
 
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxProgettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxGiovanni Cappellini
 
Design Patterns - Enterprise Patterns (part 2)
Design Patterns - Enterprise Patterns (part 2)Design Patterns - Enterprise Patterns (part 2)
Design Patterns - Enterprise Patterns (part 2)Fabio Armani
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDiego Giorgini
 
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
Laboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H PLaboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H P
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H Pguestbe916c
 

Similar to Grillo (20)

DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
 
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore RomeoHTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
 
WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScript
 
Groovy e Domain Specific Languages
Groovy e Domain Specific LanguagesGroovy e Domain Specific Languages
Groovy e Domain Specific Languages
 
Introduzione alla localizzazione web
Introduzione alla localizzazione webIntroduzione alla localizzazione web
Introduzione alla localizzazione web
 
Scala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perchéScala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perché
 
Codemotion 2012 creare un proprio linguaggio di programmazione
Codemotion 2012 creare un proprio linguaggio di programmazioneCodemotion 2012 creare un proprio linguaggio di programmazione
Codemotion 2012 creare un proprio linguaggio di programmazione
 
Database project alla riscossa
Database project alla riscossaDatabase project alla riscossa
Database project alla riscossa
 
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
 
Seminario team working - 21-1-2015
Seminario team working - 21-1-2015Seminario team working - 21-1-2015
Seminario team working - 21-1-2015
 
Hibernatesearch
HibernatesearchHibernatesearch
Hibernatesearch
 
May 2010 - Hibernate search
May 2010 - Hibernate searchMay 2010 - Hibernate search
May 2010 - Hibernate search
 
[Luca Cracco] - DevOps: strumenti di automazione per Drupal8
[Luca Cracco] - DevOps: strumenti di automazione per Drupal8[Luca Cracco] - DevOps: strumenti di automazione per Drupal8
[Luca Cracco] - DevOps: strumenti di automazione per Drupal8
 
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
 
I 1000 utilizzi di WordPress
I 1000 utilizzi di WordPressI 1000 utilizzi di WordPress
I 1000 utilizzi di WordPress
 
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxProgettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
 
Design Patterns - Enterprise Patterns (part 2)
Design Patterns - Enterprise Patterns (part 2)Design Patterns - Enterprise Patterns (part 2)
Design Patterns - Enterprise Patterns (part 2)
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie Google
 
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
Laboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H PLaboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H P
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
 

Grillo