Merge pull request #2577 from mattermost/plt-2349

PLT-2349 Update email/password settings text depending on sign-in method
Этот коммит содержится в:
Christopher Speller
2016-03-30 11:40:22 -04:00
родитель 6580b94377 91c83e6ab4
Коммит 2aa0d9b8fc
6 изменённых файлов: 407 добавлений и 282 удалений

Просмотреть файл

@@ -14,7 +14,7 @@ import Constants from 'utils/constants.jsx';
import * as AsyncClient from 'utils/async_client.jsx'; import * as AsyncClient from 'utils/async_client.jsx';
import * as Utils from 'utils/utils.jsx'; import * as Utils from 'utils/utils.jsx';
import {intlShape, injectIntl, defineMessages, FormattedMessage, FormattedDate} from 'react-intl'; import {intlShape, injectIntl, defineMessages, FormattedMessage, FormattedHTMLMessage, FormattedDate} from 'react-intl';
const holders = defineMessages({ const holders = defineMessages({
usernameReserved: { usernameReserved: {
@@ -37,18 +37,6 @@ const holders = defineMessages({
id: 'user.settings.general.checkEmail', id: 'user.settings.general.checkEmail',
defaultMessage: 'Check your email at {email} to verify the address.' defaultMessage: 'Check your email at {email} to verify the address.'
}, },
newAddress: {
id: 'user.settings.general.newAddress',
defaultMessage: 'New Address: {email}<br />Check your email to verify the above address.'
},
checkEmailNoAddress: {
id: 'user.settings.general.checkEmailNoAddress',
defaultMessage: 'Check your email to verify your new address'
},
loginGitlab: {
id: 'user.settings.general.loginGitlab',
defaultMessage: 'Log in done through GitLab'
},
validImage: { validImage: {
id: 'user.settings.general.validImage', id: 'user.settings.general.validImage',
defaultMessage: 'Only JPG or PNG images may be used for profile pictures' defaultMessage: 'Only JPG or PNG images may be used for profile pictures'
@@ -73,10 +61,6 @@ const holders = defineMessages({
id: 'user.settings.general.username', id: 'user.settings.general.username',
defaultMessage: 'Username' defaultMessage: 'Username'
}, },
email: {
id: 'user.settings.general.email',
defaultMessage: 'Email'
},
profilePicture: { profilePicture: {
id: 'user.settings.general.profilePicture', id: 'user.settings.general.profilePicture',
defaultMessage: 'Profile Picture' defaultMessage: 'Profile Picture'
@@ -299,9 +283,224 @@ class UserSettingsGeneralTab extends React.Component {
return {username: user.username, firstName: user.first_name, lastName: user.last_name, nickname: user.nickname, return {username: user.username, firstName: user.first_name, lastName: user.last_name, nickname: user.nickname,
email: user.email, confirmEmail: '', picture: null, loadingPicture: false, emailChangeInProgress: false}; email: user.email, confirmEmail: '', picture: null, loadingPicture: false, emailChangeInProgress: false};
} }
createEmailSection() {
let emailSection;
if (this.props.activeSection === 'email') {
const emailEnabled = global.window.mm_config.SendEmailNotifications === 'true';
const emailVerificationEnabled = global.window.mm_config.RequireEmailVerification === 'true';
const inputs = [];
let helpText = (
<FormattedMessage
id='user.settings.general.emailHelp1'
defaultMessage='Email is used for sign-in, notifications, and password reset. Email requires verification if changed.'
/>
);
if (!emailEnabled) {
helpText = (
<div className='setting-list__hint text-danger'>
<FormattedMessage
id='user.settings.general.emailHelp2'
defaultMessage='Email has been disabled by your system administrator. No notification emails will be sent until it is enabled.'
/>
</div>
);
} else if (!emailVerificationEnabled) {
helpText = (
<FormattedMessage
id='user.settings.general.emailHelp3'
defaultMessage='Email is used for sign-in, notifications, and password reset.'
/>
);
} else if (this.state.emailChangeInProgress) {
const newEmail = UserStore.getCurrentUser().email;
if (newEmail) {
helpText = (
<FormattedMessage
id='user.settings.general.emailHelp4'
defaultMessage='A verification email was sent to {email}.'
values={{
email: newEmail
}}
/>
);
}
}
let submit = null;
if (this.props.user.auth_service === '') {
inputs.push(
<div key='emailSetting'>
<div className='form-group'>
<label className='col-sm-5 control-label'>
<FormattedMessage
id='user.settings.general.primaryEmail'
defaultMessage='Primary Email'
/>
</label>
<div className='col-sm-7'>
<input
className='form-control'
type='text'
onChange={this.updateEmail}
value={this.state.email}
/>
</div>
</div>
</div>
);
inputs.push(
<div key='confirmEmailSetting'>
<div className='form-group'>
<label className='col-sm-5 control-label'>
<FormattedMessage
id='user.settings.general.confirmEmail'
defaultMessage='Confirm Email'
/>
</label>
<div className='col-sm-7'>
<input
className='form-control'
type='text'
onChange={this.updateConfirmEmail}
value={this.state.confirmEmail}
/>
</div>
</div>
{helpText}
</div>
);
submit = this.submitEmail;
} else if (this.props.user.auth_service === Constants.GITLAB_SERVICE) {
inputs.push(
<div
key='oauthEmailInfo'
className='form-group'
>
<div className='setting-list__hint'>
<FormattedMessage
id='user.settings.general.emailGitlabCantUpdate'
defaultMessage='Login occurs through GitLab. Email cannot be updated. Email address used for notifications is {email}.'
values={{
email: this.state.email
}}
/>
</div>
{helpText}
</div>
);
} else if (this.props.user.auth_service === Constants.LDAP_SERVICE) {
inputs.push(
<div
key='oauthEmailInfo'
className='form-group'
>
<div className='setting-list__hint'>
<FormattedMessage
id='user.settings.general.emailLdapCantUpdate'
defaultMessage='Login occurs through LDAP. Email cannot be updated. Email address used for notifications is {email}.'
values={{
email: this.state.email
}}
/>
</div>
{helpText}
</div>
);
}
emailSection = (
<SettingItemMax
title={
<FormattedMessage
id='user.settings.general.email'
defaultMessage='Email'
/>
}
inputs={inputs}
submit={submit}
server_error={this.state.serverError}
client_error={this.state.emailError}
updateSection={(e) => {
this.updateSection('');
e.preventDefault();
}}
/>
);
} else {
let describe = '';
if (this.props.user.auth_service === '') {
if (this.state.emailChangeInProgress) {
const newEmail = UserStore.getCurrentUser().email;
if (newEmail) {
describe = (
<FormattedHTMLMessage
id='user.settings.general.newAddress'
defaultMessage='New Address: {email}<br />Check your email to verify the above address.'
values={{
email: newEmail
}}
/>
);
} else {
describe = (
<FormattedMessage
id='user.settings.general.checkEmailNoAddress'
defaultMessage='Check your email to verify your new address'
/>
);
}
} else {
describe = UserStore.getCurrentUser().email;
}
} else if (this.props.user.auth_service === Constants.GITLAB_SERVICE) {
describe = (
<FormattedMessage
id='user.settings.general.loginGitlab'
defaultMessage='Login done through GitLab ({email})'
values={{
email: this.state.email
}}
/>
);
} else if (this.props.user.auth_service === Constants.LDAP_SERVICE) {
describe = (
<FormattedMessage
id='user.settings.general.loginLdap'
defaultMessage='Login done through LDAP ({email})'
values={{
email: this.state.email
}}
/>
);
}
emailSection = (
<SettingItemMin
title={
<FormattedMessage
id='user.settings.general.email'
defaultMessage='Email'
/>
}
describe={describe}
updateSection={() => {
this.updateSection('email');
}}
/>
);
}
return emailSection;
}
render() { render() {
const user = this.props.user; const user = this.props.user;
const {formatMessage, formatHTMLMessage} = this.props.intl; const {formatMessage} = this.props.intl;
let clientError = null; let clientError = null;
if (this.state.clientError) { if (this.state.clientError) {
@@ -311,10 +510,6 @@ class UserSettingsGeneralTab extends React.Component {
if (this.state.serverError) { if (this.state.serverError) {
serverError = this.state.serverError; serverError = this.state.serverError;
} }
let emailError = null;
if (this.state.emailError) {
emailError = this.state.emailError;
}
let nameSection; let nameSection;
const inputs = []; const inputs = [];
@@ -409,20 +604,27 @@ class UserSettingsGeneralTab extends React.Component {
/> />
); );
} else { } else {
let fullName = ''; let describe = '';
if (user.first_name && user.last_name) { if (user.first_name && user.last_name) {
fullName = user.first_name + ' ' + user.last_name; describe = user.first_name + ' ' + user.last_name;
} else if (user.first_name) { } else if (user.first_name) {
fullName = user.first_name; describe = user.first_name;
} else if (user.last_name) { } else if (user.last_name) {
fullName = user.last_name; describe = user.last_name;
} else {
describe = (
<FormattedMessage
id='user.settings.general.emptyName'
defaultMessage="Click 'Edit' to add your full name"
/>
);
} }
nameSection = ( nameSection = (
<SettingItemMin <SettingItemMin
title={formatMessage(holders.fullName)} title={formatMessage(holders.fullName)}
describe={fullName} describe={describe}
updateSection={() => { updateSection={() => {
this.updateSection('name'); this.updateSection('name');
}} }}
@@ -483,10 +685,22 @@ class UserSettingsGeneralTab extends React.Component {
/> />
); );
} else { } else {
let describe = '';
if (user.nickname) {
describe = user.nickname;
} else {
describe = (
<FormattedMessage
id='user.settings.general.emptyNickname'
defaultMessage="Click 'Edit' to add a nickname"
/>
);
}
nicknameSection = ( nicknameSection = (
<SettingItemMin <SettingItemMin
title={formatMessage(holders.nickname)} title={formatMessage(holders.nickname)}
describe={UserStore.getCurrentUser().nickname} describe={describe}
updateSection={() => { updateSection={() => {
this.updateSection('nickname'); this.updateSection('nickname');
}} }}
@@ -559,152 +773,7 @@ class UserSettingsGeneralTab extends React.Component {
); );
} }
let emailSection; const emailSection = this.createEmailSection();
if (this.props.activeSection === 'email') {
const emailEnabled = global.window.mm_config.SendEmailNotifications === 'true';
const emailVerificationEnabled = global.window.mm_config.RequireEmailVerification === 'true';
let helpText = (
<FormattedMessage
id='user.settings.general.emailHelp1'
defaultMessage='Email is used for sign-in, notifications, and password reset. Email requires verification if changed.'
/>
);
if (!emailEnabled) {
helpText = (
<div className='setting-list__hint text-danger'>
<FormattedMessage
id='user.settings.general.emailHelp2'
defaultMessage='Email has been disabled by your system administrator. No notification emails will be sent until it is enabled.'
/>
</div>
);
} else if (!emailVerificationEnabled) {
helpText = (
<FormattedMessage
id='user.settings.general.emailHelp3'
defaultMessage='Email is used for sign-in, notifications, and password reset.'
/>
);
} else if (this.state.emailChangeInProgress) {
const newEmail = UserStore.getCurrentUser().email;
if (newEmail) {
helpText = (
<FormattedMessage
id='user.settings.general.emailHelp4'
defaultMessage='A verification email was sent to {email}.'
values={{
email: newEmail
}}
/>
);
}
}
let submit = null;
if (this.props.user.auth_service === '') {
inputs.push(
<div key='emailSetting'>
<div className='form-group'>
<label className='col-sm-5 control-label'>
<FormattedMessage
id='user.settings.general.primaryEmail'
defaultMessage='Primary Email'
/>
</label>
<div className='col-sm-7'>
<input
className='form-control'
type='text'
onChange={this.updateEmail}
value={this.state.email}
/>
</div>
</div>
</div>
);
inputs.push(
<div key='confirmEmailSetting'>
<div className='form-group'>
<label className='col-sm-5 control-label'>
<FormattedMessage
id='user.settings.general.confirmEmail'
defaultMessage='Confirm Email'
/>
</label>
<div className='col-sm-7'>
<input
className='form-control'
type='text'
onChange={this.updateConfirmEmail}
value={this.state.confirmEmail}
/>
</div>
</div>
{helpText}
</div>
);
submit = this.submitEmail;
} else if (this.props.user.auth_service === Constants.GITLAB_SERVICE) {
inputs.push(
<div
key='oauthEmailInfo'
className='form-group'
>
<div className='setting-list__hint'>
<FormattedMessage
id='user.settings.general.emailCantUpdate'
defaultMessage='Log in occurs through GitLab. Email cannot be updated.'
/>
</div>
{helpText}
</div>
);
}
emailSection = (
<SettingItemMax
title='Email'
inputs={inputs}
submit={submit}
server_error={serverError}
client_error={emailError}
updateSection={(e) => {
this.updateSection('');
e.preventDefault();
}}
/>
);
} else {
let describe = '';
if (this.props.user.auth_service === '') {
if (this.state.emailChangeInProgress) {
const newEmail = UserStore.getCurrentUser().email;
if (newEmail) {
describe = formatHTMLMessage(holders.newAddress, {email: newEmail});
} else {
describe = formatMessage(holders.checkEmailNoAddress);
}
} else {
describe = UserStore.getCurrentUser().email;
}
} else if (this.props.user.auth_service === Constants.GITLAB_SERVICE) {
describe = formatMessage(holders.loginGitlab);
}
emailSection = (
<SettingItemMin
title={formatMessage(holders.email)}
describe={describe}
updateSection={() => {
this.updateSection('email');
}}
/>
);
}
let pictureSection; let pictureSection;
if (this.props.activeSection === 'picture') { if (this.props.activeSection === 'picture') {

Просмотреть файл

@@ -30,14 +30,6 @@ const holders = defineMessages({
id: 'user.settings.security.passwordMatchError', id: 'user.settings.security.passwordMatchError',
defaultMessage: 'The new passwords you entered do not match' defaultMessage: 'The new passwords you entered do not match'
}, },
password: {
id: 'user.settings.security.password',
defaultMessage: 'Password'
},
lastUpdated: {
id: 'user.settings.security.lastUpdated',
defaultMessage: 'Last updated {date} at {time}'
},
method: { method: {
id: 'user.settings.security.method', id: 'user.settings.security.method',
defaultMessage: 'Sign-in Method' defaultMessage: 'Sign-in Method'
@@ -131,74 +123,106 @@ class SecurityTab extends React.Component {
} }
createPasswordSection() { createPasswordSection() {
let updateSectionStatus; let updateSectionStatus;
const {formatMessage} = this.props.intl;
if (this.props.activeSection === 'password' && this.props.user.auth_service === '') { if (this.props.activeSection === 'password') {
const inputs = []; const inputs = [];
let submit;
inputs.push( if (this.props.user.auth_service === '') {
<div submit = this.submitPassword;
key='currentPasswordUpdateForm'
className='form-group' inputs.push(
> <div
<label className='col-sm-5 control-label'> key='currentPasswordUpdateForm'
<FormattedMessage className='form-group'
id='user.settings.security.currentPassword' >
defaultMessage='Current Password' <label className='col-sm-5 control-label'>
/> <FormattedMessage
</label> id='user.settings.security.currentPassword'
<div className='col-sm-7'> defaultMessage='Current Password'
<input />
className='form-control' </label>
type='password' <div className='col-sm-7'>
onChange={this.updateCurrentPassword} <input
value={this.state.currentPassword} className='form-control'
/> type='password'
onChange={this.updateCurrentPassword}
value={this.state.currentPassword}
/>
</div>
</div> </div>
</div> );
); inputs.push(
inputs.push( <div
<div key='newPasswordUpdateForm'
key='newPasswordUpdateForm' className='form-group'
className='form-group' >
> <label className='col-sm-5 control-label'>
<label className='col-sm-5 control-label'> <FormattedMessage
<FormattedMessage id='user.settings.security.newPassword'
id='user.settings.security.newPassword' defaultMessage='New Password'
defaultMessage='New Password' />
/> </label>
</label> <div className='col-sm-7'>
<div className='col-sm-7'> <input
<input className='form-control'
className='form-control' type='password'
type='password' onChange={this.updateNewPassword}
onChange={this.updateNewPassword} value={this.state.newPassword}
value={this.state.newPassword} />
/> </div>
</div> </div>
</div> );
); inputs.push(
inputs.push( <div
<div key='retypeNewPasswordUpdateForm'
key='retypeNewPasswordUpdateForm' className='form-group'
className='form-group' >
> <label className='col-sm-5 control-label'>
<label className='col-sm-5 control-label'> <FormattedMessage
<FormattedMessage id='user.settings.security.retypePassword'
id='user.settings.security.retypePassword' defaultMessage='Retype New Password'
defaultMessage='Retype New Password' />
/> </label>
</label> <div className='col-sm-7'>
<div className='col-sm-7'> <input
<input className='form-control'
className='form-control' type='password'
type='password' onChange={this.updateConfirmPassword}
onChange={this.updateConfirmPassword} value={this.state.confirmPassword}
value={this.state.confirmPassword} />
/> </div>
</div> </div>
</div> );
); } else if (this.props.user.auth_service === Constants.GITLAB_SERVICE) {
inputs.push(
<div
key='oauthEmailInfo'
className='form-group'
>
<div className='setting-list__hint'>
<FormattedMessage
id='user.settings.security.passwordGitlabCantUpdate'
defaultMessage='Login occurs through GitLab. Password cannot be updated.'
/>
</div>
</div>
);
} else if (this.props.user.auth_service === Constants.LDAP_SERVICE) {
inputs.push(
<div
key='oauthEmailInfo'
className='form-group'
>
<div className='setting-list__hint'>
<FormattedMessage
id='user.settings.security.passwordLdapCantUpdate'
defaultMessage='Login occurs through LDAP. Password cannot be updated.'
/>
</div>
</div>
);
}
updateSectionStatus = function resetSection(e) { updateSectionStatus = function resetSection(e) {
this.props.updateSection(''); this.props.updateSection('');
@@ -209,9 +233,14 @@ class SecurityTab extends React.Component {
return ( return (
<SettingItemMax <SettingItemMax
title={formatMessage(holders.password)} title={
<FormattedMessage
id='user.settings.security.password'
defaultMessage='Password'
/>
}
inputs={inputs} inputs={inputs}
submit={this.submitPassword} submit={submit}
server_error={this.state.serverError} server_error={this.state.serverError}
client_error={this.state.passwordError} client_error={this.state.passwordError}
updateSection={updateSectionStatus} updateSection={updateSectionStatus}
@@ -219,34 +248,51 @@ class SecurityTab extends React.Component {
); );
} }
var describe; let describe;
var d = new Date(this.props.user.last_password_update);
const hours12 = !Utils.isMilitaryTime(); if (this.props.user.auth_service === '') {
describe = ( const d = new Date(this.props.user.last_password_update);
<FormattedMessage const hours12 = !Utils.isMilitaryTime();
id='user.settings.security.lastUpdated'
defaultMessage='Last updated {date} at {time}' describe = (
values={{ <FormattedMessage
date: ( id='user.settings.security.lastUpdated'
<FormattedDate defaultMessage='Last updated {date} at {time}'
value={d} values={{
day='2-digit' date: (
month='short' <FormattedDate
year='numeric' value={d}
/> day='2-digit'
), month='short'
time: ( year='numeric'
<FormattedTime />
value={d} ),
hour12={hours12} time: (
hour='2-digit' <FormattedTime
minute='2-digit' value={d}
/> hour12={hours12}
) hour='2-digit'
}} minute='2-digit'
/> />
); )
}}
/>
);
} else if (this.props.user.auth_service === Constants.GITLAB_SERVICE) {
describe = (
<FormattedMessage
id='user.settings.security.loginGitlab'
defaultMessage='Login done through Gitlab'
/>
);
} else if (this.props.user.auth_service === Constants.LDAP_SERVICE) {
describe = (
<FormattedMessage
id='user.settings.security.loginLdap'
defaultMessage='Login done through LDAP'
/>
);
}
updateSectionStatus = function updateSection() { updateSectionStatus = function updateSection() {
this.props.updateSection('password'); this.props.updateSection('password');
@@ -254,7 +300,12 @@ class SecurityTab extends React.Component {
return ( return (
<SettingItemMin <SettingItemMin
title={formatMessage(holders.password)} title={
<FormattedMessage
id='user.settings.security.password'
defaultMessage='Password'
/>
}
describe={describe} describe={describe}
updateSection={updateSectionStatus} updateSection={updateSectionStatus}
/> />

Просмотреть файл

@@ -1287,18 +1287,22 @@
"user.settings.general.close": "Close", "user.settings.general.close": "Close",
"user.settings.general.confirmEmail": "Confirm Email", "user.settings.general.confirmEmail": "Confirm Email",
"user.settings.general.email": "Email", "user.settings.general.email": "Email",
"user.settings.general.emailCantUpdate": "Log in occurs through GitLab. Email cannot be updated.", "user.settings.general.emailGitlabCantUpdate": "Login occurs through GitLab. Email cannot be updated. Email address used for notifications is {email}.",
"user.settings.general.emailLdapCantUpdate": "Login occurs through LDAP. Email cannot be updated. Email address used for notifications is {email}.",
"user.settings.general.emailHelp1": "Email is used for sign-in, notifications, and password reset. Email requires verification if changed.", "user.settings.general.emailHelp1": "Email is used for sign-in, notifications, and password reset. Email requires verification if changed.",
"user.settings.general.emailHelp2": "Email has been disabled by your system administrator. No notification emails will be sent until it is enabled.", "user.settings.general.emailHelp2": "Email has been disabled by your system administrator. No notification emails will be sent until it is enabled.",
"user.settings.general.emailHelp3": "Email is used for sign-in, notifications, and password reset.", "user.settings.general.emailHelp3": "Email is used for sign-in, notifications, and password reset.",
"user.settings.general.emailHelp4": "A verification email was sent to {email}.", "user.settings.general.emailHelp4": "A verification email was sent to {email}.",
"user.settings.general.emailMatch": "The new emails you entered do not match.", "user.settings.general.emailMatch": "The new emails you entered do not match.",
"user.settings.general.emptyName": "Click 'Edit' to add your full name",
"user.settings.general.emptyNickname": "Click 'Edit' to add a nickname",
"user.settings.general.firstName": "First Name", "user.settings.general.firstName": "First Name",
"user.settings.general.fullName": "Full Name", "user.settings.general.fullName": "Full Name",
"user.settings.general.imageTooLarge": "Unable to upload profile image. File is too large.", "user.settings.general.imageTooLarge": "Unable to upload profile image. File is too large.",
"user.settings.general.imageUpdated": "Image last updated {date}", "user.settings.general.imageUpdated": "Image last updated {date}",
"user.settings.general.lastName": "Last Name", "user.settings.general.lastName": "Last Name",
"user.settings.general.loginGitlab": "Log in done through GitLab", "user.settings.general.loginGitlab": "Login done through GitLab ({email})",
"user.settings.general.loginLdap": "Login done through LDAP ({email})",
"user.settings.general.newAddress": "New Address: {email}<br />Check your email to verify the above address.", "user.settings.general.newAddress": "New Address: {email}<br />Check your email to verify the above address.",
"user.settings.general.nickname": "Nickname", "user.settings.general.nickname": "Nickname",
"user.settings.general.nicknameExtra": "Use Nickname for a name you might be called that is different from your first name and username. This is most often used when two or more people have similar sounding names and usernames.", "user.settings.general.nicknameExtra": "Use Nickname for a name you might be called that is different from your first name and username. This is most often used when two or more people have similar sounding names and usernames.",
@@ -1363,11 +1367,15 @@
"user.settings.security.emailPwd": "Email and Password", "user.settings.security.emailPwd": "Email and Password",
"user.settings.security.gitlab": "GitLab SSO", "user.settings.security.gitlab": "GitLab SSO",
"user.settings.security.lastUpdated": "Last updated {date} at {time}", "user.settings.security.lastUpdated": "Last updated {date} at {time}",
"user.settings.security.loginGitlab": "Login done through Gitlab",
"user.settings.security.loginLdap": "Login done through LDAP",
"user.settings.security.logoutActiveSessions": "View and Logout of Active Sessions", "user.settings.security.logoutActiveSessions": "View and Logout of Active Sessions",
"user.settings.security.method": "Sign-in Method", "user.settings.security.method": "Sign-in Method",
"user.settings.security.newPassword": "New Password", "user.settings.security.newPassword": "New Password",
"user.settings.security.oneSignin": "You may only have one sign-in method at a time. Switching sign-in method will send an email notifying you if the change was successful.", "user.settings.security.oneSignin": "You may only have one sign-in method at a time. Switching sign-in method will send an email notifying you if the change was successful.",
"user.settings.security.password": "Password", "user.settings.security.password": "Password",
"user.settings.security.passwordGitlabCantUpdate": "Login occurs through GitLab. Password cannot be updated.",
"user.settings.security.passwordLdapCantUpdate": "Login occurs through LDAP. Password cannot be updated.",
"user.settings.security.passwordLengthError": "New passwords must be at least {chars} characters", "user.settings.security.passwordLengthError": "New passwords must be at least {chars} characters",
"user.settings.security.passwordMatchError": "The new passwords you entered do not match", "user.settings.security.passwordMatchError": "The new passwords you entered do not match",
"user.settings.security.retypePassword": "Retype New Password", "user.settings.security.retypePassword": "Retype New Password",

Просмотреть файл

@@ -1247,7 +1247,6 @@
"user.settings.general.close": "Cerrar", "user.settings.general.close": "Cerrar",
"user.settings.general.confirmEmail": "Confirmar Correo electrónico", "user.settings.general.confirmEmail": "Confirmar Correo electrónico",
"user.settings.general.email": "Correo electrónico", "user.settings.general.email": "Correo electrónico",
"user.settings.general.emailCantUpdate": "El inicio de sesión ocurre a través de GitLab. El correo electrónico no puede ser cambiado.",
"user.settings.general.emailHelp1": "El correo electrónico es utilizado para iniciar sesión, recibir notificaciones y para restablecer la contraseña. Si se cambia el correo electrónico deberás verificarlo nuevamente.", "user.settings.general.emailHelp1": "El correo electrónico es utilizado para iniciar sesión, recibir notificaciones y para restablecer la contraseña. Si se cambia el correo electrónico deberás verificarlo nuevamente.",
"user.settings.general.emailHelp2": "El correo ha sido deshabilitado por el administrador de sistemas. No llegarán correos de notificación hasta que se vuelva a habilitar.", "user.settings.general.emailHelp2": "El correo ha sido deshabilitado por el administrador de sistemas. No llegarán correos de notificación hasta que se vuelva a habilitar.",
"user.settings.general.emailHelp3": "El correo electrónico es utilizado para iniciar sesión, recibir notificaciones y para restablecer la contraseña.", "user.settings.general.emailHelp3": "El correo electrónico es utilizado para iniciar sesión, recibir notificaciones y para restablecer la contraseña.",
@@ -1258,7 +1257,7 @@
"user.settings.general.imageTooLarge": "No se puede subir la imagen del perfil. El archivo es muy grande.", "user.settings.general.imageTooLarge": "No se puede subir la imagen del perfil. El archivo es muy grande.",
"user.settings.general.imageUpdated": "Última actualizacón de la imagen {date}", "user.settings.general.imageUpdated": "Última actualizacón de la imagen {date}",
"user.settings.general.lastName": "Apellido", "user.settings.general.lastName": "Apellido",
"user.settings.general.loginGitlab": "Inicio de sesión realizado a través de GitLab", "user.settings.general.loginGitlab": "Inicio de sesión realizado a través de GitLab ({email})",
"user.settings.general.newAddress": "Nueva dirección: {email}<br />Revisa tu correo electrónico para verificar tu nueva dirección.", "user.settings.general.newAddress": "Nueva dirección: {email}<br />Revisa tu correo electrónico para verificar tu nueva dirección.",
"user.settings.general.nickname": "Sobrenombre", "user.settings.general.nickname": "Sobrenombre",
"user.settings.general.nicknameExtra": "Utiliza un Sobrenombre por el cual te conocen que sea diferente de tu nombre y del nombre de tu usuario. Esto se utiliza con mayor frecuencia cuando dos o más personas tienen nombres y nombres de usuario que suenan similares.", "user.settings.general.nicknameExtra": "Utiliza un Sobrenombre por el cual te conocen que sea diferente de tu nombre y del nombre de tu usuario. Esto se utiliza con mayor frecuencia cuando dos o más personas tienen nombres y nombres de usuario que suenan similares.",

Просмотреть файл

@@ -1247,7 +1247,6 @@
"user.settings.general.close": "Quitter", "user.settings.general.close": "Quitter",
"user.settings.general.confirmEmail": "Courriel de confirmation", "user.settings.general.confirmEmail": "Courriel de confirmation",
"user.settings.general.email": "Adresse électronique", "user.settings.general.email": "Adresse électronique",
"user.settings.general.emailCantUpdate": "La connexion s'effectue par GitLab. L'adresse électronique ne peut être modifiée.",
"user.settings.general.emailHelp1": "L'adresse électronique est utilisé pour la connexion, les notifications et la réinitialisation du mot de passe. Votre adresse électronique doit être validé si vous le changez.", "user.settings.general.emailHelp1": "L'adresse électronique est utilisé pour la connexion, les notifications et la réinitialisation du mot de passe. Votre adresse électronique doit être validé si vous le changez.",
"user.settings.general.emailHelp2": "Les courriels sont désactivés par votre administrateur système. Aucune notification ne peut être envoyée.", "user.settings.general.emailHelp2": "Les courriels sont désactivés par votre administrateur système. Aucune notification ne peut être envoyée.",
"user.settings.general.emailHelp3": "L'adresse électronique est utilisée pour la connexion, les notifications et la réinitialisation du mot de passe.", "user.settings.general.emailHelp3": "L'adresse électronique est utilisée pour la connexion, les notifications et la réinitialisation du mot de passe.",
@@ -1258,7 +1257,7 @@
"user.settings.general.imageTooLarge": "Impossible de mettre à jour votre photo de profil. Le fichier est trop grand.", "user.settings.general.imageTooLarge": "Impossible de mettre à jour votre photo de profil. Le fichier est trop grand.",
"user.settings.general.imageUpdated": "Image mise à jour le {date}", "user.settings.general.imageUpdated": "Image mise à jour le {date}",
"user.settings.general.lastName": "Nom", "user.settings.general.lastName": "Nom",
"user.settings.general.loginGitlab": "Connexion avec GitLab", "user.settings.general.loginGitlab": "Connexion avec GitLab ({email})",
"user.settings.general.newAddress": "Nouvelle adresse : {email}<br />Vérifiez votre messagerie pour valider votre adresse électronique.", "user.settings.general.newAddress": "Nouvelle adresse : {email}<br />Vérifiez votre messagerie pour valider votre adresse électronique.",
"user.settings.general.nickname": "Pseudo", "user.settings.general.nickname": "Pseudo",
"user.settings.general.nicknameExtra": "Vous pouvez utiliser un pseudo à la place de vos prénom, nom et nom d'utilisateur. Ceci est pratique lorsque deux personnes de votre équipe ont des noms proches.", "user.settings.general.nicknameExtra": "Vous pouvez utiliser un pseudo à la place de vos prénom, nom et nom d'utilisateur. Ceci est pratique lorsque deux personnes de votre équipe ont des noms proches.",

Просмотреть файл

@@ -1246,7 +1246,6 @@
"user.settings.general.close": "Fechar", "user.settings.general.close": "Fechar",
"user.settings.general.confirmEmail": "Confirmar o email", "user.settings.general.confirmEmail": "Confirmar o email",
"user.settings.general.email": "E-mail", "user.settings.general.email": "E-mail",
"user.settings.general.emailCantUpdate": "Login ocorreu através do GitLab. Email não pode ser atualizado.",
"user.settings.general.emailHelp1": "Email é usado para login, notificações, e redefinição de senha. Requer verificação de email se alterado.", "user.settings.general.emailHelp1": "Email é usado para login, notificações, e redefinição de senha. Requer verificação de email se alterado.",
"user.settings.general.emailHelp2": "Email foi desativado pelo seu administrador de sistema. Nenhuma notificação por email será enviada até isto ser habilitado.", "user.settings.general.emailHelp2": "Email foi desativado pelo seu administrador de sistema. Nenhuma notificação por email será enviada até isto ser habilitado.",
"user.settings.general.emailHelp3": "Email é usado para login, notificações e redefinição de senha.", "user.settings.general.emailHelp3": "Email é usado para login, notificações e redefinição de senha.",
@@ -1257,7 +1256,7 @@
"user.settings.general.imageTooLarge": "Não é possível fazer upload da imagem de perfil. O arquivo é muito grande.", "user.settings.general.imageTooLarge": "Não é possível fazer upload da imagem de perfil. O arquivo é muito grande.",
"user.settings.general.imageUpdated": "Imagem última atualização {date}", "user.settings.general.imageUpdated": "Imagem última atualização {date}",
"user.settings.general.lastName": "Último Nome", "user.settings.general.lastName": "Último Nome",
"user.settings.general.loginGitlab": "Login feito através do GitLab", "user.settings.general.loginGitlab": "Login feito através do GitLab ({email})",
"user.settings.general.newAddress": "Novo Endereço: {email}<br />Verifique seu email para checar o endereço acima.", "user.settings.general.newAddress": "Novo Endereço: {email}<br />Verifique seu email para checar o endereço acima.",
"user.settings.general.nickname": "Apelido", "user.settings.general.nickname": "Apelido",
"user.settings.general.nicknameExtra": "Use Apelidos para um nome você pode ser chamado assim, isso é diferente de seu primeiro nome e nome de usuário. Este é mais frequentemente usado quando duas ou mais pessoas têm nomes semelhantes de usuário.", "user.settings.general.nicknameExtra": "Use Apelidos para um nome você pode ser chamado assim, isso é diferente de seu primeiro nome e nome de usuário. Este é mais frequentemente usado quando duas ou mais pessoas têm nomes semelhantes de usuário.",