PHP-ResourceManager - Wie gehts?
PHP-ResourceManager = Language independent web-programming |
Beschreibung: |
Im Folgenden wird die Einbindung von PHP-ResourceManager in Kurzform und in einer etwas
ausführlicheren Art beschrieben.
Für die Eiligen:
- XML-basierte Resourcedatei erstellen
- PHP-ResourceManager in die PHP-Seite einbinden
- Methode wählen, wie die genutzte Sprache identifiziert werden soll
- Prüfen, ob mit PHP-ResourceManager gearbeitet werden kann
- An den Stellen, wo sprachabhängiger Text eingefügt werden soll, wird getValue() aufgerufen.
Für die Detailverliebten:
- Erstellen Sie zuerst eine Datei, die die Textinhalte beherbergt. Benennen
Sie diese so, dass zuerst ein beliebiger Name, dann ein Punkt, nachfolgend ein
zweistelliger Ländercode (ISO 3166-1 alpha-2)
und abschließend die Extension .xml folgt. Ein passender Dateiname wäre
"strings.de.xml"
Das XML-Schema dieser Resourcedatei hat folgende Merkmale:
<!DOCTYPE resources [
<!ELEMENT resources (resource+)>
<!ELEMENT resource (#PCDATA)>
<!ATTLIST resource key CDATA #REQUIRED>
<!ENTITY auml "&auml;">
<!ENTITY Auml "&Auml;">
<!ENTITY ouml "&ouml;">
<!ENTITY Ouml "&Ouml;">
<!ENTITY uuml "&uuml;">
<!ENTITY Uuml "&Uuml;">
<!ENTITY szlig "&szlig;">
<!ENTITY nbsp "&nbsp;">
]>
Aus dem Schema ist ersichtlich, dass das Root-Element "resources" mindestens einen
Kind-Knoten "resource" besitzen muss. Jeder Knoten "resource" wiederum hat ein Attribut
"key", welches unbedingt vorhanden sein muss. Der Inhalt des Knotens "resource" ist
der Wert. Dieser ändert sich (im Gegensatz zum key) für jede Resourcedatei und
repräsentiert damit die Mehrsprachigkeit.
Für den Beispielsatz "Mehrsprachigkeit in PHP löse ich mit PHP-ResourceManager." sehen
die Resourcedateien für die Sprachen Deutsch und Englisch so aus:
Resourcedatei "strings.de.xml"
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<resource key="myExampleSentence">Mehrsprachigkeit in PHP löse ich mit PHP-ResourceManager.</resource>
</resources>
Resourcedatei "strings.en.xml"
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<resource key="myExampleSentence">I am using PHP-ResourceManager for solving ResourceManageruality-problems.</resource>
</resources>
Achten Sie darauf, für gleiche Inhalte immer die gleichen Keys zu nutzen und
Sonderzeichen zu encodieren. Mehr zum Thema HTML-Encoding können
Sie bspw. bei SelfHtml erlesen.
-
Binden Sie PHP-ResourceManager in Ihre PHP-Seite ein. Dies kann folgendermaßen
aussehen:
<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/PHPResourceManager.php');
?>
-
Wählen Sie eine Methode, wie die genutzte Sprache (Resourcedateien)
identifiziert werden soll. Es gibt dabei zwei Möglichkeiten, zwischen
denen gewählt werden kann.
- PHP-ResourceManager entscheidet selbst anhand der Browsersprachen des Nutzers,
welche Sprache er verwendet. Dabei kann der Webmaster selbst eine Alternativsprache
angeben, die verwendet wird, wenn es keine Resourcedateien für die vom Browser des
Nutzers mitgesendeten Sprachen gibt.
<?php
$defaultLang = "en";
$rm = getResourceManagerByBrowserLanguage("res/strings", $defaultLang);
?>
Im angezeigten Beispiel, wird die Alternativsprache auf Englisch
gesetzt und der Variablen "rm" eine Instanz eines ResourceManagers (je nachdem, ob
auf Ihrem Server PHP4 oder PHP5 läuft) zugewiesen. Die Resourcedateien liegen
im Ordner "res" (Resourcen) und beginnen mit "strings". PHP-ResourceManager kümmert sich
dann selbst, welche Resourcedatei genutzt wird.
- Der Webmaster überläßt die Auswahl der angezeigten
Sprache nicht PHP-ResourceManager, sondern bestimmt programmatisch selbst, welche
Resourcedatei verwendet wird.
<?php
$lang = "en";
$rm = getResourceManagerByResourceFile("res/strings.".$lang.".xml");
?>
Das gezeigt Beispiel unterscheidet sich inhaltlich nur dahingehend, dass
PHP-ResourceManager nicht selbst entscheiden muss, welche Resourcedatei genutzt
wird.
- Prüfen Sie, ob PHP-ResourceManager eine Instanz einer ResourceManager-Klasse
zurückgeben konnte. Falls dies nicht der Fall ist, sollten Sie an dieser Stelle
die Verarbeitung Ihres PHP-Seite abbrechen.
<?php
if(isset($rm) and $rm!=null)
{
?>
<!--Hier fügen Sie nun Ihren Inhalt Ihrer PHP-Seite ein.-->
<?php
}
else
{
echo "WARNING: Could not get an instance of the resource-manager. May be we should redirect to an error-page here...";
}
?>
- An den Stellen innerhalb Ihrer PHP-Seite, an denen sprachabhängiger
Inhalt erscheinen soll, rufen Sie Ihre Inhalte über die im ersten Schritt
erstellten Keys auf.
<?=$rm->getValue("myExampleSentence"); ?>
Im Beispiel wird mit Hilfe der "getValue"-Methode der ResourceManager-Instanz
der Wert des Keys "myExampleSentence" ausgegeben. Ob hier nun der deutsche
oder englische Satz erscheint, hängt davon ab, welche der zwei aufgezeigten
Methoden zur Findung der Resourcedateien Sie verwendet haben.
|
zurück |