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:
  1. XML-basierte Resourcedatei erstellen
  2. PHP-ResourceManager in die PHP-Seite einbinden
  3. Methode wählen, wie die genutzte Sprache identifiziert werden soll
  4. Prüfen, ob mit PHP-ResourceManager gearbeitet werden kann
  5. An den Stellen, wo sprachabhängiger Text eingefügt werden soll, wird getValue() aufgerufen.

Für die Detailverliebten:
  1. 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 "&amp;auml;">
    <!ENTITY Auml "&amp;Auml;">
    <!ENTITY ouml "&amp;ouml;">
    <!ENTITY Ouml "&amp;Ouml;">
    <!ENTITY uuml "&amp;uuml;">
    <!ENTITY Uuml "&amp;Uuml;">
    <!ENTITY szlig "&amp;szlig;">
    <!ENTITY nbsp "&amp;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&ouml;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.

  2. Binden Sie PHP-ResourceManager in Ihre PHP-Seite ein. Dies kann folgendermaßen aussehen:

    <?php
    require_once($_SERVER['DOCUMENT_ROOT'].'/PHPResourceManager.php');
    ?>


  3. 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.

  4. 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...";
    }
    ?>


  5. 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