Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions client/i18next.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ export default defineConfig({
locales: [
Locale.en,
Locale.ru,
Locale.es,
],
extract: {
input: 'src/**/*.{js,jsx,ts,tsx}',
Expand Down
1 change: 1 addition & 0 deletions client/src/i18n/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { Locale } from './types'
export const LOCALE_ISO_CODES: Record<Locale, string> = {
[Locale.en]: 'en-US',
[Locale.ru]: 'ru-RU',
[Locale.es]: 'es-ES',
};
export const DEFAULT_LOCALE: Locale = Locale.en;
export const DEFAULT_LOCALE_ISO_CODE = LOCALE_ISO_CODES[Locale.en];
18 changes: 9 additions & 9 deletions client/src/i18n/locales/en/components/common/markdown.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
{
"mermaid": {
"title": "Mermaid Diagram",
"renderError": "Failed to render Mermaid diagram:",
"renderErrorFallback": "Error rendering diagram",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out",
"resetView": "Reset view",
"copyCode": "Copy Mermaid code",
"downloadSVG": "Download as SVG",
"downloadPNG": "Download as PNG",
"downloadSVG": "Download as SVG",
"exitFullscreen": "Exit fullscreen",
"fullscreen": "Fullscreen",
"exitFullscreen": "Exit fullscreen"
"renderError": "Failed to render Mermaid diagram:",
"renderErrorFallback": "Error rendering diagram",
"resetView": "Reset view",
"title": "Mermaid Diagram",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
}
}
}
3 changes: 2 additions & 1 deletion client/src/i18n/locales/en/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"loading": "Loading...",
"locale": {
"en": "English",
"es": "Spanish",
"ru": "Russian"
},
"no": "no",
Expand All @@ -47,4 +48,4 @@
"system": "System"
},
"username": "Username"
}
}
12 changes: 12 additions & 0 deletions client/src/i18n/locales/es/components/admin/common.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"adminTable": {
"defaultEmptyMessage": "No se encontraron datos",
"defaultLoadingMessage": "Cargando..."
},
"filterInput": {
"defaultPlaceholder": "Buscar..."
},
"filterSelect": {
"defaultPlaceholder": "Seleccionar..."
}
}
8 changes: 8 additions & 0 deletions client/src/i18n/locales/es/components/admin/modals.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"snippetViewModal": {
"error": {
"failedLoad": "Error al intentar cargar el fragmento"
},
"title": "Cargando fragmento..."
}
}
7 changes: 7 additions & 0 deletions client/src/i18n/locales/es/components/admin/selector.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"apiKeys": "Claves API",
"dashboard": "Panel de control",
"shares": "Compartidos",
"snippets": "Fragmentos",
"users": "Usuarios"
}
34 changes: 34 additions & 0 deletions client/src/i18n/locales/es/components/admin/tabs/apiKeys.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"apiKeyDeletedSuccessfully": "Clave API eliminada con éxito",
"columns": {
"labels": {
"actions": "Acciones",
"created": "Creado",
"lastUsed": "Último uso",
"name": "Nombre",
"owner": "Propietario",
"status": "Estado"
}
},
"confirmationModal": {
"message": "¿Estás seguro de que quieres eliminar esta clave API? El propietario de la clave ya no podrá usarla para acceder a la API. Esta acción no se puede deshacer.",
"title": "Eliminar clave API"
},
"entityName_one": "clave",
"entityName_many": "claves",
"entityName_other": "claves",
"error": {
"default": "Error al eliminar la clave API"
},
"filters": {
"userId": "Filtrar por ID de Usuario"
},
"status": {
"active": "Activo",
"inactive": "Inactivo"
},
"table": {
"emptyMessage": "No se encontraron claves API",
"loadingMessage": "Cargando claves API..."
}
}
31 changes: 31 additions & 0 deletions client/src/i18n/locales/es/components/admin/tabs/dashboard.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"card": {
"apiKeys": {
"title": "Claves API"
},
"shares": {
"title": "Enlaces compartidos"
},
"snippets": {
"apiKeys": {
"active": "Activas"
},
"shares": {
"total": "Total"
},
"title": "Fragmentos",
"viewType": {
"private": "Privados",
"public": "Públicos"
}
},
"users": {
"authType": {
"internal": "Internos",
"oidc": "OIDC"
},
"title": "Usuarios"
}
},
"loadingMessage": "Cargando estadísticas..."
}
50 changes: 50 additions & 0 deletions client/src/i18n/locales/es/components/admin/tabs/shares.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"action": {
"copyShareLink": "Copiar enlace",
"delete": "Eliminar enlace",
"viewSnippet": "Ver fragmento"
},
"columns": {
"labels": {
"actions": "Acciones",
"auth": "Auth requerida",
"created": "Creado",
"expires": "Expira",
"id": "ID de compartición",
"owner": "Propietario",
"title": "Título"
}
},
"confirmationModal": {
"message": "¿Estás seguro de que quieres eliminar este enlace? Cualquier persona con el enlace ya no podrá acceder al fragmento. Esta acción no se puede deshacer.",
"title": "Eliminar enlace compartido"
},
"entityName_one": "enlace",
"entityName_many": "enlaces",
"entityName_other": "enlaces",
"error": {
"delete": {
"default": "Error al eliminar el enlace"
}
},
"filters": {
"authType": {
"all": "Todos",
"public": "Público",
"requiresAuth": "Requiere auth"
},
"userId": "Filtrar por User ID"
},
"success": {
"copied": {
"default": "Enlace copiado al portapapeles"
},
"delete": {
"default": "Enlace borrado con éxito"
}
},
"table": {
"emptyMessage": "No se encontraron enlaces activos",
"loadingMessage": "Cargando registros..."
}
}
58 changes: 58 additions & 0 deletions client/src/i18n/locales/es/components/admin/tabs/snippets.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{
"action": {
"delete": "Eliminar fragmento",
"makePrivate": "Hacer privado",
"makePublic": "Hacer público",
"scanForOffensiveContent": "Escanear contenido ofensivo",
"showAllSnippets": "Mostrar todos",
"viewSnippet": "Visualizar"
},
"columns": {
"labels": {
"actions": "Acciones",
"fragments": "Archivos",
"owner": "Propietario",
"title": "Anotación",
"updated": "Actualizado",
"visibility": "Visibilidad"
}
},
"confirmationModal": {
"message": "¿Estás seguro de que quieres eliminar permanentemente este fragmento? Esta acción no se puede deshacer.",
"title": "Eliminar código"
},
"containsOffensiveWords": "Contiene lenguaje inapropiado: {{words}}",
"entityName_one": "fragmento",
"entityName_many": "fragmentos",
"entityName_other": "fragmentos",
"error": {
"delete": {
"default": "Fallo al remover fragmento"
},
"update": {
"default": "Error actualizando visibilidad"
}
},
"filters": {
"search": "Buscar fragmentos...",
"userId": "User ID",
"visibility": {
"all": "Todo",
"private": "Privado",
"public": "Público"
}
},
"offensiveContentMessage": "Se han detectado {{total}} {{entityName}} con contenido ofensivo",
"success": {
"delete": {
"default": "Fragmento eliminado exitosamente"
},
"update": {
"default": "Visibilidad editada"
}
},
"table": {
"emptyMessage": "Lista completamente vacía",
"loadingMessage": "Refrescando fragmentos..."
}
}
64 changes: 64 additions & 0 deletions client/src/i18n/locales/es/components/admin/tabs/users.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
{
"action": {
"activate": "Habilitar usuario",
"deactivate": "Inhabilitar usuario",
"delete": "Borrar usuario"
},
"columns": {
"labels": {
"actions": "Eventos",
"apiKeysCount": "Claves",
"authType": "Tipo de ingreso",
"created": "Registro",
"email": "Correo electrónico",
"lastLogin": "Último ingreso",
"snippetsCount": "Fragmentos",
"status": "Estado de la cuenta",
"username": "Usuario"
}
},
"confirmationModal": {
"message": "¿Confirmas el borrado de esta persona? Se destruirán de forma absoluta sus fragmentos, contraseñas API y datos compartidos. Esto no se puede revertir.",
"title": "Borrado de cuenta permanentemente"
},
"entityName_one": "usuario",
"entityName_many": "usuarios",
"entityName_other": "usuarios",
"error": {
"delete": {
"default": "No se pudo borrar al usuario"
},
"update": {
"default": "Error afectando el estado del usuario"
}
},
"filters": {
"authType": {
"all": "Tipos autorizados",
"internal": "Público (ByteStash)",
"oidc": "SSO (OIDC)"
},
"search": "Buscar por email o alias...",
"status": {
"active": "Solamente cuentas activas",
"all": "Todos los perfiles",
"inactive": "Vetados / Inactivos"
}
},
"status": {
"active": "Estable",
"inactive": "Inactivo"
},
"success": {
"delete": {
"default": "El usuario ya no existe"
},
"update": {
"default": "Modificación aplicada correctamente"
}
},
"table": {
"emptyMessage": "Nadie encontrado",
"loadingMessage": "Validando sesiones de red..."
}
}
Loading
Loading