Date.today.strftime("%B") en español

1,821 views
Skip to first unread message

Daniela

unread,
Jul 29, 2015, 8:57:12 AM7/29/15
to rubysur
hola Grupo! alguien sabe como obtener/traducir al español el mes actual con la funcion: Date.today.strftime("%B") ?

gracias de antemano...

saludos

Emanuel Friedrich

unread,
Jul 29, 2015, 9:25:34 AM7/29/15
to rub...@googlegroups.com
Hola Daniela.

Te molestaria mucho hacer un case when usando como dato a evaluar Date.today.month? No hay que reinventar la rueba pero si es solo eso mejor no agregar dependencias.

Sino, si estás en rails el méthod "l" (localize), siempre que estén bien tus locales

l(Date.today, format: '%B')

Saludos

--
Has recibido este mensaje porque estás suscrito al grupo "rubysur" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a rubysur+u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Emanuel Friedrich - Casi licenciado en Sistemas... :)
Cel: 3754-495887

Haya paz

Nicolás Sanguinetti

unread,
Jul 29, 2015, 9:28:05 AM7/29/15
to rub...@googlegroups.com, rubysur
"A mano"

`{ "January" => "Enero", ... }.fetch(Date.today.strftime("%B"))`



--

Joaquín Vicente

unread,
Jul 29, 2015, 10:12:10 AM7/29/15
to rub...@googlegroups.com
​Hay opciones mucho menos verbosas que un `case`, como la que dijo Foca o este otro one-liner:

%w{dummy Enero Febrero Marzo ...}[Date.today.month]


Emanuel Friedrich

unread,
Jul 29, 2015, 10:26:46 AM7/29/15
to rub...@googlegroups.com
​Hay opciones mucho menos verbosas que un `case`, como la que dijo Foca o este otro one-liner:

%w{dummy Enero Febrero Marzo ...}[Date.today.month]

Está ideal

El 29 de julio de 2015, 11:11, Joaquín Vicente <joa...@gmail.com> escribió:
​Hay opciones mucho menos verbosas que un `case`, como la que dijo Foca o este otro one-liner:

%w{dummy Enero Febrero Marzo ...}[Date.today.month]


--
Has recibido este mensaje porque estás suscrito al grupo "rubysur" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a rubysur+u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Johan Tique

unread,
Jul 29, 2015, 10:41:15 AM7/29/15
to rub...@googlegroups.com
Hola, si quieres tener una opción más burocrática pero elegante, podrías usar i18n directamente (claro es más trabajo comparado con las demás soluciones, pero tendrás acceso directo a la manipulación del lenguaje de la internacionalización)

entonces, primero fija el lenguaje

I18n.locale = extract_locale_from_accept_language_header

# Puedes hacerlo con esto desde usando tu request en cada "petición" o usando algún valor por defecto desde tu usuario
# al final tendras algo como: I18n.locale = 'es'
def extract_locale_from_accept_language_header
  request.env['HTTP_ACCEPT_LANGUAGE'].try(:scan, /^[a-z]{2}/).try(:first)
end

Luego, dentro de tus locales, especialmente en config/locales/es.yml  pega esto:

date:
    abbr_month_names:
    -
    - Ene
    - Feb
    - Mar
    - Abr
    - May
    - Jun
    - Jul
    - Ago
    - Sep
    - Oct
    - Nov
    - Dic
    formats:
      long: "%B, %d %Y"
      short: "%b, %d %Y"
      my_format: "%B"
    month_names:
    -
    - Enero
    - Febrero
    - Marzo
    - Abril
    - Mayo
    - Junio
    - Julio
    - Agosto
    - Septiembre
    - Octubre
    - Noviembre
    - Diciembre

Después si quieres utilizar algún helper que sea compatible con los formats que arriba definiste, usa el siguiente:

I18n.l Date.today, format: :my_format
I18n.l Date.today, format: :short

puedes usarlo sin el i18n si estás dentro de una vista, acuerdate de definir my_format también en el config/locales/en.yml (para no tener problemas en ingles) de igual forma creo que ya podrías usar  Date.today.strftime("%B")  internacionalizado directamente.

BONUS: recuerda que esto funcionará para Date, con Time debes hacer algo muy parecido en la redefinición de los formats dentro del local, algo como:

time:
    formats:
      my_format: "%B"
long: "%B %d, %Y %H:%M"

Ok espero que pueda servirte,
un saludo,

--------------------------------------------

El 29 de julio de 2015, 9:11, Joaquín Vicente <joa...@gmail.com> escribió:
​Hay opciones mucho menos verbosas que un `case`, como la que dijo Foca o este otro one-liner:

%w{dummy Enero Febrero Marzo ...}[Date.today.month]


--
Has recibido este mensaje porque estás suscrito al grupo "rubysur" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a rubysur+u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
                     Johan Tique Ramírez
            IEEE Young Professional Member
  Ingeniero en Electrónica y Telecomunicaciones
                             Unicauca

Daniela

unread,
Jul 30, 2015, 7:24:43 AM7/30/15
to rubysur, daniela....@gmail.com
Buenisimo!! muchisimas gracias a todos por sus aportes :)
Reply all
Reply to author
Forward
0 new messages