feat: translate bookings page and components to English

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Ivan
2026-03-01 21:22:55 +00:00
parent 0fb27b1825
commit 3e65974727
3 changed files with 52 additions and 52 deletions

View File

@@ -94,13 +94,13 @@ export function BookingCalendar({ siteId, onSlotClick }: BookingCalendarProps) {
const url = siteId ? `/api/courts?siteId=${siteId}` : "/api/courts";
const response = await fetch(url);
if (!response.ok) {
throw new Error("Error al cargar las canchas");
throw new Error("Error loading courts");
}
const data = await response.json();
setCourts(data);
return data as Court[];
} catch (err) {
setError(err instanceof Error ? err.message : "Error desconocido");
setError(err instanceof Error ? err.message : "Unknown error");
return [];
}
}, [siteId]);
@@ -113,7 +113,7 @@ export function BookingCalendar({ siteId, onSlotClick }: BookingCalendarProps) {
`/api/courts/${courtId}/availability?date=${dateStr}`
);
if (!response.ok) {
throw new Error(`Error al cargar disponibilidad`);
throw new Error(`Error loading availability`);
}
return (await response.json()) as CourtAvailability;
} catch (err) {
@@ -224,7 +224,7 @@ export function BookingCalendar({ siteId, onSlotClick }: BookingCalendarProps) {
fetchCourts();
}}
>
Reintentar
Retry
</Button>
</div>
</CardContent>
@@ -238,7 +238,7 @@ export function BookingCalendar({ siteId, onSlotClick }: BookingCalendarProps) {
<Card>
<CardHeader className="pb-4">
<div className="flex items-center justify-between">
<CardTitle className="text-lg">Calendario</CardTitle>
<CardTitle className="text-lg">Calendar</CardTitle>
<div className="flex items-center gap-2">
<Button variant="outline" size="sm" onClick={goToPrevDay}>
<svg
@@ -260,7 +260,7 @@ export function BookingCalendar({ siteId, onSlotClick }: BookingCalendarProps) {
size="sm"
onClick={goToToday}
>
Hoy
Today
</Button>
<Button variant="outline" size="sm" onClick={goToNextDay}>
<svg
@@ -286,12 +286,12 @@ export function BookingCalendar({ siteId, onSlotClick }: BookingCalendarProps) {
<div className="flex items-center justify-center p-12">
<div className="flex flex-col items-center gap-3">
<div className="h-8 w-8 animate-spin rounded-full border-4 border-primary-200 border-t-primary-600" />
<p className="text-sm text-primary-500">Cargando disponibilidad...</p>
<p className="text-sm text-primary-500">Loading availability...</p>
</div>
</div>
) : courts.length === 0 ? (
<div className="p-6 text-center text-primary-500">
<p>No hay canchas disponibles.</p>
<p>No courts available.</p>
</div>
) : (
<div className="overflow-x-auto">
@@ -316,7 +316,7 @@ export function BookingCalendar({ siteId, onSlotClick }: BookingCalendarProps) {
{court.name}
</h3>
<p className="text-xs text-primary-500 mt-1">
{court.type === "INDOOR" ? "Interior" : "Exterior"}
{court.type === "INDOOR" ? "Indoor" : "Outdoor"}
</p>
</div>
))}
@@ -347,7 +347,7 @@ export function BookingCalendar({ siteId, onSlotClick }: BookingCalendarProps) {
className="border-r border-primary-200 last:border-r-0 p-2"
>
<div className="rounded-md border border-primary-200 bg-primary-50 p-3 text-center text-xs text-primary-400">
No disponible
Not available
</div>
</div>
);
@@ -373,7 +373,7 @@ export function BookingCalendar({ siteId, onSlotClick }: BookingCalendarProps) {
{timeSlots.length === 0 && (
<div className="p-6 text-center text-primary-500">
<p>No hay horarios disponibles para este día.</p>
<p>No time slots available for this day.</p>
</div>
)}
</div>