Ir al contenido

Idiomas e i18n

trud-calendar soporta internacionalizacion completa a traves de dos mecanismos:

  1. Formato de fechas — via la API nativa Intl (sin moment/date-fns)
  2. Etiquetas de UI — via el sistema CalendarLabels

Pasa un string de locale BCP 47:

<Calendar
events={events}
locale={{
locale: "es-ES",
weekStartsOn: 1, // Lunes
}}
/>

Esto traduce automaticamente todo el texto derivado de fechas: nombres de meses, encabezados de dias, formato de hora, titulo del toolbar, etc.

ValorDia
0Domingo (por defecto)
1Lunes
2Martes
3Miercoles
4Jueves
5Viernes
6Sabado

El texto de botones y nombres de vistas no se derivan del locale — necesitan traducciones explicitas. Proporcionarlas via locale.labels:

<Calendar
events={events}
locale={{
locale: "es-ES",
weekStartsOn: 1,
labels: {
today: "Hoy",
month: "Mes",
week: "Semana",
day: "Dia",
agenda: "Agenda",
allDay: "todo el dia",
noEvents: "No hay eventos en este periodo",
more: (n) => `+${n} mas`,
},
}}
/>
interface CalendarLabels {
today: string; // Boton "Hoy"
month: string; // Tab vista Mes
week: string; // Tab vista Semana
day: string; // Tab vista Dia
agenda: string; // Tab vista Agenda
allDay: string; // Etiqueta "todo el dia" en vista semana/dia
noEvents: string; // Texto de estado vacio en vista agenda
more: (count: number) => string; // Boton "+N mas" en vista mes
}

Solo necesitas proveer las etiquetas que quieras cambiar — el resto usa los valores por defecto en ingles:

// Solo traducir los tabs de vistas
<Calendar
events={events}
locale={{
locale: "fr-FR",
labels: {
today: "Aujourd'hui",
month: "Mois",
week: "Semaine",
day: "Jour",
},
}}
/>
const configEspanol = {
locale: "es-ES",
weekStartsOn: 1 as const,
labels: {
today: "Hoy",
month: "Mes",
week: "Semana",
day: "Dia",
agenda: "Agenda",
allDay: "todo el dia",
noEvents: "No hay eventos en este periodo",
more: (n: number) => `+${n} mas`,
},
};
<Calendar events={events} locale={configEspanol} />