Traduce fechas de Laravel con la Libreria DATE


Victor Arana Flores

19 Jul 2022

Date

Esta librería de fechas, amplía Carbon con soporte multilingüe. Métodos como format, diffForHumans, parse, createFromFormat y el nuevo timespan, serán ahora traducidos en base a su localización.

Todas las traducciones realizadas por los colaboradores se han trasladado al paquete Carbon 2. Este paquete utiliza ahora las traducciones de Carbon para ofrecerle un mejor soporte multilingüe. Los problemas de traducción deben notificarse en el repositorio de Carbon. También puede consultar la documentación original aquí.

Installación

Instalar con composer:

composer require jenssegers/date

Laravel

Hay un proveedor de servicios incluido para la integración con el framework Laravel. Este proveedor obtendrá la configuración regional de la aplicación y la utilizará para las traducciones. Este servicio se registrará automáticamente si usas Laravel 5.5+ usando el auto-discovery. Si no, para registrar el proveedor de servicios, añade lo siguiente al array de proveedores en config/app.php:

Jenssegers\Date\DateServiceProvider::class,

También puedes añadirlo como una fachada en config/app.php:

'Date' => Jenssegers\Date\Date::class,

Lenguajes

Este paquete contiene archivos de idioma para los siguientes idiomas (https://carbon.nesbot.com/docs/#supported-locales):

  • Afar (aa)
  • Afrikaans (af)
  • Aghem (agq)
  • Aguaruna (agr)
  • Akan (ak)
  • Amharic (am)
  • Aragonese (an)
  • Angika (anp)
  • Arabic (ar)
  • Assamese (as)
  • Asu (asa)
  • Asturian (ast)
  • Southern Aymara (ayc)
  • Azerbaijani (az)
  • Basaa (bas)
  • Belarusian (be)
  • Bemba (bem)
  • ber (ber)
  • Bena (bez)
  • Bulgarian (bg)
  • Bhili (bhb)
  • Bhojpuri (bho)
  • Bislama (bi)
  • Bambara (bm)
  • Bengali (bn)
  • Tibetan (bo)
  • Breton (br)
  • Bodo (brx)
  • Bosnian (bs)
  • Bilin (byn)
  • Catalan (ca)
  • Chakma (ccp)
  • Chechen (ce)
  • Chiga (cgg)
  • Cherokee (chr)
  • Chinese (cmn)
  • Crimean Turkish (crh)
  • Czech (cs)
  • Kashubian (csb)
  • Church Slavic (cu)
  • Chuvash (cv)
  • Welsh (cy)
  • Danish (da)
  • Taita (dav)
  • German (de)
  • Zarma (dje)
  • Dogri (macrolanguage) (doi)
  • Lower Sorbian (dsb)
  • Duala (dua)
  • Divehi (dv)
  • Jola-Fonyi (dyo)
  • Dzongkha (dz)
  • Embu (ebu)
  • Ewe (ee)
  • Greek (modern) (el)
  • English (en)
  • Esperanto (eo)
  • Spanish (es)
  • Estonian (et)
  • Basque (eu)
  • Ewondo (ewo)
  • Persian (fa)
  • Fulah (ff)
  • Finnish (fi)
  • Filipino (fil)
  • Faroese (fo)
  • French (fr)
  • Friulian (fur)
  • Western Frisian (fy)
  • Irish (ga)
  • Gaelic (gd)
  • Geez (gez)
  • Galician (gl)
  • Konkani (gom)
  • Swiss German (gsw)
  • Gujarati (gu)
  • Gusii (guz)
  • Manx (gv)
  • Hausa (ha)
  • Hakka Chinese (hak)
  • Hawaiian (haw)
  • Hebrew (modern) (he)
  • Hindi (hi)
  • Fiji Hindi (hif)
  • Chhattisgarhi (hne)
  • Croatian (hr)
  • Upper Sorbian (hsb)
  • Haitian (ht)
  • Hungarian (hu)
  • Armenian (hy)
  • i18n (i18n)
  • Interlingua (ia)
  • Indonesian (id)
  • Igbo (ig)
  • Sichuan Yi (ii)
  • Inupiaq (ik)
  • in (in)
  • Icelandic (is)
  • Italian (it)
  • Inuktitut (iu)
  • iw (iw)
  • Japanese (ja)
  • Ngomba (jgo)
  • Machame (jmc)
  • Javanese (jv)
  • Georgian (ka)
  • Kabyle (kab)
  • Kamba (kam)
  • Makonde (kde)
  • Kabuverdianu (kea)
  • Koyra Chiini (khq)
  • Kikuyu (ki)
  • Kazakh (kk)
  • Kako (kkj)
  • Kalaallisut (kl)
  • Kalenjin (kln)
  • Central Khmer (km)
  • Kannada (kn)
  • Korean (ko)
  • Konkani (kok)
  • Kashmiri (ks)
  • Shambala (ksb)
  • Bafia (ksf)
  • Colognian (ksh)
  • Kurdish (ku)
  • Cornish (kw)
  • Kirghiz (ky)
  • Langi (lag)
  • Luxembourgish (lb)
  • Ganda (lg)
  • Limburgan (li)
  • Ligurian (lij)
  • Lakota (lkt)
  • Lingala (ln)
  • Lao (lo)
  • Northern Luri (lrc)
  • Lithuanian (lt)
  • Luba-Katanga (lu)
  • Luo (luo)
  • Luyia (luy)
  • Latvian (lv)
  • Literary Chinese (lzh)
  • Magahi (mag)
  • Maithili (mai)
  • Masai (mas)
  • Meru (mer)
  • Morisyen (mfe)
  • Malagasy (mg)
  • Makhuwa-Meetto (mgh)
  • Metaʼ (mgo)
  • Eastern Mari (mhr)
  • Maori (mi)
  • Mískito (miq)
  • Karbi (mjw)
  • Macedonian (mk)
  • Malayalam (ml)
  • Mongolian (mn)
  • Manipuri (mni)
  • mo (mo)
  • Marathi (mr)
  • Malay (ms)
  • Maltese (mt)
  • Mundang (mua)
  • Burmese (my)
  • Mazanderani (mzn)
  • Min Nan Chinese (nan)
  • Nama (naq)
  • Norwegian Bokmål (nb)
  • North Ndebele (nd)
  • Low German (nds)
  • Nepali (ne)
  • Central Nahuatl (nhn)
  • Niuean (niu)
  • Dutch (nl)
  • Kwasio (nmg)
  • Norwegian Nynorsk (nn)
  • Ngiemboon (nnh)
  • Norwegian (no)
  • South Ndebele (nr)
  • Northern Sotho (nso)
  • Nuer (nus)
  • Nyankole (nyn)
  • Occitan (oc)
  • Oromo (om)
  • Oriya (or)
  • Ossetian (os)
  • Panjabi (pa)
  • Papiamento (pap)
  • Polish (pl)
  • Prussian (prg)
  • Pashto (ps)
  • Portuguese (pt)
  • Quechua (qu)
  • Cusco Quechua (quz)
  • Rajasthani (raj)
  • Romansh (rm)
  • Rundi (rn)
  • Romanian (ro)
  • Rombo (rof)
  • Russian (ru)
  • Kinyarwanda (rw)
  • Rwa (rwk)
  • Sanskrit (sa)
  • Sakha (sah)
  • Samburu (saq)
  • Santali (sat)
  • Sangu (sbp)
  • Sardinian (sc)
  • Sindhi (sd)
  • Northern Sami (se)
  • Sena (seh)
  • Koyraboro Senni (ses)
  • Sango (sg)
  • Samogitian (sgs)
  • sh (sh)
  • Tachelhit (shi)
  • Shan (shn)
  • Shuswap (shs)
  • Sinhala (si)
  • Sidamo (sid)
  • Slovak (sk)
  • Slovene (sl)
  • Samoan (sm)
  • Inari Sami (smn)
  • Shona (sn)
  • Somali (so)
  • Albanian (sq)
  • Serbian (sr)
  • Swati (ss)
  • Southern Sotho (st)
  • Swedish (sv)
  • Swahili (sw)
  • Silesian (szl)
  • Tamil (ta)
  • Tulu (tcy)
  • Telugu (te)
  • Teso (teo)
  • Tetum (tet)
  • Tajik (tg)
  • Thai (th)
  • Chitwania Tharu (the)
  • Tigrinya (ti)
  • Tigre (tig)
  • Turkmen (tk)
  • Tagalog (tl)
  • Klingon (tlh)
  • Tswana (tn)
  • Tongan (Tonga Islands) (to)
  • Tok Pisin (tpi)
  • Turkish (tr)
  • Tsonga (ts)
  • Tatar (tt)
  • Tasawaq (twq)
  • Talossan (tzl)
  • Tamazight (tzm)
  • Uighur (ug)
  • Ukrainian (uk)
  • Unami (unm)
  • Urdu (ur)
  • Uzbek (uz)
  • Vai (vai)
  • Venda (ve)
  • Vietnamese (vi)
  • Volapük (vo)
  • Vunjo (vun)
  • Walloon (wa)
  • Walser (wae)
  • Wolaytta (wal)
  • Wolof (wo)
  • Xhosa (xh)
  • Soga (xog)
  • Yangben (yav)
  • Yiddish (yi)
  • Yoruba (yo)
  • Cantonese (yue)
  • Yau (Morobe Province) (yuw)
  • Standard Moroccan Tamazight (zgh)
  • Chinese (zh)
  • Zulu (zu)

Uso

La clase Date extiende los métodos de Carbon como format y diffForHumans, y los traduce en base a su localización:

use Jenssegers\Date\Date;

Date::setLocale('es');

echo Date::now()->format('l j F Y H:i:s'); // martes 19 julio 2022 22:31:20

echo Date::parse('-1 day')->diffForHumans(); // hace 1 día

La clase Date también ha añadido algunos alias y métodos adicionales como: ago que es un alias de diffForHumans, y el método timespan:

echo $date->timespan(); // 3 meses, 1 semana, 1 día, 3 horas, 20 minutos

Métodos como parse y createFromFormat también soportan "traducciones inversas". Al llamar a estos métodos con una entrada traducida, se intentará traducirla al español antes de pasarla a DateTime:

$date = Date::createFromFormat('l d F Y', 'martes 19 julio 2022');

Carbon

Carbon es la biblioteca en la que se basa la clase Date. Todas las operaciones originales de Carbon siguen estando disponibles, consulta https://carbon.nesbot.com/docs para más información. Estos son algunos de los métodos disponibles:

Creación de fechas

Puede crear objetos Date al igual que el objeto DateTime (http://www.php.net/manual/en/datetime.construct.php):

$date = new Date();
$date = new Date('2000-01-31');
$date = new Date('2000-01-31 12:00:00');

// Con zona horaria
$date = new Date('2000-01-31', new DateTimeZone('Europe/Brussels'));

Puede omitir la creación de un objeto DateTimeZone:

$date = new Date('2000-01-31', 'America/Lima');

Crear objetos de fecha a partir de un formato relativo (http://www.php.net/manual/en/datetime.formats.relative.php):

$date = new Date('now');
$date = new Date('today');
$date = new Date('+1 hour');
$date = new Date('next monday');

Esto también está disponible mediante estos métodos estáticos:

$date = Date::parse('now');
$date = Date::now();

Creación de una fecha a partir de una marca de tiempo:

$date = new Date(1367186296);

O desde una fecha u hora existente:

$date = Date::createFromDate(2000, 1, 31);
$date = Date::createFromTime(12, 0, 0);
$date = Date::create(2000, 1, 31, 12, 0, 0);

Formato de las fechas

Puede formatear un objeto Date como el objeto DateTime (http://www.php.net/manual/en/function.date.php):

echo Date::now()->format('Y-m-d'); // 2000-01-31

El objeto Date puede ser convertido en una cadena:

echo Date::now(); // 2000-01-31 12:00:00

Obtenga una salida legible para los humanos (alias de diffForHumans):

echo $date->ago(); // Hace 5 días

Calcule un lapso de tiempo:

$date = new Date('+1000 days');
echo Date::now()->timespan($date);
// 2 años, 8 meses, 3 semanas, 5 días

// or even
echo Date::now()->timespan('+1000 days');

Obtenga los años desde la fecha:

$date = new Date('-10 years');
echo $date->age; // 10

$date = new Date('+10 years');
echo $date->age; // -10

Manipulación de fechas

Se puede manipular utilizando los métodos add y sub, con intervalos relativos (http://www.php.net/manual/en/datetime.formats.relative.php):

$yesterday = Date::now()->sub('1 day');
$tomorrow  = Date::now()->add('1 day');

// ISO 8601
$date = Date::now()->add('P2Y4DT6H8M');

Puede acceder y modificar todos los atributos de la fecha como un objeto:

$date->year = 2013:
$date->month = 1;
$date->day = 31;

$date->hour = 12;
$date->minute = 0;
$date->second = 0;

Contribución

Las contribuciones lingüísticas deben hacerse a https://github.com/briannesbitt/Carbon.

Licencia

Laravel Date está licenciado bajo la La licencia MIT (MIT)..


0 comentarios

Inicia sesión para comentar