EN
Settings

Choose how you want to view this website.

Language

Select your preferred language for this website.

Localizare în Laravel: fișiere lang, locale și fallback

Dezvoltare web și Laravel

Discussion · Ionel Nistor · 52 minutes ago · 4 views

dezvoltare localizare i18n limba

Editorial knowledge-base article. This is not a simulated community conversation.

Aplicațiile publice în română pot adăuga ulterior engleză sau invers; localizarea bine făcută separă textul de logică. Laravel oferă helperi `__()`, `@lang` și fișiere PHP/JSON în `lang/`. Discuția acoperă fallback, locale dinamic și capcanele la validare, plus cum eviți stringuri englezești rămase în UI după switch la ro.

Organizarea cheilor



Grupează chei pe domeniu (`forum.php`, `auth.php`) în loc de un fișier uriaș. Chei descriptive (`thread.reply_count`) bat propoziții întregi ca index. Pentru texte scurte UI, JSON lang poate fi mai ușor de exportat către traducători. Evită concatenarea stringurilor traduse cu bucăți dinamice în ordine fixă — folosește placeholders `:name`. Verifică periodic chei orfane după refactor — un `__()` către cheie inexistentă rupe încrederea în traducere.

Setarea locale la runtime



Middleware poate citi preferința utilizatorului, segment de URL (`/en/forum`) sau header Accept-Language. `App::setLocale()` trebuie apelat devreme în request. Fallback locale asigură că o cheie lipsă în ro nu aruncă cheia brută în producție dacă configurezi logging pentru missing translations. Cache-ul traducerilor poate accelera producția, dar necesită clear la deploy când adaugi chei noi.

Validare și mesaje



Mesajele de eroare la Form Request pot fi suprascrise per regulă sau centralizate în `lang/ro/validation.php`. Atributele umanizate (`attributes.email`) îmbunătățesc textul „The email field is required”. Pluralizarea românească nu mapează perfect pe regulile englezești — uneori ai nevoie de variantă explicită per număr. Mesajele custom pentru reguli complexe (`required_if`) merită testate în ambele limbi dacă suporti switch.

Formatare regională



Datele și numerele afișate folosesc Carbon tradus sau `NumberFormatter` când e cazul. Timezone-ul utilizatorului e separat de locale; un timestamp UTC stocat corect se convertește la afișare. Nu hardcoda luni sau zile în Blade — treci prin helperi localizați. Formatele scurte de dată în listă versus detaliu pot folosi același locale dar pattern diferit, setat central.

Log in to post

Discussions in this category