Schnelle Antwort
Um eine PHP-Anwendung zu lokalisieren, verwenden Sie array-basierte Übersetzungsdateien. Speichern Sie Übersetzungen in PHP-Arrays (/lang/de/messages.php), erstellen Sie eine Übersetzungs-Helper-Funktion und verwenden Sie sie in Ihrer gesamten App. Für Frameworks: Laravel hat den integrierten __('schlüssel') Helper, Symfony verwendet die Translation-Komponente, WordPress verwendet __('text', 'domain'). Dieser Ansatz ist einfach, schnell und funktioniert mit jeder PHP-Version.
Grundlegende Einrichtung: Einfaches PHP
Übersetzungsdateien Erstellen
Verzeichnisstruktur:
/lang
/de
messages.php
validation.php
/en
messages.php
validation.php
lang/de/messages.php:
PHP1<?php 2 3return [ 4 'welcome' => 'Willkommen in unserer Anwendung', 5 'goodbye' => 'Auf Wiedersehen, :name!', 6 'items_count' => '{0} Keine Artikel|{1} Ein Artikel|[2,*] :count Artikel', 7 8 'auth' => [ 9 'login' => 'Anmelden', 10 'logout' => 'Abmelden', 11 'register' => 'Registrieren', 12 ], 13 14 'nav' => [ 15 'home' => 'Startseite', 16 'about' => 'Über Uns', 17 'contact' => 'Kontakt', 18 ], 19];
Laravel Lokalisierung
Laravel hat integrierte Lokalisierung basierend auf Arrays.
Einrichtung
1. Übersetzungsdateien erstellen:
/lang
/de
messages.php
/en
messages.php
2. Standard-Locale konfigurieren:
PHP1// config/app.php 2 3'locale' => 'de', 4'fallback_locale' => 'en', 5'available_locales' => ['de', 'en', 'fr', 'es'],
3. In Views verwenden:
PHP1<!-- Blade Template --> 2<h1>{{ __('messages.welcome') }}</h1> 3<p>{{ __('messages.goodbye', ['name' => $user->name]) }}</p> 4 5<!-- Pluralisierung --> 6<p>{{ trans_choice('messages.items_count', $count) }}</p>
4. Locale dynamisch ändern:
PHP1<?php 2 3App::setLocale('de'); 4$locale = App::getLocale();
Symfony Translation-Komponente
Installation (Eigenständig)
Terminalcomposer require symfony/translation
Konfiguration
PHP1<?php 2 3use SymfonyComponentTranslationTranslator; 4use SymfonyComponentTranslationLoaderPhpFileLoader; 5 6$translator = new Translator('de'); 7$translator->addLoader('php', new PhpFileLoader()); 8$translator->addResource('php', __DIR__ . '/lang/de/messages.php', 'de', 'messages'); 9 10echo $translator->trans('welcome', [], 'messages');
WordPress Lokalisierung
Traditionelle Methode (Gettext)
PHP1<?php 2 3echo __('Willkommen auf unserer Website', 'mein-theme'); 4printf(__('Hallo, %s!', 'mein-theme'), $name); 5echo _n('%s Artikel', '%s Artikel', $count, 'mein-theme');
Datums- und Zahlenformatierung
PHP Intl-Erweiterung
PHP1<?php 2 3$locale = 'de_DE'; 4 5// Datumsformatierung 6$formatter = new IntlDateFormatter( 7 $locale, 8 IntlDateFormatter::LONG, 9 IntlDateFormatter::NONE 10); 11echo $formatter->format(new DateTime()); // "7. Februar 2026" 12 13// Zahlenformatierung 14$numberFormatter = new NumberFormatter($locale, NumberFormatter::DECIMAL); 15echo $numberFormatter->format(1234.56); // "1.234,56" 16 17// Währungsformatierung 18$currencyFormatter = new NumberFormatter($locale, NumberFormatter::CURRENCY); 19echo $currencyFormatter->formatCurrency(1234.56, 'EUR'); // "1.234,56 €"
Best Practices
1. Übersetzungsdateien Organisieren
/lang
/de
messages.php # Allgemeine UI-Strings
validation.php # Validierungsnachrichten
auth.php # Authentifizierungsnachrichten
2. Verschachtelte Arrays Verwenden
PHP1<?php 2 3return [ 4 'auth' => [ 5 'login' => 'Anmelden', 6 'logout' => 'Abmelden', 7 ], 8]; 9 10// Verwendung: __('messages.auth.login')
3. Niemals Übersetzungen Verketten
PHP1<?php 2 3// ❌ Schlecht 4echo __('messages.welcome') . ' ' . $name . '!'; 5 6// ✅ Gut 7echo __('messages.welcome_user', ['name' => $name]);
Integration mit IntlPull
Automatisierter Workflow
Terminal1# Strings aus Code extrahieren 2php artisan intlpull:extract 3 4# Zu IntlPull hochladen 5php artisan intlpull:upload 6 7# Mit KI übersetzen 8php artisan intlpull:translate 9 10# Übersetzungen herunterladen 11php artisan intlpull:download
Häufig Gestellte Fragen
Sollte ich gettext oder PHP-Arrays verwenden?
Verwenden Sie PHP-Arrays für die meisten Projekte. Sie sind einfacher, schneller und benötigen keine PHP-Erweiterungen. Verwenden Sie gettext nur, wenn Sie Kompatibilität mit bestehenden Tools benötigen.
Wie handhabe ich Pluralisierung in PHP?
Verwenden Sie trans_choice() von Laravel oder trans() von Symfony mit ICU-Nachrichtenformat. Für einfaches PHP implementieren Sie einen einfachen Parser, der {0}, {1} und [2,*] Syntax verarbeitet.
Fazit
PHP-Lokalisierung ist einfach mit array-basierten Übersetzungen.
Schneller Überblick:
/lang/{locale}/messages.phpDateien erstellen- Arrays mit Übersetzungsschlüsseln zurückgeben
__('schlüssel')Helper-Funktion verwenden- Pluralisierung mit trans_choice() handhaben
- Daten/Zahlen mit Intl-Erweiterung formatieren
