Übersetzen Sie den Wartungsmodus pro Website im Setup für mehrere Websites und Domains
Was ist die richtige Methode zum Übersetzen (Lokalisieren) der Wartungsseite in einer Umgebung mit mehreren Websites und Domänen?
Setup's gemacht in:
- MAGENTO_ROOT / index.php
- MAGENTO_ROOT / uk / index.php
- MAGENTO_ROOT / us / index.php
- MAGENTO_ROOT / somecode / index.php
Nehmen wir an, die Geschäfte sind erreichbar über:
- http://MagentoExample.com/index.php (Standard)
- http://MagentoExample.uk/ (uk)
- http://MagentoExample.us/ (us)
- http://MagentoExample.com (Somecode)
Ich sehe leicht ein paar Lösungen dafür, aber alle scheinen eher eine Problemumgehung zu sein als tatsächliche nette, saubere Lösungen.
Wie lösen Sie dieses Problem?
Antworten:
Standardmäßig unterstützt Magento die sofortige Übersetzung von Fehlerseiten nicht und erfordert einige Anpassungen, um solche Funktionen zu ermöglichen. Also technisch gibt es keine richtigen Weg, um dies zu tun.
Da der vollständige Stapel während der Fehlererzeugung NICHT initialisiert wird, funktioniert
$this->__('foobar');
die normale Übersetzungsfunktion in den Vorlagen nicht.Einige Details zur Generierung der Fehlerseiten finden Sie in MageBase:
Eine Möglichkeit ist, einfach
errors/
in jedes Ihrer Unterverzeichnisse Ihre Sprachen zu kopierenuk
,us
usw. , und ändern Sie die Vorlagen , die Sprachen der Website Eintrittspunkt des Endbenutzers zu reflektieren.Notieren Sie sich einfach Ihre
index.php
Ansichten, um die Dokumente mit den subrelativen Fehlern einzuschließen:Beachten Sie auch, dass es eine Basisvorlage für alle Fehler gibt, einschließlich 404 in der
page.html
Es gibt wahrscheinlich elegantere Lösungen, aber da Sie bereits
index.php
für verschiedene Ansichten duplizieren , sind ein paar weitere Dateien möglicherweise nicht zu übersichtlich. Sie können die Vorlagen auch so ändern, dass sie CSS und Bilder der obersten Ebene enthalten, um Redundanz zu sparen.Sie können auch eine
process.php
Sprachdatei wie in Magentos Standardlokalisierung erstellen und die Werte in die Datei einlesen , da dort der Titel und einige andere Daten festgelegt werden, für die eine Lokalisierung erforderlich wäre. Ein einfaches Beispiel für die Verwendung von Varien_File_Csv zum Lesen einer CSV-Sprachdatei:Zusätzlicher Hinweis: Da der Stack zum aktuellen Zeitpunkt der Laufzeit möglicherweise nicht die
Varien_File_Csv
Einbeziehung von Klassen mit der internen PHP-Funktion fgetcsv zulässt möglicherweise eine bessere Alternative.Analysieren Sie die CSV-Sprachdatei, die zum Auffüllen der erforderlichen Daten in der
process.php
Datei erforderlich ist .Eine andere Alternative wäre, einfach Google Übersetzer oder ein solches Drittanbieter-Tool hinzuzufügen, um die Fehlerseiten automatisch in die Sprache des Endbenutzers zu übersetzen.
Verweise:
quelle
Wie bereits erwähnt, gibt es keine einfache Möglichkeit, die Wartungsseite zu übersetzen. Es gibt jedoch eine Problemumgehung (die eine Reihe von Vor- und Nachteilen hat): Verwenden Sie einige der Erweiterungen für den Wartungsmodus, z.
http://www.magentocommerce.com/magento-connect/store-maintenance.html
Es wird die Wartungsmodus-Seite angezeigt, NACHDEM der Magento-Stapel geladen wurde. Dies bedeutet, dass Sie eine Datenbankverbindung und einige andere Dinge benötigen. Aus diesem Grund ist es auch langsamer und erfordert mehr Ressourcen. Wenn dies jedoch kein Problem für Sie darstellt, kann die Wartungsseite vollständig angepasst werden.
quelle
Aktualisieren:
Einen anderen Weg für übersetzte Wartungsseite gefunden:
https://github.com/OpenMage/magento-lts/blob/1.9.3.x/errors/processor.php#L160-L162
Der Konstruktor der Wartungsseite akzeptiert einen
skin
POST-Parameter, um das Layout zu ändern. Es scheint der absichtliche Weg zu sein, aber es ist (noch) nicht dokumentiert ...Fügen Sie Ihrer URL einige Umschreibungsregeln
.htaccess
hinzu, die einenskin
Parameter an Ihre URL anhängen . Z.B.Kopieren
errors/default
nacherrors/french
Vielleicht etwas spät, aber a gute Lösung, ohne das
error
Verzeichnis in jeden Unterordner zu kopieren ..."Nachteile":
processor.php
geändert zum Lesen einer geändertenlocal.xml
.Grundeinstellung
Multi-Website Multi-Store - Set-up wie diese, nur differnce ist , dass ich eingestellt habe
MAGE_RUN_CODE
in.htaccess
stattindex.php
. Für die 1. Domain verwende ich keineRUN_CODE
anderen wie es aussieht ...Zusätzlich zu der verknüpften Antwort musste ich gesetzt
RewriteBase
in.htaccess
Landverzeichnis und bearbeiten anzupassenindex.php
inen
,fr
und ändernzu
Bearbeiten
errors/404.php
,503.php
undreport.php
Ersetzen
mit
Und füge dies hinzu
errors/processor_multiwebsite.php
Neue
local.xml
StrukturAnstatt
<skin>
auf der ersten Ebene zu setzen, suchen Sie zuerst nach dem Runcode / Gebietsschema der WebsiteVorlagen
Fügen Sie
503.phtml
den entsprechenden Verzeichnissen CSS hinzu<runcode>-<locale>
default-default
(Standardsprache der 1. Domain)default-en
default-fr
website1-default
(Standardsprache der 2. Domain)Keine doppelten CSS / Bilder
<skin_base>
Knoten hinzulocal.xml
page.phtml
Dateien von zBhref="css/styles.css"
nach<?php echo $this->getSkinBaseUrl('css/styles.css')?>
quelle