IntlPull
Tutorial
16 min read

PHP Lokalisierung: Vollständiger Array-Basierter i18n Leitfaden (2026)

Meistern Sie PHP-Internationalisierung mit array-basierten Übersetzungen. Lernen Sie Setup, Best Practices, Pluralisierung, Datumsformatierung und Integration mit Laravel, Symfony und WordPress.

IntlPull Team
IntlPull Team
09 Feb 2026, 10:19 AM [PST]
On this page
Summary

Meistern Sie PHP-Internationalisierung mit array-basierten Übersetzungen. Lernen Sie Setup, Best Practices, Pluralisierung, Datumsformatierung und Integration mit Laravel, Symfony und WordPress.

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:

PHP
1<?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:

PHP
1// config/app.php
2
3'locale' => 'de',
4'fallback_locale' => 'en',
5'available_locales' => ['de', 'en', 'fr', 'es'],

3. In Views verwenden:

PHP
1<!-- 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:

PHP
1<?php
2
3App::setLocale('de');
4$locale = App::getLocale();

Symfony Translation-Komponente

Installation (Eigenständig)

Terminal
composer require symfony/translation

Konfiguration

PHP
1<?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)

PHP
1<?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

PHP
1<?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

PHP
1<?php
2
3return [
4    'auth' => [
5        'login' => 'Anmelden',
6        'logout' => 'Abmelden',
7    ],
8];
9
10// Verwendung: __('messages.auth.login')

3. Niemals Übersetzungen Verketten

PHP
1<?php
2
3// ❌ Schlecht
4echo __('messages.welcome') . ' ' . $name . '!';
5
6// ✅ Gut
7echo __('messages.welcome_user', ['name' => $name]);

Integration mit IntlPull

Automatisierter Workflow

Terminal
1# 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:

  1. /lang/{locale}/messages.php Dateien erstellen
  2. Arrays mit Übersetzungsschlüsseln zurückgeben
  3. __('schlüssel') Helper-Funktion verwenden
  4. Pluralisierung mit trans_choice() handhaben
  5. Daten/Zahlen mit Intl-Erweiterung formatieren

IntlPull Kostenlos Testen | PHP Dokumentation

Tags
php
lokalisierung
i18n
laravel
symfony
wordpress
internationalisierung
IntlPull Team
IntlPull Team
Engineering

Building tools to help teams ship products globally. Follow us for more insights on localization and i18n.