Traduire le mode de maintenance par site Web dans la configuration multi-sites Web multi-domaines
Quelle est la bonne façon de traduire la page de maintenance (de localisation) dans un environnement multi-site Web et multi-domaine?
La configuration est transformée en:
- MAGENTO_ROOT / index.php
- MAGENTO_ROOT / uk / index.php
- MAGENTO_ROOT / us / index.php
- MAGENTO_ROOT / somecode / index.php
Supposons que les magasins soient accessibles via:
- http://MagentoExample.com/index.php (par défaut)
- http://MagentoExample.uk/ (uk)
- http://MagentoExample.us/ (nous)
- http://MagentoExample.com (certains codes)
Je peux facilement voir quelques solutions pour cela, mais toutes semblent être plus une solution de contournement que de belles solutions propres et réelles.
Comment résolvez-vous ce problème?
Réponses:
Par défaut, Magento ne prend pas en charge la traduction prête à l'emploi pour les pages d'erreur et nécessite certaines personnalisations pour permettre de telles fonctionnalités. Donc, techniquement, il n'y a pas de moyen approprié de le faire.
Étant donné que la pile complète n'est PAS initialisée lors de la génération d'erreur, la fonctionnalité de traduction normale
$this->__('foobar');
ne fonctionnera pas dans les modèles.Quelques détails sur la façon dont les pages d'erreur sont générées peuvent être trouvés sur MageBase:
Une option consiste à copier simplement
errors/
dans chacun de vos sous-répertoires de vos languesuk
,us
etc., et à modifier les modèles pour refléter les langues du point d'entrée du site Web de l'utilisateur final.Notez simplement votre
index.php
de chaque vue pour inclure les documents relatifs aux erreurs relatives:Sachez également qu'il existe un modèle de base pour toutes les erreurs, y compris 404 dans le
page.html
Il existe probablement des solutions plus élégantes, mais comme vous dupliquez déjà
index.php
pour différentes vues, quelques fichiers supplémentaires peuvent ne pas être trop encombrants. Vous pouvez également modifier les modèles pour inclure le CSS et les images de niveau supérieur pour enregistrer une certaine redondance.Vous pouvez également créer un fichier de langue comme vous le faites dans la localisation standard de Magento et lire les valeurs avec le
process.php
fichier, car le titre et d'autres données qui nécessiteraient une localisation y sont définis. Un exemple simple d'utilisation de Varien_File_Csv pour lire un fichier .CSV de langue:Remarque supplémentaire: Étant donné que la pile au point d'exécution en cours peut ne pas permettre l'
Varien_File_Csv
inclusion de classe à l'aide de la fonction PHP interne, fgetcsv peut être une meilleure alternative.Et analysez le fichier CSV de langue nécessaire pour remplir les données requises dans le
process.php
fichier.Une autre alternative serait d'ajouter simplement Google translate ou un tel outil tiers pour traduire automatiquement les pages d'erreur dans la langue de l'utilisateur final.
Les références:
la source
Comme mentionné précédemment, il n'y a pas de moyen facile de traduire la page de maintenance. Il existe cependant une solution de contournement (qui a son propre nombre d'avantages / inconvénients) - utilisez certaines des extensions du mode de maintenance, comme celle-ci:
http://www.magentocommerce.com/magento-connect/store-maintenance.html
Il affiche la page du mode de maintenance APRÈS que la pile Magento a été chargée, ce qui signifie que vous devez avoir une connexion à la base de données et quelques autres choses. De ce fait, il est également plus lent et nécessite plus de ressources. Mais si ce n'est pas un problème pour vous, cela rend la page de maintenance entièrement personnalisable.
la source
Mise à jour:
Trouvé une autre façon de traduire la page de maintenance:
https://github.com/OpenMage/magento-lts/blob/1.9.3.x/errors/processor.php#L160-L162
Le constructeur de la page de maintenance accède à un
skin
paramètre POST pour modifier la disposition. Cela semble être la voie intentionnelle, mais ce n'est pas (encore) documenté ...Ajoutez des règles de réécriture à votre
.htaccess
qui ajoutent unskin
paramètre à votre URL. Par exemple.Copier
errors/default
verserrors/french
Peut-être un peu en retard, mais une bonne solution de travail, sans copier le
error
répertoire dans chaque sous-dossier ..."Inconvénients":
processor.php
pour lire un fichier modifiélocal.xml
.Configuration de base
Configuration multi-sites Web multi-magasins comme celle-ci, la seule différence est que je l'ai installé
MAGE_RUN_CODE
à la.htaccess
place deindex.php
. Pour le 1er domaine, je n'utilise pasRUN_CODE
tous les autres, cela ressemble à ...En plus de la réponse liée que je devais mettre
RewriteBase
en.htaccess
correspondre répertoire locale et modifierindex.php
dansen
,fr
et le changementà
Modifier
errors/404.php
,503.php
etreport.php
Remplacer
avec
Et ajoutez ceci à
errors/processor_multiwebsite.php
Nouvelle
local.xml
structureAu lieu de définir
<skin>
au premier niveau, recherchez d'abord les sites Web runcode / localeModèles
Ajouter
503.phtml
, ..., CSS aux répertoires correspondants<runcode>-<locale>
default-default
(Langue par défaut du 1er domaine)default-en
default-fr
website1-default
(Langue par défaut du 2ème domaine)Pas de CSS / images en double
<skin_base>
nœud àlocal.xml
page.phtml
fichiers de iehref="css/styles.css"
à<?php echo $this->getSkinBaseUrl('css/styles.css')?>
la source