2012-05-22 9 views
7

Sto sviluppando un modulo personalizzato per l'installazione di Magento (versione 1.6.2.0). Ho registrato un file di traduzione per il modulo nel config.xml e ho iniziato ad aggiungere traduzioni in tedesco. Il modulo aggiunge un nuovo comportamento al back-end Magento.Traduzione con file di traduzione personalizzato non riesce per alcune parole in Magento

Durante la traduzione ho notato uno strano comportamento di Magento. Alcune parole non vengono tradotte da Magento anche se una traduzione viene fornita nel file csv del modulo.

Quando cambio la chiave in un valore diverso, la traduzione funziona come previsto, quindi Magento sembra vedere e leggere il file cvs.

Al momento noto questo comportamento per le chiavi "Città" e "Negozio".

contenuto del file CSV:

"City","Stadt" 
"City1","Stadt" 

Io uso la seguente linea di tradurre le stringhe.

Mage::helper('mymodule')->__('City') // returns "City" 

Quando cambio la chiave in "Città1", ogni cosa funziona come previsto.

Mage::helper('mymodule')->__('City1') // returns "Stadt" 

Dopo questo ho cercato il file di traduzione CSV tedeschi (forniti dal Magento Community tedesca) per una traduzione per la chiave "City" e hanno trovato una nel "modulo di adminhtml".

Mage::helper('adminhtml')->__('City') // returns "Stadt" 

Quindi questo funziona anche come previsto.

Non so cosa sto facendo male. Come ho detto, lo stesso comportamento si verifica per la stringa "Store".

Qualche idea su questo?

+0

Avete una sezione di traduzione nella configurazione (config.xml) di 'mymodule'? Magento di solito ricade su altri moduli, se non riesce a trovare una traduzione appropriata all'interno del csv configurato, quindi questo potrebbe essere il problema. – Florian

+1

Sì, ho una tale sezione nel file di configurazione del modulo altrimenti la traduzione non dovrebbe funzionare con il tasto 'City1'. Ma non è il caso di 'City1', la traduzione funziona. – Flo

risposta

8

Finalmente ho risolto il problema di traduzione. Il motivo era una configurazione errata nel config.xml. L'ho scoperto eseguendo il debug del codice in cui Magento legge nei file di traduzione.Quando ciò accade, c'è un parametro chiamato scope che viene letto da uno degli elementi XML del file config.xml.

Questo elemento dovrebbe normalmente avere il nome del modulo, ad es. <MyCompany_MyModule>. Nel tutorial che ho seguito per configurare la traduzione, questo elemento XML è stato chiamato <translations> che era sbagliato.

Immagino che questo potrebbe essere stato corretto per una versione precedente di Magento. Ciò che ha reso difficile scoprire è che gli errori si verificano solo per le chiavi che sono state definite anche nei file di traduzione di altri moduli. Le chiavi che sono state definite solo nel mio file di traduzione hanno funzionato come previsto.

Una configurazione corretta dovrebbe apparire così.

<frontend> 
    ... 
    <translate> 
     <modules> 
      <MyCompany_MyModule> 
       <files> 
        <default>MyCompany_MyModule.csv</default> 
       </files> 
      </MyCompany_MyModule> 
     </modules> 
    </translate> 
    ... 
</frontend> 
<adminhtml> 
    ... 
    <translate> 
     <modules> 
      <MyCompany_MyModule> 
       <files> 
        <default>MyCompany_MyModule.csv</default> 
       </files> 
      </MyCompany_MyModule> 
     </modules> 
    </translate> 
    ... 
</adminhtml> 
+0

Grazie per averlo inserito. Ho perso i tag "predefiniti", causando un errore foreach in ogni pagina. – Theodores

+0

In quale file principale è stato aggiunto il debug? Ho lo stesso problema e le stesse impostazioni di configurazione, ma alcune parole sono ancora prese da un altro file di traduzione. – Guus

4

difficile da dire senza avere il codice a portata di mano, ma la mia ipotesi è che la portata di traduzione del modulo in qualche modo si perde (per qualsiasi motivo) causando Magento per fallback.

AFAIK, in Magento 1.6.2.0 i seguenti file di traduzione anche definire la chiave City:

/app/locale/<language>_<region>/Mage_Checkout.csv 
/app/locale/<language>_<region>/Mage_Customer.csv 
/app/locale/<language>_<region>/Mage_Persistent.csv 
/app/locale/<language>_<region>/Mage_Sales.csv 
/app/locale/<language>_<region>/Mage_Shipping.csv 
/app/locale/<language>_<region>/Mage_XmlConnect.csv 

mi piacerebbe provare a cambiare la traduzione City in queste .csv file uno per uno, per trovare fuori da dove proviene effettivamente la traduzione in questione.

Una volta trovato il file in cui Magento sta cadendo indietro, si anche sa, che la portata di traduzione è necessario sostituire, per forzare la vostra traduzione di City da utilizzare.

Ad esempio, se si trova cambiando la traduzione in Mage_Shipping.csv non abbiano effetto, allora si modifica il file traduzione (My_Module.csv) per contenere

"Mage_Shipping::City","Stadt" 
+0

Quando attivo la traduzione in linea, posso vedere che l'oscilloscopio è correttamente impostato sul mio modulo. Ho anche fatto un po 'di debug e ho seguito il codice fino a quando l'array con tutte le traduzioni, credo per lo scopo del modulo, è la ricerca della chiave "City" con il risultato che non è stata trovata alcuna voce e quindi viene utilizzata la stringa originale . Mi chiedo perché manca la chiave. Ma proverò il tuo suggerimento e vedrò cosa succede. – Flo

+0

Ho seguito le tue istruzioni, ma ha solo confermato quello che supponevo. Ho modificato la traduzione di ciascun file in un valore diverso, ma non sono stati visualizzati nell'interfaccia utente. Quindi questo si adatta alla mia ipotesi che la parola non sia affatto tradotta in quanto non è possibile trovare alcuna traduzione. – Flo