Respostas:
Suponho que você queira dizer traduções $this->__('...')
onde nenhum ajudante explícito é usado. Então depende do escopo do módulo do bloco
A classe de bloco que está sendo usada para renderizar o modelo. Você deve poder determiná-lo a partir dos arquivos XML de layout, mas alguns blocos são criados de forma programática; nesse caso, você terá que pesquisar no código. Se você tiver sorte, a classe de bloco está documentada no próprio modelo, assim:
/** @var $this Mage_Catalog_Block_Product_List */
ou assim:
/** @see Mage_Catalog_Block_Product_List */
O escopo é o módulo ao qual essa classe pertence (como Mage_Catalog
). Mas tenha cuidado com as reescritas de classe. Se a classe de bloco foi reescrita por uma extensão, o escopo muda para essa extensão.
module_name
foi configurada (por exemplo, via XML de layout), isso tem precedência.getModuleName()
método, o escopo retornado desse método é usado.Agora que você conhece o escopo, pode procurar o arquivo CSV de acordo, que é o definido neste módulo config.xml
. Também pode ser mais de um, mas a convenção geralmente seguida é ter um arquivo por módulo no formulário Module_Name.csv
.
Se esse arquivo contiver a sequência a ser traduzida, você a encontrou, exceto se houver uma translate.csv
no seu tema, que substitua a tradução para esse escopo exato (como "Module_Name::Foo","Foo"
:).
Se não estiver nos dois, procure a tradução sem o prefixo do escopo do módulo translate.csv
(se existir).
Se não estiver lá, procure em todos os outros arquivos CSV do módulo. O do módulo que é carregado primeiro, vence (ou seja, os módulos principais primeiro e, depois, em ordem alfabética, respeitando as dependências). Observe que esse fallback é usado apenas quando não estiver no modo de desenvolvedor.
Se você quiser ter certeza de que arquivos vem uma tradução específica da página, recomendo a extensão gratuita TranslationHints ( AVISO LEGAL: eu escrevi)
Obtenha aqui: https://github.com/schmengler/TranslationHints
A menos que você faça um teste de unidade, você geralmente não se importa com qual tradução csv está sendo usada, porque todas elas são mescladas antes do Magento começar a tradução de qualquer coisa.
No entanto, se você ainda deseja descobrir, primeiro use os arquivos xml de layout para descobrir qual classe de bloco está sendo usada. Se você encontrar a classe de bloco, ela usará o config.xml desse módulo. Se nenhuma classe de bloco for especificada nos layouts, talvez você precise procurar nas classes e controladores de bloco pai.
O principal a saber é que os modelos usam a função de conversão __ da classe de bloco associada e a classe de bloco usa a função __ da classe auxiliar do módulo Data.php.
Parece que você deseja se manter organizado ao adicionar suas traduções. Com tantos arquivos CSV para tradução, por que escolher um arquivo aleatório, por que não adicioná-lo ao arquivo CSV correto?
Aqui está um exemplo no qual eu estava trabalhando: Suponha que você esteja editando a página da conta do cliente e alterou o Catálogo de endereços para Meus endereços . Agora não há nenhuma tradução em francês exibida para Meus endereços .
A maneira de encontrar o arquivo CSV correto é procurar uma tradução existente na mesma parte do site. O item Meus Pedidos / Comandos Mes está na mesma parte do site, para que eu possa executar uma pesquisa:
$ 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"
Portanto, analisando isso com um pouco de suposição, o melhor arquivo a ser modificado é locale / fr_FR / Mage_Sales.csv. Após fazer as alterações, não se esqueça de atualizar as Traduções em Sistema> Gerenciamento de cache !
Além: observe as opções que não diferenciam maiúsculas de minúsculas; -iname
para find
e -i
para grep
. Isso reduz o esforço necessário para a caça. A --color
opção não reflete aqui, mas a saída será muito mais legível em comparação com o que você vê aqui.
O método de tradução __ () usado nos modelos está no arquivo /app/code/core/Mage/Core/Block/Abstract.php e leva o nome do módulo para encontrar a tradução correta. Ele cria uma matriz no seguinte formato para ser usado para tradução:
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 você deseja ver qual nome de módulo seu modelo está usando, é possível chamar uma função:
$this->getModuleName();
Deve haver um arquivo de traduções que corresponda a essa sequência. Por exemplo, para mim, na página de exibição de categoria, essa função retornará * Mage_Catalog * e, a partir disso, posso encontrar o arquivo de tradução Mage_Catalog.csv