diff --git a/doc/help/Messaging_es.md b/doc/help/Messaging_es.md new file mode 100644 index 0000000000..d3947f36a1 --- /dev/null +++ b/doc/help/Messaging_es.md @@ -0,0 +1,37 @@ +# Mensajes + +## Escribiendo Mensajes + +Puedes escribir mensajes utilizando el cuadro de texto que dice "Escribe un mensaje..." al final de Mattermost. + +Presiona **RETORNO** para enviar un mensaje. Utiliza **Shift+RETORNO** para crear una nueva linea sin enviar el mensaje. + +## Darle formato a los Mensajes + +Los mensajes de Mattermost se les asigna formato utilizando un estándard que se llama "markdown". Aquí algunos ejemplos: + +| Texto escrito | Como aparece | +|:--------------|:-------------| +|`**negrita**`| **negrita** | +| `_italica_`|_italica_| +|`[hipervinculo](http://mattermost.org)`|[hipervinculo](http://mattermost.org)| +|``|| +|`:smile:` `:sheep:` `:alien:`|:smile: :sheep: :alien:| + +Revisa la lista completa de Emojis [aquí](http://www.emoji-cheat-sheet.com/). + +## Mencionando a compañeros + +Puedes mencionar a un compañero al utilizar el simbolo `@` más el nombre de usuario para enviarles una notificación especial que llame su atención. + +Por ejemplo, podrías escribir: + +``` +@alicia como te fue con la entrevista del nuevo candidato? +``` + +Lo cual enviará una notificación especial de mención a **alicia** para que lea tu mensaje. + +Para mencionar un compañero, presiona `@` y podrás ver una lista de los miembros de equipo a quienes puedes mandarles un mensaje. Puedes escribir su nombre de usuario o utilizar las flechas de **Arriba** y **Abajo** y presionar **RETORNO** para seleccionarlos. + +Puedes configurar como te gustaría ser notificado cuando alguien te menciona por nombre de usuario, tu primer nombre, sobrenombre o cualquier otra palabra clave en **Configurar Cuenta** > **Notificaciones** y puedes asignar preferencias especificas para un canal en **[Nombre del Canal]** > **Preferencias de Notificación** diff --git a/i18n/en.json b/i18n/en.json index 12741fc681..b9b6b5fab8 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -579,6 +579,10 @@ "id": "api.license.add_license.invalid.app_error", "translation": "Invalid license file." }, + { + "id": "api.license.add_license.invalid_count.app_error", + "translation": "Unable to count total unique users." + }, { "id": "api.license.add_license.no_file.app_error", "translation": "No file under 'license' in request" @@ -588,17 +592,13 @@ "translation": "Could not open license file" }, { - "id": "api.license.add_license.invalid_count.app_error", - "translation": "Unable to count total unique users." + "id": "api.license.add_license.save.app_error", + "translation": "License did not save properly." }, { "id": "api.license.add_license.unique_users.app_error", "translation": "This license only supports {{.Users}} users, when your system has {{.Count}} unique users. Unique users are counted distinctly by email address. You can see total user count under Site Reports -> View Statistics." }, - { - "id": "api.license.add_license.save.app_error", - "translation": "License did not save properly." - }, { "id": "api.license.init.debug", "translation": "Initializing license api routes" @@ -1551,10 +1551,6 @@ "id": "api.user.upload_profile_user.encode.app_error", "translation": "Could not encode profile image" }, - { - "id": "api.user.upload_profile_user.upload_profile.app_error", - "translation": "Couldn't upload profile image" - }, { "id": "api.user.upload_profile_user.no_file.app_error", "translation": "No file under 'image' in request" @@ -1575,6 +1571,10 @@ "id": "api.user.upload_profile_user.too_large.app_error", "translation": "Unable to upload profile image. File is too large." }, + { + "id": "api.user.upload_profile_user.upload_profile.app_error", + "translation": "Couldn't upload profile image" + }, { "id": "api.web_conn.new_web_conn.last_activity.error", "translation": "Failed to update LastActivityAt for user_id=%v and session_id=%v, err=%v" @@ -2775,6 +2775,10 @@ "id": "store.sql_session.save.existing.app_error", "translation": "Cannot update existing session" }, + { + "id": "store.sql_session.update_device_id.app_error", + "translation": "We couldn't update the device id" + }, { "id": "store.sql_session.update_last_activity.app_error", "translation": "We couldn't update the last_activity_at" @@ -2783,10 +2787,6 @@ "id": "store.sql_session.update_roles.app_error", "translation": "We couldn't update the roles" }, - { - "id": "store.sql_session.update_device_id.app_error", - "translation": "We couldn't update the device id" - }, { "id": "store.sql_system.get.app_error", "translation": "We encountered an error finding the system properties" @@ -3335,6 +3335,10 @@ "id": "web.root.home_title", "translation": "Home" }, + { + "id": "web.root.singup_info", + "translation": "All team communication in one place, searchable and accessible anywhere" + }, { "id": "web.root.singup_title", "translation": "Signup" diff --git a/i18n/es.json b/i18n/es.json index c4e7a552cb..9933aa2849 100644 --- a/i18n/es.json +++ b/i18n/es.json @@ -3335,6 +3335,10 @@ "id": "web.root.home_title", "translation": "Inicio" }, + { + "id": "web.root.singup_info", + "translation": "Todas las comunicaciones del equipo en un sólo lugar, con búsquedas y accesible desde cualquier parte" + }, { "id": "web.root.singup_title", "translation": "Registrar" diff --git a/web/react/components/authorize.jsx b/web/react/components/authorize.jsx index 32e39fbff9..90cbe3289a 100644 --- a/web/react/components/authorize.jsx +++ b/web/react/components/authorize.jsx @@ -3,6 +3,8 @@ import * as Client from '../utils/client.jsx'; +import {FormattedMessage} from 'mm-intl'; + export default class Authorize extends React.Component { constructor(props) { super(props); @@ -35,25 +37,55 @@ export default class Authorize extends React.Component { return (
{'An email was sent with links to any teams to which you are a member.'}
+
+
{'Enter a new password for your ' + this.props.teamDisplayName + ' ' + global.window.mm_config.SiteName + ' account.'}
+
+
A password reset link has been sent to {email} for your {teamDisplayName} team on {hostname}.
' + }, + checkInbox: { + id: 'password_send.checkInbox', + defaultMessage: 'Please check your inbox.' + }, + email: { + id: 'password_send.email', + defaultMessage: 'Email' + } +}); + +class PasswordResetSendLink extends React.Component { constructor(props) { super(props); @@ -15,10 +36,11 @@ export default class PasswordResetSendLink extends React.Component { handleSendLink(e) { e.preventDefault(); var state = {}; + const {formatMessage} = this.props.intl; var email = ReactDOM.findDOMNode(this.refs.email).value.trim().toLowerCase(); if (!email || !Utils.isEmail(email)) { - state.error = 'Please enter a valid email address.'; + state.error = formatMessage(holders.error); this.setState(state); return; } @@ -32,7 +54,7 @@ export default class PasswordResetSendLink extends React.Component { client.sendPasswordReset(data, function passwordResetSent() { - this.setState({error: null, updateText:A password reset link has been sent to {email} for your {this.props.teamDisplayName} team on {window.location.hostname}.
, moreUpdateText: 'Please check your inbox.'}); + this.setState({error: null, updateText: formatMessage(holders.link, {email: email, teamDisplayName: this.props.teamDisplayName, hostname: window.location.hostname}), moreUpdateText: formatMessage(holders.checkInbox)}); $(ReactDOM.findDOMNode(this.refs.reset_form)).hide(); }.bind(this), function passwordResetFailedToSend(err) { @@ -43,7 +65,12 @@ export default class PasswordResetSendLink extends React.Component { render() { var updateText = null; if (this.state.updateText) { - updateText ={'To reset your password, enter the email address you used to sign up for ' + this.props.teamDisplayName + '.'}
+
+
A password reset link has been sent to {email} for your {teamDisplayName} team on {hostname}.
", + "password_send.checkInbox": "Please check your inbox.", + "password_send.email": "Email", + "password_send.title": "Password Reset", + "password_send.description": "To reset your password, enter the email address you used to sign up for {teamName}.", + "password_send.reset": "Reset my password", + "signup_team.noTeams": "There are no teams include in the Team Directory and team creation has been disabled.", + "signup_team.choose": "Choose a Team", + "signup_team.createTeam": "Or Create a Team", + "signup_team.disabled": "Team creation has been disabled. Please contact an administrator for access.", + "signup_team.none": "No team creation method has been enabled. Please contact an administrator for access.", "suggestion.mention.all": "Notifies everyone in the team", "suggestion.mention.channel": "Notifies everyone in the channel", "suggestion.search.public": "Public Channels", - "suggestion.search.private": "Private Groups", + "suggestion.search.private": "Public Groups", + "choose_auth_page.gitlabCreate": "Create new team with GitLab Account", + "choose_auth_page.googleCreate": "Create new team with Google Apps Account", + "choose_auth_page.emailCreate": "Create new team with email address", + "choose_auth_page.noSignup": "No sign-up methods configured, please contact your system administrator.", + "choose_auth_page.find": "Find my teams", + "email_signup.emailError": "Please enter a valid email address", + "email_signup.address": "Email Address", + "email_signup.createTeam": "Create Team", + "email_signup.find": "Find my teams", + "sso_signup.team_error": "Please enter a team name", + "sso_signup.length_error": "Name must be 3 or more characters up to a maximum of 15", + "sso_signup.teamName": "Enter name of new team", + "sso_signup.gitlab": "Create team with GitLab Account", + "sso_signup.google": "Create team with Google Apps Account", + "sso_signup.find": "Find my teams", "tutorial_intro.screenOne": "Your team communication all in one place, instantly searchable and available anywhere
\nKeep your team connected to help them achieve what matters most.
", "tutorial_intro.screenTwo": "Communication happens in public discussion channels, private groups and direct messages.
\nEverything is archived and searchable from any web-enabled desktop, laptop or phone.
", "tutorial_intro.invite": "Invite teammates", diff --git a/web/static/i18n/es.json b/web/static/i18n/es.json index 12f9b5fc5f..8743a9b4fe 100644 --- a/web/static/i18n/es.json +++ b/web/static/i18n/es.json @@ -396,6 +396,16 @@ "admin.user_item.resetPwd": "Reiniciar Contraseña", "admin.user_item.sysAdmin": "Admin de Sistema", "admin.user_item.teamAdmin": "Admin de Equipo", + "authorize.access": "¿Permitir acceso a {appName}?", + "authorize.allow": "Permitir", + "authorize.app": "La app {appName} quiere tener la abilidad de accesar y modificar tu información básica.", + "authorize.deny": "Denegar", + "authorize.title": "Una aplicación quiere conectarse con tu cuenta de {teamName}", + "choose_auth_page.emailCreate": "Crea un nuevo equipo con tu cuenta de correo", + "choose_auth_page.find": "Encontrar mi equipo", + "choose_auth_page.gitlabCreate": "Crear un nuevo equipo con una cuenta de GitLab", + "choose_auth_page.googleCreate": "Crear un nuevo equipo con una cuenta de Google Apps", + "choose_auth_page.noSignup": "No hay métodos de inicio de sesión configurad, por favor contacte al administrador de sistemasos", "claim.account.noEmail": "No se especifico un correo electrónico.", "claim.email_to_sso.enterPwd": "Ingresa la contraseña para tu cuenta para {team} {site}", "claim.email_to_sso.pwd": "Contraseña", @@ -411,8 +421,68 @@ "claim.sso_to_email.switchTo": "Cambiar {type} a correo electrónico y contraseña", "claim.sso_to_email.title": "Cambiar la cuenta de {type} a Correo Electrónico", "claim.sso_to_email_newPwd": "Ingresa una nueva contraseña para tu cuenta de {team} {site}", + "email_signup.address": "Correo electrónico", + "email_signup.createTeam": "Crear Equipo", + "email_signup.emailError": "Por favor ingresa una dirección de correos válida", + "email_signup.find": "Encontrar mi equipo", "error_bar.preview_mode": "Modo de prueba: Las notificaciones por correo electrónico no han sido configuradas", + "find_team.email": "Correo electrónico", + "find_team.findDescription": "Enviamos un correo electrónico con los equipos a los que perteneces.", + "find_team.findTitle": "Encuentra tu equipo", + "find_team.getLinks": "Obtén un correo electrónico con los equipos a los que perteneces.", + "find_team.placeholder": "tu@ejemplo.com", + "find_team.send": "Enviar", + "find_team.submitError": "Por favor ingresa una dirección válida", "loading_screen.loading": "Cargando", + "login.changed": " Cambiado el método de inicio de sesión satisfactoriamente", + "login.create": "Crea uno ahora", + "login.createTeam": "Crear un nuevo equipo", + "login.find": "Encuentra tus otros equipos", + "login.forgot": "Olvide mi contraseña", + "login.gitlab": "con GitLab", + "login.google": "con Google Apps", + "login.noAccount": "¿No tienes una cuenta? ", + "login.on": "en {siteName}", + "login.or": "o", + "login.signTo": "Ingresar a:", + "login.verified": " Correo electrónico Verificado", + "login_email.badTeam": "Nombre de Equipo inválido", + "login_email.email": "Correo electrónico", + "login_email.emailReq": "El correo electrónico es obligatorio", + "login_email.pwd": "Contraseña", + "login_email.pwdReq": "La contraseña es obligatoria", + "login_email.signin": "Entrar", + "login_ldap.badTeam": "Nombre de Equipo inválido", + "login_ldap.idlReq": "El ID de LDAP es obligatorio", + "login_ldap.pwd": "Contraseña LDAP", + "login_ldap.pwdReq": "La contraseña LDAP es obligatoria", + "login_ldap.signin": "Entrar", + "login_ldap.username": "Usuario LDAP", + "password_form.change": "Cambiar mi contraseña", + "password_form.click": " Pincha aquí para iniciar sesión.", + "password_form.enter": "Ingresa una nueva contraseña para tu cuenta en {teamDisplayName} {SiteName}.", + "password_form.error": "Por favor ingresa al menos {chars} caracteres.", + "password_form.pwd": "Contraseña", + "password_form.title": "Restablecer Contraseña", + "password_form.update": "Tu contraseña ha sido actualizada satisfactoriamente.", + "password_send.checkInbox": "Por favor revisa tu bandeja de entrada.", + "password_send.description": "Para restablecer tu contraseña, ingresa la dirección de correo electrónico que utilizaste para registrarte en {teamName}.", + "password_send.email": "Correo electrónico", + "password_send.error": "Por favor ingresa una dirección correo electrónico válida.", + "password_send.link": "Se ha enviado un enlace para restablecer la contraseña a {email} para tu equipo {teamDisplayName} en {hostname}.
", + "password_send.reset": "Restablecer mi contraseña", + "password_send.title": "Restablecer Contraseña", + "signup_team.choose": "Selecciona un Equipo", + "signup_team.createTeam": "O Crea un Equipo", + "signup_team.disabled": "La creación de Equipos ha sido deshabilitada.", + "signup_team.noTeams": "No hay equipos en el Directorio de Equipos y la creación de equipos ha sido deshabilitada.", + "signup_team.none": "No se ha habilitado ningún método para creación de equipos. Por favor contacta a un administrador de sistema para solicitar acceso.", + "sso_signup.find": "Encontrar mi equipo", + "sso_signup.gitlab": "Crea un equipo con una cuenta de GitLab", + "sso_signup.google": "Crea un equipo con una cuenta de Google Apps", + "sso_signup.length_error": "Name must be 3 or more characters up to a maximum of 15", + "sso_signup.teamName": "Ingresa el nombre del nuevo equipo", + "sso_signup.team_error": "Please enter a team name", "suggestion.mention.all": "Notifica a todas las personas en el equipo", "suggestion.mention.channel": "Notifica a todas las personas en el canal", "suggestion.search.private": "Grupos Privados", @@ -420,7 +490,7 @@ "tutorial_intro.allSet": "Ya estás listo para comenzar", "tutorial_intro.end": "Pincha “Siguiente” para entrar al Canal General. Este es el primer canal que ven tus compañeros cuando ingresan. Utilizalo para mandar mensajes que todos deben leer.", "tutorial_intro.invite": "Invitar compañeros", - "tutorial_intro.next": "Seguir", + "tutorial_intro.next": "Siguiente", "tutorial_intro.screenOne": "Las comunicaciones de tu equipo en un solo lugar, con búsquedas instantáneas y disponible desde donde sea.
Mantén a tu equipo conectado para ayudarlos a conseguir lo que realmente importa.
", "tutorial_intro.screenTwo": "Las comunicaciones ocurren en los canales de discusión los cuales son públicos, o en grupos privados e incluso con mensajes privados.
Todo lo que ocurre es archivado y se puede buscar en cualquier momento desde cualquier dispositivo con acceso a Mattermost.
", "tutorial_intro.skip": "Saltar el tutorial", diff --git a/web/templates/find_team.html b/web/templates/find_team.html index d32ea0dc8c..15b8bf4635 100644 --- a/web/templates/find_team.html +++ b/web/templates/find_team.html @@ -23,7 +23,7 @@