Vai al contenuto

Blog

Installare la traduzione italiana di Magento2

| Lettura 8 minuti
Di

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>

<path to directory to translate> è il percorso che Magento ispezionerà per trovare le stringhe da tradurre

-o|–output=””<csv file path and name>” è 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>

<source> è il file sorgente generato in precedenza

<locale> è 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!

Potrebbero interessarti anche..

Primi passi con l’utilizzo delle API di Magento 2 In questo articolo diamo uno sguardo ai cambiamenti avvenuti nell'utilizzo delle API in Magento 2 e forniremo qualche esempio pratico di integrazione. Cosa è cambiato? I protocolli supportati sono soltanto SOAP e REST, è stato eliminato XML-RPC ma ...
Gli application mode in Magento 2 Introduzione In questo articolo diamo uno sguardo agli application mode di Magento 2. Su Magento 1 un concetto simile è rappresentato dal developer mode, attivabile tramite la direttiva MAGE_IS_DEVELOPER_MODE (tipicamente specificata come variabi...

Antonio Carboni

Magento Frontend Developer

Comments

  1. ciao e grazie per la splendida
    notizia, sto seguendo la tua
    procedura ma quando devo inserire nel
    percorso:

    app/i18n/antoniocarboni/it_It/

    il contenuto del file scaricato
    all’indirizzo:

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

    mi blocco, nel senso che in app ho 3
    cartelle “code”, “design” e “etc”,
    non trovo “i18n”. Se cerco un po
    trovo 2 cartelle chiamate “i18n” ecco
    i percorsi:

    app/design/frontend/magento/blank
    app/design/frontend/magento/luma

    c’è qualcosa che non va nella mia
    installazione?

    Grazie mille

    1. grazie mille, ho creato il percorso
      ma una volta collocati i file
      contenuti nel file rar nel percorso

      app/i18n/antoniocarboni/it_It/

      aggiorno e diventa tutto bianco, ho
      provato a tornare sulla pagina di
      login al backend ed anche quella è
      completamente bianca…

  2. Ciao antonio
    ho seguito la tua guida ma quando apro il sito ottengo l’errore:

    Warning: Cannot modify header information – headers already sent by (output started at
    /Applications/MAMP/htdocs/magento2/vendor/antoniocarboni/magento2-traduzione-
    italiana/registration.php:2) in
    /Applications/MAMP/htdocs/magento2/vendor/magento/framework/Stdlib/Cookie/PhpCookieMan
    ager.php on line 126 #0 [internal function]

    Come posso risolvere?
    Sono su Mac OSX 10.11, MAMP con MySQL 5.6.30.

    Sai quando uscirà la traduzione ufficiale su Magento?

    Grazie

    1. Ciao
      solitamente quell’errore mi è capitato su ambienti non parametri di configurazione errati.
      Verifica che sia tutto ok e per sicurezza, fai anche una pulizia della cache e delle sessioni.

      1. Ciao antonio
        Risolto. C’era un errore nel codice di un file della tua estensione che ho corretto.
        Grazie mille per la risposta!
        Arrivederci

      2. di che errore si tratta?
        Se c’è effettivamente un errore
        sarebbe utile poterlo condividere con
        tutti.
        grazie!

  3. Per chi volesse risparmiarsi una mezz’ora di sbattimento, il problema “diventa tutto bianco” dopo
    aver installato la traduzione si risolve cancellando la prima riga (vuota) dal file registration.php dentro
    l’archivio di GitHub della traduzione italiana, che genera un errore di “Headers already sent” in php.
    Grazie Antonio per la traduzione!

  4. Ragazzi scusate e scusa antonio se mi
    sono permesso di contattarti anche su
    Fb. Premsessa: sono una capra e non
    sto capendo come installare la lingua
    italiana e vorrei farlo manualmente.
    Ho scompattato i due zip:
    1) quello dove ci sono le 3 cartelle
    app dev lib
    2) quello dove ci sono tutti i file
    di registrazione
    Le 3 cartelle le devo sovrascrivere
    alle 3 che sono attualmente nella
    root del mio magento?
    Poi non ho capito dove trovo il
    percorso per inserire tutti gli altri
    files, scusate 🙁

    1. NON devi sovrascrivere le cartelle di sistema di Magento ma fare il merge con esse.
      Il percorso mancante lo devi creare tu.

  5. Con Magento 2.1 quando lancio il “composer update” mi da questo errore. Come posso risolvere?
    Grazie

    Problem 1
    – Installation request for antoniocarboni/magento2-traduzione-italiana dev-master -> satisfiable
    by antoniocarboni/magento2-traduzione-italiana[dev-master].
    – Conclusion: remove magento/framework 100.1.0
    – magento/product-community-edition 2.1.0 requires magento/framework 100.1.0 -> satisfiable
    by magento/framework[100.1.0].
    – magento/product-community-edition 2.1.0 requires magento/framework 100.1.0 -> satisfiable
    by magento/framework[100.1.0].
    – Conclusion: don’t install magento/framework 100.1.0
    – Installation request for magento/product-community-edition 2.1.0 -> satisfiable by
    magento/product-community-edition[2.1.0].

  6. Ciao,
    intanto grazie per la traduzione, io l’ho installata manualmente poichè non ho la possibilità di
    usare il composer sull’hosting che mi tiene il sito e seguendo le istruzioni è andato tutto bene.
    Io sto usando magento 2.1 CE e sembra tutto corretto a meno del minicart.
    Le stringhe sono presenti in italiano nel file csv,ma non vengono prese in considerazione nella
    traduzione(restano in inglese), nella pagina di check out invece è tutto corretto.
    Cercando su internet sembra un problema abbastanza comune al quale però non è stata
    trovata una soluzione univoca, è successo a qualcun altro? Come avete risolto?
    Grazie mille

  7. Complimenti ottima guida.
    Peccato che la traduzione è ancora
    all’ 85% almeno è quello che vedo su
    https://crowdin.com/project/magento-2 .
    Vedo scritte come “Check / Money
    order ” al momento del pagamento e
    altri language bug, magari se fosse
    stato lato admin il problema era
    marginale ma se un cliente mi chiede
    un e-commerce in italiano è ovvio che
    queste “sbavature” sono gravi. Mi
    stavo chiedendo se magari hai news
    riguardo alla traduzione anche perchè
    altrimenti magento 2 in italia, ora
    come ora, risulta molto infattibile
    usarlo.

    1. La traduzione è aperta a tutti quindi si può facilmente colmare questa lacuna intervenendo direttamente su crowdin suggerendo le stringhe mancanti.
      Ad ogni modo i problemi sono altri e più complessi di così. Vi sono ancora diversi bug e diverse stringhe mancanti nel sistema che la traduzione di crowdin non contiene. Perciò se pensi che la traduzione possa essere così determinante nell’utilizzo di Magento 2, ti suggerisco di proseguire per ora su Magento 1

  8. Ciao Antonio io ho fatto l’installazione manualmente,
    ho scaricato entrambi i pacchetti:
    il 1 contenente le tre cartelle ‘app’ ‘dev’ e ‘lib’ di cui ho fatto il merge
    e il 2 che ho scompattato in una cartella “it_It” che ho creato ed ho inserito nel percorso
    “/app/i18n/antoniocarboni/it_It”
    ho cambiato anche la lingua nelle impostazioni di magento in italiano
    ma non succede nulla.
    Grazie mille per la traduzione.

    1. Se hai inserito la cartella it_it dentro app/i18n/antoniocarboni/it_it c’è un it_it di troppo 😀

  9. Ciao Antonio e grazie per la traduzione, purtroppo la installo manualmente (copiando la cartella in app) perchè
    non ho ancora capito come e dove aggiungere le righe al Composer e a quale composer

    E’ possibile una guida dettagliata?

    Grazie

  10. L’installazione con composer è tutta
    là quindi non ci sono molti altri
    dettagli che ti posso dare.
    Piuttosto è probabile che tu non stia
    usando composer per gestire il
    progetto e di conseguenza non riesci
    a capire come integrare la traduzione
    con esso.
    Per questo motivo ci sono i due
    passaggi; Magento installato
    manualmente e Magento installato e
    gestito con composer.
    Ad ogni modo puoi trovare una guida
    generale per composer a questo link:
    https://www.bitbull.it/blog/composer-come-facciamo-a-pezzi-un-progetto-magento/
    mentre a questo link una guida
    specifica per Magento2:
    http://magenticians.com/installing-magento-2-composer/

  11. Ciao Antonio,
    sto usando la tua traduzione però ho alcuni dubbi che riguardano l’ereditarietà.

    Ho già provato a leggere la documentazione ufficiale ma proprio non capisco. Ho installato il pacchetto
    Manualmente con Magento 2.1.3. Mi chiedo perché ci sono due traduzioni it_IT? Una scaricata da Crowdin (per
    moduli) ed una della cartella app/i18n/antoniocarboni/it_It/ (in un unico file). Mi pare di vedere che usa in realtà
    sempre quella nelle cartelle di Magento e non la tua.. (è la stessa?)

    Posso creare un mio pacchetto che eredita la tua e la personalizza in alcune piccole parti?

    Grazie mille per la risposta e complimenti per il lavoro svolto.

Leave a Reply

Your email address will not be published. Required fields are marked *

Newsletter

Ti iscriveremo solo se avremo qualcosa di interessante da dirti.
Iscrivendoti ci dai la possibilità di usare i tuoi dati personali Privacy Policy