Simple PHP I18n Implementation | 20.05.2024
Als Entwickler stehen wir oft vor der Herausforderung, unsere Anwendungen für ein globales Publikum zugänglich zu machen. Internationalisierung (i18n) ist ein entscheidender Schritt in diesem Prozess. Heute freue ich mich, Ihnen ein unkompliziertes, aber leistungsstarkes PHP i18n-Paket vorzustellen, das ich erstellt habe, um diese Aufgabe zu vereinfachen. Inspiriert von Cakes __()
-Funktion bietet dieses Paket einen benutzerfreundlichen Ansatz zur Behandlung von Übersetzungen in kleinen bis mittelgroßen PHP-Projekten.
Als langjähriger CakePHP-Benutzer habe ich mit der __()
-Funktion begonnen. Mir gefiel der Ansatz für kleine Projekte und habe dieses kleine Paket für meine eigenen Projekte erstellt.
Mit diesem Paket können Sie die __()
-Funktion in Ihrem Code verwenden. Wenn Übersetzungen noch nicht erstellt wurden, wird der Originaltext zurückgegeben. Sobald Sie Übersetzungen hinzufügen, wird die entsprechende Übersetzung zurückgegeben.
Um loszulegen, installieren Sie das Paket über Composer:
composer require basteyy/php-i18n
Die Übersetzungsdateien sind im INI-Format. Die Schlüssel für Übersetzungen werden mit dem xxh3-Algorithmus gehasht, der derzeit der schnellste Hashing-Algorithmus für PHP ist.
Hier ist ein Beispiel einer deutschen (de_DE
) Übersetzungsdatei:
; Inhalt von /var/www/lang/de_DE.ini
; Original: Add
2519a9e8bc4544e5 = "Hinzufügen"
; Original: Remove
d93080c2fe513df2 = "Entfernen"
; Original: Remove %s Items
4937f99272d45d21 = "%s Dinge entfernen"
So können Sie das Paket in Ihrem PHP-Code verwenden:
// Inhalt von /var/www/index.php
use basteyy\I18n\I18n;
I18n::addTranslationFolder(__DIR__ . '/lang/');
I18n::addTranslationFolder(__DIR__ . '/another_folder/');
I18n::setTranslationLanguage('de_DE');
echo __('Add');
// Ergebnis: Hinzufügen
echo __("Remove");
// Ergebnis: Entfernen
echo __('Remove %s Item\'s ', 3212);
// Ergebnis: 3212 Dinge entfernen
echo __('A new string');
// Ergebnis: A new string
echo __('A new string with placeholder %s', 'inside');
// Ergebnis: A new string with placeholder inside
Um Ihre Anwendung oder Website zu übersetzen, können Sie das bereitgestellte Bash-Skript verwenden, um die Übersetzungsdatei zu generieren. Dies ist eine einfache Lösung und sollte mit Vorsicht verwendet werden, da sie bei komplexen Fällen versagen könnte.
Verwenden Sie den folgenden Shell-Befehl, um eine Übersetzungsdatei zu generieren:
php vendor/basteyy/php-i18n/src/bin/I18nBaker source_folder target_file options --no-comments
Wenn sich Ihre zu übersetzenden Dateien beispielsweise in /var/www/src/templates/
befinden und Sie die Übersetzungsdatei unter /var/www/src/translations/dk_DK.ini
speichern möchten, verwenden Sie diesen Befehl:
php vendor/basteyy/php-i18n/src/bin/I18nBaker /var/www/src/templates/ /var/www/src/translations/dk_DK.ini
Sie können die folgenden Optionen dem Befehl anhängen:
--no-comments
gibt eine Übersetzungsdatei ohne Kommentare aus.Beispiel:
php vendor/basteyy/php-i18n/src/bin/I18nBaker /var/www/src/templates/ /var/www/src/translations/dk_DK.ini --no-comments
Hier sind einige Verbesserungen, die ich in Zukunft vornehmen möchte:
Das basteyy PHP I18n-Paket bietet eine einfache, aber effektive Möglichkeit, Übersetzungen in PHP-Projekten zu handhaben. Durch die Verwendung dieses Pakets können Sie sicherstellen, dass Ihre Anwendung mit minimalem Aufwand für ein globales Publikum bereit ist. Besuchen Sie das GitHub-Repository für weitere Details und um noch heute mit Ihrer Internationalisierungsreise zu beginnen.