Blog

Installare la traduzione italiana di Magento2

Lettura 6 minuti

In questo articolo illustrerò la procedura attuale (ma probabilmente non definitiva) per installare la traduzione italiana ufficiale per Magento2.

Prima di iniziare però vorrei soffermarmi un attimo per spiegare come si è arrivati alla traduzione italiana e quali saranno i probabili scenari futuri.

Per la nuova versione di Magento, il team di sviluppo ha deciso di affidarsi per la traduzione della piattaforma a Crowdin, un sistema di gestione per le traduzioni. In questo modo si è cercato di superare il precedente sistema integrato nel sito affidandosi a un sistema esterno di comprovata qualità e affidabilità.

Per alcuni mesi  la community ha quindi tradotto e votato le stringhe caricate su crowdin in tranquillità arrivando anche a completare l’intera traduzione al 100%.

In quello stesso periodo ci siamo accorti che l’esportazione di crowdin generava dei csv errati o con stringhe ripetute più volte. Per un problema di compatibilità tra l’export di crowdin e la nuova sintassi dei sorgenti principali di Magento la traduzione è stata bloccata e ricaricata dopo un paio di settimane, con una struttura leggermente diversa ma finalmente con l’esportazione corretta dal portale.

Il lavoro sulla piattaforma e sulla traduzione da parte del team di Magento non è tuttavia ancora concluso ed è al lavoro per automatizzare il processo di gestione e creazione dei pacchetti.

Ad ogni modo, nel momento in cui sto scrivendo questo articolo, ci sono diverse strade per installare la traduzione italiana e dipende principalmente da quale versione si intende utilizzare e quale procedura si preferisce.

 

Aggiungere la traduzione italiana con Magento installato tramite composer

Nel caso in cui aveste installato Magento e i moduli tramite composer, dovreste avere i file di Magento all’interno di vendor/magento.

Per installare la traduzione italiana è sufficiente aggiornare il composer.json di Magento2 con le seguenti righe:

"require": {
    ....
    "antoniocarboni/magento2-traduzione-italiana":"dev-master"
},
    "repositories": [
{
    "type": "vcs",
    "url":  "https://github.com/antoniocarboni/magento2-traduzione-italiana"
}

Infine lanciare questi comandi dal terminale:

composer update
bin/magento setup:static-content:deploy it_IT
bin/magento cache:clean

Installare la traduzione italiana con Magento installato manualmente

Per installare la traduzione manualmene scaricandola da crowdin è sufficiente recarsi a questo indirizzo:

https://crowdin.com/project/magento-2

scaricare l’intera traduzione e copiarla nella propria root di installazione di Magento.

Fatto questo, non vi resta che scaricare il pacchetto di registrazione della traduzione:

https://github.com/antoniocarboni/magento2-traduzione-italiana

e posizionarlo al percorso app/i18n/antoniocarboni/it_It/.

 

Installare la traduzione italiana creando un pacchetto personalizzato

Nel caso vogliate creare un pacchetto di traduzione vostro, partendo dalla versione più recente della traduzione su crowdin o di una versione differente, la procedura attualmente consigliata rimane quella di creare il proprio pacchetto come suggerito sulla doc ufficiale:

http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-i18n.html#config-cli-subcommands-xlate-example2

All’indirizzo seguente potete trovare i sorgenti di crowding nei vari branch :

http://107.170.242.99/download.php

scaricate il file csv di traduzione desiderato e posizionatelo nella root del progetto, dopodichè eseguite da terminale questo comando:

``

bin/magento i18n:pack --mode=replace -d source_it_IT.csv langpack it_IT

 

Nota: Il link è stato fornito dal team responsabile della traduzione su crowdin per facilitare il lavoro di import e di testing delle traduzioni. È probabile che in futuro venga sostituito da un sistema automatico di generazione dei pacchetti.

Una volta eseguito il comando verrà creata una cartella langpack nella root del progetto con tutti i file di traduzione suddivisi per moduli secondo le indicazioni memorizzate nel file csv di crowdin.

 

Copiate il contenuto di questa cartella nella root dell’installazione di Magento dopdichè lanciate il comando per fare il deploy dei file di lingua nella cartella dei contenuti statici di Magento2:

php bin/magento setup:static-content:deploy it_IT

Infine lanciate il comando per pulire la cache:

php bin/magento cache:clean
php bin/magento cache:flush

Configurare la lingua italiana

Non rimane altro da fare che configurare la lingua appena installata sia per il frontend che per il backend.

Per configurare la localizzazione italiana sul frontend, è necessario andare in Stores > Configuration > General > Locale Options > Locale > Italian (Italy)

Per quanto riguarda invece la configurazione della lingua sul backend, chi ha esperienza con Magento 1 si ricorderà che la scelta della lingua era stata posizionata nel footer. Su Magento 2 questa scelta è stata resa meno evidente e inserita in un pannello di configurazione apposito, quello dell’account amministratore. Per cambiare la lingua nel backend è quindi sufficiente cliccare in alto a destra sul menu dell’account amministrativo > Account Setting e cambiare l’opzione “Interface Locale”.

Se avete fatto tutto correttamente dovreste ora avere entrambe le aree correttamente tradotte.

Generare un dizionario di traduzione

I dizionari di traduzione sono delle “modalità” di traduzione di Magento 2 per tradurre alcune parole o frasi di temi e moduli.

Magento costruisce il pacchetto di traduzione per ogni specifica lingua assemblando i vari dizionari di traduzione localizzati nelle cartelle i18n di temi e moduli.

Più dizionari possono poi essere raggruppati in un pacchetto di traduzione personalizzato.

Il comando da utilizzare per raccogliere le traduzioni è:

magento i18n:collect-phrases [-o|--output="<csv file path and name>"] [-m|--magento] <path to directory to translate>;

è il percorso che Magento ispezionerà per trovare le stringhe da tradurre

-o|–output=”” è il percorso del file csv da restituire come output del comando

-m|–magento: comando opzionale che struttura il csv aggiungendo le informazioni dei temi o dei moduli per ogni stringa di traduzione. E’ fondamentale per poter creare un proprio pacchetto di traduzione usando il comando 18n:pack.

 

Creare un pacchetto di traduzione

Il pacchetto di traduzione è una traduzione globale del sistema. Sebbene siano disponibili le traduzioni ufficiali, Magento offre una funzionalità aggiuntiva agli sviluppatori per poter creare il proprio pacchetto di traduzione specifico per la propria installazione.

Per creare il pacchetto di traduzione personalizzato è fondamentale aver raccolto in precedenza tutte le traduzioni presenti in Magento utilizzando l’opzione –magento sul comando collect-phrases. Una volta accertato questo si può procedere con la creazione del pacchetto tramite il comando i18n:pack:

magento i18n:pack [-m|--mode={merge|replace}] [-d|--allow-duplicates] <source> <locale>

è il file sorgente generato in precedenza

è l’identificatore della lingua (es. it_IT)

–mode nel caso il pacchetto esista già, indica se le stringhe vanno unite o sostituire (merge o replace)

–allow-duplicates consente o meno duplicati di una medesima stringa

 

Eseguito correttamente il comando non vi rimane altro che creare i file e le directory necessarie per il pacchetto:

  • file di licenza
  • composer.json
  • registration.php
  • language.xml

In magento 2 è inoltre presente un sistema di ereditarietà delle traduzioni. Grazie a questo sistema è possibile creare una nuova traduzione basandosi su una traduzione esistente con un sistema che ricorda un po’ il meccanismo di fallback dei temi di Magento1.

Immaginiamo ad esempio di creare un pacchetto di traduzione inglese per l’inghilterra.

Al posto di creare un intera traduzione, è sufficiente creare un pacchetto con le stringhe da tradurre e le indicazioni di ereditarietà sul file language.xml:

<?xml version="1.0"?>
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
    <code>en_GB</code>
    <vendor>magento</vendor>
    <package>en_gb</package>
    <sort_order>100</sort_order>
    <use vendor="oxford-university" package="en_us"/>
</language>

Il sistema di ereditarietà può contenere più pacchetti di traduzione da ereditare e se questi ultimi a loro volta hanno specifiche di ereditarietà, il meccanismo di fallback può diventare molto articolato.

Maggiori informazioni sul meccanismo di ereditarietà e sulla sequenza di lettura è possibile  trovarli sulla relativa pagina della documentazione ufficiale.

 

Per aggiornamenti sulla traduzione e sulle decisioni da parte di Magento, potete consultare la sezione della traduzione di crowdin o la pagina principale del repository.

Non dimenticate di contribuire alla traduzione e segnalare eventuali bug o errori!

Antonio Carboni