diff --git a/options/locale/locale_es-ES.ini b/options/locale/locale_es-ES.ini
index faa64d04a..d3b925655 100644
--- a/options/locale/locale_es-ES.ini
+++ b/options/locale/locale_es-ES.ini
@@ -155,6 +155,8 @@ lfs_path=Ruta raíz de Git LFS
 lfs_path_helper=Los archivos almacenados con Git LFS se almacenarán en este directorio. Déjelo vacío para deshabilitarlo.
 run_user=Ejecutar como usuario
 run_user_helper=Introduzca el nombre de usuario del sistema operativo sobre el que está ejecutando Gitea. Tenga en cuenta que este usuario debe tener acceso a la ruta a la raíz de los repositorios.
+domain=Dominio del Servidor
+domain_helper=Dominio o dirección de host para el servidor.
 ssh_port=Puerto de servidor SSH
 ssh_port_helper=Número de puerto en el que está escuchando su servidor SSH. Déjelo vacío para deshabilitarlo.
 http_port=Puerto de escucha HTTP de Gitea
@@ -519,7 +521,9 @@ website=Página web
 location=Localización
 update_theme=Actualizar tema
 update_profile=Actualizar perfil
+update_language=Actualizar idioma
 update_language_not_found=El idioma '%s' no está disponible.
+update_language_success=El idioma ha sido actualizado.
 update_profile_success=Tu perfil ha sido actualizado.
 change_username=Su nombre de usuario ha sido cambiado.
 change_username_prompt=Nota: los cambios de nombre de usuario también cambian la URL de su cuenta.
@@ -895,6 +899,7 @@ migrate.clone_address_desc=La URL HTTP(S) o de Git 'clone' de un repositorio exi
 migrate.github_token_desc=Puedes poner uno o más tokens con comas separadas aquí para hacer migrar más rápido debido al límite de velocidad de Github API. PRECAUCIÓN: Abusar esta característica puede violar la política del proveedor de servicios y llevar a bloquear la cuenta.
 migrate.clone_local_path=o una ruta local del servidor
 migrate.permission_denied=No te está permitido importar repositorios locales.
+migrate.permission_denied_blocked=No puede importar desde hosts no permitidos, por favor pida al administrador que marque ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS configuración.
 migrate.invalid_local_path=La ruta local es inválida. No existe o no es un directorio.
 migrate.invalid_lfs_endpoint=El punto final de LFS no es válido.
 migrate.failed=Migración fallida: %v
@@ -905,12 +910,14 @@ migrate.migrate=Migrar desde %s
 migrate.migrating=Migrando desde %s...
 migrate.migrating_failed=La migración desde %s ha fallado.
 migrate.migrating_failed.error=Error: %s
+migrate.migrating_failed_no_addr=Migración fallida.
 migrate.github.description=Migrar datos desde github.com u otra instancia de Github.
 migrate.git.description=Migrar un repositorio sólo desde cualquier servicio Git.
 migrate.gitlab.description=Migrar datos de gitlab.com u otra instancia de GitLab.
 migrate.gitea.description=Migrar datos de gitea.com u otra instancia de Gitea.
 migrate.gogs.description=Migrar datos de notabug.org u otra instancia de Gogs.
 migrate.onedev.description=Migrar datos desde code.onedev.io u otra instancia de OneDev.
+migrate.gitbucket.description=Migrar datos de instancias de GitBucket.
 migrate.migrating_git=Migrando datos de Git
 migrate.migrating_topics=Migrando Temas
 migrate.migrating_milestones=Migrando Hitos
@@ -939,6 +946,7 @@ clone_this_repo=Clonar este repositorio
 create_new_repo_command=Crear un nuevo repositorio desde línea de comandos
 push_exist_repo=Hacer push de un repositorio existente desde línea de comandos
 empty_message=Este repositorio no contiene ningún contenido.
+broken_message=Los datos de git subyacentes a este repositorio no pueden ser leídos. Contacte con el administrador de esta instancia o elimine este repositorio.
 
 code=Código
 code.desc=Acceder código fuente, archivos, commits, y ramas.
@@ -1165,6 +1173,9 @@ issues.add_assignee_at='fue asignado por %s %s'
 issues.remove_assignee_at=`fue desasignado por %s %s`
 issues.remove_self_assignment=`eliminado su asignación %s`
 issues.change_title_at=`cambió el título de %s a %s %s`
+issues.change_ref_at=`cambió referencia de %s a %s %s`
+issues.remove_ref_at=`eliminó la referencia %s %s`
+issues.add_ref_at=`añadió la referencia %s %s`
 issues.delete_branch_at=`rama eliminada %s %s`
 issues.open_tab=%d abiertas
 issues.close_tab=%d cerradas
@@ -1398,10 +1409,12 @@ pulls.compare_changes_desc=Seleccione la rama en la que se fusiona y la rama a r
 pulls.compare_base=fusionar en
 pulls.compare_compare=recuperar de
 pulls.switch_comparison_type=Cambiar tipo de comparación
+pulls.switch_head_and_base=Intercambiar cabeza y base
 pulls.filter_branch=Filtrar rama
 pulls.no_results=Sin resultados.
 pulls.nothing_to_compare=Estas ramas son iguales. No hay necesidad para crear un pull request.
 pulls.nothing_to_compare_and_allow_empty_pr=Estas ramas son iguales. Este PR estará vacío.
+pulls.has_pull_request=`Ya existe un pull request entre estas ramas: %[2]s#%[3]d`
 pulls.create=Crear Pull Request
 pulls.title_desc=desea fusionar %[1]d commits de %[2]s en %[3]s
 pulls.merged_title_desc=fusionados %[1]d commits de %[2]s en %[3]s %[4]s
@@ -1919,6 +1932,8 @@ settings.require_signed_commits=Requiere commits firmados
 settings.require_signed_commits_desc=Rechazar push en esta rama si los commits no están firmados o no son verificables.
 settings.protect_protected_file_patterns=Patrones de archivos protegidos (separados con punto y coma '\;'):
 settings.protect_protected_file_patterns_desc=Archivos protegidos que no están permitidos a ser cambiados directamente incluso si el usuario tiene permiso para agregar, editar o borrar archivos en esta rama. Múltiples patrones pueden separarse usando punto y coma ('\;'). Vea la documentación de github.com/gobwas/glob para la sintaxis de patrones. Ejemplos: .drone.yml, /docs/**/*.txt.
+settings.protect_unprotected_file_patterns=Patrones de archivos sin protección (separados con punto y coma '\;'):
+settings.protect_unprotected_file_patterns_desc=Archivos sin protección que se pueden cambiar directamente si el usuario tiene acceso de escritura, evitando la restricción push. Múltiples patrones pueden separarse usando punto y coma ('\;'). Vea la documentación de github.com/gobwas/glob para la sintaxis de patrones. Ejemplos: .drone.yml, /docs/**/*.txt.
 settings.add_protected_branch=Activar protección
 settings.delete_protected_branch=Desactivar protección
 settings.update_protect_branch_success=La protección de la rama '%s' ha sido actualizada.
@@ -1992,6 +2007,7 @@ settings.lfs_pointers.inRepo=En repositorio
 settings.lfs_pointers.exists=Existe en almacén
 settings.lfs_pointers.accessible=Accesible al usuario
 settings.lfs_pointers.associateAccessible=Asociar %d OID accesibles
+settings.rename_branch_failed_exist=No se puede renombrar la rama porque la rama destino %s ya existe.
 settings.rename_branch_failed_not_exist=No se puede renombrar la rama %s porque no existe.
 settings.rename_branch_success=La rama %s se renombró correctamente a %s.
 settings.rename_branch_from=nombre de la rama vieja
@@ -2028,6 +2044,7 @@ diff.file_suppressed=La diferencia del archivo ha sido suprimido porque es demas
 diff.file_suppressed_line_too_long=Las diferiencias del archivo han sido suprimidas porque una o mas lineas son muy largas
 diff.too_many_files=Algunos archivos no se mostraron porque demasiados archivos han cambiado en esta diferencia
 diff.show_more=Ver más
+diff.load=Cargar Diff
 diff.generated=generado
 diff.vendored=vendido
 diff.comment.placeholder=Deja un comentario
@@ -2377,6 +2394,7 @@ users.list_status_filter.reset=Reiniciar
 users.list_status_filter.is_active=Activo
 users.list_status_filter.not_active=Inactivo
 users.list_status_filter.is_admin=Administrador
+users.list_status_filter.not_admin=Sin Admin
 users.list_status_filter.is_restricted=Restringido
 users.list_status_filter.not_restricted=No restringido
 users.list_status_filter.is_prohibit_login=Prohibido el inicio de sesión
@@ -2487,6 +2505,7 @@ auths.oauth2_authURL=URL de Autorización
 auths.oauth2_profileURL=URL del perfil
 auths.oauth2_emailURL=URL de correo
 auths.skip_local_two_fa=Omitir 2FA local
+auths.skip_local_two_fa_helper=Dejar sin ajustar significa que los usuarios locales con una configuración 2FA tendrán que pasar 2FA para iniciar sesión
 auths.oauth2_tenant=Tenant
 auths.enable_auto_register=Hablilitar Auto-Registro
 auths.sspi_auto_create_users=Crear usuarios automáticamente
@@ -2535,6 +2554,7 @@ config.app_ver=Versión de Gitea
 config.app_url=URL base de Gitea
 config.custom_conf=Ruta del fichero de configuración
 config.custom_file_root_path=Ruta raíz de los archivos personalizada
+config.domain=Dominio del Servidor
 config.offline_mode=Modo offline
 config.disable_router_log=Deshabilitar Log del Router
 config.run_user=Ejecutar como usuario
@@ -2550,6 +2570,7 @@ config.reverse_auth_user=Autenticación Inversa de Usuario
 config.ssh_config=Configuración SSH
 config.ssh_enabled=Habilitado
 config.ssh_start_builtin_server=Utilizar servidor integrado
+config.ssh_domain=Dominio del servidor SSH
 config.ssh_port=Puerto
 config.ssh_listen_port=Puerto de escucha
 config.ssh_root_path=Ruta raíz
@@ -2746,14 +2767,32 @@ notices.delete_success=Los avisos del sistema se han eliminado.
 [action]
 create_repo=creó el repositorio %s
 rename_repo=repositorio renombrado de %[1]s a %[3]s
+commit_repo=hizo push a %[3]s en %[4]s
+create_issue=`abrió la incidencia %[3]s#%[2]s`
+close_issue=`cerró la incidencia %[3]s#%[2]s`
+reopen_issue=`reabrió la incidencia %[3]s#%[2]s`
+create_pull_request=`creó el pull request %[3]s#%[2]s`
+close_pull_request=`cerró el pull request %[3]s#%[2]s`
+reopen_pull_request=`reabrió el pull request %[3]s#%[2]s`
+comment_issue=`comentó en la incidencia %[3]s#%[2]s`
+comment_pull=`comentó en el pull request %[3]s#%[2]s`
+merge_pull_request=`fusionó el pull request %[3]s#%[2]s`
 transfer_repo=transfirió el repositorio %s a %s
+push_tag=hizó push la etiqueta %[3]s a %[4]s
 delete_tag=etiqueta eliminada %[2]s de %[3]s
 delete_branch=rama %[2]s eliminada, de %[3]s
 compare_branch=Comparar
 compare_commits=Comparar %d commits
 compare_commits_general=Comparar commits
+mirror_sync_push=sincronizó cambios a %[3]s en %[4]s desde réplica
+mirror_sync_create=sincronizó la nueva referencia %[3]s a %[4]s de réplica
 mirror_sync_delete=sincronizada y eliminada referencia %[2]s en %[3]s desde réplica
+approve_pull_request=`aprobó %[3]s#%[2]s`
+reject_pull_request=`sugirió cambios para %[3]s#%[2]s`
+publish_release=`se lanzó  "%[4]s"  en %[3]s`
+review_dismissed=`descartó la revisión de %[4]s para %[3]s#%[2]s`
 review_dismissed_reason=Motivo:
+create_branch=creó rama %[3]s en %[4]s
 starred_repo=destacó %[2]s
 watched_repo=comenzó a seguir %[2]s