Installare i file di lingua italiana in Magento 2.0

PREMESSA: la stesura di questa miniguida mi è costata 2 giorni di lavoro: la documentazione di magento è incompleta riguardo alle traduzioni, soprattutto su come utilizzare i file del pacchetto di lingua italiana di Crowdin. Per questo vi chiedo gentilmente di non copiare questo articolo, bensì di inserire un link se lo ritenete utile, e di commentare qui sotto per aiutare a migliorarlo.

Nel precedente articolo abbiamo visto come installare magento 2.0 utilizzando composer.

In questa miniguida (più appunti che una guida vera e propria), vediamo come tradurre magento, o meglio come installare il pacchetto italiano di traduzioni ospitato su Crowdin (https://crowdin.com/project/magento-2/it). Utilizzare il file di Crowdin non è necessario, potete anche decidere di tradurre tutto voi (se siete pazzi) o di utilizzare un’altra traduzione.

 

DATA DI STESURA DELL’ARTICOLO: 8 aprile 2016

VERSIONE MAGENTO INSTALLATA: 2.0.4

 

Iniziamo impostando l’italiano nel backend di Magento:

Stores -> Configuration

Country Options

Default country: Italy

Locale Options

Impostate quello che manca, nel mio caso ho sostituito l’unità di misura Libbre con i Chilogrammi, il resto era già a posto.

 

Arriva ora il momento fatidico di installare la lingua.

Per la mia installazione mi sono appoggiato al progetto seguito da Antonio Carboni su Crowdin: https://crowdin.com/project/magento-2/it .

Potete contribuire traducendo le stringhe mancanti, votando per le stringhe già tradotte o proponendo delle nuove traduzioni.

Veniamo però ora all’installazione della lingua italiana su Magento2.

 

ATTENZIONE: ci sono delle differenze importanti rispetto alle due guide da cui ho preso spunto, in quanto sembrerebbe che in Magento 2.0.4 sia cambiata la sintassi del client.

In particolare:

  • vecchia sintassi:
i18n:pack [-m|--mode="..."] [-d|--allow-duplicates] source locale
  • nuova sintassi:
i18n:pack [-m|--mode="..."] [-d|--allow-duplicates] source pack locale

In pratica ora bisogna anche specificare la directory di destinazione dei file da installare. Seguendo la guida e confrontandola con le fonti da cui ho preso spunto noterete le differenze.

 

La guida che ho seguito è questa: http://www.vanderboon.net/wiki/Install_Magento_Crowdin_Translation , in particolare nella sezione in cui si parla di composer.

Scarico il file source_it_IT.csv generato dal sito (nota: prendere il link del file da scaricare dal sito sopra dato che nel frattempo gli indirizzi potrebbero essere cambiati) :

$ wget http://107.170.242.99/var/Head/source_it_IT.csv

Visto che attualmente la lingua italiana non è nella lista delle lingue preinstallate, dobbiamo creare il pacchetto “lingua italiana” (tutti i dettagli qui: http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-i18n.html#config-cli-subcommands-xlate-example2):

$ php bin/magento i18n:collect-phrases -o "/srv/www/example.com/magento/it_IT.csv" -m /srv/www/example.com/magento/

Sovrascrivete il file it_IT.csv appena creato con il file scaricato precedentemente:

$ mv source_it_IT.csv it_IT.csv

Ora salviamo il package della lingua, seguendo la nuova sintassi i18n:pack [-m|–mode=”…”] [-d|–allow-duplicates] source pack locale dove:

  • source: il file contenente tutte le traduzioni, ovvero nel mio caso /srv/www/example.com/magento/it_IT.csv
  • pack: il percorso in cui volete installare la lingua, direi che la scelta ottimale è specificare la directory di installazione di magento, nel mio cso /srv/www/example.com/magento/
  • locale: il locale, ovvero it_IT
$ php bin/magento i18n:pack --mode=replace -d /srv/www/example.com/magento/it_IT.csv /srv/www/example.com/magento/ it_IT

Andiamo a vedere dove sono stati installati i file csv delle traduzioni:

$ find . -name "*.csv"
./vendor/magento/module-fedex/i18n/it_IT.csv
./vendor/magento/module-fedex/i18n/en_US.csv
./vendor/magento/module-catalog-widget/i18n/it_IT.csv
./vendor/magento/module-catalog-widget/i18n/en_US.csv
./vendor/magento/module-rule/i18n/it_IT.csv
./vendor/magento/module-rule/i18n/en_US.csv
...
/i18n/it_IT.csv

Come potete notare abbiamo ogni csv al posto giusto ed è stata creata la directory /i18n/it_IT.csv

.

A questo punto, come spiegato nella documentazione di magento (http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-i18n.html#config-cli-subcommands-xlate-example2), dobbiamo andare a creare una directory per la lingua (nel mio esempio la chiamo “prova“), in cui inserire:

  • composer.json
  • registration.php
  • language.xml

Inizio creando una directory apposita, app/i18n/prova/it_IT

$ mkdir -p app/i18n/prova/it_IT

All’interno creo i tre file richiesti. Vi inserisco quelli che ho messo io, adattando le guide sopra citate.

a) composer.json

{
"name": "prova/it_it",
"description": "Italiano (Italia)",
"version": "100.0.2",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"require": {
"magento/framework": "100.0.*"
},
"type": "magento2-language",
"autoload": {
"files": [
"registration.php"
]
}
}

b) registration.php

<!--?php /** * Copyright (C) 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::LANGUAGE, ‘prova_it_it’, __DIR__ ); ?-->

c) language.xml
Disponibile su pastebin: http://pastebin.com/Gsnt5M6Y

Arrivati a questo punto dobbiamo fare il deploy. Non so per quale motivo, ma alcuni consigliano di fare il deploy sia di en_US (lingua di default) che della nuova lingua.

Facciamolo in due passaggi separati, così vedrete che ci sarà un problemino. Il deploy impiega un po’ di tempo, portate pazienza.

$ php bin/magento setup:static-content:deploy en_US

Requested languages: en_US
=== frontend > Magento/blank > en_US ===
.................................................................
Successful: 1965 files; errors: 0
---

=== frontend -> Magento/luma -> en_US ===
................................................................
Successful: 2038 files; errors: 0
---

Ora facciamo il deploy dell’italiano.

$ php bin/magento setup:static-content:deploy it_IT
Requested languages: it_IT
File "/i18n/it_IT.csv" does not exist

Sembrerebbe ci sia un bug (dettagli: https://github.com/magento/magento2/issues/3592 ) per cui magento cerca la directory i18n nel filesystem anzichè all’interno della directory di installazione di magento.

La mia “soluzione” a questo bug è quella di creare un link simbolico, ma va fatto da root:

# ln -s /srv/www/example.com/magento/i18n /i18n

Riproviamo a fare il deploy dell’italiano:

$ php bin/magento setup:static-content:deploy it_IT
Requested languages: it_IT
=== frontend -> Magento/blank -> it_IT ===
...............................................................
Successful: 1965 files; errors: 0
---

=== frontend -> Magento/luma -> it_IT ===
..............................................................
Successful: 2038 files; errors: 0
---

=== adminhtml -> Magento/backend -> it_IT ===
.....................................................................
---

=== Minify templates ===
......................................
Successful: 846 files modified
---

New version of deployed files: 1460134643

Tutto ok! I file sembrerebbero installati correttamente.

Puliamo cache, ricostruiamo gli indici..

$ php bin/magento indexer:reindex
$ php bin/magento cache:clean
$ php bin/magento cache:flush

È il momento della verità:

apriamo il sito e…. È IN ITALIANO!!!!

apriamo il backend e… È IN INGLESE!!! d’oh :(

Senza scoraggiarci, nel backend in alto a destra c’è il nostro nome di login, clicchiamoci sopra, andiamo in ACCOUNT SETTINGS, alla voce LOCALE impostiamo l’italiano, salviamo e…

Siamo riusciti ad installare Magento2 in italiano, con i file di traduzione di Crowdin!

Spero che questa miniguida, con tutte le imperfezioni che ha e le omissioni tecniche fatte, possa esservi di aiuto. Ricordate sempre che la fonte dovrebbe essere il portale sviluppatori di magento (anche se molti dei passaggi qui spiegati non sono neanche menzionati nella guida) e che, essendo Magento 2.0 in veloce evoluzione, i passaggi da me proposti potrebbero non funzionare più per versioni successive.

One thought on “Installare i file di lingua italiana in Magento 2.0

  1. per salvare il package si deve usare questa istruzione
    php bin/magento i18n:pack –mode=replace -d /var/www/html/shop/it_IT.csv . it_IT

  2. gino, se guardi bene, il tuo comando è equivalente al mio.

    Io ho usato il full path (/srv/www/example.com/magento/)

    $ php bin/magento i18n:pack --mode=replace -d /srv/www/example.com/magento/it_IT.csv <strong>/srv/www/example.com/magento/</strong> it_IT

    Tu hai usato la directory corrente ( . )

    $ php bin/magento i18n:pack --mode=replace -d /var/www/html/shop/it_IT.csv <strong>.</strong> it_IT
  3. bene, la guida sembra funzionare perfettamente!

    Ma qualora ci dovessero essere degli aggiornamenti nelle traduzioni, cosa si deve fare?

    Scusami ma non conosco ancora molto bene il mondo magento!

    Grande guida!

  4. Se devo essere sincero.. non ne ho idea.
    Sinceramente con le traduzioni mi son sempre trovato bene a installare una versione iniziale, poi utilizzo l’inline traslator per tradurre le stringhe live su frontend o backend.

    Se non hai mai provato dai un’occhiata a negozi => configurazione => sviluppatore.

  5. Ti ringrazio, ho scoperto il tuo blog e adesso ti seguirò. Magari ci possiamo scambiare qualche dritta a vicenda ;)

  6. Assolutamente!
    Sto lavorando a un ecommerce con magento 2.0.4, appena farò il deploy e andrò in produzione (max 2 settimane spero) metterò i riferimenti qui, così avrete uno store live con magento 2 da vedere!

  7. ho seguito tutto ed è andato alla grande, solo su una cosa non mi sono trovato
    “ln -s /srv/www/example.com/magento/i18n /i18n”
    questo ti crea un link simbolico nella root del server, ho superato questo problema dando il comando
    cp -p i18n/it_IT.csv lib/web/i18n/ (che poteva essere anche fatto un link)
    php bin/magento setup:static-content:deploy it_IT
    ed è andato tutto liscio

  8. Possibile che dopo l’installazione corretta della lingua mi vada in errore quando nel backend carico le pagine degli ordini, dei blocchi ecc..

    ti viene in mente qualcosa? Ciao

  9. Ciao Matteo,
    il backend ti mostra qualche errore o va semplicemente in pagina bianca?
    L’errore avviene dopo che imposti l’italiano come lingua dell’account admin oppure prima?

    Dovresti anche controllare i log di magento (nella directory var/log) e i log di errore di apache.

  10. esce un pop-up con scritto attenzione qualcosa è andato storto, questo dopo l’attivazione della lingua italiana nel backend.. ora controllo i log.. ti faccio sapere.

  11. Funziona, grazie.
    Sia Magento 2.1.12 che Magento 2.2.3, per salvare il package della lingua andava bene la vecchia sintassi:
    i18n:pack [-m|–mode=”…”] [-d|–allow-duplicates] source locale

    Come dice qualcuno nei commenti sopra, al primo tentativo sembrava avesse funzionato tutto, ma quando sono andata nel backend, cliccando alcune voci del menu (es. Pagine, Blocchi, Ordini) compariva l’alert “Qualcosa è andato storto” e le pagine del backend non venivano caricate.

    Credo dipendesse dal memory_limit nel php.ini e/o dal fatto che non avevo sufficiente spazio fisico nel drive e le compilazioni non erano andate a buon fine (anche se da terminale non mi è stato segnalato “Cannot allocate memory”) e/o dal max_execution_time (php.ini).
    In ogni caso nelle successive installazioni è andato tutto bene, esattamente come descritto; evidentemente non dipendeva dalla procedura in sè, ma da qualche settaggio non corretto di Magento.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *