Traduzir Modo de manutenção por site na configuração de vários sites e vários domínios
Qual é a maneira correta de traduzir a página de Manutenção (localização) em um ambiente de vários sites e vários domínios?
A instalação é feita em:
- MAGENTO_ROOT / index.php
- MAGENTO_ROOT / uk / index.php
- MAGENTO_ROOT / us / index.php
- MAGENTO_ROOT / somecode / index.php
Vamos supor que as lojas sejam acessíveis através de:
- http://MagentoExample.com/index.php (padrão)
- http://MagentoExample.uk/ (uk)
- http://MagentoExample.us/ (nos)
- http://MagentoExample.com (somecode)
Eu posso ver facilmente algumas soluções para isso, mas todos parecem ser uma solução alternativa do que soluções limpas e agradáveis.
Como você resolve esse problema?
Respostas:
Por padrão, o Magento não suporta tradução pronta para páginas de erro e requer algumas personalizações para permitir esses recursos. Portanto, tecnicamente, não há maneira adequada de fazer isso.
Como a pilha completa NÃO é inicializada durante a geração de erros, a funcionalidade de tradução normal
$this->__('foobar');
não funcionará nos modelos.Alguns detalhes sobre como as páginas de erro são geradas podem ser encontrados no MageBase:
Uma opção é simplesmente copiar
errors/
em cada um dos seus sub-diretórios de suas línguasuk
,us
etc. e modificar os modelos para refletir as línguas do ponto de entrada website do usuário final.Observe
index.php
cada uma das visualizações para incluir os documentos de erros relativos relativos:Lembre-se também de que existe um modelo básico para todos os erros, incluindo 404 no
page.html
Provavelmente, existem soluções mais elegantes, mas como você já está duplicando
index.php
para visualizações diferentes, mais alguns arquivos podem não ser muito complicados. Você também pode modificar os modelos para incluir CSS e imagens de nível superior para economizar redundância.Você também pode criar um arquivo de idioma da mesma forma que na localização padrão do Magento e ler os valores com o
process.php
arquivo, pois o título e alguns outros dados que precisariam de localização estão sendo definidos lá. Um exemplo simples de uso de Varien_File_Csv para ler um arquivo .CSV de idioma:Nota adicional: Como a pilha no ponto atual do tempo de execução pode não permitir a
Varien_File_Csv
inclusão de classe usando a função PHP interna fgetcsv, pode ser uma alternativa melhor.E analise o arquivo CSV do idioma necessário para preencher os dados necessários no
process.php
arquivo.Outra alternativa seria simplesmente adicionar o Google translate ou essa ferramenta de terceiros para traduzir automaticamente as páginas de erro no idioma do usuário final.
Referências:
fonte
Como mencionado anteriormente, não há uma maneira fácil de traduzir a página de manutenção. No entanto, existe uma solução alternativa (que possui seu próprio número de vantagens / desvantagens) - use algumas das extensões do modo de manutenção, como esta:
http://www.magentocommerce.com/magento-connect/store-maintenance.html
Ele exibe a página do modo de manutenção APÓS a pilha do Magento ter sido carregada, o que significa que você precisa ter conexão com o banco de dados e algumas outras coisas. Por isso, também é mais lento e requer mais recursos. Mas se isso não for um problema para você, a página de manutenção será totalmente personalizada.
fonte
Atualizar:
Encontrou outra maneira de página de manutenção traduzida:
https://github.com/OpenMage/magento-lts/blob/1.9.3.x/errors/processor.php#L160-L162
O construtor da página de manutenção aceita um
skin
parâmetro POST para alterar o layout. Parece ser o caminho intencional, mas ainda não está documentado ...Adicione algumas regras de reescrita ao seu
.htaccess
que adicionem umskin
parâmetro ao seu URL. Por exemplo.Copiar
errors/default
paraerrors/french
Talvez um pouco tarde, mas uma boa solução de trabalho, sem copiar o
error
diretório para todas as subpastas ..."Desvantagens":
processor.php
para ler uma modificaçãolocal.xml
.Configuração básica
Configuração de várias lojas e vários sites como esse, a única diferença é que eu configurei
MAGE_RUN_CODE
em.htaccess
vez deindex.php
. Para o 1º domínio, eu não usoRUN_CODE
todos os outros que parecem ...Além da resposta vinculada eu tive que definir
RewriteBase
em.htaccess
combinar diretório local e editarindex.php
emen
,fr
e mudançapara
Editar
errors/404.php
,503.php
ereport.php
Substituir
com
E adicione isso a
errors/processor_multiwebsite.php
Nova
local.xml
estruturaEm vez de definir
<skin>
no primeiro nível, procure primeiro o código de idioma / local dos sitesModelos
Adicione
503.phtml
, ..., CSS aos diretórios correspondentes<runcode>-<locale>
default-default
(Idioma padrão do 1º domínio)default-en
default-fr
website1-default
(Idioma padrão do segundo domínio)Sem CSS / imagens duplicadas
<skin_base>
nó aolocal.xml
page.phtml
arquivos de iehref="css/styles.css"
para<?php echo $this->getSkinBaseUrl('css/styles.css')?>
fonte