Come sapere quali file csv di traduzione sono utilizzati nel file phtml corrente


Risposte:


3

Presumo che tu intenda traduzioni per le $this->__('...')quali non viene utilizzato nessun aiutante esplicito. Quindi dipende dall'ambito del modulo del blocco

Questo dipende da molteplici fattori:

  1. La classe di blocco utilizzata per il rendering del modello. Dovresti essere in grado di determinarlo dai file XML di layout, ma alcuni blocchi vengono creati a livello di codice, in questo caso dovrai cercare nel codice. Se sei fortunato, la classe di blocchi è documentata nel modello stesso, in questo modo:

    /** @var $this Mage_Catalog_Block_Product_List */

    o in questo modo:

    /** @see Mage_Catalog_Block_Product_List */

    L'ambito è il modulo a cui appartiene questa classe (come Mage_Catalog). Ma fai attenzione con le riscritture di classe. Se la classe di blocco è stata riscritta da un'estensione, l'ambito cambia in questa estensione.

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

Siamo arrivati?

Ora che conosci l'ambito, puoi cercare il file CSV corrispondente, quello definito in questo modulo config.xml. Potrebbe anche essere più di uno, ma la convenzione generalmente seguita è quella di avere un file per modulo nel modulo Module_Name.csv.

  1. Se questo file contiene la stringa da tradurre, l'hai trovata, tranne se ne hai una translate.csvnel tuo tema, che sovrascrive la traduzione per questo ambito esatto (come:) "Module_Name::Foo","Foo".

  2. Se non si trova in entrambi, cercare la traduzione senza prefisso ambito modulo in translate.csv(se esiste).

  3. Se non è presente, cerca in tutti gli altri file CSV del modulo. Vince quello del modulo che viene caricato per primo (ovvero prima i moduli core, quindi in ordine alfabetico, rispettando le dipendenze). Si noti che questo fallback viene utilizzato solo quando non è in modalità sviluppatore.


Se vuoi essere sicuro, da quali file proviene una traduzione specifica sulla pagina, posso consigliarti l'estensione gratuita TranslationHints ( DISCLAIMER: l' ho scritto)

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

Immagine dello schermo: Suggerimenti per la traduzione


2

A meno che tu non stia testando le unità, di solito non ti interessa davvero quale traduzione csv viene utilizzata perché si fondono tutti prima che Magento inizi la traduzione di qualsiasi cosa.

Tuttavia, se vuoi ancora capirlo, usa prima i file layout xml per capire quale classe di blocchi viene utilizzata. Se trovi la classe di blocco, utilizzerà il file config.xml di quel modulo. Se non viene specificata alcuna classe di blocco nei layout, potrebbe essere necessario cercare le classi di blocchi e i controller principali.

La cosa principale da sapere è che i template usano la funzione di traduzione __ della loro classe di blocco associata e la classe di blocco usa la funzione __ della sua classe di dati Data.php helper.


1
"Di solito non ti interessa davvero quale traduzione csv viene utilizzata perché vengono tutti uniti prima che Magento inizi la traduzione di qualsiasi cosa." - Salvo test unitari per un pacchetto di traduzione esistente. I miei moduli di solito falliscono se mancano inglese, spagnolo o francese prima di farlo diventare il team di controllo qualità.
Luke A. Leber,

1

Sembra che tu voglia rimanere organizzato quando aggiungi le tue traduzioni. Con così tanti file CSV da tradurre, perché scegliere un file casuale, perché non aggiungerlo al file CSV giusto?

Ecco un esempio su cui stavo lavorando: supponiamo che tu stia modificando la pagina dell'account cliente e che tu abbia modificato la Rubrica in I miei indirizzi . Ora non è disponibile alcuna traduzione in francese per I miei indirizzi .

Il modo per trovare il file CSV giusto è cercare una traduzione esistente nella stessa parte del sito. L'articolo I miei ordini / Comandi mes si trova nella stessa parte del sito, quindi posso eseguire 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"

Quindi, guardando a questo con un po 'di ipotesi, il miglior file da modificare è locale / fr_FR / Mage_Sales.csv. Dopo aver apportato le modifiche, non dimenticare di aggiornare le traduzioni in Sistema> Gestione cache !

A parte: annotare le opzioni senza distinzione tra maiuscole e minuscole; -inameper finde -iper grep. Riducono lo sforzo necessario per la caccia. L' --coloropzione non si riflette qui, ma l'output sarà molto più leggibile rispetto a quello che vedi qui.


0

Il metodo di traduzione __ () usato nei template è nel file /app/code/core/Mage/Core/Block/Abstract.php e prende il nome del modulo per trovare la traduzione corretta. Costruisce un array nel seguente formato da utilizzare per la 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 vuoi vedere quale nome del modulo sta usando il tuo modello, puoi chiamare una funzione:

 $this->getModuleName();

Dovrebbe quindi esserci un file di traduzioni corrispondente a questa stringa. Ad esempio, per me nella pagina di visualizzazione delle categorie questa funzione restituirà * Mage_Catalog * e da qui trovo il file di traduzione Mage_Catalog.csv


Quale linea in questo grande file Abstract.php?
Vicky Dev,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.