Em uma extensão em que estou trabalhando, tenho um XML de layout adicionado via config.xml do módulo. Este layout tem algumas modificações no frontend. Alguns desses blocos, no entanto, pertencem aos módulos principais do Magento. Todos os modelos estão sendo exibidos corretamente conforme o esperado.
Os modelos que empacotei com o próprio módulo estão usando os arquivos de tradução do meu próprio módulo. Os modelos empacotados com o núcleo Magento são mostrados não traduzidos. Se eu adicionar um arquivo de tradução para o respectivo módulo principal, ele será usado e o modelo será traduzido.
Existe uma maneira de fazer o Magento usar o arquivo de tradução do meu módulo se ele não encontrar nenhum arquivo de tradução para o módulo principal do Magento? Há mais alguma coisa que eu possa fazer aqui?
fonte
$this->__()
ouMage::helper('...')->__()
. No primeiro caso, você pode forçar o bloqueio a usar seu auxiliar de tradução. Mas acredito que, em geral, a única opção é a atualização de dados para acore_translate
tabela. Aqui, as perguntas de internacionalização são descritas em detalhes: blog.belvg.com/… .Respostas:
Não importa como você o aborda, seu problema exige uma solução "criativa", digna de uma nota do desenvolvedor para desenvolvedores / mantenedores subsequentes usarem. Primeiro, alguns antecedentes, seguidos de uma nota, seguidos de uma solução fácil e acho razoável no final
<--
tl; dr .Como Zyava apontou , a tradução está sujeita ao módulo que faz a tradução. Os modelos são renderizados em instâncias de bloco e as instâncias de bloco têm uma
module_name
propriedade usada ao chamar a tradução; refMage_Core_Block_Abstract::__()
:A
module_name
propriedade é (normalmente) derivada sob demanda e com base no nome da classe (ref.::getModuleName()
):Portanto, se a
module_name
propriedade já estiver configurada, essa conversão de módulo será aplicada. Para blocos existentes do layout principal, essa propriedade pode ser configurada via XML do layout; por exemplo:Voilà! O seu CSV do módulo possui a tradução para essa instância. Esta poderia ser uma abordagem. Obviamente, ainda existe a situação complicada da tradução de outros módulos sendo aplicada via auxiliar específico do módulo em instâncias de bloco (incluindo arquivos de modelo, é claro), e sempre é verdade para traduções XML de layout. Além disso, essa abordagem interromperá o comportamento Desativar módulos de saída, que usa o
module_name
parâmetroSolução
Como se vê, é possível especificar vários arquivos de tradução para um módulo. Isso não é feito no núcleo (cada módulo declara apenas um arquivo .csv ), mas a funcionalidade está presente em
Mage_Core_Model_Translate
:e
Como o conteúdo dos arquivos é mesclado (eu testei), é possível especificar apenas as strings que você deseja substituir nos seus CSVs personalizados. Por exemplo, se você deseja converter a cadeia de informações adicionais na página do produto (traduzida pelo
Mage_Catalog
módulo), o seguinte funcionaria:app / locale / Custom.csv :
Em seu módulo de configuração - o que deve
<depends />
emMage_Catalog
assegurar o seu conteúdo fundir depois - a seguir fará com que os Custom.csv pares de tradução para fundir em cima do original:O bom dessa abordagem é que você pode coletar suas traduções principais em um arquivo.
fonte