$header "const char *chkr_message[]"
$declare "extern const char *chkr_message[];"
$hformat "#define %1	chkr_message[%n]"

######## for parse-args.c
M_COPYRIGHT		"Checker %s (%s) Copyright (C) 1996 Tristan Gingold.\n"
M_IS_RUNNING		"`%s' em marcha "
M_UNKNOWN_OP		"Checker desconoce esta opción: %s\n"
M_UNKNOWN_DISABLE	"Checker desconoce la opción de deshabilitar: %s\n"
M_LOPTION_NEED_ARG	"Option `%s' requiere un argumento.\n"
M_SOPTION_NEED_ARG	"Option `%s' (versión breve) requiere un argumento.\n"
M_LOPTION_NALLOW_ARG	"Option `%s' no permite ningún argumento.\n"
M_SOPTION_NALLOW_ARG	"Option `%s' (versión breve) no permite ningún argumento.\n"
M_OPTION_ILLEGAL	"Opción ilegal `%s'.\n"
M_PRGNAME_NOT_FOUND	"No puedo encontrar el nombre del programa.\n"
M_ARGV0_IS		"Me llamo (según argv[0]) %s\n"
M_STOPPING_MYSELF	"Parado delante de main. Para seguir, intenta `fg' o `kill -%d %d'\n"
M_ALREADY_INIT		"Crt0.o se ha invocado dos veces. Abortando\n"
M_TOTAL_GARBAGE_TIME	"Tiempo total para detectar memori fragmentada: %d sec(s) %d usecs.\n"
######## for chkr-syscall.c
M_IOCTL_UNIMPLEMENT	"Esta ioctl (0x%x) no se ha incorporado.\n"
M_FCNTL_UNIMPLEMENT	"Esta fcntl (0x%x) no se ha incorporado.\n"
M_SYSCALL_UNIMPLEMT	"Esta syscall (0x%x) no se ha incorporado.\n"
M_IPC_UNIMPLEMENT	"Esta ipc syscall (0x%x) no se ha implementado.\n"
M_SEND_DESCRIPTION	"Envía una descripción al autor de Checker.\n"
######### for symtab.c
M_STACK_FRAMES_ARE	"Los marcos de la pila:\n"
M_CANT_FIND_MAIN	"No encuentro el marco de main frame, ¡te jodes!\n"
M_CANT_OPEN_BINARY	"No puedo abrir el fichero binario `%s'.\nAborto\n"
M_CANT_F_GOOD_INFO	"No encuentro nada bueno en el fichero binario.\nAborto\n"
M_PC__NOSYMTAB		"$\tpc=0x%08x\n"
M_PC___IN___AT_		"\tpc=0x%08x en %s en %s:%d\n"
M_UNKNOWN		"Desconocido"
M_BAD_STR		"<cadena errónea en el índice de tablas>"
######### for utils.c
M_UNKNOWN_MALLOC0	"Desconozco este argumento %s para `--malloc0='.\n"
M_MALLOC0_WARNING	"Advertencia: uso de %s con un tamaño de 0\n"
M_C_BAD_MPLINK		"erróneo enlace prev de mdesc 0x%x.\n"
M_C_BAD_LAST_MDESC	"El último mdesc no es realmente el último...\n"
M_C_CHECK_MDESC		"Comprobación de mdesc 0x%08x:\n"
M_C_FB_OR_LB_BAD	"error en _firstblock o _lastblock\n"
M_C_FM_OR_LM_BAD	"error en _firstmdesc o _lastmdesc.\n"
M_C_NO_BLOCKS		"Lo siento, no hay bloques.\n"
M_C_FBLOCK_BAD		"error en _firstblock.\n"
M_C_LBLOCK_BAD		"error en _lastblock.\n"
M_C_BAD_LINEARITY	"error de alineamiento en los bloques 0x%x y 0x%x.\n"
M_C_BAD_PLINK		"error en enlace `prev' del bloque 0x%x.\n"
M_C_BAD_BLOCK_SIZE	"Error en el tamaño del bloque 0x%x\n"
M_C_BAD_LAST_BLOCK	"El último bloque no era realmente el último...\n"
M_C_STOP_HERE		"Párate aquí.\n"
M_C_U_AGED_BLOCK	"El bloque %u es un bloque con edad desconocido.\n"
M_C_BAD_PL_YOUNGB	"Error de enlace `prev' para el bloque menor %u\n"
M_C_NON_AGED_BLOCK	"Bloque sin edad %u en la lista con edad.\n"
M_C_BAD_NUM_AGED_B	"Número erróneo de bloques con edad (%d en vez de %d).\n"
M_C_TOO_AGED_BLOCK	"Hay demasiados bloques mayores (%d en vez de %d).\n"
M_C_BAD_PL_F_FREEB	"Enlace erróneo `prev' en el primer bloque libre %u.\n"
M_C_FREEB_BAD_STAT	"Bloque libre 0x%x está en mal estado.\nAborto\n"
M_C_BLOCK_BAD_LIST	"Bloque 0x%x en lista de errores.\n"
M_C_BAD_PLIN_FREEB	"Enlace erróneo `prev' en bloque libre %u.\n"
M_C_BAD_HEAPINDEX	"_heapindex está mal.\n"
M_C_UNKNOWN_FREEB	"Bloque %u es un bloque libre desconocido.\n"
M_C_FREE_AND_FREE	"Bloque libre 0x%x seguido por otro libre\n"
M_C_NO_BUSY_BLOCK	"No hay bloque trabajando.\n"
M_C_BUSY_BLOCK_ARE	"Los bloques trabajando son:\n"
M_C_BLOC_N_IS_BUSY	"Bloque (dir: 0x%x), tamaño %u kb está trabajando.\n"
M_C_BLOCK_SIZ_LESS	"Bloque con un tamaño menor de %d bytes.\n"
M_C_BLOCK_AT_SIZE	"Bloque en 0x%x, tamaño %dKb\n"
######### for free.c
M_BAD_NLINK_4BLOCK	"Enlace next erróneo para bloque %u.\n"
M_FOUND_AGED_BLOCK	"Un bloque %u sin edad en lista con edades.\n"
######### for garbage.c
M_GARBAGE_TIME		"Tiempo para detectar memoria fragmentada: %d sec(s) %d usecs.\n"
M_NO_LEAK		"No hay agujeros.\n"
M_ONE_LEAK		"Hay 1 agujero y %d agujero(s) potencial(es).\n"
M_NBR_LEAKS		"Hay %d agujeros y %d potenciales.\n"
M_LEAKS_USE_N_BYTE	"Agujero abarca %u bytes (%u KB) / %u KB.\n"
M_P_MEM_IS_LOST		"(%2d.%02d%% de memoria fragmentada.)\n"
M_FOUND_N2_BYTES	"Encontrado %u blocque(s) de tamaño %u.\n"
M_LOST_IS_PTR		"Bloque en ptr=0x%x\n"
M_BYTES_NOT_DISPLAYED	"%d bytes no identificados individualmente (umbral).\n"
M_NO_INUSE		"No se ha usado ningún bloque.\n"
M_ONE_INUSE		"Se ha usado 1 bloque.\n"
M_NBR_INUSE		"Se han usado %d bloques.\n"
M_INUSE_USE_N_BYTE	"Los bloques usados abarcan %u bytes (%u KB) / %u KB.\n"
M_CANT_USE_SYMTAB	"No puedo acceder a la tabla de símbolos.\n"
######### for maccess.c
M_NO_BM_4ADDRESS	"No hay mapa de bits para esta dirección.\n"
M_TRY_TO_EXECUTE	"Intentando ejecutar la función en 0x%x dentro de %s.\n"
M_BO_NOT_ALIGNED	"Hmmm, bit_offset no está alineado !! Ignóralo.\n"
M_ERR_SET_RIGHT		"Error en chkr_set_right\n"
M_BAD_LEN_IN_SR		"len > bitmem.length ó len == 0\n"
M_ACC_DATA_ALIGN	"Durante acceso de datos en 0x%08x, tamaño: %d, límite: %d.\n"
M_PROD_BUS_ERR		"ESTO DEBERÍA CAUSAR UN BUS ERROR.\n"
M_SRC_IN_CP_BM		"Error con `src' en `chkr_copy_bm'\n"
M_DEST_IN_CP_BM		"Error con `dest' en `chkr_copy_bm'\n"
M_ALIGN_IN_CP_BM	"Mal alineamiento en `chkr_copy_bm'\n"
M_PROF_INFO_HERE	"Información de perfilamiento:\n"
# The plural form of `vez' in spanish is irregular: `veces', so the
# last %s makes no sense.
M_HANDLED_N_TIME	"A %s se accedió %d veces %s.\n"
M_HANDLED_MEM		"El programa accedió a la memoria %u veces.\n"
M_BM_CALLED		"Se ha ajustado el límite de la pila %u veces\n"
M_ACC_ERR_REP		"%u errores de acceso a memoria avisados.\n"
M_ACC_ERR_TOT		"%u errores de acceso a memoria.\n"
M_ACC_MALLOC_CALLS	"%u llamadas a malloc/mmalloc.\n"
M_ACC_FREE_CALLS	"%u llamadas a free/mfree.\n"
M_ACC_REALLOC_CALLS	"%u llamadas a realloc/mrealloc.\n"
M_NULL_ZONE		"zona nula"
M_TEXT_SEGMENT		"segmento de texto"
M_DATA_SEGMENT		"segmento de datos"
M_HEAP_BRK_SEGMENT	"montón (sbrk)"
M_HEAP_MAP_SEGMENT	"montón (mmap)"
M_STACK_SEGMENT		"pila"
M_MMAP_SEGMENT		"zona mmap"
M_SHM_SEGMENT		"memoria compartida"
M_MAPPED_BY		"La región fue mapeada por:\n"
M_ATTACHED_BY		"La memoria compartida ha sido atachada por:\n"
M_BLOCK_ALLO_FRM	"El bloque ha sido reservado por:\n"
M_KNOW_STACK_LIM	"límite de pila conocido= %08p\n"
M_AFTER_LAST_BLOCK	"después del último bloque.\n"
M_INSIDE_FBLOCK		"dentro de un bloque libre.\n"
M_BLOCK_ID		" (comienzo: 0x%x, longitud: %u, mdesc: 0x%x).\n"
M_BEFORE_BLOCK		"%d bytes delante de un bloque"
M_INSIDE_BLOCK		"%d bytes dentro de un bloque"
M_AFTER_BLOCK		"%d bytes después de un bloque"
M_N_FREE_CALLED		"se ha llamado a free %d veces desde que éste bloque ha sido devuelto por:\n"
M_MDESC_CREATED_BY	"Este montón de mmalloc fue creado por:\n"
M_MEM_ACCESS_ERR	"Error de acceso a memoria: %s\n"
M_ACC_ERR_WHERE		"Cuando %s %d byte(s) en la dirección %08p, dentro de %s.\n"
M_USE_NULL_PTR		"Probablemente dereferenciaste un puntero nulo.\n"
M_PROD_SEG_FAULT	"ESTO DEBERÍA DE CASUAR UN SEGMENTATION FAULT.\n"
M_CANT_MODIFY_IT	"No puede ser alterado.\n"
M_SIZES_FOR_OOM		"Tamaño total de memoria: %u Kb;\ntamaño total con edades: %u Kb;\ntamaño solicitado: %d b\n"
############# for fd.c
M_FILE_OPENED_BY	"Este fichero fue creado por:\n"
M_FILE_CLOSED_BY	"Este fichero fue cerrado por:\n"
############# for vprintf.c
M_FROM_CHECKER		"De Checker (pid:%s): "
############# for signal.c
M_REC_SIGNAL		"Recibo la señal %d (%s): "
M_SIG_IGNORED		"(ignorada).\n"
M_SIG_DEFAULT		"(acción por defecto: "
M_SIG_TERMINATE		"terminar "
M_SIG_CORE		"core "
M_SIG_STOP		"stop "
M_SIG_IGNORE		"ignorar "
M_SIG_FORCED		"forzado "
M_SIG_SYNCHRON		"síncrono "
M_SIG_CAUGHT		"(atrapado).\n"
M_UNKNOWN_SIG		"Señal desconocida `%s'.\n"
M_BAD_REC_SIG		"La señal %d recibida es completamente desconocida. Aborto\n"
M_SYN_REC_SIG		"Checker ha recibido la señal síncrona %s. Aborto\n"
