Commit 1ff3de5d authored by Joram Wilander's avatar Joram Wilander Committed by GitHub

Merge release-3.10 into master (#6654)

* PLT-6787 Fixed being able to send a post before files finished uploading (#6617)

* Fix quick switcher for channels/users not stored locally (#6610)

* Fix button text on confirm mention modal (#6609)

* fix post delete permission of channel admin (#6608)

* open comment thread for the most recent reply-able message (#6605)

* Use mutex flag with yarn to prevent concurrent builds interfering (#6619)

* Use mutex flag with yarn to prevent concurrent builds interfering

* Remove yarn mutex file with clean

* Minor bug fixes (#6615)

* PLT-6774 - Fixing color for offline icon

* PLT-6784 - Fixing status icon

* Fixing icon margin

* Updating caret position

* PLT-6070 Have ChannelMentionProvider stop searching after a term returns no results (#6620)

* Fixing JS error (#6623)

* Minor bug fixes (#6622)

* PLT-6808 - Updating channel switcher on mobile

* PLT-6743 - Updating scrollbar styling

* Login instead of failing if user exists in OAuth sign-up flow (#6627)

* PLT-6802 Disable team switcher (#6626)

* Disable team switcher

* Fix ESLint errors

* PLT-6807 Ensured select teams page can scroll on iOS (#6630)

* Do not redirect from account switch pages on 401 (#6631)

* Fixing loadtest command and renaming to /test (#6624)

* PLT-6820 Update mattermost-redux dependency (#6632)

* translations PR 20170612 (#6629)

* Bump HTTP client timeout to 30 seconds (#6633)

* For team unreads return empty array instead of null (#6636)

* PLT-6831 Fix status modal localization IDs (#6637)

* Fix status modal localization IDs

* Update test snapshot
parent d8351c44
......@@ -5,7 +5,7 @@ BUILD_SERVER_DIR = ..
check-style: .yarninstall
@echo Checking for style guide compliance
yarn run check
yarn run check --mutex file:/tmp/.yarn-mutex
test: .yarninstall
cd $(BUILD_SERVER_DIR) && $(MAKE) internal-test-web-client
......@@ -13,7 +13,7 @@ test: .yarninstall
.yarninstall: package.json
@echo Getting dependencies using yarn
yarn install --pure-lockfile
yarn install --pure-lockfile --mutex file:/tmp/.yarn-mutex
touch $@
......@@ -22,7 +22,7 @@ build: .yarninstall
rm -rf dist
yarn run build
yarn run build --mutex file:/tmp/.yarn-mutex
run: .yarninstall
@echo Running mattermost Webapp for development
......@@ -49,8 +49,9 @@ endif
clean:
@echo Cleaning Webapp
yarn cache clean --mutex file:/tmp/.yarn-mutex
rm -rf dist
rm -rf node_modules
rm -f .yarninstall
yarn cache clean
rm -f /tmp/.yarn-mutex
......@@ -58,7 +58,7 @@ class WebClientClass extends Client {
return;
}
if (err.status === HTTP_UNAUTHORIZED && res.req.url !== this.getUsersRoute() + '/login') {
if (err.status === HTTP_UNAUTHORIZED && res.req.url !== this.getUsersRoute() + '/login' && !res.req.url.startsWith(this.getUsersRoute() + '/claim')) {
GlobalActions.emitUserLoggedOutEvent('/login');
}
......
......@@ -21,16 +21,18 @@ export default function CommentIcon(props) {
iconStyle = iconStyle + ' ' + props.searchStyle;
}
let commentIconId = props.channelId + props.idPrefix;
let selectorId = props.idPrefix;
if (props.idCount > -1) {
commentIconId += props.idCount;
selectorId += props.idCount;
}
const id = Utils.createSafeId(props.idPrefix + '_' + props.id);
return (
<a
id={Utils.createSafeId(commentIconId)}
id={id}
href='#'
className={iconStyle}
className={iconStyle + ' ' + selectorId}
onClick={props.handleCommentClick}
>
<span
......@@ -48,12 +50,12 @@ CommentIcon.propTypes = {
handleCommentClick: PropTypes.func.isRequired,
searchStyle: PropTypes.string,
commentCount: PropTypes.number,
channelId: PropTypes.string
id: PropTypes.string
};
CommentIcon.defaultProps = {
idCount: -1,
searchStyle: '',
commentCount: 0,
channelId: ''
};
\ No newline at end of file
id: ''
};
......@@ -142,11 +142,7 @@ export default class CreateComment extends React.Component {
handleSubmit(e) {
e.preventDefault();
if (this.state.uploadsInProgress.length > 0) {
return;
}
if (this.state.submitting) {
if (this.state.uploadsInProgress.length > 0 || this.state.submitting) {
return;
}
......
......@@ -115,6 +115,10 @@ export default class CreatePost extends React.Component {
e.preventDefault();
}
if (this.state.uploadsInProgress.length > 0 || this.state.submitting) {
return;
}
const post = {};
post.file_ids = [];
post.message = this.state.message;
......@@ -493,7 +497,9 @@ export default class CreatePost extends React.Component {
return;
}
const lastPostEl = document.getElementById(this.state.channelId + 'commentIcon0');
const latestNonEphemeralPost = PostStore.getLatestNonEphemeralPost(this.state.channelId);
const latestNonEphemeralPostId = latestNonEphemeralPost == null ? '' : latestNonEphemeralPost.id;
const lastPostEl = document.getElementById(`commentIcon_${this.state.channelId}_${latestNonEphemeralPostId}`);
if (!e.ctrlKey && !e.metaKey && !e.altKey && !e.shiftKey && e.keyCode === KeyCodes.UP && this.state.message === '') {
e.preventDefault();
......@@ -761,7 +767,7 @@ export default class CreatePost extends React.Component {
<ConfirmModal
title={notifyAllTitle}
message={notifyAllMessage}
confirmButton={notifyAllConfirm}
confirmButtonText={notifyAllConfirm}
show={this.state.showConfirmModal}
onConfirm={this.handleNotifyAllConfirmation}
onCancel={this.handleNotifyModalCancel}
......
......@@ -45,8 +45,6 @@ import {Link} from 'react-router/es6';
import PropTypes from 'prop-types';
import React from 'react';
import store from 'stores/redux_store.jsx';
import {getMyTeams} from 'mattermost-redux/selectors/entities/teams';
export default class Navbar extends React.Component {
constructor(props) {
......@@ -220,14 +218,9 @@ export default class Navbar extends React.Component {
}
handleQuickSwitchKeyPress(e) {
if (Utils.cmdOrCtrlPressed(e, true) && !e.shiftKey && e.keyCode === Constants.KeyCodes.K) {
e.preventDefault();
if (e.altKey) {
if (getMyTeams(store.getState()).length <= 1) {
return;
}
this.toggleQuickSwitchModal('team');
} else {
if (Utils.cmdOrCtrlPressed(e) && !e.shiftKey && e.keyCode === Constants.KeyCodes.K) {
if (!e.altKey) {
e.preventDefault();
this.toggleQuickSwitchModal('channel');
}
}
......
......@@ -94,7 +94,7 @@ export default class PostInfo extends React.Component {
idCount={idCount}
handleCommentClick={this.props.handleCommentClick}
commentCount={this.props.commentCount}
channelId={ChannelStore.getCurrentId()}
id={ChannelStore.getCurrentId() + '_' + post.id}
/>
);
......
......@@ -2,14 +2,13 @@
// See License.txt for license information.
import {connect} from 'react-redux';
import {getMyTeams} from 'mattermost-redux/selectors/entities/teams';
import QuickSwitchModal from './quick_switch_modal.jsx';
function mapStateToProps(state, ownProps) {
return {
...ownProps,
showTeamSwitcher: getMyTeams(state).length > 1
showTeamSwitcher: false
};
}
......
......@@ -22,7 +22,6 @@ import store from 'stores/redux_store.jsx';
const getState = store.getState;
import {getChannel} from 'mattermost-redux/selectors/entities/channels';
import {getUserByUsername} from 'mattermost-redux/selectors/entities/users';
const CHANNEL_MODE = 'channel';
const TEAM_MODE = 'team';
......@@ -141,24 +140,22 @@ export default class QuickSwitchModal extends React.PureComponent {
if (this.state.mode === CHANNEL_MODE) {
const selectedChannel = selected.channel;
if (selectedChannel.type === Constants.DM_CHANNEL) {
const user = getUserByUsername(getState(), selectedChannel.name);
if (user) {
openDirectChannelToUser(
user.id,
(ch) => {
channel = ch;
this.switchToChannel(channel);
},
() => {
channel = null;
this.switchToChannel(channel);
}
);
}
} else {
openDirectChannelToUser(
selectedChannel.id,
(ch) => {
channel = ch;
this.switchToChannel(channel);
},
() => {
channel = null;
this.switchToChannel(channel);
}
);
} else if (selectedChannel.type === Constants.GM_CHANNEL) {
channel = getChannel(getState(), selectedChannel.id);
this.switchToChannel(channel);
} else {
this.switchToChannel(selectedChannel);
}
} else {
browserHistory.push('/' + selected.name);
......@@ -287,7 +284,7 @@ export default class QuickSwitchModal extends React.PureComponent {
help = (
<FormattedMessage
id='quick_switch_modal.help_no_team'
defaultMessage='Start typing then use ↑↓ to browse, ↵ to select, and ESC to dismiss.'
defaultMessage='Type to find a channel. Use ↑↓ to browse, ↵ to select, ESC to dismiss.'
/>
);
}
......
......@@ -86,7 +86,7 @@ export default class ResetStatusModal extends React.PureComponent {
const userStatus = toTitleCase(this.state.currentUserStatus.status || '');
const manualStatusTitle = (
<FormattedMessage
id='modal.manual_status.title'
id='modal.manaul_status.title'
defaultMessage='Your status is set to "{status}"'
values={{
status: userStatus
......@@ -96,21 +96,21 @@ export default class ResetStatusModal extends React.PureComponent {
const manualStatusMessage = (
<FormattedMessage
id='modal.manual_status.message'
id='modal.manaul_status.message'
defaultMessage='Would you like to switch your status to "Online"?'
/>
);
const manualStatusButton = (
<FormattedMessage
id='modal.manual_status.button'
id='modal.manaul_status.button'
defaultMessage='Yes, set my status to "Online"'
/>
);
const manualStatusCancel = (
<FormattedMessage
id='modal.manual_status.cancel'
id='modal.manaul_status.cancel'
defaultMessage='No, keep it as "{status}"'
values={{
status: userStatus
......@@ -120,7 +120,7 @@ export default class ResetStatusModal extends React.PureComponent {
const manualStatusCheckbox = (
<FormattedMessage
id='modal.manual_status.ask'
id='modal.manaul_status.ask'
defaultMessage='Do not ask me again'
/>
);
......
......@@ -54,6 +54,7 @@ export default class ChannelMentionProvider extends Provider {
constructor() {
super();
this.lastTermWithNoResults = '';
this.lastCompletedWord = '';
}
......@@ -65,6 +66,11 @@ export default class ChannelMentionProvider extends Provider {
return false;
}
if (this.lastTermWithNoResults && pretext.startsWith(this.lastTermWithNoResults)) {
// Just give up since we know it won't return any results
return false;
}
if (this.lastCompletedWord && captured[0].startsWith(this.lastCompletedWord)) {
// It appears we're still matching a channel handle that we already completed
return false;
......@@ -79,12 +85,14 @@ export default class ChannelMentionProvider extends Provider {
autocompleteChannels(
prefix,
(data) => {
(channels) => {
if (this.shouldCancelDispatch(prefix)) {
return;
}
const channels = data;
if (channels.length === 0) {
this.lastTermWithNoResults = pretext;
}
// Wrap channels in an outer object to avoid overwriting the 'type' property.
const wrappedChannels = [];
......
......@@ -109,7 +109,7 @@ export default class SwitchChannelProvider extends Provider {
// Dispatch suggestions for local data
const channels = getChannelsInCurrentTeam(getState()).concat(getGroupChannels(getState()));
const users = Object.assign([], searchProfiles(getState(), channelPrefix, true), true);
const users = Object.assign([], searchProfiles(getState(), channelPrefix, true));
this.formatChannelsAndDispatch(channelPrefix, suggestionId, channels, users, true);
// Fetch data from the server and dispatch
......@@ -141,7 +141,7 @@ export default class SwitchChannelProvider extends Provider {
return;
}
const users = Object.assign([], searchProfiles(getState(), channelPrefix, true), usersFromServer);
const users = Object.assign([], searchProfiles(getState(), channelPrefix, true), usersFromServer.users);
const channels = getChannelsInCurrentTeam(getState()).concat(getGroupChannels(getState())).concat(channelsFromServer);
this.formatChannelsAndDispatch(channelPrefix, suggestionId, channels, users);
}
......
This diff is collapsed.
......@@ -1170,7 +1170,7 @@
"channel_switch_modal.dm": "(Direct Message)",
"channel_switch_modal.failed_to_open": "Failed to open channel.",
"quick_switch_modal.help": "Start typing then use TAB to toggle channels/teams, ↑↓ to browse, ↵ to select, and ESC to dismiss.",
"quick_switch_modal.help_no_team": "Start typing then use ↑↓ to browse, ↵ to select, and ESC to dismiss.",
"quick_switch_modal.help_no_team": "Type to find a channel. Use ↑↓ to browse, ↵ to select, ESC to dismiss.",
"quick_switch_modal.channels": "Channels",
"quick_switch_modal.teams": "Teams",
"quick_switch_modal.teamsShortcut.mac": "- ⌘⌥K",
......@@ -1692,6 +1692,7 @@
"mobile.account_notifications.threads_mentions": "Mentions in threads",
"mobile.account_notifications.threads_start": "Threads that I start",
"mobile.account_notifications.threads_start_participate": "Threads that I start or participate in",
"mobile.channel_drawer.search": "Jump to a conversation",
"mobile.channel_info.alertMessageDeleteChannel": "Are you sure you want to delete the {term} {name}?",
"mobile.channel_info.alertMessageLeaveChannel": "Are you sure you want to leave the {term} {name}?",
"mobile.channel_info.alertNo": "No",
......@@ -1708,6 +1709,7 @@
"mobile.channel_list.closeGM": "Close Group Message",
"mobile.channel_list.dm": "Direct Message",
"mobile.channel_list.gm": "Group Message",
"mobile.channel_list.not_member": "NOT A MEMBER",
"mobile.channel_list.open": "Open {term}",
"mobile.channel_list.openDM": "Open Direct Message",
"mobile.channel_list.openGM": "Open Group Message",
......@@ -1724,11 +1726,12 @@
"mobile.create_channel.private": "New Private Channel",
"mobile.create_channel.public": "New Public Channel",
"mobile.custom_list.no_results": "No Results",
"mobile.drawer.teamsTitle": "Teams",
"mobile.edit_post.title": "Editing Message",
"mobile.file_upload.camera": "Take Photo or Video",
"mobile.file_upload.library": "Photo Library",
"mobile.file_upload.more": "More",
"mobile.file_upload.video": "Video Libary",
"mobile.file_upload.video": "Video Library",
"mobile.help.title": "Help",
"mobile.intro_messages.DM": "This is the start of your direct message history with {teammate}. Direct messages and files shared here are not shown to people outside this area.",
"mobile.intro_messages.default_message": "This is the first channel teammates see when they sign up - use it for posting updates everyone needs to know.",
......@@ -1776,6 +1779,11 @@
"mobile.server_url.invalid_format": "URL must start with http:// or https://",
"mobile.session_expired": "Session Expired: Please log in to continue receiving notifications.",
"mobile.settings.team_selection": "Team Selection",
"modal.manaul_status.ask": "Do not ask me again",
"modal.manaul_status.button": "Yes, set my status to \"Online\"",
"modal.manaul_status.cancel": "No, keep it as \"{status}\"",
"modal.manaul_status.message": "Would you like to switch your status to \"Online\"?",
"modal.manaul_status.title": "Your status is set to \"{status}\"",
"more_channels.close": "Close",
"more_channels.create": "Create New Channel",
"more_channels.createClick": "Click 'Create New Channel' to make a new one",
......@@ -1789,11 +1797,6 @@
"more_direct_channels.new_convo_note": "This will start a new conversation. If you’re adding a lot of people, consider creating a private channel instead.",
"more_direct_channels.new_convo_note.full": "You’ve reached the maximum number of people for this conversation. Consider creating a private channel instead.",
"more_direct_channels.title": "Direct Messages",
"modal.manaul_status.title": "Your status is set to \"{status}\"",
"modal.manaul_status.message": "Would you like to switch your status to \"Online\"?",
"modal.manaul_status.button": "Yes, set my status to \"Online\"",
"modal.manaul_status.cancel": "No, keep it as \"{status}\"",
"modal.manaul_status.ask": "Do not ask me again",
"msg_typing.areTyping": "{users} and {last} are typing...",
"msg_typing.isTyping": "{user} is typing...",
"msg_typing.someone": "Someone",
......@@ -1886,6 +1889,12 @@
"posts_view.loadMore": "Load more messages",
"posts_view.newMsg": "New Messages",
"posts_view.newMsgBelow": "New {count, plural, one {message} other {messages}} below",
"quick_switch_modal.channels": "Channels",
"quick_switch_modal.channelsShortcut.mac": "- ⌘K",
"quick_switch_modal.channelsShortcut.windows": "- CTRL+K",
"quick_switch_modal.teams": "Teams",
"quick_switch_modal.teamsShortcut.mac": "- ⌘⌥K",
"quick_switch_modal.teamsShortcut.windows": "- CTRL+ALT+K",
"reaction.clickToAdd": "(click to add)",
"reaction.clickToRemove": "(click to remove)",
"reaction.othersReacted": "{otherUsers, number} {otherUsers, plural, one {user} other {users}}",
......@@ -2047,6 +2056,9 @@
"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.team_error": "Please enter a team name",
"status_dropdown.set_away": "Away",
"status_dropdown.set_offline": "Offline",
"status_dropdown.set_online": "Online",
"suggestion.loading": "Loading...",
"suggestion.mention.all": "CAUTION: This mentions everyone in channel",
"suggestion.mention.channel": "Notifies everyone in the channel",
......@@ -2459,8 +2471,5 @@
"webrtc.unmute_audio": "Unmute microphone",
"webrtc.unpause_video": "Turn on camera",
"webrtc.unsupported": "{username} client does not support video calls.",
"youtube_video.notFound": "Video not found",
"status_dropdown.set_online": "Online",
"status_dropdown.set_away": "Away",
"status_dropdown.set_offline": "Offline"
"youtube_video.notFound": "Video not found"
}
......@@ -746,7 +746,7 @@
"admin.service.sessionCacheDesc": "La cantidad de minutes que el cache de la sesión se guardará en memoria.",
"admin.service.sessionDaysEx": "Ej.: \"30\"",
"admin.service.siteURL": "URL del Sitio:",
"admin.service.siteURLDescription": "La dirección URL, incluyendo el número de puerto y protocolo, que los usuarios utilizan para acceder a Mattermost. Este ajuste es necesario.",
"admin.service.siteURLDescription": "La dirección URL que los usuarios utilizan para acceder a Mattermost. Puertos estándar, como el 80 y 443, pueden ser omitidos, pero los puertos no estándar son necesarios. Por ejemplo: http://mattermost.example.com:8065. Este ajuste es necesario.",
"admin.service.siteURLExample": "Ej.: \"https://mattermost.example.com:1234\"",
"admin.service.ssoSessionDays": "Duración de la sesión para SSO (días):",
"admin.service.ssoSessionDaysDesc": "El número de días desde la última vez que un usuario ingreso sus credenciales para que la sesión del usuario expire. Si el método de autenticación es SAML o GitLab, el usuario puede iniciar su sesión automáticamente en Mattermost si ya cuenta con una sesión activa en SAML o GitLab. Luego de cambiar esta configuración, la nueva duración de la sesión tendrá efecto luego de la próxima vez que el usuario ingrese sus credenciales.",
......@@ -1684,6 +1684,7 @@
"mobile.account_notifications.threads_mentions": "Menciones en hilos",
"mobile.account_notifications.threads_start": "Hilos que yo comience",
"mobile.account_notifications.threads_start_participate": "Hilos que yo comience o participe",
"mobile.channel_drawer.search": "Saltar a una conversación",
"mobile.channel_info.alertMessageDeleteChannel": "¿Seguro quieres abandonar el {term} {name}?",
"mobile.channel_info.alertMessageLeaveChannel": "¿Seguro quieres abandonar el {term} {name}?",
"mobile.channel_info.alertNo": "No",
......@@ -1700,6 +1701,7 @@
"mobile.channel_list.closeGM": "Cerrar Mensaje de Grupo",
"mobile.channel_list.dm": "Mensaje Directo",
"mobile.channel_list.gm": "Mensaje de Grupo",
"mobile.channel_list.not_member": "NO MIEMBRO DE",
"mobile.channel_list.open": "Abrir {term}",
"mobile.channel_list.openDM": "Abrir Mensaje Directo",
"mobile.channel_list.openGM": "Abrir Mensaje de Grupo",
......@@ -1716,6 +1718,7 @@
"mobile.create_channel.private": "Nuevo Canal Privado",
"mobile.create_channel.public": "Nuevo Canal Público",
"mobile.custom_list.no_results": "Sin resultados",
"mobile.drawer.teamsTitle": "Equipos",
"mobile.edit_post.title": "Editando Mensaje",
"mobile.file_upload.camera": "Sacar Foto o Vídeo",
"mobile.file_upload.library": "Librería de Fotos",
......@@ -1768,6 +1771,11 @@
"mobile.server_url.invalid_format": "URL debe comenzar con http:// o https://",
"mobile.session_expired": "Sesión Caducada: Por favor, inicia sesión para seguir recibiendo notificaciones.",
"mobile.settings.team_selection": "Seleccionar Equipo",
"modal.manaul_status.ask": "No preguntarme de nuevo",
"modal.manaul_status.button": "Sí, asigna mi estatus como \"En línea\"",
"modal.manaul_status.cancel": "No, mantenerme como \"{status}\"",
"modal.manaul_status.message": "¿Quiere cambiar tu estado a \"En línea\"?",
"modal.manaul_status.title": "Tu estado es \"{status}\"",
"more_channels.close": "Cerrar",
"more_channels.create": "Crear Nuevo Canal",
"more_channels.createClick": "Haz clic en 'Crear Nuevo Canal' para crear uno nuevo",
......@@ -1874,13 +1882,13 @@
"posts_view.newMsg": "Nuevos Mensajes",
"posts_view.newMsgBelow": "{count, plural, one {Nuevo mensaje} other {Nuevos mensajes}} ▼",
"quick_switch_modal.channels": "Canales",
"quick_switch_modal.channelsShortcut.mac": "(CMD+K)",
"quick_switch_modal.channelsShortcut.windows": "(CTRL+K)",
"quick_switch_modal.help": "Usa la tecla TAB para alternar entre los equipos/canales, ↑↓ para navegar, ↵ para confirmar, ESC para descartar",
"quick_switch_modal.help_no_team": "Escribe el nombre de un canal. Utiliza ↑↓ para navegar, ↵ para confirmar, ESC para descartar",
"quick_switch_modal.channelsShortcut.mac": "- ⌘K",
"quick_switch_modal.channelsShortcut.windows": "- CTRL+K",
"quick_switch_modal.help": "Comienza a escribir, a continuación, usa la tecla TAB para cambiar de canales/equipos, ↑↓ para navegar, ↵ para seleccionar, y ESC para descartar.",
"quick_switch_modal.help_no_team": "Comienza a escribir a continuación, utiliza ↑↓ para navegar, ↵ para seleccionar, y ESC para descartar.",
"quick_switch_modal.teams": "Equipos",
"quick_switch_modal.teamsShortcut.mac": "(CMD+ALT+K)",
"quick_switch_modal.teamsShortcut.windows": "(CTRL+ALT+K)",
"quick_switch_modal.teamsShortcut.mac": "- ⌘⌥K",
"quick_switch_modal.teamsShortcut.windows": "- CTRL+ALT+K",
"reaction.clickToAdd": "(clic para agregar)",
"reaction.clickToRemove": "(clic para quitar)",
"reaction.othersReacted": "{otherUsers, number} {otherUsers, plural, one {usuario} other {usuarios}}",
......@@ -1971,8 +1979,6 @@
"sidebar.otherMembers": "Fuera de este equipo",
"sidebar.pg": "Canales Privados",
"sidebar.removeList": "Remover de la lista",
"sidebar.switch_channels": "Cambiar Canales (CTRL + K)",
"sidebar.switch_channels.mac": "Cambiar Canales (CMD + K)",
"sidebar.tutorialScreen1": "<h4>Canales</h4><p><strong>Canales</strong> organizan las conversaciones en diferentes tópicos. Son abiertos para cualquier persona de tu equipo. Para enviar comunicaciones privadas con una sola persona utiliza <strong>Mensajes Directos</strong> o con multiples personas utilizando <strong>Canales Privados</strong>.</p>",
"sidebar.tutorialScreen2": "<h4>Los canal \"{townsquare}\" y \"{offtopic}\"</h4><p>Estos son dos canales para comenzar:</p><p><strong>{townsquare}</strong> es el lugar para tener comunicación con todo el equipo. Todos los integrantes de tu equipo son miembros de este canal.</p><p><strong>{offtopic}</strong> es un lugar para diversión y humor fuera de los canales relacionados con el trabajo. Tu y tu equipo pueden decidir que otros canales crear.</p>",
"sidebar.tutorialScreen3": "<h4>Creando y Uniéndose a Canales</h4><p>Haz clic en <strong>\"Más...\"</strong> para crear un nuevo canal o unirte a uno existente.</p><p>También puedes crear un nuevo canal al hacer clic en el símbolo de <strong>\"+\"</strong> que se encuentra al lado del encabezado de canales públicos o privados.</p>",
......@@ -2044,6 +2050,9 @@
"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",
"status_dropdown.set_away": "Ausente",
"status_dropdown.set_offline": "Desconectado",
"status_dropdown.set_online": "En línea",
"suggestion.loading": "Cargando...",
"suggestion.mention.all": "PRECAUCIÓN: Esto menciona a todos los usuarios en el canal",
"suggestion.mention.channel": "Notifica a todas las personas en el canal",
......
This diff is collapsed.
This diff is collapsed.
......@@ -746,7 +746,7 @@
"admin.service.sessionCacheDesc": "The number of minutes to cache a session in memory.",
"admin.service.sessionDaysEx": "예시 \"30\"",
"admin.service.siteURL": "사이트 URL:",
"admin.service.siteURLDescription": "The URL, including port number and protocol, that users will use to access Mattermost. This setting is required.",
"admin.service.siteURLDescription": "The URL that users will use to access Mattermost. Standard ports, such as 80 and 443, can be omitted, but non-standard ports are required. For example: http://mattermost.example.com:8065. This setting is required.",
"admin.service.siteURLExample": "예시 \"https://mattermost.example.com:1234\"",
"admin.service.ssoSessionDays": "Session length for mobile apps (days):",
"admin.service.ssoSessionDaysDesc": "The number of days from the last time a user entered their credentials to the expiry of the user's session. If the authentication method is SAML or GitLab, the user may automatically be logged back in to Mattermost if they are already logged in to SAML or GitLab. After changing this setting, the setting will take effect after the next time the user enters their credentials.",
......@@ -1684,6 +1684,7 @@
"mobile.account_notifications.threads_mentions": "Mentions in threads",
"mobile.account_notifications.threads_start": "Threads that I start",
"mobile.account_notifications.threads_start_participate": "Threads that I start or participate in",
"mobile.channel_drawer.search": "Jump to a conversation",
"mobile.channel_info.alertMessageDeleteChannel": "정말 {term}을 삭제하시겠습니까?",
"mobile.channel_info.alertMessageLeaveChannel": "정말 {term}을 삭제하시겠습니까?",
"mobile.channel_info.alertNo": "아니요",
......@@ -1700,6 +1701,7 @@
"mobile.channel_list.closeGM": "Close Group Message",
"mobile.channel_list.dm": "개인 메시지",
"mobile.channel_list.gm": "Group Message",
"mobile.channel_list.not_member": "NOT A MEMBER",
"mobile.channel_list.open": "Open {term}",
"mobile.channel_list.openDM": "Open Direct Message",
"mobile.channel_list.openGM": "Open Group Message",
......@@ -1716,11 +1718,12 @@
"mobile.create_channel.private": "채널 떠나기",
"mobile.create_channel.public": "공개 채널",
"mobile.custom_list.no_results": "No Results",
"mobile.drawer.teamsTitle": "서비스 약관",
"mobile.edit_post.title": "Editing Message",
"mobile.file_upload.camera": "Take Photo or Video",
"mobile.file_upload.library": "Photo Library",
"mobile.file_upload.more": "더 보기",
"mobile.file_upload.video": "Video Libary",
"mobile.file_upload.video": "Video Library",
"mobile.help.title": "도움말",
"mobile.intro_messages.DM": "{teammate}와 개인 메시지의 시작입니다.<br />개인 메시지나 여기서 공유된 파일들은 외부에서 보여지지 않습니다.",
"mobile.intro_messages.default_message": "This is the first channel teammates see when they sign up - use it for posting updates everyone needs to know.",
......@@ -1768,6 +1771,11 @@
"mobile.server_url.invalid_format": "URL 주소는 http:// 또는 https:// 로 시작되어야 합니다",
"mobile.session_expired": "Session Expired: Please log in to continue receiving notifications.",
"mobile.settings.team_selection": "팀 선택",
"modal.manaul_status.ask": "Do not ask me again",
"modal.manaul_status.button": "Yes, set my status to \"Online\"",
"modal.manaul_status.cancel": "No, keep it as \"{status}\"",
"modal.manaul_status.message": "Would you like to switch your status to \"Online\"?",
"modal.manaul_status.title": "Your status is set to \"{status}\"",
"more_channels.close": "닫기",
"more_channels.create": "새로 만들기",
"more_channels.createClick": "'새로 만들기'를 클릭하여 새로운 채널을 만드세요",
......@@ -1874,13 +1882,13 @@
"posts_view.newMsg": "새로운 메시지",
"posts_view.newMsgBelow": "New {count, plural, one {message} other {messages}} below",
"quick_switch_modal.channels": "채널",
"quick_switch_modal.channelsShortcut.mac": "(CMD+K)",
"quick_switch_modal.channelsShortcut.windows": "(CTRL+K)",
"quick_switch_modal.help": "Use TAB to toggle between teams/channels, ↑↓ to browse, ↵ to confirm, ESC to dismiss",
"quick_switch_modal.help_no_team": "채널 이름을 입력하세요. ↑↓ 방향키와 TAB키를 이용하여 선택하세요, ↵ 엔터키를 누르면 확인, ESC키를 누르면 취소됩니다.",
"quick_switch_modal.channelsShortcut.mac": "- ⌘K",
"quick_switch_modal.channelsShortcut.windows": "- CTRL+K",
"quick_switch_modal.help": "Start typing then use TAB to toggle channels/teams, ↑↓ to browse, ↵ to select, and ESC to dismiss.",
"quick_switch_modal.help_no_team": "Start typing then use ↑↓ to browse, ↵ to select, and ESC to dismiss.",
"quick_switch_modal.teams": "서비스 약관",
"quick_switch_modal.teamsShortcut.mac": "(CMD+ALT+K)",
"quick_switch_modal.teamsShortcut.windows": "(CTRL+ALT+K)",
"quick_switch_modal.teamsShortcut.mac": "- ⌘⌥K",
"quick_switch_modal.teamsShortcut.windows": "- CTRL+ALT+K",
"reaction.clickToAdd": "(click to add)",
"reaction.clickToRemove": "(click to remove)",
"reaction.othersReacted": "{otherUsers, number} {otherUsers, plural, one {user} other {users}}",
......@@ -1971,8 +1979,6 @@
"sidebar.otherMembers": "팀 외부",
"sidebar.pg": "채널 떠나기",
"sidebar.removeList": "목록에서 제거",
"sidebar.switch_channels": "Switch Channels (CTRL + K)",
"sidebar.switch_channels.mac": "Switch Channels (CMD + K)",
"sidebar.tutorialScreen1": "<h4>채널</h4><p><strong>채널</strong>을 통해 주제별로 대화를 구성합니다. 팀의 모든 일원에게 공개되어 있습니다. 공개하고 싶지 않은 메시지는 <strong>개인 메시지</strong>나 <strong>비공개 그룹</strong>으로 전달할 수 있습니다. </p>",
"sidebar.tutorialScreen2": "<h4>\"{townsquare}\"\"{offtopic}\" 채널</h4><p>두 채널과 함께 시작합니다:</p><p><strong>{townsquare}</strong>(은)는 팀 전체의 소통을 위한 공간입니다. 모든 팀의 구성원들이 확인할 수 있습니다.</p><p><strong>{offtopic}</strong> 비업무 대화를 위한 공간입니다. 당신의 팀에 어떤 채널을 만들고 운영할지 결정할 수 있습니다.</p>",
"sidebar.tutorialScreen3": "<h4>채널 만들고 가입하기</h4><p><strong>\"더 보기...\"</strong>를 눌러 새로운 채널을 만들거나 기존 채널에 입장할 수 있습니다.</p><p>채널이나 비공개 그룹의 헤더 옆에 <strong>\"+\" 표시</strong> 를 눌러 새로운 채널이나 비공개 그룹을 만들 수 있습니다.</p>",
......@@ -2044,6 +2050,9 @@
"sso_signup.length_error": "이름이 반드시 3글자 이상 15글자 이하가 되어야 합니다.",
"sso_signup.teamName": "팀 이름을 입력하세요.",
"sso_signup.team_error": "팀 이름을 입력하세요.",
"status_dropdown.set_away": "Away",
"status_dropdown.set_offline": "오프라인",
"status_dropdown.set_online": "Online",
"suggestion.loading": "로딩 중...",
"suggestion.mention.all": "CAUTION: This mentions everyone in channel",
"suggestion.mention.channel": "모든 채널 회원들에게 알림을 보냅니다",
......
......@@ -746,7 +746,7 @@
"admin.service.sessionCacheDesc": "Het aantal minuten dat een sessie in het geheugen wordt gecached.",
"admin.service.sessionDaysEx": "Bijv.: \"30\"",
"admin.service.siteURL": "Site URL:",
"admin.service.siteURLDescription": "The URL, including port number and protocol, that users will use to access Mattermost. This setting is required.",
"admin.service.siteURLDescription": "The URL that users will use to access Mattermost. Standard ports, such as 80 and 443, can be omitted, but non-standard ports are required. For example: http://mattermost.example.com:8065. This setting is required.",
"admin.service.siteURLExample": "Bijv.: \"https://mattermost.example.com:1234\"",
"admin.service.ssoSessionDays": "Sessie duur voor SSO (dagen):",
"admin.service.ssoSessionDaysDesc": "Het aantal dagen dat de gebruiker voor het laatst zijn credentials heeft ingevoerd voordat gebruikers sessie verloopt. Als de authenticatie SAML of GitLab is, kan de gebruiker automatisch worden terug ingelogd in Mattermost omdat ze al waren ingelogd in SAML of GitLab. Nadat deze instelling is gewijzigd, zal de nieuwe sessie lengte plaatsvinden de volgende keer de gebruiker zijn credentials invult. ",
......@@ -1684,6 +1684,7 @@
"mobile.account_notifications.threads_mentions": "Mentions in threads",
"mobile.account_notifications.threads_start": "Threads that I start",
"mobile.account_notifications.threads_start_participate": "Threads that I start or participate in",
"mobile.channel_drawer.search": "Jump to a conversation",
"mobile.channel_info.alertMessageDeleteChannel": "Weet u zeker dat u deze {term} wilt verwijderen?",
"mobile.channel_info.alertMessageLeaveChannel": "Weet u zeker dat u deze {term} wilt verwijderen?",
"mobile.channel_info.alertNo": "Nee",
......@@ -1700,6 +1701,7 @@
"mobile.channel_list.closeGM": "Close Group Message",
"mobile.channel_list.dm": "Privé bericht",
"mobile.channel_list.gm": "Group Message",
"mobile.channel_list.not_member": "NOT A MEMBER",
"mobile.channel_list.open": "Open {term}",
"mobile.channel_list.openDM": "Open Direct Message",
"mobile.channel_list.openGM": "Open Group Message",
......@@ -1716,11 +1718,12 @@
"mobile.create_channel.private": "Verlaat kanaal",
"mobile.create_channel.public": "Publieke kanalen",
"mobile.custom_list.no_results": "No Results",
"mobile.drawer.teamsTitle": "Termen",
"mobile.edit_post.title": "Editing Message",
"mobile.file_upload.camera": "Take Photo or Video",
"mobile.file_upload.library": "Photo Library",
"mobile.file_upload.more": "Meer",
"mobile.file_upload.video": "Video Libary",
"mobile.file_upload.video": "Video Library",
"mobile.help.title": "Help",
"mobile.intro_messages.DM": "Dit is de start van uw privé berichten historiek met teamlid {teammate}.<br /> Privé berichten en bestanden die hier gedeeld worden zijn niet zichtbaar voor anderen.",
"mobile.intro_messages.default_message": "This is the first channel teammates see when they sign up - use it for posting updates everyone needs to know.",
......@@ -1768,6 +1771,11 @@
"mobile.server_url.invalid_format": "Moet beginnen met http:// of https://",
"mobile.session_expired": "Session Expired: Please log in to continue receiving notifications.",
"mobile.settings.team_selection": "Team Selectie",
"modal.manaul_status.ask": "Do not ask me again",
"modal.manaul_status.button": "Yes, set my status to \"Online\"",
"modal.manaul_status.cancel": "No, keep it as \"{status}\"",
"modal.manaul_status.message": "Would you like to switch your status to \"Online\"?",
"modal.manaul_status.title": "Your status is set to \"{status}\"",
"more_channels.close": "Afsluiten",
"more_channels.create": "Maak een nieuw kanaal",
"more_channels.createClick": "Klik 'Maak nieuw kanaal' om een nieuw kanaal te maken",
......@@ -1874,13 +1882,13 @@
"posts_view.newMsg": "Nieuwe berichten",
"posts_view.newMsgBelow": "New {count, plural, one {message} other {messages}} below",
"quick_switch_modal.channels": "Kanalen",
"quick_switch_modal.channelsShortcut.mac": "(CMD+K)",
"quick_switch_modal.channelsShortcut.windows": "(CTRL+K)",
"quick_switch_modal.help": "Use TAB to toggle between teams/channels, ↑↓ to browse, ↵ to confirm, ESC to dismiss",
"quick_switch_modal.help_no_team": "Tik kanaal naam. Gebruik ↑↓ voor bladeren, TAB om te selecteren, ↵ voor bevestiging, ESC voor annuleren",
"quick_switch_modal.channelsShortcut.mac": "- ⌘K",
"quick_switch_modal.channelsShortcut.windows": "- CTRL+K",
"quick_switch_modal.help": "Start typing then use TAB to toggle channels/teams, ↑↓ to browse, ↵ to select, and ESC to dismiss.",
"quick_switch_modal.help_no_team": "Start typing then use ↑↓ to browse, ↵ to select, and ESC to dismiss.",
"quick_switch_modal.teams": "Termen",
"quick_switch_modal.teamsShortcut.mac": "(CMD+ALT+K)",
"quick_switch_modal.teamsShortcut.windows": "(CTRL+ALT+K)",
"quick_switch_modal.teamsShortcut.mac": "- ⌘⌥K",
"quick_switch_modal.teamsShortcut.windows": "- CTRL+ALT+K",
"reaction.clickToAdd": "(click to add)",
"reaction.clickToRemove": "(click to remove)",
"reaction.othersReacted": "{otherUsers, number} {otherUsers, plural, one {user} other {users}}",
......@@ -1971,8 +1979,6 @@
"sidebar.otherMembers": "Buiten dit team",
"sidebar.pg": "Verlaat kanaal",
"sidebar.removeList": "Uit de lijst verwijderen",
"sidebar.switch_channels": "Switch Channels (CTRL + K)",
"sidebar.switch_channels.mac": "Switch Channels (CMD + K)",
"sidebar.tutorialScreen1": "<h4>Kanalen</h4><p><strong>Kanalen</strong> organiseren conversaties in verschillende onderwerpen. Ze zijn open voor iedereen in je team. Om privéberichten te sturen, gebruik <strong>Directe Berichten</strong> voor een enkel persoon of <strong>Privé Groepen</strong> voor meerdere personen.</p>",
"sidebar.tutorialScreen2": "<h4>\"{townsquare}\" en \"{offtopic}\" kanalen</h4><p>Hier zijn 2 publieke kanalen om te starten:</p><p><strong>{townsquare}</strong> is een plaats voor team wijde communicatie. Iedereen in jouw team is lid van dit kanaal.</p><p><strong>{offtopic}</strong> is een plaats voor ontspanning en humor buiten werk gerelateerde zaken en kanalen. Jij en jouw team kunnen beslissen wel andere kanalen er gemaakt moeten worden.</p>",
"sidebar.tutorialScreen3": "<h4>Kanalen maken en lid worden</h4><p>Klik op <strong>\"Meer...\"</strong> om een nieuw kanaal te maken of lid te worden van een bestaand kanaal.</p><p>Je kan ook een nieuw kanaal of privégroep maken door op het <strong>\"+\"-teken</strong> naast het kanaal of de privégroep te drukken.</p>",
......@@ -2044,6 +2050,9 @@
"sso_signup.length_error": "De naam moet 3 of meer tekens lang zijn met een maximum van 15",
"sso_signup.teamName": "Voer de naam in van het nieuwe team",
"sso_signup.team_error": "Voer de naam in van het team",
"status_dropdown.set_away": "Away",
"status_dropdown.set_offline": "Offline",
"status_dropdown.set_online": "Online",
"suggestion.loading": "Laden...",
"suggestion.mention.all": "CAUTION: This mentions everyone in channel",
"suggestion.mention.channel": "Notificeer iedereen in het kanaal",
......
This diff is collapsed.
......@@ -319,19 +319,19 @@
"admin.general.localization.serverLocaleTitle": "Idioma Padrão do Servidor:",
"admin.general.log": "Carregando",
"admin.general.policy": "Política",
"admin.general.policy.allowBannerDismissalDesc": "When true, users can dismiss the banner until its next update. When false, the banner is permanently visible until it is turned off by the System Admin.",
"admin.general.policy.allowBannerDismissalTitle": "Allow Banner Dismissal:",
"admin.general.policy.allowBannerDismissalDesc": "Quando verdadeiro, os usuários podem dispensar o banner até sua próxima atualização. Quando falso, o banner é permanentemente visível até que seja desativado pelo Administrador do Sistema.",
"admin.general.policy.allowBannerDismissalTitle": "Permite Dispensar o Banner:",
"admin.general.policy.allowEditPostAlways": "A qualquer momento",
"admin.general.policy.allowEditPostDescription": "Definir a política sobre o período de tempo que os autores têm de editar suas mensagens após a publicação.",
"admin.general.policy.allowEditPostNever": "Nunca",