
Laravel i18n: Πλήρης οδηγός διεθνοποίησης και τοπικής προσαρμογής
Από το πρώτο αρχείο locale έως την παραγωγή: ρυθμίστε το σύστημα μετάφρασης του Laravel, χειριστείτε τον πληθυντικό αριθμό, διορθώστε το σφάλμα εναλλακτικής γλώσσας του JSON και προσθέστε έξυπνες αλυσίδες εναλλακτικών locale για τοπικές παραλλαγές.
Κατανοήστε το σύστημα μετάφρασης του Laravel
Το Laravel διαθέτει ενσωματωμένο σύστημα μετάφρασης που υποστηρίζει δύο μορφές αρχείων: πίνακες PHP και JSON. Τα αρχεία PHP χρησιμοποιούν ένθετα κλειδιά οργανωμένα ανά λειτουργία (auth.failed, validation.required). Τα αρχεία JSON χρησιμοποιούν ως κλειδί τη συμβολοσειρά της γλώσσας προέλευσης, κάτι που είναι απλούστερο αλλά δεν υποστηρίζει ένθεση.
composer create-project laravel/laravel my-app
cd my-app
# Laravel includes i18n out of the box
# No extra packages needed for basic usageΡυθμίστε τις επιλογές locale
Ορίστε το προεπιλεγμένο locale και το εναλλακτικό locale της εφαρμογής σας στο config/app.php. Το εναλλακτικό locale χρησιμοποιείται όταν λείπει ένα κλειδί μετάφρασης από το ενεργό locale. Ρυθμίστε τα υποστηριζόμενα locale της εφαρμογής σας και προσθέστε middleware που εντοπίζει και ορίζει το προτιμώμενο locale του χρήστη.
// config/app.php
return [
'locale' => 'en', // Default locale
'fallback_locale' => 'en', // Fallback when key is missing
'faker_locale' => 'en_US',
// Available locales (for your language switcher)
'available_locales' => ['en', 'de', 'ja', 'es', 'fr', 'pt-BR'],
];// app/Http/Middleware/SetLocale.php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class SetLocale
{
public function handle(Request $request, Closure $next)
{
$locale = $request->segment(1); // e.g. /de/about
if (in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return $next($request);
}
}Χρησιμοποιήστε τις συναρτήσεις μετάφρασης
Το Laravel παρέχει τρεις τρόπους μετάφρασης συμβολοσειρών: τη βοηθητική συνάρτηση __() (συνιστάται), τη συνάρτηση trans() και την οδηγία Blade @lang. Και οι τρεις δέχονται το κλειδί μετάφρασης και προαιρετικές παραμέτρους αντικατάστασης. Χρησιμοποιήστε το __() σε κώδικα PHP και πρότυπα Blade και το @lang στο Blade όταν δεν χρειάζεται διαφυγή του HTML.
// lang/en/messages.php
return [
'welcome' => 'Welcome to our application',
'greeting' => 'Hello, :name!',
'nav' => [
'home' => 'Home',
'about' => 'About',
'settings' => 'Settings',
],
];
// lang/de/messages.php
return [
'welcome' => 'Willkommen in unserer Anwendung',
'greeting' => 'Hallo, :name!',
'nav' => [
'home' => 'Startseite',
'about' => 'Über uns',
'settings' => 'Einstellungen',
],
];Χειριστείτε τον πληθυντικό αριθμό
Το Laravel χρησιμοποιεί σύνταξη με κατακόρυφες γραμμές για τις μορφές πληθυντικού. Η απλούστερη μορφή είναι 'apples' => 'There is one apple|There are many apples'. Για ρητά εύρη, χρησιμοποιήστε 'apples' => '{0} No apples|{1} One apple|[2,*] :count apples'. Η βοηθητική συνάρτηση trans_choice() ή η Str::plural() επιλέγει τη σωστή μορφή βάσει του πλήθους.
// lang/en.json
{
"Welcome back!": "Welcome back!",
"You have :count new notifications": "You have :count new notifications",
"Copyright :year :company": "Copyright :year :company"
}
// lang/de.json
{
"Welcome back!": "Willkommen zurück!",
"You have :count new notifications": "Sie haben :count neue Benachrichtigungen",
"Copyright :year :company": "Copyright :year :company"
}Προσθέστε αλυσίδες εναλλακτικών locale
Η ενσωματωμένη εναλλακτική γλώσσα του Laravel μεταβαίνει μόνο από το ενεργό locale στο fallback_locale — δεν υπάρχει ενδιάμεσο βήμα. Ένας χρήστης του pt-BR, όταν λείπει ένα κλειδί, βλέπει Αγγλικά αντί για την απολύτως κατάλληλη μετάφραση pt-PT. Το laravel-locale-chain διορθώνει το πρόβλημα συγχωνεύοντας σε βάθος τις μεταφράσεις μιας ρυθμιζόμενης αλυσίδας εναλλακτικών locale κατά τη φόρτωση.
{{-- Simple translation --}}
<h1>{{ __('messages.welcome') }}</h1>
{{-- With variables --}}
<p>{{ __('messages.greeting', ['name' => $user->name]) }}</p>
{{-- Using @lang directive --}}
<h2>@lang('messages.nav.home')</h2>
{{-- JSON translations (use the string itself as key) --}}
<p>{{ __('Welcome back!') }}</p>
{{-- Pluralization --}}
{{ trans_choice('{0} No items|{1} One item|[2,*] :count items', $count) }}
{{-- Inside Blade components --}}
<x-button>{{ __('messages.nav.settings') }}</x-button>Αυτοματοποιήστε τις μεταφράσεις
Αφού ολοκληρώσετε τη ρύθμιση i18n του Laravel, μεταφράστε τα αρχεία locale με τη χρήση AI. Υποδείξτε στον βοηθό AI το αρχείο του locale προέλευσης ή χρησιμοποιήστε το i18n Agent CLI στο pipeline CI/CD. Υποστηρίζονται αρχεία μετάφρασης PHP και JSON.
// Install locale chain package
composer require i18n-agent/laravel-locale-chain
// config/locale-chain.php
return [
'chains' => [
'pt-BR' => ['pt-BR', 'pt', 'en'],
'zh-Hant-TW' => ['zh-Hant-TW', 'zh-Hant', 'zh', 'en'],
'es-419' => ['es-419', 'es', 'en'],
],
];
// In AppServiceProvider::boot()
use I18nAgent\LocaleChain\LocaleChainServiceProvider;
// The package automatically deep-merges translations
// across the chain: pt-BR -> pt -> enΣυνήθεις παγίδες
Σκληροκωδικοποιημένη λογική ενικού και πληθυντικού
Οι μεταφράσεις JSON δεν χρησιμοποιούν εναλλακτικό locale
Ανάμειξη PHP και JSON χωρίς κατανόηση της προτεραιότητας
Δοκιμάστε τώρα το i18n Agent
Αφήστε εδώ το αρχείο μετάφρασής σας
JSON, YAML, PO, XML, CSV, Markdown, Properties
ή κάντε κλικ για να επιλέξετε αρχείο
Γλώσσες-στόχοι