Plecand de la un reply al lui de pe aici al lui @AdrianBasalic care spunea ca localizarea de la Laravel nu e una extraordinara. Vin cu urmatoarea intrebare: ce folositi pentru “localizare” in php(in special pentru language si mai putin pentru format de date, separatoare zecimale/mii,etc).
Nu ii zice internationalizare? (chiar nu vreau sa fac pe desteptul)
translation != localization != internationalization
ontopic: gettext + https://poeditor.com
offtopic: am folosit “localizare” pentru ca asa am vazut aici pe forum. Eu unul ii zic: “langualization” pentru ca de obicei ma ocup doar de partea de limba.
Un wrapper foarte simplu în jurul lui gettext, pentru că gettext
chior nu suportă parametri în texte:
__('Salut {name}, lorem ipsum!', ['name' => $user->name]);
Asta nu face altceva decat interpolare cu str_replace
și apoi apeleaza gettext
. Erau vremuri când foloseam soluții complexe, care suportau nșpe tipuri de storage pentru definiții. PO-uri, tabele in DB, flat files cu array-uri PHP, etc. Apoi cu vremea am taiat si am taiat pana am ajuns la minimul necesar pentru nevoile pe care le-am avut pana acum.
oricum cel mai complicat lucru de care aia vea nevoie in plus ar fi plurale, pt care mai poti pune lejer un parametru.
Cand spui plural te referi la asta?
- 0 paini
- 1 paine
- 2 paini
- 21 de paini
- 100 paini
exact
ngettext("%d paine", "%d paini", 5);
Sunt limbi care au 5 variante de plurale (araba de ex) cu zero/one/two/few/many
@AdrianBasalic si “de”-ul?
fisierul .po arata cam asa:
msgid "item"
msgid_plural "items"
msgstr[0] "paine"
msgstr[1] "de paini"
msgstr[2] "paini"
si comanda
ngettext("%d item", "%d items", 5);
considera msgid si msgid_plural labeluri. (desi de cele mai multe ori se folosesc chiar textele in sine.)
Tot gettext folosesc. Este standard (nu doar pentru PHP).