- Implemented Form301 component for displaying OSHA Form 301 equivalent, including employee and case information. - Created Osha component to manage OSHA recordkeeping, including tabs for 300 Log, 300A Summary, Hours & rates, and Submit to OSHA. - Added functionality for printing and downloading CSV files for OSHA submissions. - Integrated loading and error handling states for data fetching.
169 lines
7.4 KiB
TypeScript
169 lines
7.4 KiB
TypeScript
import type { Messages } from './en'
|
|
|
|
const plural = (n: number, one: string, many: string) => `${n} ${n === 1 ? one : many}`
|
|
|
|
export const es: Messages = {
|
|
language: { name: 'Español', switchTo: 'English' },
|
|
common: {
|
|
cancel: 'Cancelar',
|
|
optional: 'Opcional',
|
|
loading: 'Cargando…',
|
|
back: 'Volver',
|
|
},
|
|
nav: {
|
|
overview: 'Resumen',
|
|
incidents: 'Incidentes',
|
|
myActions: 'Mis acciones',
|
|
locations: 'Ubicaciones',
|
|
analytics: 'Análisis',
|
|
osha: 'Registro OSHA',
|
|
manage: 'Gestionar',
|
|
reportIncident: 'Reportar un incidente',
|
|
about: 'Acerca de',
|
|
settings: 'Configuración',
|
|
signOut: 'Cerrar sesión',
|
|
openMenu: 'Abrir menú',
|
|
closeMenu: 'Cerrar menú',
|
|
workspace: 'Espacio de trabajo',
|
|
searchIncidents: 'Buscar incidentes',
|
|
},
|
|
auth: {
|
|
signIn: 'Iniciar sesión',
|
|
email: 'Correo electrónico',
|
|
password: 'Contraseña',
|
|
resetTitle: 'Restablecer la contraseña',
|
|
linkCopy: 'Le enviaremos un enlace por correo para iniciar sesión.',
|
|
resetCopy: 'Le enviaremos un enlace por correo para elegir una nueva contraseña.',
|
|
sendLink: 'Enviarme un enlace de acceso',
|
|
sendReset: 'Enviarme un enlace para restablecer',
|
|
usePassword: 'Iniciar sesión con contraseña',
|
|
useLink: 'Prefiero recibir un enlace por correo',
|
|
forgot: '¿Olvidó su contraseña?',
|
|
sent: 'Si ese correo pertenece a una cuenta, el enlace ya está en camino. Caduca pronto, así que úselo enseguida.',
|
|
continueWithLink: 'Continúe para iniciar sesión con el enlace de su correo.',
|
|
backToSignIn: 'Volver a iniciar sesión',
|
|
choosePassword: 'Elija una contraseña',
|
|
choosePasswordCopy: 'Establezca una contraseña para su cuenta. Después iniciará sesión automáticamente.',
|
|
newPassword: 'Nueva contraseña',
|
|
confirmPassword: 'Confirme la contraseña',
|
|
atLeast10: 'Al menos 10 caracteres.',
|
|
mismatch: 'Las contraseñas no coinciden.',
|
|
savePassword: 'Guardar contraseña e iniciar sesión',
|
|
},
|
|
report: {
|
|
eyebrow: 'Nuevo reporte',
|
|
title: 'Reportar un incidente',
|
|
intro: 'Registre los hechos mientras están frescos. Los detalles de la investigación se pueden añadir después.',
|
|
whatHappened: '¿Qué pasó?',
|
|
whatHappenedCopy: 'Empiece con una descripción clara y objetiva.',
|
|
incidentTitle: 'Título del incidente',
|
|
titlePlaceholder: 'p. ej. Resbalón cerca del muelle de carga',
|
|
type: 'Tipo de incidente',
|
|
severity: 'Gravedad',
|
|
when: 'Cuándo',
|
|
description: '¿Qué pasó?',
|
|
descriptionPlaceholder: 'Describa lo que observó, sin suposiciones...',
|
|
where: '¿Dónde ocurrió?',
|
|
whereCopy: 'Indique el lugar exacto para que se puedan ver patrones.',
|
|
site: 'Planta',
|
|
area: 'Edificio o área',
|
|
notSpecified: 'Sin especificar',
|
|
exactLocation: 'Lugar exacto',
|
|
exactLocationPlaceholder: 'p. ej. Vestíbulo planta baja, Línea 3',
|
|
fromQr: 'Ubicación tomada del código QR.',
|
|
responseAndPhotos: 'Respuesta y fotos',
|
|
responseAndPhotosCopy: 'Lo que se hizo de inmediato y fotos del lugar.',
|
|
immediateResponse: 'Respuesta inmediata',
|
|
immediateResponsePlaceholder: 'p. ej. Área aislada, supervisor avisado...',
|
|
photos: 'Fotos',
|
|
addPhotos: 'Añadir fotos',
|
|
removePhoto: (name: string) => `Quitar ${name}`,
|
|
anonymous: 'Reportar de forma anónima.',
|
|
anonymousHelp: 'Su nombre no se guardará con este reporte y después no podrá encontrarlo en su lista.',
|
|
submit: 'Enviar reporte',
|
|
submitting: 'Enviando…',
|
|
noSites: 'Todavía no hay plantas configuradas. Un gerente de seguridad debe añadir una planta antes de poder reportar incidentes.',
|
|
addSite: 'Añadir una planta',
|
|
queuedTitle: 'Guardado en este dispositivo',
|
|
queuedCopy: 'No hay conexión, así que el reporte aún no se ha enviado. Se enviará automáticamente en cuanto haya conexión. Puede cerrar esta página.',
|
|
reportAnother: 'Reportar otra cosa',
|
|
photosFailed: (reference: string, details: string) => `El reporte ${reference} se guardó, pero algunas fotos no se subieron. ${details}`,
|
|
},
|
|
kiosk: {
|
|
heading: 'Reporte un problema de seguridad',
|
|
intro: 'Peligros, casi accidentes, lesiones: cualquier cosa que pueda lastimar a alguien. No necesita una cuenta.',
|
|
whatKind: '¿Qué tipo de problema?',
|
|
howSerious: '¿Qué tan grave podría ser?',
|
|
summary: 'En pocas palabras, ¿qué vio?',
|
|
summaryPlaceholder: 'p. ej. Aceite en el piso junto a la prensa 4',
|
|
details: '¿Algo más que debamos saber?',
|
|
yourName: 'Su nombre',
|
|
yourNameHelp: 'Déjelo en blanco para reportar de forma anónima.',
|
|
send: 'Enviar reporte',
|
|
sending: 'Enviando…',
|
|
thanksTitle: 'Gracias',
|
|
thanks: (reference: string) => `Su reporte ${reference} se envió al equipo de seguridad.`,
|
|
thanksQueued: 'Su reporte está guardado en este dispositivo y se enviará en cuanto haya conexión.',
|
|
resetIn: (seconds: number) => `Esta pantalla se reinicia en ${seconds} s.`,
|
|
invalidLink: 'Este enlace de reporte no funciona. Pida uno nuevo a su equipo de seguridad.',
|
|
},
|
|
actions: {
|
|
eyebrow: 'Acciones correctivas',
|
|
mine: 'Mis acciones',
|
|
all: 'Todas las acciones',
|
|
mineCopy: 'Acciones correctivas asignadas a usted. Márquelas como hechas cuando la solución esté en marcha.',
|
|
allCopy: 'Todas las acciones correctivas de la organización.',
|
|
filterOpen: 'Abiertas',
|
|
filterOverdue: 'Vencidas',
|
|
filterDone: 'Hechas',
|
|
filterAll: 'Todas',
|
|
assignedToMe: 'Asignadas a mí',
|
|
everyone: 'Todos',
|
|
nothingOpen: 'Nada pendiente. ¡Buen trabajo!',
|
|
none: 'No hay acciones aquí.',
|
|
due: (date: string) => `Vence ${date}`,
|
|
noDueDate: 'Sin fecha límite',
|
|
overdue: 'Vencida',
|
|
unassigned: 'Sin asignar',
|
|
statusOf: (title: string) => `Estado de ${title}`,
|
|
},
|
|
outbox: {
|
|
offline: 'Sin conexión. Los nuevos reportes se guardarán en este dispositivo y se enviarán al reconectarse.',
|
|
waiting: (n: number) => `${plural(n, 'reporte pendiente', 'reportes pendientes')} de enviar`,
|
|
sending: 'Enviando…',
|
|
retry: 'Enviar ahora',
|
|
otherUser: 'Guardado por otro usuario en este dispositivo',
|
|
failed: (error: string) => `No se pudo enviar: ${error}`,
|
|
discard: 'Descartar',
|
|
discardConfirm: '¿Descartar este reporte sin enviar? No se puede deshacer.',
|
|
signOutWarning: (n: number) => `${plural(n, 'reporte aún no se ha', 'reportes aún no se han')} enviado. Se enviarán la próxima vez que inicie sesión en este dispositivo. ¿Cerrar sesión de todos modos?`,
|
|
},
|
|
qr: {
|
|
caption: 'Escanee para reportar un peligro o casi accidente',
|
|
},
|
|
types: {
|
|
near_miss: 'Casi accidente',
|
|
hazard: 'Peligro',
|
|
injury: 'Lesión',
|
|
illness: 'Enfermedad',
|
|
property_damage: 'Daño a la propiedad',
|
|
environmental: 'Ambiental',
|
|
},
|
|
typeHints: {
|
|
near_miss: 'Algo casi salió mal',
|
|
hazard: 'Algo que podría lastimar a alguien',
|
|
injury: 'Alguien se lastimó',
|
|
illness: 'Alguien se enfermó por el trabajo',
|
|
property_damage: 'Equipo o edificio dañado',
|
|
environmental: 'Derrame, fuga o emisión',
|
|
},
|
|
severities: { low: 'Baja', medium: 'Media', high: 'Alta', critical: 'Crítica' },
|
|
severityHints: {
|
|
low: 'Menor, sin probabilidad de lesión',
|
|
medium: 'Podría causar una lesión menor',
|
|
high: 'Podría causar una lesión grave',
|
|
critical: 'Podría poner en riesgo la vida',
|
|
},
|
|
actionStatuses: { open: 'Abierta', in_progress: 'En curso', done: 'Hecha', verified: 'Verificada', cancelled: 'Cancelada' },
|
|
}
|