ソースを参照

finish new edit auth UI

Unknwon 10 年 前
コミット
121a81a2c5

+ 2 - 2
cmd/web.go

@@ -330,8 +330,8 @@ func runWeb(ctx *cli.Context) {
 			m.Get("", admin.Authentications)
 			m.Get("/new", admin.NewAuthSource)
 			m.Post("/new", bindIgnErr(auth.AuthenticationForm{}), admin.NewAuthSourcePost)
-			m.Get("/:authid", admin.EditAuthSource)
-			m.Post("/:authid", bindIgnErr(auth.AuthenticationForm{}), admin.EditAuthSourcePost)
+			m.Combo("/:authid").Get(admin.EditAuthSource).
+				Post(bindIgnErr(auth.AuthenticationForm{}), admin.EditAuthSourcePost)
 			m.Post("/:authid/delete", admin.DeleteAuthSource)
 		})
 

ファイルの差分が大きいため隠しています
+ 133 - 125
conf/locale/locale_bg-BG.ini


+ 7 - 2
conf/locale/locale_de-DE.ini

@@ -14,7 +14,7 @@ version=Version
 page=Seite
 template=Vorlage
 language=Sprache
-create_new=Erstellen...
+create_new=Create...
 user_profile_and_more=Benutzerprofil und mehr
 signed_in_as=Eingeloggt als
 
@@ -718,6 +718,7 @@ notices=System-Mitteilungen
 monitor=Monitoring
 prev=zurück
 next=vor
+total=Total: %d
 
 dashboard.statistic=Statistik
 dashboard.operations=Operationen
@@ -804,7 +805,7 @@ repos.stars=Markierungen
 repos.issues=Issues
 
 auths.auth_manage_panel=Verwaltungspanel für die Authentifizierung
-auths.new=Neue Authentifizierungsquelle hinzufügen
+auths.new=Add New Source
 auths.name=Name
 auths.type=Typ
 auths.enabled=aktiviert
@@ -816,7 +817,9 @@ auths.host=Host
 auths.port=Port
 auths.bind_dn=DN binden
 auths.bind_password=Passwort binden
+auths.bind_password_helper=Warning: This password is stored in plain text. Do not use a high privileged account.
 auths.user_base=Benutzer-Such-Basis
+auths.user_dn=User DN
 auths.attribute_name=Vorname Attribut
 auths.attribute_surname=Nachname Attribut
 auths.attribute_mail=E-Mail Attribut
@@ -833,11 +836,13 @@ auths.enable_auto_register=Automatische Registrierung aktivieren
 auths.tips=Tipps
 auths.edit=Authentifizierungseinstellungen bearbeiten
 auths.activated=Diese Authentifizierung ist aktiviert
+auths.new_success=New authentication '%s' has been added successfully.
 auths.update_success=Die Authentifizierungseinstellungen wurden erfolgreich aktualisiert.
 auths.update=Authentifizierungseinstellungen aktualisieren
 auths.delete=Diese Authentifizierung löschen
 auths.delete_auth_title=Löschen der Authentifizierung
 auths.delete_auth_desc=Diese Authentifizierung wird gelöscht, möchtest du fortfahren?
+auths.deletion_success=Authentication has been deleted successfully!
 
 config.server_config=Server-Konfiguration
 config.app_name=Anwendungsname

+ 2 - 0
conf/locale/locale_en-US.ini

@@ -836,11 +836,13 @@ auths.enable_auto_register = Enable Auto Registration
 auths.tips = Tips
 auths.edit = Edit Authentication Setting
 auths.activated = This authentication is activate
+auths.new_success = New authentication '%s' has been added successfully.
 auths.update_success = Authentication setting has been updated successfully.
 auths.update = Update Authentication Setting
 auths.delete = Delete This Authentication
 auths.delete_auth_title = Authentication Deletion
 auths.delete_auth_desc = This authentication is going to be deleted, do you want to continue?
+auths.deletion_success = Authentication has been deleted successfully!
 
 config.server_config = Server Configuration
 config.app_name = Application Name

+ 75 - 67
conf/locale/locale_es-ES.ini

@@ -1,6 +1,6 @@
 app_desc=Un servicio de Git auto alojado y sin complicaciones
 
-home=Incio
+home=Inicio
 dashboard=Panel de control
 explore=Explorar
 help=Ayuda
@@ -9,12 +9,12 @@ social_sign_in=Inicio de sesión social: 2° paso <small>cuenta de asociado</sma
 sign_out=Cerrar sesión
 sign_up=Suscripción
 register=Registro
-website=Pagina Web
+website=Página Web
 version=Versión
 page=Página
 template=Plantilla
-language=Lenguaje
-create_new=Crear nuevo...
+language=Idioma
+create_new=Create...
 user_profile_and_more=Perfil de usuario y más
 signed_in_as=Identificado como
 
@@ -26,7 +26,7 @@ captcha=Captcha
 
 repository=Repositorio
 organization=Organización
-mirror=Espejo
+mirror=Mirror
 new_repo=Nuevo repositorio
 new_migrate=Nueva Migración
 new_fork=Nuevo Fork del Repositorio
@@ -38,9 +38,9 @@ settings=Configuraciones
 your_profile=Tu perfil
 your_settings=Tu configuración
 
-news_feed=entrada de noticias
-pull_requests=Solicitudes de retiro
-issues=Publicaciones
+news_feed=Feed de noticias
+pull_requests=Pull Requests
+issues=Incidencias
 
 cancel=Cancelar
 
@@ -57,7 +57,7 @@ title=Pasos de la instalación por primera vez
 requite_db_desc=Gogs necesita MySQL, PostgreSQL o SQLite3.
 db_title=Configuración de base de datos
 db_type=Tipo de base de datos
-host=Anfitrión
+host=Host
 user=Usuario
 password=Contraseña
 db_name=Nombre de la base de datos
@@ -96,7 +96,7 @@ server_service_title=Configuración de Servidor y Otros Servicios
 offline_mode=Activar el modo Sin Conexión
 offline_mode_popup=Desactivar el CDN incluso en el modo de producción, todos los recursos se servirán localmente.
 disable_gravatar=Desactivar el Servicio Gravatar
-disable_gravatar_popup=Desactivar Gravatar y cualquier fuente personalizada, todos los avatares deben ser cargados por los usuarios o el avatar por defecto.
+disable_gravatar_popup=Desactivar Gravatar y cualquier otra fuente personalizada. Todos los avatares deben ser cargados por los usuarios o en su defecto se mostrará el avatar predeterminado.
 disable_registration=Desactivar Auto-Registro
 disable_registration_popup=Desactivar auto-registro del usuario, solo el administrador podrá crear cuentas nuevas.
 require_sign_in_view=Activar el Inicio de Sesión obligatorio para Ver Páginas
@@ -127,7 +127,7 @@ my_orgs=Mis Organizaciones
 my_mirrors=Mis Mirrors
 view_home=Ver %s
 
-issues.in_your_repos=En sus repositorios
+issues.in_your_repos=En tus repositorios
 
 [explore]
 repos=Repositorios
@@ -241,7 +241,7 @@ location=Localización
 update_profile=Actualizar Perfil
 update_profile_success=Tu perfil se ha actualizado correctamente.
 change_username=Nombre de usuario modificado
-change_username_desc=El nombre de usuario ha sido modificado, ¿quieres continuar? Esta acción afectará a todos los enlaces relacionados con tu cuenta.
+change_username_prompt=Este cambio afectará a los enlaces que hacen referencia a su cuenta.
 continue=Continuar
 cancel=Cancelar
 
@@ -256,6 +256,7 @@ update_avatar_success=La configuración de tu avatar se ha actualizado correctam
 change_password=Cambiar contraseña
 old_password=Contraseña actual
 new_password=Nueva contraseña
+retype_new_password=Confirmar nueva contraseña
 password_incorrect=Contraseña actual incorrecta.
 change_password_success=La contraseña se ha modificado correctamente. Ya puedes iniciar sesión con tu nueva contraseña.
 
@@ -265,6 +266,9 @@ email_desc=Tu dirección de correo principal se utilizará para las notificacion
 primary=Principal
 primary_email=Marcar como principal
 delete_email=Eliminar
+email_deletion=Eliminación de Correo Electrónico
+email_deletion_desc=Delete this e-mail address will remove related information from your account. Do you want to continue?
+email_deletion_success=¡El correo electrónico ha sido eliminado correctamente!
 add_new_email=Añadir nueva dirección de correo electrónico
 add_email=Añadir correo electrónico
 add_email_confirmation_sent=Un nuevo correo de confirmación ha sido enviado a <b>%s</b>, por favor, comprueba tu bandeja de entrada en las próximas %d horas para completar el proceso de confirmación.
@@ -273,7 +277,7 @@ add_email_success=Tu nuevo correo electrónico se ha añadido correctamente.
 manage_ssh_keys=Gestionar Claves SSH
 add_key=Añadir Clave
 ssh_desc=Esta es la lista de claves SSH asociadas con tu cuenta. Elimina cualquier clave que no reconozcas.
-ssh_helper=<strong>¿Necesitas ayuda?</strong>. Consulta nuestra guía para <a href="%s">generar claves SSH</a> o solucionar <a href="%s">problemas comunes de SSH</a>.
+ssh_helper=<strong>¿Necesitas ayuda?</strong> Consulta la guía de GitHub para <a href="%s">generar claves SSH</a> o solucionar <a href="%s">problemas comunes</a> al usar SSH.
 add_new_key=Añadir clave SSH
 ssh_key_been_used=El contenido de la clave pública se ha utilizado.
 ssh_key_name_used=Ya existe una clave pública con el mismo nombre.
@@ -281,14 +285,14 @@ key_name=Nombre de la Clave
 key_content=Contenido
 add_key_success=¡Nueva clave SSH '%s' añadida correctamente!
 delete_key=Eliminar
-ssh_key_deletion=Borrado de Llave SSH
-ssh_key_deletion_desc=Al borrar esta llave SSH no podrá volver a acceder con ella a su cuenta. Desea continuar?
-ssh_key_deletion_success=¡La llave SSH ha sido eliminada con éxito!
+ssh_key_deletion=Borrado de Clave SSH
+ssh_key_deletion_desc=Si elimina esta clave SSH no podrá volver a usarla para acceder a su cuenta. ¿Desea continuar?
+ssh_key_deletion_success=¡La clave SSH ha sido eliminada con éxito!
 add_on=Añadido en
 last_used=Utilizado por última vez en
 no_activity=No hay actividad reciente
 key_state_desc=Esta clave ha sido usada en los últimos 7 días
-token_state_desc=Este token ha sido usado en los últimos 7 días
+token_state_desc=Token usado en los últimos 7 días
 
 manage_social=Gestionar Redes Sociales asociadas
 social_desc=Esta es una lista de las Redes Sociales asociadas. Elimina cualquier vínculo que no reconozcas.
@@ -297,7 +301,7 @@ unbind_success=La Red Social ha sido desvinculada.
 
 manage_access_token=Gestionar los Tokens de Acceso personales
 generate_new_token=Generar nuevo Token
-tokens_desc=Tokens generados que se pueden usar para acceder al API de Gogs.
+tokens_desc=Tokens usados para acceder al API de Gogs.
 new_token_desc=Desde ahora, todos los tokens tendrán acceso completo a tu cuenta.
 token_name=Nombre del Token
 generate_token=Generar Token
@@ -343,11 +347,11 @@ migrate_type=Tipo de Migración
 migrate_type_helper=Este repositorio será un <span class="text blue">mirror</span>
 migrate_repo=Migrar Repositorio
 migrate.clone_address=Clonar Dirección
-migrate.clone_address_desc=Esto puede ser una URL HTTP/HTTPS/GIT o una ruta local del servidor.
+migrate.clone_address_desc=Puede ser una URL HTTP/HTTPS/GIT o una ruta local del servidor.
 migrate.invalid_local_path=Rutal local inválida, no existe o no es un directorio.
 
 forked_from=forked de
-fork_from_self=eres el propietario del repositorio, no puedes hacer fork!
+fork_from_self=Eres el propietario del repositorio, ¡no puedes hacer fork!
 copy_link=Copiar
 click_to_copy=Copiar al portapapeles
 copied=Copiado correctamente
@@ -410,19 +414,19 @@ issues.close_tab=%d cerradas
 issues.filter_label=Etiqueta
 issues.filter_label_no_select=Ninguna etiqueta seleccionada
 issues.filter_milestone=Milestone
-issues.filter_milestone_no_select=Milestone no seleccionado
-issues.filter_assignee=Asignada por
+issues.filter_milestone_no_select=Ningún Milestone seleccionado
+issues.filter_assignee=Asignada a
 issues.filter_assginee_no_select=Sin asignar
 issues.filter_type=Tipo
 issues.filter_type.all_issues=Todas las incidencias
-issues.filter_type.assigned_to_you=Asignada a ti
-issues.filter_type.created_by_you=Creada por ti
+issues.filter_type.assigned_to_you=Asignadas a ti
+issues.filter_type.created_by_you=Creadas por ti
 issues.filter_type.mentioning_you=Citado en
 issues.filter_sort=Ordenar
 issues.filter_sort.latest=Más recientes
-issues.filter_sort.oldest=Más antiguos
+issues.filter_sort.oldest=Más antiguas
 issues.filter_sort.recentupdate=Actualizada recientemente
-issues.filter_sort.leastupdate=Least recently updated
+issues.filter_sort.leastupdate=Actualizada menos recientemente
 issues.filter_sort.mostcomment=Más comentadas
 issues.filter_sort.leastcomment=Menos comentadas
 issues.opened_by=abierta %[1]s por <a href="%[2]s">%[3]s</a>
@@ -433,7 +437,7 @@ issues.open_title=Abierta
 issues.closed_title=Cerrada
 issues.num_comments=%d comentarios
 issues.commented_at=`comentada <a id="%[1]s" href="#%[1]s">%[2]s</a>`
-issues.no_content=No hay contenido por el momento.
+issues.no_content=Aun no existe contenido.
 issues.close_issue=Cerrar
 issues.close_comment_issue=Cerrar y Comentar
 issues.reopen_issue=Reabrir
@@ -442,11 +446,11 @@ issues.create_comment=Comentar
 issues.closed_at=`cerrada <a id="%[1]s" href="#%[1]s">%[2]s</a>`
 issues.reopened_at=`reabierta <a id="%[1]s" href="#%[1]s">%[2]s</a>`
 issues.commit_ref_at=`mencionada esta incidencia en un commit <a id="%[1]s" href="#%[1]s">%[2]s</a>`
-issues.poster=Poster
+issues.poster=Autor
 issues.admin=Administrador
 issues.owner=Propietario
 issues.sign_up_for_free=Registro gratuito
-issues.sign_in_require_desc=para unirse a esta conversación. Ya dispone de una cuenta? <a href="%s">Inicie sesión para comentar</a>
+issues.sign_in_require_desc=para unirse a esta conversación. ¿Ya dispone de una cuenta? <a href="%s">Inicie sesión para comentar</a>
 issues.edit=Editar
 issues.cancel=Cancelar
 issues.save=Guardar
@@ -456,7 +460,7 @@ issues.label_count=%d etiquetas
 issues.label_open_issues=%d incidencias abiertas
 issues.label_edit=Editar
 issues.label_delete=Borrar
-issues.label_modify=Modificación de Etiqueta
+issues.label_modify=Edición de Etiqueta
 issues.label_deletion=Borrado de Etiqueta
 issues.label_deletion_desc=Al borrar la etiqueta su información será eliminada de todas las incidencias relacionadas. Desea continuar?
 issues.label_deletion_success=Etiqueta borrada con éxito!
@@ -466,10 +470,10 @@ pulls.compare_changes_desc=Comparar dos ramas y generar un pull request con las
 pulls.compare_base=base
 pulls.compare_compare=comparar con
 pulls.filter_branch=Filtrar rama
-pulls.no_results=No se han encontrado resultados.
-pulls.nothing_to_compare=No hay nada que comparar porque las dos ramas coinciden.
+pulls.no_results=Sin resultados.
+pulls.nothing_to_compare=Nada que comparar. Las dos ramas coinciden.
 pulls.has_pull_request=`Ya existe un pull request entre estas dos ramas: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
-pulls.create=Nuevo Pull Request
+pulls.create=Crear Pull Request
 pulls.title_desc=desea fusionar %[1]d commits de <code>%[2]s</code> en <code>%[3]s</code>
 pulls.merged_title_desc=fusionados %[1]d commits de <code>%[2]s</code> en <code>%[3]s</code> %[4]s
 pulls.tab_conversation=Conversación
@@ -490,7 +494,7 @@ milestones.close_tab=%d cerradas
 milestones.closed=Cerrada %s
 milestones.no_due_date=Sin fecha límite
 milestones.open=Abrir
-milestones.close=Cerrada
+milestones.close=Cerrar
 milestones.new_subheader=Cree milestones para organizar las incidencias.
 milestones.create=Nuevo Milestone
 milestones.title=Título
@@ -517,7 +521,7 @@ settings.basic_settings=Configuración Básica
 settings.danger_zone=Zona de Peligro
 settings.site=Sitio Oficial
 settings.update_settings=Actualizar Configuración
-settings.change_reponame_prompt=This change will affect how links relate to the repository.
+settings.change_reponame_prompt=Este cambio afectará a los enlaces al repositorio.
 settings.transfer=Transferir la Propiedad
 settings.transfer_desc=Transferir este repositorio a otro usuario u organización donde tengas permisos de administración.
 settings.new_owner_has_same_repo=El nuevo propietario tiene un repositorio con el mismo nombre.
@@ -543,7 +547,7 @@ settings.user_is_org_member=El usuario es miembro de la organización, no puede
 settings.add_webhook=Añadir Webhook
 settings.hooks_desc=Los Webhooks permiten a servicios externos recibir notificaciones cuando sucedan ciertos eventos en Gogs. Cuando sucedan los eventos especificados, enviaremos una petición POST a cada una de las URLs indicadas. Para obtener más información, consulta nuestra <a target="_blank" href="%s">Guía de Webhooks</a>.
 settings.webhook_deletion=Eliminar Webhook
-settings.webhook_deletion_desc=El borrado de este webhook eliminará su información y todo su historial. ¿Desea continuar?
+settings.webhook_deletion_desc=Al borrar este webhook se eliminará su información y todo su historial. ¿Desea continuar?
 settings.webhook_deletion_success=¡Webhook eliminado con éxito!
 settings.webhook.request=Petición
 settings.webhook.response=Respuesta
@@ -567,7 +571,7 @@ settings.event_push_only=Solo el evento <code>push</code>.
 settings.event_send_everything=Necesito <strong>todo</strong>.
 settings.event_choose=Déjeme elegir lo que necesito.
 settings.event_create=Crear
-settings.event_create_desc=Branch o etiqueta creada
+settings.event_create_desc=Rama o etiqueta creada
 settings.event_push=Push
 settings.event_push_desc=Git push a un repositorio
 settings.active=Activo
@@ -583,16 +587,16 @@ settings.slack_token=Token
 settings.slack_domain=Dominio
 settings.slack_channel=Canal
 settings.deploy_keys=Claves de Despliegue
-settings.add_deploy_key=Add Deploy Key
-settings.no_deploy_keys=You haven't added any deploy key.
+settings.add_deploy_key=Añadir Clave de Despliegue
+settings.no_deploy_keys=No has añadido ninguna clave de despliegue.
 settings.title=Título
 settings.deploy_key_content=Contenido
-settings.key_been_used=Deploy key content has been used.
-settings.key_name_used=Deploy key with same name has already existed.
-settings.add_key_success=New deploy key '%s' has been added successfully!
-settings.deploy_key_deletion=Delete Deploy Key
-settings.deploy_key_deletion_desc=Delete this deploy key will remove all related accesses for this repository. Do you want to continue?
-settings.deploy_key_deletion_success=Deploy key has been deleted successfully!
+settings.key_been_used=Se ha usado la clave de despliegue.
+settings.key_name_used=Ya existe una clave de despliegue con el mismo nombre.
+settings.add_key_success=¡La nueva clave de desplieque '%s' ha sido creada con éxito!
+settings.deploy_key_deletion=Eliminar Clave de Despliegue
+settings.deploy_key_deletion_desc=Al eliminar esta clave de despliegue se perderán el permiso de acceso a este repositorio con dicha clave. ¿Deseas continuar?
+settings.deploy_key_deletion_success=¡Clave de despliegue eliminada con éxito!
 
 diff.browse_source=Explorar el Código
 diff.parent=padre
@@ -630,7 +634,6 @@ release.tag_name_already_exist=Ya existe una Release con esta etiqueta.
 [org]
 org_name_holder=Nombre de la Organización
 org_name_helper=Los grandes nombres de organizaciones son cortos y memorables.
-org_email_helper=Los correos electrónicos de las organizaciones reciben todas las notificaciones y confirmaciones.
 create_org=Crear Organización
 repo_updated=Actualizado
 people=Personas
@@ -652,12 +655,12 @@ form.name_pattern_not_allowed=El patrón de nombre de la organización '%s' no e
 settings=Configuración
 settings.options=Opciones
 settings.full_name=Nombre Completo
-settings.website=Sitio Web
+settings.website=Página Web
 settings.location=Localización
 settings.update_settings=Actualizar Configuración
-settings.change_orgname=Nombre de la Organización Modificado
-settings.change_orgname_desc=El nombre de la organización ha sido modificado, ¿quieres continuar? Esta acción afectará a todos los enlaces relacionados con esta organización.
 settings.update_setting_success=La configuración de la Organización se ha actualizado correctamente.
+settings.change_orgname_prompt=Este cambio afectará a los enlaces que hacen referencia a la organización.
+settings.update_avatar_success=La configuración de avatar de la organización ha sido actualizada con éxito.
 settings.delete=Eliminar Organización
 settings.delete_account=Eliminar esta Organización
 settings.delete_prompt=Esta operación eliminará esta organización de manera permanente, y ¡<strong>NO PUEDE</strong> deshacerse!
@@ -715,6 +718,7 @@ notices=Avisos del Sistema
 monitor=Monitorización
 prev=Anterior
 next=Siguiente
+total=Total: %d
 
 dashboard.statistic=Estadísticas
 dashboard.operations=Operaciones
@@ -774,9 +778,9 @@ users.admin=Administrador
 users.repos=Repositorios
 users.created=Creado
 users.edit=Editar
-users.auth_source=Origen de Autorización
+users.auth_source=Fuente de Autenticación
 users.local=Local
-users.auth_login_name=Nombre de Usuario de Autorización
+users.auth_login_name=Nombre de Inicio de Sesión de Autenticación
 users.update_profile_success=El perfil de la cuenta se ha actualizado correctamente.
 users.edit_account=Editar Cuenta
 users.is_activated=Esta cuenta está activada
@@ -800,27 +804,29 @@ repos.watches=Vigilantes
 repos.stars=Estrellas
 repos.issues=Incidencias
 
-auths.auth_manage_panel=Panel de Gestión de Autorizaciones
-auths.new=Añadir nuevo origen de autorización
+auths.auth_manage_panel=Panel de Administración de Autenticación
+auths.new=Add New Source
 auths.name=Nombre
 auths.type=Tipo
 auths.enabled=Activo
 auths.updated=Actualizado
-auths.auth_type=Tipo de Autorización
-auths.auth_name=Nombre de Autorización
+auths.auth_type=Tipo de Autenticación
+auths.auth_name=Nombre de Autenticación
 auths.domain=Dominio
 auths.host=Host
 auths.port=Puerto
 auths.bind_dn=Bind DN
-auths.bind_password=Bind Password
-auths.user_base=User Search Base
+auths.bind_password=Contraseña Bind
+auths.bind_password_helper=Warning: This password is stored in plain text. Do not use a high privileged account.
+auths.user_base=Base de Búsqueda de Usuarios
+auths.user_dn=User DN
 auths.attribute_name=Atributo nombre
 auths.attribute_surname=Atributo apellido
 auths.attribute_mail=Atributo correo electrónico
-auths.filter=User Filter
-auths.admin_filter=Admin Filter
+auths.filter=Filtro de Usuario
+auths.admin_filter=Filtro de Aministrador
 auths.ms_ad_sa=Ms Ad SA
-auths.smtp_auth=Tipo de Autorización SMTP
+auths.smtp_auth=Tipo de Autenticación SMTP
 auths.smtphost=SMTP Host
 auths.smtpport=Puerto SMTP
 auths.enable_tls=Habilitar Cifrado TLS
@@ -828,13 +834,15 @@ auths.skip_tls_verify=Omitir la verificación TLS
 auths.pam_service_name=Nombre del Servicio PAM
 auths.enable_auto_register=Hablilitar Auto-Registro
 auths.tips=Consejos
-auths.edit=Editar la Configuración de Autorización
+auths.edit=Editar la Configuración de Autenticación
 auths.activated=Esta autenticación ha sido activada
-auths.update_success=La Configuración de Autorización ha sido actualizada correctamente.
-auths.update=Actualizar la Configuración de Autorización
-auths.delete=Eliminar esta Autorización
-auths.delete_auth_title=Eliminación de Autorización
-auths.delete_auth_desc=Se va a eliminar esta autorización, ¿quieres continuar?
+auths.new_success=New authentication '%s' has been added successfully.
+auths.update_success=La configuración de autenticación ha sido actualizada con éxito.
+auths.update=Actualizar la Configuración de Autenticación
+auths.delete=Eliminar Autenticación
+auths.delete_auth_title=Borrado de Autenticación
+auths.delete_auth_desc=Esta autenticación será eliminada. ¿Deseas continuar?
+auths.deletion_success=Authentication has been deleted successfully!
 
 config.server_config=Configuración del Servidor
 config.app_name=Nombre de la Aplicación
@@ -918,7 +926,7 @@ notices.op=Op.
 notices.delete_success=La notificación del sistema se ha eliminado correctamente.
 
 [action]
-create_repo=Repositorio creado <a href="%s">%s</a>
+create_repo=repositorio creado <a href="%s">%s</a>
 rename_repo=repositorio renombrado de <code>%[1]s</code> a <a href="%[2]s">%[3]s</a>
 commit_repo=hizo push a <a href="%s/src/%s">%[2]s</a> en <a href="%[1]s">%[3]s</a>
 create_issue=`incidencia abierta <a href="%s/issues/%s">%s#%[2]s</a>`

+ 27 - 19
conf/locale/locale_fr-FR.ini

@@ -14,7 +14,7 @@ version=Version
 page=Page
 template=Modèle
 language=Langue
-create_new=Créer nouveau...
+create_new=Create...
 user_profile_and_more=Profil utilisateur et plus
 signed_in_as=Connecté en tant que
 
@@ -241,7 +241,7 @@ location=Localisation
 update_profile=Valider les modifications
 update_profile_success=Profil mis à jour avec succès.
 change_username=Non d'utilisateur modifié
-change_username_desc=Nom d'utilisateur modifié. Cela affecte tous les liens relatifs à votre compte. Continuer ?
+change_username_prompt=This change will affect the way how links relate to your account.
 continue=Continuer
 cancel=Annuler
 
@@ -256,6 +256,7 @@ update_avatar_success=Votre avatar a été mis à jour avec succès.
 change_password=Modifier le Mot de Passe
 old_password=Mot de Passe actuel
 new_password=Nouveau Mot de Passe
+retype_new_password=Retype New Password
 password_incorrect=Mot de passe actuel incorrect.
 change_password_success=Mot de passe modifié avec succès. Vous pouvez à présent vous connecter avec le nouveau mot de passe.
 
@@ -265,6 +266,9 @@ email_desc=Votre adresse e-mail principale sera utilisée pour les notifications
 primary=Principale
 primary_email=Définir comme principale
 delete_email=Supprimer
+email_deletion=E-mail Deletion
+email_deletion_desc=Delete this e-mail address will remove related information from your account. Do you want to continue?
+email_deletion_success=E-mail has been deleted successfully!
 add_new_email=Ajouter une nouvelle adresse courriel
 add_email=Ajouter un courriel
 add_email_confirmation_sent=Un nouvel e-mail de confirmation a été envoyé à <b>%s</b>, merci de vérifier votre boite de réception dans les %d heures pour compléter le processus de confirmation.
@@ -330,7 +334,7 @@ license=Licence
 license_helper=Sélectionner un fichier de licence
 readme=Readme
 readme_helper=Select a readme template
-auto_init=Initialize this repository selected files and template
+auto_init=Initialize this repository with selected files and template
 create_repo=Créer un Référentiel
 default_branch=Branche par défaut
 mirror_interval=Intervalle du miroir (heure)
@@ -630,7 +634,6 @@ release.tag_name_already_exist=Une publication avec ce nom de tag a déjà exist
 [org]
 org_name_holder=Nom d'organisation
 org_name_helper=Idéalement, un nom d'organisation devrait être court et mémorable.
-org_email_helper=Le courriel de l'organisation recevra toutes les notifications et confirmations.
 create_org=Créer une organisation
 repo_updated=Mis à jour
 people=Contacts
@@ -655,9 +658,9 @@ settings.full_name=Non Complet
 settings.website=Site Web
 settings.location=Localisation
 settings.update_settings=Valider
-settings.change_orgname=Organisation renommée
-settings.change_orgname_desc=L'Organisation a été renommée. Cela affecte tous les liens relatifs à cette organisation. Continuer ?
 settings.update_setting_success=Paramètres d'organisation modifiés avec succès.
+settings.change_orgname_prompt=This change will affect how links relate to the organization.
+settings.update_avatar_success=Organization avatar setting has been updated successfully.
 settings.delete=Supprimer l'organisation
 settings.delete_account=Supprimer cette organisation
 settings.delete_prompt=Cela supprimera cette organisation définitivement. Cette opération est <strong>IRRÉVERSIBLE</strong> !
@@ -715,6 +718,7 @@ notices=Notes Systèmes
 monitor=Supervision
 prev=Préc.
 next=Suiv.
+total=Total: %d
 
 dashboard.statistic=Statistiques
 dashboard.operations=Opérations
@@ -774,9 +778,9 @@ users.admin=Administrateur
 users.repos=Dépôts
 users.created=Créés
 users.edit=Éditer
-users.auth_source=Source d'Autorisation
+users.auth_source=Authentication Source
 users.local=Locales
-users.auth_login_name=Autorisation de connexion
+users.auth_login_name=Authentication Login Name
 users.update_profile_success=Profil mis à jour avec succès.
 users.edit_account=Modifier le Compte
 users.is_activated=Ce compte est activé
@@ -800,27 +804,29 @@ repos.watches=Suivi par
 repos.stars=Votes
 repos.issues=Problèmes
 
-auths.auth_manage_panel=Gestion des Autorisations
-auths.new=Ajouter une Nouvelle Source d'Autorisation
+auths.auth_manage_panel=Authentication Manage Panel
+auths.new=Add New Source
 auths.name=Nom
 auths.type=Type
 auths.enabled=Activé
 auths.updated=Mis à jour
-auths.auth_type=Type d'Autorisation
-auths.auth_name=Nom d'Autorisation
+auths.auth_type=Authentication Type
+auths.auth_name=Authentication Name
 auths.domain=Domaine
 auths.host=Hôte
 auths.port=Port
 auths.bind_dn=Bind DN
 auths.bind_password=Bind Password
+auths.bind_password_helper=Warning: This password is stored in plain text. Do not use a high privileged account.
 auths.user_base=User Search Base
+auths.user_dn=User DN
 auths.attribute_name=Attribut du prénom
 auths.attribute_surname=Attribut du nom de famille
 auths.attribute_mail=Attribut de l'e-mail
 auths.filter=User Filter
 auths.admin_filter=Admin Filter
 auths.ms_ad_sa=Ms Ad SA
-auths.smtp_auth=Type d'Autorisation SMTP
+auths.smtp_auth=SMTP Authentication Type
 auths.smtphost=Hôte SMTP
 auths.smtpport=Port SMTP
 auths.enable_tls=Activer le Chiffrement TLS
@@ -828,13 +834,15 @@ auths.skip_tls_verify=Skip TLS Verify
 auths.pam_service_name=Nom du Service PAM
 auths.enable_auto_register=Connexion Automatique
 auths.tips=Conseils
-auths.edit=Modifier les Paramètres d'Autorisation
+auths.edit=Edit Authentication Setting
 auths.activated=Authentification activée
-auths.update_success=Paramètres d'autorisation mis à jour avec succès.
-auths.update=Mettre les Paramètres d'Autorisation à jour
-auths.delete=Supprimer cette Autorisation
-auths.delete_auth_title=Suppression d'Autorisation
-auths.delete_auth_desc=Cette autorisation sera supprimée. Continuer ?
+auths.new_success=New authentication '%s' has been added successfully.
+auths.update_success=Authentication setting has been updated successfully.
+auths.update=Update Authentication Setting
+auths.delete=Delete This Authentication
+auths.delete_auth_title=Authentication Deletion
+auths.delete_auth_desc=This authentication is going to be deleted, do you want to continue?
+auths.deletion_success=Authentication has been deleted successfully!
 
 config.server_config=Configuration du Serveur
 config.app_name=Nom de l'Application

+ 27 - 19
conf/locale/locale_it-IT.ini

@@ -14,7 +14,7 @@ version=Versione
 page=Pagina
 template=Template
 language=Lingua
-create_new=Create new...
+create_new=Create...
 user_profile_and_more=User profile and more
 signed_in_as=Signed in as
 
@@ -241,7 +241,7 @@ location=Posizione
 update_profile=Aggiorna Profilo
 update_profile_success=Il tuo profilo è stato aggiornato con successo.
 change_username=Username Cambiato
-change_username_desc=Hai cambiato il tuo username. Questo influenzerà il modo in cui i link si relazionano al tuo account. Vuoi proseguire?
+change_username_prompt=This change will affect the way how links relate to your account.
 continue=Continua
 cancel=Annulla
 
@@ -256,6 +256,7 @@ update_avatar_success=Le tue impostazioni avatar sono state aggiornate con succe
 change_password=Cambia Password
 old_password=Password attuale
 new_password=Nuova Password
+retype_new_password=Retype New Password
 password_incorrect=La Password attuale non è corretta.
 change_password_success=La tua password è stata cambiata con successo. Ora puoi accedere usando la nuova password.
 
@@ -265,6 +266,9 @@ email_desc=Il tuo indirizzo e-mail primario sarà usato per le notifiche e altre
 primary=Primario
 primary_email=Imposta come primario
 delete_email=Elimina
+email_deletion=E-mail Deletion
+email_deletion_desc=Delete this e-mail address will remove related information from your account. Do you want to continue?
+email_deletion_success=E-mail has been deleted successfully!
 add_new_email=Aggiungi un nuovo indirizzo E-mail
 add_email=Aggiungi E-mail
 add_email_confirmation_sent=Una nuova email di conferma è stata inviata a <b>%s</b>, per favore controlla la tua posta in arrivo nelle prossime %d ore per completare il processo di registrazione.
@@ -330,7 +334,7 @@ license=Licenza
 license_helper=Selezionare un file di licenza
 readme=Readme
 readme_helper=Select a readme template
-auto_init=Initialize this repository selected files and template
+auto_init=Initialize this repository with selected files and template
 create_repo=Crea Repository
 default_branch=Ramo (Branch) predefinito
 mirror_interval=Intervallo Mirror (in ore)
@@ -630,7 +634,6 @@ release.tag_name_already_exist=Un rilascio con questo tag esiste già.
 [org]
 org_name_holder=Nome dell'Organizzazione
 org_name_helper=Le migliori organizzazioni hanno nomi brevi e memorabili.
-org_email_helper=L'Email dell'organizzazione riceve tutte le notifiche e le conferme.
 create_org=Crea Organizzazione
 repo_updated=Aggiornato
 people=Utenti
@@ -655,9 +658,9 @@ settings.full_name=Nome Completo
 settings.website=Sito Web
 settings.location=Residenza
 settings.update_settings=Aggiorna Impostazioni
-settings.change_orgname=Il nome dell'organizzazione è cambiato
-settings.change_orgname_desc=Il nome dell'organizzazione name è cambiato. Questo influenzerà come collegamenti si riferiscono all'organizzazione. Si desidera continuare?
 settings.update_setting_success=Impostazioni dell'organizzazione aggiornate con successo.
+settings.change_orgname_prompt=This change will affect how links relate to the organization.
+settings.update_avatar_success=Organization avatar setting has been updated successfully.
 settings.delete=Elimina organizzazione
 settings.delete_account=Elimina questa organizzazione
 settings.delete_prompt=L'organizzazione verrà rimossa definitivamente, e questa operazione <strong>NON PUÒ</strong> essere annullata!
@@ -715,6 +718,7 @@ notices=Avvisi di sistema
 monitor=Monitoraggio
 prev=Prec.
 next=Succ.
+total=Total: %d
 
 dashboard.statistic=Statistiche
 dashboard.operations=Operazioni
@@ -774,9 +778,9 @@ users.admin=Amministratore
 users.repos=Repo
 users.created=Creato
 users.edit=Modifica
-users.auth_source=Origine Autorizzazione
+users.auth_source=Authentication Source
 users.local=Locale
-users.auth_login_name=Nome di Accesso dell'Autorizzazione
+users.auth_login_name=Authentication Login Name
 users.update_profile_success=Profilo dell'account aggiornato con successo.
 users.edit_account=Modifica Account
 users.is_activated=Questo account è attivato
@@ -800,27 +804,29 @@ repos.watches=Segue
 repos.stars=Voti
 repos.issues=Problemi
 
-auths.auth_manage_panel=Pannello Gestione Autorizzazioni
-auths.new=Aggiungi Nuova Origine Autorizzazione
+auths.auth_manage_panel=Authentication Manage Panel
+auths.new=Add New Source
 auths.name=Nome
 auths.type=Tipo
 auths.enabled=Attivo
 auths.updated=Aggiornato
-auths.auth_type=Tipo di Autorizzazione
-auths.auth_name=Nome Autorizzazione
+auths.auth_type=Authentication Type
+auths.auth_name=Authentication Name
 auths.domain=Dominio
 auths.host=Host
 auths.port=Porta
 auths.bind_dn=Bind DN
 auths.bind_password=Bind Password
+auths.bind_password_helper=Warning: This password is stored in plain text. Do not use a high privileged account.
 auths.user_base=User Search Base
+auths.user_dn=User DN
 auths.attribute_name=Attributo Nome
 auths.attribute_surname=Attributo Cognome
 auths.attribute_mail=Attributo Email
 auths.filter=User Filter
 auths.admin_filter=Admin Filter
 auths.ms_ad_sa=Ms Ad SA
-auths.smtp_auth=Tipo di Autorizzazione SMTP
+auths.smtp_auth=SMTP Authentication Type
 auths.smtphost=Host SMTP
 auths.smtpport=Porta SMTP
 auths.enable_tls=Abilitare Crittografia TLS
@@ -828,13 +834,15 @@ auths.skip_tls_verify=Skip TLS Verify
 auths.pam_service_name=Nome del Servizio PAM
 auths.enable_auto_register=Abilitare Registrazione Automatica
 auths.tips=Consigli
-auths.edit=Modificare Impostazioni Autorizzazioni
+auths.edit=Edit Authentication Setting
 auths.activated=Questa Autenticazione è stata attivata
-auths.update_success=Impostazione dell'Autorizzazione aggiornate con successo.
-auths.update=Aggiorna Impostazioni Autorizzazioni
-auths.delete=Elimina Questa Autorizzazione
-auths.delete_auth_title=Eliminazione Autorizzazione
-auths.delete_auth_desc=Questa autorizzazione sarà cancellata, vuoi continuare?
+auths.new_success=New authentication '%s' has been added successfully.
+auths.update_success=Authentication setting has been updated successfully.
+auths.update=Update Authentication Setting
+auths.delete=Delete This Authentication
+auths.delete_auth_title=Authentication Deletion
+auths.delete_auth_desc=This authentication is going to be deleted, do you want to continue?
+auths.deletion_success=Authentication has been deleted successfully!
 
 config.server_config=Configurazione Server
 config.app_name=Nome Applicazione

+ 45 - 37
conf/locale/locale_ja-JP.ini

@@ -14,7 +14,7 @@ version=バージョン
 page=ページ
 template=テンプレート
 language=言語
-create_new=新規作成...
+create_new=Create...
 user_profile_and_more=ユーザープロファイルなど
 signed_in_as=サインイン済み
 
@@ -76,7 +76,7 @@ run_user=実行ユーザ
 run_user_helper=ユーザーはリポジトリ ルートパスへのアクセス、及びGogs を実行する権限を所有する必要があります。
 domain=ドメイン
 domain_helper=これはSSHクローンURLに影響する。
-ssh_port=SSH Port
+ssh_port=SSH ポート
 ssh_port_helper=Port number which your SSH server is using, leave it empty to disable SSH feature.
 http_port=HTTP ポート
 http_port_helper=アプリケーションが待ち受けするポート番号。
@@ -95,7 +95,7 @@ mail_notify=メール通知を有効にする
 server_service_title=サーバーとその他のサービスの設定
 offline_mode=オフラインモード有効化
 offline_mode_popup=プロダクション モードでCDN を無効にし、すべてのリソースファイルをローカルで提供します 。
-disable_gravatar=Disable Gravatar Service
+disable_gravatar=Gravatarのサービスを無効にします
 disable_gravatar_popup=Disable Gravatar and custom sources, all avatars are uploaded by users or default.
 disable_registration=自己登録を無効にする
 disable_registration_popup=自己登録を無効にし、管理者のみがアカウント作成できる
@@ -125,9 +125,9 @@ my_repos=私のリポジトリ
 collaborative_repos=共同リポジトリ
 my_orgs=私の組織
 my_mirrors=私のミラー
-view_home=View %s
+view_home=ビュー %s
 
-issues.in_your_repos=In your repositories
+issues.in_your_repos=あなたのリポジトリ
 
 [explore]
 repos=リポジトリ
@@ -241,7 +241,7 @@ location=ロケーション
 update_profile=プロファイル更新
 update_profile_success=あなたのプロフィールが更新されました。
 change_username=ユーザー名が変更されました
-change_username_desc=ユーザー名が変更されている、継続したいですか?これはあなたのアカウントに関連するすべてのリンクに影響を与える。
+change_username_prompt=This change will affect the way how links relate to your account.
 continue=続行
 cancel=キャンセル
 
@@ -256,6 +256,7 @@ update_avatar_success=あなたのアバターの設定が更新されました
 change_password=パスワードを変更
 old_password=現在のパスワード
 new_password=新しいパスワード
+retype_new_password=Retype New Password
 password_incorrect=現在のパスワードが正しくありません。
 change_password_success=パスワードが正常に変更されました。今すぐ新しいパスワード経由でサインインすることができます。
 
@@ -265,6 +266,9 @@ email_desc=あなたのプライマリメールアドレスは、通知やその
 primary=プライマリー
 primary_email=プライマリに設定
 delete_email=削除
+email_deletion=E-mail Deletion
+email_deletion_desc=Delete this e-mail address will remove related information from your account. Do you want to continue?
+email_deletion_success=E-mail has been deleted successfully!
 add_new_email=新しいe-mailアドレスを追加
 add_email=電子メールを追加します。
 add_email_confirmation_sent=<b>%s</b> に新しい確認メールを送信しました、次の %d 時間以内に受信トレイを確認し、確認プロセスを完了してください。
@@ -281,14 +285,14 @@ key_name=キーの名前
 key_content=コンテンツ
 add_key_success=新しいSSHキー '%s' が正常に追加されました!
 delete_key=削除
-ssh_key_deletion=SSH Key Deletion
-ssh_key_deletion_desc=Delete this SSH key will remove all related accesses for your account. Do you want to continue?
-ssh_key_deletion_success=SSH key has been deleted successfully!
+ssh_key_deletion=SSH キーの削除
+ssh_key_deletion_desc=このSSHキーを削除すると、あなたのアカウントに関連するすべてのアクセスが削除されます。続行しますか?
+ssh_key_deletion_success=SSH キーは正常に削除されました!
 add_on=追加された
 last_used=最終使用日
 no_activity=最近の活動なし
 key_state_desc=この鍵は7日間以内に使われています。
-token_state_desc=This token is used in last 7 days
+token_state_desc=この鍵は7日間以内に使われています。
 
 manage_social=関連付けられているSNSアカウントを管理
 social_desc=これは関連付けられたソーシャルアカウントのリストです。あなたが認識していない結び付けを削除します。
@@ -297,15 +301,15 @@ unbind_success=SNSアカウントがバインドされていない。
 
 manage_access_token=個人のアクセス トークンを管理
 generate_new_token=新しいトークンを生成
-tokens_desc=Tokens you have generated that can be used to access the Gogs APIs.
+tokens_desc=生成したトークンを利用して Gogs の API にアクセスすることができます。
 new_token_desc=今のところ、全てのトークンはあなたのアカウントにフルアクセスできます。
 token_name=トークン名
 generate_token=トークンを生成
 generate_token_succees=新しいアクセス トークンは正常に生成されました !今すぐあなたの新しいアクセス トークンをコピーしておいてください。二度と見ることはできませんので確認してください!
 delete_token=削除
-access_token_deletion=Personal Access Token Deletion
-access_token_deletion_desc=Delete this personal access token will remove all related accesses of application. Do you want to continue?
-delete_token_success=Personal access token has been removed successfully! Don't forget to update your application as well.
+access_token_deletion=パーソナルアクセストークンの削除
+access_token_deletion_desc=パーソナルアクセストークンを削除すると、関連するアプリケーションのすべてのアクセスが削除されます。続行しますか?
+delete_token_success=パーソナルアクセストークンは正常に削除されました!同時にあなたのアプリケーションを更新することを忘れないでください。
 
 delete_account=アカウントを削除
 delete_prompt=この操作はあなたのアカウントを完全に削除し、復旧<strong>できない</strong> !
@@ -319,18 +323,18 @@ repo_name=リポジトリ名
 repo_name_helper=偉大なリポジトリ名は短い。思い出に残り、そして<strong>一意</strong>だ。
 visibility=ビジビリティ
 visiblity_helper=このリポジトリは<span class="ui red text">プライベート</span>です。
-visiblity_fork_helper=(Change of this value will affect all forks)
+visiblity_fork_helper=(この値の変更はすべてのフォークに適用されます)
 fork_repo=フォークのリポジトリ
 fork_from=フォーク元
 fork_visiblity_helper=フォークされたリポジトリは可視状態を変更できません
 repo_desc=説明
 repo_lang=言語
-repo_lang_helper=Select .gitignore files
+repo_lang_helper=.gitignoreファイルを選択
 license=ライセンス
 license_helper=ライセンス ファイルを選択
 readme=Readme
 readme_helper=Select a readme template
-auto_init=Initialize this repository selected files and template
+auto_init=Initialize this repository with selected files and template
 create_repo=リポジトリを作成
 default_branch=デフォルトのブランチ
 mirror_interval=ミラー 間隔(時)
@@ -370,7 +374,7 @@ branch_and_tags=ブランチ& タグ
 branches=ブランチ
 tags=タグ
 issues=課題
-pulls=Pull Requests
+pulls=プルリクエスト
 labels=ラベル
 milestones=マイルストーン
 commits=コミット
@@ -418,9 +422,9 @@ issues.filter_type.all_issues=すべての問題
 issues.filter_type.assigned_to_you=あなたに割り当てられました。
 issues.filter_type.created_by_you=あなたが作成しました。
 issues.filter_type.mentioning_you=あなたに伝える
-issues.filter_sort=Sort
-issues.filter_sort.latest=Newest
-issues.filter_sort.oldest=Oldest
+issues.filter_sort=並べ替え
+issues.filter_sort.latest=最新
+issues.filter_sort.oldest=最も古い
 issues.filter_sort.recentupdate=Recently updated
 issues.filter_sort.leastupdate=Least recently updated
 issues.filter_sort.mostcomment=Most commented
@@ -630,7 +634,6 @@ release.tag_name_already_exist=このタグ名には既にリリースが存在
 [org]
 org_name_holder=組織名
 org_name_helper=偉大な組織の名は短く覚えやすいです。
-org_email_helper=組織の電子メールはすべての通知や確認を受け取ります。
 create_org=組織を作成
 repo_updated=更新した
 people=人々
@@ -655,9 +658,9 @@ settings.full_name=フルネーム
 settings.website=WEBサイト
 settings.location=ロケーション
 settings.update_settings=設定の更新
-settings.change_orgname=組織名が変更されました
-settings.change_orgname_desc=組織名が変更されています、継続しますか?これはすべての関連リンクに影響を与えます。
 settings.update_setting_success=組織の設定が更新されました。
+settings.change_orgname_prompt=This change will affect how links relate to the organization.
+settings.update_avatar_success=Organization avatar setting has been updated successfully.
 settings.delete=組織を削除
 settings.delete_account=この組織を削除
 settings.delete_prompt=操作はこの組織を完全に削除し、復旧<strong>できない</strong>!
@@ -715,6 +718,7 @@ notices=システム通知
 monitor=モニタリング
 prev=前へ
 next=次へ
+total=Total: %d
 
 dashboard.statistic=統計
 dashboard.operations=操作
@@ -774,9 +778,9 @@ users.admin=アドミン
 users.repos=リポジトリ
 users.created=作成されました
 users.edit=編集
-users.auth_source=認証元
+users.auth_source=Authentication Source
 users.local=ローカル
-users.auth_login_name=認証ログイン名
+users.auth_login_name=Authentication Login Name
 users.update_profile_success=アカウントのプロファイルが更新されました。
 users.edit_account=アカウントの編集
 users.is_activated=アカウントがアクティブされました
@@ -800,27 +804,29 @@ repos.watches=Watches
 repos.stars=Stars
 repos.issues=課題
 
-auths.auth_manage_panel=承認の管理パネル
-auths.new=新しい認証元を追加
+auths.auth_manage_panel=Authentication Manage Panel
+auths.new=Add New Source
 auths.name=名前
 auths.type=タイプ
 auths.enabled=Enabled
 auths.updated=Updated
-auths.auth_type=認証の種類
-auths.auth_name=認証名
+auths.auth_type=Authentication Type
+auths.auth_name=Authentication Name
 auths.domain=ドメイン
 auths.host=ホスト
 auths.port=ポート
 auths.bind_dn=Bind DN
 auths.bind_password=Bind Password
+auths.bind_password_helper=Warning: This password is stored in plain text. Do not use a high privileged account.
 auths.user_base=User Search Base
+auths.user_dn=User DN
 auths.attribute_name=名前属性
 auths.attribute_surname=名字属性
 auths.attribute_mail=Eメール属性
 auths.filter=User Filter
 auths.admin_filter=Admin Filter
 auths.ms_ad_sa=Ms Ad SA
-auths.smtp_auth=SMTP 認証の種類
+auths.smtp_auth=SMTP Authentication Type
 auths.smtphost=SMTP ホスト
 auths.smtpport=SMTP ポート
 auths.enable_tls=TLS 暗号化を有効にする
@@ -828,13 +834,15 @@ auths.skip_tls_verify=Skip TLS Verify
 auths.pam_service_name=PAMサービス名
 auths.enable_auto_register=自動登録を有効にする
 auths.tips=ヒント
-auths.edit=認証設定を編集
+auths.edit=Edit Authentication Setting
 auths.activated=認証がアクティブされました
-auths.update_success=認証の設定が正常に更新されました。
-auths.update=認証設定の更新
-auths.delete=この権限を削除
-auths.delete_auth_title=認証の削除
-auths.delete_auth_desc=認証を削除します、継続しますか?
+auths.new_success=New authentication '%s' has been added successfully.
+auths.update_success=Authentication setting has been updated successfully.
+auths.update=Update Authentication Setting
+auths.delete=Delete This Authentication
+auths.delete_auth_title=Authentication Deletion
+auths.delete_auth_desc=This authentication is going to be deleted, do you want to continue?
+auths.deletion_success=Authentication has been deleted successfully!
 
 config.server_config=サーバーの構成
 config.app_name=アプリケーション名

+ 8 - 3
conf/locale/locale_lv-LV.ini

@@ -14,7 +14,7 @@ version=Versija
 page=Lapa
 template=Sagatave
 language=Valoda
-create_new=Izveidot jaunu...
+create_new=Create...
 user_profile_and_more=Lietotāja profilu un vairāk
 signed_in_as=Pierakstījies kā
 
@@ -334,7 +334,7 @@ license=Licence
 license_helper=Izvēlieties licences failu
 readme=Readme
 readme_helper=Select a readme template
-auto_init=Initialize this repository selected files and template
+auto_init=Initialize this repository with selected files and template
 create_repo=Izveidot repozitoriju
 default_branch=Noklusējuma atzars
 mirror_interval=Spoguļošanas intervāls (stundās)
@@ -718,6 +718,7 @@ notices=Sistēmas paziņojumi
 monitor=Uzraudzība
 prev=Iepr.
 next=Tālāk
+total=Total: %d
 
 dashboard.statistic=Statistika
 dashboard.operations=Darbības
@@ -804,7 +805,7 @@ repos.stars=Atzīmētās zvaigznītes
 repos.issues=Problēmas
 
 auths.auth_manage_panel=Authentication Manage Panel
-auths.new=Add New Authentication Source
+auths.new=Add New Source
 auths.name=Nosaukums
 auths.type=Veids
 auths.enabled=Iespējota
@@ -816,7 +817,9 @@ auths.host=Resursdators
 auths.port=Ports
 auths.bind_dn=Bind DN
 auths.bind_password=Bind Password
+auths.bind_password_helper=Warning: This password is stored in plain text. Do not use a high privileged account.
 auths.user_base=User Search Base
+auths.user_dn=User DN
 auths.attribute_name=First name attribute
 auths.attribute_surname=Surname attribute
 auths.attribute_mail=E-mail attribute
@@ -833,11 +836,13 @@ auths.enable_auto_register=Iespējot automātisko reģistrāciju
 auths.tips=Padomi
 auths.edit=Edit Authentication Setting
 auths.activated=Autentifikācija ir aktivizēta
+auths.new_success=New authentication '%s' has been added successfully.
 auths.update_success=Authentication setting has been updated successfully.
 auths.update=Update Authentication Setting
 auths.delete=Delete This Authentication
 auths.delete_auth_title=Authentication Deletion
 auths.delete_auth_desc=This authentication is going to be deleted, do you want to continue?
+auths.deletion_success=Authentication has been deleted successfully!
 
 config.server_config=Servera konfigurācija
 config.app_name=Lietotnes nosaukums

+ 26 - 18
conf/locale/locale_nl-NL.ini

@@ -14,7 +14,7 @@ version=Versie
 page=Pagina
 template=Sjabloon
 language=Taal
-create_new=Maak een nieuwe...
+create_new=Create...
 user_profile_and_more=Gebruikersprofiel en meer
 signed_in_as=Aangemeld als
 
@@ -241,7 +241,7 @@ location=Locatie
 update_profile=Profile bijwerken
 update_profile_success=Uw profiel is succesvol bijgewerkt.
 change_username=Username veranderd
-change_username_desc=Gebruikersnaam is gewijzigd. Wilt u doorgaan? Dit zal gevolgen hebben voor alle koppelingen die betrekking hebben op uw account.
+change_username_prompt=This change will affect the way how links relate to your account.
 continue=Doorgaan
 cancel=Annuleren
 
@@ -256,6 +256,7 @@ update_avatar_success=Instellingen voor avatar succesvol bijgewerkt.
 change_password=Verander wachtwoord
 old_password=Huidige wachtwoord
 new_password=Nieuw wachtwoord
+retype_new_password=Retype New Password
 password_incorrect=Huidig wachtwoord is niet correct.
 change_password_success=Wachtwoord is succesvol gewijzigd. U kunt nu met uw nieuwe wachtwoord inloggen.
 
@@ -265,6 +266,9 @@ email_desc=Uw primaire e-mailadres zal worden gebruikt voor meldingen en andere
 primary=Primair
 primary_email=Instellen als primair
 delete_email=Verwijder
+email_deletion=E-mail Deletion
+email_deletion_desc=Delete this e-mail address will remove related information from your account. Do you want to continue?
+email_deletion_success=E-mail has been deleted successfully!
 add_new_email=Nieuw e-mailadres toevoegen
 add_email=E-mailadres toevoegen
 add_email_confirmation_sent=Een nieuwe bevestiging e-mail werd verstuurd naar <b>%s</b>, gelieve uw inbox in de komende %d uren te controleren om het bevestigingsproces te voltooien.
@@ -630,7 +634,6 @@ release.tag_name_already_exist=Versie met deze naam bestaat al.
 [org]
 org_name_holder=Organisatienaam
 org_name_helper=Een goede organisatienaam is kort en memorabel.
-org_email_helper=Alle notificaties en bevestigingen worden gestuurd naar het e-mailadres van de organisatie.
 create_org=Nieuwe organisatie aanmaken
 repo_updated=Geupdate
 people=Mensen
@@ -655,9 +658,9 @@ settings.full_name=Volledige naam
 settings.website=Website
 settings.location=Locatie
 settings.update_settings=Instellingen bijwerken
-settings.change_orgname=Organisatie naam veranderd
-settings.change_orgname_desc=De naam van de organisatie is veranderd, wilt u doorgaan? Dit zal gevolgen hebben voor alle koppelingen die betrekking hebben op deze organisatie.
 settings.update_setting_success=Organisatie instellingen zijn succesvol bijgewerkt.
+settings.change_orgname_prompt=This change will affect how links relate to the organization.
+settings.update_avatar_success=Organization avatar setting has been updated successfully.
 settings.delete=Verwijder organisatie
 settings.delete_account=Verwijder deze organisatie
 settings.delete_prompt=Deze actie zal de origanisatie permanent verwijderen. U kunt dit <strong>NIET</strong> terug draaien!
@@ -715,6 +718,7 @@ notices=Systeem aankondigingen
 monitor=Bijhouden
 prev=Vorige
 next=Volgende
+total=Total: %d
 
 dashboard.statistic=Statistieken
 dashboard.operations=Bewerkingen
@@ -774,9 +778,9 @@ users.admin=Admin
 users.repos=Repos
 users.created=Aangemaakt
 users.edit=Bewerken
-users.auth_source=Autorisatiebron
+users.auth_source=Authentication Source
 users.local=Lokaal
-users.auth_login_name=Autorisatie inlognaam
+users.auth_login_name=Authentication Login Name
 users.update_profile_success=Profiel is succesvol bijgewerkt.
 users.edit_account=Bewerk account
 users.is_activated=Dit account is geactiveerd
@@ -800,27 +804,29 @@ repos.watches=Volgers
 repos.stars=Sterren
 repos.issues=Kwesties
 
-auths.auth_manage_panel=Autorisatiebeheerpaneel
-auths.new=Nieuwe autorisatiebron
+auths.auth_manage_panel=Authentication Manage Panel
+auths.new=Add New Source
 auths.name=Naam
 auths.type=Type
 auths.enabled=Ingeschakeld
 auths.updated=Bijgewerkt
-auths.auth_type=Autorisatietype
-auths.auth_name=Autorisatienaam
+auths.auth_type=Authentication Type
+auths.auth_name=Authentication Name
 auths.domain=Domein
 auths.host=Host
 auths.port=Poort
 auths.bind_dn=Binden DN
 auths.bind_password=Bind Password
+auths.bind_password_helper=Warning: This password is stored in plain text. Do not use a high privileged account.
 auths.user_base=User Search Base
+auths.user_dn=User DN
 auths.attribute_name=Voornaam attribuut
 auths.attribute_surname=Achternaam attribuut
 auths.attribute_mail=E-mail attribuut
 auths.filter=User Filter
 auths.admin_filter=Admin Filter
 auths.ms_ad_sa=MS Ad SA
-auths.smtp_auth=SMTP authenticatietype
+auths.smtp_auth=SMTP Authentication Type
 auths.smtphost=SMTP host
 auths.smtpport=SMTP poort
 auths.enable_tls=Activeer TLS-encryptie
@@ -828,13 +834,15 @@ auths.skip_tls_verify=Skip TLS Verify
 auths.pam_service_name=PAM servicenaam
 auths.enable_auto_register=Activeer automatische registratie
 auths.tips=Tips
-auths.edit=Bewerk autorisatie-instellingen
+auths.edit=Edit Authentication Setting
 auths.activated=Deze autorisatiemethode is geactiveerd
-auths.update_success=Autorisatie-instellingen zijn succesvol bijgewerkt.
-auths.update=Update autorisatie-instellingen
-auths.delete=Verwijder deze autorisatie
-auths.delete_auth_title=Verwijderings-autorisatie
-auths.delete_auth_desc=Deze autorisatiemethode wordt verwijderd. Weet u zeker dat u wilt doorgaan?
+auths.new_success=New authentication '%s' has been added successfully.
+auths.update_success=Authentication setting has been updated successfully.
+auths.update=Update Authentication Setting
+auths.delete=Delete This Authentication
+auths.delete_auth_title=Authentication Deletion
+auths.delete_auth_desc=This authentication is going to be deleted, do you want to continue?
+auths.deletion_success=Authentication has been deleted successfully!
 
 config.server_config=Serverconfiguratie
 config.app_name=Applicatienaam

+ 27 - 19
conf/locale/locale_pl-PL.ini

@@ -14,7 +14,7 @@ version=Wersja
 page=Strona
 template=Szablon
 language=Język
-create_new=Utwórz nowy...
+create_new=Create...
 user_profile_and_more=Profil użytkownika i więcej
 signed_in_as=Zalogowany jako
 
@@ -241,7 +241,7 @@ location=Lolalizacja
 update_profile=Zaktualizuj profil
 update_profile_success=Twój profil został pomyślnie zaktualizowany.
 change_username=Zmieniono nazwę użytkownika
-change_username_desc=Zmieniono nazwę użytkownika, czy chcesz kontynuować? To wpłynie na wszystkie linki odnoszą się do swojego konta.
+change_username_prompt=This change will affect the way how links relate to your account.
 continue=Konynuuj
 cancel=Anuluj
 
@@ -256,6 +256,7 @@ update_avatar_success=Ustawienia awatarów zostały pomyślnie zaktualizowane.
 change_password=Zmień hasło
 old_password=Aktualne hasło
 new_password=Nowe hasło
+retype_new_password=Retype New Password
 password_incorrect=Bieżące hasło nie jest prawidłowe.
 change_password_success=Hasło zostało zmienione pomyślnie. Możesz teraz zalogować się za pomocą nowego hasła.
 
@@ -265,6 +266,9 @@ email_desc=Twój podstawowy adres e-mail będzie używany dla powiadomień i inn
 primary=Podstawowy
 primary_email=Ustaw jako podstawowy
 delete_email=Usuń
+email_deletion=E-mail Deletion
+email_deletion_desc=Delete this e-mail address will remove related information from your account. Do you want to continue?
+email_deletion_success=E-mail has been deleted successfully!
 add_new_email=Dodaj nowy e-mail
 add_email=Dodaj e-mail
 add_email_confirmation_sent=Nowa wiadomość e-mail z potwierdzeniem została wysłana do <b>%s</b>, proszę sprawdzić swoją skrzynkę odbiorczą w ciągu %d godzin, aby dokończyć proces potwierdzania.
@@ -330,7 +334,7 @@ license=Licencja
 license_helper=Wybierz plik licencji
 readme=Readme
 readme_helper=Select a readme template
-auto_init=Initialize this repository selected files and template
+auto_init=Initialize this repository with selected files and template
 create_repo=Utwórz repozytorium
 default_branch=Domyślna gałąź
 mirror_interval=Odświeżanie mirrorów (godziny)
@@ -630,7 +634,6 @@ release.tag_name_already_exist=Wersja o tej nazwie tagu już istnieje.
 [org]
 org_name_holder=Nazwa organizacji
 org_name_helper=Świetne nazwy organizacji są krótkie i łatwe do zapamiętania.
-org_email_helper=Adres e-mail organizacji otrzymuje wszystkie powiadomienia i potwierdzenia.
 create_org=Utwórz organizację
 repo_updated=Zaktualizowano
 people=Ludzie
@@ -655,9 +658,9 @@ settings.full_name=Imię i Nazwisko
 settings.website=Strona
 settings.location=Lolalizacja
 settings.update_settings=Aktualizuj ustawienia
-settings.change_orgname=Zmieniono nazwę organizacji
-settings.change_orgname_desc=Zmieniono nazwę organizacji. Wpływa to na powiązanie odnośników z organizacją. Czy chcesz kontynuować?
 settings.update_setting_success=Ustawienia organizacji zostały pomyślnie zaktualizowane.
+settings.change_orgname_prompt=This change will affect how links relate to the organization.
+settings.update_avatar_success=Organization avatar setting has been updated successfully.
 settings.delete=Usuń Organizację
 settings.delete_account=Usuń tą organizację
 settings.delete_prompt=Organizacja zostanie trwale usunięta, a to <strong>NIE MOŻE</strong> być cofnięte!
@@ -715,6 +718,7 @@ notices=Powiadomienia systemowe
 monitor=Monitorowanie
 prev=Wstecz
 next=Następny
+total=Total: %d
 
 dashboard.statistic=Statystyki
 dashboard.operations=Operacje
@@ -774,9 +778,9 @@ users.admin=Admin
 users.repos=Repozytoria
 users.created=Utworzony
 users.edit=Edytuj
-users.auth_source=Źródła autoryzacji
+users.auth_source=Authentication Source
 users.local=Lokalne
-users.auth_login_name=Login Autoryzacyjny
+users.auth_login_name=Authentication Login Name
 users.update_profile_success=Profil konta został pomyślnie zaktualizowany.
 users.edit_account=Edytuj konto
 users.is_activated=To konto jest aktywne
@@ -800,27 +804,29 @@ repos.watches=Obserwujących
 repos.stars=Polubienia
 repos.issues=Problemy
 
-auths.auth_manage_panel=Zarzadzanie Autoryzacja
-auths.new=Dodaj nowe źródło autoryzacji
+auths.auth_manage_panel=Authentication Manage Panel
+auths.new=Add New Source
 auths.name=Nazwa
 auths.type=Typ
 auths.enabled=Włączono
 auths.updated=Zaktualizowano
-auths.auth_type=Typ autoryzacji
-auths.auth_name=Nazwa autoryzacji
+auths.auth_type=Authentication Type
+auths.auth_name=Authentication Name
 auths.domain=Domena
 auths.host=Host
 auths.port=Port
 auths.bind_dn=Bind DN
 auths.bind_password=Bind Password
+auths.bind_password_helper=Warning: This password is stored in plain text. Do not use a high privileged account.
 auths.user_base=User Search Base
+auths.user_dn=User DN
 auths.attribute_name=Atrybut imienia
 auths.attribute_surname=Atrybut nazwiska
 auths.attribute_mail=Atrybut email
 auths.filter=User Filter
 auths.admin_filter=Admin Filter
 auths.ms_ad_sa=Ms Ad SA
-auths.smtp_auth=Typ autoryzacji SMTP
+auths.smtp_auth=SMTP Authentication Type
 auths.smtphost=Serwer SMTP
 auths.smtpport=Port SMTP
 auths.enable_tls=Włącz szyfrowanie TLS
@@ -828,13 +834,15 @@ auths.skip_tls_verify=Pomiń weryfikację protokołu TLS
 auths.pam_service_name=Nazwa usługi PAM
 auths.enable_auto_register=Włącz automatyczną rejestrację
 auths.tips=Wskazówki
-auths.edit=Edytuj ustawienia autoryzacji
+auths.edit=Edit Authentication Setting
 auths.activated=To uwierzytelnienie zostało aktywowane
-auths.update_success=Ustawienia uwierzytelnienia zostały zaktualizowane pomyślnie.
-auths.update=Zaktualizuj ustawienia autoryzacji
-auths.delete=Usuń tą autoryzację
-auths.delete_auth_title=Usuwanie autoryzacji
-auths.delete_auth_desc=To uwierzytelnienie zostanie usunięte, czy chcesz kontynuować?
+auths.new_success=New authentication '%s' has been added successfully.
+auths.update_success=Authentication setting has been updated successfully.
+auths.update=Update Authentication Setting
+auths.delete=Delete This Authentication
+auths.delete_auth_title=Authentication Deletion
+auths.delete_auth_desc=This authentication is going to be deleted, do you want to continue?
+auths.deletion_success=Authentication has been deleted successfully!
 
 config.server_config=Konfiguracja serwera
 config.app_name=Nazwa Aplikacji

+ 27 - 19
conf/locale/locale_pt-BR.ini

@@ -14,7 +14,7 @@ version=Versão
 page=Página
 template=Modelo
 language=Idioma
-create_new=Criar...
+create_new=Create...
 user_profile_and_more=Perfil do usuário e configurações
 signed_in_as=Você é
 
@@ -241,7 +241,7 @@ location=Localização
 update_profile=Atualizar o Perfil
 update_profile_success=O seu perfil foi atualizado com sucesso.
 change_username=Nome de Usuário Alterado
-change_username_desc=O nome de usuário foi alterado, você quer continuar? Isto afetará todos os links relacionados à sua conta.
+change_username_prompt=This change will affect the way how links relate to your account.
 continue=Continuar
 cancel=Cancelar
 
@@ -256,6 +256,7 @@ update_avatar_success=Sua configuração de avatar foi atualizada com sucesso.
 change_password=Mudança de senha
 old_password=Senha Atual
 new_password=Nova Senha
+retype_new_password=Retype New Password
 password_incorrect=A senha atual não está correta.
 change_password_success=A senha está alterada com sucesso. Você pode agora entrar com a senha nova.
 
@@ -265,6 +266,9 @@ email_desc=Seu endereço de email principal será usado para notificações e ou
 primary=Principal
 primary_email=Definir como principal
 delete_email=Deletar
+email_deletion=E-mail Deletion
+email_deletion_desc=Delete this e-mail address will remove related information from your account. Do you want to continue?
+email_deletion_success=E-mail has been deleted successfully!
 add_new_email=Adicionar novo endereço de e-mail
 add_email=Adicionar e-mail
 add_email_confirmation_sent=Um novo e-mail de confirmação foi enviado para <b>%s</b>. Por favor, verifique sua Caixa de Entrada dentro das próximas %d horas, para concluir o processo de confirmação.
@@ -330,7 +334,7 @@ license=Licença
 license_helper=Selecione um arquivo de licença
 readme=Leia-me
 readme_helper=Select a readme template
-auto_init=Initialize this repository selected files and template
+auto_init=Initialize this repository with selected files and template
 create_repo=Criar Repositório
 default_branch=Ramo padrão
 mirror_interval=Intervalo de Espelho (hora)
@@ -630,7 +634,6 @@ release.tag_name_already_exist=Já existiu versão com esse nome de tag.
 [org]
 org_name_holder=Nome da Organização
 org_name_helper=Nomes de grandes organizações são curtos e memoráveis.
-org_email_helper=O E-mail da organização receberá todas as notificações e as confirmações.
 create_org=Criar Organização
 repo_updated=Atualizado
 people=Pessoas
@@ -655,9 +658,9 @@ settings.full_name=Nome Completo
 settings.website=Site
 settings.location=Localização
 settings.update_settings=Atualizar Configurações
-settings.change_orgname=Nome da Organização Alterado
-settings.change_orgname_desc=O nome da organização foi alterado, você quer continuar? Isto afetará todos os links que se relacionam a esta organização.
 settings.update_setting_success=Configuração da organização atualizada com sucesso.
+settings.change_orgname_prompt=This change will affect how links relate to the organization.
+settings.update_avatar_success=Organization avatar setting has been updated successfully.
 settings.delete=Deletar Organização
 settings.delete_account=Deletar Esta Organização
 settings.delete_prompt=A operação deletará esta organização permanentemente, e <strong>NÃO PODERÁ</strong> ser desfeita!
@@ -715,6 +718,7 @@ notices=Sistema de notificações
 monitor=Monitoramento
 prev=Anterior
 next=Próximo
+total=Total: %d
 
 dashboard.statistic=Estatística
 dashboard.operations=Operações
@@ -774,9 +778,9 @@ users.admin=Administrador
 users.repos=Repos
 users.created=Criado
 users.edit=Editar
-users.auth_source=Fonte de Autorização
+users.auth_source=Authentication Source
 users.local=Local
-users.auth_login_name=Nome de Autorização de Login
+users.auth_login_name=Authentication Login Name
 users.update_profile_success=O perfil da conta foi atualizado com sucesso.
 users.edit_account=Editar Conta
 users.is_activated=Esta conta está ativada
@@ -800,27 +804,29 @@ repos.watches=Observadores
 repos.stars=Estrelas
 repos.issues=Problemas
 
-auths.auth_manage_panel=Painel de Gerenciamento da Autorização
-auths.new=Adicionar Nova Fonte de Autorização
+auths.auth_manage_panel=Authentication Manage Panel
+auths.new=Add New Source
 auths.name=Nome
 auths.type=Tipo
 auths.enabled=Habilitado
 auths.updated=Atualizado
-auths.auth_type=Tipo da Autorização
-auths.auth_name=Nome da Autorização
+auths.auth_type=Authentication Type
+auths.auth_name=Authentication Name
 auths.domain=Domínio
 auths.host=Host
 auths.port=Porta
 auths.bind_dn=Bind DN
 auths.bind_password=Bind Password
+auths.bind_password_helper=Warning: This password is stored in plain text. Do not use a high privileged account.
 auths.user_base=User Search Base
+auths.user_dn=User DN
 auths.attribute_name=Atributo primeiro nome
 auths.attribute_surname=Atributo sobrenome
 auths.attribute_mail=Atributo e-mail
 auths.filter=User Filter
 auths.admin_filter=Admin Filter
 auths.ms_ad_sa=Ms Ad SA
-auths.smtp_auth=Tipo de Autorização de SMTP
+auths.smtp_auth=SMTP Authentication Type
 auths.smtphost=Host SMTP
 auths.smtpport=Porta SMTP
 auths.enable_tls=Habilitar Criptografia TLS
@@ -828,13 +834,15 @@ auths.skip_tls_verify=Skip TLS Verify
 auths.pam_service_name=Nome de Serviço PAM
 auths.enable_auto_register=Habilitar Registro Automático
 auths.tips=Dicas
-auths.edit=Editar Configuração da Autorização
+auths.edit=Edit Authentication Setting
 auths.activated=Esta autenticação foi ativada
-auths.update_success=A configuração da autorização foi atualizada com sucesso.
-auths.update=Atualizar Configuração da Autorização
-auths.delete=Excluir Esta Autorização
-auths.delete_auth_title=Exclusão da Autorização
-auths.delete_auth_desc=Esta autorização será excluída, deseja continuar?
+auths.new_success=New authentication '%s' has been added successfully.
+auths.update_success=Authentication setting has been updated successfully.
+auths.update=Update Authentication Setting
+auths.delete=Delete This Authentication
+auths.delete_auth_title=Authentication Deletion
+auths.delete_auth_desc=This authentication is going to be deleted, do you want to continue?
+auths.deletion_success=Authentication has been deleted successfully!
 
 config.server_config=Configuração do Servidor
 config.app_name=Nome do Aplicativo

+ 35 - 27
conf/locale/locale_ru-RU.ini

@@ -14,7 +14,7 @@ version=Версия
 page=Страница
 template=Шаблон
 language=Язык
-create_new=Создать новый...
+create_new=Create...
 user_profile_and_more=Профиль и остальное
 signed_in_as=Вы вошли как
 
@@ -241,7 +241,7 @@ location=Местоположение
 update_profile=Обновить профиль
 update_profile_success=Ваш профиль был успешно обновлен.
 change_username=Имя пользователя изменено
-change_username_desc=Имя пользователя изменено, вы хотите продолжить? Это повлияет на все ссылки, связанные с вашей учетной записью.
+change_username_prompt=This change will affect the way how links relate to your account.
 continue=Далее
 cancel=Отмена
 
@@ -256,6 +256,7 @@ update_avatar_success=Настройка вашего аватара обнов
 change_password=Сменить пароль
 old_password=Текущий пароль
 new_password=Новый пароль
+retype_new_password=Retype New Password
 password_incorrect=Текущий пароль не правильный.
 change_password_success=Пароль сменен успешно. Теперь вы можете войти с новым паролем.
 
@@ -265,6 +266,9 @@ email_desc=Ваш основной адрес электронной почты
 primary=Основной
 primary_email=Установить как основной
 delete_email=Удалить
+email_deletion=E-mail Deletion
+email_deletion_desc=Delete this e-mail address will remove related information from your account. Do you want to continue?
+email_deletion_success=E-mail has been deleted successfully!
 add_new_email=Добавить новый адрес электронной почты
 add_email=Добавить электронную почту
 add_email_confirmation_sent=Новое подтверждение по электронной почте было отправлено<b>%s</b>, пожалуйста, проверьте свой почтовый ящик в течение следующих  %d часов, чтобы завершить процесс подтверждения.
@@ -325,12 +329,12 @@ fork_from=Ответвление от
 fork_visiblity_helper=Ответвленному репозиторию нельзя поменять уровень видимости
 repo_desc=Описание
 repo_lang=Язык
-repo_lang_helper=Select .gitignore files
+repo_lang_helper=Выберите файлы .gitignore
 license=Лицензия
 license_helper=Выберите файл лицензии
 readme=Readme
-readme_helper=Select a readme template
-auto_init=Initialize this repository selected files and template
+readme_helper=Выберите шаблон для файла readme
+auto_init=Инициализировать этот репозиторий выбранными файлами и шаблоном
 create_repo=Создать репозиторий
 default_branch=Ветка по умолчанию
 mirror_interval=Интервал зеркалирования (час)
@@ -390,9 +394,9 @@ commits.older=Раньше
 commits.newer=Новее
 
 issues.new=Новая задача
-issues.new.labels=Labels
-issues.new.no_label=No Label
-issues.new.clear_labels=Clear labels
+issues.new.labels=Метки
+issues.new.no_label=Не метка
+issues.new.clear_labels=Отчистить метки
 issues.new.milestone=Milestone
 issues.new.no_milestone=No Milestone
 issues.new.clear_milestone=Clear milestone
@@ -418,9 +422,9 @@ issues.filter_type.all_issues=Все задачи
 issues.filter_type.assigned_to_you=Назначено Вам
 issues.filter_type.created_by_you=Созданные вами
 issues.filter_type.mentioning_you=Вы упомянуты
-issues.filter_sort=Sort
-issues.filter_sort.latest=Newest
-issues.filter_sort.oldest=Oldest
+issues.filter_sort=Сортировать
+issues.filter_sort.latest=Новейшие
+issues.filter_sort.oldest=Старейшие
 issues.filter_sort.recentupdate=Recently updated
 issues.filter_sort.leastupdate=Least recently updated
 issues.filter_sort.mostcomment=Most commented
@@ -630,7 +634,6 @@ release.tag_name_already_exist=Релиз с этим именем тега уж
 [org]
 org_name_holder=Название организации
 org_name_helper=Лучшие названия организаций коротки и запоминаемы.
-org_email_helper=Почта организации получает все уведомления и подтверждения.
 create_org=Создать Организацию
 repo_updated=Обновлено
 people=Люди
@@ -655,9 +658,9 @@ settings.full_name=Полное имя
 settings.website=Сайт
 settings.location=Местоположение
 settings.update_settings=Обновить настройки
-settings.change_orgname=Имя Организации изменено
-settings.change_orgname_desc=Изменилось название организации, вы хотите продолжить? Это повлияет на все ссылки относящиеся к этой Организации.
 settings.update_setting_success=Настройки Организации были успешно обновлены.
+settings.change_orgname_prompt=This change will affect how links relate to the organization.
+settings.update_avatar_success=Organization avatar setting has been updated successfully.
 settings.delete=Удалить Организацию
 settings.delete_account=Удалить Эту Организацию
 settings.delete_prompt=Это действие безвозвратно удалит эту организацию навсегда. 
@@ -715,6 +718,7 @@ notices=Системные уведомления
 monitor=Мониторинг
 prev=Предыдущий.
 next=Следующий
+total=Total: %d
 
 dashboard.statistic=Статистика
 dashboard.operations=Операции
@@ -774,9 +778,9 @@ users.admin=Администратор
 users.repos=Репозитории
 users.created=Создано
 users.edit=Редактировать
-users.auth_source=Источник авторизации
+users.auth_source=Authentication Source
 users.local=Локальный
-users.auth_login_name=Authorization Login Name
+users.auth_login_name=Authentication Login Name
 users.update_profile_success=Профиль учетной записи обновлен успешно.
 users.edit_account=Изменение учетной записи
 users.is_activated=Эта учетная запись активирована
@@ -800,27 +804,29 @@ repos.watches=Следят
 repos.stars=В избранном
 repos.issues=Вопросы
 
-auths.auth_manage_panel=Authorization Manage Panel
-auths.new=Add New Authorization Source
+auths.auth_manage_panel=Authentication Manage Panel
+auths.new=Add New Source
 auths.name=Имя
 auths.type=Тип
 auths.enabled=Включено
 auths.updated=Обновлено
-auths.auth_type=Тип авторизации
-auths.auth_name=Название авторизации
+auths.auth_type=Authentication Type
+auths.auth_name=Authentication Name
 auths.domain=Домен
 auths.host=Хост
 auths.port=Порт
 auths.bind_dn=Bind DN
 auths.bind_password=Bind Password
+auths.bind_password_helper=Warning: This password is stored in plain text. Do not use a high privileged account.
 auths.user_base=User Search Base
+auths.user_dn=User DN
 auths.attribute_name=First name attribute
 auths.attribute_surname=Surname attribute
 auths.attribute_mail=E-mail attribute
 auths.filter=User Filter
 auths.admin_filter=Admin Filter
 auths.ms_ad_sa=Ms Ad SA
-auths.smtp_auth=Тип авторизации SMTP
+auths.smtp_auth=SMTP Authentication Type
 auths.smtphost=Узел SMTP
 auths.smtpport=SMTP-порт
 auths.enable_tls=Включение шифрования TLS
@@ -828,13 +834,15 @@ auths.skip_tls_verify=Skip TLS Verify
 auths.pam_service_name=PAM Service Name
 auths.enable_auto_register=Включить автоматическую регистрацию
 auths.tips=Советы
-auths.edit=Редактировать параметры авторизации
+auths.edit=Edit Authentication Setting
 auths.activated=Эта аутентификация активирована
-auths.update_success=Настройка авторизации обновлена успешно.
-auths.update=Обновить параметры авторизации
-auths.delete=Удалить эту авторизацию
-auths.delete_auth_title=Удаление авторизации
-auths.delete_auth_desc=Эта авторизация будет удалена. Вы хотите продолжить?
+auths.new_success=New authentication '%s' has been added successfully.
+auths.update_success=Authentication setting has been updated successfully.
+auths.update=Update Authentication Setting
+auths.delete=Delete This Authentication
+auths.delete_auth_title=Authentication Deletion
+auths.delete_auth_desc=This authentication is going to be deleted, do you want to continue?
+auths.deletion_success=Authentication has been deleted successfully!
 
 config.server_config=Конфигурация сервера
 config.app_name=Имя приложения

+ 7 - 2
conf/locale/locale_zh-CN.ini

@@ -14,7 +14,7 @@ version=当前版本
 page=页面
 template=模板
 language=语言选项
-create_new=创建新的...
+create_new=创建...
 user_profile_and_more=用户信息及更多
 signed_in_as=已登录用户
 
@@ -718,6 +718,7 @@ notices=系统提示管理
 monitor=应用监控面板
 prev=上一页
 next=下一页
+total=总计:
 
 dashboard.statistic=应用统计数据
 dashboard.operations=管理员操作
@@ -804,7 +805,7 @@ repos.stars=点赞数
 repos.issues=工单数
 
 auths.auth_manage_panel=认证管理面板
-auths.new=添加新的认证
+auths.new=添加新的源
 auths.name=认证名称
 auths.type=认证类型
 auths.enabled=已启用
@@ -816,7 +817,9 @@ auths.host=主机地址
 auths.port=主机端口
 auths.bind_dn=绑定 DN
 auths.bind_password=绑定密码
+auths.bind_password_helper=警告:该密码将会以明文的形式保存在数据库中。请不要使用拥有高权限的帐户!
 auths.user_base=用户搜索基准
+auths.user_dn=User DN
 auths.attribute_name=名字属性
 auths.attribute_surname=姓氏属性
 auths.attribute_mail=邮箱属性
@@ -833,11 +836,13 @@ auths.enable_auto_register=允许授权用户自动注册
 auths.tips=帮助提示
 auths.edit=编辑认证设置
 auths.activated=该授权认证已经启用
+auths.new_success=新的授权源 "%s" 添加成功!
 auths.update_success=认证设置更新成功!
 auths.update=更新认证设置
 auths.delete=删除该认证
 auths.delete_auth_title=删除认证操作
 auths.delete_auth_desc=该认证将被删除。是否继续?
+auths.deletion_success=授权源删除成功!
 
 config.server_config=服务器配置
 config.app_name=应用名称

+ 27 - 19
conf/locale/locale_zh-HK.ini

@@ -14,7 +14,7 @@ version=當前版本
 page=頁面
 template=模版
 language=語言選項
-create_new=創建新的...
+create_new=Create...
 user_profile_and_more=用戶信息及更多
 signed_in_as=已登錄用戶
 
@@ -241,7 +241,7 @@ location=所在地區
 update_profile=更新信息
 update_profile_success=您的個人信息更新成功!
 change_username=用戶名將被修改
-change_username_desc=用戶名被修改,您確定要繼續操作嗎?這將會影響到所有與您帳戶有關的連結。
+change_username_prompt=This change will affect the way how links relate to your account.
 continue=繼續操作
 cancel=取消操作
 
@@ -256,6 +256,7 @@ update_avatar_success=您的頭像設置更新成功!
 change_password=修改密碼
 old_password=當前密碼
 new_password=新的密碼
+retype_new_password=Retype New Password
 password_incorrect=當前密碼不正確!
 change_password_success=密碼修改成功!您現在可以使用新的密碼登錄。
 
@@ -265,6 +266,9 @@ email_desc=您的主要邮箱地址将被用于通知提醒和其它操作。
 primary=主要
 primary_email=设为主要
 delete_email=刪除
+email_deletion=E-mail Deletion
+email_deletion_desc=Delete this e-mail address will remove related information from your account. Do you want to continue?
+email_deletion_success=E-mail has been deleted successfully!
 add_new_email=添加新的電子郵件地址
 add_email=添加電子郵件
 add_email_confirmation_sent=一封待確認的電子郵件已發送到<b>%s</b>,請在%d 小時內檢查您的收件箱,並完成確認過程。
@@ -330,7 +334,7 @@ license=授權許可
 license_helper=請選擇授權許可文件
 readme=Readme
 readme_helper=Select a readme template
-auto_init=Initialize this repository selected files and template
+auto_init=Initialize this repository with selected files and template
 create_repo=創建倉庫
 default_branch=默認分支
 mirror_interval=鏡像同步周期(小時)
@@ -630,7 +634,6 @@ release.tag_name_already_exist=已經存在使用相同標籤的發佈版本。
 [org]
 org_name_holder=組織名稱
 org_name_helper=偉大的組織都有一個簡短而寓意深刻的名字。
-org_email_helper=組織的郵箱用於接收所有通知和確認郵件。
 create_org=創建組織
 repo_updated=最後更新於
 people=組織成員
@@ -655,9 +658,9 @@ settings.full_name=組織全名
 settings.website=官方網站
 settings.location=所在地區
 settings.update_settings=更新組織設置
-settings.change_orgname=組織名稱將被修改
-settings.change_orgname_desc=組織名稱被修改,您確定要繼續操作嗎?這將會影響到所有與該組織有關的連結。
 settings.update_setting_success=組織設置更新成功!
+settings.change_orgname_prompt=This change will affect how links relate to the organization.
+settings.update_avatar_success=Organization avatar setting has been updated successfully.
 settings.delete=刪除組織
 settings.delete_account=刪除當前組織
 settings.delete_prompt=刪除操作會永久清除該組織的信息,並且 <strong>不可恢復</strong>!
@@ -715,6 +718,7 @@ notices=系統提示管理
 monitor=應用監控面版
 prev=上一頁
 next=下一頁
+total=Total: %d
 
 dashboard.statistic=應用統計數據
 dashboard.operations=管理員操作
@@ -774,9 +778,9 @@ users.admin=管理員
 users.repos=倉庫數
 users.created=創建時間
 users.edit=編輯
-users.auth_source=認證源
+users.auth_source=Authentication Source
 users.local=本地
-users.auth_login_name=認證登錄名
+users.auth_login_name=Authentication Login Name
 users.update_profile_success=該用戶信息更新成功!
 users.edit_account=編輯用戶信息
 users.is_activated=該用戶已被激活
@@ -800,27 +804,29 @@ repos.watches=關註數
 repos.stars=讚好數
 repos.issues=問題數
 
-auths.auth_manage_panel=授權認證管理面版
-auths.new=添加新的認證源
+auths.auth_manage_panel=Authentication Manage Panel
+auths.new=Add New Source
 auths.name=認證名稱
 auths.type=認證類型
 auths.enabled=已啟用
 auths.updated=最後更新時間
-auths.auth_type=授權類型
-auths.auth_name=授權名稱
+auths.auth_type=Authentication Type
+auths.auth_name=Authentication Name
 auths.domain=域名
 auths.host=主機地址
 auths.port=主機端口
 auths.bind_dn=綁定DN
 auths.bind_password=綁定密碼
+auths.bind_password_helper=Warning: This password is stored in plain text. Do not use a high privileged account.
 auths.user_base=User Search Base
+auths.user_dn=User DN
 auths.attribute_name=名子屬性
 auths.attribute_surname=姓氏屬性
 auths.attribute_mail=電子郵箱屬性
 auths.filter=使用者篩選器
 auths.admin_filter=管理者篩選器
 auths.ms_ad_sa=Ms Ad SA
-auths.smtp_auth=SMTP 授權類型
+auths.smtp_auth=SMTP Authentication Type
 auths.smtphost=SMTP 主機地址
 auths.smtpport=SMTP 主機端口
 auths.enable_tls=啟用 TLS 加密
@@ -828,13 +834,15 @@ auths.skip_tls_verify=Skip TLS Verify
 auths.pam_service_name=PAM 服務名稱
 auths.enable_auto_register=允許授權用戶自動註冊
 auths.tips=幫助提示
-auths.edit=修改授權認證設置
+auths.edit=Edit Authentication Setting
 auths.activated=該授權認證已經啟用
-auths.update_success=授權認證設置更新成功!
-auths.update=更新授權認證信息
-auths.delete=刪除該授權認證
-auths.delete_auth_title=授權認證刪除操作
-auths.delete_auth_desc=該授權認證將被刪除,您確定要繼續嗎?
+auths.new_success=New authentication '%s' has been added successfully.
+auths.update_success=Authentication setting has been updated successfully.
+auths.update=Update Authentication Setting
+auths.delete=Delete This Authentication
+auths.delete_auth_title=Authentication Deletion
+auths.delete_auth_desc=This authentication is going to be deleted, do you want to continue?
+auths.deletion_success=Authentication has been deleted successfully!
 
 config.server_config=服務器配置
 config.app_name=應用名稱

+ 34 - 5
models/login.go

@@ -13,6 +13,7 @@ import (
 	"strings"
 	"time"
 
+	"github.com/Unknwon/com"
 	"github.com/go-xorm/core"
 	"github.com/go-xorm/xorm"
 
@@ -114,6 +115,8 @@ func (source *LoginSource) BeforeSet(colName string, val xorm.Cell) {
 			source.Cfg = new(SMTPConfig)
 		case PAM:
 			source.Cfg = new(PAMConfig)
+		default:
+			panic("unrecognized login source type: " + com.ToStr(*val))
 		}
 	}
 }
@@ -122,6 +125,33 @@ func (source *LoginSource) TypeName() string {
 	return LoginNames[source.Type]
 }
 
+func (source *LoginSource) IsLDAP() bool {
+	return source.Type == LDAP
+}
+
+func (source *LoginSource) IsDLDAP() bool {
+	return source.Type == DLDAP
+}
+
+func (source *LoginSource) IsSMTP() bool {
+	return source.Type == SMTP
+}
+
+func (source *LoginSource) IsPAM() bool {
+	return source.Type == PAM
+}
+
+func (source *LoginSource) UseTLS() bool {
+	switch source.Type {
+	case LDAP, DLDAP:
+		return source.LDAP().UseSSL
+	case SMTP:
+		return source.SMTP().TLS
+	}
+
+	return false
+}
+
 func (source *LoginSource) LDAP() *LDAPConfig {
 	return source.Cfg.(*LDAPConfig)
 }
@@ -166,15 +196,14 @@ func UpdateSource(source *LoginSource) error {
 	return err
 }
 
-func DelLoginSource(source *LoginSource) error {
-	cnt, err := x.Count(&User{LoginSource: source.ID})
+func DeleteSource(source *LoginSource) error {
+	count, err := x.Count(&User{LoginSource: source.ID})
 	if err != nil {
 		return err
-	}
-	if cnt > 0 {
+	} else if count > 0 {
 		return ErrAuthenticationUserUsed
 	}
-	_, err = x.Id(source.ID).Delete(&LoginSource{})
+	_, err = x.Id(source.ID).Delete(new(LoginSource))
 	return err
 }
 

+ 0 - 1
modules/auth/auth_form.go

@@ -15,7 +15,6 @@ type AuthenticationForm struct {
 	Name              string `binding:"Required;MaxSize(30)"`
 	Host              string
 	Port              int
-	UseSSL            bool
 	BindDN            string
 	BindPassword      string
 	UserBase          string

ファイルの差分が大きいため隠しています
+ 28 - 28
modules/bindata/bindata.go


+ 72 - 95
routers/admin/auths.go

@@ -65,6 +65,37 @@ func NewAuthSource(ctx *middleware.Context) {
 	ctx.HTML(200, AUTH_NEW)
 }
 
+func parseLDAPConfig(form auth.AuthenticationForm) *models.LDAPConfig {
+	return &models.LDAPConfig{
+		Ldapsource: ldap.Ldapsource{
+			Name:             form.Name,
+			Host:             form.Host,
+			Port:             form.Port,
+			UseSSL:           form.TLS,
+			BindDN:           form.BindDN,
+			UserDN:           form.UserDN,
+			BindPassword:     form.BindPassword,
+			UserBase:         form.UserBase,
+			AttributeName:    form.AttributeName,
+			AttributeSurname: form.AttributeSurname,
+			AttributeMail:    form.AttributeMail,
+			Filter:           form.Filter,
+			AdminFilter:      form.AdminFilter,
+			Enabled:          true,
+		},
+	}
+}
+
+func parseSMTPConfig(form auth.AuthenticationForm) *models.SMTPConfig {
+	return &models.SMTPConfig{
+		Auth:       form.SMTPAuth,
+		Host:       form.SMTPHost,
+		Port:       form.SMTPPort,
+		TLS:        form.TLS,
+		SkipVerify: form.SkipVerify,
+	}
+}
+
 func NewAuthSourcePost(ctx *middleware.Context, form auth.AuthenticationForm) {
 	ctx.Data["Title"] = ctx.Tr("admin.auths.new")
 	ctx.Data["PageIsAdmin"] = true
@@ -79,37 +110,14 @@ func NewAuthSourcePost(ctx *middleware.Context, form auth.AuthenticationForm) {
 		return
 	}
 
-	var u core.Conversion
+	var config core.Conversion
 	switch models.LoginType(form.Type) {
 	case models.LDAP, models.DLDAP:
-		u = &models.LDAPConfig{
-			Ldapsource: ldap.Ldapsource{
-				Name:             form.Name,
-				Host:             form.Host,
-				Port:             form.Port,
-				UseSSL:           form.UseSSL,
-				BindDN:           form.BindDN,
-				UserDN:           form.UserDN,
-				BindPassword:     form.BindPassword,
-				UserBase:         form.UserBase,
-				AttributeName:    form.AttributeName,
-				AttributeSurname: form.AttributeSurname,
-				AttributeMail:    form.AttributeMail,
-				Filter:           form.Filter,
-				AdminFilter:      form.AdminFilter,
-				Enabled:          true,
-			},
-		}
+		config = parseLDAPConfig(form)
 	case models.SMTP:
-		u = &models.SMTPConfig{
-			Auth:       form.SMTPAuth,
-			Host:       form.SMTPHost,
-			Port:       form.SMTPPort,
-			TLS:        form.TLS,
-			SkipVerify: form.SkipVerify,
-		}
+		config = parseSMTPConfig(form)
 	case models.PAM:
-		u = &models.PAMConfig{
+		config = &models.PAMConfig{
 			ServiceName: form.PAMServiceName,
 		}
 	default:
@@ -117,20 +125,20 @@ func NewAuthSourcePost(ctx *middleware.Context, form auth.AuthenticationForm) {
 		return
 	}
 
-	var source = &models.LoginSource{
+	if err := models.CreateSource(&models.LoginSource{
 		Type:              models.LoginType(form.Type),
 		Name:              form.Name,
 		IsActived:         form.IsActive,
 		AllowAutoRegister: form.AllowAutoRegister,
-		Cfg:               u,
-	}
-
-	if err := models.CreateSource(source); err != nil {
+		Cfg:               config,
+	}); err != nil {
 		ctx.Handle(500, "CreateSource", err)
 		return
 	}
 
 	log.Trace("Authentication created by admin(%s): %s", ctx.User.Name, form.Name)
+
+	ctx.Flash.Success(ctx.Tr("admin.auths.new_success", form.Name))
 	ctx.Redirect(setting.AppSubUrl + "/admin/auths")
 }
 
@@ -138,20 +146,15 @@ func EditAuthSource(ctx *middleware.Context) {
 	ctx.Data["Title"] = ctx.Tr("admin.auths.edit")
 	ctx.Data["PageIsAdmin"] = true
 	ctx.Data["PageIsAdminAuthentications"] = true
-	// ctx.Data["LoginTypes"] = models.LoginTypes
+
 	ctx.Data["SMTPAuths"] = models.SMTPAuths
 
-	id := com.StrTo(ctx.Params(":authid")).MustInt64()
-	if id == 0 {
-		ctx.Handle(404, "EditAuthSource", nil)
-		return
-	}
-	u, err := models.GetLoginSourceByID(id)
+	source, err := models.GetLoginSourceByID(ctx.ParamsInt64(":authid"))
 	if err != nil {
-		ctx.Handle(500, "GetLoginSourceById", err)
+		ctx.Handle(500, "GetLoginSourceByID", err)
 		return
 	}
-	ctx.Data["Source"] = u
+	ctx.Data["Source"] = source
 	ctx.HTML(200, AUTH_EDIT)
 }
 
@@ -159,10 +162,16 @@ func EditAuthSourcePost(ctx *middleware.Context, form auth.AuthenticationForm) {
 	ctx.Data["Title"] = ctx.Tr("admin.auths.edit")
 	ctx.Data["PageIsAdmin"] = true
 	ctx.Data["PageIsAdminAuthentications"] = true
-	ctx.Data["PageIsAuths"] = true
-	// ctx.Data["LoginTypes"] = models.LoginTypes
+
 	ctx.Data["SMTPAuths"] = models.SMTPAuths
 
+	source, err := models.GetLoginSourceByID(ctx.ParamsInt64(":authid"))
+	if err != nil {
+		ctx.Handle(500, "GetLoginSourceByID", err)
+		return
+	}
+	ctx.Data["Source"] = source
+
 	if ctx.HasError() {
 		ctx.HTML(200, AUTH_EDIT)
 		return
@@ -170,35 +179,10 @@ func EditAuthSourcePost(ctx *middleware.Context, form auth.AuthenticationForm) {
 
 	var config core.Conversion
 	switch models.LoginType(form.Type) {
-	case models.LDAP:
-		fallthrough
-	case models.DLDAP:
-		config = &models.LDAPConfig{
-			Ldapsource: ldap.Ldapsource{
-				Name:             form.Name,
-				Host:             form.Host,
-				Port:             form.Port,
-				UseSSL:           form.UseSSL,
-				BindDN:           form.BindDN,
-				UserDN:           form.UserDN,
-				BindPassword:     form.BindPassword,
-				UserBase:         form.UserBase,
-				AttributeName:    form.AttributeName,
-				AttributeSurname: form.AttributeSurname,
-				AttributeMail:    form.AttributeMail,
-				Filter:           form.Filter,
-				AdminFilter:      form.AdminFilter,
-				Enabled:          true,
-			},
-		}
+	case models.LDAP, models.DLDAP:
+		config = parseLDAPConfig(form)
 	case models.SMTP:
-		config = &models.SMTPConfig{
-			Auth:       form.SMTPAuth,
-			Host:       form.SMTPHost,
-			Port:       form.SMTPPort,
-			TLS:        form.TLS,
-			SkipVerify: form.SkipVerify,
-		}
+		config = parseSMTPConfig(form)
 	case models.PAM:
 		config = &models.PAMConfig{
 			ServiceName: form.PAMServiceName,
@@ -208,48 +192,41 @@ func EditAuthSourcePost(ctx *middleware.Context, form auth.AuthenticationForm) {
 		return
 	}
 
-	u := models.LoginSource{
-		ID:                form.ID,
-		Name:              form.Name,
-		IsActived:         form.IsActive,
-		Type:              models.LoginType(form.Type),
-		AllowAutoRegister: form.AllowAutoRegister,
-		Cfg:               config,
-	}
-
-	if err := models.UpdateSource(&u); err != nil {
+	source.Name = form.Name
+	source.IsActived = form.IsActive
+	source.AllowAutoRegister = form.AllowAutoRegister
+	source.Cfg = config
+	if err := models.UpdateSource(source); err != nil {
 		ctx.Handle(500, "UpdateSource", err)
 		return
 	}
+	log.Trace("Authentication changed by admin(%s): %s", ctx.User.Name, source.ID)
 
-	log.Trace("Authentication changed by admin(%s): %s", ctx.User.Name, form.Name)
 	ctx.Flash.Success(ctx.Tr("admin.auths.update_success"))
-	ctx.Redirect(setting.AppSubUrl + "/admin/auths/" + ctx.Params(":authid"))
+	ctx.Redirect(setting.AppSubUrl + "/admin/auths/" + com.ToStr(form.ID))
 }
 
 func DeleteAuthSource(ctx *middleware.Context) {
-	id := com.StrTo(ctx.Params(":authid")).MustInt64()
-	if id == 0 {
-		ctx.Handle(404, "DeleteAuthSource", nil)
-		return
-	}
-
-	a, err := models.GetLoginSourceByID(id)
+	source, err := models.GetLoginSourceByID(ctx.ParamsInt64(":authid"))
 	if err != nil {
-		ctx.Handle(500, "GetLoginSourceById", err)
+		ctx.Handle(500, "GetLoginSourceByID", err)
 		return
 	}
 
-	if err = models.DelLoginSource(a); err != nil {
+	if err = models.DeleteSource(source); err != nil {
 		switch err {
 		case models.ErrAuthenticationUserUsed:
 			ctx.Flash.Error("form.still_own_user")
 			ctx.Redirect(setting.AppSubUrl + "/admin/auths/" + ctx.Params(":authid"))
 		default:
-			ctx.Handle(500, "DelLoginSource", err)
+			ctx.Handle(500, "DeleteSource", err)
 		}
 		return
 	}
-	log.Trace("Authentication deleted by admin(%s): %s", ctx.User.Name, a.Name)
-	ctx.Redirect(setting.AppSubUrl + "/admin/auths")
+	log.Trace("Authentication deleted by admin(%s): %d", ctx.User.Name, source.ID)
+
+	ctx.Flash.Success(ctx.Tr("admin.auths.deletion_success"))
+	ctx.JSON(200, map[string]interface{}{
+		"redirect": setting.AppSubUrl + "/admin/auths",
+	})
 }

+ 154 - 146
templates/admin/auth/edit.tmpl

@@ -1,155 +1,163 @@
-{{template "ng/base/head" .}}
-{{template "ng/base/header" .}}
-<div id="admin-wrapper">
-    <div id="setting-wrapper" class="main-wrapper">
-        <div id="admin-setting" class="container clear">
-            {{template "admin/nav" .}}
-            <div class="grid-4-5 left">
-                <div class="setting-content">
-                    {{template "ng/base/alert" .}}
-                    <div id="setting-content">
-                        <div class="panel panel-radius">
-                            <div class="panel-header">
-                                <strong>{{.i18n.Tr "admin.auths.edit"}}</strong>
-                            </div>
-                            <form class="form form-align panel-body" id="auth-setting-form" action="{{AppSubUrl}}/admin/auths/{{.Source.ID}}" data-delete-url="{{AppSubUrl}}/admin/auths/{{.Source.ID}}/delete" method="post">
-                                {{.CsrfTokenHtml}}
-                                <input type="hidden" value="{{.Source.ID}}" name="id"/>
-                                {{$type := .Source.Type}}
-                                <div class="field">
-                                    <label>{{.i18n.Tr "admin.auths.auth_type"}}</label>
-                                    <input type="hidden" name="type" value="{{.Source.Type}}"/>
-                                    <label class="control-label">
-                                        {{range $key, $val := .LoginTypes}}
-                                            {{if eq $key $type}}{{$val}}{{end}}
-                                        {{end}}
-                                    </label>
-                                </div>
-                                <div class="field">
-                                    <label class="req" for="name">{{.i18n.Tr "admin.auths.auth_name"}}</label>
-                                    <input class="ipt ipt-large ipt-radius {{if .Err_AuthName}}ipt-error{{end}}" id="name" name="name" value="{{.Source.Name}}" required />
-                                </div>
+{{template "base/head" .}}
+<div class="admin edit authentication">
+  <div class="ui container">
+    <div class="ui grid">
+      {{template "admin/navbar" .}}
+      <div class="twelve wide column content">
+        {{template "base/alert" .}}
+        <h4 class="ui top attached header">
+          {{.i18n.Tr "admin.auths.edit"}}
+        </h4>
+        <div class="ui attached segment">
+          <form class="ui form" action="{{.Link}}" method="post">
+            {{.CsrfTokenHtml}}
+            <input type="hidden" name="id" value="{{.Source.ID}}">
+            <div class="inline field">
+              <label>{{$.i18n.Tr "admin.auths.auth_type"}}</label>
+              <input type="hidden" name="type" value="{{.Source.Type}}">
+              <span>{{.Source.TypeName}}</span>
+            </div>
+            <div class="required inline field {{if .Err_Name}}error{{end}}">
+              <label for="name">{{.i18n.Tr "admin.auths.auth_name"}}</label>
+              <input id="name" name="name" value="{{.Source.Name}}" autofocus required>
+            </div>
 
-                                {{if eq $type 2 5}}
-                                <div class="field">
-                                    <label class="req" for="host">{{.i18n.Tr "admin.auths.host"}}</label>
-                                    <input class="ipt ipt-large ipt-radius {{if .Err_Host}}ipt-error{{end}}" id="host" name="host" value="{{.Source.LDAP.Host}}" required />
-                                </div>
-                                <div class="field">
-                                    <label class="req" for="port">{{.i18n.Tr "admin.auths.port"}}</label>
-                                    <input class="ipt ipt-large ipt-radius {{if .Err_Port}}ipt-error{{end}}" id="port" name="port" value="{{.Source.LDAP.Port}}" required />
-                                </div>
-                                <div class="field">
-                                    <label for="use_ssl">{{.i18n.Tr "admin.auths.enable_tls"}}</label>
-                                    <input name="use_ssl" type="checkbox" {{if .Source.LDAP.UseSSL}}checked{{end}}>
-                                </div>
-                                {{if eq $type 2}}
-                                <div class="field">
-                                    <label for="bind_dn">{{.i18n.Tr "admin.auths.bind_dn"}}</label>
-                                    <input class="ipt ipt-large ipt-radius {{if .Err_BindDN}}ipt-error{{end}}" id="bind_dn" name="bind_dn" value="{{.Source.LDAP.BindDN}}" />
-                                </div>
-                                <div class="field">
-                                    <label for="bind_password">{{.i18n.Tr "admin.auths.bind_password"}}</label>
-                                    <input class="ipt ipt-large ipt-radius {{if .Err_BindPassword}}ipt-error{{end}}" id="bind_password" name="bind_password" type="password" value="{{.Source.LDAP.BindPassword}}" />
-                                </div>
-                                <div class="field">
-                                    <label class="req" for="user_base">{{.i18n.Tr "admin.auths.user_base"}}</label>
-                                    <input class="ipt ipt-large ipt-radius {{if .Err_UserBase}}ipt-error{{end}}" id="user_base" name="user_base" value="{{.Source.LDAP.UserBase}}" />
-                                </div>
-                                {{end}}
-                                {{if eq $type 5}}
-                                <div class="field">
-                                    <label class="req" for="user_dn">{{.i18n.Tr "admin.auths.user_dn"}}</label>
-                                    <input class="ipt ipt-large ipt-radius {{if .Err_UserDN}}ipt-error{{end}}" id="user_dn" name="user_dn" value="{{.Source.LDAP.UserDN}}" />
-                                </div>
-                                {{end}}
-                                <div class="field">
-                                    <label class="req" for="filter">{{.i18n.Tr "admin.auths.filter"}}</label>
-                                    <input class="ipt ipt-large ipt-radius {{if .Err_Filter}}ipt-error{{end}}" id="filter" name="filter" value="{{.Source.LDAP.Filter}}" />
-                                </div>
-                                <div class="field">
-                                    <label for="filter">{{.i18n.Tr "admin.auths.admin_filter"}}</label>
-                                    <input class="ipt ipt-large ipt-radius {{if .Err_AdminFilter}}ipt-error{{end}}" id="admin_filter" name="admin_filter" value="{{.Source.LDAP.AdminFilter}}" />
-                                </div>
-                                <div class="field">
-                                    <label for="attribute_name">{{.i18n.Tr "admin.auths.attribute_name"}}</label>
-                                    <input class="ipt ipt-large ipt-radius {{if .Err_Attributes}}ipt-error{{end}}" id="attribute_name" name="attribute_name" value="{{.Source.LDAP.AttributeName}}" />
-                                </div>
-                                <div class="field">
-                                    <label for="attribute_surname">{{.i18n.Tr "admin.auths.attribute_surname"}}</label>
-                                    <input class="ipt ipt-large ipt-radius {{if .Err_Attributes}}ipt-error{{end}}" id="attribute_surname" name="attribute_surname" value="{{.Source.LDAP.AttributeSurname}}" />
-                                </div>
-                                <div class="field">
-                                    <label class="req" for="attribute_mail">{{.i18n.Tr "admin.auths.attribute_mail"}}</label>
-                                    <input class="ipt ipt-large ipt-radius {{if .Err_Attributes}}ipt-error{{end}}" id="attribute_mail" name="attribute_mail" value="{{.Source.LDAP.AttributeMail}}" />
-                                </div>
+            <!-- LDAP and DLDAP -->
+            {{if or .Source.IsLDAP .Source.IsDLDAP}}
+            {{ $cfg:=.Source.LDAP }}
+            <div class="required field">
+              <label for="host">{{.i18n.Tr "admin.auths.host"}}</label>
+              <input id="host" name="host" value="{{$cfg.Host}}" placeholder="e.g. mydomain.com" required>
+            </div>
+            <div class="required field">
+              <label for="port">{{.i18n.Tr "admin.auths.port"}}</label>
+              <input id="port" name="port" value="{{$cfg.Port}}"  placeholder="e.g. 636" required>
+            </div>
+            {{if .Source.IsLDAP}}
+            <div class="required field">
+              <label for="bind_dn">{{.i18n.Tr "admin.auths.bind_dn"}}</label>
+              <input id="bind_dn" name="bind_dn" value="{{$cfg.BindDN}}" placeholder="e.g. cn=Search,dc=mydomain,dc=com" required>
+            </div>
+            <input class="fake" type="password">
+            <div class="required field">
+              <label for="bind_password">{{.i18n.Tr "admin.auths.bind_password"}}</label>
+              <input id="bind_password" name="bind_password" type="password" value="{{$cfg.BindPassword}}" required>
+              <p class="help text red">{{.i18n.Tr "admin.auths.bind_password_helper"}}</p>
+            </div>
+            <div class="required field">
+              <label for="user_base">{{.i18n.Tr "admin.auths.user_base"}}</label>
+              <input id="user_base" name="user_base" value="{{$cfg.UserBase}}" placeholder="e.g. ou=Users,dc=mydomain,dc=com" required>
+            </div>
+            {{end}}
+            {{if .Source.IsDLDAP}}
+            <div class="required field">
+              <label for="user_dn">{{.i18n.Tr "admin.auths.user_dn"}}</label>
+              <input id="user_dn" name="user_dn" value="{{$cfg.UserDN}}" placeholder="e.g. ou=Users,dc=mydomain,dc=com" required>
+            </div>
+            {{end}}
+            <div class="required field">
+              <label for="filter">{{.i18n.Tr "admin.auths.filter"}}</label>
+              <input id="filter" name="filter" value="{{$cfg.Filter}}" placeholder="e.g. (&(objectClass=posixAccount)(uid=%s))" required>
+            </div>
+            <div class="field">
+              <label for="admin_filter">{{.i18n.Tr "admin.auths.admin_filter"}}</label>
+              <input id="admin_filter" name="admin_filter" value="{{$cfg.AdminFilter}}">
+            </div>
+            <div class="field">
+              <label for="attribute_name">{{.i18n.Tr "admin.auths.attribute_name"}}</label>
+              <input id="attribute_name" name="attribute_name" value="{{$cfg.AttributeName}}">
+            </div>
+            <div class="field">
+              <label for="attribute_surname">{{.i18n.Tr "admin.auths.attribute_surname"}}</label>
+              <input id="attribute_surname" name="attribute_surname" value="{{$cfg.AttributeSurname}}">
+            </div>
+            <div class="required field">
+              <label for="attribute_mail">{{.i18n.Tr "admin.auths.attribute_mail"}}</label>
+              <input id="attribute_mail" name="attribute_mail" value="{{$cfg.AttributeMail}}" placeholder="e.g. mail" required>
+            </div>
+            {{end}}
 
+            <!-- SMTP -->
+            {{if .Source.IsSMTP}}
+            {{ $cfg:=.Source.SMTP }}
+            <div class="inline required field">
+              <label>{{.i18n.Tr "admin.auths.smtp_auth"}}</label>
+              <div class="ui selection type dropdown">
+                <input type="hidden" id="smtp_auth" name="smtp_auth" value="{{$cfg.Auth}}" required>
+                <div class="text">{{$cfg.Auth}}</div>
+                <i class="dropdown icon"></i>
+                <div class="menu">
+                  {{range .SMTPAuths}}
+                  <div class="item" data-value="{{.}}">{{.}}</div>
+                  {{end}}
+                </div>
+              </div>
+            </div>
+            <div class="required field">
+              <label for="smtp_host">{{.i18n.Tr "admin.auths.smtphost"}}</label>
+              <input id="smtp_host" name="smtp_host" value="{{$cfg.Host}}" required>
+            </div>
+            <div class="required field">
+              <label for="smtp_port">{{.i18n.Tr "admin.auths.smtpport"}}</label>
+              <input id="smtp_port" name="smtp_port" value="{{$cfg.Port}}" required>
+            </div>
+            {{end}}
 
-                                {{else if eq $type 3}}
-                                <div class="field">
-                                    <label class="req">{{.i18n.Tr "admin.auths.smtp_auth"}}</label>
-                                    <select name="smtp_auth">
-                                        {{$auth := .Source.SMTP.Auth}}
-                                        {{range .SMTPAuths}}
-                                        <option value="{{.}}"
-                                        {{if eq . $auth}} selected{{end}}>{{.}}</option>
-                                        {{end}}
-                                    </select>
-                                </div>
-                                <div class="field">
-                                    <label class="req" for="smtp_host">{{.i18n.Tr "admin.auths.smtphost"}}</label>
-                                    <input class="ipt ipt-large ipt-radius {{if .Err_SmtpHost}}ipt-error{{end}}" id="smtp_host" name="smtp_host" value="{{.Source.SMTP.Host}}" />
-                                </div>
-                                <div class="field">
-                                    <label class="req" for="smtp_port">{{.i18n.Tr "admin.auths.smtpport"}}</label>
-                                    <input class="ipt ipt-large ipt-radius {{if .Err_SmtpPort}}ipt-error{{end}}" id="smtp_port" name="smtp_port" value="{{.Source.SMTP.Port}}" />
-                                </div>
+            <!-- PAM -->
+            {{if .Source.IsPAM}}
+            {{ $cfg:=.Source.PAM }}
+            <div class="required field">
+              <label for="pam_service_name">{{.i18n.Tr "admin.auths.pam_service_name"}}</label>
+              <input id="pam_service_name" name="pam_service_name" value="{{$cfg.ServiceName}}" required>
+            </div>
+            {{end}}
 
-                                {{else if eq $type 4}}
-                                <div class="field">
-                                    <label class="req" for="pam_service_name">{{.i18n.Tr "admin.auths.pam_service_name"}}</label>
-                                    <input class="ipt ipt-large ipt-radius {{if .Err_PAMServiceName}}ipt-error{{end}}" id="pam_service_name" name="pam_service_name" value="{{.Source.PAM.ServiceName}}" />
-                                </div>
-                                {{end}}
+            <div class="inline field {{if not (or (or .Source.IsLDAP .Source.IsDLDAP) .Source.IsSMTP)}}hide{{end}}">
+              <div class="ui checkbox">
+                <label><strong>{{.i18n.Tr "admin.auths.enable_tls"}}</strong></label>
+                <input name="tls" type="checkbox" {{if .Source.UseTLS}}checked{{end}}>
+              </div>
+            </div>
+            {{if .Source.IsSMTP}}
+            <div class="inline field">
+              <div class="ui checkbox">
+                <label><strong>{{.i18n.Tr "admin.auths.skip_tls_verify"}}</strong></label>
+                <input name="skip_verify" type="checkbox" {{if .Source.SMTP.SkipVerify}}checked{{end}}>
+              </div>
+            </div>
+            {{end}}
+            <div class="inline field">
+              <div class="ui checkbox">
+                <label><strong>{{.i18n.Tr "admin.auths.enable_auto_register"}}</strong></label>
+                <input name="allow_auto_register" type="checkbox" {{if .Source.AllowAutoRegister}}checked{{end}}>
+              </div>
+            </div>
+            <div class="inline field">
+              <div class="ui checkbox">
+                <label><strong>{{.i18n.Tr "admin.auths.activated"}}</strong></label>
+                <input name="is_active" type="checkbox" {{if .Source.IsActived}}checked{{end}}>
+              </div>
+            </div>
 
-                                <div class="field">
-                                    {{if eq $type 3}}
-                                    <label></label>
-                                    <input name="tls" type="checkbox" {{if .Source.SMTP.TLS}}checked{{end}}>
-                                    <strong>{{.i18n.Tr "admin.auths.enable_tls"}}</strong>
-                                    <br>
-                                    <label></label>
-                                    <input name="skip_verify" type="checkbox" {{if .Source.SMTP.SkipVerify}}checked{{end}}>
-                                    <strong>{{.i18n.Tr "admin.auths.skip_tls_verify"}}</strong>
-                                    <br>
-                                    {{end}}
-                                    <label></label>
-                                    <input name="allowautoregister" type="checkbox" {{if .Source.AllowAutoRegister}}checked{{end}}>
-                                    <strong>{{.i18n.Tr "admin.auths.enable_auto_register"}}</strong>
-                                    <br>
-                                    <label></label>
-                                    <input name="is_actived" type="checkbox" {{if .Source.IsActived}}checked{{end}}>
-                                    <strong>{{.i18n.Tr "admin.auths.activated"}}</strong>
-                                </div>
-                                <div class="field">
-                                    <label></label>
-                                    <button class="btn btn-green btn-large btn-radius">{{.i18n.Tr "admin.auths.update"}}</button>
-                                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-                                    <button class="btn btn-large btn-red btn-radius" id="delete-auth-btn" href="#delete-auth-modal">{{.i18n.Tr "admin.auths.delete"}}</button>
-                                </div>
-                                <div class="white-popup-block mfp-hide" id="delete-auth-modal">
-                                    <h1 class="text-red">{{.i18n.Tr "admin.auths.delete_auth_title"}}</h1>
-                                    <p>{{.i18n.Tr "admin.auths.delete_auth_desc"}}</p>
-                                    <br>
-                                    <button class="btn btn-red btn-large btn-radius" id="delete-auth-submit">{{.i18n.Tr "settings.continue"}}</button>
-                                    <button class="btn btn-large btn-radius popup-modal-dismiss">{{.i18n.Tr "settings.cancel"}}</button>
-                                </div>
-                            </form>
-                        </div>
-                    </div>
-                </div>
+            <div class="field">
+              <button class="ui green button">{{.i18n.Tr "admin.auths.update"}}</button>
+              <div class="ui red button delete-button" data-url="{{$.Link}}/delete" data-id="{{.Source.ID}}">{{.i18n.Tr "admin.auths.delete"}}</div>
             </div>
+          </form>
         </div>
+      </div>
     </div>
+  </div>
+</div>
+
+<div class="ui small basic delete modal">
+  <div class="ui icon header">
+    <i class="trash icon"></i>
+    {{.i18n.Tr "admin.auths.delete_auth_title"}}
+  </div>
+  <div class="content">
+    <p>{{.i18n.Tr "admin.auths.delete_auth_desc"}}</p>
+  </div>
+  {{template "base/delete_modal_actions" .}}
 </div>
-{{template "ng/base/footer" .}}
+{{template "base/footer" .}}

+ 28 - 28
templates/admin/auth/new.tmpl

@@ -33,50 +33,50 @@
             <!-- LDAP and DLDAP -->
             <div class="ldap dldap field {{if not (or (eq .type 2) (eq .type 5))}}hide{{end}}">
                 <div class="required field">
-                    <label for="host">{{.i18n.Tr "admin.auths.host"}}</label>
-                    <input id="host" name="host" value="{{.host}}" placeholder="e.g. mydomain.com">
+                  <label for="host">{{.i18n.Tr "admin.auths.host"}}</label>
+                  <input id="host" name="host" value="{{.host}}" placeholder="e.g. mydomain.com">
                 </div>
                 <div class="required field">
-                    <label for="port">{{.i18n.Tr "admin.auths.port"}}</label>
-                    <input id="port" name="port" value="{{.port}}"  placeholder="e.g. 636">
+                  <label for="port">{{.i18n.Tr "admin.auths.port"}}</label>
+                  <input id="port" name="port" value="{{.port}}"  placeholder="e.g. 636">
                 </div>
                 <div class="ldap required field {{if not (eq .type 2)}}hide{{end}}">
-                    <label for="bind_dn">{{.i18n.Tr "admin.auths.bind_dn"}}</label>
-                    <input id="bind_dn" name="bind_dn" value="{{.bind_dn}}" placeholder="e.g. cn=Search,dc=mydomain,dc=com">
+                  <label for="bind_dn">{{.i18n.Tr "admin.auths.bind_dn"}}</label>
+                  <input id="bind_dn" name="bind_dn" value="{{.bind_dn}}" placeholder="e.g. cn=Search,dc=mydomain,dc=com">
                 </div>
                 <input class="fake" type="password">
                 <div class="ldap required field {{if not (eq .type 2)}}hide{{end}}">
-                    <label for="bind_password">{{.i18n.Tr "admin.auths.bind_password"}}</label>
-                    <input id="bind_password" name="bind_password" type="password" value="{{.bind_password}}">
-                    <p class="help text red">{{.i18n.Tr "admin.auths.bind_password_helper"}}</p>
+                  <label for="bind_password">{{.i18n.Tr "admin.auths.bind_password"}}</label>
+                  <input id="bind_password" name="bind_password" type="password" value="{{.bind_password}}">
+                  <p class="help text red">{{.i18n.Tr "admin.auths.bind_password_helper"}}</p>
                 </div>
                 <div class="ldap required field {{if not (eq .type 2)}}hide{{end}}">
-                    <label for="user_base">{{.i18n.Tr "admin.auths.user_base"}}</label>
-                    <input id="user_base" name="user_base" value="{{.user_base}}" placeholder="e.g. ou=Users,dc=mydomain,dc=com">
+                  <label for="user_base">{{.i18n.Tr "admin.auths.user_base"}}</label>
+                  <input id="user_base" name="user_base" value="{{.user_base}}" placeholder="e.g. ou=Users,dc=mydomain,dc=com">
                 </div>
                 <div class="dldap required field {{if not (eq .type 5)}}hide{{end}}">
-                    <label for="user_dn">{{.i18n.Tr "admin.auths.user_dn"}}</label>
-                    <input id="user_dn" name="user_dn" value="{{.user_dn}}" placeholder="e.g. ou=Users,dc=mydomain,dc=com">
+                  <label for="user_dn">{{.i18n.Tr "admin.auths.user_dn"}}</label>
+                  <input id="user_dn" name="user_dn" value="{{.user_dn}}" placeholder="e.g. ou=Users,dc=mydomain,dc=com">
                 </div>
                 <div class="required field">
-                    <label for="filter">{{.i18n.Tr "admin.auths.filter"}}</label>
-                    <input id="filter" name="filter" value="{{.filter}}" placeholder="e.g. (&(objectClass=posixAccount)(uid=%s))">
+                  <label for="filter">{{.i18n.Tr "admin.auths.filter"}}</label>
+                  <input id="filter" name="filter" value="{{.filter}}" placeholder="e.g. (&(objectClass=posixAccount)(uid=%s))">
                 </div>
                 <div class="field">
-                    <label for="admin_filter">{{.i18n.Tr "admin.auths.admin_filter"}}</label>
-                    <input id="admin_filter" name="admin_filter" value="{{.admin_filter}}">
+                  <label for="admin_filter">{{.i18n.Tr "admin.auths.admin_filter"}}</label>
+                  <input id="admin_filter" name="admin_filter" value="{{.admin_filter}}">
                 </div>
                 <div class="field">
-                    <label for="attribute_name">{{.i18n.Tr "admin.auths.attribute_name"}}</label>
-                    <input id="attribute_name" name="attribute_name" value="{{.attribute_name}}">
+                  <label for="attribute_name">{{.i18n.Tr "admin.auths.attribute_name"}}</label>
+                  <input id="attribute_name" name="attribute_name" value="{{.attribute_name}}">
                 </div>
                 <div class="field">
-                    <label for="attribute_surname">{{.i18n.Tr "admin.auths.attribute_surname"}}</label>
-                    <input id="attribute_surname" name="attribute_surname" value="{{.attribute_surname}}">
+                  <label for="attribute_surname">{{.i18n.Tr "admin.auths.attribute_surname"}}</label>
+                  <input id="attribute_surname" name="attribute_surname" value="{{.attribute_surname}}">
                 </div>
                 <div class="required field">
-                    <label for="attribute_mail">{{.i18n.Tr "admin.auths.attribute_mail"}}</label>
-                    <input id="attribute_mail" name="attribute_mail" value="{{.attribute_mail}}" placeholder="e.g. mail">
+                  <label for="attribute_mail">{{.i18n.Tr "admin.auths.attribute_mail"}}</label>
+                  <input id="attribute_mail" name="attribute_mail" value="{{.attribute_mail}}" placeholder="e.g. mail">
                 </div>
             </div>
 
@@ -96,12 +96,12 @@
                 </div>
               </div>
               <div class="required field">
-                  <label for="smtp_host">{{.i18n.Tr "admin.auths.smtphost"}}</label>
-                  <input id="smtp_host" name="smtp_host" value="{{.smtp_host}}" />
+                <label for="smtp_host">{{.i18n.Tr "admin.auths.smtphost"}}</label>
+                <input id="smtp_host" name="smtp_host" value="{{.smtp_host}}">
               </div>
               <div class="required field">
-                  <label for="smtp_port">{{.i18n.Tr "admin.auths.smtpport"}}</label>
-                  <input id="smtp_port" name="smtp_port" value="{{.smtp_port}}" />
+                <label for="smtp_port">{{.i18n.Tr "admin.auths.smtpport"}}</label>
+                <input id="smtp_port" name="smtp_port" value="{{.smtp_port}}">
               </div>
             </div>
 
@@ -137,7 +137,7 @@
             </div>
 
             <div class="field">
-               <button class="ui green button">{{.i18n.Tr "admin.auths.new"}}</button>
+              <button class="ui green button">{{.i18n.Tr "admin.auths.new"}}</button>
             </div>
           </form>
         </div>