osob.de Unicorn Logo
Blogpost overview

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.

You like what you find here? A donation helps to keep this project running.

Überblick über basteyy PHP I18n

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.

Installation

Um loszulegen, installieren Sie das Paket über Composer:

composer require basteyy/php-i18n

Verwendung

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.

Beispiel Übersetzungsdatei

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"

Beispiel PHP-Code

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

Übersetzung Ihrer Anwendung oder Website

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.

Generieren von Übersetzungsdateien

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

Zusätzliche Optionen

Sie können die folgenden Optionen dem Befehl anhängen:

Beispiel:

php vendor/basteyy/php-i18n/src/bin/I18nBaker /var/www/src/templates/ /var/www/src/translations/dk_DK.ini --no-comments

Zukünftige Verbesserungen

Hier sind einige Verbesserungen, die ich in Zukunft vornehmen möchte:

Fazit

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.