PHP/Internationalisierung

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Ein Terminal öffnen

  3. mit Root-Rechten arbeiten

  4. Einen Editor öffnen

  5. PHP installieren und konfigurieren

Inhaltsverzeichnis
  1. Installation
  2. Anwendung
    1. In einem Skript
    2. Systemweit
  3. Problembehebung
    1. Fehlerdiagnose
    2. Fehlerursachen
  4. Links

Die "intl"-Erweiterung 🇬🇧 von PHP ermöglicht es Entwicklern, Aufgabenstellungen, deren Ausgabe sich in verschiedenen Sprachen, oder genauer gesagt in Gebietsschemas, unterscheidet, zu automatisieren. Mit ihr kann man zum Beispiel die in der deutschen Sprache üblichen Formatierungen für Datums- und Zeitangaben, Dezimalzahlen und Währungsangaben korrekt ausgeben lassen. (Siehe auch: i18n.)

Installation

Die Installation der "intl"-Erweiterung erfolgt mit folgendem Paket[1]:

Paketliste zum Kopieren:

sudo apt-get install php-intl 

Oder mit apturl installieren, Link: apt://php-intl

Bei einer serverseitigen Anwendung muss nun der Server neu geladen werden. Bei Apache zum Beispiel so:

sudo systemctl reload apache2 

Anwendung

PHP unterstützt alle Gebietsschemas, deren Sprachpakete unter Ubuntu zuvor installiert worden sind. Die Anwendung in PHP funktioniert nur, wenn man den exakten Sprachpaketnamen verwendet, den auch Ubuntu verwendet. Die im System installierten Sprachpakete und ihre Bezeichnungen erfährt man durch die Eingabe im Terminal[2] von:

locale -a 

Für das Gebietsschema Deutschland lautet die Bezeichnung dann zum Beispiel:

de_DE.UTF-8

In einem Skript

In einer beliebigen PHP-Datei kann man nun den gewünschten Sprachpaketnamen verwenden, zum Beispiel so[3]:

1
2
<?php
setlocale (LC_ALL,'de_DE.UTF-8');

Systemweit

Möchte man ein Gebietsschema als Standard für die gesamte PHP-Installation festlegen, so kann man dies in der PHP-Konfigurationsdatei 🇩🇪 festlegen. Hierfür im PHP-Konfigurationsverzeichnis (siehe: PHP (Abschnitt „Konfiguration“)) eine neue Datei anlegen, zum Beispiel[3]:

sudo touch /etc/php/PHP.VERSION/apache2/conf.d/99-myintl.ini 

Dort folgendes mit einem Editor[4] eingeben:

1
2
[intl]
intl.default_locale = GEWÜNSCHTES_GEBIETSSCHEMA

Für Deutschland sähe der entsprechende Eintrag also so aus:

1
2
[intl]
intl.default_locale = de_DE.UTF-8

Damit diese Änderungen serverseitig wirksam werden, müssen sie dem Webserver mittels dem jeweiligen reload-Befehl bekannt gemacht werden.

Problembehebung

Fehlerdiagnose

PHP gibt keine Fehlermeldungen aus, wenn die Festsetzung des Gebietsschemas fehl schlug. Man kann aber jederzeit in einem Skript überprüfen, ob das Definieren eines Gebietsschemas erfolgreich war. Folgende Funktion gibt das gesetzte Gebietsschema als String 🇩🇪 aus:

1
2
<?php
echo locale_get_default();

Man kann sich auch direkt bei der oben genannten Funktion setlocale() den Rückgabewert ausgeben lassen:

1
2
<?php
var_dump(setlocale (LC_ALL,'de_DE.UTF-8'));

Bei Erfolg wird hier die Bezeichnung des neu gesetzten Gebietsschemas als String ausgegeben. Schlug die Funktion fehl, wird "False" ausgegeben.

Fehlerursachen

Die häufigsten beiden Fehlerursachen sind:

  1. Das angegebene Gebietsschema ist nicht in der Ubuntuinstallation installiert.

  2. Das Gebietsschema wurde nicht exakt so angegeben, wie es in der Ubuntuinstallation bezeichnet wird.

So reicht es zum Beispiel nicht de_DE anzugeben, wenn das Gebietsschema in Ubuntu eigentlich de_DE.UTF-8 lautet. Wie weiter oben unter „Anwendung“ beschrieben, gibt der Befehl locale -a im Terminal alle Bezeichnungen der installierten Sprachpakte aus.