@liujitcn/kratos-admin-core 0.0.25 → 0.0.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package/declarations/src/layouts/components/Menu/MenuTitle.vue.d.ts +7 -0
- package/dist/package/declarations/src/locales/generated.d.ts +14 -1472
- package/dist/package/declarations/src/locales/index.d.ts +4 -4
- package/dist/package/declarations/src/rpc/common/v1/enum.d.ts +15 -6
- package/dist/package/declarations/src/rpc/system/admin/v1/base_dict.d.ts +5 -5
- package/dist/package/declarations/src/rpc/system/admin/v1/{base_translation.d.ts → base_i18n.d.ts} +3 -3
- package/dist/package/declarations/src/utils/index.d.ts +1 -3
- package/dist/package/declarations/src/utils/menuKey.d.ts +3 -0
- package/dist/package/src/components/Dialog/FormDialog.vue +1 -1
- package/dist/package/src/components/ImportExcel/index.vue +1 -1
- package/dist/package/src/components/ProForm/index.vue +5 -2
- package/dist/package/src/components/SelectIcon/index.vue +1 -1
- package/dist/package/src/layouts/components/Menu/MenuTitle.vue +43 -0
- package/dist/package/src/layouts/components/Menu/SubMenu.vue +3 -2
- package/dist/package/src/locales/README.md +0 -4
- package/dist/package/src/locales/en-US.json +1 -4
- package/dist/package/src/locales/generated.ts +0 -18
- package/dist/package/src/locales/index.ts +0 -3
- package/dist/package/src/locales/ja-JP.json +190 -193
- package/dist/package/src/locales/zh-CN.json +1 -4
- package/dist/package/src/locales/zh-TW.json +1 -4
- package/dist/package/src/rpc/common/v1/enum.ts +16 -6
- package/dist/package/src/rpc/system/admin/v1/base_dict.ts +5 -5
- package/dist/package/src/rpc/system/admin/v1/{base_translation.ts → base_i18n.ts} +4 -4
- package/dist/package/src/utils/index.ts +2 -16
- package/dist/package/src/utils/menuKey.ts +18 -0
- package/dist/package/src/views/login/components/LoginForm.vue +3 -0
- package/package.json +2 -2
- package/dist/package/src/locales/es-ES.json +0 -283
- package/dist/package/src/locales/fr-FR.json +0 -283
- package/dist/package/src/locales/ko-KR.json +0 -283
|
@@ -3,6 +3,8 @@ import type { RouteItem, RouteMeta } from "../rpc/system/admin/v1/auth";
|
|
|
3
3
|
import { BaseMenuType } from "../rpc/system/admin/v1/common";
|
|
4
4
|
import { t } from "../locales";
|
|
5
5
|
|
|
6
|
+
export { getRouteMenuKey } from "./menuKey";
|
|
7
|
+
|
|
6
8
|
const mode = import.meta.env.VITE_ROUTER_MODE;
|
|
7
9
|
|
|
8
10
|
/** 树形或枚举数据字段映射配置。 */
|
|
@@ -203,22 +205,6 @@ export function getRouteTarget(item: RouteItem): string {
|
|
|
203
205
|
return item.path ?? "";
|
|
204
206
|
}
|
|
205
207
|
|
|
206
|
-
/** 获取菜单节点的首个可跳转子路径。 */
|
|
207
|
-
function getFirstRoutePath(item: RouteItem): string {
|
|
208
|
-
if (item.path) return item.path;
|
|
209
|
-
for (const child of item.children ?? []) {
|
|
210
|
-
const path = getFirstRoutePath(child);
|
|
211
|
-
if (path) return path;
|
|
212
|
-
}
|
|
213
|
-
return "";
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
/** 获取菜单节点在 Element Plus 菜单树中的稳定索引。 */
|
|
217
|
-
export function getRouteMenuKey(item: RouteItem): string {
|
|
218
|
-
if (item.path) return item.path;
|
|
219
|
-
return `folder:${getFirstRoutePath(item) || getRouteMetaTitle(item.meta)}`;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
208
|
/** 判断路由路径是否匹配菜单路径,兼容动态参数。 */
|
|
223
209
|
function matchRoutePath(menuPath: string, currentPath: string): boolean {
|
|
224
210
|
const menuSegments = menuPath.split("/").filter(Boolean);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { RouteItem } from "../rpc/system/admin/v1/auth";
|
|
2
|
+
|
|
3
|
+
/** 获取菜单节点的首个可跳转子路径。 */
|
|
4
|
+
function getFirstRoutePath(item: RouteItem): string {
|
|
5
|
+
if (item.path) return item.path;
|
|
6
|
+
for (const child of item.children ?? []) {
|
|
7
|
+
const path = getFirstRoutePath(child);
|
|
8
|
+
if (path) return path;
|
|
9
|
+
}
|
|
10
|
+
return "";
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** 获取菜单节点在 Element Plus 菜单树中的稳定索引。 */
|
|
14
|
+
export function getRouteMenuKey(item: RouteItem): string {
|
|
15
|
+
if (item.path) return item.path;
|
|
16
|
+
const title = item.meta?.title ?? "";
|
|
17
|
+
return `folder:${title}:${getFirstRoutePath(item)}`;
|
|
18
|
+
}
|
|
@@ -107,18 +107,21 @@
|
|
|
107
107
|
<div v-loading="behaviorLoading" class="behavior-captcha-body">
|
|
108
108
|
<GoCaptchaSlide
|
|
109
109
|
v-if="currentCaptchaType === 'slide'"
|
|
110
|
+
:key="loginForm.captcha_id"
|
|
110
111
|
:config="slideCaptchaConfig"
|
|
111
112
|
:data="behaviorCaptchaData"
|
|
112
113
|
:events="slideCaptchaEvents"
|
|
113
114
|
/>
|
|
114
115
|
<GoCaptchaClick
|
|
115
116
|
v-else-if="currentCaptchaType === 'click'"
|
|
117
|
+
:key="loginForm.captcha_id"
|
|
116
118
|
:config="clickCaptchaConfig"
|
|
117
119
|
:data="behaviorCaptchaData"
|
|
118
120
|
:events="clickCaptchaEvents"
|
|
119
121
|
/>
|
|
120
122
|
<GoCaptchaRotate
|
|
121
123
|
v-else-if="currentCaptchaType === 'rotate'"
|
|
124
|
+
:key="loginForm.captcha_id"
|
|
122
125
|
:config="rotateCaptchaConfig"
|
|
123
126
|
:data="behaviorCaptchaData"
|
|
124
127
|
:events="rotateCaptchaEvents"
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@liujitcn/kratos-admin-core",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.27",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "kratos-admin frontend runtime and base modules",
|
|
7
7
|
"author": {
|
|
@@ -202,7 +202,7 @@
|
|
|
202
202
|
"scripts": {
|
|
203
203
|
"build": "pnpm build:package",
|
|
204
204
|
"build:package": "node ../../scripts/build-package.mjs .",
|
|
205
|
-
"test": "tsc -p tsconfig.test.json && node --test dist/test/tests/modules.test.js dist/test/tests/dict.test.js",
|
|
205
|
+
"test": "tsc -p tsconfig.test.json && node --test dist/test/tests/modules.test.js dist/test/tests/dict.test.js dist/test/tests/menu.test.js",
|
|
206
206
|
"type:check": "vue-tsc --noEmit --skipLibCheck"
|
|
207
207
|
}
|
|
208
208
|
}
|
|
@@ -1,283 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"common.action.back": "Volver",
|
|
3
|
-
"common.action.cancel": "Cancelar",
|
|
4
|
-
"common.action.close": "Cerrar",
|
|
5
|
-
"common.action.confirm": "Confirmar",
|
|
6
|
-
"common.action.create": "Crear",
|
|
7
|
-
"common.action.delete": "Eliminar",
|
|
8
|
-
"common.action.download": "Descargar",
|
|
9
|
-
"common.action.edit": "Editar",
|
|
10
|
-
"common.action.expand": "Expandir",
|
|
11
|
-
"common.action.collapse": "Contraer",
|
|
12
|
-
"common.action.login": "Iniciar sesión",
|
|
13
|
-
"common.action.logout": "Cerrar sesión",
|
|
14
|
-
"common.action.reset": "Restablecer",
|
|
15
|
-
"common.action.save": "Guardar",
|
|
16
|
-
"common.action.search": "Buscar",
|
|
17
|
-
"common.action.view": "Ver",
|
|
18
|
-
"common.field.end_time": "Hora de fin",
|
|
19
|
-
"common.field.language": "Idioma",
|
|
20
|
-
"common.field.operation": "Acciones",
|
|
21
|
-
"common.field.parameter_name": "Nombre del parámetro",
|
|
22
|
-
"common.field.parameter_value": "Valor del parámetro",
|
|
23
|
-
"common.field.phone": "Número de teléfono",
|
|
24
|
-
"common.field.start_time": "Hora de inicio",
|
|
25
|
-
"common.language.en-US": "Inglés",
|
|
26
|
-
"common.language.ja-JP": "日本語",
|
|
27
|
-
"common.language.zh-CN": "简体中文",
|
|
28
|
-
"common.language.zh-TW": "Chino tradicional",
|
|
29
|
-
"common.language.ko-KR": "Coreano",
|
|
30
|
-
"common.language.fr-FR": "Francés",
|
|
31
|
-
"common.language.es-ES": "Español",
|
|
32
|
-
"common.message.no_data": "Sin datos",
|
|
33
|
-
"common.message.operation_success": "Operación completada",
|
|
34
|
-
"common.message.system_error": "Error del sistema",
|
|
35
|
-
"common.validation.phone_invalid": "Introduce un número de teléfono válido",
|
|
36
|
-
"common.validation.phone_required": "Introduce un número de teléfono",
|
|
37
|
-
"common.title.notice": "Aviso",
|
|
38
|
-
"common.title.warning": "Confirmación",
|
|
39
|
-
"common.placeholder.input": "Introduce un valor",
|
|
40
|
-
"common.placeholder.input_content": "Introduce el contenido",
|
|
41
|
-
"common.placeholder.select": "Selecciona un valor",
|
|
42
|
-
"common.status.disabled": "Deshabilitado",
|
|
43
|
-
"common.status.enabled": "Habilitado",
|
|
44
|
-
"common.value.female": "Mujer",
|
|
45
|
-
"common.value.male": "Hombre",
|
|
46
|
-
"common.value.all": "Todos",
|
|
47
|
-
"core.auth.login_again": "Vuelve a iniciar sesión",
|
|
48
|
-
"core.auth.refresh_token_missing": "Falta el token de actualización",
|
|
49
|
-
"core.auth.session_expired": "Tu sesión ha caducado. Vuelve a iniciar sesión.",
|
|
50
|
-
"core.auth.no_menu_permission": "Esta cuenta no tiene permisos de menú. Contacta con un administrador.",
|
|
51
|
-
"core.auth.no_permission": "Acceso denegado",
|
|
52
|
-
"core.clipboard.success": "Copiado",
|
|
53
|
-
"core.cron.cycle_unit.day": "días",
|
|
54
|
-
"core.cron.cycle_unit.hour": "horas",
|
|
55
|
-
"core.cron.cycle_unit.minute": "minutos",
|
|
56
|
-
"core.cron.cycle_unit.month": "meses",
|
|
57
|
-
"core.cron.cycle_unit.second": "segundos",
|
|
58
|
-
"core.cron.cycle_unit.year": "años",
|
|
59
|
-
"core.cron.description.every": "Cada {unit}",
|
|
60
|
-
"core.cron.description.range": "{segment} de {start} a {end}",
|
|
61
|
-
"core.cron.description.specific": "{segment}: {values}",
|
|
62
|
-
"core.cron.description.step": "Desde {start} {unit}, ejecutar cada {step} {cycleUnit}",
|
|
63
|
-
"core.cron.description.unspecified": "{segment} no especificado",
|
|
64
|
-
"core.cron.description.weekday": "Día laborable más cercano al día {day} de este mes",
|
|
65
|
-
"core.cron.description_separator": "; ",
|
|
66
|
-
"core.cron.edit": "Editar expresión",
|
|
67
|
-
"core.cron.every_unit": "Cada {unit}",
|
|
68
|
-
"core.cron.expression": "Expresión Cron",
|
|
69
|
-
"core.cron.from": "desde",
|
|
70
|
-
"core.cron.last_day": "Último día de este mes",
|
|
71
|
-
"core.cron.nearest_workday": "día laborable más cercano",
|
|
72
|
-
"core.cron.not_configured": "No hay programación configurada",
|
|
73
|
-
"core.cron.placeholder": "Introduce una expresión Cron",
|
|
74
|
-
"core.cron.preset.daily_eight": "Cada día a las 8:00",
|
|
75
|
-
"core.cron.preset.daily_midnight": "Cada día a medianoche",
|
|
76
|
-
"core.cron.preset.every_five_minutes": "Cada 5 minutos",
|
|
77
|
-
"core.cron.preset.every_hour": "Cada hora",
|
|
78
|
-
"core.cron.preset.every_minute": "Cada minuto",
|
|
79
|
-
"core.cron.preset.monthly_first": "El día 1 de cada mes a medianoche",
|
|
80
|
-
"core.cron.preset.next_year_daily": "Cada día del próximo año a medianoche",
|
|
81
|
-
"core.cron.presets": "Expresiones habituales",
|
|
82
|
-
"core.cron.range": "Rango",
|
|
83
|
-
"core.cron.repeat": "Repetir",
|
|
84
|
-
"core.cron.run_once": "Ejecutar una vez por {unit}",
|
|
85
|
-
"core.cron.segment.day": "Día",
|
|
86
|
-
"core.cron.segment.hour": "Hora",
|
|
87
|
-
"core.cron.segment.minute": "Minuto",
|
|
88
|
-
"core.cron.segment.month": "Mes",
|
|
89
|
-
"core.cron.segment.second": "Segundo",
|
|
90
|
-
"core.cron.segment.year": "Año",
|
|
91
|
-
"core.cron.specific": "Específico",
|
|
92
|
-
"core.cron.start_every": "{unit}, cada",
|
|
93
|
-
"core.cron.this_month": "Día de este mes",
|
|
94
|
-
"core.cron.title": "Editar expresión de programación",
|
|
95
|
-
"core.cron.to": "a",
|
|
96
|
-
"core.cron.unit.day": "día",
|
|
97
|
-
"core.cron.unit.hour": "hora",
|
|
98
|
-
"core.cron.unit.minute": "minuto",
|
|
99
|
-
"core.cron.unit.month": "mes",
|
|
100
|
-
"core.cron.unit.second": "segundo",
|
|
101
|
-
"core.cron.unit.year": "año",
|
|
102
|
-
"core.cron.unspecified": "No especificado",
|
|
103
|
-
"core.cron.value_separator": ", ",
|
|
104
|
-
"core.cron.value_with_unit": "{value}{unit}",
|
|
105
|
-
"core.cron.workday": "Día laborable",
|
|
106
|
-
"core.data.confirm_action": "¿Seguro que quieres {action}?",
|
|
107
|
-
"core.data.operation_success": "{action} correctamente",
|
|
108
|
-
"core.download.large_file_notice": "Los conjuntos de datos grandes pueden tardar más en descargarse. Espera.",
|
|
109
|
-
"core.error.403.detail": "No tienes permiso para acceder a esta página.",
|
|
110
|
-
"core.error.404.detail": "La página solicitada no existe.",
|
|
111
|
-
"core.error.500.detail": "El servidor ha encontrado un error.",
|
|
112
|
-
"core.error.pending.detail": "Esta función está en construcción.",
|
|
113
|
-
"core.error.javascript.eval": "Uso no válido de Eval",
|
|
114
|
-
"core.error.javascript.internal": "Error interno del motor de JavaScript",
|
|
115
|
-
"core.error.javascript.range": "El parámetro está fuera de rango",
|
|
116
|
-
"core.error.javascript.reference": "No se encontró el objeto",
|
|
117
|
-
"core.error.javascript.syntax": "Error de sintaxis",
|
|
118
|
-
"core.error.javascript.type": "Tipo u objeto no válido",
|
|
119
|
-
"core.error.javascript.unknown": "Error desconocido",
|
|
120
|
-
"core.error.javascript.uri": "Error de URI",
|
|
121
|
-
"core.header.fullscreen": "Pantalla completa",
|
|
122
|
-
"core.header.fullscreen_exit": "Salir de pantalla completa",
|
|
123
|
-
"core.header.fullscreen_unsupported": "Este navegador no admite la pantalla completa",
|
|
124
|
-
"core.header.language": "Cambiar idioma",
|
|
125
|
-
"core.header.menu_search": "Buscar menús",
|
|
126
|
-
"core.header.menu_search_empty": "No se encontraron menús",
|
|
127
|
-
"core.header.menu_search_placeholder": "Buscar por nombre o ruta del menú",
|
|
128
|
-
"core.header.size.default": "Predeterminado",
|
|
129
|
-
"core.header.size.large": "Grande",
|
|
130
|
-
"core.header.size.small": "Pequeño",
|
|
131
|
-
"core.header.size_select": "Tamaño de los componentes",
|
|
132
|
-
"core.header.theme": "Configuración del tema",
|
|
133
|
-
"core.icon.empty": "No se encontraron iconos coincidentes",
|
|
134
|
-
"core.icon.placeholder": "Selecciona un icono",
|
|
135
|
-
"core.icon.search": "Buscar icons",
|
|
136
|
-
"core.layout.department_unassigned": "No hay departamento asignado",
|
|
137
|
-
"core.layout.home": "Inicio",
|
|
138
|
-
"core.layout.info": "Información personal",
|
|
139
|
-
"core.layout.password_change": "Cambiar contraseña",
|
|
140
|
-
"core.layout.unnamed_menu": "Menú sin nombre",
|
|
141
|
-
"core.layout.logout_confirm": "¿Seguro que quieres cerrar sesión?",
|
|
142
|
-
"core.layout.logout_success": "Sesión cerrada",
|
|
143
|
-
"core.layout.not_set": "No configurado",
|
|
144
|
-
"core.layout.role_unassigned": "No hay rol asignado",
|
|
145
|
-
"core.login.behavior_click": "Haz clic en los caracteres en orden",
|
|
146
|
-
"core.login.behavior_confirm": "Confirmar",
|
|
147
|
-
"core.login.behavior_puzzle": "Arrastra el control deslizante para completar el rompecabezas",
|
|
148
|
-
"core.login.behavior_rotate": "Arrastra el control deslizante para orientar correctamente la imagen interior",
|
|
149
|
-
"core.login.captcha": "Introduce el código de verificación",
|
|
150
|
-
"core.login.captcha_alt": "Código de verificación",
|
|
151
|
-
"core.login.greeting.afternoon": "Buenas tardes",
|
|
152
|
-
"core.login.greeting.evening": "Buenas noches",
|
|
153
|
-
"core.login.greeting.morning": "Buenos días",
|
|
154
|
-
"core.login.greeting.night": "Hola",
|
|
155
|
-
"core.login.greeting.noon": "Buenas tardes",
|
|
156
|
-
"core.login.other_methods": "Otros métodos de inicio de sesión",
|
|
157
|
-
"core.login.password": "Introduce la contraseña",
|
|
158
|
-
"core.login.tenant_code": "Introduce el código del inquilino",
|
|
159
|
-
"core.login.user_name": "Introduce el nombre de usuario",
|
|
160
|
-
"core.login.welcome": "Bienvenido a la consola de administración",
|
|
161
|
-
"core.oauth.dingtalk": "DingTalk",
|
|
162
|
-
"core.oauth.feishu": "Feishu",
|
|
163
|
-
"core.oauth.wechat": "WeChat",
|
|
164
|
-
"core.oauth.wechatmp": "Cuenta oficial de WeChat",
|
|
165
|
-
"core.oauth.wechatwork": "WeCom",
|
|
166
|
-
"core.oauth.unknown": "Proveedor desconocido",
|
|
167
|
-
"core.password.error": "La contraseña debe contener mayúsculas, minúsculas, un número y un carácter especial, y tener al menos 8 caracteres",
|
|
168
|
-
"core.password.crypto_unsupported": "El cifrado de contraseñas no es compatible con este entorno",
|
|
169
|
-
"core.password.required": "La contraseña es obligatoria",
|
|
170
|
-
"core.password.strength": "contraseña strength",
|
|
171
|
-
"core.password.strength.empty": "No introducida",
|
|
172
|
-
"core.password.strength.high": "Alta",
|
|
173
|
-
"core.password.strength.low": "Baja",
|
|
174
|
-
"core.password.strength.medium": "Media",
|
|
175
|
-
"core.password.tip": "Usa al menos 8 caracteres con mayúsculas, minúsculas, un número y un carácter especial. La contraseña debe alcanzar una seguridad alta antes de enviarla.",
|
|
176
|
-
"core.theme.accordion": "Menú acordeón",
|
|
177
|
-
"core.theme.aside_inverted": "Barra lateral oscura",
|
|
178
|
-
"core.theme.aside_inverted_tip": "Usar colores oscuros para la barra lateral",
|
|
179
|
-
"core.theme.breadcrumb": "Migas de pan",
|
|
180
|
-
"core.theme.breadcrumb_icon": "Iconos de migas de pan",
|
|
181
|
-
"core.theme.color": "Color del tema",
|
|
182
|
-
"core.theme.dark": "Modo oscuro",
|
|
183
|
-
"core.theme.footer": "Pie de página",
|
|
184
|
-
"core.theme.global": "Tema global",
|
|
185
|
-
"core.theme.grey": "Modo escala de grises",
|
|
186
|
-
"core.theme.header_inverted": "Encabezado oscuro",
|
|
187
|
-
"core.theme.header_inverted_tip": "Usar colores oscuros en el encabezado",
|
|
188
|
-
"core.theme.interface": "Configuración de la interfaz",
|
|
189
|
-
"core.theme.layout": "Diseño",
|
|
190
|
-
"core.theme.layout.classic": "Clásico",
|
|
191
|
-
"core.theme.layout.columns": "Columnas",
|
|
192
|
-
"core.theme.layout.transverse": "Transversal",
|
|
193
|
-
"core.theme.layout.vertical": "Vertical",
|
|
194
|
-
"core.theme.menu_collapse": "Contraer menú",
|
|
195
|
-
"core.theme.primary_reset": "Color del tema restablecido a {color}",
|
|
196
|
-
"core.theme.settings": "Configuración del diseño",
|
|
197
|
-
"core.theme.tabs": "Pestañas",
|
|
198
|
-
"core.theme.tabs_icon": "Iconos de pestañas",
|
|
199
|
-
"core.theme.watermark": "Marca de agua",
|
|
200
|
-
"core.theme.weak": "Modo para daltonismo",
|
|
201
|
-
"core.theme.color_hex_invalid": "Introduce un color hexadecimal válido",
|
|
202
|
-
"core.theme.color_rgb_invalid": "Introduce un color RGB válido",
|
|
203
|
-
"core.route.forbidden": "403 página",
|
|
204
|
-
"core.route.login": "Iniciar sesión",
|
|
205
|
-
"core.route.not_found": "404 página",
|
|
206
|
-
"core.route.server_error": "Página de error del servidor (500)",
|
|
207
|
-
"core.tabs.close_all": "Cerrar todo",
|
|
208
|
-
"core.tabs.close_current": "Cerrar actual",
|
|
209
|
-
"core.tabs.close_left": "Cerrar pestañas a la izquierda",
|
|
210
|
-
"core.tabs.close_other": "Cerrar otras pestañas",
|
|
211
|
-
"core.tabs.close_right": "Cerrar pestañas a la derecha",
|
|
212
|
-
"core.tabs.maximize": "Maximizar",
|
|
213
|
-
"core.tabs.refresh": "Actualizar actual",
|
|
214
|
-
"core.table.collapse_all": "Contraer todo",
|
|
215
|
-
"core.table.column_name": "Columna",
|
|
216
|
-
"core.table.column_setting": "Configuración de columnas",
|
|
217
|
-
"core.table.expand_all": "Expandir todo",
|
|
218
|
-
"core.table.hide_search": "Ocultar búsqueda",
|
|
219
|
-
"core.table.no_configurable_columns": "No hay columnas configurables",
|
|
220
|
-
"core.table.refresh": "Actualizar datos",
|
|
221
|
-
"core.table.show": "Visible",
|
|
222
|
-
"core.table.show_search": "Mostrar búsqueda",
|
|
223
|
-
"core.table.sort": "Ordenable",
|
|
224
|
-
"core.tree.filter_placeholder": "Introduce palabras clave para filtrar",
|
|
225
|
-
"core.tree.reset_selection": "Restablecer selección",
|
|
226
|
-
"core.upload.action": "Cargar archivo",
|
|
227
|
-
"core.upload.batch_add": "Añadir {resource} por lotes",
|
|
228
|
-
"core.upload.batch_failed": "No se pudieron añadir {resource} por lotes. Vuelve a subir el archivo.",
|
|
229
|
-
"core.upload.batch_success": "{resource} added Éxitofully",
|
|
230
|
-
"core.upload.click": "haz clic para cargar",
|
|
231
|
-
"core.upload.data_cover": "Sobrescribir datos",
|
|
232
|
-
"core.upload.drag_or_click": "Suelta el archivo aquí o ",
|
|
233
|
-
"core.upload.excel_format": "Sube un archivo .xls o .xlsx estándar de hasta {size} MB",
|
|
234
|
-
"core.upload.file": "Carga de archivo",
|
|
235
|
-
"core.upload.file_failed": "No se pudo subir el archivo. Inténtalo de nuevo.",
|
|
236
|
-
"core.upload.file_format_invalid": "El formato del archivo no es compatible",
|
|
237
|
-
"core.upload.file_size_exceeded": "El archivo no puede superar {size} MB",
|
|
238
|
-
"core.upload.file_success": "Archivo cargado",
|
|
239
|
-
"core.upload.image_failed": "No se pudo subir la imagen. Inténtalo de nuevo.",
|
|
240
|
-
"core.upload.image_format_invalid": "El formato de imagen no es compatible",
|
|
241
|
-
"core.upload.image_limit_exceeded": "Puedes subir hasta {limit} imágenes. Elimina una antes de subir otra.",
|
|
242
|
-
"core.upload.image_size_exceeded": "La imagen no puede superar {size} MB",
|
|
243
|
-
"core.upload.image_success": "Imagen cargada",
|
|
244
|
-
"core.upload.limit_exceeded": "Puedes subir hasta {limit} archivos. Elimina uno antes de subir otro.",
|
|
245
|
-
"core.upload.single_file_only": "Solo se puede cargar un archivo",
|
|
246
|
-
"core.upload.template": "Plantilla de {resource}",
|
|
247
|
-
"core.upload.template_download": "Descargar plantilla",
|
|
248
|
-
"core.upload.unnamed_file": "Archivo sin nombre",
|
|
249
|
-
"common.action.create_resource": "Crear {resource}",
|
|
250
|
-
"common.action.edit_resource": "Editar {resource}",
|
|
251
|
-
"common.action.refresh_cache": "Actualizar caché",
|
|
252
|
-
"common.dialog.cancel_delete": "Se canceló la eliminación de {resource}",
|
|
253
|
-
"common.dialog.delete_batch": "¿Eliminar los {count} {resource} {unit} seleccionados?",
|
|
254
|
-
"common.dialog.delete_selected": "¿Eliminar el {resource} seleccionado?",
|
|
255
|
-
"common.dialog.delete_single": "¿Eliminar este {resource}?",
|
|
256
|
-
"common.dialog.resource_field": "{field}: {value}",
|
|
257
|
-
"common.dialog.status_change": "¿{action} este {resource}?\n{field}: {value}",
|
|
258
|
-
"common.field.created_at": "Creado el",
|
|
259
|
-
"common.field.remark": "Observaciones",
|
|
260
|
-
"common.field.sort": "Orden",
|
|
261
|
-
"common.field.status": "Estado",
|
|
262
|
-
"common.field.tenant": "Inquilino",
|
|
263
|
-
"common.field.updated_at": "Actualizado el",
|
|
264
|
-
"common.message.create_success": "{resource} creado",
|
|
265
|
-
"common.message.delete_success": "{resource} eliminado",
|
|
266
|
-
"common.message.load_children_failed": "No se pudo cargar el {resource} secundario",
|
|
267
|
-
"common.message.refresh_success": "Actualizado",
|
|
268
|
-
"common.message.select_delete_item": "Selecciona elementos para eliminar",
|
|
269
|
-
"common.message.status_success": "{action} completado",
|
|
270
|
-
"common.message.update_success": "{resource} actualizado",
|
|
271
|
-
"common.placeholder.remark": "Introduce observaciones",
|
|
272
|
-
"common.validation.max_length": "{field} no debe superar {max} caracteres",
|
|
273
|
-
"common.validation.required_input": "Introduce {field}",
|
|
274
|
-
"common.validation.required_select": "Selecciona {field}",
|
|
275
|
-
"common.validation.sort_positive": "El orden debe ser mayor que 0",
|
|
276
|
-
"common.field.action": "Acciones",
|
|
277
|
-
"common.placeholder.start_date": "Fecha de inicio",
|
|
278
|
-
"common.placeholder.end_date": "Fecha de fin",
|
|
279
|
-
"common.value.yes": "Sí",
|
|
280
|
-
"common.value.no": "No",
|
|
281
|
-
"common.value.unknown": "Desconocido",
|
|
282
|
-
"common.value.none": "Ninguno"
|
|
283
|
-
}
|