Domanda

Esiste un metodo per sapere quali file di traduzione CSV (s) sono utilizzati nel file di modello phtml corrente?

È stato utile?

Soluzione

si Presumo traduzioni medi di $this->__('...') in cui viene utilizzato non trova aiuto explict. Poi dipende da un contesto di modulo del blocco

Questo dipende da molteplici fattori:

  1. La classe di blocco viene utilizzato per il rendering del modello. Dovreste essere in grado di determinare da file XML di layout, ma alcuni blocchi vengono creati a livello di codice, in questo caso dovrete cercare nel codice. Se si è fortunati, la classe del blocco è documentata nel modello stesso, in questo modo:

    /** @var $this Mage_Catalog_Block_Product_List */
    

    o come questo:

    /** @see Mage_Catalog_Block_Product_List */
    

    L'ambito è il modulo questa classe appartiene (come Mage_Catalog). Ma attenzione con riscritture di classe. Se la classe del blocco è stato riscritto da un'estensione, la portata cambia in questa estensione.

  2. Se la module_name proprietà è stata impostata (ad esempio attraverso il layout XML), questo ha la precedenza.
  3. Infine, se il blocco sostituisce il metodo getModuleName(), viene utilizzato l'ambito restituito da questo metodo.

Non siamo ancora arrivati?

Ora che si conosce il campo di applicazione, è possibile cercare il file CSV secondo, che è quello che viene definito in config.xml di questo modulo. Potrebbe anche essere più di uno, ma la convenzione generalmente seguita è quella di avere un file per ogni modulo, sotto forma Module_Name.csv.

  1. Se questo file non contiene la stringa da tradurre, l'avete trovato, eccezione se hai un translate.csv nel tema, che sostituisce la traduzione per questo scopo esatto (come: "Module_Name::Foo","Foo" ).

  2. Se non è in entrambi, look per la traduzione senza prefisso di portata modulo nel translate.csv (se esiste).

  3. Se non è lì, cercare in tutti gli altri file CSV modulo. Quello dal modulo che viene caricato prima, vince (moduli di base cioè prima, poi in ordine alfabetico, le dipendenze rispetto). Si noti che questo ripiego viene utilizzata solo quando non in modalità sviluppatore.


Se si vuole essere sicuri, da quali file una traduzione specifica sulla pagina sta venendo, ti posso consigliare l'estensione gratuita TranslationHints ( NOTA BENE: ho scritto esso)

Scarica qui: https://github.com/schmengler/TranslationHints

Cattura schermo: Suggerimenti di traduzione

Altri suggerimenti

A meno che siate unit test, di solito non si interessa davvero che csv traduzione viene utilizzato perché tutti get fuse prima di Magento inizia traduzione di qualsiasi cosa.

Tuttavia, se si vuole ancora capirlo, prima utilizzare i file di layout xml per capire che cosa viene utilizzato classe di blocco. Se si trova la classe di blocco, allora utilizzerà il config.xml di quel modulo. Se nessuna classe blocco è specificato negli schemi potrebbe essere necessario andare a cercare nelle classi blocco padre e controllori.

La cosa più importante da sapere è che i modelli utilizzano la funzione di traduzione __ della loro classe blocco associato, e la classe blocco utilizza __ funzione il suo modulo di Data.php di classe di supporto.

Sembra che si vuole rimanere organizzati quando si aggiungono le traduzioni. Con così tanti file CSV per la traduzione, perché scegliere un file casuale, perché non aggiungere al file CSV giusto?

Ecco un esempio su cui stavo lavorando: Supponiamo che si sta modificando la pagina di account cliente, e si sono modificati Address book per I miei indirizzi . Ora non c'è traduzione mostrando per I miei indirizzi .

Il modo per trovare il file CSV giusto è quello di cercare una traduzione esistente nella stessa parte del sito. L'elemento I miei ordini / Mes Commandes è nella stessa parte del sito, in modo da poter effettuare una ricerca:

$ cd magento/app/
$ find . -iname '*.csv' | xargs grep -in --color 'Mes Commandes'
./locale/fr_FR/Mage_Sales.csv:73:"Back to My Orders","Retour à mes commandes"
./locale/fr_FR/Mage_Sales.csv:308:"My Orders","Mes commandes"
./locale/fr_FR/Mage_Sales.csv:309:"My Orders - Details","Mes commandes - Détails"
./locale/fr_FR/Mage_Oscommerce.csv:7:"Back to My Orders","Retour à mes commande "
./locale/fr_FR/Mage_Oscommerce.csv:51:"My Previous Orders","Mes commandes précédentes"
./locale/fr_FR/Mage_Customer.csv:215:"My Orders","Mes commandes"

Così, guardando questo con un po 'di indovinare, il file migliore da modificare è locale / fr_FR / Mage_Sales.csv. Dopo aver apportato le modifiche, non dimenticate di aggiornare Traduzioni in Sistema> Gestione Cache

A parte: notare le opzioni case-insensitive; -iname per find e -i per grep. Questi riducono lo sforzo è necessario spendere caccia. L'opzione --color non riflette qui, ma l'uscita sarà molto più leggibile rispetto a quello che si vede qui.

Il metodo di traduzione __ () utilizzato nelle sagome si trova nel file /app/code/core/Mage/Core/Block/Abstract.php e prende il nome del modulo per trovare la traduzione corretta. Si costruisce una matrice nel seguente formato da utilizzare per traduzione

array(1) {
    [0]=> object(Mage_Core_Model_Translate_Expr)#161 (2) {
        ["_text":protected]=> string(18) "Orders and Returns"
        ["_module":protected]=> string(10) "Mage_Sales"
    }
}

Se volete vedere che cosa Nome modulo il modello sta usando si è in grado di chiamare una funzione:

 $this->getModuleName();

Non ci dovrebbe quindi essere un file corrispondente traduzioni questa stringa. Per esempio per me sulla pagina della categoria vista tornerà questa funzione * Mage_Catalog * e poi da questo posso trovare il file di traduzione Mage_Catalog.csv

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top