Thema: Mehrsprachigkeit

In der aktuellen Version ist die Anlage einer mehrsprachigen Webpräsenz nicht integraler Bestandteil der Bedienoberfläche/des Welcompose Cores. Dennoch ist es möglich mit Welcompose mehrsprachige Webauftritte zu erstellen und zu verwalten,- wenn auch ohne den Komfort einer integralen Lösung.

Folgender Ansatz wird empfohlen bei der Anlage mehrsprachiger Webseiten:

Mit Welcompose können mehrere Projekte angelegt werden, die unter einer gemeinsamen Oberfläche verwaltet werden. Auch wenn dieses Feature nicht im Hinblick auf multilinguale Webseitenerstellung ausgelegt war/ist, kann es dennoch hierzu genutzt werden.

Im wesentlichen sind folgende Bereiche der Software betroffen/werden genutzt:

- Apache Modul url_rewrite (Um virtuelle Verzeichnisse abzubilden)
- sys.inc.php (Die zentrale Konfigurationsdatei von Welcompose)
- .htaccess (Konfigurationsdatei, in der wir die virtuelle Verzeichnisse zuordnen)

1. Benennen Sie Ihr bestehendes Projekt um (Benennen Sie das Projekt möglichst prägnant, da wir es später als virtuelles Verzeichnis nutzen). Beispiel: de (für deutsch), en (für englisch)

2. Legen Sie ein neues Projekt an (Benennen Sie das Projekt möglichst prägnant, s.o.)

3. Legen Sie Navigation(en), Seiten und Vorlagen für Ihr neues Projekt an.

4. Öffnen Sie die /core/conf/sys.inc.php und kopieren (sofern nicht schon geschehen) das Beispiel aus dem Handbuch (Kapitel 13.4, URL Rewriting, Konfigurationsbeispiele) und ersetzen den Abschnitt unter dem Konfigurationpunkt [urls].

5. Nun fügen Sie dem eingefügten Block zusätzlich die Konfigurationsvariable <project_name> hinzu.

(Die Beispiele beziehen sich alle auf das im Handbuch-Beispiel angegebene Pfadlayout)

[urls]
simple_page_index = "http://example.com/page/<page_name>/"
...

wird zu

[urls]
simple_page_index = "http://example.com/<project_name>/page/<page_name>/"
...

(analog hierzu fügen Sie bitte den weiteren Url-Mustern diese Variable ebenfalls hinzu)

6. Passen Sie den Inhalt Ihrer im Root liegenden .htaccess Datei an (oder legen sie an), um das geänderte Pfadlayout zu reflektieren, in dem sie das zuvor genutzte Beispiel aus dem Handbuch (Kapitel 13.4, URL Rewriting, Konfigurationsbeispiele) durch den unten stehenden Block ersetzen.

RewriteEngine On

RewriteCond     %{REQUEST_URI}  ^/gtpls/([a-z0-9\,\_\.\s\-]+)$
RewriteRule     ^               /global_template.php?name=%1

# Der Projektname wird dynamisch gesetzt und als ULR-Paramater uebergeben
RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\.\-]+)/page/([a-z0-9\-]+)(/?)$
RewriteRule     ^               /index.php?project_name=%1&action=Index&page_name=%2

# Startseite abzufangen
RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\.\-]+)/(/?)$
RewriteRule     ^               /index.php?project_name=%1&action=Index

# blog in root
RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\-]+)/offset/([0-9]+)(/?)$
RewriteRule     ^               /index.php?project_name=%1&action=Index&start=%2

RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\-]+)/tag/([a-z0-9\-]+)(/?)$
RewriteRule     ^               /index.php?project_name=%1&action=Index&tag=%2

RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\-]+)/tag/([a-z0-9\-]+)/offset/([0-9]+)(/?)$
RewriteRule     ^               /index.php?project_name=%1&action=Index&tag=%2&start=%3

RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\-]+)/([0-9]+)/([0-9]+)/([0-9]+)/([a-z0-9\_\.\-]+)(/?)$
RewriteRule     ^               /index.php?project_name=%1&action=Item&posting_year_added=%2&posting_month_added=%3&posting_day_added=%4&posting_title=%5

RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\-]+)/([0-9]+)(/?)$
RewriteRule     ^               /index.php?project_name=%1&action=ArchiveYear&posting_year_added=%2&

RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\-]+)/([0-9]+)/([0-9]+)(/offset/([0-9]+))?(/?)$
RewriteRule     ^               /index.php?project_name=%1&action=ArchiveMonth&posting_year_added=%2&posting_month_added=%3&start=%5

RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\-]+)/(Rss20|Atom10|CommentsRss20|CommentsAtom10)(/?)$
RewriteRule     ^               /index.php?project_name=%1&action=%2

RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\-]+)/(Rss20|Atom10|CommentsRss20|CommentsAtom10)/tag/([a-z0-9\-]+)(/?)$
RewriteRule     ^               /index.php?project_name=%1&action=%2&tag=%3

# blog in tree
RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\-]+)/page/([a-z0-9\-]+)/offset/([0-9]+)(/?)$
RewriteRule     ^               /index.php?project_name=%1&page_name=%2&action=Index&start=%3

RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\-]+)/page/([a-z0-9\-]+)/tag/([a-z0-9\-]+)(/?)$
RewriteRule     ^               /index.php?project_name=%1&page_name=%2&action=Index&tag=%3

RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\-]+)/page/([a-z0-9\-]+)/tag/([a-z0-9\-]+)/offset/([0-9]+)(/?)$
RewriteRule     ^               /index.php?project_name=%1&page_name=%2&action=Index&tag=%3&start=%4

RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\-]+)/page/([a-z0-9\-]+)/([0-9]+)/([0-9]+)/([0-9]+)/([a-z0-9\_\.\-]+)(/?)$
RewriteRule     ^               /index.php?project_name=%1&page_name=%2&action=Item&posting_year_added=%3&posting_month_added=%4&posting_day_added=%5&posting_title=%6

RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\-]+)/page/([a-z0-9\-]+)/([0-9]+)(/?)$
RewriteRule     ^               /index.php?project_name=%1&page_name=%2&action=ArchiveYear&posting_year_added=%3

RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\-]+)/page/([a-z0-9\-]+)/([0-9]+)/([0-9]+)(/offset/([0-9]+))?(/?)$
RewriteRule     ^               /index.php?project_name=%1&page_name=%2&action=ArchiveMonth&posting_year_added=%3&posting_month_added=%4&start=%6

RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\-]+)/page/([a-z0-9\-]+)/(Rss20|Atom10|CommentsRss20|CommentsAtom10)(/?)$
RewriteRule     ^               /index.php?project_name=%1&page_name=%2&action=%3

RewriteCond     %{REQUEST_URI}  ^/([a-z0-9\-]+)/page/([a-z0-9\-]+)/(Rss20|Atom10|CommentsRss20|CommentsAtom10)/tag/([a-z0-9\-]+)(/?)$
RewriteRule     ^               /index.php?project_name=%1&page_name=%2&action=%3&tag=%4

Ein Beispiel-URL im Browser, gehen wir davon aus, das wir ein Projekt beispielsweise mit de benannt hätten, würde dementsprechend dann so aussehen:

http://example.com/de/page/<der-name-einer-inhaltlichen-seite/"

7. Setzen Sie in den jeweiligen Projekten entsprechende Links auf die jeweilige Sprachversion (korrekt: Projekt) um zwischen den Sprachversionen wechseln zu können.

Damit sind die Arbeiten abgeschlossen.

Vorteile:
- Relativ unkomplizierte Möglichkeit mit der aktuellen Welcompose Version (0.8.x, 0.9.x) mulitilinguale Webpräsenzen zu realisieren und zu verwalten.

Nachteile:
- Es wird nur 1 Logfile geschrieben
- Alle Seiten/Vorlagen müssen redundant neu angelegt werden
- Verlinkungen zwischen den Projekten sind nur manuell möglich
- Content Negotiation wird nicht berücksichtigt, bzw. ist nicht implementiert
- Es gibt kein Fallback, wenn eine Seite nicht in beiden Sprachen (Projekten) vorhanden ist
- Da es zum Zeitpunkt des Logins noch keine Projektvariable gibt, muss das Admin-Interface explizit über http://domain.tld/admin/login.php aufgerufen werden