From 1ace4606af0d44f58822934e5401d6457d474f3e Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Thu, 9 Apr 2020 23:28:22 -0300 Subject: [PATCH 01/95] Bump version to 3.2.0-develop --- .docker/Dockerfile.rhel | 2 +- app/utils/rocketchat.info | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.docker/Dockerfile.rhel b/.docker/Dockerfile.rhel index e0084ee1a1b6..d31b51dace52 100644 --- a/.docker/Dockerfile.rhel +++ b/.docker/Dockerfile.rhel @@ -1,6 +1,6 @@ FROM registry.access.redhat.com/rhscl/nodejs-8-rhel7 -ENV RC_VERSION 3.1.0 +ENV RC_VERSION 3.2.0-develop MAINTAINER buildmaster@rocket.chat diff --git a/app/utils/rocketchat.info b/app/utils/rocketchat.info index 8d691dd7f54b..21f9e2ed028a 100644 --- a/app/utils/rocketchat.info +++ b/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "3.1.0" + "version": "3.2.0-develop" } diff --git a/package.json b/package.json index 390186fce3fa..cda18917ced2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Rocket.Chat", "description": "The Ultimate Open Source WebChat Platform", - "version": "3.1.0", + "version": "3.2.0-develop", "author": { "name": "Rocket.Chat", "url": "https://rocket.chat/" From 7a46c7d122bfc96977ac21b8ccddebb9d7bf630c Mon Sep 17 00:00:00 2001 From: Tasso Evangelista Date: Fri, 10 Apr 2020 15:52:10 -0300 Subject: [PATCH 02/95] [IMPROVE] Increase decoupling between React components and Blaze templates (#16642) --- .../client/views/Multiselect.html | 3 - .../client/views/Multiselect.js | 35 +- app/ui-message/client/blocks/Blocks.html | 3 - app/ui-message/client/blocks/Blocks.js | 48 -- .../client/blocks/ButtonElement.html | 3 - app/ui-message/client/blocks/MessageBlock.js | 196 ++------ app/ui-message/client/blocks/ModalBlock.html | 3 - app/ui-message/client/blocks/ModalBlock.js | 441 +++++++++++++----- app/ui-message/client/blocks/TextBlock.html | 12 - app/ui-message/client/blocks/TextBlock.js | 5 - app/ui-message/client/blocks/index.js | 9 +- app/ui-message/client/blocks/styles.css | 18 - app/ui-sidenav/client/SortList.js | 2 + app/ui-sidenav/client/sidebarHeader.js | 6 +- app/ui-utils/client/lib/callMethod.js | 2 +- app/ui/client/index.js | 5 +- app/ui/client/views/app/RoomForeword.html | 3 - app/ui/client/views/app/RoomForeword.js | 46 +- .../views/app/components/Directory/index.js | 2 + .../components/admin/info/InformationRoute.js | 2 + client/components/admin/settings/GroupPage.js | 10 +- .../admin/settings/NotAuthorizedPage.js | 4 +- client/components/admin/settings/Section.js | 15 +- .../admin/settings/SettingsRoute.js | 9 +- .../inputs/MultiSelectSettingInput.js | 2 + .../settings/inputs/StringSettingInput.js | 8 +- .../components/pageNotFound/PageNotFound.js | 2 + .../setupWizard/SetupWizardRoute.js | 2 + client/createTemplateForComponent.js | 66 --- client/providers/MeteorProvider.js | 2 + client/reactAdapters.js | 183 ++++++++ client/routes.js | 89 ++-- .../components/EngagementDashboardRoute.js | 3 +- ee/app/engagement-dashboard/client/routes.js | 15 +- 34 files changed, 651 insertions(+), 603 deletions(-) delete mode 100644 app/channel-settings/client/views/Multiselect.html delete mode 100644 app/ui-message/client/blocks/Blocks.html delete mode 100644 app/ui-message/client/blocks/Blocks.js delete mode 100644 app/ui-message/client/blocks/ButtonElement.html delete mode 100644 app/ui-message/client/blocks/ModalBlock.html delete mode 100644 app/ui-message/client/blocks/TextBlock.html delete mode 100644 app/ui-message/client/blocks/TextBlock.js delete mode 100644 app/ui-message/client/blocks/styles.css delete mode 100644 app/ui/client/views/app/RoomForeword.html delete mode 100644 client/createTemplateForComponent.js create mode 100644 client/reactAdapters.js diff --git a/app/channel-settings/client/views/Multiselect.html b/app/channel-settings/client/views/Multiselect.html deleted file mode 100644 index 15e2b1884545..000000000000 --- a/app/channel-settings/client/views/Multiselect.html +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/app/channel-settings/client/views/Multiselect.js b/app/channel-settings/client/views/Multiselect.js index 160901096f14..f9400fa1b776 100644 --- a/app/channel-settings/client/views/Multiselect.js +++ b/app/channel-settings/client/views/Multiselect.js @@ -1,23 +1,12 @@ -import './Multiselect.html'; -import { Template } from 'meteor/templating'; - -import { MultiSelectSettingInput } from '../../../../client/components/admin/settings/inputs/MultiSelectSettingInput'; - - -Template.Multiselect.onRendered(async function() { - const { MeteorProvider } = await import('../../../../client/providers/MeteorProvider'); - const React = await import('react'); - const ReactDOM = await import('react-dom'); - this.container = this.firstNode; - this.autorun(() => { - ReactDOM.render(React.createElement(MeteorProvider, { - children: React.createElement(MultiSelectSettingInput, Template.currentData()), - }), this.container); - }); -}); - - -Template.Multiselect.onDestroyed(async function() { - const ReactDOM = await import('react-dom'); - this.container && ReactDOM.unmountComponentAtNode(this.container); -}); +import { HTML } from 'meteor/htmljs'; + +import { createTemplateForComponent } from '../../../../client/reactAdapters'; + +createTemplateForComponent( + 'Multiselect', + () => import('../../../../client/components/admin/settings/inputs/MultiSelectSettingInput'), + { + // eslint-disable-next-line new-cap + renderContainerView: () => HTML.DIV({ class: 'rc-multiselect', style: 'display: flex;' }), + }, +); diff --git a/app/ui-message/client/blocks/Blocks.html b/app/ui-message/client/blocks/Blocks.html deleted file mode 100644 index 0d3495e14c53..000000000000 --- a/app/ui-message/client/blocks/Blocks.html +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/app/ui-message/client/blocks/Blocks.js b/app/ui-message/client/blocks/Blocks.js deleted file mode 100644 index 9adf2cc61833..000000000000 --- a/app/ui-message/client/blocks/Blocks.js +++ /dev/null @@ -1,48 +0,0 @@ -import { UIKitIncomingInteractionContainerType } from '@rocket.chat/apps-engine/definition/uikit/UIKitIncomingInteractionContainer'; -import { ReactiveVar } from 'meteor/reactive-var'; -import { Template } from 'meteor/templating'; - -import * as ActionManager from '../ActionManager'; -import './Blocks.html'; -import { messageBlockWithContext } from './MessageBlock'; - - -Template.Blocks.onRendered(async function() { - const React = await import('react'); - const ReactDOM = await import('react-dom'); - const state = new ReactiveVar(); - this.autorun(() => { - state.set(Template.currentData()); - }); - - ReactDOM.render( - React.createElement(messageBlockWithContext({ - action: (options) => { - const { actionId, value, blockId, mid = this.data.mid } = options; - ActionManager.triggerBlockAction({ - blockId, - actionId, - value, - mid, - rid: this.data.rid, - appId: this.data.blocks[0].appId, - container: { - type: UIKitIncomingInteractionContainerType.MESSAGE, - id: mid, - }, - }); - }, - // state: alert, - appId: this.data.appId, - rid: this.data.rid, - }), { data: () => state.get() }), - this.firstNode, - ); - const event = new Event('rendered'); - this.firstNode.dispatchEvent(event); -}); - -Template.Blocks.onDestroyed(async function() { - const ReactDOM = await import('react-dom'); - this.firstNode && ReactDOM.unmountComponentAtNode(this.firstNode); -}); diff --git a/app/ui-message/client/blocks/ButtonElement.html b/app/ui-message/client/blocks/ButtonElement.html deleted file mode 100644 index 5711982a2e6e..000000000000 --- a/app/ui-message/client/blocks/ButtonElement.html +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/app/ui-message/client/blocks/MessageBlock.js b/app/ui-message/client/blocks/MessageBlock.js index 7830bafbb09e..3bd9a8739ff3 100644 --- a/app/ui-message/client/blocks/MessageBlock.js +++ b/app/ui-message/client/blocks/MessageBlock.js @@ -1,17 +1,11 @@ -import React, { useRef, useEffect, useCallback, useMemo } from 'react'; -import { UiKitMessage as uiKitMessage, kitContext, UiKitModal as uiKitModal, messageParser, modalParser, UiKitComponent } from '@rocket.chat/fuselage-ui-kit'; -import { uiKitText } from '@rocket.chat/ui-kit'; -import { Modal, AnimatedVisibility, ButtonGroup, Button, Box } from '@rocket.chat/fuselage'; -import { useUniqueId } from '@rocket.chat/fuselage-hooks'; +import { UIKitIncomingInteractionContainerType } from '@rocket.chat/apps-engine/definition/uikit/UIKitIncomingInteractionContainer'; +import { UiKitMessage, UiKitComponent, kitContext, messageParser } from '@rocket.chat/fuselage-ui-kit'; +import React, { useRef, useEffect } from 'react'; import { renderMessageBody } from '../../../ui-utils/client'; -import { getURL } from '../../../utils/lib/getURL'; -import { useReactiveValue } from '../../../../client/hooks/useReactiveValue'; - -const focusableElementsString = 'a[href]:not([tabindex="-1"]), area[href]:not([tabindex="-1"]), input:not([disabled]):not([tabindex="-1"]), select:not([disabled]):not([tabindex="-1"]), textarea:not([disabled]):not([tabindex="-1"]), button:not([disabled]):not([tabindex="-1"]), iframe, object, embed, [tabindex]:not([tabindex="-1"]), [contenteditable]'; - -const focusableElementsStringInvalid = 'a[href]:not([tabindex="-1"]):invalid, area[href]:not([tabindex="-1"]):invalid, input:not([disabled]):not([tabindex="-1"]):invalid, select:not([disabled]):not([tabindex="-1"]):invalid, textarea:not([disabled]):not([tabindex="-1"]):invalid, button:not([disabled]):not([tabindex="-1"]):invalid, iframe:invalid, object:invalid, embed:invalid, [tabindex]:not([tabindex="-1"]):invalid, [contenteditable]:invalid'; +import * as ActionManager from '../ActionManager'; +// TODO: move this to fuselage-ui-kit itself messageParser.text = ({ text, type } = {}) => { if (type !== 'mrkdwn') { return text; @@ -20,165 +14,37 @@ messageParser.text = ({ text, type } = {}) => { return ; }; -modalParser.text = messageParser.text; - -const contextDefault = { - action: console.log, - state: (data) => { - console.log('state', data); - }, -}; -export const messageBlockWithContext = (context) => (props) => { - const data = useReactiveValue(props.data); - return ( - - {uiKitMessage(data.blocks)} - - ); -}; - -const textParser = uiKitText(new class { - plain_text({ text }) { - return text; - } - - text({ text }) { - return text; - } -}()); +export function MessageBlock({ mid: _mid, rid, blocks, appId }) { + const context = { + action: ({ actionId, value, blockId, mid = _mid }) => { + ActionManager.triggerBlockAction({ + blockId, + actionId, + value, + mid, + rid, + appId: blocks[0].appId, + container: { + type: UIKitIncomingInteractionContainerType.MESSAGE, + id: mid, + }, + }); + }, + appId, + rid, + }; -// https://www.w3.org/TR/wai-aria-practices/examples/dialog-modal/dialog.html - -export const modalBlockWithContext = ({ - onSubmit, - onClose, - onCancel, - ...context -}) => (props) => { - const id = `modal_id_${ useUniqueId() }`; - - const { view, ...data } = useReactiveValue(props.data); - const values = useReactiveValue(props.values); const ref = useRef(); - - // Auto focus - useEffect(() => { - if (!ref.current) { - return; - } - - if (data.errors && Object.keys(data.errors).length) { - const element = ref.current.querySelector(focusableElementsStringInvalid); - element && element.focus(); - } else { - const element = ref.current.querySelector(focusableElementsString); - element && element.focus(); - } - }, [ref.current, data.errors]); - // save focus to restore after close - const previousFocus = useMemo(() => document.activeElement, []); - // restore the focus after the component unmount - useEffect(() => () => previousFocus && previousFocus.focus(), []); - // Handle Tab, Shift + Tab, Enter and Escape - const handleKeyDown = useCallback((event) => { - if (event.keyCode === 13) { // ENTER - return onSubmit(event); - } - - if (event.keyCode === 27) { // ESC - event.stopPropagation(); - event.preventDefault(); - onClose(); - return false; - } - - if (event.keyCode === 9) { // TAB - const elements = Array.from(ref.current.querySelectorAll(focusableElementsString)); - const [first] = elements; - const last = elements.pop(); - - if (!ref.current.contains(document.activeElement)) { - return first.focus(); - } - - if (event.shiftKey) { - if (!first || first === document.activeElement) { - last.focus(); - event.stopPropagation(); - event.preventDefault(); - } - return; - } - - if (!last || last === document.activeElement) { - first.focus(); - event.stopPropagation(); - event.preventDefault(); - } - } - }, [onSubmit]); - // Clean the events useEffect(() => { - const element = document.querySelector('.rc-modal-wrapper'); - const container = element.querySelector('.rcx-modal__content'); - const close = (e) => { - if (e.target !== element) { - return; - } - e.preventDefault(); - e.stopPropagation(); - onClose(); - return false; - }; - - const ignoreIfnotContains = (e) => { - if (!container.contains(e.target)) { - return; - } - return handleKeyDown(e); - }; - - document.addEventListener('keydown', ignoreIfnotContains); - element.addEventListener('click', close); - return () => { - document.removeEventListener('keydown', ignoreIfnotContains); - element.removeEventListener('click', close); - }; - }, handleKeyDown); + ref.current.dispatchEvent(new Event('rendered')); + }, []); return ( - - - - - - {textParser([view.title])} - - - - - - - - - - { view.close && } - { view.submit && } - - - - + +
+ ); -}; +} -export const MessageBlock = ({ blocks }, context = contextDefault) => ( - - {uiKitMessage(blocks)} - -); +export default MessageBlock; diff --git a/app/ui-message/client/blocks/ModalBlock.html b/app/ui-message/client/blocks/ModalBlock.html deleted file mode 100644 index 15f1f6f715f3..000000000000 --- a/app/ui-message/client/blocks/ModalBlock.html +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/app/ui-message/client/blocks/ModalBlock.js b/app/ui-message/client/blocks/ModalBlock.js index bb6a1e48deac..cec19b7c74d1 100644 --- a/app/ui-message/client/blocks/ModalBlock.js +++ b/app/ui-message/client/blocks/ModalBlock.js @@ -1,142 +1,349 @@ import { UIKitIncomingInteractionContainerType } from '@rocket.chat/apps-engine/definition/uikit/UIKitIncomingInteractionContainer'; -import { ReactiveDict } from 'meteor/reactive-dict'; -import { ReactiveVar } from 'meteor/reactive-var'; -import { Template } from 'meteor/templating'; +import { Modal, AnimatedVisibility, ButtonGroup, Button, Box } from '@rocket.chat/fuselage'; +import { useMutableCallback, useUniqueId } from '@rocket.chat/fuselage-hooks'; +import { kitContext, UiKitComponent, UiKitModal, modalParser } from '@rocket.chat/fuselage-ui-kit'; +import { uiKitText } from '@rocket.chat/ui-kit'; +import React, { useCallback, useEffect, useMemo, useReducer, useRef, useState } from 'react'; +import { renderMessageBody } from '../../../ui-utils/client'; +import { getURL } from '../../../utils/lib/getURL'; import * as ActionManager from '../ActionManager'; -import { modalBlockWithContext } from './MessageBlock'; -import './ModalBlock.html'; - -const prevent = (e) => { - if (e) { - (e.nativeEvent || e).stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); +// TODO: move this to fuselage-ui-kit itself +modalParser.text = ({ text, type } = {}) => { + if (type !== 'mrkdwn') { + return text; } -}; -Template.ModalBlock.onRendered(async function() { - const React = await import('react'); - const ReactDOM = await import('react-dom'); - const state = new ReactiveVar(); + return ; +}; - const { viewId, appId } = this.data; +const textParser = uiKitText({ + plain_text: ({ text }) => text, + text: ({ text }) => text, +}); - this.autorun(() => { - state.set(Template.currentData()); - }); +const focusableElementsString = ` + a[href]:not([tabindex="-1"]), + area[href]:not([tabindex="-1"]), + input:not([disabled]):not([tabindex="-1"]), + select:not([disabled]):not([tabindex="-1"]), + textarea:not([disabled]):not([tabindex="-1"]), + button:not([disabled]):not([tabindex="-1"]), + iframe, + object, + embed, + [tabindex]:not([tabindex="-1"]), + [contenteditable]`; - const handleUpdate = ({ type, ...data }) => { - if (type === 'errors') { - return state.set({ ...state.get(), errors: data.errors }); - } - return state.set(data); - }; +const focusableElementsStringInvalid = ` + a[href]:not([tabindex="-1"]):invalid, + area[href]:not([tabindex="-1"]):invalid, + input:not([disabled]):not([tabindex="-1"]):invalid, + select:not([disabled]):not([tabindex="-1"]):invalid, + textarea:not([disabled]):not([tabindex="-1"]):invalid, + button:not([disabled]):not([tabindex="-1"]):invalid, + iframe:invalid, + object:invalid, + embed:invalid, + [tabindex]:not([tabindex="-1"]):invalid, + [contenteditable]:invalid`; - this.cancel = () => { - ActionManager.off(viewId, handleUpdate); - }; +export function ModalBlock({ + view, + errors, + appId, + onSubmit, + onClose, + onCancel, +}) { + const id = `modal_id_${ useUniqueId() }`; + const ref = useRef(); - this.node = this.find('.js-modal-block').parentElement; - ActionManager.on(viewId, handleUpdate); + // Auto focus + useEffect(() => { + if (!ref.current) { + return; + } - const filterInputFields = ({ element, elements = [] }) => { - if (element && element.initialValue) { - return true; + if (errors && Object.keys(errors).length) { + const element = ref.current.querySelector(focusableElementsStringInvalid); + element && element.focus(); + } else { + const element = ref.current.querySelector(focusableElementsString); + element && element.focus(); } - if (elements.length && elements.map((element) => ({ element })).filter(filterInputFields).length) { - return true; + }, [ref.current, errors]); + // save focus to restore after close + const previousFocus = useMemo(() => document.activeElement, []); + // restore the focus after the component unmount + useEffect(() => () => previousFocus && previousFocus.focus(), []); + // Handle Tab, Shift + Tab, Enter and Escape + const handleKeyDown = useCallback((event) => { + if (event.keyCode === 13) { // ENTER + return onSubmit(event); } - }; - const mapElementToState = ({ element, blockId, elements = [] }) => { - if (elements.length) { - return elements.map((element) => ({ element, blockId })).filter(filterInputFields).map(mapElementToState); + if (event.keyCode === 27) { // ESC + event.stopPropagation(); + event.preventDefault(); + onClose(); + return false; } - return [element.actionId, { value: element.initialValue, blockId }]; - }; - this.state = new ReactiveDict(this.data.view.blocks.filter(filterInputFields).map(mapElementToState).reduce((obj, el) => { - if (Array.isArray(el[0])) { - return { ...obj, ...Object.fromEntries(el) }; + if (event.keyCode === 9) { // TAB + const elements = Array.from(ref.current.querySelectorAll(focusableElementsString)); + const [first] = elements; + const last = elements.pop(); + + if (!ref.current.contains(document.activeElement)) { + return first.focus(); + } + + if (event.shiftKey) { + if (!first || first === document.activeElement) { + last.focus(); + event.stopPropagation(); + event.preventDefault(); + } + return; + } + + if (!last || last === document.activeElement) { + first.focus(); + event.stopPropagation(); + event.preventDefault(); + } } - return { ...obj, [el[0]]: el[1] }; - }, {})); + }, [onSubmit]); + // Clean the events + useEffect(() => { + const element = document.querySelector('.rc-modal-wrapper'); + const container = element.querySelector('.rcx-modal__content'); + const close = (e) => { + if (e.target !== element) { + return; + } + e.preventDefault(); + e.stopPropagation(); + onClose(); + return false; + }; + + const ignoreIfnotContains = (e) => { + if (!container.contains(e.target)) { + return; + } + return handleKeyDown(e); + }; + + document.addEventListener('keydown', ignoreIfnotContains); + element.addEventListener('click', close); + return () => { + document.removeEventListener('keydown', ignoreIfnotContains); + element.removeEventListener('click', close); + }; + }, handleKeyDown); + + return ( + + + + + {textParser([view.title])} + + + + + + + + + + {view.close && } + {view.submit && } + + + + + ); +} + +const useActionManagerState = (initialState) => { + const [state, setState] = useState(initialState); + + const { viewId } = state; + + useEffect(() => { + const handleUpdate = ({ type, ...data }) => { + if (type === 'errors') { + const { errors } = data; + setState({ ...state, errors }); + return; + } + + setState(data); + }; + + ActionManager.on(viewId, handleUpdate); + + return () => { + ActionManager.off(viewId, handleUpdate); + }; + }, [viewId]); + + return state; +}; + +const useValues = (view) => { + const reducer = useMutableCallback((values, { actionId, payload }) => ({ + ...values, + [actionId]: payload, + })); + + const initializer = useMutableCallback(() => { + const filterInputFields = ({ element, elements = [] }) => { + if (element && element.initialValue) { + return true; + } + + if (elements.length && elements.map((element) => ({ element })).filter(filterInputFields).length) { + return true; + } + }; + + const mapElementToState = ({ element, blockId, elements = [] }) => { + if (elements.length) { + return elements.map((element) => ({ element, blockId })).filter(filterInputFields).map(mapElementToState); + } + return [element.actionId, { value: element.initialValue, blockId }]; + }; - const groupStateByBlockIdMap = (obj, [key, { blockId, value }]) => { + return view.blocks + .filter(filterInputFields) + .map(mapElementToState) + .reduce((obj, el) => { + if (Array.isArray(el[0])) { + return { ...obj, ...Object.fromEntries(el) }; + } + + const [key, value] = el; + return { ...obj, [key]: value }; + }, {}); + }); + + return useReducer(reducer, null, initializer); +}; + +function ConnectedModalBlock(props) { + const state = useActionManagerState(props); + + const { + appId, + viewId, + mid: _mid, + errors, + view, + } = state; + + const [values, updateValues] = useValues(view); + + const groupStateByBlockId = (obj) => Object.entries(obj).reduce((obj, [key, { blockId, value }]) => { obj[blockId] = obj[blockId] || {}; obj[blockId][key] = value; return obj; + }, {}); + + const prevent = (e) => { + if (e) { + (e.nativeEvent || e).stopImmediatePropagation(); + e.stopPropagation(); + e.preventDefault(); + } }; - const groupStateByBlockId = (obj) => Object.entries(obj).reduce(groupStateByBlockIdMap, {}); - ReactDOM.render( - React.createElement( - modalBlockWithContext({ - onCancel: (e) => { - prevent(e); - return ActionManager.triggerCancel({ - appId, - viewId, - view: { - ...state.get().view, - id: viewId, - state: groupStateByBlockId(this.state.all()), - }, - }); - }, - onClose: (e) => { - prevent(e); - return ActionManager.triggerCancel({ - appId, - viewId, - view: { - ...state.get().view, - id: viewId, - state: groupStateByBlockId(this.state.all()), - }, - isCleared: true, - }); - }, - onSubmit: (e) => { - prevent(e); - ActionManager.triggerSubmitView({ - viewId, - appId, - payload: { - view: { - ...state.get().view, - id: viewId, - state: groupStateByBlockId(this.state.all()), - }, - }, - }); - }, - action: ({ actionId, appId, value, blockId, mid = this.data.mid }) => ActionManager.triggerBlockAction({ - container: { - type: UIKitIncomingInteractionContainerType.VIEW, - id: viewId, - }, - actionId, - appId, - value, + + const context = { + action: ({ actionId, appId, value, blockId, mid = _mid }) => ActionManager.triggerBlockAction({ + container: { + type: UIKitIncomingInteractionContainerType.VIEW, + id: viewId, + }, + actionId, + appId, + value, + blockId, + mid, + }), + state: ({ actionId, value, /* ,appId, */ blockId = 'default' }) => { + updateValues({ + actionId, + payload: { blockId, - mid, - }), - state: ({ actionId, value, /* ,appId, */ blockId = 'default' }) => { - this.state.set(actionId, { - blockId, - value, - }); + value, }, - ...this.data, - }), - { data: () => state.get(), values: () => this.state.all() }, - ), - this.node, - ); -}); -Template.ModalBlock.onDestroyed(async function() { - const ReactDOM = await import('react-dom'); - this.node && ReactDOM.unmountComponentAtNode(this.node); -}); + }); + }, + ...state, + values, + }; + + const handleSubmit = useMutableCallback((e) => { + prevent(e); + ActionManager.triggerSubmitView({ + viewId, + appId, + payload: { + view: { + ...view, + id: viewId, + state: groupStateByBlockId(values), + }, + }, + }); + }); + + const handleCancel = useMutableCallback((e) => { + prevent(e); + return ActionManager.triggerCancel({ + appId, + viewId, + view: { + ...view, + id: viewId, + state: groupStateByBlockId(values), + }, + }); + }); + + const handleClose = useMutableCallback((e) => { + prevent(e); + return ActionManager.triggerCancel({ + appId, + viewId, + view: { + ...view, + id: viewId, + state: groupStateByBlockId(values), + }, + isCleared: true, + }); + }); + + return + + ; +} + +export default ConnectedModalBlock; diff --git a/app/ui-message/client/blocks/TextBlock.html b/app/ui-message/client/blocks/TextBlock.html deleted file mode 100644 index 9ede6447c0b5..000000000000 --- a/app/ui-message/client/blocks/TextBlock.html +++ /dev/null @@ -1,12 +0,0 @@ - - diff --git a/app/ui-message/client/blocks/TextBlock.js b/app/ui-message/client/blocks/TextBlock.js deleted file mode 100644 index e71c590301ee..000000000000 --- a/app/ui-message/client/blocks/TextBlock.js +++ /dev/null @@ -1,5 +0,0 @@ - - -// import { Template } from 'meteor/templating'; - -import './TextBlock.html'; diff --git a/app/ui-message/client/blocks/index.js b/app/ui-message/client/blocks/index.js index 2b64c4de523c..5e332705c1d4 100644 --- a/app/ui-message/client/blocks/index.js +++ b/app/ui-message/client/blocks/index.js @@ -1,5 +1,4 @@ -import './styles.css'; -import './Blocks.js'; -import './ModalBlock'; -import './TextBlock'; -import './ButtonElement.html'; +import { createTemplateForComponent } from '../../../../client/reactAdapters'; + +createTemplateForComponent('ModalBlock', () => import('./ModalBlock')); +createTemplateForComponent('Blocks', () => import('./MessageBlock')); diff --git a/app/ui-message/client/blocks/styles.css b/app/ui-message/client/blocks/styles.css deleted file mode 100644 index 2f990fc2f045..000000000000 --- a/app/ui-message/client/blocks/styles.css +++ /dev/null @@ -1,18 +0,0 @@ -.block-kit-debug.debug { - padding: 1rem; - - border: 1px solid; -} - -.block-kit-debug legend { - display: none; -} - -.block-kit-debug.debug legend { - display: initial; -} - -.rc-modal--uikit { - width: 680px; - max-width: 100%; -} diff --git a/app/ui-sidenav/client/SortList.js b/app/ui-sidenav/client/SortList.js index 75fbc3221115..b0add853e97a 100644 --- a/app/ui-sidenav/client/SortList.js +++ b/app/ui-sidenav/client/SortList.js @@ -129,3 +129,5 @@ function GroupingList() { ; } + +export default SortList; diff --git a/app/ui-sidenav/client/sidebarHeader.js b/app/ui-sidenav/client/sidebarHeader.js index 306872c0a456..b748f0367835 100644 --- a/app/ui-sidenav/client/sidebarHeader.js +++ b/app/ui-sidenav/client/sidebarHeader.js @@ -10,7 +10,7 @@ import { settings } from '../../settings'; import { hasAtLeastOnePermission } from '../../authorization'; import { userStatus } from '../../user-status'; import { hasPermission } from '../../authorization/client'; -import { createTemplateForComponent } from '../../../client/createTemplateForComponent'; +import { createTemplateForComponent } from '../../../client/reactAdapters'; const setStatus = (status, statusText) => { @@ -66,15 +66,13 @@ const toolbarButtons = (/* user */) => [{ action: async (e) => { const options = []; const config = { - template: 'SortList', + template: createTemplateForComponent('SortList', () => import('./SortList')), currentTarget: e.currentTarget, data: { options, }, offsetVertical: e.currentTarget.clientHeight + 10, }; - const { SortList } = await import('./SortList'); - await createTemplateForComponent(SortList); popover.open(config); }, }, diff --git a/app/ui-utils/client/lib/callMethod.js b/app/ui-utils/client/lib/callMethod.js index 390c1ea21bc8..c1b05108ad80 100644 --- a/app/ui-utils/client/lib/callMethod.js +++ b/app/ui-utils/client/lib/callMethod.js @@ -1,6 +1,6 @@ import { Meteor } from 'meteor/meteor'; -import { handleError } from '../../../utils'; +import { handleError } from '../../../utils/client/lib/handleError'; /** * Wraps a Meteor method into a Promise. diff --git a/app/ui/client/index.js b/app/ui/client/index.js index 4867309779f8..5d70fb1747b9 100644 --- a/app/ui/client/index.js +++ b/app/ui/client/index.js @@ -1,3 +1,5 @@ +import { createTemplateForComponent } from '../../../client/reactAdapters'; + import './lib/accounts'; import './lib/collections'; import './lib/customEventPolyfill'; @@ -43,7 +45,6 @@ import './views/app/invite'; import './views/app/videoCall/videoButtons'; import './views/app/videoCall/videoCall'; import './views/app/photoswipe'; -import './views/app/RoomForeword'; import './components/icon'; import './components/status'; import './components/table.html'; @@ -67,3 +68,5 @@ export { Login, animationSupport, animeBack, Button, preLoadImgs } from './lib/r export { AudioRecorder } from './lib/recorderjs/audioRecorder'; export { VideoRecorder } from './lib/recorderjs/videoRecorder'; export { chatMessages } from './views/app/room'; + +createTemplateForComponent('RoomForeword', () => import('./views/app/RoomForeword')); diff --git a/app/ui/client/views/app/RoomForeword.html b/app/ui/client/views/app/RoomForeword.html deleted file mode 100644 index 72b2b7734c0e..000000000000 --- a/app/ui/client/views/app/RoomForeword.html +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/app/ui/client/views/app/RoomForeword.js b/app/ui/client/views/app/RoomForeword.js index ef068e3b3219..e9aee84793f1 100644 --- a/app/ui/client/views/app/RoomForeword.js +++ b/app/ui/client/views/app/RoomForeword.js @@ -1,16 +1,17 @@ import React from 'react'; -import { Meteor } from 'meteor/meteor'; import { Avatar, Margins, Flex, Box, Tag } from '@rocket.chat/fuselage'; -import { Template } from 'meteor/templating'; -import './RoomForeword.html'; -import { Rooms, Users } from '../../../../models'; +import { Rooms } from '../../../../models'; import { useTranslation } from '../../../../../client/contexts/TranslationContext'; +import { useReactiveValue } from '../../../../../client/hooks/useReactiveValue'; +import { useUser } from '../../../../../client/contexts/UserContext'; - -const RoomForeword = ({ room, user }) => { +const RoomForeword = ({ _id: rid }) => { const t = useTranslation(); + const user = useUser(); + const room = useReactiveValue(() => Rooms.findOne({ _id: rid })); + if (room.t !== 'd') { return t('Start_of_conversation'); } @@ -39,7 +40,15 @@ const RoomForeword = ({ room, user }) => { - {users.map((username, index) => {username})} + {users.map((username, index) => + {username} + )} @@ -49,25 +58,4 @@ const RoomForeword = ({ room, user }) => { ; }; -Template.RoomForeword.onRendered(async function() { - const { MeteorProvider } = await import('../../../../../client/providers/MeteorProvider'); - const ReactDOM = await import('react-dom'); - this.container = this.firstNode; - this.autorun(() => { - const data = Template.currentData(); - const { _id: rid } = data; - - const user = Users.findOne(Meteor.userId(), { username: 1 }); - - const room = Rooms.findOne({ _id: rid }); - ReactDOM.render(React.createElement(MeteorProvider, { - children: React.createElement(RoomForeword, { ...data, room, user }), - }), this.container); - }); -}); - - -Template.RoomForeword.onDestroyed(async function() { - const ReactDOM = await import('react-dom'); - this.container && ReactDOM.unmountComponentAtNode(this.container); -}); +export default RoomForeword; diff --git a/app/ui/client/views/app/components/Directory/index.js b/app/ui/client/views/app/components/Directory/index.js index 5d56e61265a5..9788b7fb11e3 100644 --- a/app/ui/client/views/app/components/Directory/index.js +++ b/app/ui/client/views/app/components/Directory/index.js @@ -49,3 +49,5 @@ export function DirectoryPage() { DirectoryPage.displayName = 'DirectoryPage'; + +export default DirectoryPage; diff --git a/client/components/admin/info/InformationRoute.js b/client/components/admin/info/InformationRoute.js index 455b7c1fd826..b3c2d7f7097b 100644 --- a/client/components/admin/info/InformationRoute.js +++ b/client/components/admin/info/InformationRoute.js @@ -82,3 +82,5 @@ export function InformationRoute() { onClickDownloadInfo={handleClickDownloadInfo} />; } + +export default InformationRoute; diff --git a/client/components/admin/settings/GroupPage.js b/client/components/admin/settings/GroupPage.js index 75ff9f5213da..dbe85bdb5def 100644 --- a/client/components/admin/settings/GroupPage.js +++ b/client/components/admin/settings/GroupPage.js @@ -1,4 +1,4 @@ -import { Accordion, Box, Button, ButtonGroup, Paragraph, Skeleton } from '@rocket.chat/fuselage'; +import { Accordion, Box, Button, ButtonGroup, Skeleton } from '@rocket.chat/fuselage'; import React, { useMemo } from 'react'; import { useTranslation } from '../../../contexts/TranslationContext'; @@ -48,7 +48,7 @@ export function GroupPage({ children, headerButtons, save, cancel, _id, i18nLabe ({ margin: '0 auto', width: '100%', maxWidth: '590px' }), [])}> - {t.has(i18nDescription) && {t(i18nDescription)}} + {t.has(i18nDescription) && {t(i18nDescription)}} {children} @@ -74,7 +74,11 @@ export function GroupPageSkeleton() { ({ margin: '0 auto', width: '100%', maxWidth: '590px' }), [])}> - + + + + + diff --git a/client/components/admin/settings/NotAuthorizedPage.js b/client/components/admin/settings/NotAuthorizedPage.js index cf62068ed555..bfdc64581ff7 100644 --- a/client/components/admin/settings/NotAuthorizedPage.js +++ b/client/components/admin/settings/NotAuthorizedPage.js @@ -1,4 +1,4 @@ -import { Paragraph } from '@rocket.chat/fuselage'; +import { Box } from '@rocket.chat/fuselage'; import React from 'react'; import { useTranslation } from '../../../contexts/TranslationContext'; @@ -9,7 +9,7 @@ export function NotAuthorizedPage() { return - {t('You_are_not_authorized_to_view_this_page')} + {t('You_are_not_authorized_to_view_this_page')} ; } diff --git a/client/components/admin/settings/Section.js b/client/components/admin/settings/Section.js index 68a8ef5cc88a..9eb91677bfc6 100644 --- a/client/components/admin/settings/Section.js +++ b/client/components/admin/settings/Section.js @@ -1,4 +1,4 @@ -import { Accordion, Box, Button, FieldGroup, Paragraph, Skeleton } from '@rocket.chat/fuselage'; +import { Accordion, Box, Button, FieldGroup, Skeleton } from '@rocket.chat/fuselage'; import React from 'react'; import { useTranslation } from '../../../contexts/TranslationContext'; @@ -20,9 +20,7 @@ export function Section({ children, groupId, hasReset = true, help, sectionName, noncollapsible={solo || !section.name} title={section.name && t(section.name)} > - {help && - {help} - } + {help && {help}} {section.settings.map((settingId) => )} @@ -41,13 +39,10 @@ export function Section({ children, groupId, hasReset = true, help, sectionName, } export function SectionSkeleton() { - return } - > - + return }> + - + {Array.from({ length: 10 }).map((_, i) => )} diff --git a/client/components/admin/settings/SettingsRoute.js b/client/components/admin/settings/SettingsRoute.js index d53e3a1792ca..831d620abb9b 100644 --- a/client/components/admin/settings/SettingsRoute.js +++ b/client/components/admin/settings/SettingsRoute.js @@ -5,10 +5,9 @@ import { useAdminSideNav } from '../../../hooks/useAdminSideNav'; import { GroupSelector } from './GroupSelector'; import { NotAuthorizedPage } from './NotAuthorizedPage'; import { SettingsState } from './SettingsState'; +import { useRouteParameter } from '../../../contexts/RouterContext'; -export function SettingsRoute({ - group: groupId, -}) { +export function SettingsRoute() { useAdminSideNav(); const hasPermission = useAtLeastOnePermission([ @@ -17,6 +16,8 @@ export function SettingsRoute({ 'manage-selected-settings', ]); + const groupId = useRouteParameter('group'); + if (!hasPermission) { return ; } @@ -25,3 +26,5 @@ export function SettingsRoute({ ; } + +export default SettingsRoute; diff --git a/client/components/admin/settings/inputs/MultiSelectSettingInput.js b/client/components/admin/settings/inputs/MultiSelectSettingInput.js index 538b4a74c4c2..8c7e88738080 100644 --- a/client/components/admin/settings/inputs/MultiSelectSettingInput.js +++ b/client/components/admin/settings/inputs/MultiSelectSettingInput.js @@ -56,3 +56,5 @@ export function MultiSelectSettingInput({ ); } + +export default MultiSelectSettingInput; diff --git a/client/components/admin/settings/inputs/StringSettingInput.js b/client/components/admin/settings/inputs/StringSettingInput.js index 8c3ec25306df..e20a3c8d482d 100644 --- a/client/components/admin/settings/inputs/StringSettingInput.js +++ b/client/components/admin/settings/inputs/StringSettingInput.js @@ -1,4 +1,4 @@ -import { Box, Field, Flex, TextAreaInput, TextInput, Icon, Callout, Margins } from '@rocket.chat/fuselage'; +import { Box, Field, Flex, TextAreaInput, TextInput, Callout, Margins } from '@rocket.chat/fuselage'; import React from 'react'; import { ResetSettingButton } from '../ResetSettingButton'; @@ -24,8 +24,6 @@ export function StringSettingInput({ hasResetButton, onChangeValue, onResetButtonClick, - addon, - ...props }) { const handleChange = (event) => { onChangeValue(event.currentTarget.value); @@ -50,8 +48,6 @@ export function StringSettingInput({ readOnly={readonly} autoComplete={autocomplete === false ? 'off' : undefined} onChange={handleChange} - { ...addon && { addon: }} - { ...props } /> : }} - { ...props } /> } ; diff --git a/client/components/pageNotFound/PageNotFound.js b/client/components/pageNotFound/PageNotFound.js index bd7b2f948751..d3daa7b64415 100644 --- a/client/components/pageNotFound/PageNotFound.js +++ b/client/components/pageNotFound/PageNotFound.js @@ -51,3 +51,5 @@ export function PageNotFound() { ; } + +export default PageNotFound; diff --git a/client/components/setupWizard/SetupWizardRoute.js b/client/components/setupWizard/SetupWizardRoute.js index 273300195ef5..60958e5385d5 100644 --- a/client/components/setupWizard/SetupWizardRoute.js +++ b/client/components/setupWizard/SetupWizardRoute.js @@ -49,3 +49,5 @@ export function SetupWizardRoute() { return ; } + +export default SetupWizardRoute; diff --git a/client/createTemplateForComponent.js b/client/createTemplateForComponent.js deleted file mode 100644 index 423964471174..000000000000 --- a/client/createTemplateForComponent.js +++ /dev/null @@ -1,66 +0,0 @@ -import { Blaze } from 'meteor/blaze'; -import { HTML } from 'meteor/htmljs'; -import { FlowRouter } from 'meteor/kadira:flow-router'; -import { ReactiveVar } from 'meteor/reactive-var'; -import { Template } from 'meteor/templating'; - - -export const createTemplateForComponent = async ( - component, - props = {}, - // eslint-disable-next-line new-cap - renderContainerView = () => HTML.DIV(), - url, - -) => { - const name = component.displayName || component.name; - - if (!name) { - throw new Error('the component must have a name'); - } - - if (Template[name]) { - Template[name].props.set(props); - return name; - } - - Template[name] = new Blaze.Template(name, renderContainerView); - - Template[name].props = new ReactiveVar(props); - - const React = await import('react'); - const ReactDOM = await import('react-dom'); - const { MeteorProvider } = await import('./providers/MeteorProvider'); - - function TemplateComponent() { - return React.createElement(component, Template[name].props.get()); - } - - Template[name].onRendered(() => { - Template.instance().autorun((computation) => { - if (computation.firstRun) { - Template.instance().container = Template.instance().firstNode; - } - - ReactDOM.render( - React.createElement(MeteorProvider, { - children: React.createElement(TemplateComponent), - }), Template.instance().firstNode); - }); - - url && Template.instance().autorun(() => { - const routeName = FlowRouter.getRouteName(); - if (routeName !== url) { - ReactDOM.unmountComponentAtNode(Template.instance().container); - } - }); - }); - - Template[name].onDestroyed(() => { - if (Template.instance().container) { - ReactDOM.unmountComponentAtNode(Template.instance().container); - } - }); - - return name; -}; diff --git a/client/providers/MeteorProvider.js b/client/providers/MeteorProvider.js index 0471a1c427e3..2b4056bff0a6 100644 --- a/client/providers/MeteorProvider.js +++ b/client/providers/MeteorProvider.js @@ -34,3 +34,5 @@ export function MeteorProvider({ children }) { ; } + +export default MeteorProvider; diff --git a/client/reactAdapters.js b/client/reactAdapters.js new file mode 100644 index 000000000000..54703f2b95ca --- /dev/null +++ b/client/reactAdapters.js @@ -0,0 +1,183 @@ +import { Blaze } from 'meteor/blaze'; +import { HTML } from 'meteor/htmljs'; +import { BlazeLayout } from 'meteor/kadira:blaze-layout'; +import { FlowRouter } from 'meteor/kadira:flow-router'; +import { ReactiveVar } from 'meteor/reactive-var'; +import { Template } from 'meteor/templating'; +import { Tracker } from 'meteor/tracker'; + +let rootNode; +let invalidatePortals = () => {}; +const portalsMap = new Map(); + +const mountRoot = async () => { + rootNode = document.getElementById('react-root'); + + if (!rootNode) { + rootNode = document.createElement('div'); + rootNode.id = 'react-root'; + document.body.appendChild(rootNode); + } + + const [ + { Suspense, createElement, lazy, useState }, + { render }, + ] = await Promise.all([ + import('react'), + import('react-dom'), + ]); + + const LazyMeteorProvider = lazy(() => import('./providers/MeteorProvider')); + + function AppRoot() { + const [portals, setPortals] = useState(() => Tracker.nonreactive(() => Array.from(portalsMap.values()))); + invalidatePortals = () => { + setPortals(Array.from(portalsMap.values())); + }; + + return createElement(Suspense, { fallback: null }, + createElement(LazyMeteorProvider, {}, ...portals), + ); + } + + render(createElement(AppRoot), rootNode); +}; + +export const registerPortal = (key, portal) => { + if (!rootNode) { + mountRoot(); + } + + portalsMap.set(key, portal); + invalidatePortals(); +}; + +export const unregisterPortal = (key) => { + portalsMap.delete(key); + invalidatePortals(); +}; + +const createLazyElement = async (importFn, propsFn) => { + const { createElement, lazy, useEffect, useState } = await import('react'); + const LazyComponent = lazy(importFn); + + if (!propsFn) { + return createElement(LazyComponent); + } + + const WrappedComponent = () => { + const [props, setProps] = useState(() => Tracker.nonreactive(propsFn)); + + useEffect(() => { + const computation = Tracker.autorun(() => { + setProps(propsFn); + }); + + return () => { + computation.stop(); + }; + }, []); + + return createElement(LazyComponent, props); + }; + + return createElement(WrappedComponent); +}; + +const createLazyPortal = async (importFn, propsFn, node) => { + const { createPortal } = await import('react-dom'); + return createPortal(await createLazyElement(importFn, propsFn), node); +}; + +export const createTemplateForComponent = ( + name, + importFn, + { + renderContainerView = () => HTML.DIV(), // eslint-disable-line new-cap + } = {}, +) => { + if (Template[name]) { + return name; + } + + const template = new Blaze.Template(name, renderContainerView); + + template.onRendered(async function() { + const props = new ReactiveVar(this.data); + this.autorun(() => { + props.set(Template.currentData()); + }); + + const portal = await createLazyPortal(importFn, () => props.get(), this.firstNode); + + if (!this.firstNode) { + return; + } + + registerPortal(this, portal); + }); + + template.onDestroyed(function() { + unregisterPortal(this); + }); + + Template[name] = template; + + return name; +}; + +export const renderRouteComponent = (importFn, { + template, + region, + renderContainerView = () => HTML.DIV(), // eslint-disable-line new-cap +} = {}) => { + const routeName = FlowRouter.getRouteName(); + + Tracker.autorun(async (computation) => { + if (routeName !== FlowRouter.getRouteName()) { + unregisterPortal(routeName); + computation.stop(); + return; + } + + if (!computation.firstRun) { + return; + } + + if (!template || !region) { + BlazeLayout.reset(); + + const element = await createLazyElement(importFn); + + if (routeName !== FlowRouter.getRouteName()) { + return; + } + + registerPortal(routeName, element); + return; + } + + if (!Template[routeName]) { + const blazeTemplate = new Blaze.Template(routeName, renderContainerView); + + blazeTemplate.onRendered(async function() { + const props = new ReactiveVar(this.data); + this.autorun(() => { + props.set(Template.currentData()); + }); + + const portal = await createLazyPortal(importFn, () => props.get(), this.firstNode); + + if (routeName !== FlowRouter.getRouteName()) { + return; + } + + registerPortal(routeName, portal); + }); + + Template[routeName] = blazeTemplate; + } + + BlazeLayout.render(template, { [region]: routeName }); + }); +}; diff --git a/client/routes.js b/client/routes.js index d616b5deb29f..5e29798f30b4 100644 --- a/client/routes.js +++ b/client/routes.js @@ -1,9 +1,9 @@ import mem from 'mem'; import s from 'underscore.string'; +import { HTML } from 'meteor/htmljs'; import { Meteor } from 'meteor/meteor'; import { Accounts } from 'meteor/accounts-base'; import { Tracker } from 'meteor/tracker'; -import { HTML } from 'meteor/htmljs'; import { FlowRouter } from 'meteor/kadira:flow-router'; import { BlazeLayout } from 'meteor/kadira:blaze-layout'; import { Session } from 'meteor/session'; @@ -13,7 +13,7 @@ import { KonchatNotification } from '../app/ui'; import { ChatSubscription } from '../app/models'; import { roomTypes, handleError } from '../app/utils'; import { call } from '../app/ui-utils'; -import { createTemplateForComponent } from './createTemplateForComponent'; +import { renderRouteComponent } from './reactAdapters'; const getRoomById = mem((rid) => call('getRoomById', rid)); @@ -95,10 +95,8 @@ FlowRouter.route('/home', { FlowRouter.route('/directory/:tab?', { name: 'directory', - - async action() { - const { DirectoryPage } = await require('../app/ui/client/views/app/components/Directory'); - BlazeLayout.render('main', { center: await createTemplateForComponent(DirectoryPage, { }, () => HTML.DIV({ style }), 'directory')}); // eslint-disable-line + action: () => { + renderRouteComponent(() => import('../app/ui/client/views/app/components/Directory'), { template: 'main', region: 'center' }); }, triggersExit: [function() { $('.main-content').addClass('rc-old'); @@ -107,13 +105,10 @@ FlowRouter.route('/directory/:tab?', { FlowRouter.route('/account/:group?', { name: 'account', - - async action(params) { + action: (params) => { if (!params.group) { params.group = 'Profile'; } - const { Input } = await require('../client/components/admin/settings/inputs/StringSettingInput'); - console.log(await createTemplateForComponent(Input, { }, () => HTML.DIV({ style }))); // eslint-disable-line params.group = s.capitalize(params.group, true); BlazeLayout.render('main', { center: `account${ params.group }` }); }, @@ -124,8 +119,7 @@ FlowRouter.route('/account/:group?', { FlowRouter.route('/terms-of-service', { name: 'terms-of-service', - - action() { + action: () => { Session.set('cmsPage', 'Layout_Terms_of_Service'); BlazeLayout.render('cmsPage'); }, @@ -133,8 +127,7 @@ FlowRouter.route('/terms-of-service', { FlowRouter.route('/privacy-policy', { name: 'privacy-policy', - - action() { + action: () => { Session.set('cmsPage', 'Layout_Privacy_Policy'); BlazeLayout.render('cmsPage'); }, @@ -142,8 +135,7 @@ FlowRouter.route('/privacy-policy', { FlowRouter.route('/legal-notice', { name: 'legal-notice', - - action() { + action: () => { Session.set('cmsPage', 'Layout_Legal_Notice'); BlazeLayout.render('cmsPage'); }, @@ -151,72 +143,59 @@ FlowRouter.route('/legal-notice', { FlowRouter.route('/room-not-found/:type/:name', { name: 'room-not-found', - - action(params) { - Session.set('roomNotFound', { type: params.type, name: params.name }); + action: ({ type, name }) => { + Session.set('roomNotFound', { type, name }); BlazeLayout.render('main', { center: 'roomNotFound' }); }, }); FlowRouter.route('/register/:hash', { name: 'register-secret-url', - - action(/* params*/) { + action: () => { BlazeLayout.render('secretURL'); - - // if RocketChat.settings.get('Accounts_RegistrationForm') is 'Secret URL' - // Meteor.call 'checkRegistrationSecretURL', params.hash, (err, success) -> - // if success - // Session.set 'loginDefaultState', 'register' - // BlazeLayout.render 'main', {center: 'home'} - // KonchatNotification.getDesktopPermission() - // else - // BlazeLayout.render 'logoLayout', { render: 'invalidSecretURL' } - // else - // BlazeLayout.render 'logoLayout', { render: 'invalidSecretURL' } }, }); FlowRouter.route('/invite/:hash', { name: 'invite', - - action(/* params */) { + action: () => { BlazeLayout.render('invite'); }, }); FlowRouter.route('/setup-wizard/:step?', { name: 'setup-wizard', - action: async () => { - const { SetupWizardRoute } = await import('./components/setupWizard/SetupWizardRoute'); - BlazeLayout.render(await createTemplateForComponent(SetupWizardRoute)); + action: () => { + renderRouteComponent(() => import('./components/setupWizard/SetupWizardRoute')); }, }); -const style = 'overflow: hidden; flex: 1 1 auto; height: 1%;'; +FlowRouter.route('/admin/info', { + name: 'admin-info', + action: () => { + renderRouteComponent(() => import('./components/admin/info/InformationRoute'), { + template: 'main', + region: 'center', + // eslint-disable-next-line new-cap + renderContainerView: () => HTML.DIV({ style: 'overflow: hidden; flex: 1 1 auto; height: 1%;' }), + }); + }, +}); FlowRouter.route('/admin/:group?', { name: 'admin', - action: async ({ group = 'info' } = {}) => { - switch (group) { - case 'info': { - const { InformationRoute } = await import('./components/admin/info/InformationRoute'); - BlazeLayout.render('main', { center: await createTemplateForComponent(InformationRoute, { }, () => HTML.DIV({ style })) }); // eslint-disable-line - break; - } - - default: { - const { SettingsRoute } = await import('./components/admin/settings/SettingsRoute'); - BlazeLayout.render('main', { center: await createTemplateForComponent(SettingsRoute, { group }, () => HTML.DIV({ style })) }); // eslint-disable-line - // BlazeLayout.render('main', { center: 'admin' }); - } - } + action: () => { + renderRouteComponent(() => import('./components/admin/settings/SettingsRoute'), { + template: 'main', + region: 'center', + // eslint-disable-next-line new-cap + renderContainerView: () => HTML.DIV({ style: 'overflow: hidden; flex: 1 1 auto; height: 1%;' }), + }); }, }); FlowRouter.notFound = { - action: async () => { - const { PageNotFound } = await import('./components/pageNotFound/PageNotFound'); - BlazeLayout.render(await createTemplateForComponent(PageNotFound)); + action: () => { + renderRouteComponent(() => import('./components/pageNotFound/PageNotFound')); }, }; diff --git a/ee/app/engagement-dashboard/client/components/EngagementDashboardRoute.js b/ee/app/engagement-dashboard/client/components/EngagementDashboardRoute.js index 1761ddfdd81c..c9a85ce40f46 100644 --- a/ee/app/engagement-dashboard/client/components/EngagementDashboardRoute.js +++ b/ee/app/engagement-dashboard/client/components/EngagementDashboardRoute.js @@ -22,4 +22,5 @@ export function EngagementDashboardRoute() { onSelectTab={(tab) => goToEngagementDashboard({ tab })} />; } -EngagementDashboardRoute.displayName = 'EngagementDashboardRoute'; + +export default EngagementDashboardRoute; diff --git a/ee/app/engagement-dashboard/client/routes.js b/ee/app/engagement-dashboard/client/routes.js index f8735786bbaf..f99bd92afc6c 100644 --- a/ee/app/engagement-dashboard/client/routes.js +++ b/ee/app/engagement-dashboard/client/routes.js @@ -1,13 +1,9 @@ -import { HTML } from 'meteor/htmljs'; import { FlowRouter } from 'meteor/kadira:flow-router'; -import { BlazeLayout } from 'meteor/kadira:blaze-layout'; - import { hasAllPermission } from '../../../../app/authorization'; import { AdminBox } from '../../../../app/ui-utils'; +import { renderRouteComponent } from '../../../../client/reactAdapters'; import { hasLicense } from '../../license/client'; -import { createTemplateForComponent } from '../../../../client/createTemplateForComponent'; - FlowRouter.route('/admin/engagement-dashboard/:tab?', { name: 'engagement-dashboard', @@ -17,14 +13,7 @@ FlowRouter.route('/admin/engagement-dashboard/:tab?', { return; } - const { EngagementDashboardRoute } = await import('./components/EngagementDashboardRoute'); - - BlazeLayout.render('main', { center: await createTemplateForComponent(EngagementDashboardRoute, - {}, - // eslint-disable-next-line new-cap - () => HTML.DIV.call(null, { style: 'overflow: hidden; flex: 1 1 auto; height: 1%;' }), - 'engagement-dashboard'), - }); + renderRouteComponent(() => import('./components/EngagementDashboardRoute'), { template: 'main', region: 'center' }); }, }); From 5f9a14336f32f6175f7135176242d2686066d7c1 Mon Sep 17 00:00:00 2001 From: Tasso Evangelista Date: Fri, 10 Apr 2020 16:36:57 -0300 Subject: [PATCH 03/95] [IMPROVE] Administration Pages root rewritten (#17209) --- app/apps/client/orchestrator.js | 6 +-- app/apps/client/routes.js | 15 +++--- app/authorization/client/route.js | 8 +-- app/authorization/client/startup.js | 4 +- .../client/views/Multiselect.js | 2 +- app/chatpal-search/client/route.js | 4 +- app/cloud/client/index.js | 9 ++-- app/custom-sounds/client/admin/route.js | 5 +- app/custom-sounds/client/admin/startup.js | 4 +- app/emoji-custom/client/admin/route.js | 5 +- app/emoji-custom/client/admin/startup.js | 4 +- app/federation/client/admin/dashboard.js | 7 ++- app/importer/client/index.js | 12 ++--- app/integrations/client/route.js | 14 ++--- app/integrations/client/startup.js | 4 +- app/invites/client/admin/route.js | 5 +- app/invites/client/admin/startup.js | 4 +- app/logger/client/viewLogs.js | 9 ++-- app/mail-messages/client/router.js | 4 +- app/mail-messages/client/startup.js | 4 +- .../client/admin/route.js | 6 +-- .../client/admin/startup.js | 4 +- app/ui-admin/client/adminFlex.js | 5 +- .../client/components/AdministrationRouter.js | 16 ++++++ .../client/components/PageSkeleton.js | 30 +++++++++++ .../info/BuildEnvironmentSection.js | 2 +- .../info/BuildEnvironmentSection.stories.js | 2 +- .../client/components}/info/CommitSection.js | 2 +- .../components}/info/CommitSection.stories.js | 0 .../components}/info/DescriptionList.js | 0 .../info/DescriptionList.stories.js | 2 +- .../components}/info/InformationPage.js | 6 +-- .../info/InformationPage.stories.js | 2 +- .../components}/info/InformationRoute.js | 9 ++-- .../components}/info/InstancesSection.js | 2 +- .../info/InstancesSection.stories.js | 2 +- .../components}/info/RocketChatSection.js | 2 +- .../info/RocketChatSection.stories.js | 2 +- .../info/RuntimeEnvironmentSection.js | 2 +- .../info/RuntimeEnvironmentSection.stories.js | 0 .../client/components}/info/UsageSection.js | 2 +- .../components}/info/UsageSection.stories.js | 0 .../client/components}/info/formatters.js | 0 .../client/components}/settings/GroupPage.js | 4 +- .../components}/settings/GroupPage.stories.js | 0 .../components}/settings/GroupSelector.js | 0 .../settings/GroupSelector.stories.js | 0 .../components}/settings/NotAuthorizedPage.js | 4 +- .../settings/NotAuthorizedPage.stories.js | 0 .../settings/ResetSettingButton.js | 2 +- .../settings/ResetSettingButton.stories.js | 0 .../client/components}/settings/Section.js | 2 +- .../components}/settings/Section.stories.js | 0 .../client/components}/settings/Setting.js | 6 +-- .../components}/settings/Setting.stories.js | 0 .../components}/settings/SettingsRoute.js | 7 +-- .../components}/settings/SettingsState.js | 14 ++--- .../settings/groups/AssetsGroupPage.js | 6 +-- .../settings/groups/GenericGroupPage.js | 0 .../settings/groups/OAuthGroupPage.js | 10 ++-- .../settings/inputs/ActionSettingInput.js | 6 +-- .../inputs/ActionSettingInput.stories.js | 0 .../settings/inputs/AssetSettingInput.css | 0 .../settings/inputs/AssetSettingInput.js | 6 +-- .../inputs/AssetSettingInput.stories.js | 0 .../settings/inputs/BooleanSettingInput.js | 0 .../inputs/BooleanSettingInput.stories.js | 0 .../settings/inputs/CodeSettingInput.js | 4 +- .../inputs/CodeSettingInput.stories.js | 0 .../settings/inputs/ColorSettingInput.js | 2 +- .../inputs/ColorSettingInput.stories.js | 0 .../settings/inputs/FontSettingInput.js | 0 .../inputs/FontSettingInput.stories.js | 0 .../settings/inputs/GenericSettingInput.js | 0 .../inputs/GenericSettingInput.stories.js | 0 .../settings/inputs/IntSettingInput.js | 0 .../inputs/IntSettingInput.stories.js | 0 .../settings/inputs/LanguageSettingInput.js | 2 +- .../inputs/LanguageSettingInput.stories.js | 0 .../inputs/MultiSelectSettingInput.js | 2 +- .../inputs/MultiSelectSettingInput.stories.js | 0 .../settings/inputs/PasswordSettingInput.js | 0 .../inputs/PasswordSettingInput.stories.js | 0 .../inputs/RelativeUrlSettingInput.js | 2 +- .../inputs/RelativeUrlSettingInput.stories.js | 0 .../settings/inputs/RoomPickSettingInput.js | 0 .../settings/inputs/SelectSettingInput.js | 2 +- .../inputs/SelectSettingInput.stories.js | 0 .../settings/inputs/StringSettingInput.js | 0 .../inputs/StringSettingInput.stories.js | 0 .../ui-admin/client}/hooks/useAdminSideNav.js | 2 +- app/ui-admin/client/index.js | 4 +- app/ui-admin/client/routes.js | 53 +++++++++++++++++-- app/ui-admin/client/sidebarItems.js | 10 ++++ app/ui-utils/client/index.js | 1 - app/ui-utils/client/lib/AdminBox.js | 25 --------- app/user-status/client/admin/route.js | 7 +-- app/user-status/client/admin/startup.js | 4 +- client/components/basic/Page.js | 2 +- client/reactAdapters.js | 15 +++--- client/routes.js | 31 +++-------- .../components/EngagementDashboardRoute.js | 2 +- ee/app/engagement-dashboard/client/routes.js | 8 ++- package-lock.json | 10 ++-- 104 files changed, 266 insertions(+), 216 deletions(-) create mode 100644 app/ui-admin/client/components/AdministrationRouter.js create mode 100644 app/ui-admin/client/components/PageSkeleton.js rename {client/components/admin => app/ui-admin/client/components}/info/BuildEnvironmentSection.js (91%) rename {client/components/admin => app/ui-admin/client/components}/info/BuildEnvironmentSection.stories.js (89%) rename {client/components/admin => app/ui-admin/client/components}/info/CommitSection.js (91%) rename {client/components/admin => app/ui-admin/client/components}/info/CommitSection.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/info/DescriptionList.js (100%) rename {client/components/admin => app/ui-admin/client/components}/info/DescriptionList.stories.js (86%) rename {client/components/admin => app/ui-admin/client/components}/info/InformationPage.js (91%) rename {client/components/admin => app/ui-admin/client/components}/info/InformationPage.stories.js (98%) rename {client/components/admin => app/ui-admin/client/components}/info/InformationRoute.js (87%) rename {client/components/admin => app/ui-admin/client/components}/info/InstancesSection.js (95%) rename {client/components/admin => app/ui-admin/client/components}/info/InstancesSection.stories.js (92%) rename {client/components/admin => app/ui-admin/client/components}/info/RocketChatSection.js (95%) rename {client/components/admin => app/ui-admin/client/components}/info/RocketChatSection.stories.js (92%) rename {client/components/admin => app/ui-admin/client/components}/info/RuntimeEnvironmentSection.js (95%) rename {client/components/admin => app/ui-admin/client/components}/info/RuntimeEnvironmentSection.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/info/UsageSection.js (98%) rename {client/components/admin => app/ui-admin/client/components}/info/UsageSection.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/info/formatters.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/GroupPage.js (93%) rename {client/components/admin => app/ui-admin/client/components}/settings/GroupPage.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/GroupSelector.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/GroupSelector.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/NotAuthorizedPage.js (66%) rename {client/components/admin => app/ui-admin/client/components}/settings/NotAuthorizedPage.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/ResetSettingButton.js (79%) rename {client/components/admin => app/ui-admin/client/components}/settings/ResetSettingButton.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/Section.js (94%) rename {client/components/admin => app/ui-admin/client/components}/settings/Section.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/Setting.js (94%) rename {client/components/admin => app/ui-admin/client/components}/settings/Setting.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/SettingsRoute.js (70%) rename {client/components/admin => app/ui-admin/client/components}/settings/SettingsState.js (95%) rename {client/components/admin => app/ui-admin/client/components}/settings/groups/AssetsGroupPage.js (79%) rename {client/components/admin => app/ui-admin/client/components}/settings/groups/GenericGroupPage.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/groups/OAuthGroupPage.js (88%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/ActionSettingInput.js (77%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/ActionSettingInput.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/AssetSettingInput.css (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/AssetSettingInput.js (89%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/AssetSettingInput.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/BooleanSettingInput.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/BooleanSettingInput.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/CodeSettingInput.js (95%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/CodeSettingInput.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/ColorSettingInput.js (96%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/ColorSettingInput.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/FontSettingInput.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/FontSettingInput.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/GenericSettingInput.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/GenericSettingInput.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/IntSettingInput.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/IntSettingInput.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/LanguageSettingInput.js (92%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/LanguageSettingInput.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/MultiSelectSettingInput.js (94%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/MultiSelectSettingInput.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/PasswordSettingInput.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/PasswordSettingInput.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/RelativeUrlSettingInput.js (92%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/RelativeUrlSettingInput.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/RoomPickSettingInput.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/SelectSettingInput.js (93%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/SelectSettingInput.stories.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/StringSettingInput.js (100%) rename {client/components/admin => app/ui-admin/client/components}/settings/inputs/StringSettingInput.stories.js (100%) rename {client => app/ui-admin/client}/hooks/useAdminSideNav.js (71%) create mode 100644 app/ui-admin/client/sidebarItems.js delete mode 100644 app/ui-utils/client/lib/AdminBox.js diff --git a/app/apps/client/orchestrator.js b/app/apps/client/orchestrator.js index 2252c886ce9d..54c614044fe0 100644 --- a/app/apps/client/orchestrator.js +++ b/app/apps/client/orchestrator.js @@ -4,7 +4,7 @@ import toastr from 'toastr'; import { AppWebsocketReceiver } from './communication'; import { APIClient } from '../../utils'; -import { AdminBox } from '../../ui-utils'; +import { registerAdminSidebarItem } from '../../ui-admin/client'; import { CachedCollectionManager } from '../../ui-cached-collection'; import { hasAtLeastOnePermission } from '../../authorization'; import { handleI18nResources } from './i18n'; @@ -51,14 +51,14 @@ class AppClientOrchestrator { getAppClientManager = () => this._manager; registerAdminMenuItems = () => { - AdminBox.addOption({ + registerAdminSidebarItem({ icon: 'cube', href: 'apps', i18nLabel: 'Apps', permissionGranted: () => hasAtLeastOnePermission(['manage-apps']), }); - AdminBox.addOption({ + registerAdminSidebarItem({ icon: 'cube', href: 'marketplace', i18nLabel: 'Marketplace', diff --git a/app/apps/client/routes.js b/app/apps/client/routes.js index 914137e5f72f..66005d26b875 100644 --- a/app/apps/client/routes.js +++ b/app/apps/client/routes.js @@ -1,9 +1,10 @@ import { FlowRouter } from 'meteor/kadira:flow-router'; import { BlazeLayout } from 'meteor/kadira:blaze-layout'; +import { registerAdminRoute } from '../../ui-admin/client'; import { Apps } from './orchestrator'; -FlowRouter.route('/admin/apps/what-is-it', { +registerAdminRoute('/apps/what-is-it', { name: 'apps-what-is-it', action: async () => { // TODO: render loading indicator @@ -26,32 +27,32 @@ const createAppsRouteAction = (centerTemplate) => async () => { } }; -FlowRouter.route('/admin/apps', { +registerAdminRoute('/apps', { name: 'apps', action: createAppsRouteAction('apps'), }); -FlowRouter.route('/admin/apps/install', { +registerAdminRoute('/apps/install', { name: 'app-install', action: createAppsRouteAction('appInstall'), }); -FlowRouter.route('/admin/apps/:appId', { +registerAdminRoute('/apps/:appId', { name: 'app-manage', action: createAppsRouteAction('appManage'), }); -FlowRouter.route('/admin/apps/:appId/logs', { +registerAdminRoute('/apps/:appId/logs', { name: 'app-logs', action: createAppsRouteAction('appLogs'), }); -FlowRouter.route('/admin/marketplace', { +registerAdminRoute('/marketplace', { name: 'marketplace', action: createAppsRouteAction('marketplace'), }); -FlowRouter.route('/admin/marketplace/:appId', { +registerAdminRoute('/marketplace/:appId', { name: 'marketplace-app', action: createAppsRouteAction('appManage'), }); diff --git a/app/authorization/client/route.js b/app/authorization/client/route.js index 2415242d6eb9..95ccd464cc48 100644 --- a/app/authorization/client/route.js +++ b/app/authorization/client/route.js @@ -1,9 +1,9 @@ -import { FlowRouter } from 'meteor/kadira:flow-router'; import { BlazeLayout } from 'meteor/kadira:blaze-layout'; +import { registerAdminRoute } from '../../ui-admin/client'; import { t } from '../../utils/client'; -FlowRouter.route('/admin/permissions', { +registerAdminRoute('/permissions', { name: 'admin-permissions', async action(/* params*/) { await import('./views'); @@ -14,7 +14,7 @@ FlowRouter.route('/admin/permissions', { }, }); -FlowRouter.route('/admin/permissions/:name?/edit', { +registerAdminRoute('/permissions/:name?/edit', { name: 'admin-permissions-edit', async action(/* params*/) { await import('./views'); @@ -26,7 +26,7 @@ FlowRouter.route('/admin/permissions/:name?/edit', { }, }); -FlowRouter.route('/admin/permissions/new', { +registerAdminRoute('/permissions/new', { name: 'admin-permissions-new', async action(/* params*/) { await import('./views'); diff --git a/app/authorization/client/startup.js b/app/authorization/client/startup.js index 2edf696d2856..9e437c26c050 100644 --- a/app/authorization/client/startup.js +++ b/app/authorization/client/startup.js @@ -2,8 +2,8 @@ import { Meteor } from 'meteor/meteor'; import { Tracker } from 'meteor/tracker'; import { hasAtLeastOnePermission } from './hasPermission'; +import { registerAdminSidebarItem } from '../../ui-admin/client'; import { CachedCollectionManager } from '../../ui-cached-collection'; -import { AdminBox } from '../../ui-utils/client/lib/AdminBox'; import { APIClient } from '../../utils/client'; import { Roles } from '../../models/client'; import { rolesStreamer } from './lib/streamer'; @@ -14,7 +14,7 @@ Meteor.startup(() => { roles.forEach((role) => Roles.insert(role)); }); - AdminBox.addOption({ + registerAdminSidebarItem({ href: 'admin-permissions', i18nLabel: 'Permissions', icon: 'lock', diff --git a/app/channel-settings/client/views/Multiselect.js b/app/channel-settings/client/views/Multiselect.js index f9400fa1b776..a63fa1981cd2 100644 --- a/app/channel-settings/client/views/Multiselect.js +++ b/app/channel-settings/client/views/Multiselect.js @@ -4,7 +4,7 @@ import { createTemplateForComponent } from '../../../../client/reactAdapters'; createTemplateForComponent( 'Multiselect', - () => import('../../../../client/components/admin/settings/inputs/MultiSelectSettingInput'), + () => import('../../../ui-admin/client/components/settings/inputs/MultiSelectSettingInput'), { // eslint-disable-next-line new-cap renderContainerView: () => HTML.DIV({ class: 'rc-multiselect', style: 'display: flex;' }), diff --git a/app/chatpal-search/client/route.js b/app/chatpal-search/client/route.js index cb0281953064..86c6ad276c49 100644 --- a/app/chatpal-search/client/route.js +++ b/app/chatpal-search/client/route.js @@ -1,9 +1,9 @@ -import { FlowRouter } from 'meteor/kadira:flow-router'; import { BlazeLayout } from 'meteor/kadira:blaze-layout'; +import { registerAdminRoute } from '../../ui-admin/client'; import { t } from '../../utils'; -FlowRouter.route('/admin/chatpal', { +registerAdminRoute('/chatpal', { name: 'chatpal-admin', action() { return BlazeLayout.render('main', { diff --git a/app/cloud/client/index.js b/app/cloud/client/index.js index 0165b0a25011..6504dcc0e8e7 100644 --- a/app/cloud/client/index.js +++ b/app/cloud/client/index.js @@ -3,12 +3,11 @@ import './admin/cloud'; import './admin/cloudRegisterManually'; import { BlazeLayout } from 'meteor/kadira:blaze-layout'; -import { FlowRouter } from 'meteor/kadira:flow-router'; -import { AdminBox } from '../../ui-utils'; +import { registerAdminRoute, registerAdminSidebarItem } from '../../ui-admin/client'; import { hasAtLeastOnePermission } from '../../authorization'; -FlowRouter.route('/admin/cloud', { +registerAdminRoute('/cloud', { name: 'cloud-config', async action() { await import('./admin'); @@ -16,7 +15,7 @@ FlowRouter.route('/admin/cloud', { }, }); -FlowRouter.route('/admin/cloud/oauth-callback', { +registerAdminRoute('/cloud/oauth-callback', { name: 'cloud-oauth-callback', async action() { await import('./admin'); @@ -24,7 +23,7 @@ FlowRouter.route('/admin/cloud/oauth-callback', { }, }); -AdminBox.addOption({ +registerAdminSidebarItem({ icon: 'cloud-plus', href: 'admin/cloud', i18nLabel: 'Connectivity_Services', diff --git a/app/custom-sounds/client/admin/route.js b/app/custom-sounds/client/admin/route.js index 0150bef09169..0f181fda5787 100644 --- a/app/custom-sounds/client/admin/route.js +++ b/app/custom-sounds/client/admin/route.js @@ -1,7 +1,8 @@ -import { FlowRouter } from 'meteor/kadira:flow-router'; import { BlazeLayout } from 'meteor/kadira:blaze-layout'; -FlowRouter.route('/admin/custom-sounds', { +import { registerAdminRoute } from '../../../ui-admin/client'; + +registerAdminRoute('/custom-sounds', { name: 'custom-sounds', async action(/* params*/) { await import('./views'); diff --git a/app/custom-sounds/client/admin/startup.js b/app/custom-sounds/client/admin/startup.js index 5d469ce5d457..2647b17ea42d 100644 --- a/app/custom-sounds/client/admin/startup.js +++ b/app/custom-sounds/client/admin/startup.js @@ -1,7 +1,7 @@ -import { AdminBox } from '../../../ui-utils'; import { hasAtLeastOnePermission } from '../../../authorization'; +import { registerAdminSidebarItem } from '../../../ui-admin/client'; -AdminBox.addOption({ +registerAdminSidebarItem({ href: 'custom-sounds', i18nLabel: 'Custom_Sounds', icon: 'volume', diff --git a/app/emoji-custom/client/admin/route.js b/app/emoji-custom/client/admin/route.js index 169ff2bb637a..575e47831756 100644 --- a/app/emoji-custom/client/admin/route.js +++ b/app/emoji-custom/client/admin/route.js @@ -1,7 +1,8 @@ -import { FlowRouter } from 'meteor/kadira:flow-router'; import { BlazeLayout } from 'meteor/kadira:blaze-layout'; -FlowRouter.route('/admin/emoji-custom', { +import { registerAdminRoute } from '../../../ui-admin/client'; + +registerAdminRoute('/emoji-custom', { name: 'emoji-custom', async action(/* params*/) { await import('./views'); diff --git a/app/emoji-custom/client/admin/startup.js b/app/emoji-custom/client/admin/startup.js index 2845727615d4..851786b584f8 100644 --- a/app/emoji-custom/client/admin/startup.js +++ b/app/emoji-custom/client/admin/startup.js @@ -1,7 +1,7 @@ -import { AdminBox } from '../../../ui-utils'; import { hasPermission } from '../../../authorization'; +import { registerAdminSidebarItem } from '../../../ui-admin/client'; -AdminBox.addOption({ +registerAdminSidebarItem({ href: 'emoji-custom', i18nLabel: 'Custom_Emoji', icon: 'emoji', diff --git a/app/federation/client/admin/dashboard.js b/app/federation/client/admin/dashboard.js index e53325264d23..a675b11e2d68 100644 --- a/app/federation/client/admin/dashboard.js +++ b/app/federation/client/admin/dashboard.js @@ -3,10 +3,9 @@ import { Tracker } from 'meteor/tracker'; import { Template } from 'meteor/templating'; import { ReactiveVar } from 'meteor/reactive-var'; import { BlazeLayout } from 'meteor/kadira:blaze-layout'; -import { FlowRouter } from 'meteor/kadira:flow-router'; -import { AdminBox } from '../../../ui-utils'; import { hasRole } from '../../../authorization'; +import { registerAdminRoute, registerAdminSidebarItem } from '../../../ui-admin/client'; import './dashboard.html'; import './dashboard.css'; @@ -69,14 +68,14 @@ Template.dashboard.onRendered(() => { // Route setup -FlowRouter.route('/admin/federation-dashboard', { +registerAdminRoute('/federation-dashboard', { name: 'federation-dashboard', action() { BlazeLayout.render('main', { center: 'dashboard', old: true }); }, }); -AdminBox.addOption({ +registerAdminSidebarItem({ icon: 'discover', href: 'admin/federation-dashboard', i18nLabel: 'Federation Dashboard', diff --git a/app/importer/client/index.js b/app/importer/client/index.js index 1ae15dfc877f..0b5b15ef294b 100644 --- a/app/importer/client/index.js +++ b/app/importer/client/index.js @@ -1,12 +1,12 @@ -import { FlowRouter } from 'meteor/kadira:flow-router'; import { BlazeLayout } from 'meteor/kadira:blaze-layout'; -import { ImporterWebsocketReceiver } from './ImporterWebsocketReceiver'; +import { registerAdminRoute } from '../../ui-admin/client'; import { Importers } from '../lib/Importers'; import { ImporterInfo } from '../lib/ImporterInfo'; import { ProgressStep } from '../lib/ImporterProgressStep'; +import { ImporterWebsocketReceiver } from './ImporterWebsocketReceiver'; -FlowRouter.route('/admin/import', { +registerAdminRoute('/import', { name: 'admin-import', async action() { await import('./admin/adminImport'); @@ -14,7 +14,7 @@ FlowRouter.route('/admin/import', { }, }); -FlowRouter.route('/admin/import/new', { +registerAdminRoute('/import/new', { name: 'admin-import-new', async action() { await import('./admin/adminImportNew'); @@ -22,7 +22,7 @@ FlowRouter.route('/admin/import/new', { }, }); -FlowRouter.route('/admin/import/prepare', { +registerAdminRoute('/import/prepare', { name: 'admin-import-prepare', async action() { await import('./admin/adminImportPrepare'); @@ -30,7 +30,7 @@ FlowRouter.route('/admin/import/prepare', { }, }); -FlowRouter.route('/admin/import/progress', { +registerAdminRoute('/import/progress', { name: 'admin-import-progress', async action() { await import('./admin/adminImportProgress'); diff --git a/app/integrations/client/route.js b/app/integrations/client/route.js index 18cd9743bfe6..fa97cf739741 100644 --- a/app/integrations/client/route.js +++ b/app/integrations/client/route.js @@ -1,11 +1,11 @@ -import { FlowRouter } from 'meteor/kadira:flow-router'; import { BlazeLayout } from 'meteor/kadira:blaze-layout'; +import { registerAdminRoute } from '../../ui-admin/client'; import { t } from '../../utils'; const dynamic = () => import('./views'); -FlowRouter.route('/admin/integrations', { +registerAdminRoute('/integrations', { name: 'admin-integrations', async action() { await dynamic(); @@ -16,7 +16,7 @@ FlowRouter.route('/admin/integrations', { }, }); -FlowRouter.route('/admin/integrations/new', { +registerAdminRoute('/integrations/new', { name: 'admin-integrations-new', async action() { await dynamic(); @@ -27,7 +27,7 @@ FlowRouter.route('/admin/integrations/new', { }, }); -FlowRouter.route('/admin/integrations/incoming/:id?', { +registerAdminRoute('/integrations/incoming/:id?', { name: 'admin-integrations-incoming', async action(params) { await dynamic(); @@ -40,7 +40,7 @@ FlowRouter.route('/admin/integrations/incoming/:id?', { }, }); -FlowRouter.route('/admin/integrations/outgoing/:id?', { +registerAdminRoute('/integrations/outgoing/:id?', { name: 'admin-integrations-outgoing', async action(params) { await dynamic(); @@ -52,7 +52,7 @@ FlowRouter.route('/admin/integrations/outgoing/:id?', { }, }); -FlowRouter.route('/admin/integrations/outgoing/:id?/history', { +registerAdminRoute('/integrations/outgoing/:id?/history', { name: 'admin-integrations-outgoing-history', async action(params) { await dynamic(); @@ -64,7 +64,7 @@ FlowRouter.route('/admin/integrations/outgoing/:id?/history', { }, }); -FlowRouter.route('/admin/integrations/additional/zapier', { +registerAdminRoute('/integrations/additional/zapier', { name: 'admin-integrations-additional-zapier', async action() { await dynamic(); diff --git a/app/integrations/client/startup.js b/app/integrations/client/startup.js index b4cb14574775..7ed84fba42f0 100644 --- a/app/integrations/client/startup.js +++ b/app/integrations/client/startup.js @@ -1,7 +1,7 @@ -import { AdminBox } from '../../ui-utils'; import { hasAtLeastOnePermission } from '../../authorization'; +import { registerAdminSidebarItem } from '../../ui-admin/client'; -AdminBox.addOption({ +registerAdminSidebarItem({ href: 'admin-integrations', i18nLabel: 'Integrations', icon: 'code', diff --git a/app/invites/client/admin/route.js b/app/invites/client/admin/route.js index f945611cced7..cb5dcb190f6a 100644 --- a/app/invites/client/admin/route.js +++ b/app/invites/client/admin/route.js @@ -1,7 +1,8 @@ -import { FlowRouter } from 'meteor/kadira:flow-router'; import { BlazeLayout } from 'meteor/kadira:blaze-layout'; -FlowRouter.route('/admin/invites', { +import { registerAdminRoute } from '../../../ui-admin/client'; + +registerAdminRoute('/invites', { name: 'invites', async action(/* params */) { await import('./adminInvites'); diff --git a/app/invites/client/admin/startup.js b/app/invites/client/admin/startup.js index b1fca12fb61b..a402aea6d144 100644 --- a/app/invites/client/admin/startup.js +++ b/app/invites/client/admin/startup.js @@ -1,7 +1,7 @@ -import { AdminBox } from '../../../ui-utils'; import { hasAtLeastOnePermission } from '../../../authorization'; +import { registerAdminSidebarItem } from '../../../ui-admin/client'; -AdminBox.addOption({ +registerAdminSidebarItem({ href: 'invites', i18nLabel: 'Invites', icon: 'user-plus', diff --git a/app/logger/client/viewLogs.js b/app/logger/client/viewLogs.js index e498f0ba6b73..7683f9d1d292 100644 --- a/app/logger/client/viewLogs.js +++ b/app/logger/client/viewLogs.js @@ -1,16 +1,15 @@ +import { BlazeLayout } from 'meteor/kadira:blaze-layout'; import { Meteor } from 'meteor/meteor'; import { Mongo } from 'meteor/mongo'; -import { FlowRouter } from 'meteor/kadira:flow-router'; -import { BlazeLayout } from 'meteor/kadira:blaze-layout'; -import { AdminBox } from '../../ui-utils'; import { hasAllPermission } from '../../authorization'; +import { registerAdminRoute, registerAdminSidebarItem } from '../../ui-admin/client'; import { t } from '../../utils'; export const stdout = new Mongo.Collection(null); Meteor.startup(function() { - AdminBox.addOption({ + registerAdminSidebarItem({ href: 'admin-view-logs', i18nLabel: 'View_Logs', icon: 'post', @@ -20,7 +19,7 @@ Meteor.startup(function() { }); }); -FlowRouter.route('/admin/view-logs', { +registerAdminRoute('/view-logs', { name: 'admin-view-logs', async action() { await import('./views/viewLogs'); diff --git a/app/mail-messages/client/router.js b/app/mail-messages/client/router.js index fd738b632d8b..93e982b4ea59 100644 --- a/app/mail-messages/client/router.js +++ b/app/mail-messages/client/router.js @@ -2,7 +2,9 @@ import { Meteor } from 'meteor/meteor'; import { FlowRouter } from 'meteor/kadira:flow-router'; import { BlazeLayout } from 'meteor/kadira:blaze-layout'; -FlowRouter.route('/admin/mailer', { +import { registerAdminRoute } from '../../ui-admin/client'; + +registerAdminRoute('/mailer', { name: 'admin-mailer', async action() { await import('./views'); diff --git a/app/mail-messages/client/startup.js b/app/mail-messages/client/startup.js index 35f55d75cbbe..5148b91bd57c 100644 --- a/app/mail-messages/client/startup.js +++ b/app/mail-messages/client/startup.js @@ -1,7 +1,7 @@ -import { AdminBox } from '../../ui-utils'; import { hasAllPermission } from '../../authorization'; +import { registerAdminSidebarItem } from '../../ui-admin/client'; -AdminBox.addOption({ +registerAdminSidebarItem({ href: 'admin-mailer', i18nLabel: 'Mailer', icon: 'mail', diff --git a/app/oauth2-server-config/client/admin/route.js b/app/oauth2-server-config/client/admin/route.js index 340f403b9351..4ba33c35c658 100644 --- a/app/oauth2-server-config/client/admin/route.js +++ b/app/oauth2-server-config/client/admin/route.js @@ -1,9 +1,9 @@ -import { FlowRouter } from 'meteor/kadira:flow-router'; import { BlazeLayout } from 'meteor/kadira:blaze-layout'; +import { registerAdminRoute } from '../../../ui-admin/client'; import { t } from '../../../utils'; -FlowRouter.route('/admin/oauth-apps', { +registerAdminRoute('/oauth-apps', { name: 'admin-oauth-apps', async action() { await import('./views'); @@ -14,7 +14,7 @@ FlowRouter.route('/admin/oauth-apps', { }, }); -FlowRouter.route('/admin/oauth-app/:id?', { +registerAdminRoute('/oauth-app/:id?', { name: 'admin-oauth-app', async action(params) { await import('./views'); diff --git a/app/oauth2-server-config/client/admin/startup.js b/app/oauth2-server-config/client/admin/startup.js index cf3e4fb08663..8ebe8aaf8b1f 100644 --- a/app/oauth2-server-config/client/admin/startup.js +++ b/app/oauth2-server-config/client/admin/startup.js @@ -1,7 +1,7 @@ -import { AdminBox } from '../../../ui-utils'; import { hasAllPermission } from '../../../authorization'; +import { registerAdminSidebarItem } from '../../../ui-admin/client'; -AdminBox.addOption({ +registerAdminSidebarItem({ href: 'admin-oauth-apps', i18nLabel: 'OAuth Apps', icon: 'discover', diff --git a/app/ui-admin/client/adminFlex.js b/app/ui-admin/client/adminFlex.js index ce744b2c63ad..6571d708d47c 100644 --- a/app/ui-admin/client/adminFlex.js +++ b/app/ui-admin/client/adminFlex.js @@ -5,10 +5,11 @@ import { Template } from 'meteor/templating'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import { settings } from '../../settings'; -import { menu, SideNav, AdminBox, Layout } from '../../ui-utils/client'; +import { menu, SideNav, Layout } from '../../ui-utils/client'; import { t } from '../../utils'; import { PrivateSettingsCachedCollection } from './SettingsCachedCollection'; import { hasAtLeastOnePermission } from '../../authorization/client'; +import { getSidebarItems } from './sidebarItems'; Template.adminFlex.onCreated(function() { this.isEmbedded = Layout.isEmbedded(); @@ -65,7 +66,7 @@ Template.adminFlex.helpers({ }, label, adminBoxOptions() { - return AdminBox.getOptions(); + return getSidebarItems(); }, menuItem(name, icon, section, group) { return { diff --git a/app/ui-admin/client/components/AdministrationRouter.js b/app/ui-admin/client/components/AdministrationRouter.js new file mode 100644 index 000000000000..8fc0486cd444 --- /dev/null +++ b/app/ui-admin/client/components/AdministrationRouter.js @@ -0,0 +1,16 @@ +import React, { lazy, useMemo, Suspense } from 'react'; + +import { useAdminSideNav } from '../hooks/useAdminSideNav'; +import PageSkeleton from './PageSkeleton'; + +function AdministrationRouter({ lazyRouteComponent }) { + useAdminSideNav(); + + const LazyRouteComponent = useMemo(() => lazy(lazyRouteComponent), [lazyRouteComponent]); + + return }> + + ; +} + +export default AdministrationRouter; diff --git a/app/ui-admin/client/components/PageSkeleton.js b/app/ui-admin/client/components/PageSkeleton.js new file mode 100644 index 000000000000..8960697eecce --- /dev/null +++ b/app/ui-admin/client/components/PageSkeleton.js @@ -0,0 +1,30 @@ +import { Box, Button, ButtonGroup, Skeleton } from '@rocket.chat/fuselage'; +import React from 'react'; + +import { Page } from '../../../../client/components/basic/Page'; + +function PageSkeleton() { + return + }> + + -
@@ -31,6 +29,12 @@

{{_ "Messages"}}: {{message_count}}

{{_ "Users"}}

+
+ + + +
+
    {{#each users}} {{#unless is_bot}} @@ -51,6 +55,12 @@

    {{_ "Users"}}

    {{_ "Channels"}}

    +
    + + + +
    +
      {{#each channels}}
    • diff --git a/app/importer/client/admin/adminImportPrepare.js b/app/importer/client/admin/adminImportPrepare.js index f37dc66a4b80..a91e8ea9d55b 100644 --- a/app/importer/client/admin/adminImportPrepare.js +++ b/app/importer/client/admin/adminImportPrepare.js @@ -73,6 +73,20 @@ Template.adminImportPrepare.events({ }); }, + 'click .button.check-all-users'(event, template) { + Array.from(template.users.get()).forEach((user) => { + const box = $(`[name=${ user.user_id }]`); + return box && box.length && !box[0].checked && box.click(); + }); + }, + + 'click .button.uncheck-all-users'(event, template) { + Array.from(template.users.get()).forEach((user) => { + const box = $(`[name=${ user.user_id }]`); + return box && box.length && box[0].checked && box.click(); + }); + }, + 'click .button.uncheck-archived-channels'(event, template) { Array.from(template.channels.get()).filter((channel) => channel.is_archived).map((channel) => { const box = $(`[name=${ channel.channel_id }]`); @@ -80,6 +94,20 @@ Template.adminImportPrepare.events({ }); }, + 'click .button.check-all-channels'(event, template) { + Array.from(template.channels.get()).forEach((channel) => { + const box = $(`[name=${ channel.channel_id }]`); + return box && box.length && !box[0].checked && box.click(); + }); + }, + + 'click .button.uncheck-all-channels'(event, template) { + Array.from(template.channels.get()).forEach((channel) => { + const box = $(`[name=${ channel.channel_id }]`); + return box && box.length && box[0].checked && box.click(); + }); + }, + }); function getImportFileData(template) { diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index bef4385c60a0..707a879ab23a 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -659,6 +659,7 @@ "Chatpal_Welcome": "Enjoy your search!", "Chatpal_Window_Size": "Index Window Size", "Chatpal_Window_Size_Description": "The size of index windows in hours (on bootstrapping)", + "Check_All": "Check All", "Check_Progress": "Check Progress", "Choose_a_room": "Choose a room", "Choose_messages": "Choose messages", @@ -3419,6 +3420,7 @@ "unarchive-room": "Unarchive Room", "unarchive-room_description": "Permission to unarchive channels", "Unblock_User": "Unblock User", + "Uncheck_All": "Uncheck All", "Undefined": "Undefined", "Unfavorite": "Unfavorite", "Unfollow_message": "Unfollow Message", From 96969e287a48ef389c4f3623699286637653f720 Mon Sep 17 00:00:00 2001 From: gabriellsh <40830821+gabriellsh@users.noreply.github.com> Date: Mon, 13 Apr 2020 10:06:44 -0300 Subject: [PATCH 08/95] [FIX] Threads: Hide Usernames hides Full names. (#16959) --- app/theme/client/imports/general/base_old.css | 2 +- app/threads/client/flextab/thread.html | 2 +- app/threads/client/flextab/thread.js | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/theme/client/imports/general/base_old.css b/app/theme/client/imports/general/base_old.css index 33c75af298e5..dc786964fff5 100644 --- a/app/theme/client/imports/general/base_old.css +++ b/app/theme/client/imports/general/base_old.css @@ -4848,7 +4848,7 @@ rc-old select, display: block; } -.rc-old .hide-usernames .message .user.user-card-message { +.rc-old .hide-usernames .message .user.user-card-message .message-alias { display: none; } diff --git a/app/threads/client/flextab/thread.html b/app/threads/client/flextab/thread.html index c5378fb86082..3677d402c8c3 100644 --- a/app/threads/client/flextab/thread.html +++ b/app/threads/client/flextab/thread.html @@ -11,7 +11,7 @@

      {{> icon block="contextual-bar__header-close-icon" icon="plus"}} -
      +
      {{_ dragAndDropLabel}}
        diff --git a/app/threads/client/flextab/thread.js b/app/threads/client/flextab/thread.js index cf089f3dea8d..5bdd2aba8b5c 100644 --- a/app/threads/client/flextab/thread.js +++ b/app/threads/client/flextab/thread.js @@ -1,4 +1,5 @@ import _ from 'underscore'; +import { Meteor } from 'meteor/meteor'; import { Mongo } from 'meteor/mongo'; import { Template } from 'meteor/templating'; import { ReactiveDict } from 'meteor/reactive-dict'; @@ -12,6 +13,7 @@ import { Messages } from '../../../models'; import { fileUpload } from '../../../ui/client/lib/fileUpload'; import { dropzoneEvents, dropzoneHelpers } from '../../../ui/client/views/app/room'; import './thread.html'; +import { getUserPreference } from '../../../utils'; const sort = { ts: 1 }; @@ -76,6 +78,9 @@ Template.thread.helpers({ onKeyDown: (...args) => instance.chatMessages && instance.chatMessages.keydown.apply(instance.chatMessages, args), }; }, + hideUsername() { + return getUserPreference(Meteor.userId(), 'hideUsernames') ? 'hide-usernames' : undefined; + }, }); From c3673784e678e6cd9737afff5363fb128e4b5231 Mon Sep 17 00:00:00 2001 From: Subham Sahoo <43502196+subham103@users.noreply.github.com> Date: Mon, 13 Apr 2020 18:40:01 +0530 Subject: [PATCH 09/95] [FIX] Search valid for emoji with dual name (#16887) --- app/emoji/client/emojiPicker.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/emoji/client/emojiPicker.js b/app/emoji/client/emojiPicker.js index 705ccb412410..7894ab736efc 100644 --- a/app/emoji/client/emojiPicker.js +++ b/app/emoji/client/emojiPicker.js @@ -58,9 +58,10 @@ function getEmojisBySearchTerm(searchTerm) { if (searchRegExp.test(current)) { const emojiObject = emoji.list[current]; - const { emojiPackage } = emojiObject; + const { emojiPackage, shortnames } = emojiObject; let tone = ''; current = current.replace(/:/g, ''); + const alias = shortnames[0] !== undefined ? shortnames[0].replace(/:/g, '') : shortnames[0]; if (actualTone > 0 && emoji.packages[emojiPackage].toneList.hasOwnProperty(emoji)) { tone = `_tone${ actualTone }`; @@ -71,7 +72,8 @@ function getEmojisBySearchTerm(searchTerm) { for (const key in emoji.packages[emojiPackage].emojisByCategory) { if (emoji.packages[emojiPackage].emojisByCategory.hasOwnProperty(key)) { const contents = emoji.packages[emojiPackage].emojisByCategory[key]; - if (contents.indexOf(current) !== -1) { + const searchValArray = alias !== undefined ? alias.replace(/:/g, '').split('_') : alias; + if (contents.indexOf(current) !== -1 || (searchValArray !== undefined && searchValArray.includes(searchTerm))) { emojiFound = true; break; } From b89c96b187feeed1785d1347409de91c3697a794 Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Mon, 13 Apr 2020 10:11:34 -0300 Subject: [PATCH 10/95] [NEW] Add Color layout variable to left sidebar (#16806) --- app/theme/client/imports/general/variables.css | 3 ++- packages/rocketchat-i18n/i18n/en.i18n.json | 1 + private/client/imports/general/variables.css | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/theme/client/imports/general/variables.css b/app/theme/client/imports/general/variables.css index c5aaaeecf7ef..b2a0f27e476d 100644 --- a/app/theme/client/imports/general/variables.css +++ b/app/theme/client/imports/general/variables.css @@ -51,6 +51,7 @@ --rc-color-alert-message-warning: #d52d24; --rc-color-alert-message-warning-background: #fff3f3; --rc-color-primary: var(--color-dark); + --rc-color-primary-background: var(--color-dark); --rc-color-primary-darkest: var(--color-darkest); --rc-color-primary-dark: var(--color-dark-medium); --rc-color-primary-light: var(--color-gray); @@ -176,7 +177,7 @@ */ --sidebar-width: 280px; --sidebar-small-width: 90%; - --sidebar-background: var(--rc-color-primary); + --sidebar-background: var(--rc-color-primary-background); --sidebar-background-hover: var(--rc-color-primary-dark); --sidebar-background-light: var(--rc-color-primary-lightest); --sidebar-background-light-hover: var(--rc-color-primary-light); diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 707a879ab23a..39ea3a6ed4e6 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -3273,6 +3273,7 @@ "theme-color-rc-color-error-light": "Error Light", "theme-color-rc-color-link-active": "Link Active", "theme-color-rc-color-primary": "Primary", + "theme-color-rc-color-primary-background": "Primary Background", "theme-color-rc-color-primary-dark": "Primary Dark", "theme-color-rc-color-primary-darkest": "Primary Darkest", "theme-color-rc-color-primary-light": "Primary Light", diff --git a/private/client/imports/general/variables.css b/private/client/imports/general/variables.css index c5aaaeecf7ef..cf80aae7fd6a 100644 --- a/private/client/imports/general/variables.css +++ b/private/client/imports/general/variables.css @@ -51,6 +51,7 @@ --rc-color-alert-message-warning: #d52d24; --rc-color-alert-message-warning-background: #fff3f3; --rc-color-primary: var(--color-dark); + --rc-color-primary-background: var(--color-dark); --rc-color-primary-darkest: var(--color-darkest); --rc-color-primary-dark: var(--color-dark-medium); --rc-color-primary-light: var(--color-gray); From 842a68d1f6a8a317041507c72831da59da802563 Mon Sep 17 00:00:00 2001 From: Tasso Evangelista Date: Mon, 13 Apr 2020 10:13:39 -0300 Subject: [PATCH 11/95] [FIX] Global event click-message-link not fired (#16771) --- app/ui-master/client/main.js | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/app/ui-master/client/main.js b/app/ui-master/client/main.js index 0a2831c3fe8d..0a7e0753ecc8 100644 --- a/app/ui-master/client/main.js +++ b/app/ui-master/client/main.js @@ -107,19 +107,18 @@ Template.body.onRendered(function() { inputMessage.focus(); }); - $(document.body).on('click', function(e) { - if (e.target.tagName === 'A') { - const link = e.currentTarget; - if (link.origin === s.rtrim(Meteor.absoluteUrl(), '/') && /msg=([a-zA-Z0-9]+)/.test(link.search)) { - e.preventDefault(); - e.stopPropagation(); - if (Layout.isEmbedded()) { - return fireGlobalEvent('click-message-link', { - link: link.pathname + link.search, - }); - } - return FlowRouter.go(link.pathname + link.search, null, FlowRouter.current().queryParams); - } + const handleMessageLinkClick = (event) => { + const link = event.currentTarget; + if (link.origin === s.rtrim(Meteor.absoluteUrl(), '/') && /msg=([a-zA-Z0-9]+)/.test(link.search)) { + fireGlobalEvent('click-message-link', { link: link.pathname + link.search }); + } + }; + + this.autorun(() => { + if (Layout.isEmbedded()) { + $(document.body).on('click', 'a', handleMessageLinkClick); + } else { + $(document.body).off('click', 'a', handleMessageLinkClick); } }); From a7e927eaf9466756d2756bc79c87a6f07db573a9 Mon Sep 17 00:00:00 2001 From: pierre-lehnen-rc <55164754+pierre-lehnen-rc@users.noreply.github.com> Date: Mon, 13 Apr 2020 11:28:53 -0300 Subject: [PATCH 12/95] [FIX] 404 error when clicking an username (#17275) --- app/ui/client/views/app/room.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/ui/client/views/app/room.js b/app/ui/client/views/app/room.js index 188132a18ccf..8ea44dd8d5d1 100644 --- a/app/ui/client/views/app/room.js +++ b/app/ui/client/views/app/room.js @@ -83,7 +83,7 @@ const openProfileTabOrOpenDM = (e, instance, username) => { } if (result && result.rid) { - FlowRouter.go('direct', { username }, FlowRouter.current().queryParams); + FlowRouter.go('direct', { rid: result.rid }, FlowRouter.current().queryParams); } }); } else { From b34e6070e5965dbe996061cb4a2d34c9ec3b6bce Mon Sep 17 00:00:00 2001 From: Gabriel Engel Date: Mon, 13 Apr 2020 11:39:59 -0300 Subject: [PATCH 13/95] LingoHub based on develop (#17274) Co-authored-by: Diego Sampaio --- ee/i18n/af.i18n.json | 1 + ee/i18n/ar.i18n.json | 1 + ee/i18n/az.i18n.json | 1 + ee/i18n/bas-CM.i18n.json | 1 + ee/i18n/be-BY.i18n.json | 1 + ee/i18n/bg.i18n.json | 1 + ee/i18n/bs.i18n.json | 1 + ee/i18n/ca.i18n.json | 1 + ee/i18n/cs.i18n.json | 62 ++ ee/i18n/cy.i18n.json | 1 + ee/i18n/da.i18n.json | 62 ++ ee/i18n/de-AT.i18n.json | 1 + ee/i18n/de.i18n.json | 1 + ee/i18n/el.i18n.json | 1 + ee/i18n/en.i18n.json | 2 +- ee/i18n/eo.i18n.json | 1 + ee/i18n/es.i18n.json | 1 + ee/i18n/et.i18n.json | 1 + ee/i18n/eu.i18n.json | 1 + ee/i18n/fa.i18n.json | 1 + ee/i18n/fi.i18n.json | 1 + ee/i18n/fr.i18n.json | 1 + ee/i18n/he.i18n.json | 1 + ee/i18n/hi-IN.i18n.json | 1 + ee/i18n/hr.i18n.json | 1 + ee/i18n/hu.i18n.json | 1 + ee/i18n/id.i18n.json | 1 + ee/i18n/it.i18n.json | 1 + ee/i18n/ja.i18n.json | 62 ++ ee/i18n/ka-GE.i18n.json | 49 + ee/i18n/km.i18n.json | 35 + ee/i18n/ko.i18n.json | 9 + ee/i18n/ku.i18n.json | 1 + ee/i18n/lo.i18n.json | 1 + ee/i18n/lt.i18n.json | 1 + ee/i18n/lv.i18n.json | 1 + ee/i18n/mn.i18n.json | 1 + ee/i18n/ms-MY.i18n.json | 1 + ee/i18n/nl.i18n.json | 1 + ee/i18n/no.i18n.json | 35 + ee/i18n/pl.i18n.json | 39 + ee/i18n/pt-BR.i18n.json | 4 +- ee/i18n/pt.i18n.json | 1 + ee/i18n/ro.i18n.json | 1 + ee/i18n/ru.i18n.json | 1 + ee/i18n/sk-SK.i18n.json | 12 + ee/i18n/sl-SI.i18n.json | 1 + ee/i18n/sq.i18n.json | 1 + ee/i18n/sr.i18n.json | 1 + ee/i18n/sv.i18n.json | 1 + ee/i18n/ta-IN.i18n.json | 1 + ee/i18n/th-TH.i18n.json | 1 + ee/i18n/tr.i18n.json | 1 + ee/i18n/ug.i18n.json | 1 + ee/i18n/uk.i18n.json | 4 + ee/i18n/vi-VN.i18n.json | 1 + ee/i18n/zh-HK.i18n.json | 1 + ee/i18n/zh-TW.i18n.json | 62 ++ ee/i18n/zh.i18n.json | 1 + packages/rocketchat-i18n/i18n/af.i18n.json | 5 +- packages/rocketchat-i18n/i18n/ar.i18n.json | 5 +- packages/rocketchat-i18n/i18n/az.i18n.json | 5 +- packages/rocketchat-i18n/i18n/be-BY.i18n.json | 5 +- packages/rocketchat-i18n/i18n/bg.i18n.json | 5 +- packages/rocketchat-i18n/i18n/bs.i18n.json | 5 +- packages/rocketchat-i18n/i18n/ca.i18n.json | 5 +- packages/rocketchat-i18n/i18n/cs.i18n.json | 112 ++- packages/rocketchat-i18n/i18n/cy.i18n.json | 5 +- packages/rocketchat-i18n/i18n/da.i18n.json | 164 ++-- packages/rocketchat-i18n/i18n/de-AT.i18n.json | 5 +- packages/rocketchat-i18n/i18n/de.i18n.json | 5 +- packages/rocketchat-i18n/i18n/el.i18n.json | 5 +- packages/rocketchat-i18n/i18n/en.i18n.json | 6 +- packages/rocketchat-i18n/i18n/eo.i18n.json | 5 +- packages/rocketchat-i18n/i18n/es.i18n.json | 7 +- packages/rocketchat-i18n/i18n/eu.i18n.json | 11 +- packages/rocketchat-i18n/i18n/fa.i18n.json | 19 +- packages/rocketchat-i18n/i18n/fi.i18n.json | 5 +- packages/rocketchat-i18n/i18n/fr.i18n.json | 5 +- packages/rocketchat-i18n/i18n/he.i18n.json | 5 +- packages/rocketchat-i18n/i18n/hr.i18n.json | 5 +- packages/rocketchat-i18n/i18n/hu.i18n.json | 7 +- packages/rocketchat-i18n/i18n/id.i18n.json | 5 +- packages/rocketchat-i18n/i18n/it.i18n.json | 5 +- packages/rocketchat-i18n/i18n/ja.i18n.json | 135 ++- packages/rocketchat-i18n/i18n/km.i18n.json | 5 +- packages/rocketchat-i18n/i18n/ko.i18n.json | 5 +- packages/rocketchat-i18n/i18n/ku.i18n.json | 5 +- packages/rocketchat-i18n/i18n/lo.i18n.json | 5 +- packages/rocketchat-i18n/i18n/lt.i18n.json | 5 +- packages/rocketchat-i18n/i18n/lv.i18n.json | 5 +- packages/rocketchat-i18n/i18n/mn.i18n.json | 5 +- packages/rocketchat-i18n/i18n/ms-MY.i18n.json | 5 +- packages/rocketchat-i18n/i18n/nl.i18n.json | 5 +- packages/rocketchat-i18n/i18n/no.i18n.json | 96 +- packages/rocketchat-i18n/i18n/pl.i18n.json | 14 +- packages/rocketchat-i18n/i18n/pt-BR.i18n.json | 45 +- packages/rocketchat-i18n/i18n/pt.i18n.json | 5 +- packages/rocketchat-i18n/i18n/ro.i18n.json | 5 +- packages/rocketchat-i18n/i18n/ru.i18n.json | 5 +- packages/rocketchat-i18n/i18n/sk-SK.i18n.json | 11 +- packages/rocketchat-i18n/i18n/sl-SI.i18n.json | 5 +- packages/rocketchat-i18n/i18n/sq.i18n.json | 5 +- packages/rocketchat-i18n/i18n/sr.i18n.json | 840 +++++++----------- packages/rocketchat-i18n/i18n/sv.i18n.json | 5 +- packages/rocketchat-i18n/i18n/ta-IN.i18n.json | 5 +- packages/rocketchat-i18n/i18n/th-TH.i18n.json | 5 +- packages/rocketchat-i18n/i18n/tr.i18n.json | 5 +- packages/rocketchat-i18n/i18n/ug.i18n.json | 4 +- packages/rocketchat-i18n/i18n/uk.i18n.json | 262 ++++-- packages/rocketchat-i18n/i18n/vi-VN.i18n.json | 5 +- packages/rocketchat-i18n/i18n/zh-HK.i18n.json | 5 +- packages/rocketchat-i18n/i18n/zh-TW.i18n.json | 131 ++- packages/rocketchat-i18n/i18n/zh.i18n.json | 7 +- 114 files changed, 1771 insertions(+), 773 deletions(-) create mode 100644 ee/i18n/af.i18n.json create mode 100644 ee/i18n/ar.i18n.json create mode 100644 ee/i18n/az.i18n.json create mode 100644 ee/i18n/bas-CM.i18n.json create mode 100644 ee/i18n/be-BY.i18n.json create mode 100644 ee/i18n/bg.i18n.json create mode 100644 ee/i18n/bs.i18n.json create mode 100644 ee/i18n/ca.i18n.json create mode 100644 ee/i18n/cs.i18n.json create mode 100644 ee/i18n/cy.i18n.json create mode 100644 ee/i18n/da.i18n.json create mode 100644 ee/i18n/de-AT.i18n.json create mode 100644 ee/i18n/de.i18n.json create mode 100644 ee/i18n/el.i18n.json create mode 100644 ee/i18n/eo.i18n.json create mode 100644 ee/i18n/es.i18n.json create mode 100644 ee/i18n/et.i18n.json create mode 100644 ee/i18n/eu.i18n.json create mode 100644 ee/i18n/fa.i18n.json create mode 100644 ee/i18n/fi.i18n.json create mode 100644 ee/i18n/fr.i18n.json create mode 100644 ee/i18n/he.i18n.json create mode 100644 ee/i18n/hi-IN.i18n.json create mode 100644 ee/i18n/hr.i18n.json create mode 100644 ee/i18n/hu.i18n.json create mode 100644 ee/i18n/id.i18n.json create mode 100644 ee/i18n/it.i18n.json create mode 100644 ee/i18n/ja.i18n.json create mode 100644 ee/i18n/ka-GE.i18n.json create mode 100644 ee/i18n/km.i18n.json create mode 100644 ee/i18n/ko.i18n.json create mode 100644 ee/i18n/ku.i18n.json create mode 100644 ee/i18n/lo.i18n.json create mode 100644 ee/i18n/lt.i18n.json create mode 100644 ee/i18n/lv.i18n.json create mode 100644 ee/i18n/mn.i18n.json create mode 100644 ee/i18n/ms-MY.i18n.json create mode 100644 ee/i18n/nl.i18n.json create mode 100644 ee/i18n/no.i18n.json create mode 100644 ee/i18n/pl.i18n.json create mode 100644 ee/i18n/pt.i18n.json create mode 100644 ee/i18n/ro.i18n.json create mode 100644 ee/i18n/ru.i18n.json create mode 100644 ee/i18n/sk-SK.i18n.json create mode 100644 ee/i18n/sl-SI.i18n.json create mode 100644 ee/i18n/sq.i18n.json create mode 100644 ee/i18n/sr.i18n.json create mode 100644 ee/i18n/sv.i18n.json create mode 100644 ee/i18n/ta-IN.i18n.json create mode 100644 ee/i18n/th-TH.i18n.json create mode 100644 ee/i18n/tr.i18n.json create mode 100644 ee/i18n/ug.i18n.json create mode 100644 ee/i18n/uk.i18n.json create mode 100644 ee/i18n/vi-VN.i18n.json create mode 100644 ee/i18n/zh-HK.i18n.json create mode 100644 ee/i18n/zh-TW.i18n.json create mode 100644 ee/i18n/zh.i18n.json diff --git a/ee/i18n/af.i18n.json b/ee/i18n/af.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/af.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/ar.i18n.json b/ee/i18n/ar.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/ar.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/az.i18n.json b/ee/i18n/az.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/az.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/bas-CM.i18n.json b/ee/i18n/bas-CM.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/bas-CM.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/be-BY.i18n.json b/ee/i18n/be-BY.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/be-BY.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/bg.i18n.json b/ee/i18n/bg.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/bg.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/bs.i18n.json b/ee/i18n/bs.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/bs.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/ca.i18n.json b/ee/i18n/ca.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/ca.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/cs.i18n.json b/ee/i18n/cs.i18n.json new file mode 100644 index 000000000000..d28ffdf997c9 --- /dev/null +++ b/ee/i18n/cs.i18n.json @@ -0,0 +1,62 @@ +{ + "error-canned-response-not-found": "Zakonzervovaná odpověď nenalezena", + "error-max-number-simultaneous-chats-reached": "Byl dosažen maximální počet souběžných konverzací na operátora.", + "Add_monitor": "Přidat vedoucího", + "Available_departments": "Dostupná oddělení", + "Canned Responses": "Zakonzervované odpovědi", + "Canned_Response_Removed": "Zakonzervované odpovědi odstraněny", + "Canned_Responses_Enable": "Povolit zakonzervované odpovědi", + "Edit_Tag": "Upravit štítek", + "Edit_Unit": "Upravit skupinu", + "Enterprise_License": "Enterprise licence", + "Enterprise_License_Description": "Pokud je vaše prostředí registrováno a máte od Rocket.Chat licenci není potřeba ji zde ručně doplňovat", + "Failed_to_add_monitor": "Nepodařilo se přidat vedoucího", + "Invalid Canned Response": "Nevalidní zakonzervovaná odpověď", + "Invalid_Department": "Neplatné oddělení", + "LDAP_Default_Role_To_User": "Výchozí role pro uživatele", + "LDAP_Default_Role_To_User_Description": "Výchozí role přidaná uživateli v případě že LDAP role není namapovaná", + "LDAP_Enable_LDAP_Roles_To_RC_Roles": "Povolit mapování rolí z LDAP do Rocket.Chat", + "LDAP_Query_To_Get_User_Groups": "LDAP query pro získání uživatelských skupin", + "LDAP_Query_To_Get_User_Groups_Description": "LDAP query pro získání skupin do kterých patří uživatel.", + "LDAP_Roles_To_Rocket_Chat_Roles": "Mapování rolí z LDAP do Rocket.Chat", + "LDAP_Roles_To_Rocket_Chat_Roles_Description": "Mapování rolí v objektovém formátu, kde klíč je LDAP role a hodnota pole Rocket.Chat rolí. Například { 'ldapRole': ['rcRole', 'anotherRCRole'] }", + "LDAP_Validate_Roles_For_Each_Login": "Validovat mapování pro každé přihlášení", + "LDAP_Validate_Roles_For_Each_Login_Description": "Zda má validace probíhat při každém přihlášení (Opatrně, taková akce přepíše uživatelské role při každém přihlášení. V opačném případě je validováno jen při vytvoření uživatele", + "Livechat_Monitors": "Vedoucí", + "Livechat_monitors": "Livechat vedoucí", + "Max_number_of_chats_per_agent": "Max. počet souběžných konverzací", + "Max_number_of_chats_per_agent_description": "Kolik konverzací s uživateli může operátor souběžně odbavovat", + "Me": "Já", + "Message_auditing": "Audit zpráv", + "Message_auditing_log": "Log auditu zpráv", + "Monitor_removed": "Vedoucí odstraněn", + "Monitors": "Vedoucí", + "New_Canned_Response": "Nová zakonzervovaná odpověď", + "New_Tag": "Nový štítek", + "New_Unit": "Nová skupina", + "No_Canned_Responses": "Žádné zakonzervované odpovědi", + "Number_of_most_recent_chats_estimate_wait_time": "Počet nedávných konverzací k výpočtu odhadu času čekání", + "Number_of_most_recent_chats_estimate_wait_time_description": "K výpočtu času ve frontě se použije několik nedávných zpracovaných konverzací.", + "Others": "Ostatní", + "Please_select_visibility": "Prosím vyberte viditelnost", + "Role_Mapping": "Mapování rolí", + "Selected_departments": "Vybraná odddělení", + "Selected_monitors": "Vybraní vedoucí", + "Shortcut": "Zkratka", + "Tag_removed": "Štítek odstraněn", + "The_selected_user_is_not_a_monitor": "Vybraný uživatel není vedoucí", + "There_are_no_available_monitors": "Nejsou dostupní vedoucí", + "There_are_no_departments_added_to_this_tag_yet": "Pod tento štítek zatím nespadají žádná oddělení", + "There_are_no_departments_added_to_this_unit_yet": "V této skupině zatím nejsou žádná oddělení", + "There_are_no_departments_available": "Žádná oddělení nejsou dostupná", + "There_are_no_monitors_added_to_this_unit_yet": "V této skupině zatím nejsou žádní vedoucí", + "This_monitor_was_already_selected": "Vedoucí už byl vybrán", + "Unit_removed": "Skupina odstraněna", + "Use_this_response": "Použít tuto odpověď", + "view-canned-responses": "Zobrazit zakonzervované odpovědi", + "view-livechat-monitor": "Zobrazit Livechat vedoucí", + "view-livechat-unit": "Zobrazit Livechat skupiny", + "Waiting_queue": "Čekací fronta", + "Waiting_queue_message": "Zpráva v čekací frontě", + "Waiting_queue_message_description": "Informace která se návštěvníkům zobrazí pokud čekají ve frontě" +} \ No newline at end of file diff --git a/ee/i18n/cy.i18n.json b/ee/i18n/cy.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/cy.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/da.i18n.json b/ee/i18n/da.i18n.json new file mode 100644 index 000000000000..6feb27469916 --- /dev/null +++ b/ee/i18n/da.i18n.json @@ -0,0 +1,62 @@ +{ + "error-canned-response-not-found": "Der blev ikke fundet et opbevaret svar", + "error-max-number-simultaneous-chats-reached": "Det maksimale tilladte antal af samtidige chats pr agent er nået", + "Add_monitor": "Tilføj monitor", + "Available_departments": "Tilgængelige afdelinger", + "Canned Responses": "Opbevarede svar", + "Canned_Response_Removed": "Opbevaret svar blev fjernet", + "Canned_Responses_Enable": "Aktivér opbevarede svar", + "Edit_Tag": "Redigér mærke", + "Edit_Unit": "Redigér enhed", + "Enterprise_License": "Koncernlicens", + "Enterprise_License_Description": "Hvis dit arbejdsområde er registreret og en licens er tildelt af Rocket.Chat Cloud behøver du ikke manuelt at opdatere licensen her", + "Failed_to_add_monitor": "Fejl ved tilføjelse af monitor", + "Invalid Canned Response": "Ikke gyldigt opbevaret svar", + "Invalid_Department": "Ugyldig afdeling", + "LDAP_Default_Role_To_User": "Standardrolle for bruger", + "LDAP_Default_Role_To_User_Description": "Standard RC-rolle der skal tildeles en bruger, hvis brugeren har en LDAP-rolle der ikke er knyttet til noget", + "LDAP_Enable_LDAP_Roles_To_RC_Roles": "Aktivér rolletilknytning fra LDAP til Rocket.Chat", + "LDAP_Query_To_Get_User_Groups": "LDAP-forespørgsel for at hente brugergrupper", + "LDAP_Query_To_Get_User_Groups_Description": "LDAP-forespørgsel for at hente de LDAP-grupper, som brugeren er en del af.", + "LDAP_Roles_To_Rocket_Chat_Roles": "Rolletilknytning fra LDAP til Rocket.Chat.", + "LDAP_Roles_To_Rocket_Chat_Roles_Description": "Rolletilknytning i objektformat hvor objektnøglen skal være LDAP-rollen og objektværdien skal være en array af RC-roller. Eksempel: { 'ldapRole': ['rcRole', 'anotherRCRole'] }", + "LDAP_Validate_Roles_For_Each_Login": "Validér tilknytning for hvert login", + "LDAP_Validate_Roles_For_Each_Login_Description": "Hvis validering skal ske for hvert login (Vær forsigtig med denne indstilling, fordi den vil overskrive brugerrollerne i hvert login. Ellers valideres dette kun på det tidspunkt hvor brugeren oprettes).", + "Livechat_Monitors": "Monitore", + "Livechat_monitors": "Livechat-monitore", + "Max_number_of_chats_per_agent": "Max antal samtidige chats", + "Max_number_of_chats_per_agent_description": "Det maksimale tilladte antal af samtidige chats pr agent er nået", + "Me": "Mig", + "Message_auditing": "Meddelelsesovervågning", + "Message_auditing_log": "Log for meddelelsesovervågning", + "Monitor_removed": "Monitor fjernet", + "Monitors": "Monitore", + "New_Canned_Response": "Nyt opbevaret svar", + "New_Tag": "Nyt mærke", + "New_Unit": "Ny enhed", + "No_Canned_Responses": "Ingen opbevarede svar", + "Number_of_most_recent_chats_estimate_wait_time": "Antal seneste chats til beregning af estimeret ventetid", + "Number_of_most_recent_chats_estimate_wait_time_description": "Dette antal definerer antallet af sidst anvendte værelser, der vil blive brugt til at beregne kø-ventetider.", + "Others": "Andre", + "Please_select_visibility": "Vælg en synlighed", + "Role_Mapping": "Rolletilknytning", + "Selected_departments": "Valgte afdelinger", + "Selected_monitors": "Valgte monitore", + "Shortcut": "Genvejstast", + "Tag_removed": "Mærke fjernet", + "The_selected_user_is_not_a_monitor": "Den valgte bruger er ikke en monitor", + "There_are_no_available_monitors": "Der er ingen tilgængelige monitore", + "There_are_no_departments_added_to_this_tag_yet": "Der er endnu ikke tilføjet nogen afdelinger til dette mærke", + "There_are_no_departments_added_to_this_unit_yet": "Der er endnu ingen afdelinger tilføjet til denne enhed", + "There_are_no_departments_available": "Der er ingen tilgængelige afdelinger", + "There_are_no_monitors_added_to_this_unit_yet": "Der er endnu ikke tilføjet nogle monitore til denne enhed", + "This_monitor_was_already_selected": "Denne monitor var allerede valgt", + "Unit_removed": "Enhed fjernet", + "Use_this_response": "Brug dette svar", + "view-canned-responses": "Se opbevarede svar", + "view-livechat-monitor": "Se livechat-monitore", + "view-livechat-unit": "Se livechat-enheder", + "Waiting_queue": "Ventende kø", + "Waiting_queue_message": "Meddelelse for ventende kø", + "Waiting_queue_message_description": "Meddelelse der vises for de besøgende, når de kommer i kø" +} \ No newline at end of file diff --git a/ee/i18n/de-AT.i18n.json b/ee/i18n/de-AT.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/de-AT.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/de.i18n.json b/ee/i18n/de.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/de.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/el.i18n.json b/ee/i18n/el.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/el.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/en.i18n.json b/ee/i18n/en.i18n.json index 612242b05523..73d194a28f1f 100644 --- a/ee/i18n/en.i18n.json +++ b/ee/i18n/en.i18n.json @@ -59,4 +59,4 @@ "Waiting_queue": "Waiting queue", "Waiting_queue_message": "Waiting queue message", "Waiting_queue_message_description": "Message that will be displayed to the visitors when they get in the queue" -} +} \ No newline at end of file diff --git a/ee/i18n/eo.i18n.json b/ee/i18n/eo.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/eo.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/es.i18n.json b/ee/i18n/es.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/es.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/et.i18n.json b/ee/i18n/et.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/et.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/eu.i18n.json b/ee/i18n/eu.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/eu.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/fa.i18n.json b/ee/i18n/fa.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/fa.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/fi.i18n.json b/ee/i18n/fi.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/fi.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/fr.i18n.json b/ee/i18n/fr.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/fr.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/he.i18n.json b/ee/i18n/he.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/he.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/hi-IN.i18n.json b/ee/i18n/hi-IN.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/hi-IN.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/hr.i18n.json b/ee/i18n/hr.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/hr.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/hu.i18n.json b/ee/i18n/hu.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/hu.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/id.i18n.json b/ee/i18n/id.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/id.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/it.i18n.json b/ee/i18n/it.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/it.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/ja.i18n.json b/ee/i18n/ja.i18n.json new file mode 100644 index 000000000000..b1a53a11f45c --- /dev/null +++ b/ee/i18n/ja.i18n.json @@ -0,0 +1,62 @@ +{ + "error-canned-response-not-found": "返信定型文が見つかりません", + "error-max-number-simultaneous-chats-reached": "エージェントごとの同時チャットの最大数に達しました。", + "Add_monitor": "モニターを追加", + "Available_departments": "利用可能な部門", + "Canned Responses": "返信定型文", + "Canned_Response_Removed": "削除された定型文", + "Canned_Responses_Enable": "返信定型文を有効にする", + "Edit_Tag": "タグを編集", + "Edit_Unit": "ユニットを編集", + "Enterprise_License": "エンタープライズライセンス", + "Enterprise_License_Description": "ワークスペースが登録されており、ライセンスがRocket.Chat Cloudによって提供されている場合は、ここでライセンスを手動で更新する必要はありません。", + "Failed_to_add_monitor": "モニターを追加できませんでした", + "Invalid Canned Response": "無効な返信定型文", + "Invalid_Department": "部門が無効です", + "LDAP_Default_Role_To_User": "ユーザーへのデフォルトの役割", + "LDAP_Default_Role_To_User_Description": "ユーザーにマッピングされていないLDAPロールがある場合にユーザーに適用されるデフォルトのRCロール。", + "LDAP_Enable_LDAP_Roles_To_RC_Roles": "LDAPからRocket.Chatへのロールマッピングを有効にする", + "LDAP_Query_To_Get_User_Groups": "ユーザーグループを取得するためのLDAPクエリ", + "LDAP_Query_To_Get_User_Groups_Description": "ユーザーが属するLDAPグループを取得するためのLDAPクエリ。", + "LDAP_Roles_To_Rocket_Chat_Roles": "LDAPからRocket.Chatへのロールマッピング。", + "LDAP_Roles_To_Rocket_Chat_Roles_Description": "オブジェクトキーがLDAPロールであり、オブジェクト値がRCロールの配列である必要があるオブジェクト形式のロールマッピング。例:{ 'ldapRole': ['rcRole', 'anotherRCRole'] }", + "LDAP_Validate_Roles_For_Each_Login": "各ログインのマッピングを検証する", + "LDAP_Validate_Roles_For_Each_Login_Description": "各ログインで検証を行う必要がある場合(この設定は各ログインでユーザーロールを上書きするため、注意してください。そうでない場合、ユーザーの作成時にのみ検証されます)。", + "Livechat_Monitors": "モニター", + "Livechat_monitors": "Livechatモニター", + "Max_number_of_chats_per_agent": "最大同時チャットの数", + "Max_number_of_chats_per_agent_description": "エージェントが参加できる同時チャットの最大数", + "Me": "私", + "Message_auditing": "メッセージ監査", + "Message_auditing_log": "メッセージ監査ログ", + "Monitor_removed": "モニターを取り外しました", + "Monitors": "モニター", + "New_Canned_Response": "新しい返信定型文", + "New_Tag": "新しいタグ", + "New_Unit": "新しいユニット", + "No_Canned_Responses": "返信定型なし", + "Number_of_most_recent_chats_estimate_wait_time": "推定待ち時間を計算するための最近のチャットの数", + "Number_of_most_recent_chats_estimate_wait_time_description": "この数は、キュー待機時間の計算に使用される最後に提供された部屋の数を定義します。", + "Others": "その他", + "Please_select_visibility": "可視性を選択してください", + "Role_Mapping": "ロールマッピング", + "Selected_departments": "選択された部門", + "Selected_monitors": "選択されたモニター", + "Shortcut": "ショートカット", + "Tag_removed": "タグを削除しました", + "The_selected_user_is_not_a_monitor": "選択したユーザーはモニターではありません", + "There_are_no_available_monitors": "利用可能なモニターはありません", + "There_are_no_departments_added_to_this_tag_yet": "このタグに追加された部門はまだありません", + "There_are_no_departments_added_to_this_unit_yet": "このユニットに追加された部門はまだありません", + "There_are_no_departments_available": "利用可能な部門はありません", + "There_are_no_monitors_added_to_this_unit_yet": "このユニットに追加されたモニターはまだありません", + "This_monitor_was_already_selected": "このモニターは既に選択されています", + "Unit_removed": "ユニットが削除されました", + "Use_this_response": "この応答を使用", + "view-canned-responses": "返信定型文を表示", + "view-livechat-monitor": "Livechatモニターを表示", + "view-livechat-unit": "Livechatユニットを表示", + "Waiting_queue": "待ち行列", + "Waiting_queue_message": "待機キューメッセージ", + "Waiting_queue_message_description": "訪問者がキューに入ったときに表示されるメッセージ" +} \ No newline at end of file diff --git a/ee/i18n/ka-GE.i18n.json b/ee/i18n/ka-GE.i18n.json new file mode 100644 index 000000000000..fc263faa6993 --- /dev/null +++ b/ee/i18n/ka-GE.i18n.json @@ -0,0 +1,49 @@ +{ + "error-canned-response-not-found": "დაკონსერვებული პასუხი ვერ მოიძებნა", + "error-max-number-simultaneous-chats-reached": "ერთ აგენტიზე ერთდროული ჩატების მაქსიმალური რაოდენობა ამოწურულია.", + "Add_monitor": "მონიტორის დამატება", + "Available_departments": "ხელმისაწვდომი დეპარტამენტები", + "Canned Responses": "დაკონსერვებული პასუხები", + "Canned_Response_Removed": "დაკონსერვებული პასუხი ამოღებულია", + "Canned_Responses_Enable": "დაკონსერვებული პასუხების ჩართვა", + "Edit_Tag": "ტეგის რედაქტირება", + "Edit_Unit": "იუნიტის რედაქტირება", + "Enterprise_License": "საწარმოოს ლიცენზია", + "Enterprise_License_Description": "თუ თქვენი სამუშაო ადგილი რეგისტრირებულია და ლიცენზია აქვს Rocket.Chat Cloud– ს, აქ ლიცენზიის ხელით განახლება არ დაგჭირდებათ.", + "Failed_to_add_monitor": "მონიტორის დამატება ვერ მოხერხდა", + "Invalid Canned Response": "არასწორი დაკონსერვებული პასუხი", + "Invalid_Department": "არასწორი დეპარტამენტი", + "LDAP_Default_Role_To_User": "ნაგულისხმევი როლი მომხმარებლისთვის", + "LDAP_Default_Role_To_User_Description": "RC– ის ნაგულისხმევი როლი უნდა იქნას გამოყენებული მომხმარებლისთვის, თუ მომხმარებელს აქვს LDAP– ის გარკვეული როლი, რომელიც არ არის მიბმული.", + "LDAP_Enable_LDAP_Roles_To_RC_Roles": "ჩართეთ როლის მიბმა LDAP- დან Rocket.Chat-ში", + "LDAP_Query_To_Get_User_Groups": "LDAP მოთხოვნა, რომ მიიღოთ მომხმარებელთა ჯგუფები", + "LDAP_Query_To_Get_User_Groups_Description": "LDAP მოთხოვნა მიიღოთ LDAP ჯგუფები, რომელთა წევრიც არის მომხმარებელი.", + "LDAP_Roles_To_Rocket_Chat_Roles": "როლის მიბმა LDAP- დან Rocket.Chat- მდე.", + "LDAP_Roles_To_Rocket_Chat_Roles_Description": "როლის მობმა ობიექტის ფორმატში, სადაც ობიექტის გასაღები უნდა იყოს LDAP როლი და ობიექტის მნიშვნელობა უნდა იყოს RC როლების მასივი. მაგალითი: { 'ldapRole': ['rcRole', 'anotherRCRole'] }", + "LDAP_Validate_Roles_For_Each_Login": "მიბმის დადასტურება თითოეული შესვლისთვის", + "LDAP_Validate_Roles_For_Each_Login_Description": "თუ დადასტურება უნდა მოხდეს თითოეული შესვლისთვის (ფრთხილად იყავით ამ პარამეტრთან, რადგან ის გადაწერს მომხმარებლის როლებს ყოველი შესვლისას, წინააღმდეგ შემთხვევაში, ეს შემოწმდება მხოლოდ მომხმარებლის შექმნის მომენტში).", + "Livechat_Monitors": "მონიტორები", + "Livechat_monitors": "Livechat-ის მონიტორები", + "Max_number_of_chats_per_agent": "მაქსიმ. ერთდროული ჩეთები", + "Max_number_of_chats_per_agent_description": "მაქსიმუმი. ერთდროული ჩეთების რაოდენობა, რომელთაც აგენტები შეძლებენ დაესწრონ", + "Me": "მე", + "Message_auditing": "შეტყობინებების აუდიტი", + "Message_auditing_log": "შეტყობინებების აუდიტის ჟურნალი", + "Monitor_removed": "მონიტორი წაიშალა", + "Monitors": "მონიტორები", + "New_Canned_Response": "ახალი დაკონსერვებული პასუხი", + "New_Tag": "ახალი ტეგი", + "New_Unit": "ახალი იუნიტი", + "No_Canned_Responses": "დაკონსერვებული პასუხები არ არის", + "Number_of_most_recent_chats_estimate_wait_time": "ბოლოდროინდელი ჩეტების რაოდენობა, ლოდინის სავარაუდო დროის გამოსათვლელად", + "Number_of_most_recent_chats_estimate_wait_time_description": "ეს ნომერი განსაზღვრავს ბოლო მომსახურებული ოთახების რაოდენობას, რომლებიც გამოყენებული იქნება რიგების ლოდინის დროების გამოსათვლელად.", + "Others": "სხვები", + "Please_select_visibility": "გთხოვთ აირჩიოთ ხილვადობა", + "Role_Mapping": "როლის რუქა", + "Selected_departments": "არჩეული დეპარტამენტები", + "Selected_monitors": "არჩეული მონიტორები", + "Shortcut": "მალსახმობი", + "Tag_removed": "ტეგი ამოღებულია", + "The_selected_user_is_not_a_monitor": "არჩეული მომხმარებელი არ არის მონიტორი", + "There_are_no_available_monitors": "არ არის ხელმისაწვდომი მონიტორები" +} \ No newline at end of file diff --git a/ee/i18n/km.i18n.json b/ee/i18n/km.i18n.json new file mode 100644 index 000000000000..c657863beb44 --- /dev/null +++ b/ee/i18n/km.i18n.json @@ -0,0 +1,35 @@ +{ + "error-canned-response-not-found": "ការឆ្លើយតបដែលបានថតទុកមិនត្រូវបានរកឃើញទេ", + "error-max-number-simultaneous-chats-reached": "ចំនួនអតិបរមានៃការជជែកដំណាលគ្នាក្នុងមួយភ្នាក់ងារត្រូវបានឈានដល់។", + "Add_monitor": "បន្ថែមម៉ូនីទ័រ", + "Available_departments": "ផ្នែកដែលមាន", + "Canned Responses": "ការឆ្លើយតបដែលបានថតទុកមិនត្រូវបានរកឃើញទេ", + "Canned_Response_Removed": "ការឆ្លើយតបដែលបានថតទុកមិនត្រូវបានរកឃើញទេ", + "Canned_Responses_Enable": "បើកការឆ្លើយតបដែលអាចប្រើបាន", + "Edit_Tag": "កែសម្រួលស្លាក", + "Edit_Unit": "កែ​សម្រួល", + "Enterprise_License": "អាជ្ញាប័ណ្ណសហគ្រាស", + "Enterprise_License_Description": "ប្រសិនបើកន្លែងធ្វើការរបស់អ្នកត្រូវបានចុះឈ្មោះហើយអាជ្ញាប័ណ្ណត្រូវបានផ្តល់ដោយ Rocket.Chat Cloud អ្នកមិនចាំបាច់ធ្វើបច្ចុប្បន្នភាពអាជ្ញាប័ណ្ណដោយដៃនៅទីនេះទេ។", + "Failed_to_add_monitor": "បានបរាជ័យក្នុងការបន្ថែមម៉ូនីទ័រ", + "Invalid Canned Response": "ការឆ្លើយតបមិនត្រឹមត្រូវ", + "Invalid_Department": "នាយកដ្ឋានមិនត្រឹមត្រូវ", + "LDAP_Default_Role_To_User": "តួនាទីលំនាំដើមសម្រាប់អ្នកប្រើប្រាស់", + "LDAP_Default_Role_To_User_Description": "តួនាទី RC លំនាំដើមដែលត្រូវអនុវត្តចំពោះអ្នកប្រើប្រាស់ប្រសិនបើអ្នកប្រើប្រាស់មានតួនាទី LDAP មួយចំនួនដែលមិនត្រូវបានគូស។", + "LDAP_Enable_LDAP_Roles_To_RC_Roles": "បើកដំណើរការគូសផែនទីពី LDAP ទៅ Rocket.Chat", + "LDAP_Query_To_Get_User_Groups": "សំណួរ LDAP ដើម្បីទទួលបានក្រុមអ្នកប្រើប្រាស់", + "LDAP_Query_To_Get_User_Groups_Description": "សំណួរអិលឌីភីដើម្បីទទួលបានក្រុមអិល។ ឌី។ ភី។ ដែលអ្នកប្រើជាសមាជិក។", + "LDAP_Roles_To_Rocket_Chat_Roles": "ការគូសផែនទីពីតួនាទីពីអិល។ ឌី។ អេ។ ទៅរ៉ក់ឌឺ។", + "LDAP_Roles_To_Rocket_Chat_Roles_Description": "ការគូសផែនទីតួនាទីជាទ្រង់ទ្រាយវត្ថុដែលកូនសោវត្ថុត្រូវតែជាតួនាទីរបស់ LDAP ហើយតម្លៃវត្ថុត្រូវតែជាតួនាទីរបស់ RC ។ ឧទាហរណ៍ៈ { 'ldapRole': ['rcRole', 'anotherRCRole'] }", + "LDAP_Validate_Roles_For_Each_Login": "ធ្វើឱ្យផែនទីមានសុពលភាពសម្រាប់ការចូលនីមួយៗ", + "LDAP_Validate_Roles_For_Each_Login_Description": "ប្រសិនបើសុពលភាពគួរតែកើតឡើងសម្រាប់រាល់ការចូល (សូមប្រយ័ត្នជាមួយការកំណត់នេះព្រោះវានឹងសរសេរជាន់តួនាទីអ្នកប្រើក្នុងការចូលនីមួយៗបើមិនដូច្នេះទេវានឹងមានសុពលភាពតែនៅពេលបង្កើតអ្នកប្រើ) ។", + "Livechat_Monitors": "អ្នកត្រួតពិនិត្យ", + "Livechat_monitors": "ម៉ូនីទ័រ Livechat", + "Max_number_of_chats_per_agent": "អតិបរមា។ ចំនួននៃការជជែកក្នុងពេលដំណាលគ្នា", + "Max_number_of_chats_per_agent_description": "អតិបរមា។ ចំនួននៃការជជែកក្នុងពេលដំណាលគ្នាដែលភ្នាក់ងារអាចចូលរួម", + "Me": "ខ្ញុំ", + "Message_auditing": "សវនកម្មសារ", + "Message_auditing_log": "កំណត់ហេតុសវនកម្មសារ", + "Monitor_removed": "បានលុបម៉ូនីទ័រចេញ", + "Monitors": "អ្នកត្រួតពិនិត្យ", + "New_Canned_Response": "ការឆ្លើយតបថ្មី" +} \ No newline at end of file diff --git a/ee/i18n/ko.i18n.json b/ee/i18n/ko.i18n.json new file mode 100644 index 000000000000..c83117ddf0d3 --- /dev/null +++ b/ee/i18n/ko.i18n.json @@ -0,0 +1,9 @@ +{ + "error-canned-response-not-found": "미리 준비된 답변을 찾을 수 없음", + "Canned Responses": "미리 준비된 답변", + "Canned_Response_Removed": "미리 준비된 답변 제거", + "Edit_Tag": "태그 편집", + "Enterprise_License": "기업 라이센스", + "New_Tag": "새 태그", + "Shortcut": "바로가기" +} \ No newline at end of file diff --git a/ee/i18n/ku.i18n.json b/ee/i18n/ku.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/ku.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/lo.i18n.json b/ee/i18n/lo.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/lo.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/lt.i18n.json b/ee/i18n/lt.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/lt.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/lv.i18n.json b/ee/i18n/lv.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/lv.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/mn.i18n.json b/ee/i18n/mn.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/mn.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/ms-MY.i18n.json b/ee/i18n/ms-MY.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/ms-MY.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/nl.i18n.json b/ee/i18n/nl.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/nl.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/no.i18n.json b/ee/i18n/no.i18n.json new file mode 100644 index 000000000000..cffa2f497451 --- /dev/null +++ b/ee/i18n/no.i18n.json @@ -0,0 +1,35 @@ +{ + "error-max-number-simultaneous-chats-reached": "Det maksimale antallet samtidige chatter per agent er nådd.", + "Available_departments": "Tilgjengelige avdelinger", + "Edit_Tag": "Endre tagg", + "Edit_Unit": "Endre enhet", + "Enterprise_License": "Enterpriselisens", + "Enterprise_License_Description": "Hvis arbeidsområdet ditt er registrert og lisensen er levert av Rocket.Chat Cloud trenger du ikke å oppdatere lisensen manuelt her.", + "Invalid_Department": "Ugyldig avdeling", + "LDAP_Default_Role_To_User": "Standardrolle for bruker", + "LDAP_Enable_LDAP_Roles_To_RC_Roles": "Aktivér rolletilknytning gjennom LDAP til Rocket.Chat", + "LDAP_Query_To_Get_User_Groups": "LDAP-spørring for å få brukergrupper", + "LDAP_Query_To_Get_User_Groups_Description": "LDAP-spørring for å få LDAP-gruppene en bruker er med i.", + "LDAP_Roles_To_Rocket_Chat_Roles": "Kobling for roller fra LDAP til Rocket.Chat.", + "Max_number_of_chats_per_agent": "Maks antall samtidige chatter", + "Max_number_of_chats_per_agent_description": "Maks antall samtidige chatter en agent kan delta i", + "Me": "Meg", + "New_Tag": "Ny tagg", + "New_Unit": "Ny enhet", + "Number_of_most_recent_chats_estimate_wait_time": "Antall nylige chatter for å beregne estimert ventetid", + "Number_of_most_recent_chats_estimate_wait_time_description": "Dette tallet definerer antall sist betjente rom som skal brukes til å beregne ventetid for kø.", + "Others": "Andre", + "Please_select_visibility": "Vennligst velg an synlighet", + "Role_Mapping": "Rollekobling", + "Selected_departments": "Valgte avdelinger", + "Shortcut": "Snarvei", + "Tag_removed": "Tagg fjernet", + "There_are_no_departments_added_to_this_tag_yet": "Ingen enheter er lagt til denne taggen enda", + "There_are_no_departments_added_to_this_unit_yet": "Ingen avdelinger er lagt til denne enheten enda", + "There_are_no_departments_available": "Det er ingen tilgjengelige avdelinger", + "Unit_removed": "Enhet fjernet", + "Use_this_response": "Bruk dette svaret", + "Waiting_queue": "Kø", + "Waiting_queue_message": "Melding for kø", + "Waiting_queue_message_description": "Melding som vises til besøkende når de er i kø" +} \ No newline at end of file diff --git a/ee/i18n/pl.i18n.json b/ee/i18n/pl.i18n.json new file mode 100644 index 000000000000..a16fa1af79a5 --- /dev/null +++ b/ee/i18n/pl.i18n.json @@ -0,0 +1,39 @@ +{ + "Add_monitor": "Dodaj monitor", + "Available_departments": "Dostępne oddziały", + "Edit_Unit": "Edycja jednostki", + "Enterprise_License": "Licencja Enterprise", + "Failed_to_add_monitor": "Nieudane dodanie monitora", + "Invalid_Department": "Błędny oddział", + "LDAP_Default_Role_To_User": "Domyślna rola dla użytkownika", + "LDAP_Default_Role_To_User_Description": "Zostanie użyta domyślna rola RC jeżeli użytkownik ma jakąś rolę LDAP która nie jest zamapowana.", + "LDAP_Enable_LDAP_Roles_To_RC_Roles": "Włącz mapowanie ról z LDAP do Rocket.Chat", + "LDAP_Query_To_Get_User_Groups": "Zapytanie LDAP do pobrania grup użytkownika", + "LDAP_Query_To_Get_User_Groups_Description": "Zapytanie LDAP do pobrania grup w których uczestniczy użytkownik", + "LDAP_Roles_To_Rocket_Chat_Roles": "Mapowanie ról z LDAP do Rocket.Chat", + "LDAP_Validate_Roles_For_Each_Login": "Zweryfikuj mapowanie przy każdym logowaniu", + "Livechat_Monitors": "Monitory", + "Livechat_monitors": "Monitory Livechat", + "Max_number_of_chats_per_agent": "Maksymalna liczba jednoczesnych rozmów", + "Max_number_of_chats_per_agent_description": "Maksymalna liczba jednoczestnych rozmów w których mogą uczestniczyć agenci", + "Me": "Ja", + "Message_auditing": "Audyt wiadomości", + "Message_auditing_log": "Log audytu wiadomości", + "Monitor_removed": "Monitor usunięty", + "Monitors": "Monitory", + "New_Tag": "Nowy znacznik", + "New_Unit": "Nowa jednostka", + "Others": "Inni", + "Please_select_visibility": "Proszę wybrać widoczność", + "Role_Mapping": "Mapowanie ról", + "Selected_departments": "Wybrane oddziały", + "Selected_monitors": "Wybrane monitory", + "Shortcut": "Skrót", + "Tag_removed": "Tag usunięty", + "The_selected_user_is_not_a_monitor": "Wybrany użytkownik nie jest monitorem", + "There_are_no_available_monitors": "Nie ma dostepnych monitorów", + "There_are_no_departments_added_to_this_tag_yet": "Nie ma jeszcze oddziałów przypisanych do tego tagu", + "There_are_no_departments_added_to_this_unit_yet": "Nie ma jeszcze oddziałów przypisanych do dej jednostki", + "There_are_no_departments_available": "Nie ma dostępnych oddziałów", + "Waiting_queue": "Kolejka oczekujących" +} \ No newline at end of file diff --git a/ee/i18n/pt-BR.i18n.json b/ee/i18n/pt-BR.i18n.json index 6f1b8d857c7e..d995cda488e3 100644 --- a/ee/i18n/pt-BR.i18n.json +++ b/ee/i18n/pt-BR.i18n.json @@ -6,6 +6,7 @@ "Edit_Unit": "Editar Unidade", "Enterprise_License": "Licença Enterprise", "Enterprise_License_Description": "Se você registrou seu workspace e a licença foi fornecida pelo Rocket.Chat Cloud você não precisa atualizar a licença manualmente aqui.", + "Invalid_Department": "Departamento inválido", "LDAP_Default_Role_To_User": "Papel padrão para o usuário", "LDAP_Default_Role_To_User_Description": "Papel padrão par ser aplicado ao usuário, caso ele tenha algum papel do LDAP que não esteja mapeado.", "LDAP_Enable_LDAP_Roles_To_RC_Roles": "Habilitar o mapeamento de papéis do LDAP para o Rocket.Chat", @@ -42,9 +43,10 @@ "There_are_no_monitors_added_to_this_unit_yet": "Ainda não há monitores adicionado nesta unidade", "This_monitor_was_already_selected": "Este monitor já foi selecionado", "Unit_removed": "Unidade Removida", + "Use_this_response": "Use esta resposta", "view-livechat-monitor": "Visualizar Monitores de Livechat", "view-livechat-unit": "Visualizar Unidades de Livechat", "Waiting_queue": "Fila de espera", "Waiting_queue_message": "Mensagem de fila de espera", "Waiting_queue_message_description": "Mensagem que será exibida aos visitantes quando eles entrarem na fila de espera" -} +} \ No newline at end of file diff --git a/ee/i18n/pt.i18n.json b/ee/i18n/pt.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/pt.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/ro.i18n.json b/ee/i18n/ro.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/ro.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/ru.i18n.json b/ee/i18n/ru.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/ru.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/sk-SK.i18n.json b/ee/i18n/sk-SK.i18n.json new file mode 100644 index 000000000000..e688f630793e --- /dev/null +++ b/ee/i18n/sk-SK.i18n.json @@ -0,0 +1,12 @@ +{ + "error-canned-response-not-found": "Zakonzervovaná odpoveď sa nenašla", + "error-max-number-simultaneous-chats-reached": "Bol dosiahnutý maximálny počet súbežných konverzácií na operátora.", + "Add_monitor": "Pridať vedúceho", + "Available_departments": "Dostupné oddelenia", + "Canned Responses": "Zakonzervované odpovede", + "Canned_Response_Removed": "Zakonzervované odpovede odstránené", + "Canned_Responses_Enable": "Povoliť zakonzervované odpovede", + "Edit_Tag": "Upraviť štítok", + "Edit_Unit": "Upraviť skupinu", + "Enterprise_License": "Enterprise licencia" +} \ No newline at end of file diff --git a/ee/i18n/sl-SI.i18n.json b/ee/i18n/sl-SI.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/sl-SI.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/sq.i18n.json b/ee/i18n/sq.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/sq.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/sr.i18n.json b/ee/i18n/sr.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/sr.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/sv.i18n.json b/ee/i18n/sv.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/sv.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/ta-IN.i18n.json b/ee/i18n/ta-IN.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/ta-IN.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/th-TH.i18n.json b/ee/i18n/th-TH.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/th-TH.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/tr.i18n.json b/ee/i18n/tr.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/tr.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/ug.i18n.json b/ee/i18n/ug.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/ug.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/uk.i18n.json b/ee/i18n/uk.i18n.json new file mode 100644 index 000000000000..116fcac6e6d0 --- /dev/null +++ b/ee/i18n/uk.i18n.json @@ -0,0 +1,4 @@ +{ + "error-max-number-simultaneous-chats-reached": "Досягнуто максимальної кількості одночасних чатів на одного представника.", + "New_Tag": "Новий тег" +} \ No newline at end of file diff --git a/ee/i18n/vi-VN.i18n.json b/ee/i18n/vi-VN.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/vi-VN.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/zh-HK.i18n.json b/ee/i18n/zh-HK.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/zh-HK.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/ee/i18n/zh-TW.i18n.json b/ee/i18n/zh-TW.i18n.json new file mode 100644 index 000000000000..26bc3d76fba0 --- /dev/null +++ b/ee/i18n/zh-TW.i18n.json @@ -0,0 +1,62 @@ +{ + "error-canned-response-not-found": "找不到罐頭訊息", + "error-max-number-simultaneous-chats-reached": "已達到每個代理的最大同時聊天數。", + "Add_monitor": "新增監控", + "Available_departments": "可用的部門", + "Canned Responses": "罐頭訊息", + "Canned_Response_Removed": "罐頭訊息已刪除", + "Canned_Responses_Enable": "啟用罐頭訊息", + "Edit_Tag": "編輯標籤", + "Edit_Unit": "編輯單位", + "Enterprise_License": "企業授權", + "Enterprise_License_Description": "如果您的工作區已註冊,並且授權是由Rocket.Chat Cloud提供的,則無需在此處手動更新授權。", + "Failed_to_add_monitor": "新增監控失敗", + "Invalid Canned Response": "無效的罐頭訊息", + "Invalid_Department": "無效的部門", + "LDAP_Default_Role_To_User": "給使用者的預設角色", + "LDAP_Default_Role_To_User_Description": "如果使用者具有某些未對應的 LDAP 身份,則將套用於使用者的預設 RC 身份。", + "LDAP_Enable_LDAP_Roles_To_RC_Roles": "啟用從 LDAP 到 Rocket.Chat 的對應身份", + "LDAP_Query_To_Get_User_Groups": "LDAP 查詢以取得使用者群組", + "LDAP_Query_To_Get_User_Groups_Description": "LDAP 查詢以取得使用者所屬的 LDAP 群組。", + "LDAP_Roles_To_Rocket_Chat_Roles": "從 LDAP 到 Rocket.Chat 的對應身份。", + "LDAP_Roles_To_Rocket_Chat_Roles_Description": "對象格式的對應身份,其中對象鍵必須是 LDAP 身份,並且對象值必須是 RC 身份群組。例如:{ 'ldapRole': ['rcRole', 'anotherRCRole'] }", + "LDAP_Validate_Roles_For_Each_Login": "驗證每個登入名的對應", + "LDAP_Validate_Roles_For_Each_Login_Description": "如果每次登入都要進行驗證(請謹慎使用此設定,因為它將覆寫每次登入中的使用者身份,否則僅在建立使用者時進行驗證)。", + "Livechat_Monitors": "監控", + "Livechat_monitors": "即時聊天監控", + "Max_number_of_chats_per_agent": "最大同時聊天數", + "Max_number_of_chats_per_agent_description": "最大代理可以參加的同時聊天數", + "Me": "我", + "Message_auditing": "訊息稽核", + "Message_auditing_log": "訊息稽核日誌", + "Monitor_removed": "監控已移除", + "Monitors": "監控", + "New_Canned_Response": "新的罐頭訊息", + "New_Tag": "新的標籤", + "New_Unit": "新的單位", + "No_Canned_Responses": "沒有罐頭訊息", + "Number_of_most_recent_chats_estimate_wait_time": "最近聊天的次數以計算預估的等待時間", + "Number_of_most_recent_chats_estimate_wait_time_description": "此數字定義將用於計算隊列等待時間的最後服務房間數。", + "Others": "其他", + "Please_select_visibility": "請選擇可視度", + "Role_Mapping": "對應身份", + "Selected_departments": "已選擇的部門", + "Selected_monitors": "已選擇的監控", + "Shortcut": "捷徑", + "Tag_removed": "標籤已刪除", + "The_selected_user_is_not_a_monitor": "已選擇的使用者不是監控者", + "There_are_no_available_monitors": "沒有可用的監控者", + "There_are_no_departments_added_to_this_tag_yet": "尚未將此標籤增加到任何部門", + "There_are_no_departments_added_to_this_unit_yet": "尚未將此部門增加到任何單位", + "There_are_no_departments_available": "沒有可用的部門", + "There_are_no_monitors_added_to_this_unit_yet": "尚未將監控增加到這個單位", + "This_monitor_was_already_selected": "這個監控已選取", + "Unit_removed": "單位已刪除", + "Use_this_response": "使用這個回應", + "view-canned-responses": "查看罐頭訊息", + "view-livechat-monitor": "檢視即時聊天監控", + "view-livechat-unit": "檢視即時聊天單位", + "Waiting_queue": "等待佇列", + "Waiting_queue_message": "等待佇列訊息", + "Waiting_queue_message_description": "訪客進入佇列時將顯示給他們的訊息" +} \ No newline at end of file diff --git a/ee/i18n/zh.i18n.json b/ee/i18n/zh.i18n.json new file mode 100644 index 000000000000..6f31cf5a2e62 --- /dev/null +++ b/ee/i18n/zh.i18n.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/packages/rocketchat-i18n/i18n/af.i18n.json b/packages/rocketchat-i18n/i18n/af.i18n.json index 6407358be541..c1898107a0ea 100644 --- a/packages/rocketchat-i18n/i18n/af.i18n.json +++ b/packages/rocketchat-i18n/i18n/af.i18n.json @@ -1298,6 +1298,7 @@ "if_they_are_from": "(as hulle van %s is)", "If_this_email_is_registered": "As hierdie e-pos geregistreer is, stuur ons instruksies oor hoe om u wagwoord terug te stel. As jy nie binnekort 'n e-pos ontvang nie, kom asseblief terug en probeer weer.", "If_you_are_sure_type_in_your_password": "As jy seker is, tik jou wagwoord in:", + "Members_List": "Lede Lys", "If_you_are_sure_type_in_your_username": "As jy seker is, tik jou gebruikersnaam in:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "As jy nie een het nie, stuur 'n e-pos aan [omni@rocket.chat] (mailto: omni@rocket.chat) om joune te kry.", "Iframe_Integration": "Iframe Integrasie", @@ -1670,6 +1671,7 @@ "Mail_Message_No_messages_selected_select_all": "Jy het geen boodskappe gekies nie", "Mail_Messages": "Pos boodskappe", "Mail_Messages_Instructions": "Kies watter boodskappe u per e-pos wil stuur deur op die boodskappe te klik", + "Room_uploaded_file_list": "Lêer lys", "Mail_Messages_Subject": "Hier is 'n geselekteerde gedeelte van%s boodskappe", "Mailer": "Mailer", "Mailer_body_tags": "Jy moet gebruik vir die intekeningskripsie.
        Jy mag [name], [fname], [lname] vir die volle naam, voornaam of van die gebruiker gebruik.
        Jy mag [e-pos] gebruik vir die gebruiker se e-pos.", @@ -1711,7 +1713,6 @@ "Max_length_is": "Maksimum lengte is%s", "Media": "media", "Medium": "medium", - "Members_List": "Lede Lys", "mention-all": "Noem alles", "mention-all_description": "Toestemming om die @all vermelding te gebruik", "mention-here": "Noem hier", @@ -2203,7 +2204,6 @@ "Room_type_changed_successfully": "Kamer type verander suksesvol", "Room_type_of_default_rooms_cant_be_changed": "Hierdie is 'n verstek kamer en die tipe kan nie verander word nie. Raadpleeg asseblief u administrateur.", "Room_unarchived": "Kamer unarchived", - "Room_uploaded_file_list": "Lêer lys", "Room_uploaded_file_list_empty": "Geen lêers beskikbaar nie.", "Rooms": "kamers", "run-import": "Begin invoer", @@ -2558,6 +2558,7 @@ "Trigger_Words": "Trigger Words", "Triggers": "snellers", "True": "True", + "Troubleshoot_Disable_Notifications": "Deaktiveer kennisgewings", "Tuesday": "Dinsdag", "Turn_OFF": "Skakel af", "Turn_ON": "Sit aan", diff --git a/packages/rocketchat-i18n/i18n/ar.i18n.json b/packages/rocketchat-i18n/i18n/ar.i18n.json index 0b53f188f9f8..7eb8a15f4700 100644 --- a/packages/rocketchat-i18n/i18n/ar.i18n.json +++ b/packages/rocketchat-i18n/i18n/ar.i18n.json @@ -1298,6 +1298,7 @@ "if_they_are_from": "(إذا كانوا من٪ s)", "If_this_email_is_registered": "إذا تم تسجيل هذا البريد الإلكتروني، فسنرسل إرشادات حول كيفية إعادة تعيين كلمة المرور. إذا لم تتلق رسالة إلكترونية بعد قليل، فيرجى العودة وإعادة المحاولة.", "If_you_are_sure_type_in_your_password": "إدا كنت متأكد أدخل كلمة المرور الخاصة بك:", + "Members_List": "قائمة الأعضاء", "If_you_are_sure_type_in_your_username": "إذا كنت متأكدا من نوع في اسم المستخدم الخاص بك:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "إذا لم يكن لديك واحد إرسال بريد إلكتروني إلى [omni@rocket.chat] (مايلتو: omni@rocket.chat) للحصول على لك.", "Iframe_Integration": "دمج Iframe", @@ -1670,6 +1671,7 @@ "Mail_Message_No_messages_selected_select_all": "لم تقم بتحديد أي رسالة. هل تريد أن تحدد جميع الرسائل الظاهرة؟", "Mail_Messages": "إرسال الرسائل للبريد الألكتروني", "Mail_Messages_Instructions": "حدد الرسائل المراد إرسالها بالبريد الإلكتروني بالضغط على تلك الرسائل", + "Room_uploaded_file_list": "قائمة الملفات", "Mail_Messages_Subject": "مجموعة مختارة من رسائل %s", "Mailer": "الارسال", "Mailer_body_tags": "يجب عليك استخدام[unsubscribe] للارتباط إلغاء الاشتراك.
        يمكنك استخدام [name]، [fname]، [lname] عن الاسم الكامل للمستخدم، الاسم الأول أو اسم العائلة، على التوالي.
        يمكنك استخدام [email] للبريد الإلكتروني الخاص بالمستخدم.", @@ -1711,7 +1713,6 @@ "Max_length_is": "الحد الأقصى للطول هو %s", "Media": "وسائل الإعلام", "Medium": "متوسط", - "Members_List": "قائمة الأعضاء", "mention-all": "ذكر الجميع", "mention-all_description": "إذن لاستخدامall أذكر", "mention-here": "أذكر هنا", @@ -2203,7 +2204,6 @@ "Room_type_changed_successfully": "تم تغيير نوع الغرفة بنجاح", "Room_type_of_default_rooms_cant_be_changed": "هذه غرفة افتراضية. لا يُمكن تغيير المكتوب. الرجاء الاتصال بالمدير!", "Room_unarchived": "غرفة نشطة", - "Room_uploaded_file_list": "قائمة الملفات", "Room_uploaded_file_list_empty": "لا يوجد ملفات.", "Rooms": "الغرف", "run-import": "تشغيل الاستيراد", @@ -2558,6 +2558,7 @@ "Trigger_Words": "الكلمات الزناد", "Triggers": "محفزات", "True": "نعم", + "Troubleshoot_Disable_Notifications": "إلغاء تفعيل الإشعارات", "Tuesday": "الثلاثاء", "Turn_OFF": "أطفأ", "Turn_ON": "شغله", diff --git a/packages/rocketchat-i18n/i18n/az.i18n.json b/packages/rocketchat-i18n/i18n/az.i18n.json index a5cf7d771297..dc3e71a6462c 100644 --- a/packages/rocketchat-i18n/i18n/az.i18n.json +++ b/packages/rocketchat-i18n/i18n/az.i18n.json @@ -1298,6 +1298,7 @@ "if_they_are_from": "(%s olduğundan)", "If_this_email_is_registered": "Bu e-poçt qeydə alındıqda, parolunuzu necə sıfırlayacağına dair təlimatlar göndərəcəyik. Qısa müddətdə bir e-poçt almazsan, geri qayıdın və yenidən cəhd edin.", "If_you_are_sure_type_in_your_password": "Şifrənizdə əminəmsə:", + "Members_List": "İstifadəçi siyahısı", "If_you_are_sure_type_in_your_username": "İstifadəçi adınızdakı tipə əminsəniz:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Əgər biriniz yoxsa [omni@rocket.chat] ünvanına (mailto: omni@rocket.chat) bir e-poçt göndərmək istəyirsinizsə.", "Iframe_Integration": "Iframe inteqrasiyası", @@ -1670,6 +1671,7 @@ "Mail_Message_No_messages_selected_select_all": "Siz heç bir mesaj seçmədiniz", "Mail_Messages": "Mail Mesajları", "Mail_Messages_Instructions": "Mesajları tıklayaraq e-poçt vasitəsilə göndərmək istədiyiniz mesajı seçin", + "Room_uploaded_file_list": "Fayl siyahısı", "Mail_Messages_Subject": "%s mesajlarının seçilmiş bir hissəsi", "Mailer": "Mailer", "Mailer_body_tags": "Siz abunə bağlantısı bağlantısı üçün [abunəlikdən] istifadə etməlisiniz.
        Siz istifadəçinin tam adı, soyadı və soyadı üçün [ad], [fname], [lname] istifadə edə bilərsiniz.
        İstifadəçinin e-poçtu üçün [email] istifadə edə bilərsiniz.", @@ -1711,7 +1713,6 @@ "Max_length_is": "Maksimum uzunluq%sdir", "Media": "Media", "Medium": "Orta", - "Members_List": "İstifadəçi siyahısı", "mention-all": "Bütünləri xatırla", "mention-all_description": "İstifadə etmək üçün icazəni qeyd edin", "mention-here": "Burada qeyd edin", @@ -2203,7 +2204,6 @@ "Room_type_changed_successfully": "Otaq tipi uğurla dəyişdi", "Room_type_of_default_rooms_cant_be_changed": "Bu standart bir otaqdır və növü dəyişdirilə bilməz, xahiş edirik administratorla məsləhətləşin.", "Room_unarchived": "Otaq arxivləşdirildi", - "Room_uploaded_file_list": "Fayl siyahısı", "Room_uploaded_file_list_empty": "Heç bir fayl yoxdur.", "Rooms": "Otaqlar", "run-import": "İşıqlandırın", @@ -2558,6 +2558,7 @@ "Trigger_Words": "Tetikleyici sözlər", "Triggers": "Tetikler", "True": "Doğru", + "Troubleshoot_Disable_Notifications": "Bildirişləri işdən çıxarın", "Tuesday": "Cümə axşamı", "Turn_OFF": "Söndür", "Turn_ON": "İşə sal", diff --git a/packages/rocketchat-i18n/i18n/be-BY.i18n.json b/packages/rocketchat-i18n/i18n/be-BY.i18n.json index 8a86c9fe4755..5f5ba55007fc 100644 --- a/packages/rocketchat-i18n/i18n/be-BY.i18n.json +++ b/packages/rocketchat-i18n/i18n/be-BY.i18n.json @@ -1311,6 +1311,7 @@ "if_they_are_from": "(Калі яны ад %s)", "If_this_email_is_registered": "Калі гэты ліст зарэгістравана, мы адправім інструкцыі па аднаўленні пароля. Калі вы не атрымаеце па электроннай пошце ў бліжэйшы час, калі ласка, вярніцеся і паспрабуйце ізноў.", "If_you_are_sure_type_in_your_password": "Калі вы ўпэўненыя, увядзіце свой пароль:", + "Members_List": "карыстальнікі", "If_you_are_sure_type_in_your_username": "Калі вы ўпэўненыя, увядзіце ваша імя карыстальніка:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Калі вы не маеце адзін адправіць па электроннай пошце [omni@rocket.chat] (па адрасе: omni@rocket.chat), каб атрымаць ваш.", "Iframe_Integration": "Iframe інтэграцыі", @@ -1683,6 +1684,7 @@ "Mail_Message_No_messages_selected_select_all": "Вы не абралі ні аднаго паведамлення", "Mail_Messages": "паштовыя паведамленні", "Mail_Messages_Instructions": "Выберыце, якія паведамленні вы хочаце адправіць па электроннай пошце, націснуўшы на паведамленні", + "Room_uploaded_file_list": "спіс файлаў", "Mail_Messages_Subject": "Вось абраная частка %s паведамленняў", "Mailer": "рассыланне", "Mailer_body_tags": "Вы павіненвыкарыстоўваць [адпіскі] для адпіскі спасылкі.
        вы можаце выкарыстоўваць [імя], [імя_файла], [LNAME] поўнае імя карыстальніка, імя або прозвішча, адпаведна.
        Вы можаце выкарыстоўваць [EMAIL] для электроннай пошты карыстальніка.", @@ -1724,7 +1726,6 @@ "Max_length_is": "Максімальная даўжыня складае %s", "Media": "сродкі масавай інфармацыі", "Medium": "серада", - "Members_List": "карыстальнікі", "mention-all": "любое All", "mention-all_description": "Дазвол на выкарыстанне згадкі @all", "mention-here": "любое тут", @@ -2217,7 +2218,6 @@ "Room_type_changed_successfully": "Тып нумара паспяхова зменены", "Room_type_of_default_rooms_cant_be_changed": "Гэта нумар па змаўчанні і тып не можа быць зменены, калі ласка, звярніцеся да адміністратара.", "Room_unarchived": "нумар разархіваваць", - "Room_uploaded_file_list": "спіс файлаў", "Room_uploaded_file_list_empty": "Няма даступных файлаў.", "Rooms": "пакоя", "run-import": "выканаць імпарт", @@ -2573,6 +2573,7 @@ "Trigger_Words": "словы запуску", "Triggers": "трыгеры", "True": "праўда", + "Troubleshoot_Disable_Notifications": "адключыць апавяшчэння", "Tuesday": "аўторак", "Turn_OFF": "Выключыць", "Turn_ON": "Уключыць", diff --git a/packages/rocketchat-i18n/i18n/bg.i18n.json b/packages/rocketchat-i18n/i18n/bg.i18n.json index 61863fa60072..77643dbd88a6 100644 --- a/packages/rocketchat-i18n/i18n/bg.i18n.json +++ b/packages/rocketchat-i18n/i18n/bg.i18n.json @@ -1298,6 +1298,7 @@ "if_they_are_from": "(ако са от %s)", "If_this_email_is_registered": "Ако този имейл е регистриран, ще изпратим инструкции как да зададете нова парола. Ако скоро не получите имейл, моля, върнете се и опитайте отново.", "If_you_are_sure_type_in_your_password": "Ако сте сигурни, въведете паролата си:", + "Members_List": "Списък с членовете", "If_you_are_sure_type_in_your_username": "Ако сте сигурни, въведете потребителското си име:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Ако нямате такъв, изпратете имейл до [omni@rocket.chat] (mailto: omni@rocket.chat), за да получите вашето.", "Iframe_Integration": "Вътрешна интеграция", @@ -1670,6 +1671,7 @@ "Mail_Message_No_messages_selected_select_all": "Не сте избрали никакви съобщения", "Mail_Messages": "Съобщения по пощата", "Mail_Messages_Instructions": "Изберете кои съобщения искате да изпратите по имейл, като кликнете върху съобщенията", + "Room_uploaded_file_list": "Списък с файлове", "Mail_Messages_Subject": "Ето избрана част от съобщенията %s", "Mailer": "подател", "Mailer_body_tags": "Вие трябвада използвате [unsubscribe] за връзката за отписване.

        Можете да използвате [имейл] за имейла на потребителя.", @@ -1711,7 +1713,6 @@ "Max_length_is": "Максималната дължина е %s", "Media": "средства", "Medium": "среда", - "Members_List": "Списък с членовете", "mention-all": "Споменаване на всичко", "mention-all_description": "Разрешение за използване на @ цялото споменаване", "mention-here": "Споменете тук", @@ -2203,7 +2204,6 @@ "Room_type_changed_successfully": "Типът стая се промени успешно", "Room_type_of_default_rooms_cant_be_changed": "Това е стая по подразбиране и типът не може да бъде променен, моля, консултирайте се с администратора си.", "Room_unarchived": "Стаята не е архивирана", - "Room_uploaded_file_list": "Списък с файлове", "Room_uploaded_file_list_empty": "Няма налични файлове.", "Rooms": "Стаий", "run-import": "Стартирайте импортирането", @@ -2558,6 +2558,7 @@ "Trigger_Words": "Думи за задействане", "Triggers": "тригери", "True": "Вярно", + "Troubleshoot_Disable_Notifications": "Деактивиране на известията", "Tuesday": "вторник", "Turn_OFF": "Изключи", "Turn_ON": "Включи", diff --git a/packages/rocketchat-i18n/i18n/bs.i18n.json b/packages/rocketchat-i18n/i18n/bs.i18n.json index 7fe0f078d6c1..7daa731ed5fa 100644 --- a/packages/rocketchat-i18n/i18n/bs.i18n.json +++ b/packages/rocketchat-i18n/i18n/bs.i18n.json @@ -1296,6 +1296,7 @@ "if_they_are_from": "(ako su iz %s)", "If_this_email_is_registered": "Ako je ova e-poruka registrirana, poslat ćemo vam upute o tome kako poništiti zaporku. Ako uskoro ne primite e-poruku, vratite se i pokušajte ponovo.", "If_you_are_sure_type_in_your_password": "Ako ste sigurni upišite svoju lozinku:", + "Members_List": "Lista Članova", "If_you_are_sure_type_in_your_username": "Ako ste sigurni upišite svoje korisničko ime:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Ako nemate nekoga, pošaljite e-poštu na adresu [omni@rocket.chat] (mailto: omni@rocket.chat) kako biste dobili svoj.", "Iframe_Integration": "Integracija iframea", @@ -1668,6 +1669,7 @@ "Mail_Message_No_messages_selected_select_all": "Niste odabrali nikakve poruke.", "Mail_Messages": "Email Poruke", "Mail_Messages_Instructions": "Odaberite koje poruke želite poslati putem e-maila klikom na poruke", + "Room_uploaded_file_list": "Popis datoteka", "Mail_Messages_Subject": "Evo odabrani dio %s poruka", "Mailer": "Mailer", "Mailer_body_tags": "Morate koristiti [unsubscribe] za otkazivanje pretplate.
        Možete koristiti [name], [fname], [lname] za korisnikovo ime i prezime, ime i prezime
         Možete koristiti [email] za e-poštu korisnika.", @@ -1709,7 +1711,6 @@ "Max_length_is": "Maksimalna dužina je %s", "Media": "media", "Medium": "Srednji", - "Members_List": "Lista Članova", "mention-all": "Spominjati sve", "mention-all_description": "Dopuštenje za korištenje @all spomen", "mention-here": "Ovdje spomenuti", @@ -2201,7 +2202,6 @@ "Room_type_changed_successfully": "Vrsta sobe je uspješno promijenjena", "Room_type_of_default_rooms_cant_be_changed": "Ovo je zadana soba i vrsta se ne može mijenjati, obratite se svom administratoru.", "Room_unarchived": "Soba je dearhivirana", - "Room_uploaded_file_list": "Popis datoteka", "Room_uploaded_file_list_empty": "Nijedna datoteka nije dostupna", "Rooms": "Sobe", "run-import": "Pokreni uvoz", @@ -2556,6 +2556,7 @@ "Trigger_Words": "Riječi okidača", "Triggers": "Okidači", "True": "Da", + "Troubleshoot_Disable_Notifications": "Onemogućivanje obavijesti", "Tuesday": "Utorak", "Turn_OFF": "Isključiti", "Turn_ON": "Upaliti", diff --git a/packages/rocketchat-i18n/i18n/ca.i18n.json b/packages/rocketchat-i18n/i18n/ca.i18n.json index 7d060a3e35e3..e754098f4026 100644 --- a/packages/rocketchat-i18n/i18n/ca.i18n.json +++ b/packages/rocketchat-i18n/i18n/ca.i18n.json @@ -1448,6 +1448,7 @@ "if_they_are_from": "(si són de %s)", "If_this_email_is_registered": "Si l'adreça de correu-e ja està registrada, t'enviarem instruccions sobre com restablir la contrasenya. Si no reps el missatge en breu, si us plau torna i reintenta-ho.", "If_you_are_sure_type_in_your_password": "Si n'està segur escrigui la contrasenya:", + "Members_List": "Llista de membres", "If_you_are_sure_type_in_your_username": "Si n'està segur escrigui el seu nom d'usuari:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Si no n'hi ha, envieu un correu electrònic a [omni@rocket.chat] (mailto: omni@rocket.chat) per obtenir el vostre.", "Iframe_Integration": "Integració Iframe", @@ -1820,6 +1821,7 @@ "Mail_Message_No_messages_selected_select_all": "No s'ha seleccionat cap missatge", "Mail_Messages": "Envia missatges per correu-e", "Mail_Messages_Instructions": "Seleccioneu els missatges que voleu enviar per correu electrònic fent clic als mateixos", + "Room_uploaded_file_list": "Llista d'arxius pujats", "Mail_Messages_Subject": "Aquí hi ha una part seleccionada de %s missatges", "Mailer": "Missatge correu-e", "Mailer_body_tags": "És necessari utilitzar [unsubscribe] per a l'enllaç d'anul·lació de la subscripció.
        És possible utilitzar [name], [fname], [lname] per al nom complet de l'usuari, nom o cognom, respectivament.
        També [email] per a l'adreça de correu electrònic de l'usuari.", @@ -1861,7 +1863,6 @@ "Max_length_is": "La llargada màxima és %s", "Media": "Mitjans de comunicació", "Medium": "Mitjà", - "Members_List": "Llista de membres", "mention-all": "Mencionar tots", "mention-all_description": "Permís per utilitzar la menció @all", "mention-here": "Menció aquí", @@ -2353,7 +2354,6 @@ "Room_type_changed_successfully": "El tipus de sala s'ha canviat correctament", "Room_type_of_default_rooms_cant_be_changed": "Aquesta és una sala per defecte i no es pot canviar el tipus, si us plau consulta-ho amb l'administrador.", "Room_unarchived": "La sala s'ha desarxivat", - "Room_uploaded_file_list": "Llista d'arxius pujats", "Room_uploaded_file_list_empty": "No hi ha cap arxiu.", "Rooms": "Sales", "run-import": "Executar importació", @@ -2708,6 +2708,7 @@ "Trigger_Words": "Paraules d'activació", "Triggers": "Activadors (triggers)", "True": "Sí", + "Troubleshoot_Disable_Notifications": "Desactiva notificacions", "Tuesday": "dimarts", "Turn_OFF": "DESACTIVA", "Turn_ON": "ACTIVA", diff --git a/packages/rocketchat-i18n/i18n/cs.i18n.json b/packages/rocketchat-i18n/i18n/cs.i18n.json index 85996b8493db..1f6153096e61 100644 --- a/packages/rocketchat-i18n/i18n/cs.i18n.json +++ b/packages/rocketchat-i18n/i18n/cs.i18n.json @@ -203,16 +203,33 @@ "Accounts_Directory_DefaultView": "Výchozí seznam adresářů", "Accounts_SetDefaultAvatar": "Nastavit výchozí avatar", "Accounts_SetDefaultAvatar_Description": "Pokusí se určit výchozí avatar na základě OAuth účtu nebo gravataru", + "Accounts_Set_Email_Of_External_Accounts_as_Verified": "Nastavit email účtů z externích služeb jako ověřený", + "Accounts_Set_Email_Of_External_Accounts_as_Verified_Description": "Emaily účtů ze služeb jako LDAP, OAuth, atd. budou automaticky ověřené", "Accounts_ShowFormLogin": "Zobrazit výchozí formulář přihlášení", + "Accounts_TwoFactorAuthentication_By_Email_Enabled": "Povolit dvoufázové ověření přes email", + "Accounts_TwoFactorAuthentication_By_Email_Enabled_Description": "Uživatelé s ověřeným emailem kteří si tuto možnost povolí v nastavení, obdrží emailem jednorázový kód pro autorizaci akcí jako přihlášení, změna nastavení a podobně.", + "Accounts_TwoFactorAuthentication_By_Email_Auto_Opt_In": "Automaticky zapnout dvoufázové ověření novým uživatelům", + "Accounts_TwoFactorAuthentication_By_Email_Auto_Opt_In_Description": "Nový uživatelé mají dvoufázové ověření zapnuté vždy, ale mohou si je vypnout v nastavení", + "Accounts_TwoFactorAuthentication_By_Email_Code_Expiration": "Doba expirace kódu v sekundách", "Accounts_TwoFactorAuthentication_Enabled": "Povolit dvoufázové ověření", + "Accounts_TwoFactorAuthentication_Enabled_Description": "Uživatelé si mohou nastavit dvoufázové ověření přes TOTP aplikace jako jsou Google Authenticator, Authy apod.", "Accounts_TwoFactorAuthentication_MaxDelta": "Maximální Delta", "Accounts_UserAddedEmail_Default": "

        Vítá Vás [Site_Name]

        Přejděte na [Site_URL] a zkuste to nejlepší open source chat řešení na trhu!

        Můžete se přihlásit pomocí e-mailu: [email] a hesla: [password]. Po přihlášení jej možná budete muset změnit.", "Accounts_TwoFactorAuthentication_MaxDelta_Description": "Maximální hodnota Delta určuje, kolik tokenů je v daném okamžiku platných. Tokeny jsou generovány každých 30 sekund a platí (30 * Maximální Delta) sekund.
        Příklad: Pokud je maximální Delta nastavena na 10, může být každý token použit až do 300 sekund před nebo po jeho časovém razítku. Tato funkce se může hodit, pokud nejsou hodiny klienta správně synchronizovány se serverem.", + "Accounts_TwoFactorAuthentication_RememberFor": "Zapamatovat dvoufázové ověření po dobu (v sekundách)", + "Accounts_TwoFactorAuthentication_RememberFor_Description": "Kód nebude znova vyžadován dříve než po uplynutí této doby", "Accounts_UseDefaultBlockedDomainsList": "Použít výchozí seznam blokovaných domén", "Accounts_UseDNSDomainCheck": "Použít ověření DNS domény", "Accounts_UserAddedEmailSubject_Default": "Vítejte na [Site_Name]", "Accounts_UserAddedEmail_Description": "Můžete použít:

        • [name], [fname], [lname] pro celé jméno, křestní nebo příjmení.
        • [email] pro email uživatele.
        • [password] pro heslo uživatele.
        • [Site_Name] a [Site_URL] pro jméno a URL aplikace.
        ", "Activate": "Aktivovat", + "Active_users": "Aktivní uživatelé", + "Daily_Active_Users": "Denně aktivních uživatelů", + "Weekly_Active_Users": "Týdně aktivních uživatelů", + "Monthly_Active_Users": "Měšíčně aktivních uživatelů", + "DAU_value": "DAU __value__", + "WAU_value": "WAU __value__", + "MAU_value": "MAU __value__", "Activity": "Aktivita", "Add": "Přidat", "add-oauth-service": "Přidat Oauth službu", @@ -330,11 +347,12 @@ "API_Personal_Access_Tokens_To_REST_API": "Osobní přístupové tokeny k REST API", "API_Personal_Access_Tokens_Remove_Modal": "Opravdu chcete odstranit tento osobní přístupový token?", "API_Personal_Access_Token_Generated": "Osobní přístupový token byl úspěšně vygenerován", - "API_Personal_Access_Token_Generated_Text_Token_s_UserId_s": "Uložte si pečlivě svůj token, protože jej již nebudete moci zobrazit.
        Token: __token__
        Vaše uživatelské ID: __userId__", + "API_Personal_Access_Token_Generated_Text_Token_s_UserId_s": "Svůj token si pečlivě uložte, znovu už si je nezobrazíte.
        Token: __token__
        Vaše uživatelské ID: __userId__", "API_Personal_Access_Tokens_Regenerate_Modal": "Pokud jste token ztratili nebo zapomněli, můžete jej vygenerovat znovu, ale nezapomeňte, že všechny aplikace, které tento token používají, by měly být aktualizovány", "API_Personal_Access_Tokens_Regenerate_It": "Znovu vygenerovat token", "API_Shield_Types": "Typy ikon", "API_Shield_Types_Description": "Čárkou oddělený seznam povolených typů. Na výběr z `online`, `channel` nebo `*` pro všechny.", + "API_Shield_user_require_auth": "Vyžadovat přihlášení pro uživatelské sdílecí ikony", "API_Token": "API Token", "API_Tokenpass_URL": "URL Serveru Tokenpass", "API_Tokenpass_URL_Description": "Například: https://domain.com (bez koncového lomítka)", @@ -374,6 +392,11 @@ "Apps_Framework_Development_Mode": "Povolit režim vývoje", "Apps_Framework_Development_Mode_Description": "Vývojový režim umožňuje instalaci aplikací, které nepocházejí z Rocket.Chat Marketplace.", "Apps_Framework_enabled": "Povolit Aplikace", + "Apps_Game_Center": "Herní centrum", + "Apps_Game_Center_Back": "Zpátky do herního centra", + "Apps_Game_Center_enabled": "Povolit herní centrum", + "Apps_Game_Center_Play_Game_Together": "@here Pojďme si společně zahrát __name__!", + "Apps_Game_Center_Invite_Friends": "Pozvěte své přátele aby se přidali", "Apps_Marketplace_Deactivate_App_Prompt": "Opravdu chcete tuto aplikaci zakázat?", "Apps_Marketplace_Modify_App_Subscription": "Upravit odběr", "Apps_Marketplace_Uninstall_App_Prompt": "Opravdu chcete tuto aplikaci odinstalovat?", @@ -449,6 +472,8 @@ "AutoTranslate_Enabled": "Povolit automatický překlad", "AutoTranslate_Enabled_Description": "Aktivace automatického překladu umožní lidem, kteří mají automatické překlady , aby všechny zprávy byly automaticky přeloženy do vybraného jazyka. Mohou být účtovány poplatky.", "AutoTranslate_Google": "Google", + "AutoTranslate_Microsoft": "Microsoft", + "AutoTranslate_Microsoft_API_Key": "Ocp-Apim-Subscription-Key", "AutoTranslate_ServiceProvider": "Poskytovatel služeb", "Available": "Dostupný", "Available_agents": "Dostupní operátoři", @@ -508,6 +533,8 @@ "Broadcasting_enabled": "Vysílání povoleno", "Broadcasting_media_server_url": "Adresa URL serveru pro vysílání", "Browse_Files": "Procházet soubory", + "Browser_does_not_support_audio_element": "Váš prohlížeč neumí pracovat s audiem.", + "Browser_does_not_support_video_element": "Váš prohlížeč neumí pracovat s videem.", "Bugsnag_api_key": "Bugsnag API klíč", "Build_Environment": "Vytvořit prostředí", "bulk-register-user": "Hromadné vytváření uživatelů", @@ -722,6 +749,8 @@ "Conversation": "Konverzace", "Conversations": "Konverzace", "Conversation_closed": "Konverzace uzavřena: __comment__.", + "Conversation_closing_tags": "Uzavírací štítky konverzací", + "Conversation_closing_tags_description": "Tyto štítky budou automaticky přiřazeny konverzaci při jejím uzavření.", "Conversation_finished": "Konverzace byla ukončena", "Conversation_finished_message": "Konverzace ukončena", "Conversation_finished_text": "Text ukončené konverzace", @@ -992,6 +1021,7 @@ "Create_A_New_Channel": "Vytvořit novou místnost", "Create_new": "Vytvořit nový", "Create_unique_rules_for_this_channel": "Vytvořit zvláštní pravidla pro tuto místnost", + "Created": "Vytvořeno", "Created_at": "Vytvořeno ", "Created_at_s_by_s": "Vytvořeno v %s %s", "Created_at_s_by_s_triggered_by_s": "Vytvořeno ve %s %s vyvoláno %s", @@ -1055,6 +1085,7 @@ "Date_From": "Od", "Date_to": "Komu", "days": "dny", + "Days": "Dny", "DB_Migration": "Migrace databáze", "DB_Migration_Date": "Datum migrace databáze", "DDP_Rate_Limit_IP_Enabled": "Limit podle IP: povoleno", @@ -1112,6 +1143,8 @@ "Desktop_Notifications_Not_Enabled": "Oznámení na ploše jsou povoleny", "Details": "Detaily", "Different_Style_For_User_Mentions": "Odlišný styl pro zmínky", + "Direct_message_creation_description": "Chystáte se vytvořit konverzaci s více uživateli. Pomocí přímých zpráv s nimi můžete konverzovat na jednom místě.", + "Direct_message_you_have_joined": "Jste v nové přímé konverzaci s ", "Direct_message_someone": "Přímá zpráva někomu", "Direct_Messages": "Přímé zprávy", "Direct_Reply": "Přímá odpověď", @@ -1137,6 +1170,7 @@ "Disable_Facebook_integration": "Zakázat Facebook integraci", "Disable_Notifications": "Zakázat notifikace", "Disable_two-factor_authentication": "Zakázat dvoufázové ověření", + "Disable_two-factor_authentication_email": "Zakázat dvougázové ověření přes Email", "Disabled": "Zakázáno", "Disallow_reacting": "Zakázat reakce", "Disallow_reacting_Description": "Zakáže reakce", @@ -1173,6 +1207,7 @@ "Download_My_Data": "Stáhnout moje data (HTML)", "Download_Pending_Files": "Stáhnout čekající soubory", "Download_Snippet": "Stáhnout", + "Do_not_provide_this_code_to_anyone": "Tento kód nikomu neukazujte", "Drop_to_upload_file": "Pusťe soubor do okna pro jeho nahrání", "Dry_run": "Zkouška", "Dry_run_description": "Odešle pouze jeden e-mail, na stejnou adresu jako ve formuláři. K e-mailu musí patřit platný uživatel.", @@ -1188,6 +1223,8 @@ "E2E_Enabled": "E2E povoleno", "E2E_Enable_alert": "Tato funkce je aktuálně ve verzi beta! Nahlaste chyby na github.com/RocketChat/Rocket.Chat/issues a mějte na paměti:
        - Šifrované zprávy šifrovaných místností nebudou nalezeny vyhledávacími operacemi.
        - Mobilní aplikace nemusí podporovat šifrované zprávy (jsou implementovány).
        - Boti nemusí vidět šifrované zprávy, dokud pro ně implementují podporu.
        - Nahrávání nebude v této verzi šifrována.", "E2E_Enable_description": "Povolit možnost vytváření šifrovaných skupin a možnost měnit skupiny a přímé zprávy, které mají být šifrovány", + "E2E_Enabled_Default_DirectRooms": "Přímé konverzace ve výchozím stavu šifrovat", + "E2E_Enabled_Default_PrivateRooms": "Privátní místnosti ve výchozím stavu šifrovat", "E2E_Encryption_Password_Change": "Změnit heslo pro šifrování", "E2E_Encryption_Password_Explanation": "Nyní můžete vytvářet šifrované soukromé skupiny a přímé zprávy. Existující soukromé skupiny nebo DM můžete také změnit na šifrované.

        Toto je end-to-end šifrování, takže klíč pro šifrování/dešifrování vašich zpráv nebude uložen na serveru. Z tohoto důvodu musíte své heslo uložit na bezpečné místo. Budete vyzváni k jeho zadání na jiných zařízeních, na kterých chcete používat šifrování E2E.", "E2E_password_reveal_text": "Nyní můžete vytvářet šifrované soukromé skupiny a přímé zprávy. Existující soukromé skupiny nebo DM můžete také změnit na šifrované.

        Toto je end-to-end šifrování, takže klíč pro kódování / dekódování vašich zpráv nebude uložen na serveru. Z tohoto důvodu musíte toto heslo uložit někde v bezpečí. Budete vyzváni k jeho zadání na jiných zařízeních, na kterých chcete používat šifrování E2E. Více informací zde

        Vaše heslo je: %s

        Jedná se o automaticky generované heslo. Nové heslo pro šifrovací klíč můžete nastavit kdykoli z jakéhokoli prohlížeče, do kterého jste zadali existující heslo.
        Toto heslo je uloženo pouze v tomto prohlížeči dokud heslo neuložíte a nepotvrdíte tuto zprávu.", @@ -1248,12 +1285,14 @@ "Emoji_provided_by_JoyPixels": "Emoji poskytuje JoyPixels", "EmojiCustomFilesystem": "Vlastní filesystem pro emotikony", "Empty_title": "Prázdný název", + "Engagement_Dashboard": "Nástěnka zapojení", "Enable": "Povolit", "Enable_Auto_Away": "Povolit Auto nečinnost", "Enable_Desktop_Notifications": "Aktivovat oznámení na ploše", "Enable_inquiry_fetch_by_stream": "Povolit načítání dat dotazů ze serveru pomocí streamu", "Enable_Svg_Favicon": "Povolit SVG favikonu", "Enable_two-factor_authentication": "Povolit dvoufázové ověření", + "Enable_two-factor_authentication_email": "Povolit dvoufázové ověření přes Email", "Enabled": "Povoleno", "Encrypted": "Šifrováno", "Encrypted_channel_Description": "End-to-end šifrovaný kanál. Hledání nebude fungovat s šifrovanými kanály a oznámení nemusí zobrazovat obsah zpráv.", @@ -1264,6 +1303,7 @@ "End_OTR": "Ukončit konverzaci mimo záznam", "Enter_a_name": "Zadejte jméno", "Enter_a_regex": "Zadejte regulární výraz", + "Enter_a_department_name": "Zaddejte název oddělení", "Enter_a_room_name": "Zadejte název místnosti", "Enter_a_username": "Zadejte uživatelské jméno", "Enter_a_tag": "Zadejte značku", @@ -1292,7 +1332,7 @@ "error-could-not-change-name": "Nelze změnit jméno", "error-could-not-change-username": "Nelze změnit uživatelské jméno", "error-delete-protected-role": "Nelze odstranit chráněné role", - "error-department-not-found": "Oddělení nebylo nalezeno", + "error-department-not-found": "Oddělení nenalezeno", "error-direct-message-file-upload-not-allowed": "Sdílení souborů není v přímé konverzaci povoleno", "error-duplicate-channel-name": "Místnost s názvem ' %s' již existuje", "error-edit-permissions-not-allowed": "Úpravy oprávnění nejsou povoleny", @@ -1300,6 +1340,7 @@ "error-email-send-failed": "Nepodařilo se odeslat email: __message__", "error-field-unavailable": "Pole __field__ je již používáno :(", "error-file-too-large": "Soubor je příliš velký", + "error-forwarding-chat-same-department": "Vybrané oddělení a aktuální místnost jsou stejné", "error-importer-not-defined": "Nástroj pro import špatně nadefinován, chybí třída Importu.", "error-import-file-extract-error": "Nepodařilo se rozbalit importovaný soubor.", "error-import-file-is-empty": "Importovaný soubor se zdá být prázdný.", @@ -1382,7 +1423,9 @@ "error-logged-user-not-in-room": "Nejste v místnosti `%s`", "error-user-registration-disabled": "Registrace je zakázána", "error-user-registration-secret": "Registrace uživatele je povolena pouze přes tajnou URL", + "error-validating-department-chat-closing-tags": "Alespoň jeden štítek musí být u ukončené konverzace přiřazen protože to vyžaduje oddělení.", "error-you-are-last-owner": "Jste poslední vlastníkem místnosti. Před opuštěním místnosti prosím nastavte nového vlastníka.", + "error-starring-message": "Zpráva nejde ohvězdičkovat", "Error_404": "Chyba: 404 nenalezeno", "Error_changing_password": "Chyba změny hesla", "Error_loading_pages": "Chyba načítání stránek", @@ -1408,9 +1451,10 @@ "Exclude_Botnames": "Vyloučit boty", "Exclude_Botnames_Description": "Nepřevádět v potaz zprávy botu, jejichž jména odpovídají výše uvedenému regulárnímu výrazu. Pokud je pole prázdné, budou převedeny zprávy všech botů", "Exclude_pinned": "Vyloučit připoutané zprávy", - "except_pinned": "(kromě těch, které jsou připoutány)", + "except_pinned": "(kromě těch, které jsou připnuty)", "Execute_Synchronization_Now": "Spustit synchronizaci nyní", "Exit_Full_Screen": "Ukončit celou obrazovku", + "Experimental_Feature_Alert": "Tato funkce je experimentální. Myslete prosím na to, že se může změnit, rozbít nebo být v budoucnu odstraněna bez předchozího varování", "Expiration": "Expirace", "Expiration_(Days)": "Expirace (dny)", "Export_My_Data": "Exportovat moje data (JSON)", @@ -1494,7 +1538,7 @@ "FileUpload_GoogleStorage_Secret": "Google Storage Secret", "FileUpload_GoogleStorage_Secret_Description": "Prosím říďte se těmito instrukcemi a výsledek vložte zde.", "FileUpload_MaxFileSize": "Maximální velikost nahrávaného souboru (v bytech)", - "FileUpload_MaxFileSizeDescription": "Nastavte jej na -1 pro odstranění omezení velikosti souboru.", + "FileUpload_MaxFileSizeDescription": "Zadejte -1 pro neomezené velikosti souboru.", "FileUpload_MediaType_NotAccepted": "Typ souboru nelze přijmout", "FileUpload_MediaTypeWhiteList": "Povolené typy souborů", "FileUpload_MediaTypeWhiteListDescription": "Čárkami oddělený seznam typů souborů. Pokud nechcete omezovat typy, ponechte pole prázdné.", @@ -1615,6 +1659,7 @@ "Header": "Hlavička", "Header_and_Footer": "Hlavička a Patička", "Healthcare_and_Pharmaceutical": "Péče o zdraví/farmaceutika", + "Here_is_your_authentication_code": "Zde je váš autentizační kód:", "Help_Center": "Centrum nápovědy", "Helpers": "Nápovědy", "Hex_Color_Preview": "Náhled barvy podle Hex kódu", @@ -1641,7 +1686,7 @@ "Host": "Server", "hours": "hodiny", "Hours": "Hodiny", - "How_friendly_was_the_chat_agent": "Byl operátor příjemný?", + "How_friendly_was_the_chat_agent": "Byl operátor milý?", "How_knowledgeable_was_the_chat_agent": "Věděl operátor jak vám pomoci?", "How_long_to_wait_after_agent_goes_offline": "Jak dlouho čekat když je operátor offline", "How_long_to_wait_to_consider_visitor_abandonment": "Jak dlouho čekat než bude návštěvník považován za odpojeného?", @@ -1655,9 +1700,11 @@ "if_they_are_from": "(pokud jsou z %s)", "If_this_email_is_registered": "Pokud je e-mail v naší databázi, odešleme na něj instrukce pro reset hesla. Pokud vám e-mail nepřijde během chvilky, prosím vraťte se a zkuste to znova.", "If_you_are_sure_type_in_your_password": "Pokud si jste jisti, zadejte své heslo:", + "Members_List": "Seznam členů", "If_you_are_sure_type_in_your_username": "Pokud jste si jisti, zadejte své uživatelské jméno:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Pokud nemáte, získejte svou odesláním zprávy na [omni@rocket.chat](mailto:omni@rocket.chat)", "If_you_didnt_ask_for_reset_ignore_this_email": "Pokud jste nepožádali o obnovení hesla, můžete tento e-mail ignorovat.", + "If_you_didnt_try_to_login_in_your_account_please_ignore_this_email": "Pokud jste se do svého účtu nepokoušeli přihlásit, tento email prosím ignorujte.", "Iframe_Integration": "Iframe Integrace", "Iframe_Integration_receive_enable": "Povolit příjem", "Iframe_Integration_receive_enable_Description": "Povolit původnímu oknu odesílat požadavky na Rocket.Chat", @@ -1856,6 +1903,7 @@ "IssueLinks_Incompatible": "Varování: nepovolujte tuto volbu současně s 'Náhled barvy podle Hex kódu'.", "IssueLinks_LinkTemplate": "Šablona pro odkazy na issue", "IssueLinks_LinkTemplate_Description": "Šablona pro odkazy na issue; %s bude nahrazeno číslem issue.", + "Items_per_page:": "Položek na stránku:", "It_works": "Funguje to", "italic": "Kurzíva", "italics": "kurzíva", @@ -1869,6 +1917,7 @@ "Mobex_sms_gateway_restful_address": "Adresa Mobex SMS REST API", "Mobex_sms_gateway_restful_address_desc": "IP nebo Host vašeho Mobex REST API. Např. `http://192.168.1.1:8080` nebo `https://www.example.com:8080`", "Mobex_sms_gateway_username": "Uživatelské jméno", + "Most_popular_channels_top_5": "Nejoblíbenější místnosti (Top 5)", "Jitsi_Chrome_Extension": "ID Chrome rozšíření", "Jitsi_Enabled_TokenAuth": "Povolit JWT auth", "Jitsi_Application_ID": "ID aplikace (iss)", @@ -1927,6 +1976,7 @@ "Language_Russian": "Ruština", "Language_Spanish": "Španělština", "Language_Version": "Anglická verze", + "Last_active": "Naposledy aktivní", "Last_login": "Poslední přihlášení", "Last_Message_At": "Poslední zpráva v", "Last_seen": "Naposledy viděn/a", @@ -1934,6 +1984,9 @@ "Last_Message": "Poslední zpráva", "Last_Status": "Poslední stav", "Last_Updated": "Naposledy aktualizováno", + "Last_7_days": "Posledních 7 dní", + "Last_30_days": "Posledních 30 dní", + "Last_90_days": "Posledních 90 dní", "Launched_successfully": "Spuštěno v pořádku", "Layout": "Rozložení", "Layout_Home_Body": "Obsah úvodní stránky", @@ -2044,6 +2097,7 @@ "LDAP_Username_Field_Description": "Které pole budou použity jako *Jméno* pro nové uživatele. Ponechte prázdné pro použítí jména z přihlašovací stránky.
        Můžete použít šablony a tagy jako například `#{givenName}.#{sn}`.
        Výchozí hodnota je `sAMAccountName`.", "Lead_capture_email_regex": "Regulární výraz pro zachycení Leadu na email", "Lead_capture_phone_regex": "Regulární výraz pro zachycení Leadu na telefon", + "leave-c": "Odejít z místností", "leave-p": "Opustit soukromé skupiny", "Leave": "Opustit", "Leave_Group_Warning": "Jste si jisti, že chcete opustit skupinu \"%s\"?", @@ -2108,6 +2162,7 @@ "Local_Domains": "Lokální domény", "Local_Password": "Lokální heslo", "Localization": "Lokalizace", + "Location": "Lokalita", "Log_Exceptions_to_Channel_Description": "Místnost, do které se budou logovat všechny výjimky. Pokud necháte prázdné, výjimky se budou ignorovat", "Log_Exceptions_to_Channel": "Logovat výjimky do místnosti", "Log_File": "Zobrazit soubor a řádek", @@ -2137,6 +2192,7 @@ "Mail_Message_No_messages_selected_select_all": "Nejsou vybrány žádné zprávy. Chcete vybrat všechny viditelné zprávy?", "Mail_Messages": "Odeslat zprávy", "Mail_Messages_Instructions": "Kliknutím na zprávy vyberte ty, které chcete poslat e-mailem.", + "Room_uploaded_file_list": "Seznam souborů", "Mail_Messages_Subject": "Zde je vybraná část %s zpráv", "Mailer": "Odesílač mailů", "Mailer_body_tags": "Je nutné použít [unsubscribe] pro vložení odkazu na odhlášení.
        Můžete také použít [name], [fname], [lname] pro uživatelské jméno, křestí jméno a příjmen.
        Nebo [email] pro e-mail uživatele.", @@ -2203,7 +2259,6 @@ "Maximum": "Maximum", "Media": "Média", "Medium": "Médium", - "Members_List": "Seznam členů", "mention-all": "Zmínit všechny", "mention-all_description": "Právo použít `@all` zmínku", "mention-here": "Zmínka @here", @@ -2211,6 +2266,7 @@ "Mentions": "Zmínky", "Mentions_default": "Zmínky (výchozí)", "Mentions_only": "Pouze zmínky", + "Merge_Channels": "Spojit místnosti", "Message_AllowBadWordsFilter": "Povolit filtrování sprostých slov", "Message_AllowConvertLongMessagesToAttachment": "Povolit převod dlouhých zpráv na přílohu", "Message_AllowDeleting": "Povolit mazání zpráv", @@ -2252,6 +2308,8 @@ "Message_GlobalSearch": "Globální vyhledávání", "Message_GroupingPeriod": "Seskupovat zprávy v rozmezí (v sekundách)", "Message_GroupingPeriodDescription": "Zprávy budou seskupeny s předchozí zprávou, pokud jsou obě od stejného uživatele a uplynulá doba byla kratší než specifikovaný čas v sekundách.", + "Message_has_been_starred": "Zpráva Ohvězdičkována", + "Message_has_been_unstarred": "Hvězdička odebrána", "Message_HideType_au": "Schovat zprávu o \"přidání uživatele\"", "Message_HideType_mute_unmute": "Schovat zprávu o \"od/ztišení uživatele\"", "Message_HideType_ru": "Schovat zprávu o \"odebrání uživatele\"", @@ -2300,6 +2358,7 @@ "Message": "Zpráva", "messages": "zprávy", "Messages": "Zprávy", + "Messages_sent": "Zpráva odeslána", "Messages_that_are_sent_to_the_Incoming_WebHook_will_be_posted_here": "Zprávy, které jsou odesílány do příchozí WebHook integrace budou zveřejněny zde.", "Meta": "Meta informace", "Meta_custom": "Vlastní meta tagy", @@ -2359,7 +2418,9 @@ "Name_optional": "Jméno (volitelné)", "Name_Placeholder": "Zadejte své jméno...", "Navigation_History": "Navigace Historie (posledních 20 stran)", + "New_users": "Noví uživatelé", "New_Application": "Nová aplikace", + "New_chat_in_queue": "Nová konverzace ve frontě", "New_chat_transfer": "Nové přepojení chatu: __transfer__", "New_Custom_Field": "Nové vlastní pole", "New_Department": "Nové oddělení", @@ -2408,11 +2469,13 @@ "No_discussions_yet": "Zatím žádné diskuse", "No_Threads": "Nebyla nalezena žádná vlákna", "No_user_with_username_%s_was_found": "Nebyl nalezen žádný uživatel s uživatelským jménem \"%s\"!", + "No_data_found": "Data nanalezena", "Nobody_available": "Nikdo není dostupný", "Node_version": "Verze Node", "None": "Nic", "Nonprofit": "Neziskové organizace", "Normal": "Normální", + "Not_enough_data": "Málo dat", "Not_authorized": "Není povoleno", "Not_Available": "Nedostupný", "Not_found_or_not_allowed": "Nenalezeno nebo není povoleno", @@ -2458,6 +2521,8 @@ "Offline_form": "Offline formulář", "Offline_form_unavailable_message": "Zpráva nedostupného offline formuláře", "Offline_Link_Message": "PŘEJÍT NA ZPRÁVU", + "Offline_Message": "Offline zpráva", + "Offline_Message_Use_DeepLink": "Použijte Deep Link URL formát", "Offline_Mention_All_Email": "Předmět emailu zmínky všech", "Offline_Mention_Email": "Předmět emailu zmínky", "Offline_message": "Offline zprávy", @@ -2520,6 +2585,7 @@ "Password_Changed_Email_Subject": "[Site_Name] - heslo změněno", "Password_changed_section": "Heslo změněno", "Password_changed_successfully": "Heslo úspěšně změněno", + "Passwords_do_not_match": "Hesla se neshodují", "Password_Policy": "Zásady hesla", "Past_Chats": "Minulé konverzace", "Paste_here": "Vložte sem ...", @@ -2592,6 +2658,8 @@ "Privacy_Policy": "Zásady ochrany osobních údajů", "Private": "Privátní", "Private_Channel": "Privátní místnost", + "Private_Channels": "Soukromé místnosti", + "Private_Chats": "Soukromé konverzace", "Private_Group": "Soukromá skupina", "Private_Groups": "Soukromé skupiny", "Private_Groups_list": "Seznam Soukromých skupin", @@ -2619,6 +2687,7 @@ "files_pruned": "soubory omezeny", "Public": "Veřejné", "Public_Channel": "Veřejná místnost", + "Public_Channels": "Veřejné místnosti", "Public_Community": "Veřejná komunita", "Public_Relations": "Vztahy s veřejností", "Public_URL": "Veřejná adresa URL", @@ -2733,6 +2802,7 @@ "Request_comment_when_closing_conversation": "Při uzavírání konverzace požádat o komentář", "Request_comment_when_closing_conversation_description": "Pokud je povoleno, agent musí před uzavřením konverzace nastavit komentář.", "Request_tag_before_closing_chat": "Vyžadovat značky před uzavřením konverzace", + "Require": "Vyžádat", "Require_all_tokens": "Vyžadovat všechny tokeny", "Require_any_token": "Vyžadovat jakýkoliv token", "Require_password_change": "Vyžadovat změnu hesla", @@ -2754,10 +2824,10 @@ "RetentionPolicy_RoomWarning_UnpinnedFilesOnly": "Nepřipnuté soubory starší než __time__ jsou zde automaticky pročištěny (zpráv se netýká)", "RetentionPolicy_Description": "Automaticky omezí staré zprávy napříč vaší Rocket.Chat instancí.", "RetentionPolicy_Enabled": "Povoleno", - "RetentionPolicy_AppliesToChannels": "Platí pro kanály", + "RetentionPolicy_AppliesToChannels": "Platí pro místnosti", "RetentionPolicy_AppliesToGroups": "Platí pro soukromé skupiny", "RetentionPolicy_AppliesToDMs": "Platí pro přímé zprávy", - "RetentionPolicy_ExcludePinned": "Vyloučit připoutané zprávy", + "RetentionPolicy_ExcludePinned": "Vyloučit připnuté zprávy", "RetentionPolicy_FilesOnly": "Smazat pouze soubory", "RetentionPolicy_FilesOnly_Description": "Pouze soubory budou smazány, samotné zprávy zůstanou na místě.", "RetentionPolicy_MaxAge": "Maximální stáří zprávy", @@ -2768,7 +2838,7 @@ "RetentionPolicy_Precision": "Přesnost časovače", "RetentionPolicy_Precision_Description": "Jak často by měl časovač pročištění spustit. Nastavením této hodnoty na přesnější hodnotu pracují kanály s rychlejšími retenčními časovači lépe, ale v případě velkých komunit by to mohlo stát další procesní výkon.", "RetentionPolicyRoom_Enabled": "Automaticky pročišťovat staré zprávy", - "RetentionPolicyRoom_ExcludePinned": "Vyloučit připoutané zprávy", + "RetentionPolicyRoom_ExcludePinned": "Vyloučit připnuté zprávy", "RetentionPolicyRoom_FilesOnly": "Pročistit pouze soubory, zprávy ponechat", "RetentionPolicyRoom_MaxAge": "Maximální stáří zprávy ve dnech (výchozí: __max__)", "RetentionPolicyRoom_OverrideGlobal": "Přepsat zásady globální uchovávání", @@ -2809,7 +2879,6 @@ "Room_type_changed_successfully": "Typ místnosti úspěšně změněn", "Room_type_of_default_rooms_cant_be_changed": "Tato místnost je výchozí a proto nelze změnit její typ. Výchozí místnosti může upravovat administrátor.", "Room_unarchived": "Místnost odarchivována", - "Room_uploaded_file_list": "Seznam souborů", "Room_uploaded_file_list_empty": "Žádné soubory k dispozici.", "Rooms": "Místnosti", "Routing": "Směrování", @@ -2854,6 +2923,10 @@ "SAML_Default_User_Role_Description": "Můžete uvést více rolí oddělených čárkami.", "SAML_Role_Attribute_Name": "Název atributu role", "SAML_Role_Attribute_Name_Description": "Pokud je tento atribut nalezen v odpovědi SAML, jeho hodnoty budou použity jako názvy rolí nových uživatelů.", + "SAML_Role_Attribute_Sync": "Synchronizovat uživatelské role", + "SAML_Role_Attribute_Sync_Description": "Synchronizovat SAML uživatelské role při přihlášení (přepíše lokální uživatelské role)", + "SAML_Allowed_Clock_Drift": "Povolit časový nesoulad oproti poskytovali identity", + "SAML_Allowed_Clock_Drift_Description": "Čas poskytovatele identity mohou být napřed oproti systémovému času. Zde lze povolit manuální posun času. Hodnota je udaná počtem milisekund (ms). Tato hodnota je pak připočtena k systémovému času proti kterému se odpověď validuje.", "Saturday": "Sobota", "Save": "Uložit", "save-others-livechat-room-info": "Upravit informace jiné místnosti Omnichannel", @@ -2910,6 +2983,7 @@ "Send_invitation_email_error": "Zadejte platnou e-mailovou adresu.", "Send_invitation_email_info": "E-mailových pozvánek můžete poslat více najednou.", "Send_invitation_email_success": "Úspěšně jste poslali e-mailem pozvánku na následující adresy:", + "Send_me_the_code_again": "Pošlete mi kód znovu", "Send_request_on_agent_message": "Odeslat žádost na zprávy operátora", "Send_request_on_chat_close": "Odeslat požadavek po uzavření chatu", "Send_request_on_lead_capture": "Kam odesílat zachycené leady", @@ -3011,6 +3085,8 @@ "Smarsh_MissingEmail_Email_Description": "Jaký e-mail zobrazit u účtů, kde chybí e-mail chybí. Typicky účty botů", "Smarsh_Timezone": "Smarsh Timezone", "Smileys_and_People": "Smajlíci & Lidé", + "SMS_Default_Omnichannel_Department": "Omnichannel oddělení (výchozí)", + "SMS_Default_Omnichannel_Department_Description": "Pokud je vybráno všechny nové příchozí konverzace z této integrace budou přepojeny do tohoto odddělení", "SMS_Enabled": "SMS Povoleny", "SMTP": "SMTP", "SMTP_Host": "Server SMTP", @@ -3116,7 +3192,7 @@ "Sync_success": "Synchronizace úspěšná", "Sync_Users": "Synchronizace uživatelů", "System_messages": "Systémové zprávy", - "Tag": "Tag", + "Tag": "Štítek", "Take_it": "Převzít", "TargetRoom": "Cílová místnost", "TargetRoom_Description": "Místnost do které budou odeslány zprávy po spuštění dané události. Je povolena pouze jedna místnost, který musí existovat.", @@ -3198,7 +3274,7 @@ "theme-color-unread-notification-color": "Barva Nepřečtených upozornění", "theme-custom-css": "Vlastní CSS", "theme-font-body-font-family": "Font obsahu", - "There_are_no_agents_added_to_this_department_yet": "Neexistují žádní operátoři v tomto oddělení", + "There_are_no_agents_added_to_this_department_yet": "V tomto oddělení nejsou žádní operátoři", "There_are_no_applications": "Zatím nebyly přidány žádné aplikace oAuth.", "There_are_no_applications_installed": "V současné době nejsou nainstalovány žádné aplikace Rocket.Chat.", "There_are_no_integrations": "Neexistují žádná integrace", @@ -3253,6 +3329,8 @@ "Total_messages": "Celkem zpráv", "Total_Threads": "Celkový počet vláken", "Total_visitors": "Celkový počet návštěvníků", + "totp-invalid": "Kód nebo heslo nesouhlasí", + "TOTP Invalid [totp-invalid]": "Kód nebo heslo nesouhlasí", "Tourism": "Turistika", "Transcript_Enabled": "Zeptat se po skončení chatu, zda uživateli odeslat kopii konverzace", "Transcript_message": "Zpráva kterou zobrazit jako dotaz zda odeslat kopii konverzace", @@ -3266,15 +3344,18 @@ "Trigger_Words": "Klíčová slova", "Triggers": "Trigery", "True": "Ano", + "Troubleshoot_Disable_Notifications": "Zakázat notifikace", "Tuesday": "Úterý", "Turn_OFF": "Vypnout", "Turn_ON": "Zapnout", "Two Factor Authentication": "Dvoufázové ověření", "Two-factor_authentication": "Dvoufázové ověření", + "Two-factor_authentication_email": "Dvoufázové ověření pomocí Email", "Two-factor_authentication_disabled": "Dvoufázová ověření zakázáno", "Two-factor_authentication_enabled": "Dvoufázové ověření povoleno", "Two-factor_authentication_is_currently_disabled": "Dvoufázové ověření je momentálně zakázáno", "Two-factor_authentication_native_mobile_app_warning": "UPOZORNĚNÍ: Pokud povolíte dvoufázové ověření, nebudete se moci přihlásit přes nativní mobilní aplikace (Rocket.Chat+) dokud v těchto nebude 2FA implementována.", + "Two-factor_authentication_email_is_currently_disabled": "Dvoufázové ověření pomocí Emailu zakázáno", "Type": "Typ", "Type_your_email": "Zadejte svůj e-mail", "Type_your_job_title": "Zadejte svou pozici", @@ -3401,6 +3482,7 @@ "User_sent_a_message_to_you": "__username__ vám poslal zprávu", "user_sent_an_attachment": "__user__ poslal přílohu", "User_Settings": "Uživatelské nastavení", + "User_started_a_new_conversation": "__username__ zahájil/a konverzaci", "User_unmuted_by": "Uživatel __user_by__ zrušil ztlumení __user_unmuted__.", "User_unmuted_in_room": "Uživatel již není ztlumen", "User_updated_successfully": "Uživatel úspěšně aktualizován", @@ -3438,6 +3520,7 @@ "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ chce spustit OTR (konverzaci mimo záznam). Chcete ji přijmout?", "Users": "Uživatelé", "Users_added": "Uživatelé byli přidáni", + "Users_by_time_of_day": "Uživatelé k času dne", "Users_in_role": "Uživatelé v roli", "Users must use Two Factor Authentication": "Uživatelé musí používat dvoufaktorové ověření", "Leave_the_description_field_blank_if_you_dont_want_to_show_the_role": "Pokud nechcete zobrazovat roli, ponechte pole popisu prázdné", @@ -3446,6 +3529,8 @@ "UTF8_Names_Slugify": "Url podoba UTF8 jmen", "UTF8_Names_Validation": "UTF8 validace jmen", "UTF8_Names_Validation_Description": "Regulární výraz validující uživatelská jména a jména místností", + "Value_messages": "__value__ zpráv", + "Value_users": "__value__ uživatelů", "Validate_email_address": "Validovat email", "Verification_email_body": "Úspěšně jste vytvořili účet na [Site_Name]. Kliknutím na tlačítko níže potvrďte svou e-mailovou adresu a dokončete registraci.", "Verification": "Ověření", @@ -3455,6 +3540,7 @@ "Verified": "Ověřený", "Verify": "Ověřit", "Verify_your_email": "Ověřte svůj email", + "Verify_your_email_for_the_code_we_sent": "Zadejte kód z emailu", "Version": "Verze", "Videos": "Videa", "Video Conference": "Video konference", @@ -3547,6 +3633,8 @@ "Welcome": "Vítej %s.", "Welcome_to": "Vítejte na __Site_Name__", "Welcome_to_the": "Vítejte v", + "Where_are_the_messages_being_sent?": "Kam se zprávy odesílají?", + "When_is_the_chat_busier?": "Kdy je nejvíce práce?", "Why_do_you_want_to_report_question_mark": "Proč chcete zprávu nahlásit?", "will_be_able_to": "bude moci", "Worldwide": "Celý svět", diff --git a/packages/rocketchat-i18n/i18n/cy.i18n.json b/packages/rocketchat-i18n/i18n/cy.i18n.json index 649ca83c73b2..e94beee1aaf7 100644 --- a/packages/rocketchat-i18n/i18n/cy.i18n.json +++ b/packages/rocketchat-i18n/i18n/cy.i18n.json @@ -1295,6 +1295,7 @@ "if_they_are_from": "(os ydynt o %s)", "If_this_email_is_registered": "Os yw'r e-bost hwn wedi'i gofrestru, byddwn yn anfon cyfarwyddiadau ar sut i ailosod eich cyfrinair. Os na chewch e-bost yn fuan, dewch yn ôl a cheisiwch eto.", "If_you_are_sure_type_in_your_password": "Os ydych chi'n siŵr deipio eich cyfrinair:", + "Members_List": "Rhestr Aelodau", "If_you_are_sure_type_in_your_username": "Os ydych chi'n siŵr, dechreuwch eich enw defnyddiwr:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Os nad oes gennych un, anfonwch e-bost at [omni@rocket.chat] (mailto: omni@rocket.chat) i gael eich un chi.", "Iframe_Integration": "Integreiddiad Iframe", @@ -1667,6 +1668,7 @@ "Mail_Message_No_messages_selected_select_all": "Nid ydych chi wedi dewis unrhyw negeseuon", "Mail_Messages": "Negeseuon Post", "Mail_Messages_Instructions": "Dewiswch ba negeseuon yr hoffech eu hanfon trwy e-bost trwy glicio ar y negeseuon", + "Room_uploaded_file_list": "Rhestr Ffeiliau", "Mail_Messages_Subject": "Dyma ddetholiad o negeseuon %s", "Mailer": "Mailer", "Mailer_body_tags": "Mae'n rhaid i chi ddefnyddio [dad-danysgrifio] ar gyfer y ddolen dadysgrifio.
        Gallwch ddefnyddio [enw], [fname], [lname] ar gyfer enw llawn, enw cyntaf neu enw olaf y defnyddiwr, yn y drefn honno.
        Gallwch ddefnyddio [e-bost] ar gyfer e-bost y defnyddiwr.", @@ -1708,7 +1710,6 @@ "Max_length_is": "Hyd mwyaf yw %s", "Media": "Cyfryngau", "Medium": "Canolig", - "Members_List": "Rhestr Aelodau", "mention-all": "Mudiad i gyd", "mention-all_description": "Caniatâd i ddefnyddio'r sôn am @all", "mention-here": "Cyfeiriwch yma", @@ -2200,7 +2201,6 @@ "Room_type_changed_successfully": "Newidiodd math o ystafelloedd yn llwyddiannus", "Room_type_of_default_rooms_cant_be_changed": "Mae hwn yn ystafell ddiofyn ac ni all y math gael ei newid, cysylltwch â'ch gweinyddwr.", "Room_unarchived": "Ystafell annisgwyl", - "Room_uploaded_file_list": "Rhestr Ffeiliau", "Room_uploaded_file_list_empty": "Dim ffeiliau ar gael.", "Rooms": "Ystafelloedd", "run-import": "Mewnforio Rhedeg", @@ -2555,6 +2555,7 @@ "Trigger_Words": "Geiriau Troi", "Triggers": "Twyllwyr", "True": "Gwir", + "Troubleshoot_Disable_Notifications": "Analluogi Hysbysiadau", "Tuesday": "Dydd Mawrth", "Turn_OFF": "Trowch i ODDI", "Turn_ON": "Trowch AR", diff --git a/packages/rocketchat-i18n/i18n/da.i18n.json b/packages/rocketchat-i18n/i18n/da.i18n.json index a853a1ec6bdd..04e7de148363 100644 --- a/packages/rocketchat-i18n/i18n/da.i18n.json +++ b/packages/rocketchat-i18n/i18n/da.i18n.json @@ -9,48 +9,52 @@ "2_Erros_Information_and_Debug": "2 - Fejl, information og fejlfinding", "@username": "@brugernavn", "@username_message": "@brugernavn ", - "__username__is_no_longer__role__defined_by__user_by_": "__username__ er ikke længere __role__ takket være __user_by__", - "__username__was_set__role__by__user_by_": "__username__ blev gjort til __role__ af __user_by__", + "__username__is_no_longer__role__defined_by__user_by_": "__username__ is no longer __role__ by __user_by__", + "__username__was_set__role__by__user_by_": "__username__ was set __role__ by __user_by__", "%_of_conversations": "% af samtaler", - "Accept": "Accepter", + "Accept": "Acceptér", "Accept_incoming_livechat_requests_even_if_there_are_no_online_agents": "Accepter indgående livechat-anmodninger, selvom der ikke er online agenter", - "Accept_with_no_online_agents": "Accepter uden online agenter", + "Accept_new_livechats_when_agent_is_idle": "Accepter nye livechat-anmodninger via omnikanal, når agenten er ledig", + "Accept_with_no_online_agents": "Acceptér uden online agenter", "access-mailer": "Åbn mail-skærmen", "access-mailer_description": "Tilladelse til at sende masse-e-mails til alle brugere.", "access-permissions": "Åbn tilladelsesskærmen", "access-permissions_description": "Redigér tilladelser for forskellige roller.", - "Access_not_authorized": "Adgang ikke tilladt", - "Access_Token_URL": "Adgangstoken-url", - "Accessing_permissions": "Adgang til tilladelser", + "access-setting-permissions": "Redigér indstillingsbaserede rettigheder", + "Access_not_authorized": "Adgang ikke godkendt", + "Access_Token_URL": "Adgangstoken-URL", + "Accessing_permissions": "Tilgår tilladelser", "Account_SID": "Konto-SID", "Accounts": "Konti", - "Accounts_Admin_Email_Approval_Needed_Default": "

        Brugeren [navn] ([email]) er blevet registreret.

        Vær venlig at aktivere eller slette denne bruger under \"Administration -> Brugere\".

        ", + "Accounts_Admin_Email_Approval_Needed_Default": "

        Brugeren [name] ([email]) er blevet registreret.

        Vær venlig at aktivere eller slette denne bruger under \"Administration -> Brugere\".

        ", "Accounts_Admin_Email_Approval_Needed_Subject_Default": "En ny bruger har registreret sig og har brug for godkendelse", "Accounts_Admin_Email_Approval_Needed_With_Reason_Default": "

        Brugeren [navn] ([email]) er blevet registreret.

        Årsag: [reason]

        Vær venlig at aktivere eller slette denne bruger under \"Administration -> Brugere\".

        ", "Accounts_AllowAnonymousRead": "Tillad anonym læsning", "Accounts_AllowAnonymousWrite": "Tillad anonym skrivning", - "Accounts_AllowDeleteOwnAccount": "Lad brugere slette deres egen konto", + "Accounts_AllowDeleteOwnAccount": "Tillad brugere at slette deres egen konto", "Accounts_AllowedDomainsList": "Liste over tilladte domæner", "Accounts_AllowedDomainsList_Description": "Kommasepareret liste over tilladte domæner", "Accounts_AllowEmailChange": "Tillad ændring af e-mail", + "Accounts_AllowEmailNotifications": "Tillad e-mail-notifikationer", "Accounts_AllowPasswordChange": "Tillad adgangskodeændring", "Accounts_AllowRealNameChange": "Tillad navneændring", - "Accounts_AllowUserAvatarChange": "Tillad, at brugerne skifter avatar", + "Accounts_AllowUserAvatarChange": "Tillad at brugerne skifter avatar", "Accounts_AllowUsernameChange": "Tillad brugernavneændring", "Accounts_AllowUserProfileChange": "Tillad ændring af brugerprofil", + "Accounts_AllowUserStatusMessageChange": "Tillad brugerdefinerede statusmeddelelse", "Accounts_AvatarBlockUnauthenticatedAccess": "Blokér uautoriseret adgang til avatarer", "Accounts_AvatarCacheTime": "Cache-tid for avatarer", "Accounts_AvatarCacheTime_description": "Antal sekunder, som http-protokollen bliver bedt om at cache avatarbillederne.", "Accounts_AvatarResize": "Ændre størrelsen på avatarer", "Accounts_AvatarSize": "Avatar-størrelse", - "Accounts_AvatarExternalProviderUrl": "Ekstern leverandør-url for avatar", + "Accounts_AvatarExternalProviderUrl": "Ekstern leverandør-URL for avatar", "Accounts_AvatarExternalProviderUrl_Description": "Eksempel: `https://acme.com/api/v1/{username}`", "Accounts_BlockedDomainsList": "Liste over blokerede domæner", "Accounts_BlockedDomainsList_Description": "Kommasepareret liste over blokerede domæner", "Accounts_BlockedUsernameList": "Liste over blokerede brugernavne", "Accounts_BlockedUsernameList_Description": "Kommasepareret liste over blokerede brugernavne (der er ikke forskel på store og små bogstaver)", "Accounts_CustomFields_Description": "Skal være gyldigt JSON, hvor nøgler er feltnavne, der indeholder en ordbog med feltindstillinger. Eksempel:
        {\n\"role\": {\n\"type\": \"select\",\n\"defaultValue\": \"student\",\n\"options\": [\"lærer\", \"studerende\"],\n\"required\": true,\n\"modifyRecordField\": {\n\"array\": true,\n\"felt\": \"roller\"\n}\n},\n\"twitter\": {\n\"type\": \"text\",\n\"required\": sandt,\n\"minLength\": 2,\n\"maxLength\": 10\n}\n}", - "Accounts_CustomFieldsToShowInUserInfo": "Brugerdefinerede felter, der skal vises i brugerinfo", + "Accounts_CustomFieldsToShowInUserInfo": "Brugerdefinerede felter der skal vises i brugerinfo", "Accounts_Default_User_Preferences": "Standard-brugerindstillinger", "Accounts_Default_User_Preferences_audioNotifications": "Standardlyd for lydnotifikationer", "Accounts_Default_User_Preferences_desktopNotifications": "Standardbesked for skrivebordsnotifikationer", @@ -69,15 +73,16 @@ "Accounts_EmailVerification_Description": "Sørg for, at du har korrekte SMTP-indstillinger for at bruge denne funktion", "Accounts_Enrollment_Email_Subject_Default": "Velkommen til [Site_Name]", "Accounts_Enrollment_Email": "Tilmeldings-e-mail", - "Accounts_Enrollment_Email_Description": "Du kan bruge følgende pladsholdere:
        • [name], [fname], [lname] for henholdsvis brugerens fulde navn, fornavn og efternavn.
        • [email] for brugerens e-mail.
        • [Site_Name] og [Site_URL] for henholdsvis applikationsnavn og url.
        ", - "Accounts_ForgetUserSessionOnWindowClose": "Glem brugersessionen, når vinduet lukkes", + "Accounts_Enrollment_Email_Description": "Du kan bruge følgende pladsholdere:
        • [name], [fname], [lname] for henholdsvis brugerens fulde navn, fornavn og efternavn.
        • [email] for brugerens e-mail.
        • [Site_Name] og [Site_URL] for henholdsvis applikationsnavn og URL.
        ", + "Accounts_ForgetUserSessionOnWindowClose": "Glem brugersession når vinduet lukkes", "Accounts_Iframe_api_method": "API-metode", - "Accounts_Iframe_api_url": "API-url", + "Accounts_Iframe_api_url": "API-URL", "Accounts_iframe_enabled": "Aktiveret", - "Accounts_iframe_url": "Iframe-url", - "Accounts_LoginExpiration": "Login udløber efter så mange dage", + "Accounts_iframe_url": "Iframe-URL", + "Accounts_LoginExpiration": "Login-udløb i dage", "Accounts_ManuallyApproveNewUsers": "Nye brugere skal godkendes manuelt", "Accounts_OAuth_Custom_Authorize_Path": "Autorisationssti", + "Accounts_OAuth_Custom_Avatar_Field": "Avatar felt", "Accounts_OAuth_Custom_Button_Color": "Farve på knap", "Accounts_OAuth_Custom_Button_Label_Color": "Tekstfarve på knap", "Accounts_OAuth_Custom_Button_Label_Text": "Tekst på knap", @@ -87,87 +92,95 @@ "Accounts_OAuth_Custom_Identity_Token_Sent_Via": "Identitets-token sendt via", "Accounts_OAuth_Custom_Login_Style": "Loginstil", "Accounts_OAuth_Custom_Merge_Users": "Sammenflet brugere", + "Accounts_OAuth_Custom_Access_Token_Param": "Parameternavn for adgangs-token", "Accounts_OAuth_Custom_Scope": "Anvendelsesområde", - "Accounts_OAuth_Custom_Secret": "Hemmelighed", + "Accounts_OAuth_Custom_Secret": "Secret", + "Accounts_OAuth_Custom_Show_Button_On_Login_Page": "Vis knap på login-siden", "Accounts_OAuth_Custom_Token_Path": "Tokensti", "Accounts_OAuth_Custom_Token_Sent_Via": "Token sendt via", "Accounts_OAuth_Custom_Username_Field": "Brugernavnefelt", - "Accounts_OAuth_Custom_Roles_Claim": "Roller / Grupper feltnavn", + "Accounts_OAuth_Custom_Name_Field": "Navnefelt", + "Accounts_OAuth_Custom_Roles_Claim": "Feltnavn for Roller/Grupper", + "Accounts_OAuth_Custom_Merge_Roles": "Flet roller fra SSO", "Accounts_OAuth_Drupal": "Drupal-login aktiveret", - "Accounts_OAuth_Drupal_callback_url": "Omdirigerings-uri for Drupals oAuth2", - "Accounts_OAuth_Drupal_id": "Klient-id for Drupals oAuth2", - "Accounts_OAuth_Drupal_secret": "Klienthemmelighed for Drupals oAuth2", + "Accounts_OAuth_Drupal_callback_url": "Omdirigerings-URI for Drupals oAuth2", + "Accounts_OAuth_Drupal_id": "Klient-Id for Drupals oAuth2", + "Accounts_OAuth_Drupal_secret": "Klient-secret for Drupals oAuth2", "Accounts_OAuth_Facebook": "Facebook-login", - "Accounts_OAuth_Facebook_callback_url": "Tilbagekalds-url for Facebook", - "Accounts_OAuth_Facebook_id": "Facebooks app-id", - "Accounts_OAuth_Facebook_secret": "Facebook-hemmelighed", + "Accounts_OAuth_Facebook_callback_url": "Tilbagekalds-URL for Facebook", + "Accounts_OAuth_Facebook_id": "Facebooks app-Id", + "Accounts_OAuth_Facebook_secret": "Facebook-secret", "Accounts_OAuth_Github": "OAuth aktiveret", "Accounts_OAuth_Github_callback_url": "Tilbagekalds-url for Github", "Accounts_OAuth_GitHub_Enterprise": "OAuth aktiveret", - "Accounts_OAuth_GitHub_Enterprise_callback_url": "Tilbagekalds-url for GitHub Enterprise", - "Accounts_OAuth_GitHub_Enterprise_id": "Klient-id", - "Accounts_OAuth_GitHub_Enterprise_secret": "Klienthemmelighed", - "Accounts_OAuth_Github_id": "Klient-id", - "Accounts_OAuth_Github_secret": "Klienthemmelighed", + "Accounts_OAuth_GitHub_Enterprise_callback_url": "Tilbagekalds-URL for GitHub Enterprise", + "Accounts_OAuth_GitHub_Enterprise_id": "Klient-Id", + "Accounts_OAuth_GitHub_Enterprise_secret": "Klient-secret", + "Accounts_OAuth_Github_id": "Klient-Id", + "Accounts_OAuth_Github_secret": "Klient-secret", "Accounts_OAuth_Gitlab": "OAuth aktiveret", - "Accounts_OAuth_Gitlab_callback_url": "Tilbagekalds-url for GitLab", - "Accounts_OAuth_Gitlab_id": "GitLab-id", + "Accounts_OAuth_Gitlab_callback_url": "Tilbagekalds-URLfor GitLab", + "Accounts_OAuth_Gitlab_id": "GitLab-Id", "Accounts_OAuth_Gitlab_identity_path": "Identitetssti", - "Accounts_OAuth_Gitlab_secret": "Klienthemmelighed", + "Accounts_OAuth_Gitlab_merge_users": "Flet brugere", + "Accounts_OAuth_Gitlab_secret": "Klient-secret", "Accounts_OAuth_Google": "Google-login", - "Accounts_OAuth_Google_callback_url": "Tilbagekalds-url for Google", - "Accounts_OAuth_Google_id": "Google-id", - "Accounts_OAuth_Google_secret": "Google-hemmelighed", + "Accounts_OAuth_Google_callback_url": "Tilbagekalds-URL for Google", + "Accounts_OAuth_Google_id": "Google-Id", + "Accounts_OAuth_Google_secret": "Google-secret", "Accounts_OAuth_Linkedin": "LinkedIn-login", - "Accounts_OAuth_Linkedin_callback_url": "Tilbagekalds-url for LinkedIn", - "Accounts_OAuth_Linkedin_id": "LinkedIn-id", - "Accounts_OAuth_Linkedin_secret": "LinkedIn-hemmelighed", + "Accounts_OAuth_Linkedin_callback_url": "Tilbagekalds-URLfor LinkedIn", + "Accounts_OAuth_Linkedin_id": "LinkedIn-Id", + "Accounts_OAuth_Linkedin_secret": "LinkedIn-secret", "Accounts_OAuth_Meteor": "Meteor-login", - "Accounts_OAuth_Meteor_callback_url": "Tilbagekalds-url for Meteor", - "Accounts_OAuth_Meteor_id": "Meteor-id", - "Accounts_OAuth_Meteor_secret": "Meteor-hemmelighed", + "Accounts_OAuth_Meteor_callback_url": "Tilbagekalds-URL for Meteor", + "Accounts_OAuth_Meteor_id": "Meteor-Id", + "Accounts_OAuth_Meteor_secret": "Meteor-secret", "Accounts_OAuth_Nextcloud": "OAuth aktiveret", - "Accounts_OAuth_Nextcloud_secret": "Klienthemmelighed", + "Accounts_OAuth_Nextcloud_callback_url": "Tilbagekalds-URL for Nextcloud", + "Accounts_OAuth_Nextcloud_id": "Nextcloud-Id", + "Accounts_OAuth_Nextcloud_secret": "Klient-secret", + "Accounts_OAuth_Nextcloud_URL": "Server-URL til Nexcloud", "Accounts_OAuth_Proxy_host": "Proxy-vært", "Accounts_OAuth_Proxy_services": "Proxy-tjenester", "Accounts_OAuth_Tokenpass": "Tokenpass-login", - "Accounts_OAuth_Tokenpass_callback_url": "Tilbagekalds-url for Tokenpass", - "Accounts_OAuth_Tokenpass_id": "Tokenpass-id", - "Accounts_OAuth_Tokenpass_secret": "Tokenpass-hemmelighed", + "Accounts_OAuth_Tokenpass_callback_url": "Tilbagekalds-URL for Tokenpass", + "Accounts_OAuth_Tokenpass_id": "Tokenpass-Id", + "Accounts_OAuth_Tokenpass_secret": "Tokenpass-secret", "Accounts_OAuth_Twitter": "Twitter-login", - "Accounts_OAuth_Twitter_callback_url": "Tilbagekalds-url for Twitter", - "Accounts_OAuth_Twitter_id": "Twitter-id", - "Accounts_OAuth_Twitter_secret": "Twitter-hemmelighed", + "Accounts_OAuth_Twitter_callback_url": "Tilbagekalds-URL for Twitter", + "Accounts_OAuth_Twitter_id": "Twitter-Id", + "Accounts_OAuth_Twitter_secret": "Twitter-secret", "Accounts_OAuth_Wordpress": "WordPress-login", "Accounts_OAuth_Wordpress_authorize_path": "Autorisationssti", - "Accounts_OAuth_Wordpress_callback_url": "Tilbagekalds-url for Wordpress", - "Accounts_OAuth_Wordpress_id": "WordPress-id", + "Accounts_OAuth_Wordpress_callback_url": "Tilbagekalds-URL for Wordpress", + "Accounts_OAuth_Wordpress_id": "WordPress-Id", "Accounts_OAuth_Wordpress_identity_path": "Identitetssti", "Accounts_OAuth_Wordpress_identity_token_sent_via": "Identitets-token sendt via", "Accounts_OAuth_Wordpress_scope": "Anvendelsesområde", - "Accounts_OAuth_Wordpress_secret": "WordPress-hemmelighed", + "Accounts_OAuth_Wordpress_secret": "WordPress-secret", "Accounts_OAuth_Wordpress_server_type_custom": "Brugerdefineret", "Accounts_OAuth_Wordpress_server_type_wordpress_com": "Wordpress.com", "Accounts_OAuth_Wordpress_server_type_wp_oauth_server": "WP OAuth-serverplugin", "Accounts_OAuth_Wordpress_token_path": "Tokensti", "Accounts_Password_Policy_AtLeastOneLowercase": "Mindst et lille bogstav", - "Accounts_Password_Policy_AtLeastOneLowercase_Description": "Sørg for, at et kodeord indeholde mindst et lille bogstav.", + "Accounts_Password_Policy_AtLeastOneLowercase_Description": "Kræv at et kodeord indeholder mindst et lille bogstav.", "Accounts_Password_Policy_AtLeastOneNumber": "Mindst et tal", - "Accounts_Password_Policy_AtLeastOneNumber_Description": "Sørg for, at en adgangskode indeholder mindst et numerisk tegn.", - "Accounts_Password_Policy_AtLeastOneSpecialCharacter": "Ved mindst et symbol", - "Accounts_Password_Policy_AtLeastOneSpecialCharacter_Description": "Sørg for, at en adgangskode indeholder mindst ét specialtegn.", + "Accounts_Password_Policy_AtLeastOneNumber_Description": "Kræv at en adgangskode indeholder mindst et numerisk tegn.", + "Accounts_Password_Policy_AtLeastOneSpecialCharacter": "Mindst et symbol", + "Accounts_Password_Policy_AtLeastOneSpecialCharacter_Description": "Kræv at en adgangskode indeholder mindst ét specialtegn.", "Accounts_Password_Policy_AtLeastOneUppercase": "Mindst et stort bogstav", - "Accounts_Password_Policy_AtLeastOneUppercase_Description": "Sørg for, at et kodeord indeholde mindst et lille bogstav.", + "Accounts_Password_Policy_AtLeastOneUppercase_Description": "Kræv at et kodeord indeholder mindst et lille bogstav.", "Accounts_Password_Policy_Enabled": "Aktivér adgangskoderegler", "Accounts_Password_Policy_Enabled_Description": "Når det er aktiveret, skal brugernes adgangskoder overholde reglerne deri. Bemærk: Dette gælder kun for nye adgangskoder, ikke for eksisterende.", "Accounts_Password_Policy_ForbidRepeatingCharacters": "Forbyd gentagne tegn", - "Accounts_Password_Policy_ForbidRepeatingCharacters_Description": "Sikrer, at adgangskoder ikke gentager det samme tegn lige efter hinanden.", + "Accounts_Password_Policy_ForbidRepeatingCharacters_Description": "Sikrer at adgangskoder ikke gentager det samme tegn lige efter hinanden.", "Accounts_Password_Policy_ForbidRepeatingCharactersCount": "Maksimalt antal gentagne tegn", "Accounts_Password_Policy_ForbidRepeatingCharactersCount_Description": "Det antal gange, et tegn kan gentages, før det forbydes.", "Accounts_Password_Policy_MaxLength": "Maksimumlængde", - "Accounts_Password_Policy_MaxLength_Description": "Sikrer, at adgangskoder har højst dette antal tegn. Brug \"-1\" for at deaktivere.", + "Accounts_Password_Policy_MaxLength_Description": "Sikrer at adgangskoder har højst dette antal tegn. Brug \"-1\" for at deaktivere.", "Accounts_Password_Policy_MinLength": "Minimumlængde", - "Accounts_Password_Policy_MinLength_Description": "Sikrer, at adgangskoder har mindst dette antal tegn. Brug \"-1\" for at deaktivere.", + "Accounts_Password_Policy_MinLength_Description": "Sikrer at adgangskoder har mindst dette antal tegn. Brug \"-1\" for at deaktivere.", "Accounts_PasswordReset": "Nulstil kodeord", "Accounts_Registration_AuthenticationServices_Default_Roles": "Standardroller til godkendelsestjenester", "Accounts_Registration_AuthenticationServices_Default_Roles_Description": "Standardroller (kommaseparerede), som brugere får, når de tilmelder sig via godkendelsestjenester", @@ -179,6 +192,9 @@ "Accounts_RegistrationForm_Secret_URL": "Hemmelig url", "Accounts_RegistrationForm_SecretURL": "Hemmelig url for tilmeldingsblanket", "Accounts_RegistrationForm_SecretURL_Description": "Du skal angive en tilfældig streng, som vil blive tilføjet til din registrerings-url. Eksempel: https://open.rocket.chat/register/[secret_hash]", + "Accounts_Registration_InviteUrlType": "Typen af invitations-URL", + "Accounts_Registration_InviteUrlType_Direct": "Direkte", + "Accounts_Registration_InviteUrlType_Proxy": "Proxy", "Accounts_RequireNameForSignUp": "Navn er obligatorisk for tilmelding", "Accounts_RequirePasswordConfirmation": "Kræv kodeordsbekræftelse", "Accounts_SearchFields": "Felter, der skal medtages i søgning", @@ -187,16 +203,33 @@ "Accounts_Directory_DefaultView": "Standardvisning for vejviseren", "Accounts_SetDefaultAvatar": "Vælg standardavatar", "Accounts_SetDefaultAvatar_Description": "Forsøger at finde en standardavatar baseret på OAuth-konto eller Gravatar", + "Accounts_Set_Email_Of_External_Accounts_as_Verified": "Sæt e-mail for ekstern konto som verificeret", + "Accounts_Set_Email_Of_External_Accounts_as_Verified_Description": "Konti oprettet fra eksterne tjenester, såsom LDAP, OAth osv., får automatisk deres e-mails verificeret", "Accounts_ShowFormLogin": "Vis standardformular for login", + "Accounts_TwoFactorAuthentication_By_Email_Enabled": "Aktivér to-faktor-godkendelse via e-mail", + "Accounts_TwoFactorAuthentication_By_Email_Enabled_Description": "Brugere med e-mail verificeret og indstillingen aktiveret på deres profilside, vil modtage en e-mail med en midlertidig kode til at autorisere handlinger såsom login, gemme profil osv.", + "Accounts_TwoFactorAuthentication_By_Email_Auto_Opt_In": "Tilmeld nye brugere automatisk til to-faktor via e-mail", + "Accounts_TwoFactorAuthentication_By_Email_Auto_Opt_In_Description": "Nye brugere har som standard to-faktor-godkendelse via e-mail aktiveret. De vil være i stand til at deaktivere det på deres profilside.", + "Accounts_TwoFactorAuthentication_By_Email_Code_Expiration": "Udløbstid i sekunder for koden sendt via e-mail", "Accounts_TwoFactorAuthentication_Enabled": "Aktivér tofaktorgodkendelse", + "Accounts_TwoFactorAuthentication_Enabled_Description": "Brugere kan konfigurere deres to-faktor-godkendelse ved hjælp af en hvilken som helst TOTP-app, f.eks. Google Authenticator eller Authy", "Accounts_TwoFactorAuthentication_MaxDelta": "Maksimalt delta", "Accounts_UserAddedEmail_Default": "

        Velkommen til [Site_Name]

        Gå til [Site_URL] for at prøve den bedste open source-chatløsning, du kan få!

        Du kan logge ind med din e-mail: [email] og kodeordet: [password]. Du skal måske ændre det efter dit første login.", "Accounts_TwoFactorAuthentication_MaxDelta_Description": "Det maksimale delta afgør, hvor mange tokens der er gyldige på et givent tidspunkt. Tokens genereres hvert 30. sekund og er gyldige i (30 * maksimalt delta) sekunder.
        Eksempel: Med et maksimalt delta på 10 kan hvert tegn bruges op til 300 sekunder før eller efter sit tidsstempel. Dette er nyttigt, når klientens ur ikke er korrekt synkroniseret med serveren.", + "Accounts_TwoFactorAuthentication_RememberFor": "Husk to-faktor i (sekunder)", + "Accounts_TwoFactorAuthentication_RememberFor_Description": "Anmod ikke om to-faktor-godkendelses-kode, hvis den allerede blev leveret før det givne tidspunkt.", "Accounts_UseDefaultBlockedDomainsList": "Brug en standardliste over blokerede domæner", "Accounts_UseDNSDomainCheck": "Brug DNS-domænetjek", "Accounts_UserAddedEmailSubject_Default": "Du er blevet føjet til [Site_Name]", "Accounts_UserAddedEmail_Description": "Du kan bruge følgende pladsholdere:

        • [navn], [fname] eller [lname] for brugerens fulde navn, fornavn eller efternavn.
        • [email] for brugerens e-mail.
        • [password] for brugerens adgangskode.
        • [Site_Name] og [Site_URL] for henholdsvis applikationsnavn og url.
        ", "Activate": "Aktiver", + "Active_users": "Aktive brugere", + "Daily_Active_Users": "Aktive brugere dagligt", + "Weekly_Active_Users": "Aktive brugere ugentligt", + "Monthly_Active_Users": "Aktive brugere månedsvis", + "DAU_value": "DAU __value__", + "WAU_value": "WAU __value__", + "MAU_value": "MAU __value__", "Activity": "Aktivitet", "Add": "Tilføj", "add-oauth-service": "Tilføj OAuth-tjeneste", @@ -213,6 +246,7 @@ "Add_custom_oauth": "Tilføj brugerdefineret OAuth", "Add_Domain": "Tilføj domæne", "Add_files_from": "Tilføj filer fra", + "add-livechat-department-agents": "Tilføj omni-kanal-agenter til afdelinger", "Add_manager": "Tilføj manager", "Add_Role": "Tilføj rolle", "Add_user": "Tilføj bruger", @@ -253,6 +287,7 @@ "Allow_Invalid_SelfSigned_Certs_Description": "Tillad ugyldige og selvtegnede SSL-certifikater til godkendelse og forhåndsvisning af links.", "Allow_switching_departments": "Tillad besøgende at skifte afdeling", "Allow_Marketing_Emails": "Tillad markedsførings-mails", + "Allow_Online_Agents_Outside_Office_Hours": "Tillad online-agenter uden for kontortid", "Almost_done": "Næsten færdig", "Alphabetical": "Alfabetisk", "Always_open_in_new_window": "Åbn altid i nyt vindue", @@ -393,7 +428,7 @@ "AutoTranslate_APIKey": "API nøgle", "AutoTranslate_Change_Language_Description": "Ændring af automatisk oversættelsessprog oversætter ikke tidligere meddelelser.", "AutoTranslate_Enabled": "Aktivér Auto-Translate", - "AutoTranslate_Enabled_Description": "Aktivering af automatisk oversættelse gør det muligt for folk med automatisk at oversættetilladelse til at få alle meddelelser automatisk oversat til deres valgte sprog. Gebyrer kan være gældende, se Googles dokumentation", + "AutoTranslate_Enabled_Description": "Aktivering af automatisk oversættelse gør det muligt for folk med autooversættelse rettigheder til at få alle meddelelser automatisk oversat til deres valgte sprog. Gebyrer kan blive påført.", "Available": "tilgængelig", "Available_agents": "Tilgængelige agenter", "Avatar": "Avatar", @@ -1373,6 +1408,7 @@ "if_they_are_from": "(hvis de er fra %s)", "If_this_email_is_registered": "Hvis denne email er registreret, sender vi instruktioner om, hvordan du nulstiller din adgangskode. Hvis du ikke modtager en e-mail inden for kort tid, kan du komme tilbage og prøve igen.", "If_you_are_sure_type_in_your_password": "Hvis du er sikker, indtast dit kodeord:", + "Members_List": "Medlemsliste", "If_you_are_sure_type_in_your_username": "Hvis du er sikker, indtast dit brugernavn:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Hvis du ikke har en, send en mail til [omni@rocket.chat] (mailto: omni@rocket.chat) for at få din.", "Iframe_Integration": "Iframe Integration", @@ -1765,6 +1801,7 @@ "Mail_Message_No_messages_selected_select_all": "Du har ikke valgt nogen meddelelser", "Mail_Messages": "Mail Beskeder", "Mail_Messages_Instructions": "Vælg hvilke meddelelser du vil sende via e-mail ved at klikke på meddelelserne", + "Room_uploaded_file_list": "Filliste", "Mail_Messages_Subject": "Her er en udvalgt del af%s meddelelser", "Mailer": "Mailer", "Mailer_body_tags": "Du skal bruge [unsubscribe] til abonnementet.
        Du kan muligvis bruge [navn], [fname], [lname] for brugerens fulde navn, fornavn eller efternavn.
        Du kan bruge [email] til brugerens e-mail.", @@ -1807,7 +1844,6 @@ "Max_length_is": "Maks længde er%s", "Media": "Medier", "Medium": "Medium", - "Members_List": "Medlemsliste", "mention-all": "Nævne alt", "mention-all_description": "Tilladelse til at bruge @all mention", "mention-here": "Nævne her", @@ -2297,7 +2333,7 @@ "RetentionPolicyRoom_FilesOnly": "Beskær kun filer, hold meddelelser", "RetentionPolicyRoom_MaxAge": "Maksimal meddelelsesalder i dage (standard: __max__)", "RetentionPolicyRoom_OverrideGlobal": "Overstyr global retention politik", - "RetentionPolicyRoom_ReadTheDocs": "Pas på! At klare disse indstillinger uden yderste omhu kan ødelægge al meddelelseshistorik. Læs venligst dokumentationen, før du aktiverer funktionen her.", + "RetentionPolicyRoom_ReadTheDocs": "OBS! justering af disse indstillinger uden den yderste omhu, kan slette al meddelelseshistorik. Læs venligst dokumentationen før du aktiverer funktionen her.", "Retry_Count": "Prøv igen", "Robot_Instructions_File_Content": "Indhold af robots.txt-fil", "Role": "Rolle", @@ -2331,7 +2367,6 @@ "Room_type_changed_successfully": "Værelsestype er ændret", "Room_type_of_default_rooms_cant_be_changed": "Dette er et standardrum, og typen kan ikke ændres. Kontakt venligst din administrator.", "Room_unarchived": "Værelse unarchived", - "Room_uploaded_file_list": "Filliste", "Room_uploaded_file_list_empty": "Ingen tilgængelige filer.", "Rooms": "Værelser", "run-import": "Kør import", @@ -2686,6 +2721,7 @@ "Trigger_Words": "Trigger Words", "Triggers": "triggers", "True": "Sandt", + "Troubleshoot_Disable_Notifications": "Deaktiver notifikationer", "Tuesday": "tirsdag", "Turn_OFF": "Sluk", "Turn_ON": "Tænde for", diff --git a/packages/rocketchat-i18n/i18n/de-AT.i18n.json b/packages/rocketchat-i18n/i18n/de-AT.i18n.json index 1313ad50f1a8..523abbd1db5a 100644 --- a/packages/rocketchat-i18n/i18n/de-AT.i18n.json +++ b/packages/rocketchat-i18n/i18n/de-AT.i18n.json @@ -1302,6 +1302,7 @@ "if_they_are_from": "(wenn sie von %s sind)", "If_this_email_is_registered": "Wenn diese E-Mail registriert ist, senden wir Ihnen Anweisungen zum Zurücksetzen Ihres Passworts. Wenn Sie in Kürze keine E-Mail erhalten, kommen Sie bitte zurück und versuchen Sie es erneut.", "If_you_are_sure_type_in_your_password": "Wenn Sie sich sicher sind, geben Sie ihr Passwort ein.", + "Members_List": "Mitglieder", "If_you_are_sure_type_in_your_username": "Wenn Sie sich sicher sind, geben Sie Ihren Benutzernamen ein:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Wenn Sie keine haben, senden Sie eine E-Mail an [omni@rocket.chat] (mailto: omni@rocket.chat), um Ihre zu erhalten.", "Iframe_Integration": "Iframe-Integration", @@ -1674,6 +1675,7 @@ "Mail_Message_No_messages_selected_select_all": "Sie haben keine Nachrichten ausgewählt.", "Mail_Messages": "Nachrichten per E-Mail senden", "Mail_Messages_Instructions": "Wählen Sie aus, welche Nachrichten Sie per E-Mail senden möchten, indem Sie die Nachrichten anklicken. ", + "Room_uploaded_file_list": "Dateien", "Mail_Messages_Subject": "Hier ist ein ausgewählter Teil aus %s Nachrichten", "Mailer": "Mailer", "Mailer_body_tags": "Sie müssen [unsubscribe] verwenden, um einen Link zum Abmelden aus dem Verteiler zur Verfügung zu stellen.
        Sie können [name] für den Vor- und Nachnamen, [fname] für den Vornamen oder [lname] für den Nachnamen des Benutzers verwenden.
        Ebenfalls können Sie [email] verwenden, um die E-Mail-Adresse des Benutzers anzugeben.", @@ -1715,7 +1717,6 @@ "Max_length_is": "Maximale Länge ist%s", "Media": "Medien", "Medium": "Mittel", - "Members_List": "Mitglieder", "mention-all": "Erwähnen Sie alle", "mention-all_description": "Erlaubnis, die @all Erwähnung zu verwenden", "mention-here": "Erwähnen Sie hier", @@ -2208,7 +2209,6 @@ "Room_type_changed_successfully": "Der Raumtyp wurde erfolgreich geändert.", "Room_type_of_default_rooms_cant_be_changed": "Dies ist ein Standardraum und der Typ kann nicht geändert werden. Bitte wenden Sie sich an Ihren Administrator.", "Room_unarchived": "Der Raum wurde wiederhergestellt.", - "Room_uploaded_file_list": "Dateien", "Room_uploaded_file_list_empty": "Es wurden noch keine Dateien hochgeladen.", "Rooms": "Räume", "run-import": "Führen Sie den Import aus", @@ -2564,6 +2564,7 @@ "Trigger_Words": "Trigger Words", "Triggers": "Auslöser", "True": "Ja", + "Troubleshoot_Disable_Notifications": "Benachrichtigungen ausschalten", "Tuesday": "Dienstag", "Turn_OFF": "Abschalten", "Turn_ON": "Anmachen", diff --git a/packages/rocketchat-i18n/i18n/de.i18n.json b/packages/rocketchat-i18n/i18n/de.i18n.json index df895432c5e4..8c6eee319cbb 100644 --- a/packages/rocketchat-i18n/i18n/de.i18n.json +++ b/packages/rocketchat-i18n/i18n/de.i18n.json @@ -1637,6 +1637,7 @@ "if_they_are_from": "(wenn sie von %s sind)", "If_this_email_is_registered": "Wenn es sich um eine registrierte E-Mail-Adresse handelt, werden wir an diese eine Anleitung zum Zurücksetzen des Passworts senden. Sollten Sie in Kürzen keine E-Mail erhalten, kommen Sie wieder und versuchen Sie es noch einmal.", "If_you_are_sure_type_in_your_password": "Wenn Sie sich sicher sind, geben Sie Ihr Passwort ein:", + "Members_List": "Mitglieder", "If_you_are_sure_type_in_your_username": "Wenn Sie sich sicher sind, geben Sie Ihren Benutzernamen ein:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Wenn Sie keine haben, senden Sie eine E-Mail an [omni@rocket.chat] (mailto: omni@rocket.chat), um Ihre zu erhalten.", "If_you_didnt_ask_for_reset_ignore_this_email": "Wenn Sie das Zurücksetzen des Kennworts nicht angefordert haben, können Sie diese E-Mail ignorieren.", @@ -2100,6 +2101,7 @@ "Mail_Message_No_messages_selected_select_all": "Sie haben keine Nachrichten ausgewählt. ", "Mail_Messages": "Nachrichten per E-Mail senden", "Mail_Messages_Instructions": "Wählen Sie die per E-Mail zu versendenden Nachrichten aus, indem Sie die Nachrichten anklicken.", + "Room_uploaded_file_list": "Dateien", "Mail_Messages_Subject": "Hier ist ein ausgewählter Teil aus %s Nachrichten", "Mailer": "Mailer", "Mailer_body_tags": "Sie müssen [unsubscribe] verwenden, um einen Link zum Abmelden aus dem Verteiler zur Verfügung zu stellen.
        Sie können [name] für den vollständigen Namen, [fname] für den Vornamen oder [lname] für den Nachnamen des Benutzers verwenden.
        Ebenfalls können Sie [email] verwenden, um die E-Mail-Adresse des Benutzers anzugeben.", @@ -2166,7 +2168,6 @@ "Maximum": "Maximum", "Media": "Medien", "Medium": "Normal", - "Members_List": "Mitglieder", "mention-all": "Alle erwähnen", "mention-all_description": "Berechtigung, @all zur Erwähnung aller Kanalmitglieder zu verwenden", "mention-here": "Hier erwähnen", @@ -2768,7 +2769,6 @@ "Room_type_changed_successfully": "Der Raumtyp wurde erfolgreich geändert", "Room_type_of_default_rooms_cant_be_changed": "Das ist ein Standardraum, dessen Typ nicht geändert werden kann. Bitte sprechen Sie mit Ihrem Administrator", "Room_unarchived": "Der Raum wurde aus dem Archiv geholt", - "Room_uploaded_file_list": "Dateien", "Room_uploaded_file_list_empty": "Es wurden noch keine Dateien hochgeladen", "Rooms": "Räume", "Routing": "Routing", @@ -3227,6 +3227,7 @@ "Trigger_Words": "Trigger-Wörter", "Triggers": "Trigger", "True": "Ja", + "Troubleshoot_Disable_Notifications": "Benachrichtigungen deaktivieren", "Tuesday": "Dienstag", "Turn_OFF": "Deaktivieren", "Turn_ON": "Aktivieren", diff --git a/packages/rocketchat-i18n/i18n/el.i18n.json b/packages/rocketchat-i18n/i18n/el.i18n.json index 7d915d1c4cb3..05c4e635cfe1 100644 --- a/packages/rocketchat-i18n/i18n/el.i18n.json +++ b/packages/rocketchat-i18n/i18n/el.i18n.json @@ -1304,6 +1304,7 @@ "if_they_are_from": "(αν είναι από %s)", "If_this_email_is_registered": "Αν αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου είναι καταχωρημένο, θα στείλουμε οδηγίες σχετικά με τον τρόπο επαναφοράς του κωδικού πρόσβασής σας. Εάν δεν λάβετε σύντομα ένα μήνυμα ηλεκτρονικού ταχυδρομείου, επιστρέψτε και δοκιμάστε ξανά.", "If_you_are_sure_type_in_your_password": "Εάν είστε βέβαιοι πληκτρολογήστε τον κωδικό σας:", + "Members_List": "Λίστα μελών", "If_you_are_sure_type_in_your_username": "Εάν είστε βέβαιοι πληκτρολογήστε το όνομα χρήστη σας:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Αν δεν έχετε κάποιο, στείλτε ένα μήνυμα ηλεκτρονικού ταχυδρομείου στο [omni@rocket.chat] (mailto: omni@rocket.chat) για να το κάνετε.", "Iframe_Integration": "Ενσωμάτωση iframe", @@ -1676,6 +1677,7 @@ "Mail_Message_No_messages_selected_select_all": "Δεν έχετε επιλέξει κανένα μήνυμα", "Mail_Messages": "μηνύματα ηλεκτρονικού ταχυδρομείου", "Mail_Messages_Instructions": "Επιλέξτε τα μηνύματα που θέλετε να στείλετε μέσω e-mail πατώντας τα μηνύματα", + "Room_uploaded_file_list": "Λίστα αρχείων", "Mail_Messages_Subject": "Εδώ είναι ένα επιλεγμένο τμήμα των μηνυμάτων %s", "Mailer": "Μέιλερ", "Mailer_body_tags": "Θα πρέπει να χρησιμοποιήσετε [unsubscribe] για το διαγραφής σύνδεσμο.
        Μπορείτε να χρησιμοποιήσετε το [name], [fname], [lname] για το πλήρες όνομα του χρήστη, το όνομα ή το επώνυμο, αντίστοιχα.
        Μπορείτε να χρησιμοποιήσετε το [email] για το ηλεκτρονικό ταχυδρομείο του χρήστη.", @@ -1717,7 +1719,6 @@ "Max_length_is": "Το μέγιστο μήκος είναι%s", "Media": "Μεσο ΜΑΖΙΚΗΣ ΕΝΗΜΕΡΩΣΗΣ", "Medium": "Μεσαίο", - "Members_List": "Λίστα μελών", "mention-all": "Αναφέρετε όλα", "mention-all_description": "Άδεια χρήσης της παραπομπής @all", "mention-here": "Αναφέρετε εδώ", @@ -2209,7 +2210,6 @@ "Room_type_changed_successfully": "Τύπος δωματίου άλλαξε με επιτυχία", "Room_type_of_default_rooms_cant_be_changed": "Πρόκειται για ένα προεπιλεγμένο δωμάτιο και ο τύπος δεν μπορεί να αλλάξει, συμβουλευτείτε τον διαχειριστή σας.", "Room_unarchived": "δωμάτιο αρχειοθετημένα", - "Room_uploaded_file_list": "Λίστα αρχείων", "Room_uploaded_file_list_empty": "Δεν υπάρχουν διαθέσιμα αρχεία.", "Rooms": "Δωμάτια", "run-import": "Εκτέλεση εισαγωγής", @@ -2564,6 +2564,7 @@ "Trigger_Words": "Λέξεις σκανδάλη", "Triggers": "εναύσματα", "True": "Αληθής", + "Troubleshoot_Disable_Notifications": "Απενεργοποίηση Ειδοποιήσεων", "Tuesday": "Τρίτη", "Turn_OFF": "Σβήνω", "Turn_ON": "Ανάβω", diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 39ea3a6ed4e6..0bccedfa5502 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -1150,7 +1150,7 @@ "Desktop_Notifications_Not_Enabled": "Desktop Notifications are Not Enabled", "Details": "Details", "Different_Style_For_User_Mentions": "Different style for user mentions", - "Direct_message_creation_description" : "You are about to create a chat with multiple users. Add the ones you would like to talk, everyone in the same place, using direct messages.", + "Direct_message_creation_description": "You are about to create a chat with multiple users. Add the ones you would like to talk, everyone in the same place, using direct messages.", "Direct_message_you_have_joined": "You have joined a new direct message with", "Direct_message_someone": "Direct message someone", "Direct_Messages": "Direct Messages", @@ -1713,6 +1713,7 @@ "if_they_are_from": "(if they are from %s)", "If_this_email_is_registered": "If this email is registered, we'll send instructions on how to reset your password. If you do not receive an email shortly, please come back and try again.", "If_you_are_sure_type_in_your_password": "If you are sure type in your password:", + "Members_List": "Members List", "If_you_are_sure_type_in_your_username": "If you are sure type in your username:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "If you don't have one send an email to [omni@rocket.chat](mailto:omni@rocket.chat) to get yours.", "If_you_didnt_ask_for_reset_ignore_this_email": "If you didn't ask for your password reset, you can ignore this email.", @@ -2205,6 +2206,7 @@ "Mail_Message_No_messages_selected_select_all": "You haven't selected any messages", "Mail_Messages": "Mail Messages", "Mail_Messages_Instructions": "Choose which messages you want to send via email by clicking the messages", + "Room_uploaded_file_list": "Files List", "Mail_Messages_Subject": "Here's a selected portion of %s messages", "Mailer": "Mailer", "Mailer_body_tags": "You must use [unsubscribe] for the unsubscription link.
        You may use [name], [fname], [lname] for the user's full name, first name or last name, respectively.
        You may use [email] for the user's email.", @@ -3743,4 +3745,4 @@ "Your_server_link": "Your server link", "Your_temporary_password_is_password": "Your temporary password is [password].", "Your_workspace_is_ready": "Your workspace is ready to use 🎉" -} +} \ No newline at end of file diff --git a/packages/rocketchat-i18n/i18n/eo.i18n.json b/packages/rocketchat-i18n/i18n/eo.i18n.json index 7a0663831181..47fb5b40a3e5 100644 --- a/packages/rocketchat-i18n/i18n/eo.i18n.json +++ b/packages/rocketchat-i18n/i18n/eo.i18n.json @@ -1298,6 +1298,7 @@ "if_they_are_from": "(se ili estas de %s)", "If_this_email_is_registered": "Se ĉi tiu retpoŝto estas registrita, ni sendos instrukciojn pri kiel restarigi vian pasvorton. Se vi ne ricevos retpoŝton baldaŭ, bonvolu reveni kaj provu denove.", "If_you_are_sure_type_in_your_password": "Se vi certas tajpi vian pasvorton:", + "Members_List": "Membroj Listo", "If_you_are_sure_type_in_your_username": "Se vi certe certos vian uzantnomon:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Se vi ne havas, sendu retmesaĝon al [omni@rocket.chat] (mailto: omni@rocket.chat) por akiri vian.", "Iframe_Integration": "Serame Integriĝo", @@ -1670,6 +1671,7 @@ "Mail_Message_No_messages_selected_select_all": "Vi ne elektis iujn mesaĝojn", "Mail_Messages": "Poŝtaj Mesaĝoj", "Mail_Messages_Instructions": "Elektu la mesaĝojn, kiujn vi volas sendi per retpoŝto per klakado de la mesaĝoj", + "Room_uploaded_file_list": "Dosieroj Listo", "Mail_Messages_Subject": "Jen elektita parto de%s mesaĝoj", "Mailer": "Mailer", "Mailer_body_tags": "Vi devas uzu [unsubscribe] por la unsubscription link.
        Vi povas uzi [nomo], [fname], [lname] por la nomo, plena nomo aŭ familinomo, respektive.
        Vi povas uzi [retpoŝton] por la retpoŝto de la uzanto.", @@ -1711,7 +1713,6 @@ "Max_length_is": "Max longo estas%s", "Media": "Amaskomunikiloj", "Medium": "Meza", - "Members_List": "Membroj Listo", "mention-all": "Mencio Ĉiuj", "mention-all_description": "Permeso uzi la @all-mencion", "mention-here": "Mencio Ĉi tie", @@ -2203,7 +2204,6 @@ "Room_type_changed_successfully": "Ĉambro-tipo ŝanĝiĝis sukcese", "Room_type_of_default_rooms_cant_be_changed": "Ĉi tiu estas defaŭlta ĉambro kaj la tipo ne povas esti ŝanĝita, bonvolu konsulti kun via administranto.", "Room_unarchived": "Salono senatimigita", - "Room_uploaded_file_list": "Dosieroj Listo", "Room_uploaded_file_list_empty": "Ne disponeblaj dosieroj.", "Rooms": "Salonoj", "run-import": "Kuri Importadon", @@ -2558,6 +2558,7 @@ "Trigger_Words": "Trigger Words", "Triggers": "Triggers", "True": "Vera", + "Troubleshoot_Disable_Notifications": "Malebligi Sciigojn", "Tuesday": "Mardo", "Turn_OFF": "Malŝalti", "Turn_ON": "Ŝalti", diff --git a/packages/rocketchat-i18n/i18n/es.i18n.json b/packages/rocketchat-i18n/i18n/es.i18n.json index 126a75c65397..ffb725ae3a83 100644 --- a/packages/rocketchat-i18n/i18n/es.i18n.json +++ b/packages/rocketchat-i18n/i18n/es.i18n.json @@ -1421,6 +1421,7 @@ "if_they_are_from": "(si son de %s)", "If_this_email_is_registered": "Si este correo electrónico está registrado, le enviaremos instrucciones sobre cómo restablecer su contraseña. Si no recibe un correo electrónico en breve, vuelva y vuelva a intentarlo.", "If_you_are_sure_type_in_your_password": "Si está seguro escriba su contraseña:", + "Members_List": "Lista de Miembros", "If_you_are_sure_type_in_your_username": "Si está seguro ingrese su nombre de usuario:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Si no tiene uno, envíe un correo electrónico a [omni@rocket.chat] (mailto: omni@rocket.chat) para obtener el suyo.", "If_you_didnt_ask_for_reset_ignore_this_email": "Si no pediste resetear tu contraseña, puedes ignorar este correo electrónico.", @@ -1798,6 +1799,7 @@ "Mail_Message_No_messages_selected_select_all": "No ha seleccionado ningún mensaje", "Mail_Messages": "Mensajes de correo", "Mail_Messages_Instructions": "Seleccione los mensajes que desea enviar por correo electrónico haciendo clic en los mensajes", + "Room_uploaded_file_list": "Lista de Archivos", "Mail_Messages_Subject": "Aquí hay una parte seleccionada de %s mensajes", "Mailer": "Remitente", "Mailer_body_tags": "Debe utilizar [unsubscribe] para el enlace de anulación de la suscripción.
        Es posible utilizar [name], [fname], [lname] para el nombre completo del usuario, nombre o apellido, respectivamente.
        Es posible utilizar [email] para el correo electrónico del usuario.", @@ -1839,7 +1841,6 @@ "Max_length_is": "La longitud máxima es%s", "Media": "Medios de comunicación", "Medium": "Medio", - "Members_List": "Lista de Miembros", "mention-all": "Mencione todo", "mention-all_description": "Permiso para usar la @all mencionar", "mention-here": "Mencione aquí", @@ -2348,7 +2349,6 @@ "Room_type_changed_successfully": "Tipo de sala cambiado con éxito", "Room_type_of_default_rooms_cant_be_changed": "Esta es una sala predeterminada y no se puede cambiar el tipo. Consulte a su administrador.", "Room_unarchived": "Sala no archivada", - "Room_uploaded_file_list": "Lista de Archivos", "Room_uploaded_file_list_empty": "Ningún archivo disponible.", "Rooms": "Salas", "run-import": "Ejecutar importación", @@ -2715,6 +2715,7 @@ "Trigger_Words": "Las palabras de activación", "Triggers": "disparadores", "True": "Verdadero", + "Troubleshoot_Disable_Notifications": "Deshabilitar notificaciones", "Tuesday": "Martes", "Turn_OFF": "Apagar", "Turn_ON": "Encender", @@ -3007,4 +3008,4 @@ "Your_push_was_sent_to_s_devices": "Su push fue enviado a los dispositivos %s", "Your_server_link": "Su enlace de servidor", "Your_workspace_is_ready": "Su espacio de trabajo está listo para usar 🎉" -} +} \ No newline at end of file diff --git a/packages/rocketchat-i18n/i18n/eu.i18n.json b/packages/rocketchat-i18n/i18n/eu.i18n.json index 8feaa8df859a..56382d42f1a9 100644 --- a/packages/rocketchat-i18n/i18n/eu.i18n.json +++ b/packages/rocketchat-i18n/i18n/eu.i18n.json @@ -1,12 +1,12 @@ { "403": "Debekatuta", - "500": "Internal Server Error", + "500": "Zerbitzariaren Barne Errorea", "#channel": "#kanala", "0_Errors_Only": "0 - Akatsak Bakarrik", "12_Hour": "12 orduko erlojua", "1_Errors_and_Information": "1 - Akatsak eta Informazioa", "24_Hour": "24 orduko erlojua", - "2_Erros_Information_and_Debug": "1 - Akatsak, Informazioa eta Arazketa (debug)", + "2_Erros_Information_and_Debug": "1 - Akatsak, Informazioa eta Arazketa", "@username": "@erabiltzailea", "@username_message": "@erabiltzailea ", "__username__is_no_longer__role__defined_by__user_by_": "__username__ is no longer __role__ by __user_by__", @@ -34,6 +34,7 @@ "Accounts_Default_User_Preferences_audioNotifications": "Audio jakinarazpen alerta lehenetsia", "Accounts_iframe_enabled": "Gaituta", "Additional_Feedback": "Feedback osagarria", + "Administration": "Ezarpenak", "All_channels": "Kanal guztiak", "App_Details": "Aplikazioaren xehetasunak", "App_Information": "Aplikazioen informazioa", @@ -71,13 +72,14 @@ "Back_to_applications": "Aplikazioetara itzuli", "Back_to_chat": "Txatera itzuli", "ban-user": "Erabiltzailea debekatu", - "Block_User": "Blokeatu erabiltzailea", + "Block_User": "Erabiltzailea blokeatu", "Blockchain": "blockchain", "Cancel": "Ezeztatu", "Cancel_message_input": "Ezeztatu", "CAS_enabled": "Gaituta", "Channels": "Kanalak", "Channels_list": "Kanal publikoen zerrenda", + "Chatpal_Users": "Erabiltzaileak", "create-c": "Kanal Publikoak Sortu", "create-p": "Kanal Pribatuak Sortu", "Direct_Messages": "Mezu Zuzenak", @@ -92,6 +94,7 @@ "Installation": "Instalazioa", "Integrations_Outgoing_Type_FileUploaded": "Fitxategia kargatu da", "New_messages": "Mezu berriak", + "No_channels_yet": "Oraindik ez zara inongo kanalen partaide", "No_discussions_yet": "Ez dago eztabaidarik", "Options": "Aukerak", "Please_fill_name_and_email": "Sartu izena eta posta elektronikoa mesedez", @@ -99,6 +102,7 @@ "Private_Groups_list": "Talde Pribatuen Zerrenda", "RetentionPolicy_Enabled": "Gaituta", "Room_name_changed": "__user_by__(e)k mintzagelaren izena __room_name__ra aldatu du", + "Search_Channels": "Bilatu Kanalak", "Send": "Bidali", "Skip": "Saltatu", "Start_Chat": "Hasi txata", @@ -111,6 +115,7 @@ "User_joined_channel": "Kanalera batu da.", "User_joined_channel_female": "Kanalera batu da.", "User_joined_channel_male": "kanalera batu da.", + "Users": "Erabiltzaileak", "We_are_offline_Sorry_for_the_inconvenience": "Lineaz kanpo gaude. Barkatu eragozpenak.", "Yes": "Bai" } \ No newline at end of file diff --git a/packages/rocketchat-i18n/i18n/fa.i18n.json b/packages/rocketchat-i18n/i18n/fa.i18n.json index 709fcccc497f..6d1e6031c375 100644 --- a/packages/rocketchat-i18n/i18n/fa.i18n.json +++ b/packages/rocketchat-i18n/i18n/fa.i18n.json @@ -505,6 +505,8 @@ "Broadcasting_enabled": "فعال کردن پخش", "Broadcasting_media_server_url": "آدرس اینترنتی سرور رسانه ای", "Browse_Files": "مرور پرونده ها", + "Browser_does_not_support_audio_element": "مرورگر شما از عنصر صدا پشتیبانی نمی کند.", + "Browser_does_not_support_video_element": "مرورگر شما از عنصر ویدیو پشتیبانی نمی کند.", "Bugsnag_api_key": "کلید API Bugsnag", "Build_Environment": "محیط زیست ساختن", "bulk-register-user": "فیدبک ایجاد کانال ها", @@ -633,6 +635,7 @@ "clear": "پاک کردن", "Clear_all_unreads_question": "پاک کردن همه ناخوانده ها؟", "clear_cache_now": "پاک کردن Cache Now", + "Clear_filters": "فیلترها را پاک کنید", "clear_history": "پاک کردن تاریخچه", "Click_here": "اینجا کلیک کنید", "Click_here_for_more_info": "برای اطلاعات بیشتر اینجا کلیک کنید", @@ -1061,6 +1064,7 @@ "Decline": "کاهش می یابد", "Default": "پیش فرض", "Delete": "حذف کردن", + "Delete_all_closed_chats": "تمام گپ های بسته را حذف کنید", "delete-c": "کانالهای عمومی را حذف کنید", "delete-c_description": "مجوز حذف کانالهای عمومی", "delete-d": "حذف پیام های مستقیم", @@ -1118,9 +1122,13 @@ "Disabled": "معلول", "Disallow_reacting": "نادیده گرفتن واکنش", "Disallow_reacting_Description": "واکنش نشان می دهد", + "Disconnect": "قطع شدن", "Display_offline_form": "نمایش فرم آفلاین", + "Display_chat_permissions": "نمایش مجوزهای گپ", "Display_unread_counter": "نمایش تعداد پیامهای خوانده نشده", "Displays_action_text": "نمایش متن عمل", + "Discussion_start": "بحث را شروع کنید", + "Discussion_first_message_title": "پیام شما", "Dont_ask_me_again": "دوباره از من بپرس", "Dont_ask_me_again_list": "از لیست من بپرس", "Do_not_display_unread_counter": "هیچ شمارندهی این کانال را نمایش ندهید", @@ -1132,14 +1140,20 @@ "Domain_removed": "دامنه حذف شد", "Domains": "دامنه ها", "Domains_allowed_to_embed_the_livechat_widget": "لیستی از دامنه های جدا شده با کاما مجاز به جاسازی ویجت livechat. برای خالی کردن تمام دامنه ها، خالی بگذارید", + "Downloading_file_from_external_URL": "بارگیری فایل از آدرس خارجی", + "Download_Info": "اطلاعات بارگیری", "Download_My_Data": "داده های من را دانلود کنید", + "Download_Pending_Files": "فایلهای در انتظار را بارگیری کنید", "Download_Snippet": "دانلود", "Drop_to_upload_file": "برای آپلود رها کنید", "Dry_run": "اجرای آزمایشی", "Dry_run_description": "تنها یک ایمیل به آدرس موجود در فرم ارسال خواهد شد. ایمیل باید متعلق به یک کاربر معتبر باشد.", + "duplicated-account": "حساب تکراری", "Duplicate_archived_channel_name": "یک کانال آرشیو شده با نام `#%s` وجود دارد", "Duplicate_archived_private_group_name": "یک گروه خصوصی آرشیو شده با نام '%s' وجود دارد", "Duplicate_channel_name": "یک کانال با نام '%s' وجود دارد", + "Duplicated_Email_address_will_be_ignored": "آدرس ایمیل کپی شده نادیده گرفته می شود.", + "Duplicate_file_name_found": "نام پرونده تکراری یافت شد.", "Duplicate_private_group_name": "گروهی خصوصی با نام '%s' وجود دارد", "Duration": "مدت زمان", "Edit": "ویرایش", @@ -1493,6 +1507,7 @@ "if_they_are_from": "(اگر از%s هستند)", "If_this_email_is_registered": "اگر این ایمیل ثبت شده باشد، دستورالعمل هایی در مورد نحوه بازنشانی گذرواژه شما ارسال خواهیم کرد. اگر مدت کوتاهی ایمیل دریافت نکنید، لطفا بیایید و دوباره امتحان کنید.", "If_you_are_sure_type_in_your_password": "اگر مطمئن هستید رمز خود را وارد کنید:", + "Members_List": "فهرست کاربران", "If_you_are_sure_type_in_your_username": "اگر مطمئنید نام کاربری خود را وارد کنید:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "اگر شما یک ایمیل برای [omni@rocket.chat] (mailto: omni@rocket.chat) ارسال نکنید تا بتوانید از آن استفاده کنید.", "Iframe_Integration": "یکپارچگی Iframe", @@ -1867,6 +1882,7 @@ "Mail_Message_No_messages_selected_select_all": "هیچ پیامی انتخاب نشده است", "Mail_Messages": "پیام های پست الکترونیکی", "Mail_Messages_Instructions": "روی پیامی که می خواهید با ایمیل بفرستید کلیک کنید", + "Room_uploaded_file_list": "لیست فایل ها", "Mail_Messages_Subject": "اینجا قسمتی از پیام های %s است", "Mailer": "ایمیل کننده", "Mailer_body_tags": "شما باید [unsubscribe] برای لینک لغو عضویت استفاده کنید.
        شما ممکن است [name]، [fname] برای نام کامل کاربر، نام اول یا نام خانوادگی، به ترتیب استفاده کنید، [lname].
        ممکن است [email] برای ایمیل کاربر استفاده کنید.", @@ -1908,7 +1924,6 @@ "Max_length_is": "حداکثر طول%s است", "Media": "رسانه ها", "Medium": "متوسط", - "Members_List": "فهرست کاربران", "mention-all": "همه را ذکر کنید", "mention-all_description": "اجازه استفاده از امکان ذکر کردن @all", "mention-here": "اینجا بنویس", @@ -2400,7 +2415,6 @@ "Room_type_changed_successfully": "نوع اتاق موفقیت تغییر", "Room_type_of_default_rooms_cant_be_changed": "این یک اتاق پیش فرض است و نوع را نمی توان تغییر داد، لطفا با سرپرست خود مشورت کنید.", "Room_unarchived": "اتاق بایگانی خارج شد", - "Room_uploaded_file_list": "لیست فایل ها", "Room_uploaded_file_list_empty": "بدون فایل های موجود.", "Rooms": "اتاق", "run-import": "اجرای واردات", @@ -2755,6 +2769,7 @@ "Trigger_Words": "کلمات محرک", "Triggers": "محرک های", "True": "بله", + "Troubleshoot_Disable_Notifications": "غیر فعال کردن اعلانات", "Tuesday": "سه شنبه", "Turn_OFF": "خاموش شود", "Turn_ON": "روشن کن", diff --git a/packages/rocketchat-i18n/i18n/fi.i18n.json b/packages/rocketchat-i18n/i18n/fi.i18n.json index b93bda1af0b6..9965bc54021c 100644 --- a/packages/rocketchat-i18n/i18n/fi.i18n.json +++ b/packages/rocketchat-i18n/i18n/fi.i18n.json @@ -1298,6 +1298,7 @@ "if_they_are_from": "(jos ne ovat %s)", "If_this_email_is_registered": "Jos tämä sähköposti on rekisteröity, lähetämme ohjeet salasanan palauttamiseen. Jos et saa sähköpostia pian, palaa takaisin ja yritä uudelleen.", "If_you_are_sure_type_in_your_password": "Jos olet varma, kirjoita salasanasi:", + "Members_List": "Jäsenlista", "If_you_are_sure_type_in_your_username": "Jos olet varma, kirjoita käyttäjätunnuksesi:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Jos sinulla ei ole sellaista, lähetä sähköpostia osoitteeseen [omni@rocket.chat] (mailto: omni@rocket.chat) saadaksesi omasi.", "Iframe_Integration": "Iframe-integraatio", @@ -1670,6 +1671,7 @@ "Mail_Message_No_messages_selected_select_all": "Et ole valinnut yhtään viestiä. Haluaisitko valita kaikki näkyvät viestit?", "Mail_Messages": "Lähetä viestit sähköpostitse", "Mail_Messages_Instructions": "Valitse, mitkä viestit haluat lähettää sähköpostitse klikkaamalla viestejä", + "Room_uploaded_file_list": "Tiedostolista", "Mail_Messages_Subject": "Tässä muutama viesti (%s viestiä)", "Mailer": "Postittaja", "Mailer_body_tags": "Sinun tulee käyttää [unsubscribe] postituslistalta poistumislinkkinä.
        Voit käyttää [name], [fname], [lname] käyttäjän koko nimen, etunimen tai sukunimen paikalla.
        Voit käyttää [email] käyttäjän sähköpostin paikalla.", @@ -1711,7 +1713,6 @@ "Max_length_is": "Suurin pituus on%s", "Media": "tiedotusvälineet", "Medium": "keskikokoinen", - "Members_List": "Jäsenlista", "mention-all": "Mainitse kaikki", "mention-all_description": "Käyttöoikeus käyttää @all-maininta", "mention-here": "Mainita tässä", @@ -2203,7 +2204,6 @@ "Room_type_changed_successfully": "Huoneen tyyppi vaihdettu", "Room_type_of_default_rooms_cant_be_changed": "Tämä on oletushäiriö, eikä sitä voi muuttaa, ota yhteyttä järjestelmänvalvojaasi.", "Room_unarchived": "Huone palautettu arkistosta", - "Room_uploaded_file_list": "Tiedostolista", "Room_uploaded_file_list_empty": "Tiedostoja ei ole saatavilla.", "Rooms": "Huoneet", "run-import": "Suorita tuonti", @@ -2558,6 +2558,7 @@ "Trigger_Words": "Trigger sanat", "Triggers": "Laukaisijat", "True": "Tosi", + "Troubleshoot_Disable_Notifications": "Poista ilmoitukset käytöstä", "Tuesday": "tiistai", "Turn_OFF": "Pois käytöstä", "Turn_ON": "Käytössä", diff --git a/packages/rocketchat-i18n/i18n/fr.i18n.json b/packages/rocketchat-i18n/i18n/fr.i18n.json index 5ad69f4449cf..630fe4da3571 100644 --- a/packages/rocketchat-i18n/i18n/fr.i18n.json +++ b/packages/rocketchat-i18n/i18n/fr.i18n.json @@ -1425,6 +1425,7 @@ "if_they_are_from": "(si elles proviennent de %s)", "If_this_email_is_registered": "Si cet e-mail est enregistré, les instructions pour réinitialiser votre mot de passe vous serons envoyées. Si vous ne recevez pas d'email rapidement, merci de revenir et d'essayer à nouveau.", "If_you_are_sure_type_in_your_password": "Si vous êtes sûr(e), entrez votre mot de passe :", + "Members_List": "Liste des membres", "If_you_are_sure_type_in_your_username": "Si vous êtes certain(e), saisissez votre nom d'utilisateur :", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Si vous n'en avez pas, envoyez un courriel à [omni@rocket.chat] (mailto: omni@rocket.chat) pour obtenir le vôtre.", "If_you_didnt_ask_for_reset_ignore_this_email": "Si vous n'avez pas demandé la réinitialisation de votre mot de passe, vous pouvez ignorer cet e-mail.", @@ -1818,6 +1819,7 @@ "Mail_Message_No_messages_selected_select_all": "Vous n'avez sélectionné aucun message. ", "Mail_Messages": "Messages électroniques", "Mail_Messages_Instructions": "Choisissez les messages que vous souhaitez envoyer par e-mail en cliquant dessus", + "Room_uploaded_file_list": "Liste des fichiers", "Mail_Messages_Subject": "Voici une sélection de messages de \"%s\"", "Mailer": "Envoi d'e-mail", "Mailer_body_tags": "Vous devez utiliser [unsubscribe] pour le lien de désinscription.
        Vous pouvez utiliser respectivement [name], [fname], [lname] pour le nom complet de l'utilisateur, le prénom et le nom de famille.
        Vous pouvez utiliser [email] pour l'adresse e-mail de l'utilisateur.", @@ -1862,7 +1864,6 @@ "Max_length_is": "La longueur maximale est %s", "Media": "Médias", "Medium": "Milieu", - "Members_List": "Liste des membres", "mention-all": "Mention @all", "mention-all_description": "Autorisation d'utiliser la mention @all", "mention-here": "Mention ici", @@ -2408,7 +2409,6 @@ "Room_type_changed_successfully": "Type du salon modifié avec succès", "Room_type_of_default_rooms_cant_be_changed": "C'est un salon par défaut et le type ne peut être modifié, merci de contacter un administrateur.", "Room_unarchived": "Salon désarchivé", - "Room_uploaded_file_list": "Liste des fichiers", "Room_uploaded_file_list_empty": "Aucun fichier disponible.", "Rooms": "Salons", "run-import": "Exécuter l'importation", @@ -2782,6 +2782,7 @@ "Trigger_Words": "Mots déclencheurs", "Triggers": "Déclencheurs", "True": "Oui", + "Troubleshoot_Disable_Notifications": "Désactiver les notifications", "Tuesday": "Mardi", "Turn_OFF": "Éteindre", "Turn_ON": "Allumer", diff --git a/packages/rocketchat-i18n/i18n/he.i18n.json b/packages/rocketchat-i18n/i18n/he.i18n.json index 3b74912f9ea9..a04bf3ef779e 100644 --- a/packages/rocketchat-i18n/i18n/he.i18n.json +++ b/packages/rocketchat-i18n/i18n/he.i18n.json @@ -613,6 +613,7 @@ "How_satisfied_were_you_with_this_chat": "איך הייתם מרוצה הצ'אט הזה?", "if_they_are_from": "(אם הם מ%s)", "If_you_are_sure_type_in_your_password": "אם אתה סוג בטוח ב הסיסמה:", + "Members_List": "רשימת חברים", "If_you_are_sure_type_in_your_username": "אם אתה סוג בטוח שם המשתמש שלך:", "Ignore": "התעלם", "Ignored": "התעלם", @@ -806,6 +807,7 @@ "Mail_Message_No_messages_selected_select_all": "לא בחרת שום הודעות. האם אתה רוצה לבחור את כל ההודעות הגלויות?", "Mail_Messages": "הודעות דואר אלקטרוניות", "Mail_Messages_Instructions": "בחר אילו הודעות אתה רוצה לשלוח בדוא\"ל, על ידי לחיצה על ההודעות", + "Room_uploaded_file_list": "רשימת קבצים", "Mail_Messages_Subject": "הנה חלק נבחר של %s הודעות", "Mailer": "שולח", "Mailer_body_tags": "אתה חייב להשתמש ב-[unsubscribe] עבור לינק ההסרה מרשימת התפוצה.
        אתה יכול להשתמש ב-[name], [fname], [lname] בשביל השם המלא של המשתמש, השם הפרטי או שם המשפחה בהתאמה.
        אתה יכול להשתמש ב-[email] עבור כתובת המייל של המשתמש.", @@ -823,7 +825,6 @@ "Max_length_is": "אורך מקסימלי הוא %s", "Media": "מדיה", "Medium": "בינוני", - "Members_List": "רשימת חברים", "Mentions": "אזכורים", "Mentions_default": "אזכורים (ברירת מחדל)", "Mentions_only": "אזכורים בלבד", @@ -1105,7 +1106,6 @@ "Room_topic_changed_successfully": "נושא החדר שונה בהצלחה", "Room_type_changed_successfully": "סוג החדר שונה בהצלחה", "Room_unarchived": "חדר מהארכיון", - "Room_uploaded_file_list": "רשימת קבצים", "Room_uploaded_file_list_empty": "אין קבצים זמינים.", "Rooms": "חדרים", "Running_Instances": "הפעלת מופעים", @@ -1300,6 +1300,7 @@ "Trigger_Words": "מילות טריגר", "Triggers": "מפעילים", "True": "נכון", + "Troubleshoot_Disable_Notifications": "השבת נוטיפיקציות", "Type": "סוג", "Type_your_email": "נא להקליד את כתובת הדוא״ל שלך", "Type_your_message": "נא להקליד את ההודעה שלך", diff --git a/packages/rocketchat-i18n/i18n/hr.i18n.json b/packages/rocketchat-i18n/i18n/hr.i18n.json index a6e3f6c0a865..bdc1b25f95f2 100644 --- a/packages/rocketchat-i18n/i18n/hr.i18n.json +++ b/packages/rocketchat-i18n/i18n/hr.i18n.json @@ -1430,6 +1430,7 @@ "if_they_are_from": "(ako su iz %s)", "If_this_email_is_registered": "Ako je ova e-poruka registrirana, poslat ćemo vam upute o tome kako poništiti zaporku. Ako uskoro ne primite e-poruku, vratite se i pokušajte ponovo.", "If_you_are_sure_type_in_your_password": "Ako ste sigurni upišite svoju lozinku:", + "Members_List": "Lista Članova", "If_you_are_sure_type_in_your_username": "Ako ste sigurni upišite svoje korisničko ime:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Ako nemate nekoga, pošaljite e-poštu na adresu [omni@rocket.chat] (mailto: omni@rocket.chat) kako biste dobili svoj.", "Iframe_Integration": "Integracija iframea", @@ -1803,6 +1804,7 @@ "Mail_Message_No_messages_selected_select_all": "Niste odabrali nikakve poruke.", "Mail_Messages": "Email Poruke", "Mail_Messages_Instructions": "Odaberite koje poruke želite poslati putem e-maila klikom na poruke", + "Room_uploaded_file_list": "Popis datoteka", "Mail_Messages_Subject": "Evo odabrani dio %s poruka", "Mailer": "Mailer", "Mailer_body_tags": "Morate koristiti [unsubscribe] za otkazivanje pretplate.
        Možete koristiti [name], [fname], [lname] za korisnikovo ime i prezime, ime i prezime
         Možete koristiti [email] za e-poštu korisnika.", @@ -1844,7 +1846,6 @@ "Max_length_is": "Maksimalna dužina je %s", "Media": "media", "Medium": "Srednji", - "Members_List": "Lista Članova", "mention-all": "Spominjati sve", "mention-all_description": "Dopuštenje za korištenje @all spomen", "mention-here": "Ovdje spomenuti", @@ -2336,7 +2337,6 @@ "Room_type_changed_successfully": "Vrsta sobe je uspješno promijenjena", "Room_type_of_default_rooms_cant_be_changed": "Ovo je zadana soba i vrsta se ne može mijenjati, obratite se svom administratoru.", "Room_unarchived": "Soba je dearhivirana", - "Room_uploaded_file_list": "Popis datoteka", "Room_uploaded_file_list_empty": "Nijedna datoteka nije dostupna", "Rooms": "Sobe", "run-import": "Pokreni uvoz", @@ -2691,6 +2691,7 @@ "Trigger_Words": "Riječi okidača", "Triggers": "Okidači", "True": "Da", + "Troubleshoot_Disable_Notifications": "Onemogućivanje obavijesti", "Tuesday": "Utorak", "Turn_OFF": "Isključiti", "Turn_ON": "Upaliti", diff --git a/packages/rocketchat-i18n/i18n/hu.i18n.json b/packages/rocketchat-i18n/i18n/hu.i18n.json index a08d70edcde1..9e878e1958d2 100644 --- a/packages/rocketchat-i18n/i18n/hu.i18n.json +++ b/packages/rocketchat-i18n/i18n/hu.i18n.json @@ -508,6 +508,8 @@ "Broadcasting_enabled": "Üzenetszórás engedélyezve", "Broadcasting_media_server_url": "Üzenetszórási médiakiszolgáló URL", "Browse_Files": "Fájlok tallózása", + "Browser_does_not_support_audio_element": "Az Ön böngészője nem támogatja az „audio” elemet.", + "Browser_does_not_support_video_element": "Az Ön böngészője nem támogatja a „video” elemet.", "Bugsnag_api_key": "Bugsnag API kulcs", "Build_Environment": "Összeállítási környezet", "bulk-register-user": "Felhasználók tömeges létrehozása", @@ -1544,6 +1546,7 @@ "if_they_are_from": "(ha %s-ból származik)", "If_this_email_is_registered": "Ha regisztrálta ezt az e-mailt, utasításokat küldünk a jelszó visszaállításáról. Ha hamarosan nem kap e-mailt, kérjük, térjen vissza és próbálkozzon újra.", "If_you_are_sure_type_in_your_password": "Ha biztos abban, írja be a jelszót:", + "Members_List": "Tagok", "If_you_are_sure_type_in_your_username": "Ha biztos abban, írja be a felhasználónevét:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Ha nincs meg, küldjön egy e-mailt a [omni@rocket.chat] címre (mailto: omni@rocket.chat), hogy megkapja az Önét.", "If_you_didnt_ask_for_reset_ignore_this_email": "Ha nem Ön kezdeményezte a jelszó visszaállítást, hagyja figyelmen kívül ezt az e-mail üzenetet.", @@ -1967,6 +1970,7 @@ "Mail_Message_No_messages_selected_select_all": "Nem választott ki semmilyen üzenetet", "Mail_Messages": "E-mail üzenetek", "Mail_Messages_Instructions": "Válassza ki, melyik üzenetet szeretne küldeni e-mailben rákattint az üzeneteket", + "Room_uploaded_file_list": "Fájlok", "Mail_Messages_Subject": "Itt egy kiválasztott részét %s üzeneteket", "Mailer": "Postázó", "Mailer_body_tags": "Ki kell használni [unsubscribe] a leiratkozás linkre.
        Lehet használni [name], [fname], [lname] a felhasználó teljes nevét, keresztnevét vagy vezetéknevét, ill.
        Lehet használni [email] A felhasználó e-mail.", @@ -2019,7 +2023,6 @@ "Maximum": "Maximális", "Media": "Média", "Medium": "Közepes", - "Members_List": "Tagok", "mention-all": "Mindent említ", "mention-all_description": "A @all említés engedélyezése", "mention-here": "Megemlítem itt", @@ -2586,7 +2589,6 @@ "Room_type_changed_successfully": "Szoba típusa megváltozott sikeresen", "Room_type_of_default_rooms_cant_be_changed": "Ez az alapértelmezett hely, és a típus nem módosítható, kérjük, forduljon a rendszergazdájához.", "Room_unarchived": "szoba archivált", - "Room_uploaded_file_list": "Fájlok", "Room_uploaded_file_list_empty": "Nincs fájl is elérhető.", "Rooms": "Szobák", "Routing": "Útválasztás", @@ -3030,6 +3032,7 @@ "Trigger_Words": "Eseményindító szavak", "Triggers": "Eseményindítók", "True": "Igaz", + "Troubleshoot_Disable_Notifications": "Értesítések letiltása", "Tuesday": "kedd", "Turn_OFF": "Kikapcsol", "Turn_ON": "Bekapcsol", diff --git a/packages/rocketchat-i18n/i18n/id.i18n.json b/packages/rocketchat-i18n/i18n/id.i18n.json index 748a1e9829e9..17a7980c3516 100644 --- a/packages/rocketchat-i18n/i18n/id.i18n.json +++ b/packages/rocketchat-i18n/i18n/id.i18n.json @@ -1298,6 +1298,7 @@ "if_they_are_from": "(jika mereka dari %s)", "If_this_email_is_registered": "Jika email ini terdaftar, kami akan mengirimkan instruksi tentang cara mereset kata sandi Anda. Jika Anda tidak segera menerima email, kembalilah dan coba lagi.", "If_you_are_sure_type_in_your_password": "Jika Anda yakin ketik password Anda:", + "Members_List": "Daftar Member", "If_you_are_sure_type_in_your_username": "Jika Anda yakin ketik nama pengguna:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Jika Anda tidak memilikinya, kirimkan email ke [omni@rocket.chat] (mailto: omni@rocket.chat) untuk mendapatkan email Anda.", "Iframe_Integration": "Integrasi iframe", @@ -1670,6 +1671,7 @@ "Mail_Message_No_messages_selected_select_all": "Anda belum memilih pesan", "Mail_Messages": "Mail Pesan", "Mail_Messages_Instructions": "Memilih pesan yang Anda ingin mengirim via email dengan mengklik pesan", + "Room_uploaded_file_list": "Daftar Berkas", "Mail_Messages_Subject": "Berikut adalah bagian yang terpilih dari pesan%s", "Mailer": "Pengirim", "Mailer_body_tags": "Anda harus menggunakan [unsubscribe] untuk berhenti link berlangganan.
        Anda dapat menggunakan [nama], [fname], [lname] untuk nama lengkap pengguna, nama pertama atau nama belakang, masing-masing.
        Anda dapat menggunakan [email] untuk email pengguna.", @@ -1711,7 +1713,6 @@ "Max_length_is": "Panjang maks adalah%s", "Media": "Media", "Medium": "Medium", - "Members_List": "Daftar Member", "mention-all": "Sebutkan Semua", "mention-all_description": "Izin untuk menggunakan @all menyebutkan", "mention-here": "Sebutkan disini", @@ -2212,7 +2213,6 @@ "Room_type_changed_successfully": "Jenis kamar berhasil diubah", "Room_type_of_default_rooms_cant_be_changed": "Ini adalah ruang default dan tipe tidak dapat diubah, silakan berkonsultasi dengan administrator Anda.", "Room_unarchived": "kamar diarsipkan", - "Room_uploaded_file_list": "Daftar Berkas", "Room_uploaded_file_list_empty": "Berkas tidak tersedia", "Rooms": "Room", "run-import": "Jalankan Impor", @@ -2567,6 +2567,7 @@ "Trigger_Words": "Kata-kata pemicu", "Triggers": "pemicu", "True": "True", + "Troubleshoot_Disable_Notifications": "Nonaktifkan Pemberitahuan", "Tuesday": "Selasa", "Turn_OFF": "Matikan", "Turn_ON": "Nyalakan", diff --git a/packages/rocketchat-i18n/i18n/it.i18n.json b/packages/rocketchat-i18n/i18n/it.i18n.json index 7c65ec391c64..4582d7591d77 100644 --- a/packages/rocketchat-i18n/i18n/it.i18n.json +++ b/packages/rocketchat-i18n/i18n/it.i18n.json @@ -1321,6 +1321,7 @@ "if_they_are_from": "(se sono da %s)", "If_this_email_is_registered": "Se questa email è registrata, invieremo istruzioni su come reimpostare la propria password. Se non la ricevi in breve tempo, si prega di ritornare e riprovare.", "If_you_are_sure_type_in_your_password": "Se sei sicuro inserisci la password:", + "Members_List": "Elenco dei membri", "If_you_are_sure_type_in_your_username": "Se sei sicuro inserisci il tuo nome utente:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Se non ne hai uno, invia un'email a [omni@rocket.chat] (mailto: omni@rocket.chat) per ottenere il tuo.", "Iframe_Integration": "Integrazione Iframe", @@ -1686,6 +1687,7 @@ "Mail_Message_No_messages_selected_select_all": "Non hai selezionato nessun messaggio.", "Mail_Messages": "Messaggi di posta", "Mail_Messages_Instructions": "Scegli quali messaggi vuoi inviare via email cliccandoci", + "Room_uploaded_file_list": "Elenco dei file", "Mail_Messages_Subject": "Ecco una porzione di %s messaggi", "Mailer": "Mailer", "Mailer_body_tags": "È necessario utilizzare il tag [unsubscribe] per il link di cancellazione.
         È possibile utilizzare [name], [fname], [lname] rispettivamente per il nome completo dell'utente, nome o cognome.
         È possibile utilizzare [email] per l'indirizzo email dell'utente.", @@ -1728,7 +1730,6 @@ "Max_length_is": "Lunghezza massima è %s", "Media": "Media", "Medium": "Media", - "Members_List": "Elenco dei membri", "mention-all": "Menzione tutto", "mention-all_description": "Autorizzazione a usare @all mention", "mention-here": "Menzione qui", @@ -2238,7 +2239,6 @@ "Room_type_changed_successfully": "Tipo di canale cambiato con successo", "Room_type_of_default_rooms_cant_be_changed": "Questo è un canale predefinito e il tipo non può essere cambiato, si prega di consultarsi con un amministratore.", "Room_unarchived": "Canale disarchiviato", - "Room_uploaded_file_list": "Elenco dei file", "Room_uploaded_file_list_empty": "Nessun file disponibile.", "Rooms": "Canali", "run-import": "Esegui importazione", @@ -2598,6 +2598,7 @@ "Trigger_Words": "Parole Trigger", "Triggers": "Trigger", "True": "Vero", + "Troubleshoot_Disable_Notifications": "Disabilita notifiche", "Tuesday": "Martedì", "Turn_OFF": "Spegni", "Turn_ON": "Accendere", diff --git a/packages/rocketchat-i18n/i18n/ja.i18n.json b/packages/rocketchat-i18n/i18n/ja.i18n.json index 2406ef16a5a1..f6c02c9e114b 100644 --- a/packages/rocketchat-i18n/i18n/ja.i18n.json +++ b/packages/rocketchat-i18n/i18n/ja.i18n.json @@ -203,16 +203,33 @@ "Accounts_Directory_DefaultView": "デフォルトのディレクトリリスト", "Accounts_SetDefaultAvatar": "デフォルトのアバターを設定", "Accounts_SetDefaultAvatar_Description": "OAuthアカウントまたはGravatarに基づいてデフォルトアバターを決定しようとする", + "Accounts_Set_Email_Of_External_Accounts_as_Verified": "外部アカウントのメールを確認済みに設定します", + "Accounts_Set_Email_Of_External_Accounts_as_Verified_Description": "LDAP、OAthなどの外部サービスから作成されたアカウントのメールは自動的に検証されます", "Accounts_ShowFormLogin": "ログインフォームを表示", + "Accounts_TwoFactorAuthentication_By_Email_Enabled": "電子メールを介した2ファクタ認証を有効にする", + "Accounts_TwoFactorAuthentication_By_Email_Enabled_Description": "メールが確認され、プロフィールページでオプションが有効になっているユーザーは、ログイン、プロフィールの保存などの特定のアクションを許可するための一時コードが記載されたメールを受け取ります。", + "Accounts_TwoFactorAuthentication_By_Email_Auto_Opt_In": "電子メールを介した2ファクタ認証の新規ユーザーの自動選択", + "Accounts_TwoFactorAuthentication_By_Email_Auto_Opt_In_Description": "新規ユーザーは、デフォルトで電子メールによる2ファクタ認証が有効になっています。プロフィールページで無効にすることができます。", + "Accounts_TwoFactorAuthentication_By_Email_Code_Expiration": "電子メールで送信されたコードの有効期限(秒数)", "Accounts_TwoFactorAuthentication_Enabled": "2ファクタ認証を有効にする", + "Accounts_TwoFactorAuthentication_Enabled_Description": "ユーザーは、Google AuthenticatorやAuthyなどの任意のTOTPアプリを使用して2ファクタ認証をセットアップできます", "Accounts_TwoFactorAuthentication_MaxDelta": "最大デルタ", "Accounts_UserAddedEmail_Default": "

        ようこそ[Site_Name]

        [Site_URL]に移動し、今日利用可能な最高のオープンソースのチャットソリューションを試してみてください!

        あなたは、電子メール: [email] とパスワード: [password] を使用してログインすることができます。これは最初のログイン後に変更する必要があります。", "Accounts_TwoFactorAuthentication_MaxDelta_Description": "最大デルタは、任意の時点で有効なトークンの数を決定します。トークンは30秒ごとに生成され、 (30 *最大デルタ) 秒間有効です。
        例: 最大デルタを10に設定すると、各トークンはタイムスタンプの前後に最大300秒まで使用できます。これは、クライアントの時計がサーバーと正しく同期していない場合に便利です。", + "Accounts_TwoFactorAuthentication_RememberFor": "2ファクタを記憶する秒数", + "Accounts_TwoFactorAuthentication_RememberFor_Description": "指定された時間内に既に提供されている場合は、2ファクタ認証コードを要求しないでください。", "Accounts_UseDefaultBlockedDomainsList": "既定のブロックドメイン一覧を使用", "Accounts_UseDNSDomainCheck": "DNSドメイン検証を使用", "Accounts_UserAddedEmailSubject_Default": "あなたは[Site_Name]に追加されました", "Accounts_UserAddedEmail_Description": "次のプレースホルダを使用できます。

        • [name]、[fname]、[lname]はそれぞれユーザーのフルネーム、ファーストネーム、ラストネームです。
        • [email]はユーザーの電子メールです。
        • [password]はユーザーのパスワードです。
        • [Site_Name]と[Site_URL]はアプリケーション名とURLです。
        ", "Activate": "有効化", + "Active_users": "アクティブユーザー", + "Daily_Active_Users": "日別のアクティブユーザー", + "Weekly_Active_Users": "週別のアクティブユーザー", + "Monthly_Active_Users": "月別のアクティブユーザー", + "DAU_value": "DAU __value__", + "WAU_value": "WAU __value__", + "MAU_value": "MAU __value__", "Activity": "アクティビティ順", "Add": "追加", "add-oauth-service": "OAuthサービスを追加する", @@ -235,6 +252,7 @@ "Add_user": "ユーザーを追加", "Add_User": "ユーザーを追加", "Add_users": "ユーザーを追加", + "Add_Reaction": "反応を追加", "Adding_OAuth_Services": "OAuthのサービスを追加します", "Adding_permission": "許可を追加します", "Adding_user": "ユーザーの追加", @@ -334,11 +352,14 @@ "API_Personal_Access_Tokens_Regenerate_It": "トークンを再生成", "API_Shield_Types": "シールドタイプ", "API_Shield_Types_Description": "有効にするシールドの種類をカンマ区切りリストとして、`online`, `channel`, `*` (全て) から選択してください", + "API_Shield_user_require_auth": "ユーザーシールドに認証を要求する", "API_Token": "APIトークン", "API_Tokenpass_URL": "トークンパスサーバーのURL", "API_Tokenpass_URL_Description": "例: https://domain.com (末尾のスラッシュを除く)", "API_Upper_Count_Limit": "最大レコード量", "API_Upper_Count_Limit_Description": "REST APIが返すレコードの最大数は何ですか (無制限でない場合) 。", + "API_Use_REST_For_DDP_Calls": "Meteor呼び出しにWebSocketではなくRESTを使用する", + "API_Use_REST_For_DDP_Calls_Alert": "これは実験的で一時的な機能です。 Meteorメソッド呼び出しにWebSocketを使用する代わりに、WebクライアントとモバイルアプリにRESTリクエストを使用するように強制します。", "API_User_Limit": "Channelに全ユーザーを追加するためのユーザー制限", "API_Wordpress_URL": "WordPress URL", "Apiai_Key": "Api.aiキー", @@ -373,6 +394,11 @@ "Apps_Framework_Development_Mode": "開発モードを有効", "Apps_Framework_Development_Mode_Description": "開発モードでは、Rocket.Chatのマーケットプレイス以外のアプリをインストールできます。", "Apps_Framework_enabled": "Appフレームワークを有効にする", + "Apps_Game_Center": "ゲームセンター", + "Apps_Game_Center_Back": "ゲームセンターに戻る", + "Apps_Game_Center_enabled": "ゲームセンターを有効にする", + "Apps_Game_Center_Play_Game_Together": "@here __name__を一緒に遊ぼう!", + "Apps_Game_Center_Invite_Friends": "友達を招待する", "Apps_Marketplace_Deactivate_App_Prompt": "本当にこのアプリを無効にしますか?", "Apps_Marketplace_Modify_App_Subscription": "購読を変更する", "Apps_Marketplace_Uninstall_App_Prompt": "本当にこのアプリをアンインストールしますか?", @@ -448,6 +474,8 @@ "AutoTranslate_Enabled": "自動翻訳を有効にする", "AutoTranslate_Enabled_Description": "自動翻訳を有効にすると、auto-translate権限を持つユーザーがすべてのメッセージを選択した言語に自動的に翻訳できるようになります。料金がかかる場合があります。", "AutoTranslate_Google": "グーグル", + "AutoTranslate_Microsoft": "マイクロソフト", + "AutoTranslate_Microsoft_API_Key": "Ocp-Apim-Subscription-Key", "AutoTranslate_ServiceProvider": "サービスプロバイダー", "Available": "利用できます", "Available_agents": "割り当てられる担当者", @@ -492,6 +520,8 @@ "Blockstack_ButtonLabelText": "ボタンラベル文字列", "Blockstack_Generate_Username": "ユーザー名を生成する", "Body": "本文", + "Bio": "バイオ", + "Bio_Placeholder": "バイオプレースホルダー", "bold": "太字", "bot_request": "ボットリクエスト", "BotHelpers_userFields": "ユーザーフィールド", @@ -507,6 +537,8 @@ "Broadcasting_enabled": "ブロードキャストを有効にする", "Broadcasting_media_server_url": "ブロードキャストメディアサーバーURL", "Browse_Files": "ファイルをブラウズ", + "Browser_does_not_support_audio_element": "お使いのブラウザはオーディオ要素をサポートしていません。", + "Browser_does_not_support_video_element": "お使いのブラウザはビデオ要素をサポートしていません。", "Bugsnag_api_key": "Bugsnag APIキー", "Build_Environment": "ビルド環境", "bulk-register-user": "ユーザー一括登録", @@ -547,6 +579,7 @@ "CAS_trust_username_description": "有効にすると、Rocket.ChatはCASのユーザー名がRocket.Chatの同じユーザーに属することを信頼します。
        独自のCASユーザーの名前を変更してアカウントを作成します。", "CAS_version": "CASバージョン", "CAS_version_Description": "CAS SSOサービスでサポートされているサポートされているCASバージョンのみを使用してください。", + "Call": "コール", "Categories": "カテゴリー", "CDN_PREFIX": "CDN プレフィックス", "CDN_PREFIX_ALL": "すべてのアセットにCDNプレフィックスを使用する", @@ -721,6 +754,8 @@ "Conversation": "会話", "Conversations": "会話", "Conversation_closed": "会話が閉じました: __comment__", + "Conversation_closing_tags": "会話終了タグ", + "Conversation_closing_tags_description": "終了タグは、終了時に会話に自動的に割り当てられます。", "Conversation_finished": "会話終了", "Conversation_finished_message": "会話終了時のメッセージ", "Conversation_finished_text": "会話終了時のメッセージ", @@ -991,6 +1026,7 @@ "Create_A_New_Channel": "新しいチャンネルを作成", "Create_new": "新しく作成", "Create_unique_rules_for_this_channel": "このチャンネルのユニークなルールを作成する", + "Created": "作成した", "Created_at": "作成日時", "Created_at_s_by_s": "作成日時 %s by %s", "Created_at_s_by_s_triggered_by_s": "%sにおいて、%sが作成 (%sがトリガー)", @@ -1054,6 +1090,7 @@ "Date_From": "から", "Date_to": "に", "days": "日", + "Days": "日", "DB_Migration": "データベースマイグレーション", "DB_Migration_Date": "データベースマイグレーション日", "DDP_Rate_Limit_IP_Enabled": "IPによる制限:有効", @@ -1111,6 +1148,8 @@ "Desktop_Notifications_Not_Enabled": "デスクトップ通知が有効ではありません", "Details": "詳細", "Different_Style_For_User_Mentions": "メンションとは異なるスタイル", + "Direct_message_creation_description": "複数のユーザーとのチャットを作成しようとしています。ダイレクトメッセージを使用して、話したい人たちを同じ場所に全員追加します。", + "Direct_message_you_have_joined": "新しいダイレクトメッセージに参加しました", "Direct_message_someone": "ユーザーへダイレクトメッセージする", "Direct_Messages": "ダイレクトメッセージ", "Direct_Reply": "直接返信", @@ -1136,6 +1175,7 @@ "Disable_Facebook_integration": "Facebookとの統合を無効にする", "Disable_Notifications": "通知を無効にする", "Disable_two-factor_authentication": "2ファクタ認証を無効にする", + "Disable_two-factor_authentication_email": "電子メールによる2ファクタ認証を無効にする", "Disabled": "無効", "Disallow_reacting": "反応しない", "Disallow_reacting_Description": "反応しない", @@ -1172,6 +1212,7 @@ "Download_My_Data": "マイデータ (HTML) をダウンロードする", "Download_Pending_Files": "保留中のファイルをダウンロードする", "Download_Snippet": "ダウンロード", + "Do_not_provide_this_code_to_anyone": "このコードを誰にも提供しないでください。", "Drop_to_upload_file": "アップロードするファイルをドロップしてください", "Dry_run": "予行練習", "Dry_run_description": "送信元のアドレスへ1通のメールを送信します。アドレスは、登録されているユーザーのものでなければなりません。", @@ -1187,6 +1228,8 @@ "E2E_Enabled": "E2Eが有効", "E2E_Enable_alert": "この機能は現在ベータ版です! バグは github.com/RocketChat/Rocket.Chat/issues に報告してください。
        - 暗号化された部屋の暗号化されたメッセージは検索操作で見つかりません。
        - モバイルアプリは暗号化されたメッセージをサポートしていない可能性があります
        - ボットは、サポートを実装するまで、暗号化されたメッセージを見ることができません。
        - このバージョンでは、アップロードは暗号化されません。", "E2E_Enable_description": "暗号化されたグループを作成しプライベートグループとダイレクトメッセージを暗号化できるオプションを有効にする", + "E2E_Enabled_Default_DirectRooms": "デフォルトでダイレクトメッセージの暗号化を有効にする", + "E2E_Enabled_Default_PrivateRooms": "デフォルトでプライベートルームの暗号化を有効にする", "E2E_Encryption_Password_Change": "暗号化パスワードを変更する", "E2E_Encryption_Password_Explanation": "暗号化されたプライベートグループとダイレクトメッセージを作成できるようになりました。 既存のプライベートグループまたはダイレクトメッセージを暗号化するように変更することもできます。

        メッセージのエンコード/デコードの鍵がサーバーに保存されなくなるのでこれが最後の暗号化です。そのため、安全な別の場所にパスワードを保管する必要があります。 E2E暗号化を使用したい他のデバイスにそれを入力する必要があります。", "E2E_password_reveal_text": "暗号化されたプライベートグループとダイレクトメッセージを作成できるようになりました。 既存のプライベートグループまたはダイレクトメッセージを暗号化するように変更することもできます。

        メッセージのエンコード/デコードの鍵がサーバーに保存されなくなるのでこれが最後の暗号化です。そのため、安全な別の場所にパスワードを保管する必要があります。 E2E暗号化を使用したい他のデバイスにそれを入力する必要があります。 この詳細をご覧ください!

        あなたのパスワードは %s です。

        これは自動生成されたパスワードです。既存のパスワードを入力したブラウザからいつでも暗号化キーの新しいパスワードを設定できます。
        このパスワードは、パスワードを保存してこのメッセージを閉じるまで、このブラウザにのみ保存されます。", @@ -1247,12 +1290,14 @@ "Emoji_provided_by_JoyPixels": "絵文字提供:JoyPixels", "EmojiCustomFilesystem": "カスタム絵文字ファイルシステム", "Empty_title": "タイトルなし", + "Engagement_Dashboard": "エンゲージメントダッシュボード", "Enable": "有効", "Enable_Auto_Away": "自動離席を有効にする", "Enable_Desktop_Notifications": "デスクトップ通知を有効にする", "Enable_inquiry_fetch_by_stream": "ストリームを使用してサーバーから照会データを取得できるようにします", "Enable_Svg_Favicon": "SVGファビコンを有効にする", "Enable_two-factor_authentication": "2ファクタ認証を有効にする", + "Enable_two-factor_authentication_email": "電子メールを介した2ファクタ認証を有効にする", "Enabled": "有効", "Encrypted": "暗号化", "Encrypted_channel_Description": "暗号化されたチャネルを終了する。検索は暗号化されたチャンネルでは機能せず、通知にはメッセージの内容が表示されないことがあります。", @@ -1263,6 +1308,7 @@ "End_OTR": "オフレコ会話を終了", "Enter_a_name": "名前を入力してください", "Enter_a_regex": "正規表現を入力", + "Enter_a_department_name": "部署名を入力してください", "Enter_a_room_name": "ルーム名を入力します。", "Enter_a_username": "ユーザー名を入力", "Enter_a_tag": "タグを入力してください", @@ -1279,6 +1325,7 @@ "Entertainment": "エンターテインメント", "Error": "エラーが発生しました", "error-action-not-allowed": "__action__は許可されません", + "error-agent-offline": "エージェントはオフラインです", "error-application-not-found": "アプリケーションは見つかりませんでした", "error-archived-duplicate-name": "名前が `__room_name__` のアーカイブされたチャンネルがあります", "error-avatar-invalid-url": "無効なアバターURL: __url__", @@ -1299,6 +1346,7 @@ "error-email-send-failed": "メールを送信しようとしてエラーが発生しました: __message__", "error-field-unavailable": "__field__ は、すでに利用されています :(", "error-file-too-large": "ファイルが大きすぎます", + "error-forwarding-chat-same-department": "選択した部門と現在の部屋の部門は同じです", "error-importer-not-defined": "インポート処理が正しく定義されていません。Import クラスが見つかりません。", "error-import-file-extract-error": "インポートファイルの抽出に失敗しました。", "error-import-file-is-empty": "インポートされたファイルは空のようです。", @@ -1382,7 +1430,9 @@ "error-logged-user-not-in-room": "あなたはルーム `%s`にいません", "error-user-registration-disabled": "ユーザー登録は無効になっています", "error-user-registration-secret": "ユーザー登録は唯一の秘密のURLを経由して許可されています", + "error-validating-department-chat-closing-tags": "会話の終了時に部門がタグを必要とする場合、少なくとも1つの終了タグが必要です。", "error-you-are-last-owner": "あなたが最後の所有者です。ルームを退出する前に、新しい所有者を設定してください。", + "error-starring-message": "メッセージにスターを付けられませんでした", "Error_404": "エラー404", "Error_changing_password": "パスワード変更中に問題が発生しました", "Error_loading_pages": "ページの読み込み中のエラー", @@ -1411,12 +1461,14 @@ "except_pinned": " (ピン留めされているものを除く)", "Execute_Synchronization_Now": "今すぐ同期を実行する", "Exit_Full_Screen": "全画面を終了", + "Experimental_Feature_Alert": "これは実験的な機能です!将来予告なしに変更、破損、または削除される可能性があることに注意してください。", "Expiration": "有効期限", "Expiration_(Days)": "有効期限(日)", "Export_My_Data": "マイデータ (JSON) をエクスポートする", "expression": "式", "Extended": "拡張", "External_Domains": "外部ドメイン", + "External_Users": "外部ユーザー", "External_Queue_Service_URL": "外部キューサービスのURL", "External_Service": "外部サービス", "Facebook_Page": "Facebookのページ", @@ -1572,6 +1624,8 @@ "Full_Screen": "全画面", "Gaming": "賭博", "General": "全般", + "Generate_new_key": "新しいキーを生成する", + "Generating_key": "キーを生成しています", "Get_link": "リンクを取得", "Generate_New_Link": "新しいリンクを生成", "github_no_public_email": "あなたのGitHubアカウントはパブリックメールなメールアドレスを持っていません", @@ -1611,10 +1665,12 @@ "Group_favorites": "お気に入りをグループ化", "Group_mentions_disabled_x_members": "__total__人以上のメンバーがいるルームでは、グループへの`@all`と`@here`は無効になっています。", "Group_mentions_only": "グループメンションのみ", + "Grouping": "グルーピング", "Hash": "ハッシュ", "Header": "ヘッダ", "Header_and_Footer": "ヘッダーとフッター", "Healthcare_and_Pharmaceutical": "ヘルスケア/医薬品", + "Here_is_your_authentication_code": "認証コードは次のとおりです。", "Help_Center": "ヘルプセンター", "Helpers": "ヘルパー", "Hex_Color_Preview": "16進カラープレビュー", @@ -1655,9 +1711,11 @@ "if_they_are_from": " (%sからのものである場合)", "If_this_email_is_registered": "このメールが登録されている場合は、パスワードをリセットする方法が記載されています。まもなくメールが届かない場合は、もう一度やり直してください。", "If_you_are_sure_type_in_your_password": "お間違いなければ、パスワードを入力してください:", + "Members_List": "メンバーリスト", "If_you_are_sure_type_in_your_username": "あなたのユーザー名に必ずタイプである場合: ", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "持っていない場合は、[omni@rocket.chat] (mailto: omni@rocket.chat) にメールを送ってください。", "If_you_didnt_ask_for_reset_ignore_this_email": "パスワードリセットを尋ねていなかった場合は、このメールを無視することができます。", + "If_you_didnt_try_to_login_in_your_account_please_ignore_this_email": "アカウントにログインしようとしなかった場合は、このメールを無視してください。", "Iframe_Integration": "Iframeの統合", "Iframe_Integration_receive_enable": "受信を有効にする", "Iframe_Integration_receive_enable_Description": "親ウィンドウがRocket.Chatにコマンドを送信できるようにする。", @@ -1856,6 +1914,7 @@ "IssueLinks_Incompatible": "警告: これと「16進カラープレビュー」を同時に有効にしないでください。", "IssueLinks_LinkTemplate": "問題リンクのテンプレート", "IssueLinks_LinkTemplate_Description": "問題のリンクのテンプレート。 %sは発行番号に置き換えられます。", + "Items_per_page:": "ページあたりのアイテム:", "It_works": "できます", "italic": "斜体", "italics": "斜体", @@ -1869,6 +1928,7 @@ "Mobex_sms_gateway_restful_address": "Mobex SMS REST APIアドレス", "Mobex_sms_gateway_restful_address_desc": "Mobex REST APIのIPまたはホスト。例えば `http://192.168.1.1:8080` または `https://www.example.com:8080`", "Mobex_sms_gateway_username": "ユーザー名", + "Most_popular_channels_top_5": "最も人気のあるチャンネル(上位5つ)", "Jitsi_Chrome_Extension": "Chromeの拡張機能同上", "Jitsi_Enabled_TokenAuth": "JWT認証を有効にする", "Jitsi_Application_ID": "アプリケーションID(iss)", @@ -1886,6 +1946,7 @@ "Join_the_given_channel": "チャンネルへ参加する", "Join_video_call": "ビデオ通話に参加", "Joined": "参加中", + "Joined_at": "参加しました:", "Jump": "移動", "Jump_to_first_unread": "最初の未読へ移動", "Jump_to_message": "メッセージへ移動", @@ -1927,6 +1988,7 @@ "Language_Russian": "ロシア語", "Language_Spanish": "スペイン語", "Language_Version": "日本語バージョン", + "Last_active": "最後のアクティブ", "Last_login": "最終ログイン", "Last_Message_At": "最後のメッセージ", "Last_seen": "最近見たもの", @@ -1934,6 +1996,9 @@ "Last_Message": "最後のメッセージ", "Last_Status": "最終ステータス", "Last_Updated": "最終更新", + "Last_7_days": "過去7日間", + "Last_30_days": "過去30日間", + "Last_90_days": "過去90日間", "Launched_successfully": "成功した", "Layout": "レイアウト", "Layout_Home_Body": "ホーム画面の本文", @@ -2061,6 +2126,7 @@ "Livechat_agents": "ライブチャット 担当者", "Livechat_Agents": "担当者", "Livechat_AllowedDomainsList": "ライブチャット可能なドメイン", + "Livechat_Appearance": "Livechatの外観", "Livechat_Dashboard": "ライブチャット ダッシュボード", "Livechat_enabled": "ライブチャットを有効にする", "Livechat_Facebook_API_Key": "OmniChannel APIキー", @@ -2070,6 +2136,7 @@ "Livechat_forward_open_chats_timeout": "チャットを転送する (秒) のタイムアウト", "Livechat_guest_count": "ゲストカウンター", "Livechat_Inquiry_Already_Taken": "ライブチャットのお問い合わせはすでに完了しています", + "Livechat_Installation": "Livechatのインストール", "Livechat_managers": "ライブチャット 管理者", "Livechat_Managers": "管理者", "Livechat_offline": "ライブチャットオフライン", @@ -2087,6 +2154,7 @@ "Livechat_transfer_to_agent": "__from__ がチャットを __to__ に転送しました", "Livechat_transfer_to_department": "__from__ はチャットを __to__ 部門に転送しました", "Livechat_transfer_return_to_the_queue": "__from__ はチャットをキューに戻しました", + "Livechat_Triggers": "Livechatトリガー", "Livechat_Users": "ライブチャット 担当者", "LiveStream & Broadcasting": "ライブストリーム & ブロードキャスト", "Livestream_close": "ライブストリームを閉じる", @@ -2106,6 +2174,7 @@ "Local_Domains": "ローカルドメイン", "Local_Password": "ローカルパスワード", "Localization": "ローカライズ", + "Location": "ロケーション", "Log_Exceptions_to_Channel_Description": "キャプチャされたすべての例外を受け取るチャンネル。例外を無視するには、空のままにします。", "Log_Exceptions_to_Channel": "チャンネルへの例外のログ", "Log_File": "ファイルと罫線を表示する", @@ -2135,6 +2204,7 @@ "Mail_Message_No_messages_selected_select_all": "何もメッセージを選択しませんでした", "Mail_Messages": "メッセージをメール", "Mail_Messages_Instructions": "メールで送信したいメッセージをクリックして選択してください", + "Room_uploaded_file_list": "ファイル一覧", "Mail_Messages_Subject": "こちらは %s から選択されたメッセージです", "Mailer": "メーラー", "Mailer_body_tags": "[unsubscribe] を購読解除のリンクとして使わなければなりません
        ユーザーのフルネームに [name], [fname], [lname] を使用できます。姓 または 名 にも対応しています。
        メールアドレスには、 [email] を使用できます。", @@ -2201,7 +2271,7 @@ "Maximum": "最大", "Media": "メディア", "Medium": "中間", - "Members_List": "メンバーリスト", + "Members": "会員", "mention-all": "全員にメンション", "mention-all_description": "@allのメンションを使用する許可", "mention-here": "ここにメンション", @@ -2251,6 +2321,8 @@ "Message_GlobalSearch": "グローバル検索", "Message_GroupingPeriod": "グループ化する期限 (秒数)", "Message_GroupingPeriodDescription": "指定した秒数の間で、同じユーザーが投稿した以前のメッセージをグループ化します。", + "Message_has_been_starred": "メッセージにスターを付けました", + "Message_has_been_unstarred": "メッセージのスターを外しました", "Message_HideType_au": "「ユーザーが追加されました」メッセージを非表示にする", "Message_HideType_mute_unmute": "「ユーザーミュート/ミュート解除」メッセージを隠す", "Message_HideType_ru": "「ユーザーが削除されました」メッセージを非表示にする", @@ -2299,6 +2371,7 @@ "Message": "メッセージ", "messages": "メッセージ", "Messages": "メッセージ", + "Messages_sent": "送信されたメッセージ", "Messages_that_are_sent_to_the_Incoming_WebHook_will_be_posted_here": "Incoming WebHook へ送信されたメッセージは、こちらへ投稿されます。", "Meta": "メタ情報", "Meta_custom": "カスタムメタタグ", @@ -2358,7 +2431,9 @@ "Name_optional": "名前 (オプション)", "Name_Placeholder": "あなたの名前を入力してください...", "Navigation_History": "ナビゲーションの歴史", + "New_users": "新しいユーザー", "New_Application": "新しいアプリケーション", + "New_chat_in_queue": "キューの新しいチャット", "New_chat_transfer": "新しいチャット転送: __transfer__", "New_Custom_Field": "新しいカスタムフィールド", "New_Department": "新しい部門", @@ -2407,11 +2482,13 @@ "No_discussions_yet": "まだディスカッションはありません", "No_Threads": "スレッドが見つかりません", "No_user_with_username_%s_was_found": "\"%s\" というユーザーは、見つかりませんでした!", + "No_data_found": "データが見つかりませんでした", "Nobody_available": "誰も利用できません", "Node_version": "Node バージョン", "None": "なし", "Nonprofit": "非営利団体", "Normal": "通常", + "Not_enough_data": "データが不十分です", "Not_authorized": "権限がありません", "Not_Available": "利用不可", "Not_found_or_not_allowed": "見つからないか、権限がありません", @@ -2457,6 +2534,8 @@ "Offline_form": "オフラインフォーム", "Offline_form_unavailable_message": "オフラインフォーム不可メッセージ", "Offline_Link_Message": "メッセージに進む", + "Offline_Message": "オフラインメッセージ", + "Offline_Message_Use_DeepLink": "ディープリンクURL形式を使用", "Offline_Mention_All_Email": "電子メールの件名をすべて記入する", "Offline_Mention_Email": "__user__が #__room__ であなたにコメントしています", "Offline_message": "オフラインメッセージ", @@ -2465,6 +2544,11 @@ "Old Colors": "旧式の色", "Old Colors (minor)": "旧式の色(マイナー)", "Older_than": "より古い", + "Omnichannel_External_Frame": "外部フレーム", + "Omnichannel_External_Frame_Enabled": "外部フレームが有効", + "Omnichannel_External_Frame_URL": "外部フレームURL", + "Omnichannel_External_Frame_Encryption_JWK": "暗号化キー(JWK)", + "Omnichannel_External_Frame_Encryption_JWK_Description": "提供された場合、提供されたキーでユーザーのトークンを暗号化し、外部システムはトークンにアクセスするためにデータを復号化する必要があります", "On": "オン", "Online": "オンライン", "online": "オンライン", @@ -2519,6 +2603,7 @@ "Password_Changed_Email_Subject": "[Site_Name] - パスワードが変更されました", "Password_changed_section": "パスワードが変更されました", "Password_changed_successfully": "パスワードが正常に変更されました", + "Passwords_do_not_match": "パスワードが一致していません", "Password_Policy": "パスワードポリシー", "Past_Chats": "過去のチャット", "Paste_here": "ここに貼り付け...", @@ -2591,6 +2676,8 @@ "Privacy_Policy": "プライバシーポリシー", "Private": "プライベート", "Private_Channel": "プライベートグループ", + "Private_Channels": "プライベートグループ", + "Private_Chats": "プライベートチャット", "Private_Group": "プライベートグループ", "Private_Groups": "プライベートグループ", "Private_Groups_list": "プライベートグループ一覧", @@ -2601,6 +2688,10 @@ "Profile_picture": "プロフィールの写真", "Profile_saved_successfully": "プロフィールが正常に保存されました。", "Prometheus": "プロメテウス", + "Prometheus_Reset_Interval": "リセット間隔(ミリ秒)", + "Prometheus_Garbage_Collector": "NodeJS GCを収集する", + "Prometheus_Garbage_Collector_Alert": "非アクティブ化するには再起動が必要です", + "Prometheus_API_User_Agent": "API:ユーザーエージェントの追跡", "Protocol": "プロトコル", "Prune": "整理", "Prune_finished": "整理完了", @@ -2618,6 +2709,7 @@ "files_pruned": "整理されたファイル", "Public": "パブリック", "Public_Channel": "パブリックチャンネル", + "Public_Channels": "公開チャンネル", "Public_Community": "公共のコミュニティ", "Public_Relations": "広報", "Public_URL": "公開URL", @@ -2730,7 +2822,9 @@ "Report_this_message_question_mark": "このメッセージを報告?", "Reporting": "報告", "Request_comment_when_closing_conversation": "会話を閉じるときにコメントを要求する", + "Request_comment_when_closing_conversation_description": "有効にした場合、エージェントは会話を閉じる前にコメントを設定する必要があります。", "Request_tag_before_closing_chat": "会話を閉じる前にタグを要求する", + "Require": "必要", "Require_all_tokens": "すべてのトークンを要求する", "Require_any_token": "任意のトークンを要求する", "Require_password_change": "パスワードの変更を要求", @@ -2807,7 +2901,6 @@ "Room_type_changed_successfully": "ルームの種類は正常に変更されました", "Room_type_of_default_rooms_cant_be_changed": "これはデフォルトルームで、タイプを変更することはできませんので、管理者に相談してください。", "Room_unarchived": "ルームのアーカイブを解除しました", - "Room_uploaded_file_list": "ファイル一覧", "Room_uploaded_file_list_empty": "ファイルがありません。", "Rooms": "ルーム", "Routing": "ルーティング", @@ -2852,6 +2945,10 @@ "SAML_Default_User_Role_Description": "複数の役割をコンマで区切って指定できます。", "SAML_Role_Attribute_Name": "ロール属性名", "SAML_Role_Attribute_Name_Description": "この属性がSAMLレスポンスで見つかった場合、その値は新しいユーザーのロール名として使用されます。", + "SAML_Role_Attribute_Sync": "ユーザーロールの同期", + "SAML_Role_Attribute_Sync_Description": "ログイン時にSAMLユーザーロールを同期します(ローカルユーザーロールを上書きします)。", + "SAML_Allowed_Clock_Drift": "アイデンティティプロバイダーからのクロックドリフトを許可", + "SAML_Allowed_Clock_Drift_Description": "アイデンティティプロバイダーのクロックは、システムクロックよりわずかに進んでいる場合があります。少量のクロックドリフトを許容できます。その値は、ミリ秒(ms)単位で指定する必要があります。指定された値は、応答が検証される現在の時刻に追加されます。", "Saturday": "土曜日", "Save": "保存", "save-others-livechat-room-info": "ライブチャットルーム情報", @@ -2908,6 +3005,7 @@ "Send_invitation_email_error": "正しい書式のメールアドレスが入力されていません。", "Send_invitation_email_info": "一度に複数の招待メールを送信できます。", "Send_invitation_email_success": "以下のアドレスへ招待メールを送信しました:", + "Send_me_the_code_again": "もう一度コードを送ってください", "Send_request_on_agent_message": "エージェントメッセージに対するリクエスト送信", "Send_request_on_chat_close": "チャットの近くにリクエストを送ります", "Send_request_on_lead_capture": "リードキャプチャでリクエストを送信する", @@ -2951,6 +3049,7 @@ "Should_exists_a_user_with_this_username": "ユーザーは登録されていなければなりません。", "Show_Setup_Wizard": "セットアップウィザードを表示する", "UI_Show_top_navbar_embedded_layout": "埋め込みレイアウトで上部ナビゲーションバーを表示する", + "Layout_Show_Home_Button": "「ホームボタン」を表示", "Show_agent_email": "エージェントのメールを表示する", "Show_agent_info": "エージェント情報を表示", "Show_all": "すべて表示", @@ -3010,6 +3109,8 @@ "Smarsh_MissingEmail_Email_Description": "電子メールアドレスが見つからない場合にユーザーアカウントに表示する電子メールは、一般的にボットアカウントで発生します。", "Smarsh_Timezone": "Smarsh タイムゾーン", "Smileys_and_People": "顔文字と人々", + "SMS_Default_Omnichannel_Department": "オムニチャネル部門(デフォルト)", + "SMS_Default_Omnichannel_Department_Description": "設定されている場合、この統合によって開始されたすべての新しい着信チャットは、この部門にルーティングされます。", "SMS_Enabled": "SMS有効", "SMTP": "SMTP", "SMTP_Host": "SMTP ホスト", @@ -3026,6 +3127,7 @@ "Social_Network": "ソーシャルネットワーク", "Sorry_page_you_requested_does_not_exist_or_was_deleted": "申し訳ありませんが、リクエストしたページは存在しないか、削除されました。", "Sort": "ソート", + "Sort_By": "並び替え:", "Sort_by_activity": "アクティビティで並べ替える", "Sound": "サウンド", "Sound_File_mp3": "サウンドファイル (mp3)", @@ -3252,6 +3354,8 @@ "Total_messages": "総メッセージ数", "Total_Threads": "総スレッド数", "Total_visitors": "総訪問者数", + "totp-invalid": "コードまたはパスワードが無効です", + "TOTP Invalid [totp-invalid]": "コードまたはパスワードが無効です", "Tourism": "観光", "Transcript_Enabled": "チャットが終了した後に彼らがトランスクリプトを好きになるかどうかを訪問者に尋ねる", "Transcript_message": "トランスクリプトについて質問するときに表示するメッセージ", @@ -3265,15 +3369,35 @@ "Trigger_Words": "トリガーになる言葉", "Triggers": "トリガー", "True": "はい", + "Troubleshoot": "トラブルシューティング", + "Troubleshoot_Description": "これらの設定は、Rocket.Chat開発チームまたはサポートチームのガイダンスによってのみ有効化されることを意図しています。自分が何をしているかわからない場合は触れないでください。", + "Troubleshoot_Disable_Notifications": "通知を無効にする", + "Troubleshoot_Disable_Notifications_Alert": "この設定は通知システムを完全に無効にします。音、デスクトップ通知、モバイル通知、メールが停止します!", + "Troubleshoot_Disable_Presence_Broadcast": "プレゼンスブロードキャストを無効にする", + "Troubleshoot_Disable_Presence_Broadcast_Alert": "この設定は、すべてのインスタンスがユーザーのステータス変更をクライアントに送信することを防ぎ、すべてのユーザーを最初のロードからのプレゼンスステータスで維持します。", + "Troubleshoot_Disable_Instance_Broadcast": "インスタンスブロードキャストを無効にする", + "Troubleshoot_Disable_Instance_Broadcast_Alert": "この設定により、Rocket.Chatインスタンスが他のインスタンスにイベントを送信できなくなり、同期の問題や誤動作が発生する可能性があります。", + "Troubleshoot_Disable_Sessions_Monitor": "セッションモニターを無効にする", + "Troubleshoot_Disable_Sessions_Monitor_Alert": "この設定により、ユーザーセッションの処理が停止し、統計が正しく機能しなくなります!", + "Troubleshoot_Disable_Livechat_Activity_Monitor": "Livechatアクティビティモニターを無効にする", + "Troubleshoot_Disable_Livechat_Activity_Monitor_Alert": "この設定により、ライブチャット訪問者セッションの処理が停止し、統計が正しく機能しなくなります!", + "Troubleshoot_Disable_Statistics_Generator": "統計ジェネレーターを無効にする", + "Troubleshoot_Disable_Statistics_Generator_Alert": "この設定は、誰かが更新ボタンをクリックするまで情報ページを古くしてすべての統計の処理を停止し、システムの周りに他の欠けている情報を引き起こす可能性があります!", + "Troubleshoot_Disable_Data_Exporter_Processor": "データエクスポータプロセッサを無効にする", + "Troubleshoot_Disable_Data_Exporter_Processor_Alert": "この設定により、ユーザーからのすべてのエクスポート要求の処理が停止するため、ユーザーはデータをダウンロードするためのリンクを受け取りません。", + "Troubleshoot_Disable_Workspace_Sync": "ワークスペース同期を無効にする", + "Troubleshoot_Disable_Workspace_Sync_Alert": "この設定により、このサーバーとRocket.Chatのクラウドとの同期が停止し、マーケットプレイスおよびエンタープライズライセンスで問題が発生する可能性があります。", "Tuesday": "火曜日", "Turn_OFF": "消す", "Turn_ON": "オンにする", "Two Factor Authentication": "2ファクタ認証", "Two-factor_authentication": "2ファクタ認証", + "Two-factor_authentication_email": "電子メールによる2ファクタ認証", "Two-factor_authentication_disabled": "2ファクタ認証は無効です", "Two-factor_authentication_enabled": "2ファクタ認証は有効です", "Two-factor_authentication_is_currently_disabled": "2ファクタ認証は現在無効です", "Two-factor_authentication_native_mobile_app_warning": "警告: これを有効にすると、2FAを実装するまでパスワードを使ってネイティブモバイルアプリ (Rocket.Chat +) にログインすることはできません。", + "Two-factor_authentication_email_is_currently_disabled": "電子メールによる二要素認証は現在無効になっています", "Type": "種類", "Type_your_email": "あなたのメールアドレスを入力してください", "Type_your_job_title": "職種を入力してください", @@ -3400,6 +3524,7 @@ "User_sent_a_message_to_you": "__username__からあなたにメッセージが送信されました ", "user_sent_an_attachment": "__user__が添付ファイルを送信しました", "User_Settings": "ユーザー設定", + "User_started_a_new_conversation": "__username__ さんが新しい会話を開始しました", "User_unmuted_by": "ユーザー __user_unmuted__ は、ミュートを解除されました。 by __user_by__", "User_unmuted_in_room": "ユーザーはルームでミュートを解除されました", "User_updated_successfully": "ユーザーは正常に更新されました", @@ -3437,6 +3562,7 @@ "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ は、オフレコ会話を開始したいようです。受け入れますか?", "Users": "ユーザー", "Users_added": "ユーザーが追加されました", + "Users_by_time_of_day": "時間帯別のユーザー", "Users_in_role": "ロールを割り当て中のユーザー", "Users must use Two Factor Authentication": "2ファクタ認証を必須にする", "Leave_the_description_field_blank_if_you_dont_want_to_show_the_role": "ロールを表示したくない場合は、説明フィールドを空白のままにします", @@ -3445,6 +3571,8 @@ "UTF8_Names_Slugify": "UTF8形式名をスラグ化する", "UTF8_Names_Validation": "UTF8形式名の検証パターン", "UTF8_Names_Validation_Description": "特殊文字と空はを許可しないでください。半角記号(マイナス・アンダーバー・ドット)を使えますが、名前の最後には使えません", + "Value_messages": "__value__ メッセージ", + "Value_users": "__value__ ユーザー", "Validate_email_address": "電子メールアドレスの検証", "Verification_email_body": "[Site_Name]にアカウントを作成しました。下のボタンをクリックしてメールアドレスを確認し、登録を完了してください。", "Verification": "検証", @@ -3454,6 +3582,7 @@ "Verified": "検証", "Verify": "確認します", "Verify_your_email": "あなたの電子メールを確認します", + "Verify_your_email_for_the_code_we_sent": "送信したコードのメールを確認します", "Version": "バージョン", "Videos": "ビデオ", "Video Conference": "ビデオ会議", @@ -3546,6 +3675,8 @@ "Welcome": "ようこそ %s.", "Welcome_to": "[Site_Name]へようこそ", "Welcome_to_the": "ようこそ", + "Where_are_the_messages_being_sent?": "メッセージはどこに送信されますか?", + "When_is_the_chat_busier?": "チャットはいつ忙しいですか?", "Why_do_you_want_to_report_question_mark": "なぜあなたは報告したいですか?", "will_be_able_to": "は、以下ができるようになります", "Worldwide": "全世界", diff --git a/packages/rocketchat-i18n/i18n/km.i18n.json b/packages/rocketchat-i18n/i18n/km.i18n.json index 717f08f2c7d1..a24feba8c7b2 100644 --- a/packages/rocketchat-i18n/i18n/km.i18n.json +++ b/packages/rocketchat-i18n/i18n/km.i18n.json @@ -1535,6 +1535,7 @@ "if_they_are_from": "(ប្រសិនបើពួកគេមកពី %s)", "If_this_email_is_registered": "បើអ៊ីមែលនេះត្រូវបានចុះឈ្មោះយើងនឹងផ្ញើការណែនាំអំពីរបៀបកំណត់ពាក្យសម្ងាត់របស់អ្នក។ បើអ្នកមិនទទួលបានអ៊ីមែលក្នុងរយៈពេលខ្លីសូមត្រឡប់មកវិញហើយព្យាយាមម្តងទៀត។", "If_you_are_sure_type_in_your_password": "ប្រសិនបើអ្នកមានប្រភេទប្រាកដថាពាក​​្យសម្ងាត់របស់អ្នក:", + "Members_List": "បញ្ជី​សមាជិក", "If_you_are_sure_type_in_your_username": "ប្រសិនបើអ្នកមានប្រភេទប្រាកដថានៅក្នុងឈ្មោះអ្នកប្រើប្រាស់របស់អ្នក:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "ប្រសិនបើអ្នកមិនមាននរណាម្នាក់ផ្ញើរអ៊ីមែលទៅ [omni@rocket.chat] (mailto: omni@rocket.chat) ដើម្បីទទួលបានរបស់អ្នក។", "If_you_didnt_ask_for_reset_ignore_this_email": "ប្រសិនបើអ្នកមិនបានសួររកការកំណត់ពាក្យសម្ងាត់របស់អ្នកឡើងវិញទេ, អ្នកអាចមិនអើពើនឹងអ៊ីម៉ែលនេះ។", @@ -1939,6 +1940,7 @@ "Mail_Message_No_messages_selected_select_all": "អ្នកមិនបានជ្រើសសារណាមួយឡើយ។", "Mail_Messages": "សារសំបុត្រ", "Mail_Messages_Instructions": "ជ្រើសសារដែលអ្នកចង់ផ្ញើតាមរយៈអ៊ីម៉ែលដោយចុចលើសារ", + "Room_uploaded_file_list": "បញ្ជី​ឯកសារ", "Mail_Messages_Subject": "នៅទីនេះជាមួយផ្នែកដែលបានជ្រើសរបស់ %s ដែលសារ", "Mailer": "ផ្ញើសំបុត្រ", "Mailer_body_tags": "អ្នកត្រូវប្រើប្រាស់ [unsubcribe] សម្រាប់ដកដំណភ្ជាប់ជាវជាប្រចាំ។
        អ្នកប្រហែលជាត្រូវប្រើប្រាស់ [name], [fname], [lname] ធ្វើជាឈ្មោះពេញរបស់អ្នកប្រើប្រាស់។
        អ្នកប្រហែលជាប្រើ [email] ធ្វើជាអ៊ីមែលរបស់អ្នកប្រើប្រាស់។", @@ -1981,7 +1983,6 @@ "Max_length_is": "ប្រវែងអតិបរមាគឺ%s", "Media": "ប្រព័ន្ធផ្សព្វផ្សាយ", "Medium": "មធ្យម", - "Members_List": "បញ្ជី​សមាជិក", "mention-all": "និយាយទាំងអស់", "mention-all_description": "ការអនុញ្ញាតប្រើប្រាស់ @all mention", "mention-here": "បញ្ជាក់នៅទីនេះ", @@ -2491,7 +2492,6 @@ "Room_type_changed_successfully": "ប្រភេទបន្ទប់ផ្លាស់ប្តូរដោយជោគជ័យ", "Room_type_of_default_rooms_cant_be_changed": "នេះជាបន្ទប់លំនាំដើមហើយមិនអាចប្តូរប្រភេទបានទេសូមពិគ្រោះជាមួយអ្នកគ្រប់គ្រងរបស់អ្នក។", "Room_unarchived": "បន្ទប់ទុក​​ក្នុងប័ណ្ណសារ", - "Room_uploaded_file_list": "បញ្ជី​ឯកសារ", "Room_uploaded_file_list_empty": "ពុំមានឯកសារដែលអាចប្រើបាន។", "Rooms": "បន្ទប់", "Run_only_once_for_each_visitor": "ដំណើរការតែនៅលើអ្នកទស្សនាម្នាក់ៗ", @@ -2869,6 +2869,7 @@ "Trigger_Words": "ពាក្យគន្លឹះ", "Triggers": "ដែលបង្កឱ្យកើត", "True": "ពិត", + "Troubleshoot_Disable_Notifications": "បិទការជូនដំណឹង", "Tuesday": "ថ្ងៃអង្គារ", "Turn_OFF": "បិទ", "Turn_ON": "បើក", diff --git a/packages/rocketchat-i18n/i18n/ko.i18n.json b/packages/rocketchat-i18n/i18n/ko.i18n.json index 2a39e50d0f1d..80fd7cf5e173 100644 --- a/packages/rocketchat-i18n/i18n/ko.i18n.json +++ b/packages/rocketchat-i18n/i18n/ko.i18n.json @@ -1452,6 +1452,7 @@ "if_they_are_from": "(그들이 %s 출신 인 경우)", "If_this_email_is_registered": "이 이메일이 등록되면 비밀번호 재설정 방법에 대한 안내가 전송됩니다. 잠시 이메일을받지 못하면 다시 돌아와 다시 시도하십시오.", "If_you_are_sure_type_in_your_password": "계속 진행하려면 비밀번호를 입력해주세요:", + "Members_List": "참여자 목록", "If_you_are_sure_type_in_your_username": "계속 진행하려면 사용자명을 입력해주세요:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "갖고 계시지 않으시면 [omni@rocket.chat] (mailto : omni@rocket.chat)로 전자 메일을 보내주십시오.", "If_you_didnt_ask_for_reset_ignore_this_email": "비밀번호 재설정을 요청하지 않았다면 이 이메일은 무시해도 됩니다.", @@ -1859,6 +1860,7 @@ "Mail_Message_No_messages_selected_select_all": "메시지를 선택해주세요.", "Mail_Messages": "메시지 메일보내기", "Mail_Messages_Instructions": "메시지를 클릭해 메일로 보내고 싶은 메시지를 선택하세요.", + "Room_uploaded_file_list": "파일 목록", "Mail_Messages_Subject": "%s 대화방에서 선택된 메시지입니다", "Mailer": "메일보내기", "Mailer_body_tags": "구독해지를 위해 [unsubscribe]를 반드시 사용합니다.
        [name] - 전체이름(성+이름), [lname] - 성, [fname] - 이름을 사용할 수 있습니다.
        사용자의 이메일을 [email]로 사용할 수 있습니다.", @@ -1903,7 +1905,6 @@ "Max_length_is": "최대 길이는 %s입니다.", "Media": "미디어", "Medium": "보통", - "Members_List": "참여자 목록", "mention-all": "모두에게 멘션", "mention-all_description": "@all 멘션 사용 권한", "mention-here": "여기에 멘션", @@ -2446,7 +2447,6 @@ "Room_type_changed_successfully": "대화방 유형을 변경했습니다.", "Room_type_of_default_rooms_cant_be_changed": "이 대화방은 기본 대화방이며 유형을 변경할 수 없습니다. 관리자에게 문의하십시오.", "Room_unarchived": "대화방 보관 해제", - "Room_uploaded_file_list": "파일 목록", "Room_uploaded_file_list_empty": "파일이 없습니다.", "Rooms": "대화방", "Routing": "라우팅", @@ -2846,6 +2846,7 @@ "Trigger_Words": "트리거 단어", "Triggers": "트리거", "True": "설정됨", + "Troubleshoot_Disable_Notifications": "알림 비활성", "Tuesday": "화요일", "Turn_OFF": "끄기", "Turn_ON": "켜기", diff --git a/packages/rocketchat-i18n/i18n/ku.i18n.json b/packages/rocketchat-i18n/i18n/ku.i18n.json index 28f7e9766361..9be1c0e99b77 100644 --- a/packages/rocketchat-i18n/i18n/ku.i18n.json +++ b/packages/rocketchat-i18n/i18n/ku.i18n.json @@ -1297,6 +1297,7 @@ "if_they_are_from": "(eger ew ji %s)", "If_this_email_is_registered": "Heke ev e-nameya qeydkirî ye, em ê li ser şîfreya we çawa şîfreya xwe bistînin. Heke hûn bi nameyek zûtirîn bistînin, kerema xwe dîsa vegerin û dîsa biceribînin.", "If_you_are_sure_type_in_your_password": "Eger tu bi xwe ewle type li şîfreya xwe:", + "Members_List": "لیستی ئەندامان", "If_you_are_sure_type_in_your_username": "Eger tu bi xwe ewle type li navê te in:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Heke ku we tune ku yek e-mail bişîne [omni@rocket.chat] (mailto: omni@rocket.chat) da ku hûn bibînin.", "Iframe_Integration": "Însrame Integration", @@ -1669,6 +1670,7 @@ "Mail_Message_No_messages_selected_select_all": "Tu peyam hatine hilbijartin ne.", "Mail_Messages": "Messages mail", "Mail_Messages_Instructions": "Hilbijartina ku mesajên ku tu dixwazî ​​bişîne via email bi tikandina messages", + "Room_uploaded_file_list": "Lîsteya files", "Mail_Messages_Subject": "Here rêjeyek hilbijartî yên %s mesajên ye", "Mailer": "نامەبەر", "Mailer_body_tags": "Tu divê [unsubscribe] ji bo link unsubscription bi kar tînin.
        Dibe ku tu [name], [fname] ji bo navê bikarhêner, nav an paşnav, bi rêzê ve bi kar tînin, [lname].
        Dibe ku tu [email] ji bo email bikarhêner bi kar tînin.", @@ -1710,7 +1712,6 @@ "Max_length_is": "Mezinahiya%s e", "Media": "Medya", "Medium": "Medya", - "Members_List": "لیستی ئەندامان", "mention-all": "Mention All", "mention-all_description": "Destûra karûbarê @allê bikar bînin", "mention-here": "Va ye", @@ -2202,7 +2203,6 @@ "Room_type_changed_successfully": "type odeyê de bi serkeftî hate guhertin", "Room_type_of_default_rooms_cant_be_changed": "Ev odeya navek e û cureyê neyê guhertin, ji kerema xwe birêveberê xwe biparêze.", "Room_unarchived": "room unarchived", - "Room_uploaded_file_list": "Lîsteya files", "Room_uploaded_file_list_empty": "No files tune.", "Rooms": "odeyên", "run-import": "Import Import", @@ -2557,6 +2557,7 @@ "Trigger_Words": "Words Trigger", "Triggers": "destpêker", "True": "rast", + "Troubleshoot_Disable_Notifications": "Notification", "Tuesday": "Sêşem", "Turn_OFF": "Temirandin", "Turn_ON": "Vekirin", diff --git a/packages/rocketchat-i18n/i18n/lo.i18n.json b/packages/rocketchat-i18n/i18n/lo.i18n.json index 1343aab1d8f2..b39bf92f9f02 100644 --- a/packages/rocketchat-i18n/i18n/lo.i18n.json +++ b/packages/rocketchat-i18n/i18n/lo.i18n.json @@ -1297,6 +1297,7 @@ "if_they_are_from": "(ຖ້າພວກເຂົາມາຈາກ %s)", "If_this_email_is_registered": "ຖ້າອີເມວນີ້ຖືກລົງທະບຽນ, ພວກເຮົາຈະສົ່ງຄໍາແນະນໍາກ່ຽວກັບວິທີການປັບລະຫັດຜ່ານຂອງທ່ານ. ຖ້າທ່ານບໍ່ໄດ້ຮັບອີເມວໃນໄວໆນີ້, ກະລຸນາກັບຄືນແລະລອງອີກເທື່ອຫນຶ່ງ.", "If_you_are_sure_type_in_your_password": "ຖ້າຫາກວ່າທ່ານແນ່ໃຈວ່າຢູ່ໃນປະເພດລະຫັດຜ່ານຂອງທ່ານ:", + "Members_List": "ບັນຊີສະມາຊິກ", "If_you_are_sure_type_in_your_username": "ຖ້າຫາກວ່າທ່ານແນ່ໃຈວ່າຢູ່ໃນປະເພດຊື່ຜູ້ໃຊ້ຂອງທ່ານ:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "ຖ້າທ່ານບໍ່ມີໃຜສົ່ງອີເມວໄປຫາ [omni@rocket.chat] (mailto: omni@rocket.chat) ເພື່ອໃຫ້ໄດ້ຮັບຂອງທ່ານ.", "Iframe_Integration": "Iframe Integration", @@ -1669,6 +1670,7 @@ "Mail_Message_No_messages_selected_select_all": "ທ່ານຍັງບໍ່ໄດ້ເລືອກຂໍ້ຄວາມ", "Mail_Messages": "ຂໍ້ຄວາມອີເມວ", "Mail_Messages_Instructions": "ເລືອກຂໍ້ຄວາມທີ່ທ່ານຕ້ອງການທີ່ຈະສົ່ງຜ່ານທາງອີເມລໂດຍການຄລິກຂໍ້ຄວາມ", + "Room_uploaded_file_list": "ບັນຊີໄຟລ໌", "Mail_Messages_Subject": "ຕໍ່ໄປນີ້ແມ່ນເປັນສ່ວນການຄັດເລືອກຂອງຂໍ້ %s", "Mailer": "Mailer", "Mailer_body_tags": "ທ່ານຕ້ອງການນໍາໃຊ້ [unsubscribe] ສໍາລັບການເຊື່ອມຕໍ່ unsubscription.
        ທ່ານອາດຈະນໍາໃຊ້ [name], [fname], [lname] ສໍາລັບຊື່ເຕັມຂອງຜູ້ໃຊ້ໄດ້, ຊື່ທໍາອິດຫຼືຊື່ສຸດທ້າຍ, ຕາມລໍາດັບ.
        ທ່ານອາດຈະນໍາໃຊ້ [email] ສໍາລັບອີເມລຂອງຜູ້ໃຊ້ໄດ້.", @@ -1710,7 +1712,6 @@ "Max_length_is": "ຄວາມຍາວສູງສຸດແມ່ນ%s", "Media": "ສື່ມວນຊົນ", "Medium": "ປານກາງ", - "Members_List": "ບັນຊີສະມາຊິກ", "mention-all": "Mention All", "mention-all_description": "ການອະນຸຍາດໃຫ້ໃຊ້ @all mention", "mention-here": "ກ່າວເຖິງນີ້", @@ -2202,7 +2203,6 @@ "Room_type_changed_successfully": "ປະເພດຫ້ອງການປ່ຽນແປງສົບຜົນສໍາເລັດ", "Room_type_of_default_rooms_cant_be_changed": "ນີ້ແມ່ນຫ້ອງມາດຕະຖານແລະປະເພດບໍ່ສາມາດປ່ຽນແປງໄດ້, ກະລຸນາປຶກສາກັບຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ.", "Room_unarchived": "ຫ້ອງຈໍານວນຫຼາຍ", - "Room_uploaded_file_list": "ບັນຊີໄຟລ໌", "Room_uploaded_file_list_empty": "ບໍ່ມີໄຟລ໌ທີ່ມີ.", "Rooms": "ຫ້ອງ", "run-import": "Run Import", @@ -2557,6 +2557,7 @@ "Trigger_Words": "ຜົນກະທົບຕໍ່ຄໍາສັບຕ່າງໆ", "Triggers": "ຜົນກະທົບຕໍ່", "True": "ທີ່ແທ້ຈິງ", + "Troubleshoot_Disable_Notifications": "ປິດການແຈ້ງເຕືອນ", "Tuesday": "ວັນອັງຄານ", "Turn_OFF": "ປິດ", "Turn_ON": "ເປີດ", diff --git a/packages/rocketchat-i18n/i18n/lt.i18n.json b/packages/rocketchat-i18n/i18n/lt.i18n.json index 839846ce80ca..006155af8a1a 100644 --- a/packages/rocketchat-i18n/i18n/lt.i18n.json +++ b/packages/rocketchat-i18n/i18n/lt.i18n.json @@ -1298,6 +1298,7 @@ "if_they_are_from": "(jei jie yra iš %s)", "If_this_email_is_registered": "Jei šis el. Laiškas yra užregistruotas, atsiųsime instrukcijas, kaip iš naujo nustatyti slaptažodį. Jei netrukus negausite el. Laiško, grįžkite ir bandykite dar kartą.", "If_you_are_sure_type_in_your_password": "Jei esate tikri, įveskite savo slaptažodį:", + "Members_List": "Narių sąrašas", "If_you_are_sure_type_in_your_username": "Jei esate tikri įveskite savo vartotojo vardą:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Jei jūs neturite, nesiųskite el. Laiško adresu [omni@rocket.chat] (mailto: omni@rocket.chat), kad gautumėte savo.", "Iframe_Integration": "Iframe integracija", @@ -1670,6 +1671,7 @@ "Mail_Message_No_messages_selected_select_all": "Jūs nepasirinkote jokių pranešimų", "Mail_Messages": "Pašto žinutės", "Mail_Messages_Instructions": "Spustelėdami pranešimus pasirinkite, kuriuos pranešimus norite siųsti el. Paštu", + "Room_uploaded_file_list": "Failų sąrašas", "Mail_Messages_Subject": "Štai pasirinkta%s pranešimų dalis", "Mailer": "Maileris", "Mailer_body_tags": "Jūs privalote naudoti [unsubscribe], jei norite atsisakyti prenumeratos nuorodos.
        Galite naudoti [name], [fname], [lname] atitinkamai vartotojo vardą, pavardę arba pavardę.
        Galite naudoti [el.] Naudotojo el. Paštą.", @@ -1711,7 +1713,6 @@ "Max_length_is": "Maksimalus ilgis yra%s", "Media": "Žiniasklaida", "Medium": "Vidutinis", - "Members_List": "Narių sąrašas", "mention-all": "Paminėti viską", "mention-all_description": "Leidimas naudoti @all paminėti", "mention-here": "Paminėti čia", @@ -2203,7 +2204,6 @@ "Room_type_changed_successfully": "Kambario tipas sėkmingai pakeistas", "Room_type_of_default_rooms_cant_be_changed": "Tai numatytasis kambarys ir tipas negali būti keičiamas, prašome kreiptis į savo administratorių.", "Room_unarchived": "Kambarys išarchyvuotas", - "Room_uploaded_file_list": "Failų sąrašas", "Room_uploaded_file_list_empty": "Nėra jokių failų.", "Rooms": "Kambariai", "run-import": "Vykdyti importavimą", @@ -2558,6 +2558,7 @@ "Trigger_Words": "Trigger žodžiai", "Triggers": "Trigeriai", "True": "Tiesa", + "Troubleshoot_Disable_Notifications": "Išjungti pranešimus", "Tuesday": "Antradienis", "Turn_OFF": "Išjunk", "Turn_ON": "Įjungti", diff --git a/packages/rocketchat-i18n/i18n/lv.i18n.json b/packages/rocketchat-i18n/i18n/lv.i18n.json index 08107fde2e48..997896fc93c0 100644 --- a/packages/rocketchat-i18n/i18n/lv.i18n.json +++ b/packages/rocketchat-i18n/i18n/lv.i18n.json @@ -1297,6 +1297,7 @@ "if_they_are_from": "(ja tie ir no %s)", "If_this_email_is_registered": "Ja šis e-pasts ir reģistrēts, mēs nosūtīsim norādījumus par to, kā atiestatīt savu paroli. Ja drīzumā nesaņemsiet e-pasta ziņojumu, lūdzam, atgriezieties un mēģiniet vēlreiz.", "If_you_are_sure_type_in_your_password": "Ja esat pārliecināts, ierakstiet savu paroli:", + "Members_List": "Dalībnieku saraksts", "If_you_are_sure_type_in_your_username": "Ja esat pārliecināts, ievadiet savu lietotājvārdu:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Ja jums nav, nosūtiet e-pastu uz adresi [omni@rocket.chat] (mailto: omni@rocket.chat), lai saņemtu savu.", "Iframe_Integration": "Iframe integrācija", @@ -1669,6 +1670,7 @@ "Mail_Message_No_messages_selected_select_all": "Jūs neesat izvēlējies nevienu ziņojumu", "Mail_Messages": "Pasta ziņojumi", "Mail_Messages_Instructions": "Izvēlieties, kurus ziņojumus vēlaties nosūtīt pa e-pastu, noklikšķinot uz ziņojumiem", + "Room_uploaded_file_list": "Failu saraksts", "Mail_Messages_Subject": "Šeit ir atlasīta %s ziņu daļa", "Mailer": "Nosūtītājs", "Mailer_body_tags": "Jums ir jāizmanto [atcelt abonementu] abonementa atsaukuma saitei.
        Jūs varat lietot [vārds], [fname], [lname] attiecīgi lietotāja pilnu vārdu, vārdu vai uzvārdu.
        Varat izmantot [e-pastu] lietotāja e-pastam.", @@ -1710,7 +1712,6 @@ "Max_length_is": "Maksimālais garums ir %s", "Media": "Multivide", "Medium": "Vidējs", - "Members_List": "Dalībnieku saraksts", "mention-all": "Pieminēt visus", "mention-all_description": "Atļauja izmantot @Pieminēt visus", "mention-here": "Pieminēt šeit", @@ -2202,7 +2203,6 @@ "Room_type_changed_successfully": "Istabas veids tika veiksmīgi mainīts", "Room_type_of_default_rooms_cant_be_changed": "Šī ir noklusējuma istaba, un veidu nevar mainīt, lūdzu, sazinieties ar savu administratoru.", "Room_unarchived": "Istaba izņemta no arhīva", - "Room_uploaded_file_list": "Failu saraksts", "Room_uploaded_file_list_empty": "Nav pieejami faili.", "Rooms": "Istabas", "run-import": "Palaist importēšanu", @@ -2557,6 +2557,7 @@ "Trigger_Words": "Trigera vārdi", "Triggers": "Trigeri", "True": "Taisnība", + "Troubleshoot_Disable_Notifications": "Atspējot paziņojumus", "Tuesday": "Otrdiena", "Turn_OFF": "Izslēgt", "Turn_ON": "Ieslēgt", diff --git a/packages/rocketchat-i18n/i18n/mn.i18n.json b/packages/rocketchat-i18n/i18n/mn.i18n.json index 61fdce239482..78a3c7b9ec5d 100644 --- a/packages/rocketchat-i18n/i18n/mn.i18n.json +++ b/packages/rocketchat-i18n/i18n/mn.i18n.json @@ -1298,6 +1298,7 @@ "if_they_are_from": "(хэрэв тэдгээр нь %s бол)", "If_this_email_is_registered": "Хэрэв энэ имэйл бүртгэгдсэн бол бид таны нууц үгийг шинэчлэх талаар зааварчилгааг илгээх болно. Хэрэв та имэйлээ удахгүй хүлээж авахгүй бол эргэж ороод дахин оролдоно уу.", "If_you_are_sure_type_in_your_password": "Хэрэв та нууц үгээ оруулаарай:", + "Members_List": "Гишүүдийн жагсаалт", "If_you_are_sure_type_in_your_username": "Хэрэв та хэрэглэгчийн нэрээ бичиж байгаа гэдэгт итгэлтэй байгаа бол:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Хэрвээ та [omni@rocket.chat] (mailto: omni@rocket.chat) руу имэйл явуулахгүй бол таныхыг авах болно.", "Iframe_Integration": "Iframe Интеграцчилал", @@ -1670,6 +1671,7 @@ "Mail_Message_No_messages_selected_select_all": "Та ямар ч зурвас сонгоогүй байна", "Mail_Messages": "Захидлын зурвасууд", "Mail_Messages_Instructions": "Зурвасуудыг дарж имэйлээр илгээхийг хүсч буй мэйлийг сонгоно уу", + "Room_uploaded_file_list": "Файлуудын жагсаалт", "Mail_Messages_Subject": "%s зурвасуудын сонгосон хэсэг энд байна", "Mailer": "Захидал", "Mailer_body_tags": "Та ашиглах ёстой [b] захиалгын холбоосын холбоосыг [бүртгэлээс хасах] ашиглах ёстой.
        Та [нэр], [fname], [lname] хэрэглэгчийн бүтэн нэр, эхний нэр эсвэл овог нэрийг ашиглана.
        Та хэрэглэгчийн имэйлд зориулж [имэйл] ашиглаж болно.", @@ -1711,7 +1713,6 @@ "Max_length_is": "Хамгийн их урт нь %s", "Media": "Хэвлэл мэдээлэл", "Medium": "Дунд", - "Members_List": "Гишүүдийн жагсаалт", "mention-all": "Бүгдийг хэлнэ үү", "mention-all_description": "Имэйлийг ашиглах зөвшөөрөл", "mention-here": "Энд дурдсан", @@ -2203,7 +2204,6 @@ "Room_type_changed_successfully": "Өрөөний төрөл амжилттай болсон", "Room_type_of_default_rooms_cant_be_changed": "Энэ бол үндсэн өрөө бөгөөд төрөл өөрчлөгдөх боломжгүй, админтайгаа зөвлөлдөнө үү.", "Room_unarchived": "Өрөөний эзгүй болсон", - "Room_uploaded_file_list": "Файлуудын жагсаалт", "Room_uploaded_file_list_empty": "Файл байхгүй байна.", "Rooms": "Өрөө", "run-import": "Импортыг ажиллуулна уу", @@ -2558,6 +2558,7 @@ "Trigger_Words": "Үг хэлэх", "Triggers": "Тригерүүд", "True": "Үнэн", + "Troubleshoot_Disable_Notifications": "Мэдэгдэл идэвхгүй болгох", "Tuesday": "Мягмар гариг", "Turn_OFF": "Хаах", "Turn_ON": "Асаах", diff --git a/packages/rocketchat-i18n/i18n/ms-MY.i18n.json b/packages/rocketchat-i18n/i18n/ms-MY.i18n.json index 9f00701a7288..d840ea2bad04 100644 --- a/packages/rocketchat-i18n/i18n/ms-MY.i18n.json +++ b/packages/rocketchat-i18n/i18n/ms-MY.i18n.json @@ -1298,6 +1298,7 @@ "if_they_are_from": "(jika mereka dari %s)", "If_this_email_is_registered": "Jika e-mel ini didaftarkan, kami akan menghantar arahan mengenai cara untuk menetapkan semula kata laluan anda. Jika anda tidak menerima e-mel tidak lama lagi, sila kembali dan cuba lagi.", "If_you_are_sure_type_in_your_password": "Jika anda adalah jenis memastikan kata laluan anda:", + "Members_List": "Senarai Ahli", "If_you_are_sure_type_in_your_username": "Jika anda adalah jenis pasti dalam nama pengguna anda:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Sekiranya anda tidak menghantar email kepada [omni@rocket.chat] (mailto: omni@rocket.chat) untuk mendapatkannya.", "Iframe_Integration": "Integrasi Iframe", @@ -1670,6 +1671,7 @@ "Mail_Message_No_messages_selected_select_all": "Anda belum memilih sebarang mesej", "Mail_Messages": "Mesej mail", "Mail_Messages_Instructions": "Pilih mesej yang anda ingin menghantar melalui e-mel dengan mengklik mesej", + "Room_uploaded_file_list": "Senarai fail", "Mail_Messages_Subject": "Berikut adalah bahagian terpilih mesej %s", "Mailer": "Mailer", "Mailer_body_tags": "Anda mesti menggunakan [unsubscribe] untuk pautan langganan.
        Anda boleh menggunakan [nama], [fname], [lname] bagi nama penuh pengguna, nama pertama atau nama akhir, masing-masing.
        Anda boleh menggunakan [email] untuk e-mel pengguna.", @@ -1711,7 +1713,6 @@ "Max_length_is": "Panjang maksimum ialah%s", "Media": "Media", "Medium": "Sederhana", - "Members_List": "Senarai Ahli", "mention-all": "Sebut semua", "mention-all_description": "Kebenaran untuk menggunakan sebutan @all", "mention-here": "Nyatakan di sini", @@ -2212,7 +2213,6 @@ "Room_type_changed_successfully": "Jenis bilik ditukar dengan jayanya", "Room_type_of_default_rooms_cant_be_changed": "Ini adalah bilik lalai dan jenisnya tidak boleh diubah, sila berunding dengan pentadbir anda.", "Room_unarchived": "bilik dinyaharkibkan", - "Room_uploaded_file_list": "Senarai fail", "Room_uploaded_file_list_empty": "Tiada fail yang ada.", "Rooms": "Bilik", "run-import": "Jalankan Import", @@ -2567,6 +2567,7 @@ "Trigger_Words": "Trigger Perkataan", "Triggers": "Pencetus", "True": "Dayakan", + "Troubleshoot_Disable_Notifications": "Lumpuhkan Pemberitahuan", "Tuesday": "Selasa", "Turn_OFF": "Matikan", "Turn_ON": "Hidupkan", diff --git a/packages/rocketchat-i18n/i18n/nl.i18n.json b/packages/rocketchat-i18n/i18n/nl.i18n.json index aca510906f61..c425b6ad95a3 100644 --- a/packages/rocketchat-i18n/i18n/nl.i18n.json +++ b/packages/rocketchat-i18n/i18n/nl.i18n.json @@ -1410,6 +1410,7 @@ "if_they_are_from": "(als ze uit %s zijn)", "If_this_email_is_registered": "Als deze e-mail is geregistreerd, sturen we instructies over het opnieuw instellen van uw wachtwoord. Als u binnenkort geen e-mail ontvangt, kunt u terugkomen en het opnieuw proberen.", "If_you_are_sure_type_in_your_password": "Als u zeker weet typ uw wachtwoord:", + "Members_List": "Ledenlijst", "If_you_are_sure_type_in_your_username": "Als u zeker weet typ uw gebruikersnaam:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Als je er geen hebt, stuur dan een e-mail naar [omni@rocket.chat] (mailto: omni@rocket.chat) om de jouwe te krijgen.", "Iframe_Integration": "Iframe-integratie", @@ -1799,6 +1800,7 @@ "Mail_Message_No_messages_selected_select_all": "Je hebt geen bericten geslecteerd.", "Mail_Messages": "Mailberichten", "Mail_Messages_Instructions": "Kies welke berichten je wil versturen via e-mail door te klikken op de berichten", + "Room_uploaded_file_list": "Bestandslijst", "Mail_Messages_Subject": "Hier is een geselecteerd deel van %s berichten", "Mailer": "Mailer", "Mailer_body_tags": "Je moet [unsubscribe] gebruiken voor een unsubscribe link.
        Je kunt [name], [fname], [lname] gebruiken voor een gebruikers volledige naam, voorname of achtername.
        Je kunt [email] gebruiken voor het email adres van de gebruiker.", @@ -1841,7 +1843,6 @@ "Max_length_is": "Max lengte is%s", "Media": "Media", "Medium": "Medium", - "Members_List": "Ledenlijst", "mention-all": "Noem alles", "mention-all_description": "Toestemming om de @all-vermelding te gebruiken", "mention-here": "Hier vermelden", @@ -2362,7 +2363,6 @@ "Room_type_changed_successfully": "Kamertype met succes gewijzigd", "Room_type_of_default_rooms_cant_be_changed": "Dit is een standaardkamer en het type kan niet worden gewijzigd, raadpleeg uw beheerder.", "Room_unarchived": "Kamer uit meer gearchiveerd", - "Room_uploaded_file_list": "Bestandslijst", "Room_uploaded_file_list_empty": "Geen bestanden beschikbaar.", "Rooms": "Kamers", "Routing": "routing", @@ -2744,6 +2744,7 @@ "Trigger_Words": "Trigger woorden", "Triggers": "Triggers", "True": "True", + "Troubleshoot_Disable_Notifications": "Meldingen uitschakelen", "Tuesday": "Dinsdag", "Turn_OFF": "Uitschakelen", "Turn_ON": "Aanzetten", diff --git a/packages/rocketchat-i18n/i18n/no.i18n.json b/packages/rocketchat-i18n/i18n/no.i18n.json index 819b80c70b5b..3c2748604ca5 100644 --- a/packages/rocketchat-i18n/i18n/no.i18n.json +++ b/packages/rocketchat-i18n/i18n/no.i18n.json @@ -3,12 +3,15 @@ "500": "Intern server feil", "#channel": "#kanal", "0_Errors_Only": "0 - Kun Feil", + "12_Hour": "12-timers klokke", "1_Errors_and_Information": "1 - Feil og informasjon", + "24_Hour": "24-timers klokke", "2_Erros_Information_and_Debug": "2 - Feil, Informasjon og Feilsøking", "@username": "@brukernavn", "@username_message": "@brukernavn ", "__username__is_no_longer__role__defined_by__user_by_": "__username__ er ikke lenger __role__ av __user_by__", "__username__was_set__role__by__user_by_": "__username__ ble satt __role__ av __user_by__", + "%_of_conversations": "% av samtaler", "Accept": "Aksepter", "Accept_incoming_livechat_requests_even_if_there_are_no_online_agents": "Aksepter innkommende livechat selv om det ikke er noen online", "Accept_with_no_online_agents": "Aksepter uten online agenter", @@ -21,25 +24,29 @@ "Accessing_permissions": "Få tilgang til tillatelser", "Account_SID": "Konto SID", "Accounts": "kontoer", - "Accounts_Admin_Email_Approval_Needed_Default": "

        Brukeren [navn] ([email]) er registrert.

        Vennligst sjekk \"Administrasjon ->Brukere\" for å aktivere eller slette den.

        ", + "Accounts_Admin_Email_Approval_Needed_Default": "

        Brukeren [name] ([email]) er registrert.

        Vennligst sjekk \"Administrasjon ->Brukere\" for å aktivere eller slette den.

        ", "Accounts_Admin_Email_Approval_Needed_Subject_Default": "En ny bruker registrert og trenger godkjenning", - "Accounts_Admin_Email_Approval_Needed_With_Reason_Default": "

        Brukeren [navn] ([email]) er registrert.

        Årsak: [grunn]

        Vennligst sjekk \"Administrasjon ->Brukere\" for å aktivere eller slette den.

        ", + "Accounts_Admin_Email_Approval_Needed_With_Reason_Default": "

        Brukeren [name] ([email]) er registrert.

        Årsak: [reason]

        Vennligst sjekk \"Administrasjon ->Brukere\" for å aktivere eller slette den.

        ", "Accounts_AllowAnonymousRead": "Tillat anonym lesing", "Accounts_AllowAnonymousWrite": "Tillat anonym skriving", "Accounts_AllowDeleteOwnAccount": "Tillat brukere å slette egen konto", - "Accounts_AllowedDomainsList": "Tillatt Domener Liste", + "Accounts_AllowedDomainsList": "Liste over aksepterte domener", "Accounts_AllowedDomainsList_Description": "Kommaseparert liste over tillatte domener", "Accounts_AllowEmailChange": "Tillat endring av e-post", + "Accounts_AllowEmailNotifications": "Tillat epostvarsling", "Accounts_AllowPasswordChange": "Tillat passordendring", "Accounts_AllowRealNameChange": "Tillat navneskift", "Accounts_AllowUserAvatarChange": "Tillat brukervennlige endringer", "Accounts_AllowUsernameChange": "Tillat endring av brukernavn", "Accounts_AllowUserProfileChange": "Tillat endring av brukerprofil", + "Accounts_AllowUserStatusMessageChange": "Tillat egendefinert statusmelding", "Accounts_AvatarBlockUnauthenticatedAccess": "Blokker ikke autentisert tilgang til avatarer", "Accounts_AvatarCacheTime": "Avatar cache tid", "Accounts_AvatarCacheTime_description": "Antall sekunder http-protokollen blir fortalt å cache avatabildene.", "Accounts_AvatarResize": "Endre størrelsen på avatarer", "Accounts_AvatarSize": "Avatar størrelse", + "Accounts_AvatarExternalProviderUrl": "URL til ekstern tilbyder for avatar", + "Accounts_AvatarExternalProviderUrl_Description": "Eksempel: `https://acme.com/api/v1/{username}`", "Accounts_BlockedDomainsList": "Liste over blokkerte domener", "Accounts_BlockedDomainsList_Description": "Kommaseparert liste over blokkerte domener", "Accounts_BlockedUsernameList": "Blokkert brukernavnsliste", @@ -73,6 +80,7 @@ "Accounts_LoginExpiration": "Innlogging Utløp i dager", "Accounts_ManuallyApproveNewUsers": "Godkjenn nye brukere manuelt", "Accounts_OAuth_Custom_Authorize_Path": "Godkjenn sti", + "Accounts_OAuth_Custom_Avatar_Field": "Avatarfelt", "Accounts_OAuth_Custom_Button_Color": "Knappfarge", "Accounts_OAuth_Custom_Button_Label_Color": "Knapptekstfarge", "Accounts_OAuth_Custom_Button_Label_Text": "Knapptekst", @@ -82,12 +90,16 @@ "Accounts_OAuth_Custom_Identity_Token_Sent_Via": "Identitets Token Sendt Via", "Accounts_OAuth_Custom_Login_Style": "Logg inn stil", "Accounts_OAuth_Custom_Merge_Users": "Slå sammen brukere", + "Accounts_OAuth_Custom_Access_Token_Param": "Parameternavn for \"access token\"", "Accounts_OAuth_Custom_Scope": "omfang", "Accounts_OAuth_Custom_Secret": "Hemmelig", + "Accounts_OAuth_Custom_Show_Button_On_Login_Page": "Vis knapp på innloggingsside", "Accounts_OAuth_Custom_Token_Path": "Tokenbane", "Accounts_OAuth_Custom_Token_Sent_Via": "Token Sendt Via", "Accounts_OAuth_Custom_Username_Field": "Brukernavn felt", + "Accounts_OAuth_Custom_Name_Field": "Felt for navn", "Accounts_OAuth_Custom_Roles_Claim": "Roller / Grupper feltnavn", + "Accounts_OAuth_Custom_Merge_Roles": "Slå sammen roller fra SSO", "Accounts_OAuth_Drupal": "Drupal Logg inn aktivert", "Accounts_OAuth_Drupal_callback_url": "Drupal oAuth2 Redirect URI", "Accounts_OAuth_Drupal_id": "Drupal oAuth2 Client ID", @@ -108,6 +120,7 @@ "Accounts_OAuth_Gitlab_callback_url": "GitLab tilbakeringingsadresse", "Accounts_OAuth_Gitlab_id": "GitLab ID", "Accounts_OAuth_Gitlab_identity_path": "Identitetsvei", + "Accounts_OAuth_Gitlab_merge_users": "Slå sammen brukere", "Accounts_OAuth_Gitlab_secret": "Klientshemmelighet", "Accounts_OAuth_Google": "Google-innlogging", "Accounts_OAuth_Google_callback_url": "Google tilbakeringingsadresse", @@ -122,7 +135,10 @@ "Accounts_OAuth_Meteor_id": "Meteor ID", "Accounts_OAuth_Meteor_secret": "Meteor Secret", "Accounts_OAuth_Nextcloud": "OAuth aktivert", + "Accounts_OAuth_Nextcloud_callback_url": "Callback-URL for Nextcloud", + "Accounts_OAuth_Nextcloud_id": "Nextcloud Id", "Accounts_OAuth_Nextcloud_secret": "Klientshemmelighet", + "Accounts_OAuth_Nextcloud_URL": "URL til Nextcloud server", "Accounts_OAuth_Proxy_host": "Proxy-vert", "Accounts_OAuth_Proxy_services": "Proxy-tjenester", "Accounts_OAuth_Tokenpass": "Tokenpass Login", @@ -174,21 +190,43 @@ "Accounts_RegistrationForm_Secret_URL": "Hemmelig URL", "Accounts_RegistrationForm_SecretURL": "Registreringsskjema Hemmelig URL", "Accounts_RegistrationForm_SecretURL_Description": "Du må oppgi en tilfeldig streng som vil bli lagt til din registreringsadresse. Eksempel: https://open.rocket.chat/register/[secret_hash]", + "Accounts_Registration_InviteUrlType": "Type invitasjonslenke", + "Accounts_Registration_InviteUrlType_Direct": "Direkte", + "Accounts_Registration_InviteUrlType_Proxy": "Proxy", "Accounts_RequireNameForSignUp": "Krever navn for registrering", "Accounts_RequirePasswordConfirmation": "Kreve passordbekreftelse", "Accounts_SearchFields": "Felt som skal vurderes i søk", + "Accounts_Send_Email_When_Activating": "Send e-post til brukeren når brukeren blir aktivert", + "Accounts_Send_Email_When_Deactivating": "Send e-post til brukeren når brukeren blir deaktivert", "Accounts_SetDefaultAvatar": "Angi Standard Avatar", "Accounts_SetDefaultAvatar_Description": "Trenger å bestemme standard avatar basert på OAuth-konto eller Gravatar", + "Accounts_Set_Email_Of_External_Accounts_as_Verified": "Sett epostadresser for eksterne kontoer som bekreftet", + "Accounts_Set_Email_Of_External_Accounts_as_Verified_Description": "Kontoer opprettet fra eksterne tjenester, som LDAP, OAuth, osv., vil få epostadressene verifisert automatisk", "Accounts_ShowFormLogin": "Vis skjemabasert pålogging", + "Accounts_TwoFactorAuthentication_By_Email_Enabled": "Aktiver tofaktorautentisering via e-post", + "Accounts_TwoFactorAuthentication_By_Email_Enabled_Description": "Brukere med bekreftet epostadresse og alternativet aktivert på profilsiden deres vil motta en e-post med en midlertidig kode for å autorisere visse handlinger som innlogging, lagring av profilen, etc.", + "Accounts_TwoFactorAuthentication_By_Email_Auto_Opt_In": "Automatisk aktiver tofaktor via e-post for nye brukere", + "Accounts_TwoFactorAuthentication_By_Email_Auto_Opt_In_Description": "Nye brukere vil ha tofaktorautentisering via e-post aktivert som standard. De vil kunne deaktivere det på profilsiden.", + "Accounts_TwoFactorAuthentication_By_Email_Code_Expiration": "Tid i sekunder før koden sendt i e-post utløper", "Accounts_TwoFactorAuthentication_Enabled": "Aktiver to faktorautentiseringer", + "Accounts_TwoFactorAuthentication_Enabled_Description": "Brukere kan konfigurere tofaktorautentisering ved å bruke hvilken som helst TOTP-app, for eksempel Google Authenticator eller Authy", "Accounts_TwoFactorAuthentication_MaxDelta": "Maksimal Delta", "Accounts_UserAddedEmail_Default": "

        Velkommen til [Site_Name]

        Gå til site_url] og prøve det beste åpen kildekode chat-løsning tilgjengelig i dag!

        Du kan logge inn ved hjelp av e-postadressen din: [email] og passord: [passord]. Det kan hende du må endre det etter første innlogging.", "Accounts_TwoFactorAuthentication_MaxDelta_Description": "Maksimum Delta bestemmer hvor mange tokens er gyldige til enhver tid. Tokene genereres hvert 30. sekund, og gjelder for (30 * Maks. Delta) sekunder.
        Eksempel: Med et maksimalt Delta-sett på 10, kan hver token brukes opptil 300 sekunder før eller etter tidsstempel. Dette er nyttig når klientens klokke ikke er riktig synkronisert med serveren.", + "Accounts_TwoFactorAuthentication_RememberFor": "Husk tofaktor i (sekunder)", + "Accounts_TwoFactorAuthentication_RememberFor_Description": "Ikke be om ny tofaktorautorisasjonskode hvis en allerede har blitt gitt før på dette tidsintervallet.", "Accounts_UseDefaultBlockedDomainsList": "Bruk standard blokkert domener liste", "Accounts_UseDNSDomainCheck": "Bruk DNS Domain Check", "Accounts_UserAddedEmailSubject_Default": "Du har blitt lagt til i [Site_Name]", "Accounts_UserAddedEmail_Description": "Du kan bruke følgende plassholdere:

        • [navn], [fname], [lname] for brukerens fulle navn, fornavn eller etternavn.
        • [email] for brukerens e-postadresse.
        • [passord] for brukerens passord.
        • [Site_Name] og [Site_URL] for henholdsvis programnavnet og nettadressen.
        ", "Activate": "Aktiver", + "Active_users": "Aktive brukere", + "Daily_Active_Users": "Daglig aktive brukere", + "Weekly_Active_Users": "Ukentlige aktive brukere", + "Monthly_Active_Users": "Månedlige aktive brukere", + "DAU_value": "DAU __value__", + "WAU_value": "WAU __value__", + "MAU_value": "MAU __value__", "Activity": "Aktivitet", "Add": "Legg til", "add-oauth-service": "Legg til Oauth Service", @@ -210,6 +248,7 @@ "Add_user": "Legg til bruker", "Add_User": "Legg til bruker", "Add_users": "Legg til brukere", + "Add_Reaction": "Legg til reaksjon", "Adding_OAuth_Services": "Legge til OAuth-tjenester", "Adding_permission": "Legger til rettigheter", "Adding_user": "Legger til bruker", @@ -217,12 +256,15 @@ "Additional_Feedback": "Ekstra tilbakemelding", "additional_integrations_Bots": "Hvis du leter etter hvordan du integrerer din egen bot, så se ikke lenger enn vår Hubot-adapter. https://github.com/RocketChat/hubot-rocketchat", "additional_integrations_Zapier": "Ser du etter å integrere annen programvare og applikasjoner med Rocket.Chat, men du har ikke tid til å manuelt gjøre det? Da foreslår vi å bruke Zapier som vi støtter fullt ut. Les mer om det på vår dokumentasjon. https://rocket.chat/docs/administrator-guides/integrations/zapier/using-zaps/", + "Admin_disabled_encryption": "Din administrator har ikke aktivert ende-til-ende kryptering.", "Admin_Info": "Admin Info", "Administration": "Administrasjon", "Adult_images_are_not_allowed": "Voksenbilder er ikke tillatt", "Advocacy": "Beslutningspåvirkning", "After_OAuth2_authentication_users_will_be_redirected_to_this_URL": "Etter OAuth2-godkjenning, blir brukerne omdirigert til denne nettadressen", "Agent": "Agent", + "Agent_Info": "Agentinfo", + "Agents": "Agenter", "Agent_added": "Lagt til agent", "Agent_removed": "Fjernet agent", "Alerts": "varsler", @@ -230,17 +272,22 @@ "Alias_Format": "Aliasformat", "Alias_Format_Description": "Importer meldinger fra Slack med et alias; %s er erstattet av brukernavnet til brukeren. Hvis tom, vil ikke noe alias bli brukt.", "Alias_Set": "Alias ​​Set", + "Aliases": "Kallenavn", "All": "Alle", "All_added_tokens_will_be_required_by_the_user": "Alle tilsatte tokens vil bli pålagt av brukeren", "All_channels": "Alle kanaler", + "All_closed_chats_have_been_removed": "Alle lukkede chatter har blitt fjernet", "All_logs": "Aller logger", "All_messages": "Alle meldinger", "All_users": "Alle brukere", "All_users_in_the_channel_can_write_new_messages": "Alle brukere i kanalen kan skrive nye meldinger", + "Allow_collect_and_store_HTTP_header_informations": "Tillat å samle inn og lagre informasjon om HTTP headere.", + "Allow_collect_and_store_HTTP_header_informations_description": "Denne innstillingen bestemmer om Livechat har lov til å lagre informasjon samlet inn fra HTTP-header-data, for eksempel IP-adresse, User-Agent, og så videre.", "Allow_Invalid_SelfSigned_Certs": "Tillat ugyldige selvsignerte sertifikater", "Allow_Invalid_SelfSigned_Certs_Description": "Tillat ugyldig og selvsignert SSL-sertifikat for koblingsvalidering og forhåndsvisninger.", "Allow_switching_departments": "Tillat besøkende å bytte avdelinger", "Allow_Marketing_Emails": "Tillat markedsføring e-post", + "Almost_done": "Nesten ferdig", "Alphabetical": "Alfabetisk", "Always_open_in_new_window": "Alltid åpne i nytt vindu", "Analytics": "Analytics", @@ -255,9 +302,11 @@ "Animals_and_Nature": "Dyr og natur", "Announcement": "Kunngjøring", "API": "API", + "API_Add_Personal_Access_Token": "Legg til ny personlig Access Token", "API_Allow_Infinite_Count": "Tillat å få alt", "API_Allow_Infinite_Count_Description": "Bør samtaler til REST API få lov til å returnere alt i en samtale?", "API_Analytics": "Analytics", + "api-bypass-rate-limit": "Forbigå rate-limit for REST API", "API_CORS_Origin": "CORS Origin", "API_Default_Count": "Standard Count", "API_Default_Count_Description": "Standardtallet for REST API-resultater oppstår hvis forbrukeren ikke oppgav noen.", @@ -276,11 +325,24 @@ "API_Enable_CORS": "Aktiver CORS", "API_Enable_Direct_Message_History_EndPoint": "Aktiver sluttpunkt for direkte meldingshistorikk", "API_Enable_Direct_Message_History_EndPoint_Description": "Dette gjør det mulig for `/ api / v1 / im.history.others` som lar visning av direkte meldinger sendt av andre brukere som den som ringer ikke er en del av.", + "API_Enable_Rate_Limiter": "Aktiver Rate Limit", + "API_Enable_Rate_Limiter_Dev": "Aktiver Rate Limit i utvikling", + "API_Enable_Rate_Limiter_Dev_Description": "Bør begrense antallet kall til endepunktene i utviklingsmiljøet?", + "API_Enable_Rate_Limiter_Limit_Calls_Default": "Standard antall kall til rate-limiter", + "API_Enable_Rate_Limiter_Limit_Calls_Default_Description": "Tillatt antall kall innenfor hvert tidsrom for hvert endepunkt i REST API-et.", + "API_Enable_Rate_Limiter_Limit_Time_Default": "Standard tidsgrense for rate-limiter (i ms)", "API_Enable_Shields": "Aktiver skjold", "API_Enable_Shields_Description": "Aktiver skjold som er tilgjengelige på `/ api / v1 / shield.svg`", "API_GitHub_Enterprise_URL": "Server URL", "API_GitHub_Enterprise_URL_Description": "Eksempel: http://domain.com (unntatt trailing slash)", "API_Gitlab_URL": "GitLab URL", + "API_Personal_Access_Token_Name": "Navn på personlig Access Token", + "API_Personal_Access_Tokens_To_REST_API": "Personlig access token til REST API", + "API_Personal_Access_Tokens_Remove_Modal": "Er du sikker på at du vil fjerne denne access-tokenen?", + "API_Personal_Access_Token_Generated": "Personlig Access Token generert", + "API_Personal_Access_Token_Generated_Text_Token_s_UserId_s": "Pass på å lagre tokenet ditt på et sikkert sted, da du ikke kan hente den ut igjen senere.
        Token: __token__
        Din bruker-ID: __userId__", + "API_Personal_Access_Tokens_Regenerate_Modal": "Hvis du har mistet eller glemt tokenet ditt kan du regenerere det, men husk at alle applikasjoner som bruker dette tokenet må oppdateres", + "API_Personal_Access_Tokens_Regenerate_It": "Generer ny token", "API_Shield_Types": "Skjoldtyper", "API_Shield_Types_Description": "Typer skjold for å aktivere som en kommaseparert liste, velg fra `online`,` kanal` eller `*` for alle", "API_Token": "API Token", @@ -301,11 +363,14 @@ "App_status_disabled": "Funksjonshemmet", "App_status_error_disabled": "Deaktivert: Uncaught Error", "App_status_initialized": "initialisert", + "App_status_invalid_license_disabled": "Deaktivert: Ugyldig lisens", "App_status_invalid_settings_disabled": "Deaktivert: Konfigurasjon er nødvendig", "App_status_manually_disabled": "Deaktivert: manuelt", "App_status_manually_enabled": "aktivert", "App_status_unknown": "Unknown", "App_support_url": "støtte url", + "App_Url_to_Install_From": "Installer fra URL", + "App_Url_to_Install_From_File": "Installer fra fil", "Appearance": "Utseende", "Application_added": "Søknad lagt til", "Application_Name": "Programnavn", @@ -313,6 +378,8 @@ "Apply": "Søke om", "Apply_and_refresh_all_clients": "Påfør og oppdater alle klienter", "Apps": "Apps", + "Apps_Engine_Version": "Versjon av Apps Engine", + "Apps_Framework_Development_Mode": "Aktiver utviklermodus", "Apps_Framework_enabled": "Aktiver App Framework", "Apps_Settings": "Appens innstillinger", "Apps_WhatIsIt": "Apper: Hva er de?", @@ -927,6 +994,7 @@ "Display_offline_form": "Vis frakoblet skjema", "Display_unread_counter": "Vis antall uleste meldinger", "Displays_action_text": "Viser handlingstekst", + "Discussions": "Diskusjoner", "Dont_ask_me_again": "Ikke spør meg igjen!", "Dont_ask_me_again_list": "Ikke spør meg igjen listen", "Do_not_display_unread_counter": "Ikke vis noen teller på denne kanalen", @@ -1124,6 +1192,7 @@ "except_pinned": "(unntatt de som er festet)", "Execute_Synchronization_Now": "Utfør synkronisering nå", "Export_My_Data": "Eksporter mine data", + "Extended": "Utvidet", "External_Queue_Service_URL": "Ekstern køtjeneste-URL", "External_Service": "Ekstern tjeneste", "Facebook_Page": "Facebook-side", @@ -1259,6 +1328,7 @@ "GoogleVision_Type_Similar": "Søk lignende bilder", "Government": "Regjering", "Group_by_Type": "Gruppe etter type", + "Group_discussions": "Gruppediskusjoner", "Group_favorites": "Gruppe favoritter", "Group_mentions_disabled_x_members": "Gruppe nevner `@ alle` og` @ her` har blitt deaktivert for rom med flere enn __total__ medlemmer.", "Group_mentions_only": "Gruppe nevner bare", @@ -1299,6 +1369,7 @@ "if_they_are_from": "(hvis de er fra %s)", "If_this_email_is_registered": "Hvis denne e-posten er registrert, sender vi instruksjoner om hvordan du tilbakestiller passordet ditt. Hvis du ikke mottar en epost, vennligst kom tilbake og prøv igjen.", "If_you_are_sure_type_in_your_password": "Hvis du er sikker, skriv inn passordet ditt:", + "Members_List": "Medlemsliste", "If_you_are_sure_type_in_your_username": "Hvis du er sikker, skriv inn brukernavnet ditt:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Hvis du ikke har en, send en epost til [omni@rocket.chat] (mailto: omni@rocket.chat) for å få din.", "Iframe_Integration": "Iframe Integrasjon", @@ -1341,6 +1412,7 @@ "Importer_setup_error": "Det oppsto en feil under oppsett av importøren.", "Importer_Slack_Users_CSV_Information": "Filen som lastes opp må være Slack's Users-eksportfil, som er en CSV-fil. Se her for mer informasjon:", "Importer_Source_File": "Kildefilvalg", + "importer_status_finishing": "Nesten ferdig", "importer_status_import_failed": "Feil", "Inclusive": "Inklusive", "Incoming_Livechats": "Innkommende Livechats", @@ -1612,6 +1684,7 @@ "List_of_Channels": "Liste over kanaler", "List_of_Direct_Messages": "Liste over direkte meldinger", "Livechat_agents": "Livechat agenter", + "Livechat_Agents": "Agenter", "Livechat_AllowedDomainsList": "Livechat Tillatte Domener", "Livechat_Dashboard": "Livechat Dashboard", "Livechat_enabled": "Livechat aktivert", @@ -1671,6 +1744,7 @@ "Mail_Message_No_messages_selected_select_all": "Du har ikke valgt noen meldinger", "Mail_Messages": "E-postmeldinger", "Mail_Messages_Instructions": "Velg hvilke meldinger du vil sende via e-post ved å klikke på meldingene", + "Room_uploaded_file_list": "Filer Liste", "Mail_Messages_Subject": "Her er en valgt del av%s meldinger", "Mailer": "Mailer", "Mailer_body_tags": "Du bruke [unsubscribe] for unsubscription linken.
        Du kan bruke [navn], [fname], [lname] for brukerens fulle navn, fornavn eller etternavn.
        Du kan bruke [e-post] for brukerens e-post.", @@ -1699,6 +1773,7 @@ "MapView_GMapsAPIKey_Description": "Dette kan hentes fra Google Developers Console gratis.", "Mark_as_read": "Merk som lest", "Mark_as_unread": "Merk som ulest", + "Mark_unread": "Merk som ulest", "Markdown_Headers": "Tillat Markdown-overskrifter i meldinger", "Markdown_Marked_Breaks": "Aktiver merkede brudd", "Markdown_Marked_GFM": "Aktiver merket GFM", @@ -1712,7 +1787,6 @@ "Max_length_is": "Maks lengde er%s", "Media": "Media", "Medium": "Medium", - "Members_List": "Medlemsliste", "mention-all": "Nevne alt", "mention-all_description": "Tillatelse til å bruke @all nevne", "mention-here": "Nevn her", @@ -1872,6 +1946,8 @@ "No_snippet_messages": "Ingen utdrag", "No_starred_messages": "Ingen stjernemerkede meldinger", "No_such_command": "Ingen slik kommando: `/ __command__`", + "No_discussions_yet": "Ingen diskusjoner enda", + "No_Threads": "Ingen tråder funnet", "No_user_with_username_%s_was_found": "Ingen bruker med brukernavn \"%s\" ble funnet!", "Nobody_available": "Ingen tilgjengelig", "Node_version": "Node Versjon", @@ -2171,7 +2247,7 @@ "RetentionPolicyRoom_FilesOnly": "Bare beskjyll filer, hold beskjeder", "RetentionPolicyRoom_MaxAge": "Maksimal meldingsalder i dager (standard: __max__)", "RetentionPolicyRoom_OverrideGlobal": "Overstyr global retensjonspolicy", - "RetentionPolicyRoom_ReadTheDocs": "Pass på! Å klare disse innstillingene uten ytterst forsiktighet kan ødelegge all meldingshistorikk. Les dokumentasjonen før du slår på funksjonen her.", + "RetentionPolicyRoom_ReadTheDocs": "Pass på! Å endre disse innstillingene uten ytterst forsiktighet kan ødelegge all meldingshistorikk. Les dokumentasjonen før du slår på funksjonen herher.", "Retry_Count": "Prøv på nytt", "Role": "rolle", "Role_Editing": "Rollredigering", @@ -2204,7 +2280,6 @@ "Room_type_changed_successfully": "Romtype er endret", "Room_type_of_default_rooms_cant_be_changed": "Dette er et standardrom, og typen kan ikke endres, vennligst kontakt med administratoren din.", "Room_unarchived": "Rom unarchived", - "Room_uploaded_file_list": "Filer Liste", "Room_uploaded_file_list_empty": "Ingen filer tilgjengelig.", "Rooms": "Rom", "run-import": "Kjør import", @@ -2523,6 +2598,7 @@ "This_is_a_push_test_messsage": "Dette er en push-testmelding", "This_room_has_been_archived_by__username_": "Dette rommet er arkivert av __username__", "This_room_has_been_unarchived_by__username_": "Dette rommet er blitt arkivert av __username__", + "Threads": "Tråder", "Thursday": "Torsdag", "Time_in_seconds": "Tid i sekunder", "Title": "Tittel", @@ -2547,7 +2623,9 @@ "Tokens_Required_Input_Error": "Ugyldige skrevet tokens.", "Tokens_Required_Input_Placeholder": "Tokens aktiva navn", "Topic": "Emne", + "Total_Discussions": "Totalt antall diskusjoner", "Total_messages": "Totalt antall meldinger", + "Total_Threads": "Totalt antall tråder", "Tourism": "Turisme", "Transcript_Enabled": "Spør besøkende hvis de vil ha en transkripsjon etter at Chat er lukket", "Transcript_message": "Melding til å vise når du spør om transkripsjon", @@ -2559,6 +2637,7 @@ "Trigger_Words": "Trigger Ord", "Triggers": "Triggers", "True": "Ja", + "Troubleshoot_Disable_Notifications": "Deaktiver varslinger", "Tuesday": "tirsdag", "Turn_OFF": "Skru av", "Turn_ON": "Slå på", @@ -2588,6 +2667,7 @@ "unarchive-room": "Unarchive Room", "unarchive-room_description": "Tillatelse til å unarchive kanaler", "Unblock_User": "Fjern blokkering av bruker", + "Unfavorite": "Fjern fra favoritt", "Unignore": "Ikke ignorer", "Uninstall": "Avinstaller", "Unmute_someone_in_room": "Slå på noen på rommet", @@ -2817,7 +2897,7 @@ "You_are_logged_in_as": "Du er innlogget som", "You_are_not_authorized_to_view_this_page": "Du er ikke autorisert til å vise denne siden.", "You_can_change_a_different_avatar_too": "Du kan overstyre avataren som brukes til å legge inn fra denne integrasjonen.", - "You_can_search_using_RegExp_eg": "Du kan søke med RegExp. f.eks", + "You_can_search_using_RegExp_eg": "Du kan søke med RegExp, f.eks. /^tekst$/i", "You_can_use_an_emoji_as_avatar": "Du kan også bruke en emoji som en avatar.", "You_can_use_webhooks_to_easily_integrate_livechat_with_your_CRM": "Du kan bruke webhooks for enkelt å integrere livechat med CRM.", "You_cant_leave_a_livechat_room_Please_use_the_close_button": "Du kan ikke forlate et livechat-rom. Vennligst bruk lukkeknappen.", @@ -2849,4 +2929,4 @@ "Your_push_was_sent_to_s_devices": "Din push ble sendt til%s-enheter", "Your_server_link": "Din serverkobling", "Your_workspace_is_ready": "Ditt arbeidsområde er klar til bruk 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/pl.i18n.json b/packages/rocketchat-i18n/i18n/pl.i18n.json index 87376bb1b234..3ac96edc7090 100644 --- a/packages/rocketchat-i18n/i18n/pl.i18n.json +++ b/packages/rocketchat-i18n/i18n/pl.i18n.json @@ -191,6 +191,7 @@ "Accounts_RegistrationForm_Secret_URL": "Sekretny adres URL", "Accounts_RegistrationForm_SecretURL": "Sekretny adres URL formularza rejestracyjnego", "Accounts_RegistrationForm_SecretURL_Description": "Musisz podać losowy ciąg znaków, który zostanie dodany do adresu URL rejestracji. Przykład: https://open.rocket.chat/register/[secret_hash]", + "Accounts_Registration_InviteUrlType_Direct": "Bezpośrednio", "Accounts_Registration_InviteUrlType_Proxy": "Proxy", "Accounts_RequireNameForSignUp": "Wymagaj podana nazwy podczas rejestracji", "Accounts_RequirePasswordConfirmation": "Wymagaj potwierdzenia hasła", @@ -420,7 +421,7 @@ "Author_Information": "Informacje o autorze", "Authorization_URL": "URL uwierzytelniania", "Authorize": "Autoryzuj", - "auto-translate": "Auto Translate", + "auto-translate": "Auto-Tłumacz", "auto-translate_description": "Zezwolenie na używanie narzędzia do automatycznego tłumaczenia", "Auto_Load_Images": "Automatyczne ładowanie zdjęć", "AutoLinker": "AutoLinker", @@ -596,13 +597,13 @@ "Chatpal_go_to_message": "Skok", "Chatpal_go_to_room": "Skok", "Chatpal_go_to_user": "Wyślij bezpośrednią wiadomość", - "Chatpal_HTTP_Headers": "Http Headers", + "Chatpal_HTTP_Headers": "Nagłówki http", "Chatpal_HTTP_Headers_Description": "Lista nagłówków HTTP, jeden nagłówek na linię. Format: nazwa: wartość", "Chatpal_Main_Language": "Główny język", "Chatpal_Main_Language_Description": "Język używany najczęściej w rozmowach", "Chatpal_Messages": "Wiadomości", "Chatpal_Messages_Only": "Wiadomości", - "Chatpal_More": "Jeszcze", + "Chatpal_More": "Więcej", "Chatpal_No_Results": "Brak wyników", "Chatpal_no_search_results": "Brak wyników", "Chatpal_one_search_result": "Znaleziono 1 wynik", @@ -1574,6 +1575,7 @@ "if_they_are_from": "(jeśli są z %s)", "If_this_email_is_registered": "Jeśli ten e-mail jest zarejestrowany, wyślemy instrukcje dotyczące resetowania hasła. Jeśli wkrótce nie otrzymasz e-maila, wróć i spróbuj ponownie.", "If_you_are_sure_type_in_your_password": "Jeżeli jesteś pewien, wpisz swoje hasło:", + "Members_List": "Lista użytkowników", "If_you_are_sure_type_in_your_username": "Jeżeli jesteś pewien, wpisz swoją nazwę użytkownika:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Jeśli nie masz, wyślij wiadomość e-mail na adres [omni@rocket.chat] (mailto: omni@rocket.chat), aby otrzymać swoją.", "If_you_didnt_ask_for_reset_ignore_this_email": "Jeśli nie prosiłeś o zresetowanie hasła, możesz zignorować tego e-maila.", @@ -1995,6 +1997,7 @@ "Mail_Message_No_messages_selected_select_all": "Nie wybrałeś żadnych wiadomości.", "Mail_Messages": "Wysyłanie wiadomości przez email", "Mail_Messages_Instructions": "Wybierz wiadomości, które chcesz wysłać za pośrednictwem poczty elektronicznej za pomocą kliknięcia", + "Room_uploaded_file_list": "Lista plików", "Mail_Messages_Subject": "Oto wybrana część wiadomości %s", "Mailer": "Wyślij email użytkownikom", "Mailer_body_tags": "Musisz użyć znacznika [unsubscribe] aby zawrzeć w treści odnośnik do rezygnacji z subskrypcji.
        Możesz użyć znaczników [name], [fname], [lname] by wstawić odpowiednio pełną nazwę użytkownika, jego imię, nazwisko.
        Możesz użyć znacznika [email] by wstawić adres email użytkownika.", @@ -2047,7 +2050,6 @@ "Maximum": "Maksimum", "Media": "Głoska bezdźwięczna", "Medium": "Średni", - "Members_List": "Lista użytkowników", "mention-all": "Wymień wszystko", "mention-all_description": "Zezwolenie na użycie wzmianki @all", "mention-here": "Wspomnij tutaj", @@ -2245,6 +2247,7 @@ "Not_authorized": "Brak autoryzacji", "Not_Available": "Niedostępne", "Not_found_or_not_allowed": "Nie znaleziono lub niedozwolone", + "Not_following": "Nie śledź", "Not_started": "Nie rozpoczęte", "Nothing": "Nic", "Nothing_found": "Nic nie znaleziono", @@ -2341,6 +2344,7 @@ "Parent_channel_doesnt_exist": "Channel nie istnieje.", "Password": "Hasło", "Password_Change_Disabled": "Administrator czatu wyłączył możliwość zmiany haseł", + "Password_Changed_Description": "Możesz użyć następujących symboli zastępczych:
        • [hasło] dla tymczasowego hasła.
        • [nazwa][fname], [lname] dla odpowiednio pełnej nazwy użytkownika, imienia lub nazwiska
        • [email] dla e-maila
        • [Nazwa witryny] i [Site_URL] dla nazwy aplikacji i adresu URL
        ", "Password_changed_successfully": "Hasło zostało zmienione", "Password_Policy": "Zasady haseł", "Past_Chats": "Wcześniejsze czaty", @@ -2615,7 +2619,6 @@ "Room_type_changed_successfully": "Typ pokoju pomyślnie zmieniony", "Room_type_of_default_rooms_cant_be_changed": "Jest to domyślny pokój, którego typu nie można zmienić. Skontaktuj się z administratorem.", "Room_unarchived": "Pokój przywrócony", - "Room_uploaded_file_list": "Lista plików", "Room_uploaded_file_list_empty": "Brak dostępnych plików", "Rooms": "Pokoje", "Routing": "Routing", @@ -3049,6 +3052,7 @@ "Trigger_Words": "Słowa wyzwalające", "Triggers": "Wyzwalacze", "True": "Tak", + "Troubleshoot_Disable_Notifications": "Wyłącz powiadomienia", "Tuesday": "Wtorek", "Turn_OFF": "Wyłączyć", "Turn_ON": "Włączyć", diff --git a/packages/rocketchat-i18n/i18n/pt-BR.i18n.json b/packages/rocketchat-i18n/i18n/pt-BR.i18n.json index f51d1e4c576d..bc7ef474ac3d 100644 --- a/packages/rocketchat-i18n/i18n/pt-BR.i18n.json +++ b/packages/rocketchat-i18n/i18n/pt-BR.i18n.json @@ -92,12 +92,16 @@ "Accounts_OAuth_Custom_Identity_Token_Sent_Via": "Token de identidade enviado via", "Accounts_OAuth_Custom_Login_Style": "Estilo de Login", "Accounts_OAuth_Custom_Merge_Users": "Mesclar usuários", + "Accounts_OAuth_Custom_Access_Token_Param": "Nome do parâmetro para token de acesso", "Accounts_OAuth_Custom_Scope": "Escopo", "Accounts_OAuth_Custom_Secret": "Secreto", + "Accounts_OAuth_Custom_Show_Button_On_Login_Page": "Mostrar botão na página de autenticação", "Accounts_OAuth_Custom_Token_Path": "Path do Token", "Accounts_OAuth_Custom_Token_Sent_Via": "Token Enviado Por", "Accounts_OAuth_Custom_Username_Field": "Campo Nome de usuário", + "Accounts_OAuth_Custom_Name_Field": "Campo de nome", "Accounts_OAuth_Custom_Roles_Claim": "Nome do campo de funções / grupos", + "Accounts_OAuth_Custom_Merge_Roles": "Mesclar papéis do SSO", "Accounts_OAuth_Drupal": "Login do Drupal habilitado", "Accounts_OAuth_Drupal_callback_url": "Drupal oAuth2 Redirect URI", "Accounts_OAuth_Drupal_id": "Id. do cliente do Drupal oAuth2", @@ -118,6 +122,7 @@ "Accounts_OAuth_Gitlab_callback_url": "URL de Callback do GitLab", "Accounts_OAuth_Gitlab_id": "ID do GitLab", "Accounts_OAuth_Gitlab_identity_path": "Caminho de Identidade", + "Accounts_OAuth_Gitlab_merge_users": "Mesclar usuários", "Accounts_OAuth_Gitlab_secret": "Secret do cliente", "Accounts_OAuth_Google": "Login do Google", "Accounts_OAuth_Google_callback_url": "URL de Callback do Google", @@ -132,7 +137,10 @@ "Accounts_OAuth_Meteor_id": "ID do Meteor", "Accounts_OAuth_Meteor_secret": "Secret do Meteor", "Accounts_OAuth_Nextcloud": "OAuth Habilitado", + "Accounts_OAuth_Nextcloud_callback_url": "URL de retorno de chamada do Nextcloud", + "Accounts_OAuth_Nextcloud_id": "ID do Nextcloud", "Accounts_OAuth_Nextcloud_secret": "Secret do cliente", + "Accounts_OAuth_Nextcloud_URL": "URL do servidor Nextcloud", "Accounts_OAuth_Proxy_host": "Proxy Host", "Accounts_OAuth_Proxy_services": "Serviços Proxy", "Accounts_OAuth_Tokenpass": "Login do Tokenpass", @@ -195,6 +203,8 @@ "Accounts_Directory_DefaultView": "Lista de diretório padrão", "Accounts_SetDefaultAvatar": "Definir Avatar Padrão", "Accounts_SetDefaultAvatar_Description": "Tenta determinar o avatar padrão com base em OAuth Account ou Gravatar", + "Accounts_Set_Email_Of_External_Accounts_as_Verified": "Definir o email das contas externas como verificado", + "Accounts_Set_Email_Of_External_Accounts_as_Verified_Description": "Contas criadas por serviços externos, tais como LDAP, OAth, etc, terão o email verificado automaticamente", "Accounts_ShowFormLogin": "Mostrar formulário de login padrão", "Accounts_TwoFactorAuthentication_By_Email_Enabled": "Ativar autenticação de dois fatores por Email", "Accounts_TwoFactorAuthentication_By_Email_Enabled_Description": "Usuários com email verificado e com a opção habilitada em seu perfil receberão um email com um código temporário para autorizar certas ações como o login, salvar o perfil, etc.", @@ -250,6 +260,7 @@ "Advocacy": "Apoio dado", "After_OAuth2_authentication_users_will_be_redirected_to_this_URL": "Após a autenticação OAuth2, os usuários serão redirecionados para esta URL", "Agent": "Agente", + "Agent_Info": "Informações do Agente", "Agents": "Agentes", "Agent_added": "Agente adicionado", "Agent_removed": "Agente removido", @@ -312,6 +323,7 @@ "API_Enable_CORS": "Ativar CORS", "API_Enable_Direct_Message_History_EndPoint": "Habilitar o histórico do histórico de mensagens diretas", "API_Enable_Direct_Message_History_EndPoint_Description": "Isso permite o `/ api / v1 / im.history.others` que permite a visualização de mensagens diretas enviadas por outros usuários que o chamador não faz parte.", + "API_Enable_Rate_Limiter": "Ativar limitador de taxa", "API_Enable_Rate_Limiter_Dev": "Ativar limitador de taxa em desenvolvimento", "API_Enable_Rate_Limiter_Dev_Description": "Deve limitar a quantidade de chamadas para os endpoints no ambiente de desenvolvimento?", "API_Enable_Rate_Limiter_Limit_Calls_Default": "Número padrão de chamadas para o limitador de taxa", @@ -354,6 +366,7 @@ "App_status_disabled": "Desativado", "App_status_error_disabled": "Desativado: erro não detectado", "App_status_initialized": "Inicializado", + "App_status_invalid_license_disabled": "Desativado: Licença Inválida", "App_status_invalid_settings_disabled": "Desativado: configuração necessária", "App_status_manually_disabled": "Desativado: manualmente", "App_status_manually_enabled": "Habilitado", @@ -361,6 +374,7 @@ "App_support_url": "url de suporte", "App_Url_to_Install_From": "Install from URL", "App_Url_to_Install_From_File": "Instalar a partir de arquivo", + "App_user_not_allowed_to_login": "Os usuários de aplicativo não têm permissão para se autenticar diretamente.", "Appearance": "Aparência", "Application_added": "Aplicação adicionada", "Application_Name": "Nome da Aplicação", @@ -370,10 +384,22 @@ "Apps": "Apps", "Apps_Engine_Version": "Versão da Apps Engine", "Apps_Framework_Development_Mode": "Habilitar modo de desenvolvimento", + "Apps_Framework_Development_Mode_Description": "O modo de desenvolvimento permite a instalação de aplicativos que não são do Marketplace do Rocket.Chat.", "Apps_Framework_enabled": "Ativar o App Framework", "Apps_Game_Center": "Game Center", + "Apps_Game_Center_Back": "Voltar ao Game Center", "Apps_Game_Center_enabled": "Habilitar Game Center", + "Apps_Marketplace_Deactivate_App_Prompt": "Você quer mesmo desativar este aplicativo?", + "Apps_Marketplace_Modify_App_Subscription": "Modificar a Subscrição", + "Apps_Marketplace_Uninstall_App_Prompt": "Você quer mesmo desinstalar este aplicativo?", + "Apps_Marketplace_Uninstall_Subscribed_App_Anyway": "Desinstalar mesmo assim", + "Apps_Marketplace_Login_Required_Title": "Login do Marketplace Obrigatório", + "Apps_Marketplace_pricingPlan_monthly": "preço/mês", + "Apps_Marketplace_pricingPlan_monthly_perUser": "preço/mês por usuário", + "Apps_Marketplace_pricingPlan_yearly": "preço/ano", + "Apps_Marketplace_pricingPlan_yearly_perUser": "preço/ano por usuário", "Apps_Settings": "Configurações da aplicação", + "Apps_User_Already_Exists": "O nome de usuário \"__username__\" já está em uso. Escolha outro nome de usuário ou remova o usuário com este nome para instalar o aplicativo.", "Apps_WhatIsIt": "Apps: o que são eles?", "Apps_WhatIsIt_paragraph1": "Um novo ícone na área de administração! O que significa e quais são as aplicações?", "Apps_WhatIsIt_paragraph2": "Em primeiro lugar, Apps neste contexto não se referem às aplicações para dispositivos móveis. Na verdade, seria melhor pensar nelas em termos de plugins ou integrações avançadas.", @@ -432,8 +458,12 @@ "Auto_Translate": "Traduzir automaticamente", "AutoTranslate_APIKey": "Key API", "AutoTranslate_Change_Language_Description": "Alterar o idioma de auto-tradução não traduz mensagens anteriores.", + "AutoTranslate_DeepL": "DeepL", "AutoTranslate_Enabled": "Habilitar Auto-Translate", "AutoTranslate_Enabled_Description": "Habilitar a auto-tradução implicará em permitir às pessoas com a permissão auto-translate que tenham todas as suas mensagens automaticamente traduzidas para seu idioma. Taxas podem ser cobradas, veja a Documentação do Google", + "AutoTranslate_Google": "Google", + "AutoTranslate_Microsoft": "Microsoft", + "AutoTranslate_ServiceProvider": "Provedor de serviço", "Available": "Disponível", "Available_agents": "Agentes disponíveis", "Avatar": "Avatar", @@ -467,6 +497,7 @@ "ban-user": "Usuário de Ban", "ban-user_description": "Permissão para proibir um usuário de um canal", "Beta_feature_Depends_on_Video_Conference_to_be_enabled": "Funcionalidade Beta! Depende que Vídeo Conferência esteja habilitado", + "Better": "Melhor", "Best_first_response_time": "Melhor primeiro tempo de resposta", "Block_User": "Bloquear usuário", "Blockchain": "Blockchain", @@ -489,6 +520,8 @@ "Broadcasting_enabled": "Broadcasting Habilitado", "Broadcasting_media_server_url": "URL do servidor de mídia Broadcasting", "Browse_Files": "Procurar arquivos", + "Browser_does_not_support_audio_element": "O seu navegador não é compatível com o elemento de áudio", + "Browser_does_not_support_video_element": "O seu navegador não é compatível com o elemento de vídeo", "Bugsnag_api_key": "Chave da API Bugsnag", "Build_Environment": "Construir ambiente", "bulk-register-user": "Bulk Criar canais", @@ -552,6 +585,7 @@ "Channels_list": "Lista de canais públicos", "Chat_button": "Botão do chat", "Chat_closed": "Chat encerrado", + "Chat_closed_by_agent": "Chat encerrado pelo agente", "Chat_closed_successfully": "Chat encerrado com sucesso", "Chat_Now": "Converse agora", "Chat_window": "Janela de chat", @@ -605,6 +639,7 @@ "Chatpal_Welcome": "Aproveite sua busca!", "Chatpal_Window_Size": "Tamanho da janela do índice", "Chatpal_Window_Size_Description": "O tamanho das janelas de índice em horas (no bootstrapping)", + "Check_Progress": "Verifique o progresso", "Choose_a_room": "Escolha uma sala", "Choose_messages": "Escolha mensagens", "Choose_the_alias_that_will_appear_before_the_username_in_messages": "Escolha o alias que aparecerá antes do nome de usuário nas mensagens.", @@ -623,6 +658,7 @@ "Click_here_to_view_and_copy_your_password": "Clique aqui para ver e copiar sua senha.", "Click_the_messages_you_would_like_to_send_by_email": "Clique nas mensagens que você gostaria de enviar por e-mail", "Click_to_join": "Clique para se juntar!", + "Click_to_load": "Clique para carregar", "Client_ID": "ID do Cliente", "Client_Secret": "Segredo do Cliente", "Clients_will_refresh_in_a_few_seconds": "Os clientes irão atualizar em poucos segundos", @@ -639,9 +675,14 @@ "Closed_by_visitor": "Encerrado pelo visitante", "Closing_chat": "Encerrando chat", "Cloud": "Nuvem", + "Cloud_Register_manually": "Registre manualmente", + "Cloud_register_success": "A sua área de trabalho foi registrada com sucesso!", + "Cloud_register_error": "Houve um erro ao processar sua solicitação. Por favor tente novamente mais tarde. ", "Cloud_connect": "Rocket.Chat Cloud Connect", + "Cloud_connect_support": "Se você ainda não recebeu um e-mail de registro, verifique se o seu e-mail está atualizado acima. Se você ainda tiver problemas, entre em contato com o suporte em", "Cloud_what_is_it": "O que é isso?", "Cloud_what_is_it_description": "O Rocket.Chat Cloud Connect permite que você conecte seu workspace Rocket.Chat auto-hospedado à nossa nuvem. Fazer isso permite que você gerencie suas licenças, Faturamento e Suporte no Rocket.Chat Cloud.", + "Cloud_what_is_it_services_like": "Serviços como:", "Cloud_login_to_cloud": "Login do o Rocket.Chat Cloud", "Cloud_address_to_send_registration_to": "Endereço para enviar seu e-mail de registro na Cloud.", "Cloud_update_email": "Atualizar email", @@ -1566,6 +1607,7 @@ "if_they_are_from": "(se eles são de %s)", "If_this_email_is_registered": "Se este e-mail estiver cadastrado, enviaremos instruções sobre como redefinir sua senha. Se você não receber um e-mail em breve, volte e tente novamente.", "If_you_are_sure_type_in_your_password": "Se você tem certeza, digite sua senha:", + "Members_List": "Lista de Membros", "If_you_are_sure_type_in_your_username": "Se você tem certeza, digite seu nome de usuário:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Se você não tiver um, envie um e-mail para [omni@rocket.chat] (mailto: omni@rocket.chat) para obter o seu.", "If_you_didnt_ask_for_reset_ignore_this_email": "Se você não solicitou a redefinição de sua senha, ignore este e-mail.", @@ -1989,6 +2031,7 @@ "Mail_Message_No_messages_selected_select_all": "Você não selecionou nenhuma mensagem", "Mail_Messages": "Mensagens de E-mail", "Mail_Messages_Instructions": "Escolher as mensagens que deseja enviar via e-mail, clicando nas mensagens", + "Room_uploaded_file_list": "Lista de arquivos", "Mail_Messages_Subject": "Aqui está uma parte selecionada de %s mensagens", "Mailer": "Mailer", "Mailer_body_tags": "Você deve usar [unsubscribe] como link para desinscrever-se.
        Você pode usar [name], [fname], [lname] para utilizar o nome completo, primeiro nome ou último nome, respectivamente.
        Você pode usar [email] para o email do usuário.", @@ -2619,7 +2662,6 @@ "Room_type_changed_successfully": "Tipo de sala alterado com sucesso", "Room_type_of_default_rooms_cant_be_changed": "Esta é uma sala padrão e o tipo não pode ser alterado, consulte o seu administrador.", "Room_unarchived": "Sala desarquivada", - "Room_uploaded_file_list": "Lista de arquivos", "Room_uploaded_file_list_empty": "Nenhum arquivo disponível", "Rooms": "Salas", "Routing": "Roteamento", @@ -3034,6 +3076,7 @@ "Trigger_Words": "Palavras Gatilho", "Triggers": "Gatilhos", "True": "Sim", + "Troubleshoot_Disable_Notifications": "Desativar as notificações", "Tuesday": "terça", "Turn_OFF": "Desligar", "Turn_ON": "Ligar", diff --git a/packages/rocketchat-i18n/i18n/pt.i18n.json b/packages/rocketchat-i18n/i18n/pt.i18n.json index 6cbc7aee7b23..1dd71c48a532 100644 --- a/packages/rocketchat-i18n/i18n/pt.i18n.json +++ b/packages/rocketchat-i18n/i18n/pt.i18n.json @@ -1533,6 +1533,7 @@ "if_they_are_from": "(se eles são de %s)", "If_this_email_is_registered": "Se este e-mail estiver cadastrado, vamos enviar instruções de como pode redefinir a sua senha. Se não receber um e-mail em breve, volte e tente novamente.", "If_you_are_sure_type_in_your_password": "Se tem certeza, digite sua senha:", + "Members_List": "Lista de Membros", "If_you_are_sure_type_in_your_username": "Se tem certeza, digite seu nome de utilizador:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Se não tiver um, envie um e-mail para [omni@rocket.chat] (mailto: omni@rocket.chat) para obter o seu.", "If_you_didnt_ask_for_reset_ignore_this_email": "Se você não solicitou a redefinição de sua senha, ignore este e-mail.", @@ -1943,6 +1944,7 @@ "Mail_Message_No_messages_selected_select_all": "Não selecionou nenhuma mensagem", "Mail_Messages": "Mensagens de E-mail", "Mail_Messages_Instructions": "Escolher as mensagens que deseja enviar via e-mail, clicando nas mensagens", + "Room_uploaded_file_list": "Lista de ficheiros", "Mail_Messages_Subject": "Aqui está uma parte seleccionada de %s mensagens", "Mailer": "Mailer", "Mailer_body_tags": "Deve usar [unsubscribe] como link para cancelar a subscrição.
        Pode usar [name], [fname], [lname] para utilizar o nome completo, primeiro nome ou último nome, respectivamente.
        Pode usar [email] para o email do utilizador.", @@ -1987,7 +1989,6 @@ "Max_length_is": "O comprimento máximo é %s", "Media": "Média", "Medium": "Médio", - "Members_List": "Lista de Membros", "mention-all": "Mencionar todos", "mention-all_description": "Permissão para usar a menção @todos", "mention-here": "Mencionar aqui", @@ -2534,7 +2535,6 @@ "Room_type_changed_successfully": "Tipo de sala alterado com sucesso", "Room_type_of_default_rooms_cant_be_changed": "Esta é uma sala padrão e o tipo não pode ser alterado, consulte o seu administrador.", "Room_unarchived": "Sala desarquivada", - "Room_uploaded_file_list": "Lista de ficheiros", "Room_uploaded_file_list_empty": "Nenhum ficheiro disponível", "Rooms": "Salas", "Routing": "Roteamento", @@ -2935,6 +2935,7 @@ "Trigger_Words": "Palavras Gatilho", "Triggers": "Gatilhos", "True": "Verdade", + "Troubleshoot_Disable_Notifications": "Desactivar notificações", "Tuesday": "Terça-feira", "Turn_OFF": "Desligar", "Turn_ON": "Ligar", diff --git a/packages/rocketchat-i18n/i18n/ro.i18n.json b/packages/rocketchat-i18n/i18n/ro.i18n.json index 47c64f2b4fa1..302daa372c8b 100644 --- a/packages/rocketchat-i18n/i18n/ro.i18n.json +++ b/packages/rocketchat-i18n/i18n/ro.i18n.json @@ -1298,6 +1298,7 @@ "if_they_are_from": "(dacă sunt din %s)", "If_this_email_is_registered": "Dacă acest e-mail este înregistrat, vă vom trimite instrucțiuni despre resetarea parolei. Dacă în scurt timp nu primiți un e-mail, reveniți și încercați din nou.", "If_you_are_sure_type_in_your_password": "Dacă sunteți sigur că tipul în parola:", + "Members_List": "Lista de membri", "If_you_are_sure_type_in_your_username": "Dacă sunteți sigur că tipul numele de utilizator:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Dacă nu aveți niciunul, trimiteți un e-mail la [omni@rocket.chat] (mailto: omni@rocket.chat) pentru a obține a ta.", "Iframe_Integration": "Integrarea în cazul ramei", @@ -1670,6 +1671,7 @@ "Mail_Message_No_messages_selected_select_all": "Nu ați selectat niciun mesaj", "Mail_Messages": "Mesaje Email", "Mail_Messages_Instructions": "Alegeți ce mesaje doriți să trimiteți prin e-mail făcând clic pe ele", + "Room_uploaded_file_list": "Lista de fișiere", "Mail_Messages_Subject": "Iată o parte din %s mesaje", "Mailer": "Mailer", "Mailer_body_tags": "Trebuie să folosiți [unsubscribe] pentru link-ul de unsuscribe.
        Puteți utiliza [name], [fname], [lname] pentru numele întreg, prenume respectiv nume.
        Puteți folosi [email] pentru e-mailul utilizatorului.", @@ -1711,7 +1713,6 @@ "Max_length_is": "Lungimea maximă este%s", "Media": "Mass-media", "Medium": "Mediu", - "Members_List": "Lista de membri", "mention-all": "Menționați pe toate", "mention-all_description": "Permisiunea de a utiliza mențiunea @all", "mention-here": "Menționați aici", @@ -2203,7 +2204,6 @@ "Room_type_changed_successfully": "Tipul de cameră a fost schimbat cu succes", "Room_type_of_default_rooms_cant_be_changed": "Aceasta este o cameră implicită și tipul nu poate fi modificat, consultați administratorul dvs.", "Room_unarchived": "Cameră dezarhivată", - "Room_uploaded_file_list": "Lista de fișiere", "Room_uploaded_file_list_empty": "Niciun fișier disponibil.", "Rooms": "Camere", "run-import": "Rulați importul", @@ -2558,6 +2558,7 @@ "Trigger_Words": "Cuvinte de declanșare", "Triggers": "Declanșatori", "True": "Adevărat", + "Troubleshoot_Disable_Notifications": "Dezactivați notificările", "Tuesday": "Marți", "Turn_OFF": "Opriți", "Turn_ON": "Aprinde", diff --git a/packages/rocketchat-i18n/i18n/ru.i18n.json b/packages/rocketchat-i18n/i18n/ru.i18n.json index 6e373f222c31..80dee4ae0e55 100644 --- a/packages/rocketchat-i18n/i18n/ru.i18n.json +++ b/packages/rocketchat-i18n/i18n/ru.i18n.json @@ -1628,6 +1628,7 @@ "if_they_are_from": "(если они из %s)", "If_this_email_is_registered": "Если этот адрес электронной почты зарегистрирован, мы отправим на него инструкцию по сбросу пароля. Если вы не получили электронное сообщение, попробуйте снова позже.", "If_you_are_sure_type_in_your_password": "Если вы уверены, введите пароль:", + "Members_List": "Пользователи", "If_you_are_sure_type_in_your_username": "Если вы уверены, введите ваш логин:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Если у вас нет одного, отправьте электронное сообщение на адрес [omni@rocket.chat] (mailto: omni@rocket.chat), чтобы получить свой.", "If_you_didnt_ask_for_reset_ignore_this_email": "Если вы не просили сбросить пароль, вы можете проигнорировать это письмо.", @@ -2085,6 +2086,7 @@ "Mail_Message_No_messages_selected_select_all": "Вы не выбрали ни одного сообщения. ", "Mail_Messages": "Почтовые сообщения", "Mail_Messages_Instructions": "Нажимая на сообщения, выберите, какие из них вы хотите отправить по электронной почте", + "Room_uploaded_file_list": "Список файлов канала", "Mail_Messages_Subject": "Это выделенная часть из %s сообщений", "Mailer": "Отправка почты", "Mailer_body_tags": "Вам необходимо использовать [unsubscribe] как ссылку для отписки.
        Вы можете использовать [name], [fname] и [lname] в качестве полного имени пользователя, имени или фамилии.
        Вы можете использовать [email] для адреса электронной почты пользователя.", @@ -2151,7 +2153,6 @@ "Maximum": "Максимум", "Media": "СМИ", "Medium": "Обычный", - "Members_List": "Пользователи", "mention-all": "Упоминать всех", "mention-all_description": "Разрешение на использование упоминания @all", "mention-here": "Упоминание Here", @@ -2755,7 +2756,6 @@ "Room_type_changed_successfully": "Тип комнаты успешно изменён", "Room_type_of_default_rooms_cant_be_changed": "Эта комната является комнатой по умолчанию и её тип не может быть изменён. Пожалуйста, обратитесь к вашему администратору.", "Room_unarchived": "Комната разархивирована", - "Room_uploaded_file_list": "Список файлов канала", "Room_uploaded_file_list_empty": "Нет доступных файлов", "Rooms": "Комнаты", "Routing": "Маршрутизация", @@ -3213,6 +3213,7 @@ "Trigger_Words": "Слова-триггеры", "Triggers": "Триггеры", "True": "Да", + "Troubleshoot_Disable_Notifications": "Отключить уведомления", "Tuesday": "Вторник", "Turn_OFF": "Выключить", "Turn_ON": "Включить", diff --git a/packages/rocketchat-i18n/i18n/sk-SK.i18n.json b/packages/rocketchat-i18n/i18n/sk-SK.i18n.json index 4948c957e347..cb79f7bcb9c5 100644 --- a/packages/rocketchat-i18n/i18n/sk-SK.i18n.json +++ b/packages/rocketchat-i18n/i18n/sk-SK.i18n.json @@ -3,7 +3,9 @@ "500": "Interná chyba servera", "#channel": "#kanál", "0_Errors_Only": "0 - Len chyby", + "12_Hour": "12 hodinový formát času", "1_Errors_and_Information": "1 - Chyby a informácie", + "24_Hour": "24 hodinový formát času", "2_Erros_Information_and_Debug": "2 - Chyby, informácie a ladenie", "@username": "@používateľ", "@username_message": "@používateľ ", @@ -1297,6 +1299,7 @@ "if_they_are_from": "(ak sú z %s)", "If_this_email_is_registered": "Ak je tento e-mail zaregistrovaný, pošleme pokyny na obnovenie hesla. Ak v krátkom čase nedostanete e-mail, vráťte sa a skúste to znova.", "If_you_are_sure_type_in_your_password": "Ak ste si istí, zadajte heslo:", + "Members_List": "Zoznam členov", "If_you_are_sure_type_in_your_username": "Ak ste si istí, napíšte svoje používateľské meno:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Ak nemáte jeden, pošlite e-mail na adresu [omni@rocket.chat] (mailto: omni@rocket.chat), aby ste dostali svoje.", "Iframe_Integration": "Integrácia medzi rámcami", @@ -1669,6 +1672,7 @@ "Mail_Message_No_messages_selected_select_all": "Nevybrali ste žiadne správy", "Mail_Messages": "Poštové správy", "Mail_Messages_Instructions": "Vyberte, ktoré správy chcete odoslať e-mailom kliknutím na správy", + "Room_uploaded_file_list": "Zoznam súborov", "Mail_Messages_Subject": "Tu je vybratá časť správ%s", "Mailer": "Mailer", "Mailer_body_tags": "Je nutné použiť [unsubscribe] pre vloženie odkazu na odhlásenie.
        Môžete tiež použiť [name], [fname], [lname] pre používateľské meno, krstné meno a priezvisko.
        Môžete použiť [email] pre e-mail používateľa.", @@ -1710,7 +1714,6 @@ "Max_length_is": "Maximálna dĺžka je%s", "Media": "Media", "Medium": "stredná", - "Members_List": "Zoznam členov", "mention-all": "Zmieniť všetko", "mention-all_description": "Povolenie používať @ všetku zmienku", "mention-here": "Zmiente sa tu", @@ -2202,7 +2205,6 @@ "Room_type_changed_successfully": "Typ izby sa úspešne zmenil", "Room_type_of_default_rooms_cant_be_changed": "Toto je predvolená miestnosť a typ sa nedá zmeniť, prosím, kontaktujte správcu.", "Room_unarchived": "Izba nevybavená", - "Room_uploaded_file_list": "Zoznam súborov", "Room_uploaded_file_list_empty": "Nie sú k dispozícii žiadne súbory.", "Rooms": "izby", "run-import": "Spustite Import", @@ -2557,6 +2559,7 @@ "Trigger_Words": "Spúšťacie slová", "Triggers": "Triggers", "True": "pravdivý", + "Troubleshoot_Disable_Notifications": "Vypnutie upozornení", "Tuesday": "utorok", "Turn_OFF": "Vypnúť", "Turn_ON": "Zapnúť", @@ -2618,7 +2621,7 @@ "Use_initials_avatar": "Použite svoje iniciály používateľského mena", "Use_minor_colors": "Použite menšiu farebnú paletu (predvolené hodnoty zdedia hlavné farby)", "Use_service_avatar": "Použite%s avatar", - "Verification_Email": "Kliknutím na tlačidlo tuoverte svoj účet.", + "Verification_Email": "Kliknite sem pre potvrdenie svojho účtu.", "Use_this_username": "Použite toto používateľské meno", "Use_uploaded_avatar": "Použiť odovzdaný avatar", "Use_url_for_avatar": "Použite adresu URL pre avatar", @@ -2700,7 +2703,7 @@ "Username_description": "Používateľské meno sa používa na umožnenie ostatným, aby vás spomenuli v správach.", "Username_doesnt_exist": "Používateľské meno `%s` neexistuje.", "Username_ended_the_OTR_session": "__username__ ukončil reláciu OTR", - "Username_invalid": "%s nie je platné používateľské meno, používajú sa iba písmená, čísla, tečky, pomlčky a podčiarknuté", + "Username_invalid": "%s nie je platné používateľské meno,
        použite len písmená, čísla, bodky, pomlčky a podčiarkovníky", "Username_is_already_in_here": "`@%s` je už tu.", "Username_is_not_in_this_room": "Používateľ `#%s` nie je v tejto miestnosti.", "Username_Placeholder": "Zadajte používateľské mená ...", diff --git a/packages/rocketchat-i18n/i18n/sl-SI.i18n.json b/packages/rocketchat-i18n/i18n/sl-SI.i18n.json index f0049beaf45e..56fae77199aa 100644 --- a/packages/rocketchat-i18n/i18n/sl-SI.i18n.json +++ b/packages/rocketchat-i18n/i18n/sl-SI.i18n.json @@ -1297,6 +1297,7 @@ "if_they_are_from": "(če so iz %s)", "If_this_email_is_registered": "Če je ta e-poštni naslov registriran, vam bomo poslali navodila za ponastavitev gesla. Če elektronske pošte ne boste prejeli v kratkem, prosimo, poskusite znova. ", "If_you_are_sure_type_in_your_password": "Če ste prepričani, vtipkajte svoje geslo:", + "Members_List": "Seznam članov", "If_you_are_sure_type_in_your_username": "Če ste prepričani, vtipkajte svoje uporabniško ime:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Če ga nimate, pošljite elektronsko pošto na [omni@rocket.chat](mailto:omni@rocket.chat), da ga prejmete. ", "Iframe_Integration": "Integracija Iframe", @@ -1668,6 +1669,7 @@ "Mail_Message_No_messages_selected_select_all": "Niste izbrali nobenih sporočil", "Mail_Messages": "Poštna sporočila", "Mail_Messages_Instructions": "S klikom na sporočilo izberite, katero sporočilo želite poslati preko e-pošte", + "Room_uploaded_file_list": "Seznam datotek", "Mail_Messages_Subject": "Tukaj je izbran delež %s sporočil", "Mailer": "Pošiljalnik", "Mailer_body_tags": "Če želite dostopati do povezave za odpoved naročnine, morate uporabiti možnost [unsubscribe].
        Za uporabnikovo polno ime, ime ali priimek lahko posamezno uporabite možnosti [name], [fname], [lname].
        Za uporabnikov e-naslov lahko uporabite možnost [email].", @@ -1709,7 +1711,6 @@ "Max_length_is": "Maksimalna dolžina je %s", "Media": "Mediji", "Medium": "Srednje", - "Members_List": "Seznam članov", "mention-all": "Omeni vse", "mention-all_description": "Dovoljenje za uporabo omembe @all", "mention-here": "Omeni tukaj", @@ -2201,7 +2202,6 @@ "Room_type_changed_successfully": "Tip sobe je bil uspešno spremenjen", "Room_type_of_default_rooms_cant_be_changed": "To je privzeta soba in vrste ni mogoče spremeniti, posvetujte se s svojim skrbnikom.", "Room_unarchived": "Soba je odarhivirana", - "Room_uploaded_file_list": "Seznam datotek", "Room_uploaded_file_list_empty": "Na voljo ni nobene datoteke.", "Rooms": "Sobe", "run-import": "Zaženite uvoz", @@ -2556,6 +2556,7 @@ "Trigger_Words": "Sprožilne besede", "Triggers": "Sprožilci", "True": "Pravilno", + "Troubleshoot_Disable_Notifications": "Onemogoči obvestila", "Tuesday": "Torek", "Turn_OFF": "Izklopi", "Turn_ON": "Vklopi", diff --git a/packages/rocketchat-i18n/i18n/sq.i18n.json b/packages/rocketchat-i18n/i18n/sq.i18n.json index 6738c098de66..304e8177dab8 100644 --- a/packages/rocketchat-i18n/i18n/sq.i18n.json +++ b/packages/rocketchat-i18n/i18n/sq.i18n.json @@ -1298,6 +1298,7 @@ "if_they_are_from": "(nëse janë nga %s)", "If_this_email_is_registered": "Nëse kjo e-mail është regjistruar, ne do të dërgojmë udhëzime se si të rivendosni fjalëkalimin tuaj. Nëse nuk merrni një email së shpejti, lutemi të ktheheni dhe provoni përsëri.", "If_you_are_sure_type_in_your_password": "Nëse ju jeni të sigurt shkruani fjalëkalimin tuaj:", + "Members_List": "Lista e Anëtarëve", "If_you_are_sure_type_in_your_username": "Nëse ju jeni të sigurt shkruani emrin tuaj:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Nëse ju nuk keni një të dërguar një email tek [omni@rocket.chat] (mailto: omni@rocket.chat) për të marrë tuajat.", "Iframe_Integration": "Iframe Integration", @@ -1670,6 +1671,7 @@ "Mail_Message_No_messages_selected_select_all": "Ju nuk keni zgjedhur ndonjë porosi", "Mail_Messages": "Mesazhet Mail", "Mail_Messages_Instructions": "Zgjidhni cilat mesazhe ju dëshironi të dërgoni përmes emailit duke klikuar mesazhet", + "Room_uploaded_file_list": "Lista Files", "Mail_Messages_Subject": "Këtu është një pjesë e zgjedhur e mesazheve %s", "Mailer": "postues", "Mailer_body_tags": "Ju duhet të përdorni [unsubscribe] për lidhjen Çabonimi.
        Ju mund të përdorni [name], [fname], [lname] për emrin e plotë të përdoruesit, emrin e parë ose emrin e fundit, respektivisht.
        Ju mund të përdorni [email] për email të përdoruesit.", @@ -1711,7 +1713,6 @@ "Max_length_is": "Gjatësia maksimale është %s", "Media": "Media", "Medium": "medium", - "Members_List": "Lista e Anëtarëve", "mention-all": "Përmend të gjitha", "mention-all_description": "Leja për të përdorur të gjitha përmendur", "mention-here": "Kujtoni këtu", @@ -2203,7 +2204,6 @@ "Room_type_changed_successfully": "Lloji Room ndryshuar me sukses", "Room_type_of_default_rooms_cant_be_changed": "Kjo është një dhomë e paracaktuar dhe tipi nuk mund të ndryshohet, ju lutemi konsultohuni me administratorin tuaj.", "Room_unarchived": "Room paarkivuar", - "Room_uploaded_file_list": "Lista Files", "Room_uploaded_file_list_empty": "Nuk ka fotografi në dispozicion.", "Rooms": "Dhomat", "run-import": "Run Import", @@ -2558,6 +2558,7 @@ "Trigger_Words": "Fjalët këmbëz", "Triggers": "shkakton", "True": "I vërtetë", + "Troubleshoot_Disable_Notifications": "Çaktivizo njoftimet", "Tuesday": "e martë", "Turn_OFF": "Fillo", "Turn_ON": "Ndez", diff --git a/packages/rocketchat-i18n/i18n/sr.i18n.json b/packages/rocketchat-i18n/i18n/sr.i18n.json index a6b128261f09..36cc8e6d6046 100644 --- a/packages/rocketchat-i18n/i18n/sr.i18n.json +++ b/packages/rocketchat-i18n/i18n/sr.i18n.json @@ -1,14 +1,12 @@ { - "403": "забрањен", - "500": "Интернал Сервер Еррор", + "403": "Забрањен", + "500": "Интерна грешка сервера", "#channel": "#канал", - "0_Errors_Only": "0 - Грешке Само", + "0_Errors_Only": "0 - Само грешке", "1_Errors_and_Information": "1 - Грешке и информације", - "2_Erros_Information_and_Debug": "2 - Еррос, информације и отклањање грешака", + "2_Erros_Information_and_Debug": "2 - Грешке, информације и отклањање грешака", "@username": "@корисничко име", "@username_message": "@ корисничко име ", - "__username__is_no_longer__role__defined_by__user_by_": "__усернаме__ више није __роле__, од __усер_би__", - "__username__was_set__role__by__user_by_": "__усернаме__ је постављен __роле__ од __усер_би__", "Accept": "Прихвати", "Accept_incoming_livechat_requests_even_if_there_are_no_online_agents": "Прихватите долазеће захтјеве ливецхат чак и ако нема онлине агената", "Accept_with_no_online_agents": "Прихватите без онлајн агента", @@ -17,32 +15,32 @@ "access-permissions": "Екран дозвола приступа", "access-permissions_description": "Измени дозволе за различите улоге.", "Access_not_authorized": "Приступ није овлашћен", - "Access_Token_URL": "УРЛ адреса токена приступа", - "Accessing_permissions": "pristup дозволе", - "Account_SID": "рачун СИД", - "Accounts": "рачуни", + "Access_Token_URL": "УРЛ адреса приступног токена", + "Accessing_permissions": "Приступне дозволе", + "Account_SID": "SID налога", + "Accounts": "Налози", "Accounts_Admin_Email_Approval_Needed_Default": "

        Корисник [име] ([емаил]) је регистрован.

        Молимо вас да проверите \"Администратор -_ЛХ_ХТМЛ_ЕНД> Корисници\" да бисте га активирали или избрисали.

        ", "Accounts_Admin_Email_Approval_Needed_Subject_Default": "Нови корисник је регистрован и потребан је одобрење", "Accounts_Admin_Email_Approval_Needed_With_Reason_Default": "

        Корисник [име] ([емаил]) је регистрован. \">

        Разлог: [разлог]

        Молимо вас да проверите \"Управа -_ЛХ_ХТМЛ_ЕНД> Корисници\" за активирање или брисање га.

        ", "Accounts_AllowAnonymousRead": "Дозволи Анонимно читање", "Accounts_AllowAnonymousWrite": "Дозволи Анонимни Врите", - "Accounts_AllowDeleteOwnAccount": "Омогућавају корисницима да избришете свој налог", - "Accounts_AllowedDomainsList": "Дозвољени домени Листа", + "Accounts_AllowDeleteOwnAccount": "Дозволи корисницима да обришу свој налог", + "Accounts_AllowedDomainsList": "Листа дозвољених домена", "Accounts_AllowedDomainsList_Description": "Зарезом одвојена листа дозвољених домена", - "Accounts_AllowEmailChange": "Дозволите Е-маил Цханге", - "Accounts_AllowPasswordChange": "Дозволи Пассворд Цханге", + "Accounts_AllowEmailChange": "Дозволи промену е-поште", + "Accounts_AllowPasswordChange": "Дозволи промену лозинке", "Accounts_AllowRealNameChange": "Дозволи промену имена", - "Accounts_AllowUserAvatarChange": "Дозволите Усер Аватар Цханге", - "Accounts_AllowUsernameChange": "Дозволи име Промена", - "Accounts_AllowUserProfileChange": "Дозволите Усер Профиле Цханге", + "Accounts_AllowUserAvatarChange": "Дозволите промену корисничког аватара", + "Accounts_AllowUsernameChange": "Дозволи промену корисничког имена", + "Accounts_AllowUserProfileChange": "Дозволи промену корисничког профила", "Accounts_AvatarCacheTime": "Аватар цацхе тиме", "Accounts_AvatarCacheTime_description": "Број секунди за који је протоколу за протокол речено да кешира слике слика.", - "Accounts_AvatarResize": "ресизе Аватари", - "Accounts_AvatarSize": "аватар величина", - "Accounts_BlockedDomainsList": "Блокиран доменов", + "Accounts_AvatarResize": "Промени величину аватара", + "Accounts_AvatarSize": "Величина аватара", + "Accounts_BlockedDomainsList": "Листа блокираних домена", "Accounts_BlockedDomainsList_Description": "Зарезом одвојена листа блокираних домена", - "Accounts_BlockedUsernameList": "Блокиран име Списак", - "Accounts_BlockedUsernameList_Description": "Зарезом одвојена листа блокираних корисници (осетљив на величину слова)", + "Accounts_BlockedUsernameList": "Листа блокираних корисничких имена", + "Accounts_BlockedUsernameList_Description": "Зарезом одвојена листа блокираних корисничких имена (небитна величина слова)", "Accounts_CustomFields_Description": "Требало би бити валидан ЈСОН гдје су кључеви имена поља која садрже речник за подешавања поља. Пример:
        {\n\"улога\": {\n\"тип\": \"изаберите\",\n\"дефаултВалуе\": \"студент\",\n\"опције\": [\"наставник\", \"студент\"],\n\"обавезно\": тачно,\n\"модифиРецордФиелд\": {\n\"арраи\": труе,\n\"поље\": \"улога\"\n}\n},\n\"твиттер\": {\n\"тип\": \"текст\",\n\"обавезно\": тачно,\n\"минЛенгтх\": 2,\n\"макЛенгтх\": 10\n}\n} ", "Accounts_CustomFieldsToShowInUserInfo": "Прилагођена поља која ће се приказати у корисничким информацијама", "Accounts_Default_User_Preferences": "Подразумеване корисничке поставке", @@ -51,75 +49,53 @@ "Accounts_Default_User_Preferences_mobileNotifications": "Подразумевана обавештења о мобилним нотификацијама", "Accounts_Default_User_Preferences_not_available": "Није успело преузимати корисничке опције, јер их још увек није подесио корисник", "Accounts_DefaultUsernamePrefixSuggestion": "Подразумевано предлошено корисничко име", - "Accounts_denyUnverifiedEmail": "Дени непроверене емаил", + "Accounts_denyUnverifiedEmail": "Одбиј непотврђене адресе е-поште", "Accounts_Email_Activated": "[име]

        Ваш налог је активиран.

        ", "Accounts_Email_Activated_Subject": "Рачун активиран", "Accounts_Email_Approved": "[име]

        Ваш налог је одобрен.

        ", "Accounts_Email_Approved_Subject": "Рачун одобрен", "Accounts_Email_Deactivated": "[име]

        Ваш налог је деактивиран.

        ", - "Accounts_Enrollment_Email_Default": "

        Добродошли у [Site_Name]

        Иди на [Site_URL] и покушати решење најбољи опен соурце цхат доступан данас!

        ", + "Accounts_Enrollment_Email_Default": "

        Добродошли на[Site_Name]

        Иди на [Site_URL] и испробај најбоље решење за ћаскање отвореног кода које је тренутно доступно!

        ", "Accounts_Email_Deactivated_Subject": "Рачун је деактивиран", - "Accounts_EmailVerification": "Е-маил Верификација", - "Accounts_EmailVerification_Description": "Направи сте сигурни имали исправне поставке СМТП да користе ову функцију", - "Accounts_Enrollment_Email_Subject_Default": "Велцоме то [Site_Name]", - "Accounts_Enrollment_Email": "Упис е-маил", - "Accounts_Enrollment_Email_Description": "Можете користити [name], [fname], [lname] за пуно име корисника, имену или презимену, респективно.
        Можете користити [email] е-поште корисника.", + "Accounts_EmailVerification": "Потврда е-поште", + "Accounts_EmailVerification_Description": "Потврдите да имате исправне SMTP параметре да би сте користили ову могућност", + "Accounts_Enrollment_Email_Subject_Default": "Добродошли на [Site_Name]", "Accounts_ForgetUserSessionOnWindowClose": "Заборавите корисничко сесије на прозору Затвори", - "Accounts_Iframe_api_method": "апи Метод", - "Accounts_Iframe_api_url": "АПИ УРЛ", - "Accounts_iframe_enabled": "omogućeno", - "Accounts_iframe_url": "УРЛ адреса iframe", - "Accounts_LoginExpiration": "Пријава истека у данима", - "Accounts_ManuallyApproveNewUsers": "Ручно одобрава нове Корисници", - "Accounts_OAuth_Custom_Authorize_Path": "овластити Патх", - "Accounts_OAuth_Custom_Button_Color": "дугме Боја", - "Accounts_OAuth_Custom_Button_Label_Color": "Дугме Боја текста", + "Accounts_Iframe_api_method": "Api метода", + "Accounts_Iframe_api_url": "API адреса", + "Accounts_iframe_enabled": "Омогућено", + "Accounts_iframe_url": "Iframe адреса", + "Accounts_LoginExpiration": "Истек пријаве у данима", + "Accounts_ManuallyApproveNewUsers": "Ручно одобри нове кориснике", + "Accounts_OAuth_Custom_Authorize_Path": "Путања ауторизације", + "Accounts_OAuth_Custom_Button_Color": "Боја дугмета", + "Accounts_OAuth_Custom_Button_Label_Color": "Боја текста дугмета", "Accounts_OAuth_Custom_Button_Label_Text": "Текст дугмета", - "Accounts_OAuth_Custom_Enable": "омогућити", - "Accounts_OAuth_Custom_id": "ид", - "Accounts_OAuth_Custom_Identity_Path": "идентитет Пут", + "Accounts_OAuth_Custom_Enable": "Омогући", + "Accounts_OAuth_Custom_id": "Id", + "Accounts_OAuth_Custom_Identity_Path": "Путања идентитета", "Accounts_OAuth_Custom_Identity_Token_Sent_Via": "Идентификован жетон Послато преко", - "Accounts_OAuth_Custom_Login_Style": "Пријава Стил", + "Accounts_OAuth_Custom_Login_Style": "Стил пријаве", "Accounts_OAuth_Custom_Merge_Users": "Споји кориснике", "Accounts_OAuth_Custom_Scope": "Обим", - "Accounts_OAuth_Custom_Secret": "тајна", - "Accounts_OAuth_Custom_Token_Path": "токен Пут", - "Accounts_OAuth_Custom_Token_Sent_Via": "Токен послата преко", + "Accounts_OAuth_Custom_Secret": "Тајна", + "Accounts_OAuth_Custom_Token_Path": "Путања токена", + "Accounts_OAuth_Custom_Token_Sent_Via": "Токен послат путем", "Accounts_OAuth_Custom_Username_Field": "Поље корисничког имена", - "Accounts_OAuth_Custom_Roles_Claim": "Име поља улоге / групе", + "Accounts_OAuth_Custom_Roles_Claim": "Име поља улоге/групе", "Accounts_OAuth_Drupal": "Друпал Логин Енаблед", "Accounts_OAuth_Drupal_callback_url": "Друпал оАутх2 Редирецт УРИ", "Accounts_OAuth_Drupal_id": "Друпал оАутх2 Клијент ИД", "Accounts_OAuth_Drupal_secret": "Друпал оАутх2 Цлиент Сецрет", - "Accounts_OAuth_Facebook": "Фацебоок логин", - "Accounts_OAuth_Facebook_callback_url": "Фацебоок УРЛ за повратни позив", - "Accounts_OAuth_Facebook_id": "ИД фацебоок апликација", - "Accounts_OAuth_Facebook_secret": "фацебоок Тајна", "Accounts_OAuth_Github": "ОАутх Омогућено", - "Accounts_OAuth_Github_callback_url": "Гитхуб УРЛ за повратни позив", "Accounts_OAuth_GitHub_Enterprise": "ОАутх Омогућено", - "Accounts_OAuth_GitHub_Enterprise_callback_url": "ГитХуб предузећа УРЛ за повратни позив", - "Accounts_OAuth_GitHub_Enterprise_id": "ИД клијента", - "Accounts_OAuth_GitHub_Enterprise_secret": "klijent Тајна", - "Accounts_OAuth_Github_id": "ИД клијента", - "Accounts_OAuth_Github_secret": "klijent Тајна", + "Accounts_OAuth_GitHub_Enterprise_id": "Ид клијента", + "Accounts_OAuth_GitHub_Enterprise_secret": "Тајна клијента", + "Accounts_OAuth_Github_id": "Ид клијента", + "Accounts_OAuth_Github_secret": "Тајна клијента", "Accounts_OAuth_Gitlab": "ОАутх Омогућено", - "Accounts_OAuth_Gitlab_callback_url": "ГитЛаб УРЛ за повратни позив", - "Accounts_OAuth_Gitlab_id": "ГитЛаб ИД", "Accounts_OAuth_Gitlab_identity_path": "идентитет Пут", - "Accounts_OAuth_Gitlab_secret": "klijent Тајна", - "Accounts_OAuth_Google": "гоогле Пријава", - "Accounts_OAuth_Google_callback_url": "Гоогле УРЛ за повратни позив", - "Accounts_OAuth_Google_id": "гоогле ИД", - "Accounts_OAuth_Google_secret": "гоогле Тајна", - "Accounts_OAuth_Linkedin": "ЛинкедИн Пријава", - "Accounts_OAuth_Linkedin_callback_url": "ЛинкедИн УРЛ за повратни позив", - "Accounts_OAuth_Linkedin_id": "ЛинкедИн ИД", - "Accounts_OAuth_Linkedin_secret": "ЛинкедИн Тајна", - "Accounts_OAuth_Meteor": "метеор Пријава", - "Accounts_OAuth_Meteor_callback_url": "Метеор УРЛ за повратни позив", - "Accounts_OAuth_Meteor_id": "метеор ИД", - "Accounts_OAuth_Meteor_secret": "метеор Тајна", + "Accounts_OAuth_Gitlab_secret": "Тајна клијента", "Accounts_OAuth_Nextcloud": "ОАутх Омогућено", "Accounts_OAuth_Nextcloud_secret": "klijent Тајна", "Accounts_OAuth_Proxy_host": "Проки Хост", @@ -128,18 +104,10 @@ "Accounts_OAuth_Tokenpass_callback_url": "Токенпасс Цаллбацк УРЛ", "Accounts_OAuth_Tokenpass_id": "Токенпасс Ид", "Accounts_OAuth_Tokenpass_secret": "Токенпасс Сецрет", - "Accounts_OAuth_Twitter": "твиттер Пријава", - "Accounts_OAuth_Twitter_callback_url": "Твиттер УРЛ за повратни позив", - "Accounts_OAuth_Twitter_id": "Твиттер Број", - "Accounts_OAuth_Twitter_secret": "твиттер Тајна", - "Accounts_OAuth_Wordpress": "УордПресс Пријава", "Accounts_OAuth_Wordpress_authorize_path": "овластити Патх", - "Accounts_OAuth_Wordpress_callback_url": "Вордпресс УРЛ за повратни позив", - "Accounts_OAuth_Wordpress_id": "ВордПресс ИД", "Accounts_OAuth_Wordpress_identity_path": "идентитет Пут", "Accounts_OAuth_Wordpress_identity_token_sent_via": "Идентификован жетон Послато преко", "Accounts_OAuth_Wordpress_scope": "Обим", - "Accounts_OAuth_Wordpress_secret": "УордПресс Тајна", "Accounts_OAuth_Wordpress_server_type_custom": "Обичај", "Accounts_OAuth_Wordpress_server_type_wordpress_com": "Вордпресс.цом", "Accounts_OAuth_Wordpress_server_type_wp_oauth_server": "ВП ОАутх Сервер Плугин", @@ -165,31 +133,28 @@ "Accounts_PasswordReset": "Ресетовање лозинке", "Accounts_Registration_AuthenticationServices_Default_Roles": "Уобичајене улоге за услуге провјере аутентичности", "Accounts_Registration_AuthenticationServices_Default_Roles_Description": "Подразумевани корисници улога (одвојени са зарезом) ће бити дати када се региструју преко услуга за потврђивање идентитета", - "Accounts_Registration_AuthenticationServices_Enabled": "Пријава са Аутхентицатион Сервицес", + "Accounts_Registration_AuthenticationServices_Enabled": "Регистрација путем сервиса за аутентификацију", "Accounts_RegistrationForm": "Образац за регистрацију", - "Accounts_RegistrationForm_Disabled": "онемогућен", - "Accounts_RegistrationForm_LinkReplacementText": "Образац за регистрацију Линк Замена Текст", - "Accounts_RegistrationForm_Public": "јавни", - "Accounts_RegistrationForm_Secret_URL": "сецрет УРЛ адреса", - "Accounts_RegistrationForm_SecretURL": "Образац за регистрацију Тајна УРЛ адреса", - "Accounts_RegistrationForm_SecretURL_Description": "Морате обезбедити случајни низ који ће бити додат на ваш регистрације УРЛ. Пример: хттпс://демо.роцкет.цхат/регистер/[secret_hash]", - "Accounts_RequireNameForSignUp": "Захтевају Име За Сигнуп", + "Accounts_RegistrationForm_Disabled": "Онемогућен", + "Accounts_RegistrationForm_Public": "Јавни", + "Accounts_RegistrationForm_Secret_URL": "Тајна УРЛ адреса", + "Accounts_RegistrationForm_SecretURL": "Тајна УРЛ адреса обрасца за регистрацију", + "Accounts_RequireNameForSignUp": "Захтева име за регистрацију", "Accounts_RequirePasswordConfirmation": "Захтевај потврду лозинке", "Accounts_SearchFields": "Поља за размишљање у потрази", "Accounts_SetDefaultAvatar": "Подеси подразумевану Аватар", "Accounts_SetDefaultAvatar_Description": "Покушава да одреди подразумевани аватар на основу ОАутх налога или Граватар", - "Accounts_ShowFormLogin": "Схов образац заснован Пријава", + "Accounts_ShowFormLogin": "Прикажи предефинисани образац пријаве", "Accounts_TwoFactorAuthentication_Enabled": "Омогућите Два аутентификацију фактора", "Accounts_TwoFactorAuthentication_MaxDelta": "Максимална Делта", - "Accounts_UserAddedEmail_Default": "

        Добродошли у [Site_Name]

        Иди на [Site_URL] и покушати решење најбољи опен соурце цхат доступан данас!

        Можете да се пријавите користећи свој емаил: [email] и лозинку: [password]. Можда ће бити потребно да га променимо после прве пријаве.", "Accounts_TwoFactorAuthentication_MaxDelta_Description": "Максимална Делта одређује колико токена важи у било ком тренутку. Токенс се генеришу сваких 30 секунди и важе за (30 * Макимум Делта) секунде. <ЛХ_ХТМЛ_ОПЕН_бр / _ЛХ_ХТМЛ_ЕНД> Пример: Ако је максимална вредност Делта подешена на 10, сваки токен може се користити до 300 секунди пре или након временске ознаке. Ово је корисно када сат клијента није исправно синхронизован са сервером.", - "Accounts_UseDefaultBlockedDomainsList": "Употреба Уобичајено блокираних домена Листа", - "Accounts_UseDNSDomainCheck": "Користи ДНС Домаин Цхецк", + "Accounts_UseDefaultBlockedDomainsList": "Користи предефинисану листу блокираних домена", + "Accounts_UseDNSDomainCheck": "Користи DNS проверу домена", "Accounts_UserAddedEmailSubject_Default": "Додати сте у [Site_Name]", "Accounts_UserAddedEmail_Description": "Можете користити следеће симболе:

        • [name], [fname], [lname] за пуно име корисника, имену или презимену, респективно.
        • [email] е-поште корисника.
        • [password] за лозинку корисника.
        • [Site_Name] и [Site_URL] за апликације Име и УРЛ респективно.
        ", - "Activate": "Активирати", + "Activate": "Активирај", "Activity": "Активност", - "Add": "додати", + "Add": "Додај", "add-oauth-service": "Додајте услугу Оаутх", "add-oauth-service_description": "Дозвола за додавање нове Оаутх услуге", "add-user": "Додати корисника", @@ -200,8 +165,7 @@ "add-user-to-joined-room": "Додај корисника било којем каналу", "add-user-to-joined-room_description": "Дозвола за додавање корисника тренутном каналу", "add-user_description": "Дозвола за додавање нових корисника на сервер преко екрана корисника", - "Add_agent": "Додај агент", - "Add_custom_oauth": "Додај прилагођени ОАутх", + "Add_agent": "Додај агента", "Add_Domain": "Адд Домаин", "Add_files_from": "Додајте датотеке из", "Add_manager": "Додај менаџера", @@ -209,77 +173,65 @@ "Add_user": "Додај корисника", "Add_User": "Додај корисника", "Add_users": "Додај кориснике", - "Adding_OAuth_Services": "Додавање ОАутх Сервицес", - "Adding_permission": "Додавање дозволу", + "Adding_permission": "Додавање дозволе", "Adding_user": "Додавање корисника", - "Additional_emails": "Додатне Е-маил", - "Additional_Feedback": "Додатне Контакт", + "Additional_emails": "Додатне Е-поште", "additional_integrations_Bots": "Ако тражите како интегрирати сопствени бот, онда не тражите даље од нашег Хубот адаптера. <ЛХ_ХТМЛ_ОПЕН_а хреф = 'хттпс: //гитхуб.цом/РоцкетЦхат/хубот-роцкетцхат' таргет = '_ бланк'_ЛХ_ХТМЛ_ЕНД> хттпс://гитхуб.цом/РоцкетЦхат/хубот-роцкетцхат <ЛХ_ХТМЛ_ЦЛОСЕ_а_ЛХ_ХТМЛ_ЕНД>", "additional_integrations_Zapier": "Да ли желите да интегришете и друге програме и апликације са Роцкет.Цхат, али немате времена за ручно? Онда предлажемо употребу Запија које потпуно подржавамо. Прочитајте више о нашој документацији. <ЛХ_ХТМЛ_ОПЕН_а хреф = 'хттпс: //роцкет.цхат/доцс/администратор-гуидес/интегратионс/запиер/усинг-запс/' таргет = '_ бланк'_ЛХ_ХТМЛ_ЕНД> хттпс://роцкет.цхат/доцс/администратор-гуидес/интегратионс / запиер / усинг-запс / <ЛХ_ХТМЛ_ЦЛОСЕ_а_ЛХ_ХТМЛ_ЕНД>", "Admin_Info": "Админ Инфо", - "Administration": "администрација", + "Administration": "Администрација", "Adult_images_are_not_allowed": "Адулт слике нису дозвољене", "Advocacy": "Адвокатура", - "After_OAuth2_authentication_users_will_be_redirected_to_this_URL": "Након ОАутх2 аутентификације, корисници ће бити преусмерени на овај УРЛ", "Agent": "Агент", - "Agent_added": "агент додао", - "Agent_removed": "агент уклоњена", + "Agent_added": "Агент додат", + "Agent_removed": "Агент уклоњен", "Alerts": "Упозорења", - "Alias": "псеудоним", + "Alias": "Псеудоним", "Alias_Format": "Алиас Формат", "Alias_Format_Description": "Увезите поруке из Слацк-а са алијасом; % с је замењено корисничким именом корисника. Ако је празно, неће се користити ништа.", "Alias_Set": "Алиас Сет", - "All": "све", + "All": "Све", "All_added_tokens_will_be_required_by_the_user": "Корисник ће тражити све додатне токове", - "All_channels": "сви канали", - "All_logs": "sve историје", - "All_messages": "sve поруке", + "All_channels": "Сви канали", + "All_logs": "Сви записи", + "All_messages": "Све поруке", "All_users": "Сви корисници", "All_users_in_the_channel_can_write_new_messages": "Сви корисници канала могу писати нове поруке", - "Allow_Invalid_SelfSigned_Certs": "Дозволите Погрешна селф-сигнед Цертс", - "Allow_Invalid_SelfSigned_Certs_Description": "Дозволите неважеће и само-потписан ССЛ сертификата за линк валидацију и прегледима.", "Allow_switching_departments": "Дозволите посетиоцу да пребаце одјела", "Allow_Marketing_Emails": "Дозволи маркетинг емаилс", "Alphabetical": "Абецедно", "Always_open_in_new_window": "Увек отворите у новом прозору", "Analytics": "аналитика", - "Analytics_features_enabled": "karakteristike Омогућено", - "Analytics_features_messages_Description": "Треки прилагођене догађаје који се односе на акције корисник нема на порукама.", - "Analytics_features_rooms_Description": "Треки прилагођене догађаје у вези са акцијама на каналу или са групом (створити, остави, брисање).", - "Analytics_features_users_Description": "Треки прилагођене догађаје који се односе на акције које се односе на кориснике (пассворд ресет пута, профил Промена слике, итд).", + "Analytics_features_enabled": "Активиране могућности", "Analytics_Google": "Гугл анализе", "Analytics_Google_id": "ИД праћења", "and": "и", - "And_more": "И још __ленгтх __", - "Animals_and_Nature": "Животиње и Природа", + "And_more": "И још __length__ ", + "Animals_and_Nature": "Животиње и природа", "Announcement": "Најава", - "API": "АПИ за", + "API": "АПИ", "API_Allow_Infinite_Count": "Дозволите да добијете све", "API_Allow_Infinite_Count_Description": "Да ли би требало дозволити да се позивима на РЕСТ АПИ врати све у једном позиву?", - "API_Analytics": "аналитика", + "API_Analytics": "Аналитика", "API_CORS_Origin": "ЦОРС Оригин", "API_Default_Count": "Дефаулт Цоунт", "API_Default_Count_Description": "Подразумевано бројање за РЕСТ АПИ резултате ако потрошач није обезбедио.", "API_Drupal_URL": "УРЛ Друпал сервера", "API_Drupal_URL_Description": "Пример: хттпс://домаин.цом (искључујући траилинг цртицу)", - "API_Embed": "ембед", + "API_Embed": "Убаци преглед линкова", "API_Embed_Description": "Да ли су омогућени прегледи уграђене везе или не када корисник поставља линк на веб локацију.", "API_Embed_UserAgent": "Ставите захтев за корисника", "API_EmbedCacheExpirationDays": "Ембед Цацхе Екпиратион Даис", - "API_EmbedDisabledFor": "Онемогући Додајте за кориснике", - "API_EmbedDisabledFor_Description": "Зарезом одвојена листа корисничких имена", - "API_EmbedIgnoredHosts": "Ембед Занемарени Домаћини", - "API_EmbedIgnoredHosts_Description": "Зарезом одвојена листа хостова или цидр адресе, нпр. лоцалхост 127.0.0.1, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16", - "API_EmbedSafePorts": "сафе портови", + "API_EmbedDisabledFor_Description": "Зарезом одвојена листа корисничких имена којима је онемогућен преглед убачених линкова.", + "API_EmbedSafePorts": "Безбедни портови", "API_EmbedSafePorts_Description": "Зарезом одвојена листа портова дозвољених за преглед.", "API_Enable_CORS": "Омогући ЦОРС", "API_Enable_Direct_Message_History_EndPoint": "Омогући крајњу тачку историје директних порука", "API_Enable_Direct_Message_History_EndPoint_Description": "Ово омогућава `/ апи / в1 / им.хистори.отхерс` који дозвољава преглед директних порука које су послали други корисници да позивалац није дио.", "API_Enable_Shields": "Омогући штитове", "API_Enable_Shields_Description": "Омогућити штитове доступне на `/ апи / в1 / схиелд.свг`", - "API_GitHub_Enterprise_URL": "УРЛ сервер", - "API_GitHub_Enterprise_URL_Description": "Пример: хттп://домаин.цом (без косом цртом)", - "API_Gitlab_URL": "ГитЛаб УРЛ адреса", + "API_GitHub_Enterprise_URL": "УРЛ адреса сервера", + "API_GitHub_Enterprise_URL_Description": "Пример: http://domain.com (без косе црте на крају)", "API_Shield_Types": "Врсте штита", "API_Shield_Types_Description": "Врсте штитова који омогућавају листу одвојених зарезима, изаберите `онлине`,` канал` или `*` за све", "API_Token": "АПИ токен", @@ -287,10 +239,7 @@ "API_Tokenpass_URL_Description": "Пример: хттпс://домаин.цом (искључујући траилинг цртицу)", "API_Upper_Count_Limit": "Максимални рекордни износ", "API_Upper_Count_Limit_Description": "Који је максималан број записа који РЕСТ АПИ треба да врати (када није неограничен)?", - "API_User_Limit": "Корисник лимит за додавање Сви корисници на канал", - "API_Wordpress_URL": "УордПресс УРЛ адреса", - "Apiai_Key": "Апи.аи ključ", - "Apiai_Language": "Апи.аи Језик", + "API_User_Limit": "Ограничење корисника за додавање свих корисника у канал", "App_author_homepage": "аутор хомепаге", "App_Information": "Информације о апликацији", "App_Installation": "Инсталација апликације", @@ -305,12 +254,12 @@ "App_status_manually_enabled": "Омогућено", "App_status_unknown": "Непознат", "App_support_url": "подршка урл", - "Appearance": "изглед", - "Application_added": "aplikacija је додао", - "Application_Name": "primena Име", - "Application_updated": "primena ажуриран", + "Appearance": "Изглед", + "Application_added": "Апликација је додата", + "Application_Name": "Име апликације", + "Application_updated": "Аппликација ажурирана", "Apply": "Применити", - "Apply_and_refresh_all_clients": "Нанесите и освежите све клијенте", + "Apply_and_refresh_all_clients": "Примени и освежи све клијенте", "Apps": "Програми", "Apps_Framework_enabled": "Омогућите Апп Фрамеворк", "Apps_Settings": "Подешавања апликације", @@ -340,23 +289,14 @@ "Audio_Notification_Value_Description": "Може бити сваки прилагођени звук или подразумевани: звучни сигнал, звук, динг, капљица, високи звук, годишња доба", "Audio_Notifications_Default_Alert": "Подразумевана обавештења о аудио обавештењима", "Audio_Notifications_Value": "Подразумевано обавештење о поруци за звук", - "Auth_Token": "аутх токен", - "Author": "аутор", + "Author": "Аутор", "Author_Information": "Информације о аутору", - "Authorization_URL": "овлашћење УРЛ адреса", - "Authorize": "овластити", + "Authorization_URL": "УРЛ адреса за ауторизацију", + "Authorize": "Овласти", "auto-translate": "Ауто превођење", "auto-translate_description": "Дозвола за коришћење алата за аутоматско превођење", - "Auto_Load_Images": "Ауто Лоад слике", - "AutoLinker_Email": "АутоЛинкер Е-маил", - "AutoLinker_Phone": "АутоЛинкер телефона", - "AutoLinker_Phone_Description": "Аутоматски повезује на бројеве телефона. нпр `(123) 456-7890`", - "AutoLinker_StripPrefix": "АутоЛинкер Стрип Префикс", - "AutoLinker_StripPrefix_Description": "Кратак приказ. нпр хттпс://роцкет.цхат => роцкет.цхат", - "AutoLinker_Urls_Scheme": "АутоЛинкер Шема: // адресе", - "AutoLinker_Urls_TLD": "АутоЛинкер ТЛД УРЛ", - "AutoLinker_Urls_www": "АутоЛинкер 'ввв' СЕО", - "AutoLinker_UrlsRegExp": "АутоЛинкер УРЛ-Регулар Екпрессион", + "Auto_Load_Images": "Аутоматско учитавање слика", + "AutoLinker_StripPrefix_Description": "Кратак приказ. нпр https://rocket.chat => rocket.chat", "Automatic_Translation": "Аутоматски превођење", "AutoTranslate": "Ауто-Превод", "Auto_Translate": "Ауто-Превод", @@ -364,12 +304,11 @@ "AutoTranslate_Change_Language_Description": "Промена језика за аутоматско превођење не преводи претходне поруке.", "AutoTranslate_Enabled": "Омогућите аутоматско превођење", "AutoTranslate_Enabled_Description": "Омогућавање аутоматског превођења омогућит ће особама са аутоматско превођење дозволу да се све поруке аутоматски преведу на њихов одабрани језик. Накнаде могу да се примене, погледајте Гоогле документација ", - "Available": "доступан", - "Available_agents": "слободни агенти", - "Avatar": "Промени аватара", + "Available": "Доступан", + "Available_agents": "Доступни агенти", + "Avatar": "Аватар", "Avatar_changed_successfully": "Аватар успешно промењен", - "Avatar_URL": "аватар УРЛ адреса", - "Avatar_url_invalid_or_error": "УРЛ адреса ако је неважећи или није доступна. Покушајте поново, али са различитим УРЛ.", + "Avatar_URL": "УРЛ адреса аватара", "away": "одсутан/на", "Away": "Одсутан/на", "away_female": "далеко", @@ -380,23 +319,23 @@ "Back_to_applications": "Назад на апликације", "Back_to_chat": "Назад у ћаскање", "Back_to_integration_detail": "Назад на детаљ о интеграцији", - "Back_to_integrations": "Назад на интеграција", + "Back_to_integrations": "Назад на интеграције", "Back_to_login": "Повратак на пријаву", "Back_to_Manage_Apps": "Назад на Управљање апликацијама", - "Back_to_permissions": "Назад на дозвола", + "Back_to_permissions": "Назад на дозволе", "Backup_codes": "Бацкуп кодови", "ban-user": "Бан корисник", "ban-user_description": "Дозвола за забрану корисника са канала", "Beta_feature_Depends_on_Video_Conference_to_be_enabled": "Бета карактеристика. Зависи од видео конференције која ће бити омогућена.", "Block_User": "Блокирај корисника", "Blockchain": "Блоцкцхаин", - "Body": "тело", - "bold": "одважан", + "Body": "Тело", + "bold": "подебљан", "bot_request": "Бот захтев", "BotHelpers_userFields": "Корисничка поља", "BotHelpers_userFields_Description": "ЦСВ поља корисника до којих се може приступити помоћу помоћних метода.", "Bots": "Ботс", - "Branch": "грана", + "Branch": "Грана", "Broadcast_channel": "Броадцаст Цханнел", "Broadcast_channel_Description": "Само овлашћени корисници могу написати нове поруке, али други корисници ће моћи да одговоре", "Broadcast_Connected_Instances": "Броадцаст Цоннецтед инстанци", @@ -414,7 +353,7 @@ "cache_cleared": "Цацхе цлеаред", "Cancel": "Откажи", "Cancel_message_input": "Откажи", - "Cannot_invite_users_to_direct_rooms": "Не могу да позову друге кориснике да усмеравају собе", + "Cannot_invite_users_to_direct_rooms": "Није могуће позивање корисника у директне собе", "Cannot_open_conversation_with_yourself": "Не можете директно да успоставите поруку са собом", "CAS_autoclose": "Аутоцлосе Логин Попуп", "CAS_base_url": "База базе података ССО", @@ -442,25 +381,17 @@ "Channel": "канал", "Channel_already_exist": "Канал '#%s \"већ постоји.", "Channel_already_exist_static": "Канал већ постоји.", - "Channel_already_Unarchived": "Канал са именом `#%s` је већ у неархивирано стању", - "Channel_Archived": "Канал са именом `#%s` је успешно архивиран", - "Channel_created": "Креиран је канал `#%s`.", + "Channel_already_Unarchived": "Channel са именом `#%s` је већ у неархивираном стању", + "Channel_Archived": "Channel са именом `#%s` је успешно архивиран", + "Channel_created": "Channel `#%s` је креиран.", "Channel_doesnt_exist": "Канал `#%s` не постоји.", "Channel_name": "Име канала", "Channel_Name_Placeholder": "Молимо унесите име канала ...", "Channel_to_listen_on": "Канал за слушање", - "Channel_Unarchived": "Канал са именом `#%s` је Неархивиране успешно", "Channels": "Канали", "Channels_are_where_your_team_communicate": "Канали су тамо где ваш тим комуницира", - "Channels_list": "Списак јавних канала", - "Chat_button": "цхат дугме", - "Chat_closed": "цхат затворено", - "Chat_closed_successfully": "Цхат успешно завршена", + "Channels_list": "Листа јавних канала", "Chat_Now": "Цхат Сада", - "Chat_window": "цхат прозор", - "Chatops_Enabled": "Омогући Цхатопс", - "Chatops_Title": "Цхатопс панел", - "Chatops_Username": "Цхатопс име", "Chatpal_AdminPage": "Цхатпал Админ Страница", "Chatpal_All_Results": "све", "Chatpal_API_Key": "АПИ кључ", @@ -508,43 +439,41 @@ "Chatpal_Welcome": "Уживајте у тражењу!", "Chatpal_Window_Size": "Индек Виндов Сизе", "Chatpal_Window_Size_Description": "Величина индексних прозора у сатима (на боотстраппинг)", - "Choose_a_room": "Изаберите собу", - "Choose_messages": "Изаберите поруке", - "Choose_the_alias_that_will_appear_before_the_username_in_messages": "Изаберите псеудоним који ће се појавити пред корисничко име у порукама.", - "Choose_the_username_that_this_integration_will_post_as": "Изаберите корисничко име које ће интеграција постављате као.", + "Choose_a_room": "Изабери собу", + "Choose_messages": "Изабери поруке", + "Choose_the_alias_that_will_appear_before_the_username_in_messages": "Изабери псеудоним који ће се приказати пре корисничког имена у порукама.", "clean-channel-history": "Историја чистог канала", "clean-channel-history_description": "Дозвола да Обриши историју из канала", "clear": "Јасно", - "Clear_all_unreads_question": "Обришете све унреадс?", + "Clear_all_unreads_question": "Очисти све непрочитано?", "clear_cache_now": "Цлеар Цацхе Нов", "clear_history": "Очисти историју", - "Click_here": "Кликните овде", + "Click_here": "Кликни овде", "Click_here_for_more_info": "Кликните овде за више информација", "Click_the_messages_you_would_like_to_send_by_email": "Кликните на поруке које желите послати путем е-поште", "Click_to_join": "Кликни да се придружи!", "Client_ID": "ИД клијента", - "Client_Secret": "klijent Тајна", - "Clients_will_refresh_in_a_few_seconds": "Клијенти ће освежити за неколико секунди", + "Client_Secret": "Тајна клијента", + "Clients_will_refresh_in_a_few_seconds": "Клијенти ће се освежити за неколико секунди", "close": "затвори", "Close": "Близу", "close-livechat-room": "Затвори Ливецхат Роом", "close-livechat-room_description": "Дозвола да се затвори тренутни ЛивеЦхат канал", "close-others-livechat-room": "Затвори Ливецхат Роом", "close-others-livechat-room_description": "Дозвола за затварање других ЛивеЦхат канала", - "Closed": "zatvoreno", + "Closed": "Затворено", "Closed_by_visitor": "Затворен од посетилаца", - "Closing_chat": "zatvaranje Цхат", - "Collapse_Embedded_Media_By_Default": "Скупи уграђени медија по дефаулт-у", + "Closing_chat": "Затварање ћаскања", "color": "боја", - "Color": "боја", - "Commands": "komande", + "Color": "Боја", + "Commands": "Команде", "Comment_to_leave_on_closing_session": "Коментар оставити на затвореној сесији", "Common_Access": "Заједнички приступ", "Community": "Заједница", - "Compact": "компактни", + "Compact": "Компактан", "Condensed": "Кондензован", "Computer": "рачунар", - "Confirm_password": "Потврдите вашу лозинку", + "Confirm_password": "Потврдите лозинку", "Connection_Closed": "Веза је затворена", "Connection_Reset": "Ресет везе", "Consulting": "Консалтинг", @@ -554,15 +483,14 @@ "Continue": "наставити", "Continuous_sound_notifications_for_new_livechat_room": "Непрекидна звучна обавештења за нову собу за живот", "Conversation": "Разговор", - "Conversation_closed": "Разговор затворена: __comment__.", "Conversation_finished_message": "Завршена порука конверзације", "conversation_with_s": "разговор са %s", - "Convert_Ascii_Emojis": "Претворити АСЦИИ у емоџи", - "Copied": "копирати", - "Copy": "копија", - "Copy_to_clipboard": "Цопи то цлипбоард", - "COPY_TO_CLIPBOARD": "Цопи То Цлипбоард", - "Count": "рачунати", + "Convert_Ascii_Emojis": "Претворити ASCII у емотиконе", + "Copied": "Ископирано", + "Copy": "Копирај", + "Copy_to_clipboard": "Копирај на бележницу", + "COPY_TO_CLIPBOARD": "КОПИРАЈ НА БЕЛЕЖНИЦУ", + "Count": "Број", "Country": "земља", "Country_Afghanistan": "Авганистан", "Country_Albania": "Албанија", @@ -804,7 +732,7 @@ "Country_Zambia": "Замбија", "Country_Zimbabwe": "Зимбабве", "Cozy": "удобан", - "Create": "створити", + "Create": "Направи", "create-c": "Креирајте јавне канале", "create-c_description": "Дозвола за креирање јавних канала", "create-d": "Креирајте директне поруке", @@ -813,18 +741,18 @@ "create-p_description": "Дозвола за креирање приватних канала", "create-user": "Направи корисника", "create-user_description": "Дозвола за креирање корисника", - "Create_A_New_Channel": "Направите нови канал", - "Create_new": "Створи ново", + "Create_A_New_Channel": "Направи нови канал", + "Create_new": "Направи нови", "Create_unique_rules_for_this_channel": "Креирајте јединствена правила за овај канал", "Created_at": "Направљено", - "Created_at_s_by_s": "Направљена у %s од %s", + "Created_at_s_by_s": "Направљена у %s од %s", "Created_at_s_by_s_triggered_by_s": "Креиран је на %s од стране %s покренут од стране %s", "CRM_Integration": "ЦРМ интеграција", "CROWD_Reject_Unauthorized": "Одбијте неовлашћено", "Crowd_sync_interval_Description": "Интервал између синхронизације. Пример \"сваких 24 сата\" или \"првог дана у недељи\", више примјера у [Црон Тект Парсер] (хттп://бункат.гитхуб.ио/латер/парсерс.хтмл#тект)", - "Current_Chats": "Тренутни Цхатс", + "Current_Chats": "Тренутна ћаскања", "Current_Status": "Тренутни статус", - "Custom": "Обичај", + "Custom": "Произвољно", "Custom CSS": "цустом ЦСС", "Custom_agent": "Царински агент", "Custom_emoji": "Цустом Емоји", @@ -837,12 +765,10 @@ "Custom_Emoji_Has_Been_Deleted": "Кориснички емоји је избрисан.", "Custom_Emoji_Info": "Цустом Емоји Инфо", "Custom_Emoji_Updated_Successfully": "Прилагођени емоји су успешно ажурирани", - "Custom_Fields": "Цустом Фиелдс", - "Custom_oauth_helper": "Када подешавате ОАутх провајдера, мораћете да обавести УРЛ за повратни позив. употреба
         % с 
        .", - "Custom_oauth_unique_name": "Цустом ОАутх јединствено име", + "Custom_Fields": "Произвољна поља", "Custom_Scripts": "Прилагођени скрипти", - "Custom_Script_Logged_In": "Цустом Сцрипт за пријављене кориснике", - "Custom_Script_Logged_Out": "Цустом Сцрипт за пријављени од корисника", + "Custom_Script_Logged_In": "Произвољне скрипте за пријављене кориснике", + "Custom_Script_Logged_Out": "Произвољне скрипте за одјављене кориснике", "Custom_Sound_Add": "Додајте прилагођени звук", "Custom_Sound_Delete_Warning": "Брисање звука не може бити поништено.", "Custom_Sound_Error_Invalid_Sound": "Неважећи звук", @@ -855,17 +781,17 @@ "Custom_Translations_Description": "Требало би бити валидан ЈСОН гдје су кључеви језици који садрже кључни рјечник и преводе. Пример:
        {\n\"ср\": {\n\"Канали\": \"Собе\"\n},\n\"пт\": {\n\"Канали\": \"Салас\"\n}\n} ", "Customize": "Прилагоди", "CustomSoundsFilesystem": "Цустом Соундс Филесистем", - "Dashboard": "командна табла", - "Date": "датум", + "Dashboard": "Kомандна табла", + "Date": "Датум", "Date_From": "Од", "Date_to": "до", "days": "дани", - "DB_Migration": "database Мигратион", - "DB_Migration_Date": "Датабасе Мигратион Датум", - "Deactivate": "деактивирање", + "DB_Migration": "Премештање базе података", + "DB_Migration_Date": "Датум премештања базе података", + "Deactivate": "Деактивирај", "Decline": "Одбити", - "Default": "Уобичајено", - "Delete": "избрисати", + "Default": "Предефинисано", + "Delete": "Обриши", "delete-c": "Избриши јавне канале", "delete-c_description": "Дозвола за брисање јавних канала", "delete-d": "Брисање директних порука", @@ -877,28 +803,26 @@ "delete-user": "Обриши корисника", "delete-user_description": "Дозвола за брисање корисника", "Delete_message": "Обриши поруку", - "Delete_my_account": "Обриши мој рачун", - "Delete_Room_Warning": "Брисање собу ће избрисати све поруке послате у соби. Ово се не може поништити.", - "Delete_User_Warning": "Брисање корисника ће обрисати све поруке из тог корисника као добро. Ово се не може поништити.", + "Delete_my_account": "Обриши мој налог", + "Delete_Room_Warning": "Брисање собе ће избрисати све поруке послате у соби. Ово се не може поништити.", + "Delete_User_Warning": "Брисање корисника ће такође обрисати све поруке тог корисника. Ово се не може поништити.", "Delete_User_Warning_Delete": "Брисање корисника ће обрисати све поруке из тог корисника као добро. Ово се не може поништити.", "Delete_User_Warning_Keep": "Корисник ће бити избрисан, али ће њихове поруке остати видљиве. Ово се не може поништити.", "Delete_User_Warning_Unlink": "Брисање корисника ће уклонити корисничко име из свих њихових порука. Ово се не може поништити.", - "Deleted": "Делетед!", + "Deleted": "Обрисан!", "Department": "Одељење", - "Department_removed": "Одељење уклоњена", - "Departments": "Катедре", - "Deployment_ID": "распоређивање ИД", - "Description": "опис", - "Desktop": "десктоп", - "Desktop_Notification_Test": "Обавештење тест десктоп", - "Desktop_Notifications": "Десктоп Обавештења", + "Department_removed": "Сектор уклоњен", + "Departments": "Сектори", + "Description": "Опис", + "Desktop": "Радна површина", + "Desktop_Notification_Test": "Тест обавештења на радној површини", + "Desktop_Notifications": "Обавештења на радној површини", "Desktop_Notifications_Default_Alert": "Подразумевана обавештења о радној површини", - "Desktop_Notifications_Disabled": "Десктоп Обавештења су искључени. Промените подешавања бровсера ако треба обавештења омогућене.", - "Desktop_Notifications_Duration": "Обавештења Трајање", - "Desktop_Notifications_Duration_Description": "Секунде да бисте приказали обавештење десктоп. Ово може утицати на ОС Кс Нотифицатион Центер. Унесите 0 за коришћење подразумевана подешавања претраживача и не утиче на ОС Кс Нотифицатион Центер.", - "Desktop_Notifications_Enabled": "Десктоп Обавештења су омогућена", + "Desktop_Notifications_Disabled": "Обавештења на радној површини су искључена. Промените подешавања вашег прегледача ако желите да укључите обавештења.", + "Desktop_Notifications_Duration": "Трајање обавештења на радној површини", + "Desktop_Notifications_Enabled": "Обавештења на радној површини су омогућена", "Different_Style_For_User_Mentions": "Различит стил за помињање корисника", - "Direct_message_someone": "Директна порука неко", + "Direct_message_someone": "Пошаљи директну поруку некоме", "Direct_Messages": "Директне поруке", "Direct_Reply": "Директни одговор", "Direct_Reply_Debug": "Дебуг директни одговор", @@ -923,31 +847,28 @@ "Disabled": "Онемогућено", "Disallow_reacting": "Дисаллов Реацтинг", "Disallow_reacting_Description": "Забрањује реаговање", - "Display_offline_form": "Дисплаи онлине формулар", "Display_unread_counter": "Приказати број непрочитаних порука", "Displays_action_text": "Приказује текст акције", "Dont_ask_me_again": "Не питај ме поново!", "Dont_ask_me_again_list": "Не питајте ме поново", "Do_not_display_unread_counter": "Немојте приказивати било који бројач овог канала", "Do_you_want_to_accept": "Да ли желите да прихватите?", - "Do_you_want_to_change_to_s_question": "Да ли желите да промените на %s?", + "Do_you_want_to_change_to_s_question": "Да ли желите да промените на %s?", "Document_Domain": "Доцумент Домаин", - "Domain": "домен", + "Domain": "Домен", "Domain_added": "домаин аддед", "Domain_removed": "Домаин Ремовед", - "Domains": "domeni", + "Domains": "Домени", "Domains_allowed_to_embed_the_livechat_widget": "Списак домена који су одвојени зарезом дозвољавају уграђивање видгет-а за ливецхат. Оставите празно да бисте омогућили све домене.", "Download_My_Data": "Преузмите моје податке", "Download_Snippet": "Преузимање", - "Drop_to_upload_file": "Пасти на отпремити датотеку", - "Dry_run": "dry Рун", - "Dry_run_description": "Ће послати само један е-маил, на истој адреси као и од. Имејл морају припадати важећег корисника.", - "Duplicate_archived_channel_name": "Архивирана Канал са именом \"%s\" не постоји", - "Duplicate_archived_private_group_name": "Архивирана Приватна Група са именом \"%s\" не постоји", - "Duplicate_channel_name": "Канал са именом \"%s\" не постоји", - "Duplicate_private_group_name": "Приватни Група са именом \"%s\" не постоји", + "Drop_to_upload_file": "Испусти да пошаљеш датотеку", + "Duplicate_archived_channel_name": "Постоји архивиран канал са именом \"%s\"", + "Duplicate_archived_private_group_name": "Постоји архивирана приватна група са именом \"%s\"", + "Duplicate_channel_name": "Постоји канал са именом \"%s\"", + "Duplicate_private_group_name": "Постоји приватна група са именом \"%s\"", "Duration": "Трајање", - "Edit": "едит", + "Edit": "Уреди", "edit-message": "Уредите поруку", "edit-message_description": "Дозвола за уређивање поруке у соби", "edit-other-user-active-status": "Измени други активни статус корисника", @@ -963,118 +884,102 @@ "edit-room-retention-policy": "Правила за задржавање уређаја", "edit-room-retention-policy_description": "Дозвола да уредите политику задржавања собе, да бисте аутоматски избрисали поруке у њему", "Edit_Custom_Field": "Измена прилагођеног поља", - "Edit_Department": "едит Одељење", + "Edit_Department": "Измена сектора", "Edit_previous_message": "`% с` - Измени претходну поруку", "Edit_Trigger": "Едит Триггер", "edited": "измењено", - "Editing_room": "едитинг соба", "Editing_user": "уређивање корисника", "Education": "образовање", - "Email": "емаил", - "Email_address_to_send_offline_messages": "Е-маил адреса за слање оффлине поруке", - "Email_already_exists": "емаил већ постоји", + "Email": "Е-пошта", + "Email_address_to_send_offline_messages": "Адреса е-поште за слање поруке када нисте на мрежи", + "Email_already_exists": "Е-пошта већ постоји", "Email_body": "Е-пошта тело", - "Email_Change_Disabled": "Ваш Роцкет.Цхат Администратор је онемогућио промену е-поште", + "Email_Change_Disabled": "Ваш администратор је онемогућио промену е-поште", "Email_Footer_Description": "Можете користити следеће симболе:
        • [Site_Name] и [Site_URL] за апликације Име и УРЛ респективно.
        ", - "Email_from": "од", + "Email_from": "Од", "Email_Header_Description": "Можете користити следеће симболе:
        • [Site_Name] и [Site_URL] за апликације Име и УРЛ респективно.
        ", - "Email_Notification_Mode": "Ван Емаил Обавештења", - "Email_Notification_Mode_All": "Свако помињање / ЗВ", - "Email_Notification_Mode_Disabled": "онемогућен", - "Email_or_username": "Е-адреса или корисничко име", + "Email_Notification_Mode": "Обавештења путем е-поште када нисте на мрежи", + "Email_Notification_Mode_All": "Свако помињање / ДП", + "Email_Notification_Mode_Disabled": "Онемогућен", + "Email_or_username": "Е-пошта или корисничко име", "Email_Placeholder": "Молимо, унесите вашу и-мејл адресу...", "Email_Placeholder_any": "Унесите адресе е-поште ...", - "Email_subject": "тема", - "Email_verified": "Е-адреса потврђена", - "Emoji": "Емоџији", - "Emoji_provided_by_JoyPixels": "Емоји обезбеђени ЈоиПикелс-ом", + "Email_subject": "Наслов", + "Email_verified": "Е-пошта потврђена", + "Emoji": "Емотикони", "EmojiCustomFilesystem": "Цустом Емоји Филесистем", - "Empty_title": "празан наслов", - "Enable": "омогућити", + "Empty_title": "Празан наслов", + "Enable": "Омогући", "Enable_Auto_Away": "Омогућите Ауто Аваи", - "Enable_Desktop_Notifications": "Омогући Обавештења на радној површини", + "Enable_Desktop_Notifications": "Омогући обавештења на радној површини", "Enable_Svg_Favicon": "Омогући СВГ фавикон", "Enable_two-factor_authentication": "Омогућите двоструку аутентификацију", - "Enabled": "omogućeno", - "Encrypted_message": "шифровану поруку", - "End_OTR": "Крај ОТР", - "Enter_a_regex": "Унесите регек", + "Enabled": "Оmogućeno", + "Encrypted_message": "Шифрована порука", "Enter_a_room_name": "Унесите име собе", "Enter_a_username": "Унесите корисничко име", "Enter_Alternative": "Алтернативни режим (послати с Ентер + Цтрл / Алт / Схифт / ЦМД)", "Enter_authentication_code": "Унесите шифру потврде идентитета", "Enter_Behaviour": "Унесите тип понашања", "Enter_Behaviour_Description": "Ово се мења ако тастер за унос пошаље поруку или направи паузу линија", - "Enter_name_here": "Унесите име овде", + "Enter_name_here": "Овде унесите име", "Enter_Normal": "Нормални режим (пошаљи са Ентер)", "Enter_to": "Ентер да", "Enterprise": "Предузеће", "Entertainment": "Забава", - "Error": "грешка", - "error-action-not-allowed": "__ацтион__ није дозвољено", + "Error": "Грешка", "error-application-not-found": "Апликација није пронађена", - "error-archived-duplicate-name": "Ту је архивирана канал под називом '__роом_наме__'", - "error-avatar-invalid-url": "Инвалид Аватар УРЛ: __урл__", - "error-avatar-url-handling": "Грешка при руковању подешавање аватар из УРЛ (__урл__) за __усернаме__", - "error-cant-invite-for-direct-room": "не могу позвати корисника директним соба", + "error-cant-invite-for-direct-room": "Није могуће позивати кориснике у директне собе", "error-channels-setdefault-is-same": "Подразумевана поставка канала је иста као и оно на шта ће се променити.", "error-channels-setdefault-missing-default-param": "Захтева се бодиПарам 'дефаулт'", - "error-could-not-change-email": "није могао да промени емаил", - "error-could-not-change-name": "није могао да промени име", - "error-could-not-change-username": "није могао да промени име", - "error-delete-protected-role": "Не можете брисати заштићену улогу", - "error-department-not-found": "Одељење није пронађен", + "error-could-not-change-email": "Није било могуће променити е-пошту", + "error-could-not-change-name": "Није било могуће променити име", + "error-could-not-change-username": "Није било могуће променити корисничко име", + "error-delete-protected-role": "Није било могуће обрисати заштићену улогу", + "error-department-not-found": "Сектор није пронађен", "error-direct-message-file-upload-not-allowed": "Дељење датотека није дозвољено у директним порукама", - "error-duplicate-channel-name": "Канал са именом \"%s\" не постоји", + "error-duplicate-channel-name": "Постоји канал са именом '__channel_name__'", "error-edit-permissions-not-allowed": "Дозволе за уређивање нису дозвољене", - "error-email-domain-blacklisted": "Емаил домен је на црној листи", + "error-email-domain-blacklisted": "Домен е-поште је на црној листи", "error-email-send-failed": "Грешка у покушају слања е-поште: __мессаге__", "error-field-unavailable": "__field__ је већ у употреби :(", "error-file-too-large": "Датотека је превелика", - "error-importer-not-defined": "Увозник није правилно дефинисана, она недостаје за увоз класу.", - "error-input-is-not-a-valid-field": "__инпут__ није валидан __фиелд__", - "error-invalid-actionlink": "Неважећи радња Линк", - "error-invalid-arguments": "Инвалид аргумент", - "error-invalid-asset": "неважећи средства", - "error-invalid-channel": "Неважећи канал.", - "error-invalid-channel-start-with-chars": "Неважећи канал. Почните са @ # или", - "error-invalid-custom-field": "Неважећи прилагођено поље", + "error-importer-not-defined": "Увозник није правилно дефинисан, недостаје му класа за увоз.", + "error-invalid-arguments": "Неисправни аргументи", + "error-invalid-channel": "Неисправан канал.", + "error-invalid-channel-start-with-chars": "Неисправан канал. Почните са @ или #", + "error-invalid-custom-field": "Неисправно прилагођено поље", "error-invalid-custom-field-name": "Неважећи назив прилагођено поље. Користите само слова, бројеве, цртице и доње црте.", "error-invalid-date": "Обезбеђен је неважећи датум.", - "error-invalid-description": "неважећи опис", - "error-invalid-domain": "инвалид домен", - "error-invalid-email": "Неважећа е __емаил__", + "error-invalid-description": "Неисправан опис", + "error-invalid-domain": "Неисправан домен", + "error-invalid-email": "Неисправна адреса е-поште __email__", "error-invalid-email-address": "Погрешна емаил адреса", - "error-invalid-file-height": "Неважећи висина фајл", - "error-invalid-file-type": "Инвалид филе типе", - "error-invalid-file-width": "Неважећи ширина фајл", - "error-invalid-from-address": "обавестили сте инвалид ОД адресу.", - "error-invalid-integration": "неважећи интеграција", - "error-invalid-message": "Погрешна порука", - "error-invalid-method": "nevažeći начин", - "error-invalid-name": "nevažeći назив", - "error-invalid-password": "Погрешна лозинка", + "error-invalid-file-height": "Неисправна висина", + "error-invalid-file-type": "Неисправан тип датотеке", + "error-invalid-file-width": "Неисправна ширина датотеке", + "error-invalid-integration": "Неисправна интеграција", + "error-invalid-message": "Неисправна порука", + "error-invalid-method": "Неисправан начин", + "error-invalid-name": "Неисправан назив", + "error-invalid-password": "Неисправна лозинка", "error-invalid-permission": "Неважећа дозвола", - "error-invalid-redirectUri": "неважећи редирецтУри", - "error-invalid-role": "неважећи улога", - "error-invalid-room": "неважећи соба", + "error-invalid-role": "Неисправна улога", + "error-invalid-room": "Неисправна соба", "error-invalid-room-name": "% с није исправан назив соба", - "error-invalid-room-type": "__type__ није исправан тип соба.", - "error-invalid-settings": "Неважећи поставке које пружа", - "error-invalid-subscription": "неважећи претплата", - "error-invalid-token": "Неважећи токен", - "error-invalid-triggerWords": "Неважећи триггерВордс", - "error-invalid-urls": "Неважећи УРЛ-ови", - "error-invalid-user": "nevažeći корисник", + "error-invalid-room-type": "__type__ није исправан тип собе.", + "error-invalid-settings": "Унешена су неисправна подешавања", + "error-invalid-subscription": "Неисправна претплата", + "error-invalid-token": "Неисправан токен", + "error-invalid-urls": "Погрешна УРЛ адреса", + "error-invalid-user": "Погрешан корисник", "error-invalid-username": "Погрешно корисничко име", - "error-invalid-webhook-response": "УРЛ адреса вебхоок одговорила са статусом осим 200", - "error-message-deleting-blocked": "Порука брисање је блокиран", - "error-message-editing-blocked": "уређивање порука је блокиран", - "error-message-size-exceeded": "величина поруке већа од Мессаге_МакАлловедСизе", + "error-message-deleting-blocked": "Брисање порука је блокирано", + "error-message-editing-blocked": "Уређивање порука је блокирано", "error-missing-unsubscribe-link": "Морате навести [unsubscribe] линк.", - "error-no-tokens-for-this-user": "Нема токени за овај корисника", + "error-no-tokens-for-this-user": "Нема токена за овог корисника", "error-not-allowed": "Није дозвољено", - "error-not-authorized": "није овлашћен", + "error-not-authorized": "Није овлашћен", "error-password-policy-not-met": "Лозинка не одговара политици сервера", "error-password-policy-not-met-maxLength": "Лозинка не одговара политици сервера максималне дужине (лозинка је предугачка)", "error-password-policy-not-met-minLength": "Лозинка не одговара политици сервера минималне дужине (преусмерена је лозинка)", @@ -1083,14 +988,11 @@ "error-password-policy-not-met-oneSpecial": "Лозинка не испуњава политику сервера од најмање једног специјалног карактера", "error-password-policy-not-met-oneUppercase": "Лозинка не испуњава политику сервера од најмање једног великог слова", "error-password-policy-not-met-repeatingCharacters": "Лозинка не испуњава политику сервера забрањених понављања знакова (имате превише истих знакова поред једне друге)", - "error-push-disabled": "Пусх је онемогућен", - "error-remove-last-owner": "Ово је последњи власник. Молимо подесите новог власника пре него што уклоните овај.", - "error-role-in-use": "Не можете брисати улогу јер је у употреби", - "error-role-name-required": "Име улога је потребно", + "error-remove-last-owner": "Ово је последњи власник. Подесите новог власника пре него што овог уклоните.", + "error-role-in-use": "Не можете обрисати улогу јер је у употреби", + "error-role-name-required": "Име улоге је неопходно", "error-room-is-not-closed": "Соба није затворена", - "error-the-field-is-required": "је обавезно поље __фиелд__.", "error-this-is-not-a-livechat-room": "Ово није соба Ливецхат", - "error-too-many-requests": "Грешка, превише захтева. Молим те успори. Морате да сачекате __сецондс__ секунди пре него што поново покушава.", "error-user-has-no-roles": "Корисник нема улогу", "error-user-is-not-activated": "Корисник није активиран", "error-user-limit-exceeded": "Број корисника које покушавате позвати у #цханнел_наме превазилази лимит који је поставио администратор", @@ -1126,31 +1028,30 @@ "External_Queue_Service_URL": "УРЛ адреса спољне редакције", "External_Service": "Спољни сервис", "Facebook_Page": "Фацебоок страница", - "False": "лажан", - "Favorite_Rooms": "Омогући Фаворите Роомс", + "False": "Лажан", + "Favorite_Rooms": "Омогући омиљене собе", "Favorite": "Фаворит", - "Favorites": "Омиљено", + "Favorites": "Омиљене", "Feature_Depends_on_Livechat_Visitor_navigation_as_a_message_to_be_enabled": "Ова функција зависи од \"Пошаљи историју навигације посетилаца као поруке\" која ће бити омогућена.", - "Features_Enabled": "karakteristike Омогућено", "FEDERATION_Domain": "домен", "FEDERATION_Status": "Стање", - "Field": "поље", - "Field_removed": "поље уклоњена", + "Field": "Поље", + "Field_removed": "Поље уклоњено", "Field_required": "Потребно поље", - "File_exceeds_allowed_size_of_bytes": "Филе прелази дозвољену величину __сизе__ бајтова", + "File_exceeds_allowed_size_of_bytes": "Датотека премашује дозвољену величину од __size__.", "File_name_Placeholder": "Претрага датотека ...", "File_removed_by_automatic_prune": "Датотека је уклоњена аутоматским пруне", "File_not_allowed_direct_messages": "Дељење датотека није дозвољено у директним порукама.", "File_removed_by_prune": "Датотека је уклоњена пруне", "File_type_is_not_accepted": "Тип датотеке није прихваћен.", "File_uploaded": "Датотека је отпремљена", - "FileUpload": "file Уплоад", + "FileUpload": "Отпремање датотека", "FileUpload_Disabled": "Преузимање датотека је онемогућено.", - "FileUpload_Enabled": "Филе уплоадс Омогућено", + "FileUpload_Enabled": "Отпремање датотека је омогућено", "FileUpload_Error": "Грешка при уносу датотеке", "FileUpload_Enabled_Direct": "Датотеке су омогућене у директним порукама", - "FileUpload_File_Empty": "Филе празна", - "FileUpload_FileSystemPath": "sistem Пут", + "FileUpload_File_Empty": "Датотека је празна", + "FileUpload_FileSystemPath": "Системска путања", "FileUpload_GoogleStorage_AccessId": "ИД за Гоогле складишни приступ", "FileUpload_GoogleStorage_AccessId_Description": "Приступ приступа је углавном у формату е-поште, на пример: \"екампле-тест@екампле.иам.гсервицеаццоунт.цом\"", "FileUpload_GoogleStorage_Bucket": "Гоогле Стораге Буцкет Наме", @@ -1183,7 +1084,7 @@ "FileUpload_S3_SignatureVersion": "Верзија потписа", "FileUpload_S3_URLExpiryTimeSpan": "УРЛ-ови Екпиратион Тимеспан", "FileUpload_S3_URLExpiryTimeSpan_Description": "Након којег Амазон С3 генерисани УРЛ-ови више неће бити важећи (у секундама). Ако је постављено на мање од 5 секунди, ово поље ће бити занемарено.", - "FileUpload_Storage_Type": "складиштење Тип", + "FileUpload_Storage_Type": "Тип складиштења", "FileUpload_Webdav_Upload_Folder_Path": "Путања фолдера", "FileUpload_Webdav_Upload_Folder_Path_Description": "Путања фасцикле ВебДАВ на коју треба отпремити датотеке", "FileUpload_Webdav_Server_URL": "ВебДАВ Сервер Аццесс УРЛ", @@ -1201,19 +1102,17 @@ "Financial_Services": "Финансијске услуге", "First_Channel_After_Login": "Први канал након пријаве", "Flags": "Заставе", - "Follow_social_profiles": "Пратите наше друштвене профиле, форкујте нас на Гитхабу и поделите ваша мишљења о нашој rocket.chat апликацији на нашој Трело табли.", "Fonts": "Фонтови", - "Food_and_Drink": "Храна пиће", - "Footer": "фоотер", + "Food_and_Drink": "Храна и пиће", + "Footer": "Подножје", "Footer_Direct_Reply": "Нога Када је директни одговор омогућен", "For_more_details_please_check_our_docs": "За више детаља погледајте наше документе.", - "For_your_security_you_must_enter_your_current_password_to_continue": "За вашу безбедност, морате поново унесите лозинку да бисте наставили", + "For_your_security_you_must_enter_your_current_password_to_continue": "Због безбедност, морате унети тренутну лозинку да бисте наставили", "force-delete-message": "Форце Делете Мессаге", "force-delete-message_description": "Дозвола за брисање поруке заобилазе сва ограничења", - "Force_SSL": "сила ССЛ", - "Force_SSL_Description": "* Опрез! * _Форце ССЛ_ никада не треба да се користи са обрнутим проки. Ако имате обрнути проки, требало би да уради преусмеравање ПОСТОЈИ. Ова опција постоји за распоређивања као Хероку, који не дозвољава конфигурацију преусмеравање на обрнутим проки.", - "Invalid_Export_File": "Фајл уплоадед није исправан %s извоз датотека.", - "Forgot_password": "Заборавили сте лозинку", + "Force_SSL": "Приморај SSL", + "Force_SSL_Description": "* Опрез! * _Force SSL_ никада не треба користити са обрнутим проксијем. Ако имате обрнути прокси, требало би ТАМО одрадити преусмеравање. Ова опција постоји за инсталације као што је Heroku, који не дозвољава конфигурацију преусмеравања на обрнутом проксију.", + "Forgot_password": "Заборавили сте лозинку?", "Forgot_Password_Description": "Можете користити следеће држаче:
        • [Форгот_Пассворд_Урл] за УРЛ за опоравак лозинке.
        • [име], [фнаме], [лнаме] за пуно име, презиме или презиме корисника.
        • [емаил] за е-пошту корисника.
        • [Сите_Наме] и [Сите_УРЛ] за име апликације и УРЛ адресу респективно.
        ", "Forgot_Password_Email": "Кликните на овдеда бисте ресетовали своју лозинку.", "Forgot_Password_Email_Subject": "[Сите_Наме] - опоравак лозинке", @@ -1222,24 +1121,20 @@ "Forward_chat": "Проследи ћаскање", "Forward_to_department": "Напријед на одељење", "Forward_to_user": "Проследи кориснику", - "Frequently_Used": "често коришћене", + "Frequently_Used": "Често коришћено", "Friday": "Петак", - "From": "од", - "From_Email": "od Емаил", - "From_email_warning": "Упозорење: Поље Од подлеже поставкама маил сервера.", + "From": "Од", + "From_Email": "Од ареса", + "From_email_warning": "Упозорење: Поље Од подлеже поставкама твог севера е-поште.", "Gaming": "Гаминг", - "General": "општи", - "github_no_public_email": "Немате ниједну е-адресу као јавну е-адресу на вашем Гитхаб налогу", - "Give_a_unique_name_for_the_custom_oauth": "Дати јединствено име за прилагођени ОАутх", - "Give_the_application_a_name_This_will_be_seen_by_your_users": "Дајте Апликација име. Ово ће бити виђена од својих корисника.", - "Global": "глобалан", + "General": "Општи", + "Global": "Глобално", "Global_purge_override_warning": "Успостављена је глобална политика задржавања. Ако оставите \"Оверриде глобал полици ретентион\" искључену, можете примијенити само политику која је строжија од глобалне политике.", "Global_Search": "Глобално претраживање", "Go_to_your_workspace": "Идите у свој радни простор", "Google_Vision_usage_limit_exceeded": "Граница употребе Гоогле Висион-а је прекорачена", "GoogleCloudStorage": "Гоогле Цлоуд Стораге", "GoogleNaturalLanguage_ServiceAccount_Description": "ЈСОН датотеку кључа услуге налога. Више информација може се наћи [овде] (хттпс://цлоуд.гоогле.цом/натурал-лангуаге/доцс/цоммон/аутх#сет_уп_а_сервице_аццоунт)", - "GoogleTagManager_id": "Гоогле ИД менаџер ознака", "GoogleVision_Block_Adult_Images": "Блокирај слике одраслих", "GoogleVision_Block_Adult_Images_Description": "Блокирање слика одраслих неће радити када се достигне месечна граница", "GoogleVision_Current_Month_Calls": "Тренутни месечни позиви", @@ -1261,8 +1156,8 @@ "Group_favorites": "Омиљене групе", "Group_mentions_disabled_x_members": "Група помиње \"@ алл\" и \"@ хере\" била онемогућена за собе са више од __тотал__ чланова.", "Group_mentions_only": "Група помиње само", - "Hash": "хасх", - "Header": "хеадер", + "Hash": "Хеш", + "Header": "Заглавље", "Header_and_Footer": "Хедер и футер", "Healthcare_and_Pharmaceutical": "Здравство / Фармацеутски", "Help_Center": "Центар за помоћ", @@ -1272,9 +1167,9 @@ "Hide_Avatars": "Сакриј аватаре", "Hide_counter": "Сакриј бројач", "Hide_flextab": "Сакриј десно бочно дугме са кликом", - "Hide_Group_Warning": "Да ли сте сигурни да желите да сакријете групу \"%s\"?", - "Hide_Livechat_Warning": "Јесте ли сигурни да желите сакрити ливецхат са \"%s\"?", - "Hide_Private_Warning": "Да ли сте сигурни да желите да сакријете разговор са \"%s\"?", + "Hide_Group_Warning": "Да ли заиста желите да сакријете групу \"%s\"?", + "Hide_Livechat_Warning": "Да ли заиста желите да сакријете ћаскање са \"%s\"?", + "Hide_Private_Warning": "Да ли заиста желите да сакријете расправу са \"%s\"?", "Hide_roles": "Сакриј улоге", "Hide_room": "Сакриј собу", "Hide_Room_Warning": "Да ли сте сигурни да желите да сакријете собу \"%s\"?", @@ -1298,6 +1193,7 @@ "if_they_are_from": "(ако су из %s)", "If_this_email_is_registered": "Ако је ова е-пошта регистрована, пошаљитећемо упутства о томе како да ресетујете своју лозинку. Ако ускоро не примите е-пошту, вратите се и покушајте поново.", "If_you_are_sure_type_in_your_password": "Ако сте сигурни унесите лозинку:", + "Members_List": "Списак чланова", "If_you_are_sure_type_in_your_username": "Ако сте сигурни тип ваше корисничко име:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Ако немате један, пошаљите е-пошту на [омни@роцкет.цхат] (маилто: омни@роцкет.цхат) да бисте добили своје.", "Iframe_Integration": "Интеграција Ифраме-а", @@ -1317,26 +1213,22 @@ "Impersonate_user": "Имперсонате Усер", "Impersonate_user_description": "Када је омогућено, интеграцијске постове као корисник који су покренули интеграцију", "Import": "Увоз", - "Importer_Archived": "архивиране", + "Importer_Archived": "Архивиране", "Importer_CSV_Information": "ЦСВ увознику је потребан одређени формат, молимо прочитајте документацију како структурирати своју зип датотеку:", "Importer_done": "Увоз завршен!", - "Importer_finishing": "Завршава увоз.", - "Importer_From_Description": "Увоз __from__ 'с подацима у Роцкет.Цхат.", + "Importer_finishing": "Завршавање увоза.", "Importer_HipChatEnterprise_BetaWarning": "Имајте на уму да је овај увоз и даље посао у току, пријавите грешке које се јављају у ГитХуб-у:", "Importer_HipChatEnterprise_Information": "Датотека која је отпремљена мора бити дешифрована тар.гз, прочитајте документацију за додатне информације:", - "Importer_import_cancelled": "Импорт отказан.", - "Importer_import_failed": "Дошло је до грешке док ради увоз.", - "Importer_importing_channels": "Увоз канала.", - "Importer_importing_messages": "Увоз поруке.", - "Importer_importing_started": "Покретање увоз.", - "Importer_importing_users": "Увоз кориснике.", - "Importer_not_in_progress": "Увозник је тренутно није покренут.", + "Importer_import_cancelled": "Увоз отказан.", + "Importer_import_failed": "Дошло је до грешке приликом увоза.", + "Importer_importing_channels": "Увожење канала.", + "Importer_importing_messages": "Увожење порука.", + "Importer_importing_started": "Покретање увоза.", + "Importer_importing_users": "Увожење корисника.", + "Importer_not_in_progress": "Увозник тренутно није покренут.", "Importer_not_setup": "Увозник није подешен правилно, пошто није вратио никакве податке.", - "Importer_Prepare_Restart_Import": "рестарт Увоз", - "Importer_Prepare_Start_Import": "Старт Увоз", - "Importer_Prepare_Uncheck_Archived_Channels": "Поништите потврду Архивирани Канали", - "Importer_Prepare_Uncheck_Deleted_Users": "Искључи Делетед корисника", - "Importer_progress_error": "Није добио напредак за увоз.", + "Importer_Prepare_Restart_Import": "Почни увоз поново", + "Importer_Prepare_Start_Import": "Почни увожење", "Importer_setup_error": "Дошло је до грешке приликом подешавања увозника.", "Importer_Slack_Users_CSV_Information": "Датотека која је отпремљена мора да буде датотека извоза корисника Слацк-а, која је ЦСВ датотека. Погледајте овде за више информација:", "Importer_Source_File": "Избор извора датотека", @@ -1346,14 +1238,8 @@ "Incoming_WebHook": "Долазни ВебХоок", "Industry": "Индустрија", "initials_avatar": "Инитиалс Аватар", - "inline_code": "инлине_цоде", - "Install_Extension": "Инсталл Ектенсион", - "Install_FxOs": "Инсталирајте Роцкет.Цхат на Фирефок", - "Install_FxOs_done": "Велики! Сада можете да користите Роцкет.Цхат преко иконе на вашем почетном екрану. Забавите се са Роцкет.Цхат!", - "Install_FxOs_error": "Жао ми је, то се не ради како треба! Следећи грешка појавила:", - "Install_FxOs_follow_instructions": "Молимо потврдите инсталацију апликације на уређају (притисните \"Инсталл\" када то буде затражено).", "Install_package": "Инсталирајте пакет", - "Installation": "инсталација", + "Installation": "Инсталација", "Installed_at": "инсталиран у", "Invitation_HTML": "poziv ХТМЛ-", "Instance_Record": "Инстанца Рецорд", @@ -1387,10 +1273,10 @@ "Integration_Retry_Failed_Url_Calls_Description": "Да ли интеграција покуша у разумном временском року, ако позив на УРЛ не успе?", "Integration_Run_When_Message_Is_Edited": "Покрените измене", "Integration_Run_When_Message_Is_Edited_Description": "Да ли се интеграција покреће када се порука уређује? Постављање овог на неисправно ће довести до тога да интеграција покреће само нове поруке.", - "Integration_updated": "Интеграција је ажуриран", + "Integration_updated": "Интеграција је ажурирана", "Integration_Word_Trigger_Placement": "Постављање ријечи било гдје", "Integration_Word_Trigger_Placement_Description": "Да ли би се требала покренути Реч када се постави било гдје у реченици осим почетка?", - "Integrations": "интеграције", + "Integrations": "Интеграције", "Integrations_for_all_channels": "Ентер алл_публиц_цханнелс да слушају на свим јавним каналима, алл_привате_гроупс да слушају на свим приватним групама, и алл_дирецт_мессагес да слушате све директне поруке.", "Integrations_Outgoing_Type_FileUploaded": "Филе Уплоадед", "Integrations_Outgoing_Type_RoomArchived": "Соба архивирана", @@ -1399,37 +1285,34 @@ "Integrations_Outgoing_Type_RoomLeft": "Усер Лефт Роом", "Integrations_Outgoing_Type_SendMessage": "Порука послата", "Integrations_Outgoing_Type_UserCreated": "Усер Цреатед", - "InternalHubot": "Интерна Хубот", "InternalHubot_EnableForChannels": "Омогући за јавне канале", "InternalHubot_EnableForDirectMessages": "Омогућите директне поруке", "InternalHubot_EnableForPrivateGroups": "Омогућите приватне канале", "InternalHubot_PathToLoadCustomScripts": "Фолдер за учитавање скрипте", "InternalHubot_reload": "Поново учитајте скрипте", "InternalHubot_ScriptsToLoad": "Скрипте за учитавање", - "InternalHubot_ScriptsToLoad_Description": "Унесите зарезом одвојена листа сценарија за учитавање од хттпс://гитхуб.цом/гитхуб/хубот-сцриптс/трее/мастер/срц/сцриптс", - "InternalHubot_Username_Description": "Ово мора бити валидна корисничко име бот регистрована на серверу.", - "Invalid_confirm_pass": "Лозинка из поља за потврду се не поклапа са првом лозинком", - "Invalid_email": "Унета е-адреса не неисправна", + "InternalHubot_Username_Description": "Ово мора бити валидно корисничко име бота регистрованог на твом серверу.", + "Invalid_confirm_pass": "Потврдна лозинка се не поклапа са лозинком", + "Invalid_email": "Унета је неисправна адреса е-поште", "Invalid_username": "Уписано корисничко име је неважеће", - "Invalid_Import_File_Type": "Погрешна врста Увоз датотеке.", - "Invalid_name": "Корисничко име не сме бити празно", - "Invalid_notification_setting_s": "Инвалид подешавање обавештење %s", + "Invalid_name": "Име не сме бити празно", + "Invalid_notification_setting_s": "Неисправна поставка обавештења: %s", "Invalid_pass": "Лозинка не сме бити празна", "Invalid_reason": "Разлог за придруживање не сме бити празан", "Invalid_room_name": "%s није исправно име канала", - "Invalid_secret_URL_message": "УРЛ адреса обезбеђен је неважећи.", - "Invalid_setting_s": "Неважећа поставка: %s", + "Invalid_secret_URL_message": "Достављена УРЛ адреса није исправна.", + "Invalid_setting_s": "Неисправна поставка: %s", "Invalid_two_factor_code": "Неважећи код два фактора", "invisible": "невидљив(а)", "Invisible": "Невидљив(а)", "Invitation": "Позив", - "Invitation_Email_Description": "Можете користити следеће симболе:
        • [email] за примаоца е-поште.
        • [Site_Name] и [Site_URL] за апликације Име и УРЛ респективно.
        ", - "Invitation_Subject": "poziv Предмет", - "Invitation_Subject_Default": "Позвани сте да [Site_Name]", - "Invite_user_to_join_channel": "Позови једног корисника да се прикључе овој канал", + "Invitation_Email_Description": "Можете користити следеће симболе:
        • [email] за примаоца е-поште.
        • [Site_Name] и [Site_URL] за име апликације и УРЛ адресу.
        ", + "Invitation_Subject": "Наслов позивнице", + "Invitation_Subject_Default": "Позвани сте на [Site_Name]", + "Invite_user_to_join_channel": "Позови једног корисника да се придружи овом каналу", "Invite_user_to_join_channel_all_from": "Позовите све кориснике из [# канала] да бисте се придружили овом каналу", "Invite_user_to_join_channel_all_to": "Позовите све кориснике са овог канала да се придруже [#канал]", - "Invite_Users": "Позови корисника", + "Invite_Users": "Позови кориснике", "IRC_Channel_Join": "Излаз команде ЈОИН.", "IRC_Channel_Leave": "Излаз команде ПАРТ.", "IRC_Channel_Users": "Излаз команде НАМЕС.", @@ -1447,11 +1330,11 @@ "IRC_Private_Message": "Излаз ПРИВМСГ наредбе.", "IRC_Quit": "Излаз након напуштања ИРЦ сесије.", "is_also_typing": "такође куца", - "is_also_typing_female": "је такође куцање", - "is_also_typing_male": "је такође куцање", + "is_also_typing_female": "такође куца", + "is_also_typing_male": "такође куца", "is_typing": "куца", - "is_typing_female": "је куцање", - "is_typing_male": "је куцање", + "is_typing_female": "куца", + "is_typing_male": "куца", "Issue_Links": "Питања везане за праћење", "IssueLinks_Incompatible": "Упозорење: не омогућујте ово и 'Хек Цолоур Превиев' истовремено.", "IssueLinks_LinkTemplate": "Шаблон за проблеме са везама", @@ -1461,13 +1344,12 @@ "Mobex_sms_gateway_from_number": "Од", "Mobex_sms_gateway_password": "Лозинка", "Mobex_sms_gateway_username": "Корисничко име", - "Jitsi_Chrome_Extension": "Хром ИД додатка", "Jitsi_Enable_Channels": "Омогући у каналима", "Job_Title": "Звање", "join": "Придружити", "join-without-join-code": "Придружите се без пријављеног кода", "join-without-join-code_description": "Дозвола да се заобиђе приступни код у каналима са омогућеним приступним кодом", - "Join_audio_call": "Придружите аудио позив", + "Join_audio_call": "Придружи се аудио позиву", "Join_Chat": "Придружите се ћаскању", "Join_default_channels": "Придружите дефаулт канала", "Join_the_Community": "Придружи се заједници", @@ -1500,28 +1382,24 @@ "Keyboard_Shortcuts_Open_Channel_Slash_User_Search": "Отвори канал / претрагу корисника", "Keyboard_Shortcuts_Title": "Пречице на тастатури", "Knowledge_Base": "База знања", - "Label": "Етикета", - "Language": "језик", + "Label": "Ознака", + "Language": "Језик", "Language_Not_set": "Нема специфичности", "Language_Version": "Енглеска верзија", - "Last_login": "Последње пријављивање", - "Last_Message_At": "Последња порука На", + "Last_login": "Последња пријава", + "Last_Message_At": "Последња порука у", "Last_seen": "Последњи пут виђен", "Last_Message": "Последња порука", "Launched_successfully": "Покренут успешно", - "Layout": "распоред", - "Layout_Home_Body": "хоме telo", - "Layout_Home_Title": "хоме Наслов", - "Layout_Login_Terms": "Пријава Правила", + "Layout": "Распоред", + "Layout_Login_Terms": "Услови пријаве", "Layout_Privacy_Policy": "Правила о приватности", - "Layout_Sidenav_Footer": "Сиде Навигација подножје", - "Layout_Sidenav_Footer_description": "Фоотер величина је 260 к 70пк", + "Layout_Sidenav_Footer_description": "Фоотер је величине 260 х 70 пиксела", "Layout_Terms_of_Service": "Услови коришћења", - "LDAP": "ЛДАП", + "LDAP": "LDAP", "LDAP_Authentication": "Омогући", "LDAP_Authentication_Password": "Лозинка", "LDAP_Authentication_UserDN": "Корисник ДН", - "LDAP_Authentication_UserDN_Description": "ЛДАП корисник који обавља корисника лоокупс за проверу идентитета друге кориснике када се пријавите.
        Ово је типично рачун сервис специјално направљена за треће стране интеграције. Користите пуно име, као што су `цн = Администратор, ЦН = Усерс, ДЦ = пример, ДЦ = цом`.", "LDAP_Background_Sync": "Синхронизација позадине", "LDAP_Background_Sync_Import_New_Users": "Синхронизација позадине увезује нове кориснике", "LDAP_Background_Sync_Import_New_Users_Description": "Увеће све кориснике (на основу критеријума филтера) који постоје у ЛДАП-у и не постоји у Роцкет.Цхат", @@ -1538,8 +1416,7 @@ "LDAP_Description": "ЛДАП је хијерархијска база података која многе компаније користе да би обезбедили јединствени знак на - објекат за размену једну лозинку између више локација и услуга. За напредне информације о конфигурацији и примере, погледајте наш вики: хттпс://гитхуб.цом/РоцкетЦхат/Роцкет.Цхат/вики/ЛДАП-Аутхентицатион.", "LDAP_Enable": "омогућити", "LDAP_Enable_Description": "Покушај да се користе ЛДАП за потврду идентитета.", - "LDAP_Encryption": "шифровање", - "LDAP_Encryption_Description": "Метод шифровања се користи да обезбеди комуникацију са ЛДАП серверу. Примери укључују `плаин` (но шифровање),` ССЛ / ЛДАПС` (шифрована од почетка), и `СтартТЛС` (упграде на шифровану комуникацију једном повезан).", + "LDAP_Encryption": "Шифровање", "LDAP_Find_User_After_Login": "Пронађи корисника након пријављивања", "LDAP_Find_User_After_Login_Description": "Искључиће претрагу ДН корисника након везивања да би се осигурало да је бинд успјешан и спречити пријављивање помоћу празних лозинки када то дозвољава АД конфигурација.", "LDAP_Group_Filter_Enable": "Омогући филтер ЛДАП групе корисника", @@ -1555,7 +1432,6 @@ "LDAP_Group_Filter_ObjectClass": "Гроуп ОбјецтЦласс", "LDAP_Group_Filter_ObjectClass_Description": "* Објектни разред * који идентификује групе.
        нпр. ОпенЛДАП: гроупОфУникуеНамес", "LDAP_Host": "Домаћин", - "LDAP_Host_Description": "ЛДАП домаћина, на пример, `лдап.екампле.цом` или` 10.0.0.30`.", "LDAP_Idle_Timeout": "Идле Тимеоут (мс)", "LDAP_Idle_Timeout_Description": "Колико милисекунди чекају након најновије ЛДАП операције до затварања везе. (Свака операција ће отворити нову везу)", "LDAP_Import_Users_Description": "Процес Труе синц ће бити увезен за све кориснике ЛДАП-а
        * Опрез! * Наведите филтер за претраживање да не увезете вишак корисника.", @@ -1564,11 +1440,9 @@ "LDAP_Login_Fallback_Description": "Ако пријава на ЛДАП-у није успешна, покушајте да се пријавите у систему подразумеваног / локалног налога. Помаже када је ЛДАП из неког разлога пао.", "LDAP_Merge_Existing_Users": "Споји постојеће кориснике", "LDAP_Merge_Existing_Users_Description": "* Опрез! * Када увозите корисника из ЛДАП-а и корисник са истим корисничким именом већ постоји, ЛДАП инфо и лозинка ће бити постављени у постојећи корисник.", - "LDAP_Port": "лука", - "LDAP_Port_Description": "Порт за приступ ЛДАП. нпр: `389` или` 636` за ЛДАПС", "LDAP_Reconnect": "Поново повежите", "LDAP_Reconnect_Description": "Покушајте да се аутоматски повежете када је веза прекинута из неког разлога током извршавања операција", - "LDAP_Reject_Unauthorized": "Одбаци Неовлашћено", + "LDAP_Reject_Unauthorized": "Одбиј неовлашћено", "LDAP_Reject_Unauthorized_Description": "Онемогућите ову опцију да бисте омогућили цертификате који се не могу потврдити. Обично само потврђени цертификати ће захтевати да ова опција буде онемогућена за рад", "LDAP_Search_Page_Size": "Тражи величину странице", "LDAP_Search_Page_Size_Description": "Максималан број уноса сваке странице резултата ће се вратити да се обради", @@ -1576,16 +1450,13 @@ "LDAP_Search_Size_Limit_Description": "Максималан број уноса за повратак.
        ** Пажња ** Овај број би требао бити већи од ** Величина странице за претрагу **", "LDAP_Sync_Now": "Синхронизација позадине сада", "LDAP_Sync_Now_Description": "Хоће ли извршити ** Бацкгроунд Синц ** сада уместо да чека ** Интервал синхронизације ** чак и ако је ** Бацкгроунд Синц ** неисправан.
        Ова акција је асинхроно, молимо погледајте дневнике за више информација о процес", - "LDAP_Sync_User_Avatar": "Синц Кориснички Аватар", - "LDAP_Sync_User_Data": "podaci синц", - "LDAP_Sync_User_Data_Description": "Имајте корисничких података у синхронизацију са сервером на логин (нпр: име, емаил).", - "LDAP_Sync_User_Data_FieldMap": "Корисник поља података Карта", - "LDAP_Sync_User_Data_FieldMap_Description": "Конфигуришете како се поља кориснички налог (као поште) насељено од рекордних у ЛДАП (једном фоунд).
        Као пример, `{\" ЦН \":\" Име \",\" пошта \":\" е \"}` ће изабрати човеку читљиву име особе из цн атрибута, и њихово емаил од атрибута поште.
        Поља која укључују `наме`, и` емаил`.", + "LDAP_Sync_User_Avatar": "Синхронизуј корисничке аватаре", + "LDAP_Sync_User_Data": "Синхронизуј корисничке податке", "manage-integrations": "Управљајте интеграцијама", "manage-integrations_description": "Дозвола за управљање серверским интеграцијама", "manage-own-integrations": "Управљајте сопственим интеграцијама", "manage-own-integrations_description": "Пермитион да дозволи корисницима да креирају и уређују сопствену интеграцију или вебхоокс", - "LDAP_Test_Connection": "тест везе", + "LDAP_Test_Connection": "Тестирај везу", "LDAP_Timeout": "Тимеоут (мс)", "LDAP_Timeout_Description": "Колико милесецондс чека резултат претраге пре повратка грешке", "LDAP_Unique_Identifier_Field": "Јединствени идентификатор Поље", @@ -1629,9 +1500,6 @@ "Livechat_room_count": "ЛивеЦхат соба датотека", "Livechat_Routing_Method": "Ливецхат метод рутирања", "Livechat_Take_Confirm": "Хоћеш ли узети овог клијента?", - "Livechat_title": "ЛивеЦхат Наслов", - "Livechat_title_color": "ЛивеЦхат Наслов Боја позадине", - "Livechat_Users": "ЛивеЦхат корисника", "Livestream_close": "Затвори Ливестреам", "Livestream_enable_audio_only": "Омогућите само аудио режим", "Livestream_not_found": "Ливестреам није доступан", @@ -1640,41 +1508,34 @@ "Livestream_switch_to_room": "Пребаците на текућу струју тренутне собе", "Livestream_url": "Урл урл", "Livestream_url_incorrect": "Урл урл-а није исправан", - "Load_more": "Учитај још", - "Loading...": "Лоадинг ...", - "Loading_more_from_history": "Лоадинг више од историје", - "Loading_suggestion": "Учитавам предлоге...", + "Load_more": "Учитај више", + "Loading...": "Учитавање...", + "Loading_more_from_history": "Учитавање из историје", + "Loading_suggestion": "Учитавање предлога", "Localization": "Локализација", "Log_Exceptions_to_Channel_Description": "Канал који ће примити све заузете изузетке. Оставите празно да игноришете изузетке.", "Log_Exceptions_to_Channel": "Изузеци од канала", - "Log_File": "Схов Филе и Лине", - "Log_Level": "лог Ниво", - "Log_Package": "схов Пакет", + "Log_File": "Прикажи датотеку и ред", + "Log_Level": "Ниво записа", + "Log_Package": "Прикажи пакет", "Log_Trace_Methods_Filter": "Траг метод филтера", "Log_Trace_Methods_Filter_Description": "Текст ће бити евалуиран као РегЕкп (`нови РегЕкп ('текст')`). Држите празно да бисте приказали траг сваког позива.", "Log_Trace_Methods": "Позиви методе трага", "Log_Trace_Subscriptions_Filter": "Траце претплатнички филтер", "Log_Trace_Subscriptions_Filter_Description": "Текст ће бити евалуиран као РегЕкп (`нови РегЕкп ('текст')`). Држите празно да бисте приказали траг сваког позива.", "Log_Trace_Subscriptions": "Тражити претплатнички позив", - "Log_View_Limit": "Лог Виев Лимит", - "Logged_out_of_other_clients_successfully": "Пријављени од других клијената успешно", + "Log_View_Limit": "Ограничење приказа записа", "Login": "Пријава", "Login_with": "Пријави се са %s", "Logistics": "Логистика", "Logout": "Одјави се", - "Logout_Others": "Одјавите Од осталих пријављени Локације", + "Logout_Others": "Одјави ме из других пријављених локација", "mail-messages": "Маил поруке", "mail-messages_description": "Дозвола за кориштење опције поштанских порука", - "Mail_Message_Invalid_emails": "Које сте дали један или више неважећих е-поште: %s", - "Mail_Message_Missing_to": "Морате изабрати једну или више корисника или да обезбеди једну или више адреса е-поште, одвојене зарезима.", "Mail_Message_No_messages_selected_select_all": "Нисте изабрали ниједну поруку.", - "Mail_Messages": "маил поруке", + "Mail_Messages": "Поруке е-поште", "Mail_Messages_Instructions": "Изабрати које поруке желите да пошаљете путем е-маила тако што ћете кликнути поруке", - "Mail_Messages_Subject": "Овде је изабран део %s порука", - "Mailer": "маилер", - "Mailer_body_tags": "Морате користити [unsubscribe] за Унсубсцриптион линк.
        Можете користити [name], [fname], [lname] за пуно име корисника, имену или презимену, респективно.
        Можете користити [email] е-поште корисника.", - "Mailing": "маилинг", - "Make_Admin": "Маке Админ", + "Room_uploaded_file_list": "files лист", "Make_sure_you_have_a_copy_of_your_codes": "Проверите да ли имате копију својих кодова: __кодови__ Ако изгубите приступ вашој апликацији за аутентификацију, можете да користите један од ових шифара за пријављивање.", "manage-apps": "Управљај апликацијама", "manage-assets": "Управљање имовином", @@ -1711,7 +1572,6 @@ "Max_length_is": "Максимална дужина је %s", "Media": "Медији", "Medium": "Средње", - "Members_List": "Списак чланова", "mention-all": "Ментион Алл", "mention-all_description": "Дозволите да користите @алл напомену", "mention-here": "Ментион Хере", @@ -1725,36 +1585,31 @@ "Message_AllowDeleting_BlockDeleteInMinutes": "Блок порука Брисање Афтер (н) Минутес", "Message_AllowDeleting_BlockDeleteInMinutes_Description": "Унесите 0 да искључите блокирање.", "Message_AllowDirectMessagesToYourself": "Дозволите корисницима директне поруке за себе", - "Message_AllowEditing": "Дозволи порука уређивање", - "Message_AllowEditing_BlockEditInMinutes": "Блок Порука Уређивање Афтер (н) Минутес", + "Message_AllowEditing": "Дозволи уређивање порука", + "Message_AllowEditing_BlockEditInMinutes": "Блокирај уређивање порука након (х) минута", "Message_AllowEditing_BlockEditInMinutesDescription": "Унесите 0 да искључите блокирање.", - "Message_AllowPinning": "Дозволи порука пиннинг", - "Message_AllowPinning_Description": "Допусти поруке се качи на било који од канала.", "Message_AllowSnippeting": "Дозволи Сниппинг порука", - "Message_AllowStarring": "Дозволи Порука Улоге", "Message_AllowUnrecognizedSlashCommand": "Дозволи непознате команде за сласх", - "Message_AlwaysSearchRegExp": "Увек се користи регекп", - "Message_AlwaysSearchRegExp_Description": "Препоручујемо да поставите `Труе` ако ваш језик није подржан на потрази текста МонгоДБ .", "Message_Attachments": "Додаци за поруке", "Message_Attachments_GroupAttach": "Дугмад за додавање групе", "Message_Attachments_GroupAttachDescription": "Ово групише иконе испод проширеног менија. Покреће мање простора на екрану.", "Message_Audio": "Аудио порука", "Message_Audio_bitRate": "Брзина аудио поруке", - "Message_AudioRecorderEnabled": "Аудио рекордер Омогућено", + "Message_AudioRecorderEnabled": "Омогућен аудио снимач", "Message_AudioRecorderEnabled_Description": "Захтева да \"аудио / мп3\" фајлови буду прихваћени тип медија унутар поставки \"Уплоад Филе\".", "Message_BadWordsFilterList": "Додај ружне речи на црну листу", - "Message_BadWordsFilterListDescription": "Додај Листа зарезом одвојена листа лоших речи за филтрирање", + "Message_BadWordsFilterListDescription": "Листа ружних речи одвојених зарезом за филтрирање", "Message_DateFormat": "Формат датума", - "Message_DateFormat_Description": "Погледајте такође: Момент.јс", - "Message_deleting_blocked": "Ова порука не може више обрисан", - "Message_editing": "уређивање поруке", + "Message_DateFormat_Description": "Такође погледај: Moment.js", + "Message_deleting_blocked": "Ова порука више не може бити обрисана", + "Message_editing": "Уређивање поруке", "Message_ErasureType": "Мессаге Ерасуре Типе", "Message_ErasureType_Delete": "Обриши све поруке", "Message_ErasureType_Description": "Одредите шта да радите са порукама корисника који уклањају свој налог.", "Message_ErasureType_Keep": "Задржите поруке и корисничко име", "Message_ErasureType_Unlink": "Уклоните везу између корисника и порука", "Message_GlobalSearch": "Глобална претрага", - "Message_GroupingPeriod": "Груписање Период (у секундама)", + "Message_GroupingPeriod": "Период груписања (у секундама)", "Message_GroupingPeriodDescription": "Поруке ће бити груписане у претходну поруку ако су оба из исте корисника и протекло време је мање од информисано време у секундама.", "Message_HideType_au": "Сакријте \"Корисник додате\" поруке", "Message_HideType_mute_unmute": "Сакријте \"Усер Мутед / Унмутед\" поруке", @@ -1763,10 +1618,8 @@ "Message_HideType_ul": "Сакриј поруке \"Корисник одустајање\"", "Message_Ignored": "Ова порука је игнорисана", "Message_info": "Информације о поруци", - "Message_KeepHistory": "Кееп Мессаге Хистори", - "Message_MaxAll": "Максимална величина канал за све поруке", - "Message_MaxAllowedSize": "Максимална дозвољена порука величина", - "Message_pinning": "Порука пиннинг", + "Message_MaxAll": "Максимална величина канала за СВЕ поруке", + "Message_MaxAllowedSize": "Максимални број дозвољених карактера по поруци", "Message_QuoteChainLimit": "Максималан број ланчаних позива", "Message_Read_Receipt_Enabled": "Прикажите пријем читања", "Message_Read_Receipt_Store_Users": "Детаљни подаци о пријему", @@ -1828,25 +1681,25 @@ "n_messages": "%s порука", "N_new_messages": "%s нових порука", "Name": "Име", - "Name_cant_be_empty": "Име не може бити празна", + "Name_cant_be_empty": "Име не може бити празно", "Name_of_agent": "Име агента", "Name_optional": "Име (опционо)", "Name_Placeholder": "Молимо Вас да унесете своје име...", - "Navigation_History": "Навигација Историја", + "Navigation_History": "Историја навигације", "New_Application": "Нова апликација", - "New_Custom_Field": "Нови прилагођени поља", - "New_Department": "Нови Одељење", + "New_Custom_Field": "Нови прилагођено поље", + "New_Department": "Нови сектор", "New_integration": "Нова интеграција", "New_line_message_compose_input": "`% с` - Нова линија у поруци садржи улаз", - "New_logs": "Нове евиденције", - "New_Message_Notification": "Нова порука Обавештење", + "New_logs": "Нови записи", + "New_Message_Notification": "Обавештење о новој поруци", "New_messages": "Нове поруке", "New_password": "Нова лозинка", "New_Password_Placeholder": "Унесите нову лозинку ...", "Confirm_new_password": "Потврдите нову лозинку", "Confirm_New_Password_Placeholder": "Поново унесите нову лозинку ...", "New_role": "Нова улога", - "New_Room_Notification": "Нови Соба Обавештење", + "New_Room_Notification": "Обавештење о новој соби", "New_Trigger": "Нови Триггер", "New_version_available_(s)": "Нова доступна верзија (% с)", "New_videocall_request": "Нови позив за видео позив", @@ -1854,24 +1707,22 @@ "Newer_than": "Новије од", "Newer_than_may_not_exceed_Older_than": "\"Новије од\" можда не прелази \"Старије од\"", "No_available_agents_to_transfer": "Нема расположивих агената за пренос", - "No_channel_with_name_%s_was_found": "Нема канал са именом \"%s\" је пронађен!", - "No_channels_yet": "Нисте члан било ког канала још.", - "No_direct_messages_yet": "Нисте започели ниједан разговор још.", - "No_Encryption": "но шифровање", - "No_group_with_name_%s_was_found": "Нема приватних група са именом \"%s\" је пронађен!", - "No_groups_yet": "Немате ниједну приватну групу за сада.", + "No_channel_with_name_%s_was_found": "Канал са именом \"%s\" није пронађен!", + "No_channels_yet": "Још увек нисте члан ниједног канала", + "No_direct_messages_yet": "Нема директних порука.", + "No_Encryption": "Без шифровања", + "No_group_with_name_%s_was_found": "Приватна група са именом \"%s\" није пронађена!", + "No_groups_yet": "Још увек немате приватне групе.", "No_integration_found": "Интеграција није пронађена од стране обезбеђеног ИД-а.", - "No_livechats": "Немате ливецхатс.", - "No_mentions_found": "Не помињу фоунд", + "No_mentions_found": "Помињања нису пронађена", "No_messages_yet": "Још нема порука", "No_pages_yet_Try_hitting_Reload_Pages_button": "Још нема страница. Покушајте да притиснете дугме \"Релоад Пагес\".", - "No_pinned_messages": "Но закачене порука", + "No_pinned_messages": "Нема закачених порука", "No_results_found": "Нема резултата", "No_results_found_for": "Није пронађен ниједан резултат за:", "No_snippet_messages": "Нема сниппет", - "No_starred_messages": "Но звездицом порука", "No_such_command": "Нема такве команде: `/__command__`", - "No_user_with_username_%s_was_found": "Не корисник са корисничким именом \"%s\" је пронађен!", + "No_user_with_username_%s_was_found": "Корисник са корисничким именом \"%s\" није пронађен!", "Nobody_available": "Нико није доступан", "Node_version": "чвор верзија", "None": "Ниједан", @@ -1925,10 +1776,10 @@ "Only_authorized_users_can_write_new_messages": "Само овлашћени корисници могу писати нове поруке", "Only_from_users": "Само обележите садржај од ових корисника (оставите празно да обришете садржај сваке)", "Only_On_Desktop": "Десктоп (само шаље са уносом на радну површину)", - "Only_you_can_see_this_message": "Само ви можете видети ову поруку", - "Oops!": "Д", + "Only_you_can_see_this_message": "Само ти можеш видети ову поруку", + "Oops!": "Упс", "Oops_page_not_found": "Упс, страница није пронађена", - "Open": "отворен", + "Open": "Отвори", "Open_channel_user_search": "`% с` - Отворени канал / Тражење корисника", "Open_days_of_the_week": "Отворени дани недеље", "Open_Livechats": "Отвори Ливецхатс", @@ -1940,38 +1791,24 @@ "Options": "Опције", "or": "или", "Or_talk_as_anonymous": "Или причајте као анонимне", - "Order": "ред", + "Order": "Редослед", "Organization_Email": "Организација Емаил", "Organization_Info": "Организација Инфо", "Organization_Name": "Назив организације", "Organization_Type": "Тип организације", "Original": "Оригинал", - "OS_Arch": "ОС Арцх", - "OS_Cpus": "ОС Процесор Точка", - "OS_Freemem": "ОС Слободна меморија", - "OS_Loadavg": "ОС лоад авераге", - "OS_Platform": "ОС платформе", - "OS_Release": "ОС Издање", - "OS_Totalmem": "ОС Укупно меморије", - "OS_Type": "тури", - "OS_Uptime": "ОС Уптиме", "Other": "Друго", "others": "други", - "OTR": "ОТР", - "OTR_is_only_available_when_both_users_are_online": "ОТР је доступна само ако оба корисника су онлине", "Outgoing_WebHook": "Одлазни ВебХоок", "Outgoing_WebHook_Description": "Добијте податке из Роцкет.Цхат у реалном времену.", - "Override_URL_to_which_files_are_uploaded_This_url_also_used_for_downloads_unless_a_CDN_is_given": "Замени УРЛ адреса за датотеке које су уплоадед. Овај УРЛ се користи за преузимање, осим ако ЦДН дат", "Page_title": "Наслов странице", "Page_URL": "УРЛ адреса странице", "Password": "Лозинка", - "Password_Change_Disabled": "Ваш Роцкет.Цхат Администратор је онемогућио промену лозинки", + "Password_Change_Disabled": "Ваш администратор је онемогућио промену лозинки", "Password_changed_successfully": "Лозинка је успешно промењена", "Password_Policy": "Политика лозинке", - "Past_Chats": "Паст Цхатс", - "Payload": "корисна носивост", + "Past_Chats": "Ранија ћаскања", "People": "Људи", - "Permalink": "Линк", "Permissions": "Дозволе", "pin-message": "Пин порука", "pin-message_description": "Дозвола да поставите поруку на каналу", @@ -2203,7 +2040,6 @@ "Room_type_changed_successfully": "врста собе успешно промењен", "Room_type_of_default_rooms_cant_be_changed": "Ово је подразумевана соба и врста се не може променити, молимо вас да се консултујете са својим администратором.", "Room_unarchived": "соба неархивирано", - "Room_uploaded_file_list": "files лист", "Room_uploaded_file_list_empty": "Но фајлови производа.", "Rooms": "Собе", "run-import": "Покрените увоз", @@ -2558,6 +2394,7 @@ "Trigger_Words": "Триггер вордс", "Triggers": "окидачи", "True": "Истина", + "Troubleshoot_Disable_Notifications": "Онемогући обавештења", "Tuesday": "Уторак", "Turn_OFF": "Искључи", "Turn_ON": "Укључити", @@ -2816,7 +2653,6 @@ "You_are_logged_in_as": "Пријављени сте као", "You_are_not_authorized_to_view_this_page": "Нисте ауторизовани да видите ову страницу.", "You_can_change_a_different_avatar_too": "Можете премостити аватар користити за постављање из ове интеграције.", - "You_can_search_using_RegExp_eg": "Можете да претражујете помоћу регекп. на пример /^text$/i", "You_can_use_an_emoji_as_avatar": "Такође можете да користите емотикона као аватар.", "You_can_use_webhooks_to_easily_integrate_livechat_with_your_CRM": "Можете користити вебхоокс да лако интегришу ливеЦхат са ЦРМ.", "You_cant_leave_a_livechat_room_Please_use_the_close_button": "Не можете оставити ЛивеЦхат собу. Молимо вас, користите дугме за затварање.", diff --git a/packages/rocketchat-i18n/i18n/sv.i18n.json b/packages/rocketchat-i18n/i18n/sv.i18n.json index 0e07c8387e04..3781c2dddc49 100644 --- a/packages/rocketchat-i18n/i18n/sv.i18n.json +++ b/packages/rocketchat-i18n/i18n/sv.i18n.json @@ -1369,6 +1369,7 @@ "if_they_are_from": "(om de är från %s)", "If_this_email_is_registered": "Om det här e-postmeddelandet är registrerat skickar vi instruktioner om hur du återställer ditt lösenord. Om du inte får ett mail inom kort, vänligen kom tillbaka och försök igen.", "If_you_are_sure_type_in_your_password": "Skriv in ditt lösenord om du är säker:", + "Members_List": "Medlemslista", "If_you_are_sure_type_in_your_username": "Om du är säker, skriv in ditt användarnamn:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Om du inte har en skicka ett mail till [omni@rocket.chat] (mailto: omni@rocket.chat) för att få din.", "Iframe_Integration": "Iframe Integration", @@ -1742,6 +1743,7 @@ "Mail_Message_No_messages_selected_select_all": "Du har inte valt några meddelanden", "Mail_Messages": "E-posta meddelanden", "Mail_Messages_Instructions": "Välj vilka meddelanden du vill skicka via e-post genom att klicka på dem", + "Room_uploaded_file_list": "Fillista", "Mail_Messages_Subject": "Här är en utvald del av %s meddelanden", "Mailer": "E-postskickare", "Mailer_body_tags": "Du måste använda [unsubscribe] för prenumeration länken.
        Du kan använda [name], [fname], [lname] för användarens fullständiga namn, förnamn eller efternamn, respektive.
        Du kan använda [email] för användarens e-post.", @@ -1783,7 +1785,6 @@ "Max_length_is": "Max längd är%s", "Media": "Media", "Medium": "Medium", - "Members_List": "Medlemslista", "mention-all": "Nämna alla", "mention-all_description": "Tillstånd att använda @all mention", "mention-here": "Nämna här", @@ -2285,7 +2286,6 @@ "Room_type_changed_successfully": "Rummets typ har ändrats", "Room_type_of_default_rooms_cant_be_changed": "Detta är ett standardrum och typen kan inte ändras. Vänligen kontakta din administratör.", "Room_unarchived": "Rummet har avarkiverats", - "Room_uploaded_file_list": "Fillista", "Room_uploaded_file_list_empty": "Inga filer tillgängliga.", "Rooms": "Rum", "Run_only_once_for_each_visitor": "Kör endast en gång per besökare", @@ -2653,6 +2653,7 @@ "Trigger_Words": "Trigger ord", "Triggers": "Triggers", "True": "Sant", + "Troubleshoot_Disable_Notifications": "Inaktivera notifieringar", "Tuesday": "Tisdag", "Turn_OFF": "Stäng av", "Turn_ON": "Sätta på", diff --git a/packages/rocketchat-i18n/i18n/ta-IN.i18n.json b/packages/rocketchat-i18n/i18n/ta-IN.i18n.json index 1d33eadee0b0..21520234b607 100644 --- a/packages/rocketchat-i18n/i18n/ta-IN.i18n.json +++ b/packages/rocketchat-i18n/i18n/ta-IN.i18n.json @@ -1298,6 +1298,7 @@ "if_they_are_from": "(அவர்கள் %s இலிருந்து இருந்தால்)", "If_this_email_is_registered": "இந்த மின்னஞ்சலைப் பதிவு செய்தால், உங்கள் கடவுச்சொல்லை எவ்வாறு மீட்டமைப்பது என்பதைப் பற்றிய அறிவுரைகளை அனுப்புவோம். விரைவில் மின்னஞ்சலை நீங்கள் பெறாவிட்டால், மீண்டும் திரும்பி, மீண்டும் முயற்சிக்கவும்.", "If_you_are_sure_type_in_your_password": "உங்கள் கடவுச்சொல்லை உறுதி வகை என்றால்:", + "Members_List": "உறுப்பினர்கள் பட்டியல்", "If_you_are_sure_type_in_your_username": "நீங்கள் உங்கள் பயனர் பெயர் உறுதி வகை என்றால்:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "உங்களுக்கு ஒரு மின்னஞ்சல் அனுப்பினால் [omni@rocket.chat] (mailto: omni@rocket.chat) உங்களுடையது.", "Iframe_Integration": "Iframe ஒருங்கிணைப்பு", @@ -1670,6 +1671,7 @@ "Mail_Message_No_messages_selected_select_all": "நீங்கள் எந்த செய்திகளை தேர்ந்தெடுக்கவில்லை. ", "Mail_Messages": "மின்னஞ்சல் செய்திகளை", "Mail_Messages_Instructions": "செய்திகள், கிளிக் செய்து நீங்கள் மின்னஞ்சல் வழியாக அனுப்ப வேண்டும் இது செய்திகளை தேர்வு", + "Room_uploaded_file_list": "கோப்புகள் பட்டியல்", "Mail_Messages_Subject": "இங்கே %s செய்திகள் ஒரு தேர்ந்தெடுத்த பகுதியை தான்", "Mailer": "வரியாகும்", "Mailer_body_tags": "நீங்கள் சந்தா இணைப்பு [unsubscribe] பயன்படுத்த வேண்டும்.
        முறையே பயனர் முழு பெயர், முதல் பெயர் அல்லது கடைசி பெயரை நீங்கள் [name], [fname], பயன்படுத்தலாம் [lname].
        நீங்கள் பயனர் மின்னஞ்சல் ஐந்து [email] பயன்படுத்தலாம்.", @@ -1711,7 +1713,6 @@ "Max_length_is": "அதிகபட்சம்%s", "Media": "ஊடகம்", "Medium": "நடுத்தர", - "Members_List": "உறுப்பினர்கள் பட்டியல்", "mention-all": "எல்லாவற்றையும் குறிப்பிடுங்கள்", "mention-all_description": "@ எல்லாவற்றையும் பயன்படுத்த அனுமதி", "mention-here": "இங்கே குறிப்பிடவும்", @@ -2203,7 +2204,6 @@ "Room_type_changed_successfully": "அறை வகை வெற்றிகரமாக மாற்றப்பட்டது", "Room_type_of_default_rooms_cant_be_changed": "இது இயல்புநிலை அறை மற்றும் வகை மாற்ற முடியாது, தயவுசெய்து உங்கள் நிர்வாகியுடன் ஆலோசிக்கவும்.", "Room_unarchived": "மீட்டெடுக்கப்பட்டது அறை", - "Room_uploaded_file_list": "கோப்புகள் பட்டியல்", "Room_uploaded_file_list_empty": "எந்த கோப்புகளை கிடைக்கும்.", "Rooms": "மனை", "run-import": "இறக்குமதி இயக்கவும்", @@ -2558,6 +2558,7 @@ "Trigger_Words": "தூண்டுதல் வார்த்தைகள்", "Triggers": "தூண்டுதல்கள்", "True": "உண்மை", + "Troubleshoot_Disable_Notifications": "அறிவிப்புகளை முடக்கு", "Tuesday": "செவ்வாய்க்கிழமை", "Turn_OFF": "அணைக்க", "Turn_ON": "திரும்பவும்", diff --git a/packages/rocketchat-i18n/i18n/th-TH.i18n.json b/packages/rocketchat-i18n/i18n/th-TH.i18n.json index 2a3b01a4d928..57087d762ab6 100644 --- a/packages/rocketchat-i18n/i18n/th-TH.i18n.json +++ b/packages/rocketchat-i18n/i18n/th-TH.i18n.json @@ -1297,6 +1297,7 @@ "if_they_are_from": "(ถ้าพวกเขามาจาก %s)", "If_this_email_is_registered": "หากอีเมลนี้ได้รับการลงทะเบียนเราจะส่งคำแนะนำเกี่ยวกับวิธีรีเซ็ตรหัสผ่านของคุณ หากคุณไม่ได้รับอีเมลในไม่ช้าโปรดกลับมาลองอีกครั้ง", "If_you_are_sure_type_in_your_password": "หากคุณแน่ใจว่าพิมพ์รหัสผ่านของคุณ:", + "Members_List": "รายชื่อสมาชิก", "If_you_are_sure_type_in_your_username": "หากคุณแน่ใจว่าพิมพ์ชื่อผู้ใช้ของคุณ:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "หากคุณไม่มีอีเมลส่งไปที่ [omni@rocket.chat] (mailto: omni@rocket.chat) เพื่อรับของคุณ", "Iframe_Integration": "การรวม Iframe", @@ -1669,6 +1670,7 @@ "Mail_Message_No_messages_selected_select_all": "คุณยังไม่ได้เลือกข้อความใด ๆ", "Mail_Messages": "ข้อความจดหมาย", "Mail_Messages_Instructions": "เลือกข้อความที่คุณต้องการส่งทางอีเมลโดยคลิกที่ข้อความ", + "Room_uploaded_file_list": "รายการไฟล์", "Mail_Messages_Subject": "นี่คือส่วนที่เลือกของ %s messages", "Mailer": "Mailer", "Mailer_body_tags": "คุณ ต้องใช้ [ยกเลิกการบอกรับเป็นสมาชิก] สำหรับลิงก์ยกเลิกการสมัคร
        คุณสามารถใช้ [name], [fname], [lname] ตามลำดับเพื่อชื่อเต็มของผู้ใช้ชื่อหรือนามสกุลตามลำดับ
        คุณสามารถใช้ [email] สำหรับอีเมลของผู้ใช้", @@ -1710,7 +1712,6 @@ "Max_length_is": "ความยาวสูงสุดคือ%s", "Media": "สื่อ", "Medium": "ขนาดกลาง", - "Members_List": "รายชื่อสมาชิก", "mention-all": "กล่าวถึงทั้งหมด", "mention-all_description": "อนุญาตให้ใช้ @all พูดถึง", "mention-here": "กล่าวถึงที่นี่", @@ -2202,7 +2203,6 @@ "Room_type_changed_successfully": "เปลี่ยนประเภทห้องเรียบร้อยแล้ว", "Room_type_of_default_rooms_cant_be_changed": "นี่คือห้องพักที่เป็นค่าเริ่มต้นและไม่สามารถเปลี่ยนประเภทได้โปรดปรึกษาผู้ดูแลระบบของคุณ", "Room_unarchived": "ห้องเก็บถาวร", - "Room_uploaded_file_list": "รายการไฟล์", "Room_uploaded_file_list_empty": "ไม่มีไฟล์", "Rooms": "ห้องพัก", "run-import": "เรียกใช้การนำเข้า", @@ -2557,6 +2557,7 @@ "Trigger_Words": "เรียกใช้คำ", "Triggers": "ทริกเกอร์", "True": "จริง", + "Troubleshoot_Disable_Notifications": "ปิดการแจ้งเตือน", "Tuesday": "วันอังคาร", "Turn_OFF": "ปิด", "Turn_ON": "เปิด", diff --git a/packages/rocketchat-i18n/i18n/tr.i18n.json b/packages/rocketchat-i18n/i18n/tr.i18n.json index aaafc50cedc7..c837a10a5854 100644 --- a/packages/rocketchat-i18n/i18n/tr.i18n.json +++ b/packages/rocketchat-i18n/i18n/tr.i18n.json @@ -1558,6 +1558,7 @@ "if_they_are_from": "(%s'den geliyorsa)", "If_this_email_is_registered": "Bu e-posta kayıtlıysa, şifrenizi nasıl sıfırlayacağınıza ilişkin talimatlar göndeririz. Kısa süre içinde bir e-posta almıyorsanız, lütfen geri dönün ve tekrar deneyin.", "If_you_are_sure_type_in_your_password": "Eminseniz şifrenizi girin:", + "Members_List": "Üyeler Listesi", "If_you_are_sure_type_in_your_username": "Eminseniz kullanıcı adınız girin:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "E-postanız yoksa sizinkini almak için [omni@rocket.chat] (mailto: omni@rocket.chat) adresine bir e-posta gönderin.", "If_you_didnt_ask_for_reset_ignore_this_email": "Şifrenizi sıfırlamayı istemediyseniz, bu e-postayı yok sayabilirsiniz.", @@ -1976,6 +1977,7 @@ "Mail_Message_No_messages_selected_select_all": "Herhangi bir ileti seçmediniz", "Mail_Messages": "Posta İletileri", "Mail_Messages_Instructions": "E-postayla göndermek istediğiniz iletileri tıklayarak seçin", + "Room_uploaded_file_list": "Dosyalar Listesi", "Mail_Messages_Subject": "İşte %s mesajların seçilen bir kısım var", "Mailer": "Postacı", "Mailer_body_tags": "Abonelikten çıkma bağlantısı için [unsubscribe] kullanmak zorundasınız.
        Kullanıcının ad-soyadı, adı veya soyadı için sırasıyla [name], [fname] veya [lname] kullanabilirsiniz.
        Kullanıcının e-postası için [email] kullanabilirsiniz.", @@ -2024,7 +2026,6 @@ "Maximum": "Maksimum", "Media": "Medya", "Medium": "Orta", - "Members_List": "Üyeler Listesi", "mention-all": "Tümünden Bahset", "mention-all_description": "@all bahsetmesini kullanma izni", "mention-here": "Burada Bahset", @@ -2594,7 +2595,6 @@ "Room_type_changed_successfully": "Oda türü başarıyla değiştirildi", "Room_type_of_default_rooms_cant_be_changed": "Bu varsayılan oda ve tür değiştirilemez, lütfen yöneticinize danışın.", "Room_unarchived": "Oda arşivden çıkarıldı", - "Room_uploaded_file_list": "Dosyalar Listesi", "Room_uploaded_file_list_empty": "Hiç dosya yok.", "Rooms": "Odalar", "Routing": "Yönlendirme", @@ -3003,6 +3003,7 @@ "Trigger_Words": "Tetikleyici Sözcükler", "Triggers": "Tetikleyiciler", "True": "Doğru", + "Troubleshoot_Disable_Notifications": "Bildirimleri kapat", "Tuesday": "Salı", "Turn_OFF": "Kapat", "Turn_ON": "Aç", diff --git a/packages/rocketchat-i18n/i18n/ug.i18n.json b/packages/rocketchat-i18n/i18n/ug.i18n.json index a05d428db5bb..17a770fa68c6 100644 --- a/packages/rocketchat-i18n/i18n/ug.i18n.json +++ b/packages/rocketchat-i18n/i18n/ug.i18n.json @@ -489,6 +489,7 @@ "How_responsive_was_the_chat_agent": "توردا بار مۇلازىمنىڭ ئىنكاس سۈرئىتى قانداق ؟", "How_satisfied_were_you_with_this_chat": "سىزنىڭچە بۇ قېتىملىق پاراڭلىشىش قانائەتلىك بولدىمۇ ؟", "If_you_are_sure_type_in_your_password": ":ئەگەر سىز جەزملەشتۈرسىڭىز ، سىزنىڭ پارولنى كىرگۈزىڭ", + "Members_List": "ئەزالار تىزىملىكى", "If_you_are_sure_type_in_your_username": "ئەگەر سىز جەزملەشتۈرسىڭىز ، ئەزا ئىسمىنى كىرگۈزىڭ:", "Importer_Archived": "ھۆججەتلەر تۈرگە ئايرىلىپ ساقلاندى", "Importer_done": "كىرگۈزۈش ئاللىبۇرۇن پۈتتى !", @@ -656,6 +657,7 @@ "Mail_Message_No_messages_selected_select_all": "غا موھتاجمۇ ؟全选سىز تېخى ھېچقانداق ئۇچۇرنى تاللىمىدىڭىز .ھەممە ئېنىق ئۇچۇرنى", "Mail_Messages": "ئىلخەت يوللاش", "Mail_Messages_Instructions": "چېكىش ئارقىلىق سىزنىڭ ئىلخەتتە يوللىماقچى بولغان ئۇچۇرىڭىزنى يوللاڭ .", + "Room_uploaded_file_list": "ھۆججەت تىزىملىكى", "Mail_Messages_Subject": "تاللىغان بىر قىسىم ئۇچۇر .%s بۇ بولسا", "Mailer": "يوللىغۇچى", "Mailer_body_tags": "ئايرىم ھالدا ئەزانىڭ تولۇق ئىسمى ، ئىسمى ياكى فامىلىسى قىلىپ ئىشلىتىشكە بولىدۇ . [lname] ،ۋە[fname]،[name]سىز
        بۇنى مۇشتەرى قىلىشنى بىكار قىلىشنىڭ ئۇلانمىسى قىلىشىڭىز كېرەك . [unsubscribe] چوقۇم سىز", @@ -669,7 +671,6 @@ "Markdown_Headers": "تېمىسىMarkdown", "Markdown_SupportSchemesForLink": "قوللايدىغان ئۇلانما كېلىشمىىMarkdown", "Markdown_SupportSchemesForLink_Description": "ئىنگلىزچە پەش ئارقىلىق ئايرىپ تۇرىدىغان كېلىشمە تىزىملىكى", - "Members_List": "ئەزالار تىزىملىكى", "Mentions": "تىلغا ئېلىش", "Mentions_default": "تىلغا ئېلىش (بەلگىلەنگەن)", "Message_AllowBadWordsFilter": "ئۇچۇردىكى سەت گەپنى سۈزگۈچتىن ئۆتكۈزمەسلىكنى رۇخسەت قىلىش", @@ -913,7 +914,6 @@ "Room_topic_changed_successfully": "ئۆينىڭ تېمىسى ئۇتۇقلۇق ئۆزگەرتىلدى", "Room_type_changed_successfully": "ئۆينىڭ تىپى ئاللىبۇرۇن ئۇتۇقلۇق ئۆزگەرتىلدى", "Room_unarchived": "ئۆينىڭ تۈرگە ئايرىپ ساقلىنىش ھالىتى ئاللىبۇرۇن بىكار قىلىندى", - "Room_uploaded_file_list": "ھۆججەت تىزىملىكى", "Room_uploaded_file_list_empty": "ھېچقانداق ھۆججەت يوق", "Rooms": "ئۆي", "Running_Instances": "ھازىر يۈرگۈزۈلىۋاتقان مىسال", diff --git a/packages/rocketchat-i18n/i18n/uk.i18n.json b/packages/rocketchat-i18n/i18n/uk.i18n.json index 533d1785a33c..8d26be541749 100644 --- a/packages/rocketchat-i18n/i18n/uk.i18n.json +++ b/packages/rocketchat-i18n/i18n/uk.i18n.json @@ -14,9 +14,9 @@ "%_of_conversations": "% розмов", "Accept": "Погоджуюсь", "Accept_incoming_livechat_requests_even_if_there_are_no_online_agents": "Приймати запити із livechat, навіть коли немає підключених співробітників", - "Accept_new_livechats_when_agent_is_idle": "Приймайти нові запити livechat, коли агент не працює", + "Accept_new_livechats_when_agent_is_idle": "Приймати нові запити livechat, коли представник не активний ", "Accept_with_no_online_agents": "Приймати із непідключенними співробітниками", - "access-mailer": "Доступ до електронної пошти", + "access-mailer": "Доступ до екрана поштової скриньки", "access-mailer_description": "Дозволити надсилати електронний лист усім користувачам", "access-permissions": "Дозвіл до налаштувань прав доступу", "access-permissions_description": "Змінити дозволи для різних ролей", @@ -26,9 +26,9 @@ "Accessing_permissions": "Отримання доступу до дозволів", "Account_SID": "SID облікового запису", "Accounts": "Облікові записи", - "Accounts_Admin_Email_Approval_Needed_Default": "

        Користувач [назва] ([email])зареєстровано.

        Будь ласка, виберіть \"Адміністрація ->Користувачі\", щоб активувати або видалити його.

        ", + "Accounts_Admin_Email_Approval_Needed_Default": "

        Користувача [name] ([email])зареєстровано.

        Будь ласка, виберіть \"Адміністрація ->Користувачі\", щоб активувати або видалити його.

        ", "Accounts_Admin_Email_Approval_Needed_Subject_Default": "Новий користувач зареєстрований і потребує схвалення", - "Accounts_Admin_Email_Approval_Needed_With_Reason_Default": "

        Користувач [назва] ([email])зареєстровано.

        Причина: [причина]

        Будь ласка, виберіть \"Адміністрація ->Користувачі\", щоб активувати або видалити її.

        ", + "Accounts_Admin_Email_Approval_Needed_With_Reason_Default": "

        Користувача [name] ([email])зареєстровано.

        Причина: [reason]

        Будь ласка, виберіть \"Адміністрація ->Користувачі\", щоб активувати або видалити її.

        ", "Accounts_AllowAnonymousRead": "Дозволити читати анонімним користувачам", "Accounts_AllowAnonymousWrite": "Дозволити записувати анонімним користувачам", "Accounts_AllowDeleteOwnAccount": "Дозволити користувачам видаляти власний обліковий запис", @@ -54,7 +54,7 @@ "Accounts_BlockedUsernameList": "Перелік заблокованих користувачів", "Accounts_BlockedUsernameList_Description": "Перелік заблокованих імен користувачів (без урахування регістру), розділених комами ", "Accounts_CustomFields_Description": "Очікується правильний JSON-об'єкт, в якому ключ - це назва поля, а його зміст - словник із налаштуваннями цього поля. Приклад:
        {\n \"role\": {\n  \"type\": \"select\",\n  \"defaultValue\": \"student\",\n  \"options\": [\"teacher\", \"student\"],\n  \"required\": true,\n  \"modifyRecordField\": {\n   \"array\": true,\n   \"field\": \"roles\"\n  }\n },\n \"twitter\": {\n  \"type\": \"text\",\n  \"required\": true,\n  \"minLength\": 2,\n  \"maxLength\": 10\n }\n} ", - "Accounts_CustomFieldsToShowInUserInfo": "Користувацькі поля для відображення в інформаціїї користувача", + "Accounts_CustomFieldsToShowInUserInfo": "Користувацькі поля для відображення в інформації про користувача", "Accounts_Default_User_Preferences": "Налаштування користувача за замовчуванням", "Accounts_Default_User_Preferences_audioNotifications": "Стандартне звукове сповіщення", "Accounts_Default_User_Preferences_desktopNotifications": "Стандартне сповіщення для комп'ютера", @@ -62,8 +62,8 @@ "Accounts_Default_User_Preferences_not_available": "Не вдалося отримати параметри користувача, оскільки користувач ще не налаштований", "Accounts_DefaultUsernamePrefixSuggestion": "Запропонований префікс користувача за умовчанням", "Accounts_denyUnverifiedEmail": "Заборонити неперевірену електронну пошту", - "Accounts_Email_Activated": "[ім'я]

        Ваш обліковий запис активовано.

        ", - "Accounts_Email_Activated_Subject": "Рахунок активовано", + "Accounts_Email_Activated": "[name]

        Ваш обліковий запис активовано.

        ", + "Accounts_Email_Activated_Subject": "Обліковий запис активовано", "Accounts_Email_Approved": "[ім'я]

        Ваш обліковий запис було схвалено.

        ", "Accounts_Email_Approved_Subject": "Обліковий запис схвалено", "Accounts_Email_Deactivated": "[ім'я]

        Ваш обліковий запис було вимкнено.

        ", @@ -73,7 +73,7 @@ "Accounts_EmailVerification_Description": "Переконайтеся, що у вас є правильні налаштування SMTP, щоб використовувати цю функцію", "Accounts_Enrollment_Email_Subject_Default": "Ласкаво просимо до [Site_Name]", "Accounts_Enrollment_Email": "Електронна пошта для реєстрації", - "Accounts_Enrollment_Email_Description": "Ви можете використовувати
        • [name], [fname], [lname] повне ім'я користувача, ім'я або прізвище, відповідно.
        • Ви можете використовувати [email] для електронної пошти користувача.
        ", + "Accounts_Enrollment_Email_Description": "Ви можете використовувати
        • [name], [fname], [lname] для повного ім’я користувача, ім'я, прізвища, відповідно.
        • Ви можете використовувати [email] для електронної пошти користувача.
        ", "Accounts_ForgetUserSessionOnWindowClose": "Закрити сесію користувача після закриття вікна", "Accounts_Iframe_api_method": "метод API", "Accounts_Iframe_api_url": "API Url", @@ -88,12 +88,12 @@ "Accounts_OAuth_Custom_Button_Label_Text": "Текст кнопки", "Accounts_OAuth_Custom_Enable": "Включено", "Accounts_OAuth_Custom_id": "Id", - "Accounts_OAuth_Custom_Identity_Path": "ідентичність Шлях", + "Accounts_OAuth_Custom_Identity_Path": "Шлях ідентифікації ", "Accounts_OAuth_Custom_Identity_Token_Sent_Via": "Токен ідентифікації відправлено через", "Accounts_OAuth_Custom_Login_Style": "Стиль входу", "Accounts_OAuth_Custom_Merge_Users": "Об'єднати користувачів", "Accounts_OAuth_Custom_Access_Token_Param": "Назва Параметру для токена доступу", - "Accounts_OAuth_Custom_Scope": "Область застовання", + "Accounts_OAuth_Custom_Scope": "Охоплення", "Accounts_OAuth_Custom_Secret": "Секрет", "Accounts_OAuth_Custom_Show_Button_On_Login_Page": "Показувати кнопку на сторінці входу", "Accounts_OAuth_Custom_Token_Path": "Шлях до токену", @@ -103,20 +103,20 @@ "Accounts_OAuth_Custom_Roles_Claim": "Назви полів ролей/груп", "Accounts_OAuth_Custom_Merge_Roles": "Об'єднати ролі з SSO", "Accounts_OAuth_Drupal": "Дозволити вхід через Drupal", - "Accounts_OAuth_Drupal_callback_url": "Drupal oAuth2 Redire URI", + "Accounts_OAuth_Drupal_callback_url": "URI переадресації oAuth2 Drupal", "Accounts_OAuth_Drupal_id": "Drupal oAuth2 ідентифікатор клієнта", "Accounts_OAuth_Drupal_secret": "Drupal oAuth2 Client Secret", "Accounts_OAuth_Facebook": "Логін Facebook", "Accounts_OAuth_Facebook_callback_url": "URL зворотнього виклику facebook", - "Accounts_OAuth_Facebook_id": "Facebook App Id", + "Accounts_OAuth_Facebook_id": "Facebook App ID", "Accounts_OAuth_Facebook_secret": "Секрет facebook", "Accounts_OAuth_Github": "OAuth Увімкнено", "Accounts_OAuth_Github_callback_url": "URL зворотнього виклику Github ", "Accounts_OAuth_GitHub_Enterprise": "OAuth Увімкнено", "Accounts_OAuth_GitHub_Enterprise_callback_url": "URL-адреса зворотного виклику GitHub Enterprise", - "Accounts_OAuth_GitHub_Enterprise_id": "ідентифікатор клієнта", + "Accounts_OAuth_GitHub_Enterprise_id": "Ідентифікатор клієнта", "Accounts_OAuth_GitHub_Enterprise_secret": "клієнт Секрет", - "Accounts_OAuth_Github_id": "ідентифікатор клієнта", + "Accounts_OAuth_Github_id": "Ідентифікатор клієнта", "Accounts_OAuth_Github_secret": "клієнт Секрет", "Accounts_OAuth_Gitlab": "OAuth Увімкнено", "Accounts_OAuth_Gitlab_callback_url": "зворотня URL-адреса GitLab", @@ -152,7 +152,7 @@ "Accounts_OAuth_Twitter_id": "Twitter Id", "Accounts_OAuth_Twitter_secret": "Twitter Секрет", "Accounts_OAuth_Wordpress": "Логін WordPress", - "Accounts_OAuth_Wordpress_authorize_path": "авторизуватися Шлях", + "Accounts_OAuth_Wordpress_authorize_path": "Шлях авторизації", "Accounts_OAuth_Wordpress_callback_url": "зворотня URL-адреса WordPress", "Accounts_OAuth_Wordpress_id": "WordPress Id", "Accounts_OAuth_Wordpress_identity_path": "ідентичність Шлях", @@ -187,7 +187,7 @@ "Accounts_Registration_AuthenticationServices_Enabled": "Реєстрація з Authentication Services", "Accounts_RegistrationForm": "Форма реєстрацїї", "Accounts_RegistrationForm_Disabled": "Вимкнено", - "Accounts_RegistrationForm_LinkReplacementText": "Форма реєстрації Посилання Заміна тексту", + "Accounts_RegistrationForm_LinkReplacementText": "Текст заміни посилання реєстраційної форми", "Accounts_RegistrationForm_Public": "суспільний", "Accounts_RegistrationForm_Secret_URL": "секретний URL", "Accounts_RegistrationForm_SecretURL": "Форма реєстрації Секретного URL", @@ -203,7 +203,12 @@ "Accounts_Directory_DefaultView": "Каталог за замовчуванням для перегляду", "Accounts_SetDefaultAvatar": "Встановити аватар за замовчуванням", "Accounts_SetDefaultAvatar_Description": "Спробувати визначити аватар із сервісів OAuth або Gravatar", + "Accounts_Set_Email_Of_External_Accounts_as_Verified": "Встановити електронну пошту для зовнішніх облікових записів як підтверджену", + "Accounts_Set_Email_Of_External_Accounts_as_Verified_Description": "У облікових записах, створених із зовнішніх служб (наприклад, LDAP, OAth тощо), електронні листи перевірятимуться автоматично", "Accounts_ShowFormLogin": "Показати форму входу за замовчуванням", + "Accounts_TwoFactorAuthentication_By_Email_Enabled": "Увімкніть двофакторну автентифікацію електронною поштою", + "Accounts_TwoFactorAuthentication_By_Email_Enabled_Description": "Користувачі із підтвердженою електронною поштою та включеною опцією у своєму профілі, отримають електронний лист із тимчасовим кодом для авторизації певних дій, таких як вхід, збереження профілю тощо.", + "Accounts_TwoFactorAuthentication_By_Email_Auto_Opt_In": "Автоматично вибирайте нових користувачів для двох факторів за допомогою електронної пошти", "Accounts_TwoFactorAuthentication_Enabled": "Увімкнути двохфакторну автентифікацію ", "Accounts_TwoFactorAuthentication_MaxDelta": "Максимальна дельта", "Accounts_UserAddedEmail_Default": "

        Ласкаво просимо до [Site_Name]

        Перейти до [Site_URL] і спробувати краще рішення чату з відкритим вихідним кодом на сьогоднішній день!

        Ви можете увійти в систему, використовуючи адресу електронної пошти: [email] і пароль: [password]. Можливо, вам буде потрібно змінити його після першого входу в систему.", @@ -212,7 +217,7 @@ "Accounts_UseDNSDomainCheck": "Використовувати DNS перевірку домену", "Accounts_UserAddedEmailSubject_Default": "Ви були додані до [Site_Name]", "Accounts_UserAddedEmail_Description": "Ви можете використовувати наступні наповнювачі:

        • [name], [fname], [lname] повне ім'я користувача, ім'я або прізвище, відповідно.
        • [email] для електронної пошти користувача.
        • [password] для пароля користувача.
        • [Site_Name] і [Site_URL] для імені додатки і URL відповідно.
        ", - "Activate": "активувати", + "Activate": "Активувати", "Activity": "За останньою активністю", "Add": "додати", "add-oauth-service": "Додати сервіс Oauth", @@ -252,19 +257,19 @@ "Agent_Info": "Інформація про співробітника", "Agents": "Агенти", "Agent_added": "агент додано", - "Agent_removed": "агент видалений", + "Agent_removed": "Представника вилучено", "Alerts": "Сповіщення", "Alias": "Псевдонім", "Alias_Format": "Формат псевдоніму", "Alias_Format_Description": "Імпортувати повідомлення із Slack за псевдонімом; %s буде замінено на ім'я користувача. Якщо не вказано, псевдонім не буде використовуватися.", "Alias_Set": "Налаштування псевдоніму", "Aliases": "Псевдоніми", - "All": "всі", + "All": "Всі", "All_added_tokens_will_be_required_by_the_user": "Всі доданіі токени мають бути обов'язковими для користувача", - "All_channels": "всі канали", + "All_channels": "Всі канали", "All_closed_chats_have_been_removed": "Всі закриті чати були видалені", - "All_logs": "всі журнали", - "All_messages": "всі повідомлення", + "All_logs": "Всі журнали", + "All_messages": "Всі повідомлення", "All_users": "Всі користувачі", "All_users_in_the_channel_can_write_new_messages": "Всі користувачі каналу можуть добавляти повідомлення", "Allow_collect_and_store_HTTP_header_informations": "Дозволено збирати та зберігати інформацію заголовка HTTP", @@ -278,7 +283,7 @@ "Alphabetical": "В алфавітному порядку", "Always_open_in_new_window": "Дозволити відкривати у новому вікні", "Analytics": "аналітика", - "Analytics_features_enabled": "особливості Включено", + "Analytics_features_enabled": "Увімкнені функції", "Analytics_features_messages_Description": "Відстежує власні події, пов’язані з діями, які користувач виконує над повідомленнями.", "Analytics_features_rooms_Description": "Відстежує власні події, пов’язані з діями на каналі чи групі (створювати, залишати, видаляти).", "Analytics_features_users_Description": "Відстежує власні події, пов’язані з діями, пов'язаними з користувачами (час скидання пароля, зміни зображення профілю, тощо).", @@ -374,6 +379,8 @@ "Apps_Framework_Development_Mode": "Увімкнути режим розробки", "Apps_Framework_Development_Mode_Description": "Режим розробки дозволяє встановлювати додатки не з Rocket.Chat's Marketplace.", "Apps_Framework_enabled": "Увімкнено Framework додатку", + "Apps_Game_Center": "Ігровий центр", + "Apps_Game_Center_Back": "Повернутися до ігрового центру", "Apps_Marketplace_Deactivate_App_Prompt": "Ви дійсно хочете вимкнути цей додаток?", "Apps_Marketplace_Modify_App_Subscription": "Змінити підписку", "Apps_Marketplace_Uninstall_App_Prompt": "Ви дійсно хочете видалити цей додаток?", @@ -398,7 +405,7 @@ "are_also_typing": "досі друкужться", "are_typing": "друкує", "Are_you_sure": "Ви впевнені?", - "Are_you_sure_you_want_to_delete_your_account": "Ви впевнені, що хочете видалити свій аккаунт?", + "Are_you_sure_you_want_to_delete_your_account": "Ви впевнені, що хочете видалити свій обліковий запис?", "Are_you_sure_you_want_to_disable_Facebook_integration": "Ви впевнені що бажаєте відключити інтеграцію із Facebook?", "Are_you_sure_you_want_to_delete_this_record": "Ви впевнені, що хочете видалити цей запис?", "Assets": "Активи", @@ -449,6 +456,8 @@ "AutoTranslate_Enabled": "Увімкнути автоматичний переклад", "AutoTranslate_Enabled_Description": "Увімкнення автоматичного перекладу дозволить користувачам з доступом до автоматичного перекладу автоматично перекладати всі повідомлення на вибрану мову. Може братися додаткова плата", "AutoTranslate_Google": "Google", + "AutoTranslate_Microsoft": "Microsoft", + "AutoTranslate_Microsoft_API_Key": "Ocp-Apim-підписка-ключ", "AutoTranslate_ServiceProvider": "Постачальник послуг", "Available": "Доступний", "Available_agents": "Доступні агенти", @@ -483,7 +492,7 @@ "Back_to_room": "Повернутися до кімнати", "Backup_codes": "Коди резервного копіювання", "ban-user": "Заборонити користувача", - "ban-user_description": "Дозволити заборонити користувача з каналу", + "ban-user_description": "Дозвіл на блокування користувачів каналу", "Beta_feature_Depends_on_Video_Conference_to_be_enabled": "Бета-функція. Залежить від включення відеоконференції.", "Better": "Краще", "Best_first_response_time": "Кращий перший час відповіді", @@ -508,6 +517,8 @@ "Broadcasting_enabled": "Трансяцію ввімкнено", "Broadcasting_media_server_url": "URL-адреса транслюючого мультимедійного серверу", "Browse_Files": "Перегляд файлів", + "Browser_does_not_support_audio_element": "Ваш браузер не підтримує звуковий елемент.", + "Browser_does_not_support_video_element": "Ваш веб-переглядач не підтримує відео елемент.", "Bugsnag_api_key": "Ключ Bugsnag API", "Build_Environment": "Побудова середовища", "bulk-register-user": "Масове створення каналів", @@ -543,7 +554,7 @@ "CAS_Sync_User_Data_Enabled": "Завжди синхронізувати дані користувача", "CAS_Sync_User_Data_Enabled_Description": "Завжди вхід у систему завжди синхронізувати зовнішні дані користувача CAS з доступними атрибутами. Примітка. Атрибути завжди синхронізуються після створення облікового запису.", "CAS_Sync_User_Data_FieldMap": "Карта атрибутів", - "CAS_Sync_User_Data_FieldMap_Description": "Використовуйте цей вхід JSON для побудови внутрішніх атрибутів (key) з зовнішніх атрибутів (value). Імена зовнішніх атрибутів, закріплені за допомогою '%', будуть інтерпольовані у рядках значень.
        Наприклад, `{\" email \":\"% email% \",\" name \":\"% firstname%,% lastname% \"}`

        Карта атрибутів завжди інтерполюється. У CAS 1.0 доступний лише атрибут `username`. Доступні внутрішні атрибути: ім'я користувача, ім'я, електронна адреса, номери; номери - це список, розділений комами, для приєднання до створення після створення користувача, наприклад: {\"rooms\": \"% team%,% department%\"} приєднається до користувачів CAS при створенні до їхньої команди та канал відділу.", + "CAS_Sync_User_Data_FieldMap_Description": "Використовуйте цей вхід JSON для побудови внутрішніх атрибутів (key) з зовнішніх атрибутів (value). Імена зовнішніх атрибутів, закріплені за допомогою '%', будуть інтерпольовані у рядках значень.
        Наприклад, {\"email\":\"%email%\", \"name\":\"%firstname%, %lastname%\"}``

        Карта атрибутів завжди інтерполюється. У CAS 1.0 доступний лише атрибут `username`. Доступні внутрішні атрибути: ім'я користувача, ім'я, електронна адреса, кімнати; кімнати - це список, розділений комами, для приєднання при створенні користувача, наприклад: {\"rooms\": \"%team%,%department%\"} створені користувачі CAS приєднаються до їхньої команди та каналу відділу.", "CAS_trust_username": "Ім'я користувача Trust CAS", "CAS_trust_username_description": "Якщо ввімкнено, Rocket.Chat буде довіряти тому, що будь-яке ім’я користувача CAS належить тому ж користувачеві на Rocket.Chat.
        Це може знадобитися, якщо користувач перейменований на CAS, але може також дозволити людям взяти під контроль Rocket.Chat акаунти шляхом перейменування власних користувачів CAS.", "CAS_version": "Версія CAS", @@ -631,12 +642,13 @@ "Choose_messages": "Вибрати повідомлення", "Choose_the_alias_that_will_appear_before_the_username_in_messages": "Виберіть псевдонім, який буде відображатися перед ім'ям користувача в повідомленнях.", "Choose_the_username_that_this_integration_will_post_as": "Виберіть ім'я користувача, від якого будуть відправлятися повідомлення в цій інтеграції", - "clean-channel-history": "Чиста історія каналу", + "clean-channel-history": "Очистити історію каналу", "clean-channel-history_description": "Дозвіл очищення історії від каналів", "Clean_Usernames": "Очистити імена користувачів", "clear": "Ясно", "Clear_all_unreads_question": "Вилучити всі непрочитані?", "clear_cache_now": "Очистити кеш зараз", + "Clear_filters": "Очистити фільтри", "clear_history": "Чиста історія", "Click_here": "Натисніть тут", "Click_here_for_more_info": "Натисніть тут, щоб отримати додаткову інформацію", @@ -662,9 +674,15 @@ "Closing_chat": "закриття чату", "Cloud": "Хмара", "Cloud_Register_manually": "Реєстрація вручну", + "Cloud_click_here": "Після копіювання тексту перейдіть до хмарної консолі. [Натисніть тут]()", + "Cloud_register_offline_finish_helper": "ПІсля завершення процедури реєстрації у Cloud Console ви маєте побачити текст. Вставте цей текст сюди, щоб закінчити реєстрацію.", + "Cloud_register_offline_helper": "Якщо ваш доступ до мережі обмежено або застосовується фізична ізоляція мережі, робочі простори можна зареєструвати вручну. Скопіюйте текст, що його наведено нижче, та перейдіть до нашої консолі Cloud Console, щоб завершити процес.", + "Cloud_register_success": "Ваша робоча область успішно зареєстрована!", + "Cloud_register_error": "Під час обробки вашого запиту сталася помилка. Будь ласка, спробуйте пізніше.", "Cloud_connect": "З'єднання Rocket.Chat Cloud ", "Cloud_connect_support": "Якщо ви все ще не отримали електронний лист, будь ласка, переконайтеся, що ваша електронна адреса була оновлена вище. Якщо у вас все ще виникають проблеми, ви можете зв’язатися із службою підтримки", "Cloud_console": "Хмарна консоль", + "Cloud_Info": "Інформація про хмару", "Cloud_what_is_it": "Що це?", "Cloud_what_is_it_description": "З'єднання Rocket.Chat Cloud дозволяє підключити свою робочу область Rocket.Chat до послуг, які ми надаємо в нашій хмарі.", "Cloud_what_is_it_services_like": "Такі послуги, як:", @@ -994,6 +1012,7 @@ "Crowd_sync_interval_Description": "Інтервал між синхронізаціями. Приклад \"кожні 24 години\" або \"в перший день тижня\", інші приклади в [Cron Text Parser] (http://bunkat.github.io/later/parsers.html#text)", "Current_Chats": "поточні Чати", "Current_File": "Поточний файл", + "Current_Import_Operation": "Поточна операція імпорту", "Current_Status": "Поточний стан", "Custom": "Користувацький (кастомний)", "Custom CSS": "Користувацький CSS", @@ -1104,6 +1123,7 @@ "Desktop_Notifications_Not_Enabled": "Сповіщення на робочому столі вимкені", "Details": "Деталі", "Different_Style_For_User_Mentions": "Різний стиль для згадування користувачів", + "Direct_message_creation_description": "Ви збираєтеся створити чат із кількома користувачами. Додайте ті, з якими ви хотіли б поговорити, всіма у одному місці, використовуючи прямі повідомлення.", "Direct_message_someone": "Особисте спілкування з кимось", "Direct_Messages": "Особисті повідомлення", "Direct_Reply": "Особиста відповідь", @@ -1129,6 +1149,7 @@ "Disable_Facebook_integration": "Вимкнути інтеграцію в Facebook", "Disable_Notifications": "Вимкнути сповіщення", "Disable_two-factor_authentication": "Вимкнути двофакторну аутентифікацію", + "Disable_two-factor_authentication_email": "Вимкнути двофакторну аутентифікацію", "Disabled": "Вимкнено", "Disallow_reacting": "Заборонити реагування", "Disallow_reacting_Description": "Заборонено реагування", @@ -1161,12 +1182,16 @@ "Domains": "Домени", "Domains_allowed_to_embed_the_livechat_widget": "Список доменів, розділених комами, яким дозволено вставитляти віджети livechat. Залиште порожнім, щоб дозволити всі домени.", "Downloading_file_from_external_URL": "Завантаження із зовнішньої URL-адреси", + "Download_Info": "Інформація про завантаження", "Download_My_Data": "Завантажити мої дані", + "Download_Pending_Files": "Завантажити файли, що очікують", "Download_Snippet": "Завантажити", + "Do_not_provide_this_code_to_anyone": "Не надавати цей код нікому.", "Drop_to_upload_file": "Відкинути завантажений файл", "Dry_run": "Спробувати", "Dry_run_description": "Буде надіслано лише один лист на ту саму адресу, що і в \"Від\". Електронна адреса повинна належати дійсному користувачеві.", "duplicated-account": "Дублювання облікового запису", + "Duplicate_archived_channel_name": "Архівований Channel з ім’ям `#%s` вже існує", "Duplicate_archived_private_group_name": "Архівна приватна група з ім'ям ' %s' існує", "Duplicate_channel_name": "Канал з ім'ям '%s' існує", "Duplicated_Email_address_will_be_ignored": "Дубльовані електронні адреси будуть проігноровані.", @@ -1177,10 +1202,12 @@ "E2E_Enabled": "E2E увімкнено", "E2E_Enable_alert": "Ця функція наразі знаходиться в бета-версії!. Повідомляйте про помилки на github.com/RocketChat/Rocket.Chat/isissue і будьте в курсі:
        - Зашифровані повідомлення зашифрованих кімнат не будуть знайдені пошуковими запитами.
        - Мобільні програми можуть не підтримувати кодовані повідомлення (вони працюють над цим)
        - Боти можуть не бачити зашифровані повідомлення, поки вони не реалізують підтримку
        - Завантаження не будуть зашифровані у цій версії.", "E2E_Enable_description": "Увімкнути опцію для створення зашифрованих груп і мати можливість робити групи та особисті повідомлення зашифровании", + "E2E_Enabled_Default_PrivateRooms": "Увімкніть шифрування для приватних Room по замовчуванню", "E2E_Encryption_Password_Change": "Змінити пароль шифрування", "E2E_Encryption_Password_Explanation": "Тепер ви можете створювати зашифровані приватні групи та особистіі повідомлення. Також Ви можете змінити існуючі приватні групи або DM-файли на зашифровані.

        З цієї причини Вам потрібно зберігати цей пароль десь у безпеці. Вам потрібно буде ввести його на інших пристроях, на яких ви хочете використовувати шифрування e2e.", "E2E_password_reveal_text": "Тепер ви можете створювати зашифровані приватні групи та прямі повідомлення. Ви також можете змінити існуючі приватні групи або DM-файли на зашифровані.

        З цієї причини вам потрібно зберігати цей пароль десь у безпеці. Вам потрібно буде ввести його на інших пристроях, на яких ви хочете використовувати шифрування e2e. Детальніше тут

        Ваш пароль: % s

        Це автоматичний згенерований пароль, Ви можете встановити новий пароль для шифрування введіть будь-який час у будь-якому веб-переглядачі, який ви ввели існуючий пароль.
        Цей пароль зберігається в цьому веб-переглядачі, поки ви не збережете пароль і не відхилите це повідомлення.", "E2E_password_request_text": "Щоб отримати доступ до своїх зашифрованих приватних груп та особистих повідомлень, введіть пароль шифрування.
        Вам потрібно ввести цей пароль, щоб кодувати / декодувати Ваші повідомлення для кожного клієнта, який Ви використовуєте, оскільки ключ не зберігається на сервері.", + "E2E_Reset_Key_Explanation": "Ця опція видалить ваш поточний ключ E2E і вийде з системи.
        Коли ви знову ввійдете в систему, Rocket.Chat згенерує для вас новий ключ і відновить ваш доступ до усіх зашифрованих кімнати, в яких є хоча б один учасник у стані онлайн.
        Rocket.Chat не зможе відновити доступ до кімнат, в яких немає онлайн жодного учасника, бо цього не дозволяє природа шифрування E2E.", "Edit": "Редагувати", "Edit_Invite": "Редагувати запрошення", "Edit_Status": "Редагувати статус", @@ -1213,6 +1240,8 @@ "Email_already_exists": "Email вже існує", "Email_body": "Тіло електронної пошти", "Email_Change_Disabled": "Ваш Rocket.Chat адміністратор відключив можливість зміни електронної пошти", + "Email_Changed_Description": "Доступні такі заповнювачі:
        • [email] для електронної пошти користувача.
        • [Site_Name] та [Site_URL] для імені додатка та URL-адреси відповідно.
        ", + "Email_Changed_Email_Subject": "[Site_Name] - адресу електронної пошти було змінено", "Email_changed_section": "Адреса електронної пошти змінена", "Email_Footer_Description": "Ви можете використовувати наступні наповнювачі:
        • [Site_Name] і [Site_URL] для імені додатку і URL відповідно.
        ", "Email_from": "Від", @@ -1229,6 +1258,7 @@ "email_style_label": "Стиль листа", "email_style_description": "Уникайте вкладених селекторів", "Email_verified": "Електронну адресу підтверджено ", + "email_plain_text_only": "ВІдправляти лише текстові електронні листи", "Emoji": "Emoji", "Emoji_provided_by_JoyPixels": "Emoji надані JoyPixels", "EmojiCustomFilesystem": "Спеціальна файлова система Emoji", @@ -1236,8 +1266,10 @@ "Enable": "Увімкнути", "Enable_Auto_Away": "Увімкнути автоматичне відключення", "Enable_Desktop_Notifications": "Увімкнути сповіщення на робочому столі", + "Enable_inquiry_fetch_by_stream": "Увімкнути отримання даних запитів із сервера за допомогою потоку", "Enable_Svg_Favicon": "Увімкнути значок SVG", "Enable_two-factor_authentication": "Увімкнути двофакторну аутентифікацію", + "Enable_two-factor_authentication_email": "Увімкніть двофакторну автентифікацію електронною поштою", "Enabled": "Увімкнено", "Encrypted": "Зашифровано", "Encrypted_channel_Description": "Повністю зашифрований канал. Пошук не працюватиме із зашифрованими каналами, а сповіщення можуть не відображати вміст повідомлень.", @@ -1248,6 +1280,7 @@ "End_OTR": "Кнець ОТР", "Enter_a_name": "Введіть ім’я", "Enter_a_regex": "Введіть регулярний вираз", + "Enter_a_department_name": "Введіть назву відділу", "Enter_a_room_name": "Введіть назву кімнати", "Enter_a_username": "Введіть ім'я користувача", "Enter_a_tag": "Введіть тег", @@ -1268,6 +1301,7 @@ "error-archived-duplicate-name": "Вже є архівний канал з ім'ям '__room_name__'", "error-avatar-invalid-url": "Недійсна URL-адреса аватара: __url__", "error-avatar-url-handling": "Помилка при роботі установки аватара з URL (__url__) для __username__", + "error-cannot-delete-app-user": "Видалення користувача програми заборонено; щоб видалити користувача, видаліть відповідну програму.", "error-cant-invite-for-direct-room": "Не можна запрошувати користувача в особисті повідомленя", "error-channels-setdefault-is-same": "Стандартні налаштування каналу такі самі, як і змінені.", "error-channels-setdefault-missing-default-param": "BodyParam 'default' є обов'язковим", @@ -1296,6 +1330,7 @@ "error-invalid-channel-start-with-chars": "Недійсний канал. Почніть з @ або #", "error-invalid-custom-field": "Невірне користувацьке поле", "error-invalid-custom-field-name": "Неправильне ім'я, призначене користувацьому полю. Використовуйте тільки латинські букви, цифри, дефіс і підкреслення.", + "error-invalid-custom-field-value": "Неприпустиме значення для поля __field__", "error-invalid-date": "Вказана невірна дата ", "error-invalid-description": "Неправильне опис", "error-invalid-domain": "Недійсний домен", @@ -1305,6 +1340,7 @@ "error-invalid-file-type": "Невірний тип файлу", "error-invalid-file-width": "Неприпустима ширина файлу", "error-invalid-from-address": "Ви повідомили невірну адресу ВІД.", + "error-invalid-inquiry": "Недійсний запит", "error-invalid-integration": "Невірна інтеграція", "error-invalid-message": "Невірне повідомлення", "error-invalid-method": "Неприпустимий метод", @@ -1342,6 +1378,7 @@ "error-password-policy-not-met-repeatingCharacters": "Пароль не відповідає політиці сервера символів заборонених повторюваних символів (у вас занадто багато однакових символів поруч один з одним).", "error-push-disabled": "Push сповіщения вимнуті", "error-remove-last-owner": "Це останній власник. Будь ласка, встановіть нового власника, перш ніж видалити цього.", + "error-tags-must-be-assigned-before-closing-chat": "Перед тим, як закрити чат, необхідно призначити тег(и)", "error-role-in-use": "Неможливо видалити роль, тому що вона є у використанні", "error-role-name-required": "Потрібно вказати ім'я ролі ", "error-room-is-not-closed": "Кімната не закрита", @@ -1364,6 +1401,7 @@ "error-user-registration-disabled": "Реєстрація користувачів відключена", "error-user-registration-secret": "Реєстрація користувача допускається тільки за допомогою секретної URL", "error-you-are-last-owner": "Ви останній власник. Будь ласка, встановіть нового власника, перш ніж покинути кімнату.", + "error-starring-message": "Не вдалося позначити повідомлення зіркою", "Error_404": "Помилка: 404", "Error_changing_password": "Пароль змінено", "Error_loading_pages": "Помилка завантаження сторінок", @@ -1393,6 +1431,7 @@ "Execute_Synchronization_Now": "Виконати синхронізацію зараз", "Exit_Full_Screen": "Вихід із повноекранного режиму", "Expiration": "Термін дії", + "Expiration_(Days)": "Термін дії (днів)", "Export_My_Data": "Експорт моїх даних (JSON)", "expression": "Вираз", "Extended": "Розширений", @@ -1401,6 +1440,14 @@ "External_Service": "Зовнішній сервіс", "Facebook_Page": "Сторінка Facebook ", "Failed": "Помилка", + "Failed_to_activate_invite_token": "Не вдалося активувати маркер запрошення", + "Failed_To_Download_Files": "Не вдалося завантажити файли", + "Failed_to_generate_invite_link": "Не вдалося створити посилання із запрошенням", + "Failed_To_Load_Import_Data": "Не вдалося завантажити дані імпорту", + "Failed_To_Load_Import_History": "Не вдалося завантажити історію імпорту", + "Failed_To_Load_Import_Operation": "Не вдалося завантажити операцію імпорту", + "Failed_To_Start_Import": "Не вдалося запустити операцію імпорту", + "Failed_to_validate_invite_token": "Не вдалося перевірити маркер запрошення", "False": "Ні", "Favorite_Rooms": "Увімкнути улюблені кімнати", "Favorite": "Улюблений", @@ -1430,14 +1477,20 @@ "Field": "Поле", "Field_removed": "Поле видалено", "Field_required": "Поле обов'язкове", + "File": "Файл", + "File_Downloads_Started": "Розпочато завантаження файлів", "Files": "Файли", "File_exceeds_allowed_size_of_bytes": "Файл перевищує допустимий розмір __size__ ", "File_name_Placeholder": "Пошук файлів ...", "File_removed_by_automatic_prune": "Файл видалено автообрізчиком", "File_not_allowed_direct_messages": "Обмін файлами заборонено у приватних повідомленнях", "File_removed_by_prune": "Файл видалено за допомогою обрізки", + "File_Path": "Шлях до файлу", + "File_Type": "Тип файлу", "File_type_is_not_accepted": "Тип файлу не приймається.", "File_uploaded": "Файл завантажено", + "File_uploaded_successfully": "Файл успішно передано", + "File_URL": "URL-адреса файлу", "FileUpload": "Завантаження файлів", "FileUpload_Disabled": "Завантаження файлів відключено.", "FileUpload_Enabled": "Завантажених файлів Включено", @@ -1458,7 +1511,7 @@ "FileUpload_GoogleStorage_Proxy_Uploads": "Проксі завантажень", "FileUpload_GoogleStorage_Proxy_Uploads_Description": "Проксі-сервер завантажує файли через ваш сервер замість прямого доступу до URL-адреси ресурсу", "FileUpload_GoogleStorage_Secret": "Секретне сховище Google", - "FileUpload_GoogleStorage_Secret_Description": "Будь ласка, дотримуйтесь цих інструкційі вставте результат тут.", + "FileUpload_GoogleStorage_Secret_Description": "Будь ласка, дотримуйтесь цих інструкційі вставте результат отут.", "FileUpload_MaxFileSize": "Максимальний розмір завантажуваного файлу (в байтах)", "FileUpload_MaxFileSizeDescription": "Установіть його на -1, щоб видалити обмеження розміру файлу.", "FileUpload_MediaType_NotAccepted": "Типи файлів не приймаються", @@ -1539,6 +1592,7 @@ "Gaming": "Ігри", "General": "Загальні", "Get_link": "Отримати посилання", + "Generate_New_Link": "Створити нове посилання", "github_no_public_email": "У Вашому обліковому записі GitHub, відсутній публічний e-mail", "Give_a_unique_name_for_the_custom_oauth": "Дайте унікальне ім'я для призначеного користувача OAuth", "Give_the_application_a_name_This_will_be_seen_by_your_users": "Дайте додатком ім'я. Це буде видно ваших користувачів.", @@ -1571,13 +1625,14 @@ "Graphql_Enabled": "GraphQL увімкнено", "Group_by_Type": "Групувати за типом", "Group_discussions": "Групові обговорення", - "Group_favorites": "Групи фаворитів", + "Group_favorites": "Групувати улюблене", "Group_mentions_disabled_x_members": "Група згадує `@ all 'і` @ here` була відключена для приміщень, де є більше __total__ членів.", - "Group_mentions_only": "Група згадує тільки", + "Group_mentions_only": "Тільки при згадках у групах", "Hash": "Хеш", "Header": "Заголовок", "Header_and_Footer": "Заголовок і нижній колонтитул", "Healthcare_and_Pharmaceutical": "Медицина / Фармацевтика", + "Here_is_your_authentication_code": "Ось ваш код автентифікації:", "Help_Center": "Центр допомоги", "Helpers": "Помічники", "Hex_Color_Preview": "Hex Color Preview", @@ -1589,7 +1644,7 @@ "Hide_Avatars_Sidebar": "Сховати аватари в бічній панелі", "Hide_counter": "Сховати лічильник", "Hide_flextab": "Сховати праву бічну панель за допомогою клацання", - "Hide_Group_Warning": "Ви впевнені, що ви хочете, щоб приховати групу \"%s\"?", + "Hide_Group_Warning": "Ви впевнені, що хочете приховати групу \"%s\"?", "Hide_Livechat_Warning": "Ви впевнені, що хочете сховати livechat за допомогою \"%s\"?", "Hide_Private_Warning": "Ви впевнені, що хочете приховати обговорення з \"%s\"?", "Hide_roles": "Сховати Ролі", @@ -1618,6 +1673,7 @@ "if_they_are_from": "(якщо вони від %s)", "If_this_email_is_registered": "Якщо ця електронна адреса зареєстрована, ми надішлемо інструкції щодо скидання пароля. Якщо ви не отримаєте електронного листа незабаром, будь ласка, поверніться і повторіть спробу.", "If_you_are_sure_type_in_your_password": "Якщо ви впевнені, введіть свій пароль:", + "Members_List": "Список учасників", "If_you_are_sure_type_in_your_username": "Якщо ви впевнені, введіть ваше ім'я користувача:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Якщо вам не потрібно надсилати електронного листа до [omni@rocket.chat] (mailto: omni@rocket.chat), щоб отримати вас.", "If_you_didnt_ask_for_reset_ignore_this_email": "Якщо Ви не просили скинути пароль, можете проігнорувати цей електронний лист.", @@ -1639,11 +1695,12 @@ "Images": "Зображення", "IMAP_intercepter_already_running": "Інтерфейтер IMAP вже працює", "IMAP_intercepter_Not_running": "Інтерфейс IMAP не працює", - "Impersonate_next_agent_from_queue": "Імпонуйте наступного агента з черги", + "Impersonate_next_agent_from_queue": "Використовуйте наступного представника з черги", "Impersonate_user": "Уособлення користувача", "Impersonate_user_description": "Після ввімкнення інтеграція надсилається від користувача, який ініціював інтеграцію", "Import": "Імпортувати", "Import_Type": "Тип імпорту", + "Import_New_File": "Імпорт нового файлу", "Importer_Archived": "Архівні", "Importer_CSV_Information": "Для імпортера CSV потрібен певний формат, будь ласка, прочитайте документацію про те, як структурувати файл zip:", "Importer_done": "Імпорт завершено!", @@ -1654,6 +1711,7 @@ "Importer_import_cancelled": "Імпорт скасований.", "Importer_import_failed": "Сталася помилка під час виконання імпорту.", "Importer_importing_channels": "Імпорт каналів.", + "Importer_importing_files": "Файли імпортуються.", "Importer_importing_messages": "Імпорт повідомлень.", "Importer_importing_started": "Запуск імпорту.", "Importer_importing_users": "Імпорт користувачів.", @@ -1667,18 +1725,29 @@ "Importer_setup_error": "Під час налаштування імпортера сталася помилка.", "Importer_Slack_Users_CSV_Information": "Завантажений файл повинен бути файлом експорту Користувачів Slack, який є файлом CSV. Дивіться тут, щоб отримати додаткову інформацію:", "Importer_Source_File": "Вибір вихідного файлу", + "importer_status_new": "Не розпочато", + "importer_status_uploading": "Передається файл", + "importer_status_downloading_file": "Завантажується файл", + "importer_status_preparing_started": "Читання файлів", + "importer_status_preparing_users": "Читання файлів користувачів", + "importer_status_importing_started": "Імпорт даних", "importer_status_importing_users": "Імпорт користувачів", "importer_status_importing_channels": "Імпорт каналів", + "importer_status_importing_files": "Імпорт файлів", "importer_status_importing_messages": "Імпорт повідомлень", "importer_status_finishing": "Майже зроблено", + "importer_status_done": "Завершено успішно", "importer_status_import_failed": "Помилка", + "importer_status_import_cancelled": "Скасовано", "Importer_Upload_FileSize_Message": "Налаштування вашого сервера дозволяють завантажувати файли розміром до __maxFileSize__.", "Importer_Upload_Unlimited_FileSize": "Налаштування вашого сервера дозволяють завантажувати файли будь-якого розміру.", "Importer_ExternalUrl_Description": "Ви також можете використовувати URL-адресу для загальнодоступного файлу:", "Importing_channels": "Імпорт каналів", + "Importing_Data": "Імпорт даних", "Importing_messages": "Імпорт повідомлень", "Importing_users": "Імпорт користувачів", "Inclusive": "Все включено", + "In_progress": "В процесі", "Incoming_Livechats": "Вхідні Livechats", "Incoming_WebHook": "Вхідний WebHook", "Include_Offline_Agents": "Включіть офлайн-агенти", @@ -1757,6 +1826,7 @@ "Invalid_Import_File_Type": "Невірний тип файлу імпорту.", "Invalid_name": "Ім'я має бути заповненим", "Invalid_notification_setting_s": "Неприпустима настройка сповіщення: %s", + "Invalid_or_expired_invite_token": "Маркер запрошення недійсний або термін його дії закінчився", "Invalid_pass": "Пароль не має бути пустим", "Invalid_reason": "Причина для приєднання не може бути порожньою", "Invalid_room_name": " %s не є дійсним номером імені", @@ -1769,6 +1839,7 @@ "Invitation_Email_Description": "Ви можете використовувати наступні наповнювачі:
        • [email] для електронної пошти одержувача.
        • [Site_Name] і [Site_URL] для імені додатки і URL відповідно.
        ", "Invitation_Subject": "запрошення Тема", "Invitation_Subject_Default": "Ви були запрошені [Site_Name]", + "Invite_Link": "Посилання із запрошенням", "Invite_user_to_join_channel": "Запросити одного користувача приєднатися до цього каналу", "Invite_user_to_join_channel_all_from": "Запросіть всіх користувачів з [#channel] приєднатися до цього каналу", "Invite_user_to_join_channel_all_to": "Запросити всіх користувачів із цього каналу приєднатися до [#channel]", @@ -1879,7 +1950,7 @@ "LDAP_Authentication": "Увімкнути", "LDAP_Authentication_Password": "Пароль", "LDAP_Authentication_UserDN": "Користувач DN", - "LDAP_Authentication_UserDN_Description": "Користувач LDAP, який виконує операцій пошуку користувачів для аутентифікації інших користувачів, коли вони підписують в.
        Як правило, це обліковий запис служби, створена спеціально для сторонніх інтеграції. Використовуйте повне ім'я, наприклад `CN = Administrator, CN = Users, DC = Example, DC = com`.", + "LDAP_Authentication_UserDN_Description": "Користувач LDAP, який виконує операцій пошуку користувачів для аутентифікації інших користувачів при вході у систему
        Як правило, це обліковий запис служби, створений спеціально для сторонніх інтеграції. Використовуйте повне ім'я, наприклад `cn=Administrator, cn=Users, dc=Example,dc=com`.", "LDAP_Background_Sync": "Фонова синхронізація", "LDAP_Background_Sync_Import_New_Users": "Фонова синхронізація імпортує нових користувачів", "LDAP_Background_Sync_Import_New_Users_Description": "Буде імпортованих всіх користувачів (на основі ваших критеріїв фільтра), які існують у LDAP і не існує в Rocket.Chat", @@ -1939,8 +2010,11 @@ "LDAP_Sync_User_Data_Description": "Зберігати дані користувача в синхронізації з сервером при вході в систему (наприклад: ім'я, адреса електронної пошти).", "LDAP_Sync_User_Data_FieldMap": "Дані користувача Карта Поле", "LDAP_Sync_User_Data_FieldMap_Description": "Налаштування, як поля облікових записів користувачів (наприклад, електронної пошти) заповнюються із запису в LDAP (колись знайшла).
        Як приклад, `{\" сп \":\" ім'я \",\" пошта \":\" електронна пошта \"}` буде вибрати удобочитаем ім'я людини з атрибута CN, і їх електронну пошту від атрибута пошти.
        Доступні поля включають `name` і` email`.", + "LDAP_Sync_User_Data_Groups": "Синхронізація груп LDAP", "manage-integrations": "Управління інтеграцією", + "LDAP_Sync_User_Data_Groups_AutoChannels": "Автоматична синхронізація груп LDAP до Channel", "manage-integrations_description": "Дозвіл керувати інтеграцією серверів", + "LDAP_Sync_User_Data_Groups_AutoChannels_Admin": "Адміністратор Channel", "LDAP_Sync_User_Data_Groups_AutoChannels_Admin_Description": "При автоматичному створенні каналів, які не існують під час синхронізації, цей користувач автоматично стає адміністратором каналу.", "manage-own-integrations": "Керування власними інтеграціями", "manage-own-integrations_description": "Permition, щоб дозволити користувачам створювати та редагувати власну інтеграцію або webhooks", @@ -1952,7 +2026,7 @@ "LDAP_Timeout": "Тайм-аут (мс)", "LDAP_Timeout_Description": "Скільки миль-секунд чекає результат пошуку перед тим, як повернути помилку", "LDAP_Unique_Identifier_Field": "Поле унікального ідентифікатора", - "LDAP_Unique_Identifier_Field_Description": "Яке поле буде використовуватися для з'єднання користувача LDAP і користувач Rocket.Chat. Ви можете повідомити кілька значень, розділених комою, щоб спробувати отримати значення з записи LDAP.
        Значення за замовчуванням є `ObjectGUID, IBM-entryUUID, ідентифікатор GUID, dominoUNID, nsuniqueId, uidNumber`", + "LDAP_Unique_Identifier_Field_Description": "Яке поле використовувати для з'єднання користувача LDAP і користувача Rocket.Chat. Ви можете вказати декілька значень, розділених комою, щоб спробувати отримати значення зі записів LDAP.
        Значення за замовчуванням є `objectGUID,ibm-entryUUID,GUID,dominoUNID,nsuniqueId,uidNumber`", "LDAP_User_Search_Field": "Поле пошуку", "LDAP_User_Search_Field_Description": "Атрибут LDAP, який ідентифікує користувача LDAP, який намагається аутентифікацію. Це поле повинно бути `sAMAccountName` для установки найбільш Active Directory, але це може бить` uid` для інших рішень LDAP, таких як OpenLDAP. Ви можете використовувати `mail` для ідентифікації користувачів по електронній пошті або будь-який інший атрибут ви хочете.
        Можна використовувати декілька значень, розділених комами, щоб дозволити користувачам увійти в систему, використовуючи кілька ідентифікаторів, таких як ім'я користувача або адресу електронної пошти.", "LDAP_User_Search_Filter": "фільтр", @@ -1964,8 +2038,9 @@ "Lead_capture_phone_regex": "Провести захоплення телефону регулярним викликом", "leave-c": "Залишити канали", "leave-p": "Залишити приватні групи", + "Leave": "Залишити", "Leave_Group_Warning": "Ви впевнені, що хочете залишити групу \"%s\"?", - "Leave_Livechat_Warning": "Ви впевнені, що хочете залишити livechat за допомогою \"%s\"?", + "Leave_Livechat_Warning": "Ви впевнені, що хочете залишити livechat з \"%s\"?", "Leave_Private_Warning": "Ви впевнені, що хочете залишити обговорення з \"%s\"?", "Leave_room": "Покинути кімнату", "Leave_Room_Warning": "Ви впевнені, що хочете вийти з кімнати \"%s\"?", @@ -1996,6 +2071,9 @@ "Livechat_Take_Confirm": "Ви хочете взяти цей клієнт?", "Livechat_title": "Livechat Назва", "Livechat_title_color": "Livechat Назва Колір фону", + "Livechat_transfer_to_agent": "__from__ переніс чат __to__", + "Livechat_transfer_to_department": "__from__ переніс чат до відділу __to__", + "Livechat_transfer_return_to_the_queue": "__from__ повернув чат до черги", "Livechat_Users": "Livechat Користувачі", "Livestream_close": "Закрити Livestream", "Livestream_enable_audio_only": "Увімкнути лише звуковий режим", @@ -2005,6 +2083,7 @@ "Livestream_switch_to_room": "Переключитися на поточний канал в поточній кімнаті", "Livestream_url": "Джерело джерела посилання Livestream", "Livestream_url_incorrect": "URL-адреса Livestream неправильна", + "Load_Balancing": "Розподіл навантаження", "Load_more": "Показати більше", "Loading...": "Loading ...", "Loading_more_from_history": "Завантаження більше з історії", @@ -2030,6 +2109,10 @@ "Logistics": "Логістика", "Logout": "Вийти", "Logout_Others": "Вихід з інших Записаний в тих місцях,", + "Longest_chat_duration": "Тривалість найдовшого чату", + "Longest_reaction_time": "Найбільший час реакції", + "Longest_response_time": "Найдовший час відповіді", + "Logs": "Журнали", "mail-messages": "Поштові повідомлення", "mail-messages_description": "Дозвіл на використання опцій поштових повідомлень", "Mail_Message_Invalid_emails": "Ви надали один або кілька неприпустимих листів: %s", @@ -2037,6 +2120,7 @@ "Mail_Message_No_messages_selected_select_all": "Ви не обрали жодного повідомлення.", "Mail_Messages": "поштові повідомлення", "Mail_Messages_Instructions": "Виберіть, які повідомлення ви хочете відправити електронною поштою, натиснувши на повідомлення", + "Room_uploaded_file_list": "Список файлів", "Mail_Messages_Subject": "Ось обрана частина повідомлень %s", "Mailer": "розсилка", "Mailer_body_tags": "Ви повинні використовувати [unsubscribe] для відписку посилання.
        Ви можете використовувати [name], [fname], [lname] повне ім'я користувача, ім'я або прізвище, відповідно.
        Ви можете використовувати [email] для електронної пошти користувача.", @@ -2051,6 +2135,8 @@ "manage-emoji_description": "Дозвіл керувати emojis сервера", "manage-oauth-apps": "Керуйте програмами Oauth", "manage-oauth-apps_description": "Дозвіл керувати додатками сервера Oauth", + "manage-own-outgoing-integrations_description": "Досвіл користувачам створювати та редагувати власну інтеграцію чи webhook’и", + "manage-own-incoming-integrations_description": "Досвіл користувачам створювати та редагувати власну інтеграцію чи webhook’и", "manage-sounds": "Управління звуками", "manage-sounds_description": "Дозволено керувати звуком сервера", "manage-user-status": "Управління статусом користувача", @@ -2081,16 +2167,16 @@ "Markdown_SupportSchemesForLink": "Markdown Схеми підтримки для Link", "Markdown_SupportSchemesForLink_Description": "Розділених комами список дозволених схем", "Max_length_is": "Максимальна довжина %s", + "Max_number_incoming_livechats_displayed": "Максимальна кількість елементів, що відображаються у черзі", "Maximum": "Максимум", "Media": "Медіа", "Medium": "Середній", - "Members_List": "Список учасників", "mention-all": "Згадати все", "mention-all_description": "Дозвіл на використання @all згадки", "mention-here": "Згадаю тут", "mention-here_description": "Дозвіл на використання @here згадати", - "Mentions": "згадки", - "Mentions_default": "Згадки (за замовчуванням)", + "Mentions": "Згадки", + "Mentions_default": "Згадки (типово)", "Mentions_only": "Згадує тільки", "Merge_Channels": "Об'єднати канали", "Message_AllowBadWordsFilter": "Дозволити Повідомлення поганих слів фільтрації", @@ -2107,6 +2193,7 @@ "Message_AllowSnippeting": "Дозволити повідомлення Snippeting", "Message_AllowStarring": "Дозволити повідомлення ролях", "Message_AllowUnrecognizedSlashCommand": "Дозволити нерозпізнані командні слішки", + "Message_Already_Sent": "Це повідомлення вже надіслано та обробляється сервером", "Message_AlwaysSearchRegExp": "Завжди шукати за допомогою RegExp", "Message_AlwaysSearchRegExp_Description": "Ми рекомендуємо встановити `true` якщо ваша мова не підтримується на MongoDB пошуку тексту .", "Message_Attachments": "Додатки до повідомлення", @@ -2118,6 +2205,8 @@ "Message_AudioRecorderEnabled_Description": "Потрібно, щоб файли \"audio / mp3\" були прийнятими типом носіїв в \"Налаштування файлу\".", "Message_BadWordsFilterList": "Додати погані слова в чорний список", "Message_BadWordsFilterListDescription": "Додати список розділених комами список поганих слів, щоб фільтрувати", + "message_counter": "__counter__ повідомлення", + "message_counter_plural": "__counter__ повідомлень", "Message_DateFormat": "Формат дати", "Message_DateFormat_Description": "Дивіться також: Moment.js", "Message_deleting_blocked": "Це повідомлення не може бути видалено більше", @@ -2130,11 +2219,15 @@ "Message_GlobalSearch": "Глобальний пошук", "Message_GroupingPeriod": "Угруповання Період (у секундах)", "Message_GroupingPeriodDescription": "Повідомлення будуть згруповані з попереднім повідомленням, якщо обидва з того ж користувача і минулий час було менше, ніж усвідомленого часу в секундах.", + "Message_has_been_starred": "Повідомлення було позначено зірочкою", + "Message_has_been_unstarred": "З повідомлення було знято позначку-зірочку", "Message_HideType_au": "Сховати повідомлення \"Додано користувачем\"", "Message_HideType_mute_unmute": "Сховати повідомлення \"User Muted / Unmuted\"", "Message_HideType_ru": "Сховати повідомлення \"Видалений користувач\"", "Message_HideType_uj": "Сховати повідомлення \"Користувач приєднатися\"", "Message_HideType_ul": "Сховати повідомлення \"User Leave\"", + "Message_HideType_r": "Приховати повідомлення \"Ім’я Room змінилося\"", + "Message_HideType_ut": "Приховати повідомлення \"Користувач приєднався до розмови\"", "Message_Ignored": "Це повідомлення було проігноровано", "Message_info": "Інформація про повідомлення", "Message_KeepHistory": "Зберігати історію повідомлень", @@ -2205,7 +2298,7 @@ "N_new_messages": "%s нових повідомлень", "Name": "Ім'я", "Name_cant_be_empty": "Ім'я не може бути порожнім", - "Name_of_agent": "ім'я агента", + "Name_of_agent": "Ім'я представника", "Name_optional": "Ім'я (не обов'язково)", "Name_Placeholder": "Будь ласка, введіть своє ім'я ...", "Navigation_History": "Історія навігації", @@ -2251,7 +2344,8 @@ "No_starred_messages": "Немає позначених повідомлень", "No_such_command": "Немає такої команди: `/ __command__`", "No_discussions_yet": "Обговорень поки що немає", - "No_user_with_username_%s_was_found": "Ні один користувач з ім'ям користувача \"%s\" не було знайдено!", + "No_Threads": "Тем не знайдено", + "No_user_with_username_%s_was_found": "Жодного користувача з логіном\"%s\" не знайдено!", "Nobody_available": "Ніхто не доступний", "Node_version": "Версія вузла", "None": "Ні", @@ -2261,6 +2355,7 @@ "Not_Available": "Недоступний", "Not_found_or_not_allowed": "Відсутній, або доступ заборонено", "Not_following": "Не відслідковую", + "Not_started": "Не ", "Nothing": "нічого", "Nothing_found": "Нічого не знайдено ", "Notification_Desktop_Default_For": "Показати робочі сповіщення для", @@ -2304,7 +2399,7 @@ "Online": "Онлайн", "online": "онлайн", "Only_authorized_users_can_write_new_messages": "Тільки авторизовані користувачі можуть писати нові повідомлення", - "Only_from_users": "Тільки скасувати вміст цих користувачів (залиште порожнім, щоб обрізати вміст кожного).", + "Only_from_users": "Видаляти повідомлення від цих користувачів (залиште порожнім, щоб видалити повідомлення від усіх).", "Only_On_Desktop": "Режим настільного ПК (надсилається лише з введенням на робочому столі)", "Only_works_with_chrome_version_greater_50": "Працює тільки з версіями браузера Chrome > 50", "Only_you_can_see_this_message": "Лише ви можете бачити це повідомлення", @@ -2346,6 +2441,7 @@ "Override_URL_to_which_files_are_uploaded_This_url_also_used_for_downloads_unless_a_CDN_is_given": "Override URL, до якого файли завантажуються. Цей URL-адресу також використовується для завантаження, якщо тільки в CDN дається", "Page_title": "Назва сторінки", "Page_URL": "URL-адреса сторінки", + "Parent_channel_doesnt_exist": "Channel не існує.", "Password": "Пароль", "Password_Change_Disabled": "Ваш Rocket.Chat адміністратор відключив зміна паролів", "Password_changed_successfully": "Пароль успішно змінений", @@ -2357,9 +2453,10 @@ "Permissions": "Дозволи", "Personal_Access_Tokens": "Токени особистого доступу", "Phone_number": "Номер телефону", + "Pin": "Закріпити", "pin-message": "Pin повідомлення", "pin-message_description": "Дозвіл на друк повідомлення в каналі", - "Pin_Message": "Pin Message", + "Pin_Message": "Закріпити повідомлення", "Pinned_a_message": "Закріплені повідомлення:", "Pinned_Messages": "закріплені повідомлення", "PiwikAdditionalTrackers": "Додаткові сайти сайту Piwik", @@ -2410,7 +2507,7 @@ "Privacy_Policy": "Політика конфіденційності", "Private": "приватний", "Private_Channel": "Приватний канал", - "Private_Group": "рядовий Група", + "Private_Group": "Приватна група", "Private_Groups": "Приватні Групи", "Private_Groups_list": "Список приватних груп", "Private_Team": "Приватна команда", @@ -2456,7 +2553,7 @@ "Query_description": "Додаткові умови для визначення того, які користувачі можуть надіслати електронною поштою. Непідписаних користувачі автоматично видаляються з запиту. Він повинен бути дійсним в форматі JSON. Приклад: \"{\" createdAt \": {\" $ GT \": {\" дата $ \":\" 2015-01-01T00: 00: 00.000Z \"}}}\"", "Queue": "Черга", "quote": "цитата", - "Quote": "котирування", + "Quote": "Цитувати", "Random": "випадковий", "RDStation_Token": "Токен RD Station", "React_when_read_only": "Дозволити реагування", @@ -2503,11 +2600,11 @@ "Remove": "Вилучити", "remove-user": "Видалити користувача", "remove-user_description": "Дозвіл на видалення користувача з кімнати", - "Remove_Admin": "видалити Адміністратор", + "Remove_Admin": "Видалити адміністратор", "Remove_as_leader": "Видалити як лідера", - "Remove_as_moderator": "Видалити в якості модератора", - "Remove_as_owner": "Видалити в якості власника", - "Remove_custom_oauth": "Видалити користувача OAuth", + "Remove_as_moderator": "Видалити з модераторів", + "Remove_as_owner": "Видалити зі власників", + "Remove_custom_oauth": "Видалити користувацький OAuth", "Remove_from_room": "Видалити з кімнати", "Remove_last_admin": "Видалення останнього адміністратора", "Remove_someone_from_room": "Видалити когось із кімнати", @@ -2515,12 +2612,16 @@ "Removed_User": "Видалений користувач", "Reply": "Відповідь", "reply_counter": "__counter__ відповідь", + "Reply_in_thread": "Відповісти у темі", + "Reply_in_direct_message": "Відповісти в особистому повідомленні", "ReplyTo": "Відповідати на", - "Report_Abuse": "Повідомити про зловживання", - "Report_exclamation_mark": "Звіт!", - "Report_sent": "звіт відправлений", - "Report_this_message_question_mark": "Повідомити про це повідомлення?", + "Report": "Поскаржитись", + "Report_Abuse": "Повідомити про порушення", + "Report_exclamation_mark": "Повідомити!", + "Report_sent": "Звіт відправлено", + "Report_this_message_question_mark": "Поскаржитись на це повідомлення?", "Reporting": "Звітність", + "Request_comment_when_closing_conversation_description": "Якщо ввімкнено, представнику потрібно буде додати коментар до завершення розмови.", "Require_all_tokens": "Вимагати всіх токенів", "Require_any_token": "Вимагати будь-який токен", "Require_password_change": "Вимагати зміни пароля", @@ -2592,7 +2693,6 @@ "Room_type_changed_successfully": "Тип номера успішно змінений", "Room_type_of_default_rooms_cant_be_changed": "Це номер за замовчуванням, і тип не може бути змінений, будь ласка, зверніться до свого адміністратора.", "Room_unarchived": "номер розархівувати", - "Room_uploaded_file_list": "список файлів", "Room_uploaded_file_list_empty": "Немає доступних файлів.", "Rooms": "кімнати", "run-import": "Запустити імпорт", @@ -2782,8 +2882,9 @@ "Sound": "звук", "Sound_File_mp3": "Звуковий файл (mp3)", "SSL": "SSL", - "Star_Message": "зірка повідомлення", - "Starred_Messages": "помічені повідомлення", + "Star": "Вибране", + "Star_Message": "Вибрати повідомлення", + "Starred_Messages": "Повідомлення із зірочкою", "Start": "Почати", "Start_audio_call": "Початок аудіо виклику", "Start_Chat": "Почати Чат", @@ -2801,7 +2902,7 @@ "Statistics_reporting_Description": "Відправляючи свою статистику, ви допоможете нам визначити, скільки примірників Rocket.Chat розгорнуті, а також наскільки добре поводиться система, таким чином, ми можемо додатково поліпшити його. Не турбуйтеся, оскільки ніякої інформації про користувача не передається і вся інформація, ми отримуємо конфіденційна.", "Stats_Active_Users": "активні користувачі", "Stats_Avg_Channel_Users": "Середні каналу користувачів", - "Stats_Avg_Private_Group_Users": "Середні Приватні групи користувачів", + "Stats_Avg_Private_Group_Users": "Середнє число користувачів в приватних групах", "Stats_Away_Users": "Away Користувачі", "Stats_Max_Room_Users": "Кількість кімнат користувачів", "Stats_Non_Active_Users": "неактивні Користувачі", @@ -2864,7 +2965,7 @@ "The_server_will_restart_in_s_seconds": "Сервер буде перезавантажений через %s секунд", "The_setting_s_is_configured_to_s_and_you_are_accessing_from_s": "Параметр %s налаштований на %s , і ви звертаєтеся з %s!", "The_user_will_be_removed_from_s": "Користувач буде видалений з %s", - "The_user_wont_be_able_to_type_in_s": "Користувач не зможе ввести в %s", + "The_user_wont_be_able_to_type_in_s": "Користувач не зможе писати в %s", "Theme": "тема", "theme-color-component-color": "Колір компонента", "theme-color-content-background-color": "Зміст Колір фону", @@ -2922,6 +3023,7 @@ "This_is_a_push_test_messsage": "Це поштовх тест messsage", "This_room_has_been_archived_by__username_": "Цей номер був архівуються __username__", "This_room_has_been_unarchived_by__username_": "Цей номер був Розархівувати по __username__", + "Threads": "Теми", "This_agent_was_already_selected": "Цей співробітник вже обраний", "This_week": "Цього тижня", "Thursday": "четвер", @@ -2955,6 +3057,7 @@ "Total_abandoned_chats": "Всього покинутих чатів", "Total_Discussions": "Всього обговорень", "Total_messages": "всього повідомлень", + "Total_Threads": "Всього тем", "Tourism": "Туризм", "Transcript_Enabled": "Попросіть відвідувачів, чи хотіли б вони стенограму після того, як чат був закритий", "Transcript_message": "Повідомлення для показу при запиті про транскрипт", @@ -2967,6 +3070,7 @@ "Trigger_Words": "слова запуску", "Triggers": "Тригери", "True": "Так", + "Troubleshoot_Disable_Notifications": "Вимкнути сповіщення", "Tuesday": "Вівторок", "Turn_OFF": "Вимкнути", "Turn_ON": "Ввімкнути", @@ -3002,7 +3106,7 @@ "Uninstall": "Видалити", "Unlimited": "Необмежений", "Unmute_someone_in_room": "Unmute хтось в кімнаті", - "Unmute_user": "Unmute користувач", + "Unmute_user": "Дозволити писати користувачу", "Unnamed": "неназваний", "Unpin": "Відкріплено", "Unpin_Message": "Відкріпити закріплене повідомлення", @@ -3040,26 +3144,27 @@ "Use_User_Preferences_or_Global_Settings": "Використовувати параметри користувача або загальні налаштування", "User": "Користувач", "User Search": "Пошук користувачів", + "User Search (Group Validation)": "Пошук користувачів (перевірка групи)", "user-generate-access-token": "Користувач генерує токен доступу", "user-generate-access-token_description": "Дозвіл для користувачів створювати токени доступу", "User__username__is_now_a_leader_of__room_name_": "Користувач __username__ тепер лідер __room_name__", "User__username__is_now_a_moderator_of__room_name_": "Користувач __username__ тепер модератор __room_name__", "User__username__is_now_a_owner_of__room_name_": "Користувач __username__ тепер власник __room_name__", "User__username__removed_from__room_name__leaders": "Користувача __username__ видалено з лідерів __room_name__ ", - "User__username__removed_from__room_name__moderators": "__username__ Користувач вилучений з __room_name__ модераторів", - "User__username__removed_from__room_name__owners": "__username__ Користувач вилучений з __room_name__ власників", + "User__username__removed_from__room_name__moderators": "__username__ Користувач вилучений з модераторів __room_name__ ", + "User__username__removed_from__room_name__owners": "__username__ Користувач вилучений з власників __room_name__ ", "User_added": "Користувача додано", "User_added_by": "Користувач __user_added__ доданий __user_by__.", - "User_added_successfully": "Користувач доданий успішно", + "User_added_successfully": "Користувач успішно доданий", "User_and_group_mentions_only": "Користувач і група згадують лише", "User_default": "Користувач за умовчанням", - "User_doesnt_exist": "Жоден користувач не існує під ім'ям @ `%s`.", + "User_doesnt_exist": "Не існує користувача з ім'ям `@%s`.", "User_e2e_key_was_reset": "Ключ користувача E2E був успішно скинутий.", - "User_has_been_activated": "Користувач активований", - "User_has_been_deactivated": "Користувач деактивовано", + "User_has_been_activated": "Користувач був активований", + "User_has_been_deactivated": "Користувача було деактивовано", "User_has_been_deleted": "Користувач вилучений", "User_has_been_ignored": "Користувача було проігноровано", - "User_has_been_muted_in_s": "Користувач був відключений в %s", + "User_has_been_muted_in_s": "Користувач був приглушений в %s", "User_has_been_removed_from_s": "Користувач був видалений з %s", "User_has_been_unignored": "Користувач більше не ігнорується", "User_Info": "Інформація про користувача", @@ -3073,25 +3178,25 @@ "User_joined_channel_female": "Приєднався до каналу.", "User_joined_channel_male": "Приєднався до каналу.", "User_left": "Пішла канал.", - "User_left_female": "Пішла канал.", - "User_left_male": "Пішла канал.", - "User_logged_out": "Користувач вийшов з системи", + "User_left_female": "Користувач залишив канал", + "User_left_male": "Користувач залишив канал", + "User_logged_out": "Користувач вийшов ", "User_management": "управління користувачами", "User_mentions_only": "Користувач згадує лише", "User_muted": "Користувач гудев", "User_muted_by": "__user_muted__ Користувача приглушені __user_by__.", - "User_not_found": "Користувач не знайдений", - "User_not_found_or_incorrect_password": "Користувач не знайдений або неправильний пароль", + "User_not_found": "Користувача не знайдено", + "User_not_found_or_incorrect_password": "Користувач не знайдений або введено неправильний пароль", "User_or_channel_name": "Користувач або назва каналу", "User_Presence": "Присутність користувача", "User_removed": "Користувач вилучений", - "User_removed_by": "Користувач __user_removed__вилучений __user_by__.", + "User_removed_by": "Користувач __user_removed__ вилучений __user_by__.", "User_sent_a_message_on_channel": "__username__надіслало повідомлення на __channel__", "User_sent_a_message_to_you": "__username__надіслав вам повідомлення", "user_sent_an_attachment": "__user__ надіслав вкладення", "User_Settings": "налаштування користувача", "User_unmuted_by": "__user_unmuted__ Користувача заглушені по __user_by__.", - "User_unmuted_in_room": "Користувач заглушені в кімнаті", + "User_unmuted_in_room": "Користувач перестав бути заглушені в кімнаті", "User_updated_successfully": "Користувач успішно оновлений", "User_uploaded_a_file_on_channel": "__username__завантажив файл на __channel__", "User_uploaded_a_file_to_you": "__username__надіслав вам файл", @@ -3128,6 +3233,7 @@ "Users_added": "Користувачів додано", "Users_in_role": "Користувачі в ролі", "Users must use Two Factor Authentication": "Користувачі повинні використовувати двофакторну автентифікацію", + "Leave_the_description_field_blank_if_you_dont_want_to_show_the_role": "Залиште поле опису порожнім, якщо ви не хочете показувати роль", "Uses": "Використання", "UTF8_Names_Slugify": "UTF8 Імена Slugify", "UTF8_Names_Validation": "UTF8 Імена Validation", @@ -3217,8 +3323,8 @@ "WebRTC_Enable_Channel": "Включити для загальнодоступних каналів", "WebRTC_Enable_Direct": "Включити для прямих повідомлень", "WebRTC_Enable_Private": "Включити для приватних каналів", - "WebRTC_group_audio_call_from_%s": "Груповий звуковий виклик від %s", - "WebRTC_group_video_call_from_%s": "Груповий відеодзвінок від %s", + "WebRTC_group_audio_call_from_%s": "Груповий аудіо дзвінок від% s", + "WebRTC_group_video_call_from_%s": "Груповий відео дзвінок від %s", "WebRTC_monitor_call_from_%s": "Відстежує виклик від %s", "WebRTC_Servers": "STUN / TURN Сервери", "WebRTC_Servers_Description": "Список STUN і ПОВОРОТНИХ серверів, розділених комою.
        Ім'я користувача, пароль і порт дозволені в форматі `ім'я користувача: пароль @ оглушення: хост: port` або` ім'я користувача: пароль @ поворот: господар: port`.", @@ -3227,7 +3333,7 @@ "Welcome": "Вітаємо, %s.", "Welcome_to": "Ласкаво просимо до [Site_Name]", "Welcome_to_the": "Ласкаво просимо в", - "Why_do_you_want_to_report_question_mark": "Чому ви хочете повідомити?", + "Why_do_you_want_to_report_question_mark": "Про що ви хочете сповістити?", "will_be_able_to": "зможуть", "Worldwide": "Світовий", "Would_you_like_to_return_the_inquiry": "Ви хотіли б повернути запит?", @@ -3237,8 +3343,8 @@ "Yes_clear_all": "Так, зрозуміло, все!", "Yes_delete_it": "Так, видалити!", "Yes_hide_it": "Так, це приховати!", - "Yes_leave_it": "Так, залиште його!", - "Yes_mute_user": "Так, відключення звуку користувач!", + "Yes_leave_it": "Так, залишити!", + "Yes_mute_user": "Так, приглушити користувача!", "Yes_prune_them": "Так, обріжте їх!", "Yes_remove_user": "Так, видалити користувача!", "Yes_unarchive_it": "Так, архівувати це!", @@ -3253,7 +3359,7 @@ "You_can_search_using_RegExp_eg": "Ви можете здійснювати пошук, використовуючиРегулярний вираз наприклад, /^text$/i", "You_can_use_an_emoji_as_avatar": "Ви можете також використовувати смайлик в якості аватара.", "You_can_use_webhooks_to_easily_integrate_livechat_with_your_CRM": "Ви можете використовувати webhooks легко інтегрувати з LiveChat CRM.", - "You_cant_leave_a_livechat_room_Please_use_the_close_button": "Ви не можете залишити Livechat кімнату. Будь ласка, використовуйте кнопку закриття.", + "You_cant_leave_a_livechat_room_Please_use_the_close_button": "Ви не можете залишити Livechat кімнату. Будь ласка, використовуйте кнопку закрити.", "You_have_been_muted": "Ви були відключені і не можуть говорити в цій кімнаті", "You_have_n_codes_remaining": "Ви залишили __number__ коди.", "You_have_not_verified_your_email": "Ви не підтвердили свою електронну пошту.", diff --git a/packages/rocketchat-i18n/i18n/vi-VN.i18n.json b/packages/rocketchat-i18n/i18n/vi-VN.i18n.json index 67bbbd8403c4..1bb8b87b8fee 100644 --- a/packages/rocketchat-i18n/i18n/vi-VN.i18n.json +++ b/packages/rocketchat-i18n/i18n/vi-VN.i18n.json @@ -1289,6 +1289,7 @@ "if_they_are_from": "(nếu chúng đến từ %s)", "If_this_email_is_registered": "Nếu email này đã được đăng ký, chúng tôi sẽ gửi hướng dẫn về cách đặt lại mật khẩu của bạn. Nếu bạn không nhận được email sớm, vui lòng quay lại và thử lại.", "If_you_are_sure_type_in_your_password": "Nếu bạn chắc chắn nhập vào mật khẩu của mình:", + "Members_List": "Danh sách thành viên", "If_you_are_sure_type_in_your_username": "Nếu bạn chắc chắn nhập vào tên người dùng của mình:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "Nếu bạn không có hãy gửi email tới [omni@rocket.chat] (mailto: omni@rocket.chat) để lấy.", "Iframe_Integration": "Tích hợp Iframe", @@ -1661,6 +1662,7 @@ "Mail_Message_No_messages_selected_select_all": "Bạn chưa chọn bất kỳ tin nhắn nào", "Mail_Messages": "Mail tin nhắn", "Mail_Messages_Instructions": "Chọn tin nhắn bạn muốn gửi qua email bằng cách nhấp vào các tin nhắn", + "Room_uploaded_file_list": "Danh sách tập tin", "Mail_Messages_Subject": "Đây là một phần được chọn của%s tin nhắn", "Mailer": "Mailer", "Mailer_body_tags": "Bạn phải sử dụng [hủy đăng ký] đối với liên kết bỏ đăng ký.
        Bạn có thể sử dụng [name], [fname], [lname] cho tên, họ hoặc họ của người dùng, tương ứng.
        Bạn có thể sử dụng [email] cho email của người dùng.", @@ -1702,7 +1704,6 @@ "Max_length_is": "Chiều dài tối đa là%s", "Media": "Truyền thông", "Medium": "Trung bình", - "Members_List": "Danh sách thành viên", "mention-all": "Đề cập Tất cả", "mention-all_description": "Cho phép sử dụng @all đề cập đến", "mention-here": "Đề cập ở đây", @@ -2203,7 +2204,6 @@ "Room_type_changed_successfully": "Đã thay đổi loại phòng thành công", "Room_type_of_default_rooms_cant_be_changed": "Đây là phòng mặc định và loại không thể thay đổi, vui lòng tham khảo ý kiến ​​của quản trị viên.", "Room_unarchived": "Phòng chưa lưu trữ", - "Room_uploaded_file_list": "Danh sách tập tin", "Room_uploaded_file_list_empty": "Không có tệp nào.", "Rooms": "Phòng", "run-import": "Chạy Nhập khẩu", @@ -2558,6 +2558,7 @@ "Trigger_Words": "Những từ kích hoạt", "Triggers": "Gây nên", "True": "Có", + "Troubleshoot_Disable_Notifications": "Vô hiệu hóa thông báo", "Tuesday": "Thứ ba", "Turn_OFF": "Tắt", "Turn_ON": "Bật", diff --git a/packages/rocketchat-i18n/i18n/zh-HK.i18n.json b/packages/rocketchat-i18n/i18n/zh-HK.i18n.json index 13550adaac49..36489d72a17e 100644 --- a/packages/rocketchat-i18n/i18n/zh-HK.i18n.json +++ b/packages/rocketchat-i18n/i18n/zh-HK.i18n.json @@ -1320,6 +1320,7 @@ "if_they_are_from": "(如果他们来自%s)", "If_this_email_is_registered": "如果此电子邮件已注册,我们将发送有关如何重置密码的说明。如果您很短时间内没有收到电子邮件,请返回并重试。", "If_you_are_sure_type_in_your_password": "如果您确定输入您的密码:", + "Members_List": "成员列表", "If_you_are_sure_type_in_your_username": "如果您确定输入您的用户名:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "如果你没有发送邮件到[omni@rocket.chat](mailto:omni@rocket.chat)来获得你的邮件。", "Iframe_Integration": "Iframe集成", @@ -1693,6 +1694,7 @@ "Mail_Message_No_messages_selected_select_all": "你没有选择任何消息", "Mail_Messages": "邮件消息", "Mail_Messages_Instructions": "通过单击邮件选择要通过电子邮件发送的邮件", + "Room_uploaded_file_list": "文件列表", "Mail_Messages_Subject": "这是%s消息的选定部分", "Mailer": "信封", "Mailer_body_tags": "必须对取消订阅链接使用[取消订阅]。
        您可以分别为用户的全名,名字或姓氏使用[name],[fname],[lname]。
        您可以将[email]用于用户的电子邮件。", @@ -1734,7 +1736,6 @@ "Max_length_is": "最大长度是%s", "Media": "媒体", "Medium": "中", - "Members_List": "成员列表", "mention-all": "提及所有", "mention-all_description": "允许使用@all提到", "mention-here": "在此提及", @@ -2230,7 +2231,6 @@ "Room_type_changed_successfully": "房间类型已成功更改", "Room_type_of_default_rooms_cant_be_changed": "这是一个默认房间,类型不能更改,请咨询您的管理员。", "Room_unarchived": "房间unarchived", - "Room_uploaded_file_list": "文件列表", "Room_uploaded_file_list_empty": "没有可用的文件。", "Rooms": "房间", "run-import": "运行导入", @@ -2589,6 +2589,7 @@ "Trigger_Words": "触发词", "Triggers": "触发器", "True": "是", + "Troubleshoot_Disable_Notifications": "禁用通知", "Tuesday": "星期二", "Turn_OFF": "关掉", "Turn_ON": "打开", diff --git a/packages/rocketchat-i18n/i18n/zh-TW.i18n.json b/packages/rocketchat-i18n/i18n/zh-TW.i18n.json index cdd9f5d457fa..e8d803857f9f 100644 --- a/packages/rocketchat-i18n/i18n/zh-TW.i18n.json +++ b/packages/rocketchat-i18n/i18n/zh-TW.i18n.json @@ -203,16 +203,33 @@ "Accounts_Directory_DefaultView": "預設目錄列表", "Accounts_SetDefaultAvatar": "設定預設大頭貼", "Accounts_SetDefaultAvatar_Description": "嘗試根據OAuth帳戶或Gravatar確定默認頭像", + "Accounts_Set_Email_Of_External_Accounts_as_Verified": "將外部帳號的電子郵件設定為已驗證", + "Accounts_Set_Email_Of_External_Accounts_as_Verified_Description": "從外部服務(例如LDAP,OAth等)建立的帳號將自動驗證其電子郵件", "Accounts_ShowFormLogin": "顯示表單形式的登入畫面", + "Accounts_TwoFactorAuthentication_By_Email_Enabled": "透過電子郵件啟用2步驟驗證", + "Accounts_TwoFactorAuthentication_By_Email_Enabled_Description": "驗證了電子郵件且在其個人資料頁面中啟用了該選項的使用者將收到一封帶有臨時代碼的電子郵件,以授權某些操作,例如登入,保存個人資料等。", + "Accounts_TwoFactorAuthentication_By_Email_Auto_Opt_In": "透過電子郵件自動為新使用者選擇2步驟", + "Accounts_TwoFactorAuthentication_By_Email_Auto_Opt_In_Description": "預設情況下,新使用者將啟用透過電子郵件的2步驟驗證。他們將能夠在其個人資料頁面中將其停用。", + "Accounts_TwoFactorAuthentication_By_Email_Code_Expiration": "時間以秒為單位透過電子郵件發送的代碼到期", "Accounts_TwoFactorAuthentication_Enabled": "啟用2步驟驗證", + "Accounts_TwoFactorAuthentication_Enabled_Description": "使用者可以使用任何 TOTP 應用程式(例如Google Authenticator或Authy)設定2步驟驗證", "Accounts_TwoFactorAuthentication_MaxDelta": "最大Delta", "Accounts_UserAddedEmail_Default": "

        歡迎來到[Site_Name]

        轉到[Site_URL],並嘗試了當今最先進的開源聊天解決方案!

        您可以登陸使用您的電子郵件:[email]和密碼:[password]。您可能需要您首次登錄後更改。", "Accounts_TwoFactorAuthentication_MaxDelta_Description": "最大增量確定在任何給定時間有多少令牌有效。令牌每30秒產生一次,並且對於(30 *最大增量)秒有效。
        示例:將最大差值設置為10時,每個令牌可以在時間戳之前或之後使用達300秒。當客戶端的時鐘與服務器沒有正確同步時,這很有用。", + "Accounts_TwoFactorAuthentication_RememberFor": "記住2步驟(秒)", + "Accounts_TwoFactorAuthentication_RememberFor_Description": "如果在指定時間內之前已經提供過,請不要索取2步驟授權碼。", "Accounts_UseDefaultBlockedDomainsList": "使用預設的封鎖網域列表", "Accounts_UseDNSDomainCheck": "使用DNS網域查詢", "Accounts_UserAddedEmailSubject_Default": "您已被新增至 [Site_Name]", "Accounts_UserAddedEmail_Description": "您可以使用以下佔位符:

        • [name],[fname],[lname]為用戶的全名,名字或姓氏,分別。
        • [email]為用戶的電子郵件。
        • [password]為用戶的密碼。
        • [Site_Name]和[Site_URL]分別為應用程序的名稱和網址。
        ", "Activate": "啟用", + "Active_users": "活躍的使用者", + "Daily_Active_Users": "每日活躍的使用者", + "Weekly_Active_Users": "每週活躍的使用者", + "Monthly_Active_Users": "每月活躍的使用者", + "DAU_value": "DAU __value__", + "WAU_value": "WAU __value__", + "MAU_value": "MAU __value__", "Activity": "活動記錄", "Add": "新增", "add-oauth-service": "新增 Oauth 服務", @@ -235,6 +252,7 @@ "Add_user": "新增使用者", "Add_User": "新增使用者", "Add_users": "新增使用者", + "Add_Reaction": "新增反應", "Adding_OAuth_Services": "正在新增 OAuth 服務", "Adding_permission": "正在新增權限", "Adding_user": "正在新增使用者", @@ -335,11 +353,14 @@ "API_Personal_Access_Tokens_Regenerate_It": "重新產生 token", "API_Shield_Types": "保護類型", "API_Shield_Types_Description": "屏蔽類型以逗號分隔列表形式啟用,可以從“在線”,“頻道”或“*”中為所有人選擇", + "API_Shield_user_require_auth": "為了保護使用者所以必須驗證", "API_Token": "API Token", "API_Tokenpass_URL": "Tokenpass 伺服器網址", "API_Tokenpass_URL_Description": "例如:https://domain.com(不包括尾部斜線)", "API_Upper_Count_Limit": "最大記錄數量", "API_Upper_Count_Limit_Description": "REST API應該返回的最大記錄數是多少(何時不是無限的)?", + "API_Use_REST_For_DDP_Calls": "使用 REST 代替 websocket 進行 Meteor 呼叫", + "API_Use_REST_For_DDP_Calls_Alert": "這是一項實驗性和臨時性功能。它強制網頁客戶端和手機應用程式使用 REST 請求,而不是將 Websocket 用於 Meteor 方式呼叫。", "API_User_Limit": "添加所有使用者到Channel的數量上限", "API_Wordpress_URL": "WordPress網址", "Apiai_Key": "Api.ai Key", @@ -374,6 +395,11 @@ "Apps_Framework_Development_Mode": "啟用開發模式", "Apps_Framework_Development_Mode_Description": "開發模式允許安裝從非 Rocket.Chat 商店的應用程式。", "Apps_Framework_enabled": "啟用應用程式框架", + "Apps_Game_Center": "遊戲中心", + "Apps_Game_Center_Back": "退回游戲中心", + "Apps_Game_Center_enabled": "啟用遊戲中心", + "Apps_Game_Center_Play_Game_Together": "@here 讓我們一起玩__name__吧!", + "Apps_Game_Center_Invite_Friends": "邀請您的朋友加入", "Apps_Marketplace_Deactivate_App_Prompt": "是否確定要停用此應用程式?", "Apps_Marketplace_Modify_App_Subscription": "修改訂閱", "Apps_Marketplace_Uninstall_App_Prompt": "是否確定要反安裝此應用程式?", @@ -449,6 +475,8 @@ "AutoTranslate_Enabled": "啟用自動翻譯", "AutoTranslate_Enabled_Description": "啟用自動翻譯功能後,擁有自動翻譯權限的用戶可以將所有訊息自動翻譯為所選語言。可能需要費用。", "AutoTranslate_Google": "Google", + "AutoTranslate_Microsoft": "微軟", + "AutoTranslate_Microsoft_API_Key": "Ocp-Apim-訂閱金鑰", "AutoTranslate_ServiceProvider": "服務提供者", "Available": "線上", "Available_agents": "可用的代理", @@ -493,6 +521,8 @@ "Blockstack_ButtonLabelText": "按鈕標籤文字", "Blockstack_Generate_Username": "產生使用者名稱", "Body": "本文", + "Bio": "Bio", + "Bio_Placeholder": "Bio Placeholder", "bold": "粗體", "bot_request": "Bot 請求", "BotHelpers_userFields": "使用者欄位", @@ -508,6 +538,8 @@ "Broadcasting_enabled": "廣撥已啟用", "Broadcasting_media_server_url": "廣撥多媒體伺服器網址", "Browse_Files": "瀏覽檔案", + "Browser_does_not_support_audio_element": "您的瀏覽器不支援音效元素。", + "Browser_does_not_support_video_element": "您的瀏覽器不支援影片元素。", "Bugsnag_api_key": "Bugsnag API密鑰", "Build_Environment": "構建環境", "bulk-register-user": "批次建立使用者", @@ -548,6 +580,7 @@ "CAS_trust_username_description": "當啟用後,Rocket.Chat 將信任 CAS 中的任何使用者名稱且屬於Rocket.Chat上的相同使用者。
        如果在 CAS 上重新命名了使用者,則可能需要這樣做,但也可能允許人們通過重命名自己的 CAS 使用者來控制 Rocket.Chat 帳號。", "CAS_version": "CAS 版本", "CAS_version_Description": "僅使用您的CAS SSO 服務支援的受支援的 CAS 版本。", + "Call": "呼叫", "Categories": "分類", "CDN_PREFIX": "CDN Prefix", "CDN_PREFIX_ALL": "使用 CDN 給所有項目", @@ -722,6 +755,8 @@ "Conversation": "對話", "Conversations": "對話", "Conversation_closed": "會話已關閉:__comment__。", + "Conversation_closing_tags": "對話結束標籤", + "Conversation_closing_tags_description": "關閉標籤將在關閉時自動分配到對話。", "Conversation_finished": "對話已完成", "Conversation_finished_message": "對話完成的訊息", "Conversation_finished_text": "對話已完成文字", @@ -992,6 +1027,7 @@ "Create_A_New_Channel": "建立一個新Channel", "Create_new": "建立新的", "Create_unique_rules_for_this_channel": "為此頻道建立獨特的規則", + "Created": "已建立", "Created_at": "建立於", "Created_at_s_by_s": "%s%s所建立", "Created_at_s_by_s_triggered_by_s": "由%s觸發,由%s創建於%s", @@ -1055,6 +1091,7 @@ "Date_From": "從", "Date_to": "至", "days": "天", + "Days": "天", "DB_Migration": "資料庫遷移", "DB_Migration_Date": "資料庫遷移日期", "DDP_Rate_Limit_IP_Enabled": "限制 IP: 已啟用", @@ -1112,6 +1149,8 @@ "Desktop_Notifications_Not_Enabled": "桌面通知未啟用", "Details": "詳細", "Different_Style_For_User_Mentions": "使用者提到的不同風格", + "Direct_message_creation_description": "您要與多個使用者建立聊天。使用直接訊息,將您想聊天的人增加到同一位置的每個人。", + "Direct_message_you_have_joined": "您已經加入了一個新的直接訊息", "Direct_message_someone": "私訊其他人", "Direct_Messages": "私訊", "Direct_Reply": "直接回覆", @@ -1137,6 +1176,7 @@ "Disable_Facebook_integration": "停用 Facebook 整合", "Disable_Notifications": "停用通知", "Disable_two-factor_authentication": "停用2步驟驗證", + "Disable_two-factor_authentication_email": "透過電子郵件停用2步驟身份驗證", "Disabled": "已停用", "Disallow_reacting": "不允許反應", "Disallow_reacting_Description": "不允許反應", @@ -1173,6 +1213,7 @@ "Download_My_Data": "下載我的資料 (HTML)", "Download_Pending_Files": "下載待處理檔案", "Download_Snippet": "下載", + "Do_not_provide_this_code_to_anyone": "不要將此代碼提供給任何人。", "Drop_to_upload_file": "拖曳以上傳", "Dry_run": "空運行", "Dry_run_description": "將只發送一封電子郵件並從相同的地址。電子郵件必須屬於一個有效的使用者。", @@ -1188,6 +1229,8 @@ "E2E_Enabled": "E2E 已啟用", "E2E_Enable_alert": "這個功能目前還在測試! 請回報臭蟲到 github.com/RocketChat/Rocket.Chat/issues 且要知道:
        - 在已加密的房間中加密的訊息是沒辦法搜尋得到的。
        - 手機應用程式可能不支援加密訊息 (他們實施中)。
        - 機器人可能也無法看到已加密訊息直到他們支援這個。
        - 這個版本無法加密檔案。", "E2E_Enable_description": "啟用選項來建立加密群組就可以變更群組和直接訊息加密", + "E2E_Enabled_Default_DirectRooms": "預設情況下為 Direct Rooms 啟用加密", + "E2E_Enabled_Default_PrivateRooms": "預設情況下為私有 Rooms 啟用加密", "E2E_Encryption_Password_Change": "變更加密的密碼", "E2E_Encryption_Password_Explanation": "您可以建立加密私人群組和直接訊息。您可能也可以變更已經存在的私人群組或是直接訊息中來加密。

        這是點對點的加密,所以金鑰是用來加密/解密,您的訊息也不會儲存到伺服器上。為了這個原因您必須安全存放您的密碼。您會希望使用 E2E 加密輸入到其他裝置。", "E2E_password_reveal_text": "您現在可以建立加密私人群組和直接訊息。您可能也可以變更已存在的私人群組或直接訊息來加密。

        這是點對點的加密,所以金鑰是用來加密/解密,您的訊息也不會儲存到伺服器上。為了這個原因您必須安全存放您的密碼。您會希望使用 E2E 加密輸入到其他裝置。 點擊這裡了解更多!

        您的密碼是: %s

        這是自動產生的密碼,在任何時間從任何瀏覽器您可以設定新的密碼給您的加密金鑰您可以輸入已存在的密碼。
        這個密碼只能存在這個瀏覽器,直到您儲存密碼和關閉這個訊息。", @@ -1248,12 +1291,14 @@ "Emoji_provided_by_JoyPixels": "表情符號提供者為 JoyPixels", "EmojiCustomFilesystem": "自訂表情符號文件系統", "Empty_title": "空白標題", + "Engagement_Dashboard": "約定儀表板", "Enable": "啟用", "Enable_Auto_Away": "啟用自動離開", "Enable_Desktop_Notifications": "啟用桌面通知", "Enable_inquiry_fetch_by_stream": "啟用使用串流從伺服器取得查詢資料", "Enable_Svg_Favicon": "啟用 SVG 圖示", "Enable_two-factor_authentication": "啟用2步驟驗證", + "Enable_two-factor_authentication_email": "透過電子郵件啟用2步驟驗證", "Enabled": "已啟用", "Encrypted": "已加密", "Encrypted_channel_Description": "點對點加密頻道。搜尋無法在加密頻道上工作且通知可能也不會顯示訊息內容。", @@ -1264,6 +1309,7 @@ "End_OTR": "結束OTR", "Enter_a_name": "輸入名稱", "Enter_a_regex": "輸入一個正規表示法", + "Enter_a_department_name": "輸入部門名稱", "Enter_a_room_name": "輸入一個頻道名稱", "Enter_a_username": "輸入一個使用者名稱", "Enter_a_tag": "輸入標籤", @@ -1280,6 +1326,7 @@ "Entertainment": "娛樂", "Error": "錯誤", "error-action-not-allowed": "__action__不允許", + "error-agent-offline": "代理離線", "error-application-not-found": "找不到應用程式", "error-archived-duplicate-name": "已有一個名為「'__room_name__'」的封存中通道", "error-avatar-invalid-url": "無效的大頭貼網址:__url__", @@ -1300,6 +1347,7 @@ "error-email-send-failed": "嘗試發送電子郵件時出錯:__message__", "error-field-unavailable": "__field__已被使用了 :(", "error-file-too-large": "檔案太大", + "error-forwarding-chat-same-department": "所選部門與當前房間部門相同", "error-importer-not-defined": "匯入程式沒有正確定義,它缺少匯入類型。", "error-import-file-extract-error": "無法解開匯入檔。", "error-import-file-is-empty": "匯入檔看起來是空白的。", @@ -1382,7 +1430,9 @@ "error-logged-user-not-in-room": "你不在`%s`房間裡", "error-user-registration-disabled": "使用者註冊已停用", "error-user-registration-secret": "只能透過加密網址進行使用者註冊", + "error-validating-department-chat-closing-tags": "當部門在結束對話時需要標籤時,至少需要一個結束標籤。", "error-you-are-last-owner": "你是最後的擁有者。請離開房間之前設置的新的擁有者。", + "error-starring-message": "訊息可能無法標記", "Error_404": "錯誤:404", "Error_changing_password": "密碼變更失敗", "Error_loading_pages": "加載頁面時出錯", @@ -1411,12 +1461,14 @@ "except_pinned": "(固定的除外)", "Execute_Synchronization_Now": "立即執行同步", "Exit_Full_Screen": "離開全螢幕", + "Experimental_Feature_Alert": "這是一項實驗功能!請注意,將來可能會更改,破壞甚至刪除它,恕不另行通知。", "Expiration": "到期", "Expiration_(Days)": "到期 (日)", "Export_My_Data": "匯出我的數據", "expression": "正規表示法", "Extended": "已擴大", "External_Domains": "外部網域", + "External_Users": "外部使用者", "External_Queue_Service_URL": "外部佇列服務 URL", "External_Service": "外部服務", "Facebook_Page": "Facebook 頁面", @@ -1572,6 +1624,8 @@ "Full_Screen": "全螢幕", "Gaming": "遊戲", "General": "一般", + "Generate_new_key": "產生新的金鑰", + "Generating_key": "產生金鑰中", "Get_link": "取得連結", "Generate_New_Link": "產生新的連接", "github_no_public_email": "您沒有設置任何電子郵件作為公共電子郵件地址,在你的Github帳戶上", @@ -1611,10 +1665,12 @@ "Group_favorites": "最愛群組", "Group_mentions_disabled_x_members": "提及`@ all`和`@ here`的小組已被停用__total__以上成員的房間。", "Group_mentions_only": "團體只提及", + "Grouping": "分組", "Hash": "Hash", "Header": "標頭", "Header_and_Footer": "頁首和頁尾", "Healthcare_and_Pharmaceutical": "醫療保健/醫藥", + "Here_is_your_authentication_code": "這是您的驗證碼:", "Help_Center": "求助中心", "Helpers": "助手", "Hex_Color_Preview": "十六進制顏色預覽", @@ -1655,9 +1711,11 @@ "if_they_are_from": "(如果他們來自%s)", "If_this_email_is_registered": "如果此電子郵件已註冊,我們將發送有關如何重設密碼的說明。如果您很短時間內沒有收到電子郵件,請返回並重試。", "If_you_are_sure_type_in_your_password": "如果您確定請輸入您的密碼:", + "Members_List": "成員列表", "If_you_are_sure_type_in_your_username": "如果您確定,請輸入您的使用者名稱:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "如果你沒有發送郵件到[omni@rocket.chat](mailto:omni@rocket.chat)來獲得你的郵件。", "If_you_didnt_ask_for_reset_ignore_this_email": "如果您沒有要求重設密碼,您可以忽略這個郵件。", + "If_you_didnt_try_to_login_in_your_account_please_ignore_this_email": "如果您未試著登入您的帳號,請忽略此電子郵件。", "Iframe_Integration": "Iframe 整合", "Iframe_Integration_receive_enable": "啟用接收", "Iframe_Integration_receive_enable_Description": "允許上層窗口向Rocket.Chat發送指令。", @@ -1856,6 +1914,7 @@ "IssueLinks_Incompatible": "警告:不要同時啟用此功能和“十六進制顏色預覽”。", "IssueLinks_LinkTemplate": "問題鏈接模板", "IssueLinks_LinkTemplate_Description": "問題鏈接模板; %s將被問題編號替換。", + "Items_per_page:": "每頁項目:", "It_works": "正常", "italic": "斜體", "italics": "斜體", @@ -1869,6 +1928,7 @@ "Mobex_sms_gateway_restful_address": "Mobex 簡訊 REST API 位址", "Mobex_sms_gateway_restful_address_desc": "您的 Mobex REST API 的 IP 或主機位址。例如 `http://192.168.1.1:8080` 或 `https://www.example.com:8080`", "Mobex_sms_gateway_username": "使用者名稱", + "Most_popular_channels_top_5": "最受歡迎的頻道(前5名)", "Jitsi_Chrome_Extension": "Chrome 擴充 ID", "Jitsi_Enabled_TokenAuth": "啟用 JWT 驗證", "Jitsi_Application_ID": "應用程式 ID (iss)", @@ -1886,6 +1946,7 @@ "Join_the_given_channel": "加入現有頻道", "Join_video_call": "加入視訊通話", "Joined": "已加入", + "Joined_at": "已加入到", "Jump": "跳", "Jump_to_first_unread": "跳轉到首個未讀", "Jump_to_message": "跳轉到訊息", @@ -1927,6 +1988,7 @@ "Language_Russian": "俄文", "Language_Spanish": "西班牙文", "Language_Version": "英語版本", + "Last_active": "最後登入", "Last_login": "上次登入", "Last_Message_At": "最後在留言", "Last_seen": "最後上線", @@ -1934,6 +1996,9 @@ "Last_Message": "上次消息", "Last_Status": "讀取狀態", "Last_Updated": "最後已更新", + "Last_7_days": "最近7天", + "Last_30_days": "最近30天", + "Last_90_days": "最近90天", "Launched_successfully": "成功推出", "Layout": "介面", "Layout_Home_Body": "首頁本文", @@ -2109,6 +2174,7 @@ "Local_Domains": "本地網域", "Local_Password": "本機密碼", "Localization": "本土化", + "Location": "位置", "Log_Exceptions_to_Channel_Description": "一個將接收所有捕獲的異常的通道。留空以忽略異常。", "Log_Exceptions_to_Channel": "將通道記錄異常", "Log_File": "顯示檔案和行數", @@ -2138,6 +2204,7 @@ "Mail_Message_No_messages_selected_select_all": "您還沒有選擇任何消息", "Mail_Messages": "郵件訊息", "Mail_Messages_Instructions": "通過點擊訊息選擇您要通過電子郵件發送哪些訊息", + "Room_uploaded_file_list": "檔案清單", "Mail_Messages_Subject": "這裡的 %s 訊息的選定部分", "Mailer": "寄件人", "Mailer_body_tags": "您必須使用[unsubscribe]的退訂連接。
        您可以使用[name],[fname],[lname]為使用者的全名,名字或姓氏,分別。
        您可以使用[email]為使用者的電子郵件。", @@ -2204,7 +2271,7 @@ "Maximum": "最大", "Media": "媒體", "Medium": "中間", - "Members_List": "成員列表", + "Members": "會員", "mention-all": "提及所有", "mention-all_description": "允許使用@all提到", "mention-here": "在此提及", @@ -2254,6 +2321,8 @@ "Message_GlobalSearch": "全域搜尋", "Message_GroupingPeriod": "分組週期(以秒為單位)", "Message_GroupingPeriodDescription": "如果兩個來自同一使用者並且經過的時間小於以秒為單位的通知時間,則訊息將與先前訊息分組。", + "Message_has_been_starred": "已標記訊息", + "Message_has_been_unstarred": "已取消標記訊息", "Message_HideType_au": "隱藏“使用者已增加”訊息", "Message_HideType_mute_unmute": "隱藏“使用者靜音/取消靜音”訊息", "Message_HideType_ru": "隱藏“使用者已刪除”訊息", @@ -2302,6 +2371,7 @@ "Message": "訊息", "messages": "訊息", "Messages": "訊息", + "Messages_sent": "訊息發送", "Messages_that_are_sent_to_the_Incoming_WebHook_will_be_posted_here": "傳送至連入 WebHook 的訊息會顯示在這裡。", "Meta": "Meta", "Meta_custom": "自定義標記", @@ -2361,7 +2431,9 @@ "Name_optional": "名稱(非必填)", "Name_Placeholder": "請輸入你的名字...", "Navigation_History": "瀏覽歷史記錄", + "New_users": "新的使用者", "New_Application": "新應用程式", + "New_chat_in_queue": "佇列中的新聊天", "New_chat_transfer": "新的聊天轉換: __transfer__", "New_Custom_Field": "新的自定欄位", "New_Department": "新部門", @@ -2410,11 +2482,13 @@ "No_discussions_yet": "沒有討論", "No_Threads": "沒找到討論串", "No_user_with_username_%s_was_found": "沒有此使用者 \"%s\" !", + "No_data_found": "沒有找到資料", "Nobody_available": "沒人可用", "Node_version": "節點版本", "None": "無", "Nonprofit": "非營利", "Normal": "正常", + "Not_enough_data": "資料不足", "Not_authorized": "未經授權", "Not_Available": "不可用", "Not_found_or_not_allowed": "未找到或者不允許", @@ -2460,6 +2534,8 @@ "Offline_form": "離線表單", "Offline_form_unavailable_message": "離線形式不可用訊息", "Offline_Link_Message": "轉到訊息", + "Offline_Message": "離線訊息", + "Offline_Message_Use_DeepLink": "使用深層連接 URL 格式", "Offline_Mention_All_Email": "提及所有電子郵件主旨", "Offline_Mention_Email": "提到的電子郵件主旨", "Offline_message": "離線訊息", @@ -2468,6 +2544,11 @@ "Old Colors": "舊的顏色", "Old Colors (minor)": "舊的顏色 (次要)", "Older_than": "久超過", + "Omnichannel_External_Frame": "外框", + "Omnichannel_External_Frame_Enabled": "啟用外部框架", + "Omnichannel_External_Frame_URL": "外部框架網址", + "Omnichannel_External_Frame_Encryption_JWK": "加密金鑰(JWK)", + "Omnichannel_External_Frame_Encryption_JWK_Description": "如果提供,它將使用提供的金鑰加密使用者的token,並且外部系統將需要解密資料以存取token", "On": "在", "Online": "線上", "online": "在線", @@ -2522,6 +2603,7 @@ "Password_Changed_Email_Subject": "[Site_Name] - 密碼已變更", "Password_changed_section": "密碼已變更", "Password_changed_successfully": "密碼變更成功", + "Passwords_do_not_match": "密碼不一致", "Password_Policy": "密碼原則", "Past_Chats": "之前聊天", "Paste_here": "貼在這裡...", @@ -2594,6 +2676,8 @@ "Privacy_Policy": "隱私政策", "Private": "私人", "Private_Channel": "私人Channel", + "Private_Channels": "私人Channel s", + "Private_Chats": "私人聊天", "Private_Group": "私人群組", "Private_Groups": "私人群組", "Private_Groups_list": "私人群組列表", @@ -2604,6 +2688,10 @@ "Profile_picture": "資料圖片", "Profile_saved_successfully": "資料儲存成功", "Prometheus": "普羅米修斯", + "Prometheus_Reset_Interval": "重設間隔(毫秒)", + "Prometheus_Garbage_Collector": "收集 NodeJS GC", + "Prometheus_Garbage_Collector_Alert": "需要重新啟動才能停用", + "Prometheus_API_User_Agent": "API:追踪使用者代理", "Protocol": "協定", "Prune": "修剪", "Prune_finished": "修剪完了", @@ -2621,6 +2709,7 @@ "files_pruned": "修剪過的檔案", "Public": "公開", "Public_Channel": "公共 Channel", + "Public_Channels": "公開 Channel s", "Public_Community": "公共社區", "Public_Relations": "公共關係", "Public_URL": "公開網址", @@ -2734,6 +2823,7 @@ "Reporting": "報告", "Request_comment_when_closing_conversation": "當關閉對話時需要評論", "Request_comment_when_closing_conversation_description": "假如啟用,此代理將必須在對話關閉前進行評論。", + "Require": "必須", "Require_all_tokens": "要求所有 tokens", "Require_any_token": "需要任何 token", "Require_password_change": "需要更改密碼", @@ -2810,7 +2900,6 @@ "Room_type_changed_successfully": "Room 類型已成功更改", "Room_type_of_default_rooms_cant_be_changed": "這是一個預設房間,類型不能更改,請聯絡您的管理員。", "Room_unarchived": "Room 已取消封存", - "Room_uploaded_file_list": "檔案清單", "Room_uploaded_file_list_empty": "沒有檔案。", "Rooms": "Room", "Routing": "路由", @@ -2855,6 +2944,10 @@ "SAML_Default_User_Role_Description": "您可以指定多個角色,並用逗號分隔。", "SAML_Role_Attribute_Name": "角色屬性名稱", "SAML_Role_Attribute_Name_Description": "如果在 SAML 回覆中找到此屬性,則其值用作新使用者的角色名稱。", + "SAML_Role_Attribute_Sync": "同步使用者身份", + "SAML_Role_Attribute_Sync_Description": "登入時同步 SAML 使用者身份(覆蓋本地使用者身份)。", + "SAML_Allowed_Clock_Drift": "允許來自身份提供者的時間差", + "SAML_Allowed_Clock_Drift_Description": "身份提供者的時間可能會比您的系統時間快一些。您可以允許少量的時間差。它的值必須以毫秒為單位。提供的數值將增加到驗證回應的目前時間。", "Saturday": "星期六", "Save": "儲存", "save-others-livechat-room-info": "保存其他即時聊天 Room 資訊", @@ -2911,6 +3004,7 @@ "Send_invitation_email_error": "您尚未提供任何有效的電子郵件地址。", "Send_invitation_email_info": "您可以一次發送多個電子郵件邀請。", "Send_invitation_email_success": "您已成功發送邀请電子郵件到以下地址:", + "Send_me_the_code_again": "再次發送代碼給我", "Send_request_on_agent_message": "發送代理訊息請求", "Send_request_on_chat_close": "傳送聊天關閉請求", "Send_request_on_lead_capture": "發送潛在客戶請求", @@ -2954,6 +3048,7 @@ "Should_exists_a_user_with_this_username": "使用者必須已經存在。", "Show_Setup_Wizard": "顯示安裝精靈", "UI_Show_top_navbar_embedded_layout": "在嵌入式介面中顯示頂部導航欄", + "Layout_Show_Home_Button": "顯示\"首頁按鈕”", "Show_agent_email": "顯示代理郵件", "Show_agent_info": "顯示代理資訊", "Show_all": "顯示所有", @@ -3013,6 +3108,8 @@ "Smarsh_MissingEmail_Email_Description": "電子郵件地址缺失時顯示給使用者帳號的電子郵件通常發生在機器人帳戶中。", "Smarsh_Timezone": "Smarsh 時區", "Smileys_and_People": "表情與人", + "SMS_Default_Omnichannel_Department": "全通道部門(預設)", + "SMS_Default_Omnichannel_Department_Description": "如果設定,則此整合啟動的所有新傳入聊天都將路由到該部門。", "SMS_Enabled": "簡訊功能已開啟", "SMTP": "SMTP", "SMTP_Host": "SMTP 主機", @@ -3029,6 +3126,7 @@ "Social_Network": "社交網路", "Sorry_page_you_requested_does_not_exist_or_was_deleted": "對不起,您請求的網頁不存在或被刪除!", "Sort": "分類", + "Sort_By": "排序方式", "Sort_by_activity": "按活動排序", "Sound": "聲音", "Sound_File_mp3": "聲音檔案(mp3)", @@ -3255,6 +3353,8 @@ "Total_messages": "總共訊息量", "Total_Threads": "總共討論串", "Total_visitors": "總共訪客", + "totp-invalid": "無效的代碼或密碼", + "TOTP Invalid [totp-invalid]": "無效的代碼或密碼", "Tourism": "旅遊", "Transcript_Enabled": "詢問訪問者是否會在聊天結束後收到副本", "Transcript_message": "詢問筆錄時要顯示的訊息", @@ -3268,15 +3368,35 @@ "Trigger_Words": "觸發詞", "Triggers": "觸發器", "True": "是", + "Troubleshoot": "疑難排解", + "Troubleshoot_Description": "這些設定只能在 Rocket.Chat 開發或支援團隊的指導下啟用。如果您不知道自己在做什麼,請勿觸摸它們!", + "Troubleshoot_Disable_Notifications": "停用通知", + "Troubleshoot_Disable_Notifications_Alert": "這個設定將完全停用通知系統。聲音,桌面通知,手機通知和電子郵件將停止!", + "Troubleshoot_Disable_Presence_Broadcast": "停用狀態廣播", + "Troubleshoot_Disable_Presence_Broadcast_Alert": "這個設定可防止所有實務將使用者的狀態更改發送到其客戶端,從而使所有使用者保持首次載入的狀態!", + "Troubleshoot_Disable_Instance_Broadcast": "停用實務廣播", + "Troubleshoot_Disable_Instance_Broadcast_Alert": "這個設定可防止 Rocket.Chat 實務將事件發送到其他實務,這可能會導致同步問題和行為異常!", + "Troubleshoot_Disable_Sessions_Monitor": "停用 Sessions 監視器", + "Troubleshoot_Disable_Sessions_Monitor_Alert": "這個設定將停止處理使用者 sessions,將會導致統計資料無法正常工作!", + "Troubleshoot_Disable_Livechat_Activity_Monitor": "停用即時聊天活動監視器", + "Troubleshoot_Disable_Livechat_Activity_Monitor_Alert": "這個設定將停止處理即時聊天訪客 sessions,將會導致統計資料無法正常工作!", + "Troubleshoot_Disable_Statistics_Generator": "停用統計資料產生器", + "Troubleshoot_Disable_Statistics_Generator_Alert": "這個設定將停止處理所有統計資料,將會使資料頁面過時,直到有人點擊“重整”按鈕,並可能導致系統周圍缺少其他資料!", + "Troubleshoot_Disable_Data_Exporter_Processor": "停用資料匯出處理器", + "Troubleshoot_Disable_Data_Exporter_Processor_Alert": "這個設定將停止處理使用者的所有匯出要求,因此他們將不會收到下載資料的連接!", + "Troubleshoot_Disable_Workspace_Sync": "停用工作區同步", + "Troubleshoot_Disable_Workspace_Sync_Alert": "這個設定將停止該伺服器與 Rocket.Chat 的雲端同步,並可能導致商店和企業授權出現問題!", "Tuesday": "星期二", "Turn_OFF": "關掉", "Turn_ON": "打開", "Two Factor Authentication": "2步驟驗證", "Two-factor_authentication": "2步驟驗證", + "Two-factor_authentication_email": "通過電子郵件進行2步驟驗證", "Two-factor_authentication_disabled": "2步驟驗證被停用", "Two-factor_authentication_enabled": "啟用2步驟驗證", "Two-factor_authentication_is_currently_disabled": "2步驟驗證目前被停用", "Two-factor_authentication_native_mobile_app_warning": "警告:啟用此功能後,您將無法使用密碼登錄本機移動應用程式(Rocket.Chat +),直到他們實施2步驟驗證。", + "Two-factor_authentication_email_is_currently_disabled": "目前已停用透過電子郵件進行的2步驟驗證", "Type": "類型", "Type_your_email": "輸入您的電子郵件", "Type_your_job_title": "輸入你的職位", @@ -3403,6 +3523,7 @@ "User_sent_a_message_to_you": "__username__ 傳送給您一個訊息", "user_sent_an_attachment": "__user__ 寄送了一個附件", "User_Settings": "使用者設定", + "User_started_a_new_conversation": "__username__開始了新的對話", "User_unmuted_by": "使用者通過__user_unmuted__取消靜音__user_by__。", "User_unmuted_in_room": "使用者在房間內靜音", "User_updated_successfully": "使用者更新成功", @@ -3440,6 +3561,7 @@ "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__想要啟動不公開。你想接受嗎?", "Users": "使用者", "Users_added": "使用者已增加", + "Users_by_time_of_day": "按時間排序使用者", "Users_in_role": "使用者在角色", "Users must use Two Factor Authentication": "使用者必須使用2步驟驗證", "Leave_the_description_field_blank_if_you_dont_want_to_show_the_role": "如果不想顯示角色,請將描述欄位保持空白", @@ -3448,6 +3570,8 @@ "UTF8_Names_Slugify": "UTF8 名稱 Slugify", "UTF8_Names_Validation": "UTF8 名稱驗證", "UTF8_Names_Validation_Description": "不要讓特殊字符和空格。您可以使用 - _和。但不是在名稱的末尾", + "Value_messages": "__value__條訊息", + "Value_users": "__value__個使用者", "Validate_email_address": "驗證電子郵件地址", "Verification_email_body": "您已成功建立帳號在 [Site_Name]. 請點擊以下的按鈕來確認您的郵件地址並完成註冊。", "Verification": "驗證", @@ -3457,6 +3581,7 @@ "Verified": "已驗證", "Verify": "驗證", "Verify_your_email": "驗證您的電子郵件", + "Verify_your_email_for_the_code_we_sent": "檢查您的電子郵件以取得我們發送的代碼", "Version": "版本", "Videos": "影片", "Video Conference": "多人視訊", @@ -3549,6 +3674,8 @@ "Welcome": "歡迎 %s", "Welcome_to": "歡迎來到 __Site_Name__", "Welcome_to_the": "歡迎來到", + "Where_are_the_messages_being_sent?": "訊息要發送到哪裡?", + "When_is_the_chat_busier?": "什麼時候忙於聊天?", "Why_do_you_want_to_report_question_mark": "你為什麼要回報?", "will_be_able_to": "將能", "Worldwide": "全世界", diff --git a/packages/rocketchat-i18n/i18n/zh.i18n.json b/packages/rocketchat-i18n/i18n/zh.i18n.json index 273c4640ecdd..5451e8d09fa6 100644 --- a/packages/rocketchat-i18n/i18n/zh.i18n.json +++ b/packages/rocketchat-i18n/i18n/zh.i18n.json @@ -1637,6 +1637,7 @@ "if_they_are_from": "(如果他们来自 %s)", "If_this_email_is_registered": "如果此电子邮件已注册,我们将发送有关如何重置密码的说明。如果您很短时间内没有收到电子邮件,请返回并重试。", "If_you_are_sure_type_in_your_password": "如果您确定,请输入您的密码:", + "Members_List": "成员列表", "If_you_are_sure_type_in_your_username": "如果您确定,请输入您的用户名:", "If_you_dont_have_one_send_an_email_to_omni_rocketchat_to_get_yours": "如果您未持有, 发送邮件到[omni@rocket.chat](mailto:omni@rocket.chat)获取。", "If_you_didnt_ask_for_reset_ignore_this_email": "如果您没有要求重置密码,则可以忽略此电子邮件。", @@ -2099,6 +2100,7 @@ "Mail_Message_No_messages_selected_select_all": "您还没有选中任何消息。", "Mail_Messages": "发送邮件", "Mail_Messages_Instructions": "通过点击消息来选择您希望通过电子邮件发送的消息", + "Room_uploaded_file_list": "文件列表", "Mail_Messages_Subject": "这是从 %s 中选择的一部分消息", "Mailer": "发件人", "Mailer_body_tags": "你必须使用 [unsubscribe] 作为取消订阅的链接。
        你可以使用 [name]、[fname] 和 [lname] 分别作为用户全名、名称或姓氏。
        你可以使用 [email] 作为用户的电子邮箱地址。", @@ -2165,7 +2167,6 @@ "Maximum": "最大限度", "Media": "媒体", "Medium": "中", - "Members_List": "成员列表", "mention-all": "提及所有", "mention-all_description": "使用 @all 提及的权限", "mention-here": "在此提及", @@ -2756,7 +2757,6 @@ "Room_type_changed_successfully": "聊天室类型已成功修改", "Room_type_of_default_rooms_cant_be_changed": "这是一个默认聊天室,类型不能更改,请咨询您的管理员。", "Room_unarchived": "聊天室归档状态已取消", - "Room_uploaded_file_list": "文件列表", "Room_uploaded_file_list_empty": "没有任何文件。", "Rooms": "聊天室", "Routing": "路由", @@ -3210,6 +3210,7 @@ "Trigger_Words": "触发关键词", "Triggers": "触发器", "True": "是", + "Troubleshoot_Disable_Notifications": "禁用通知", "Tuesday": "星期二", "Turn_OFF": "关掉", "Turn_ON": "打开", @@ -3550,4 +3551,4 @@ "Your_server_link": "您的服务器链接", "Your_temporary_password_is_password": "您的暂时密码为 [password]。", "Your_workspace_is_ready": "您的工作区已准备好使用🎉" -} +} \ No newline at end of file From 23f36fdb42ed836c4ae80a233571100620a24a37 Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Mon, 13 Apr 2020 11:41:16 -0300 Subject: [PATCH 14/95] Upgrade file storage packages (#17107) --- .meteor/packages | 7 +++---- .meteor/versions | 9 ++++----- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/.meteor/packages b/.meteor/packages index e1895f9bc43e..32a7650706e9 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -52,8 +52,8 @@ konecty:user-presence deepwell:bootstrap-datepicker2 dispatch:run-as-user -jalik:ufs -jalik:ufs-gridfs +jalik:ufs@1.0.2 +jalik:ufs-gridfs@1.0.2 jparker:gravatar kadira:blaze-layout kadira:flow-router @@ -68,7 +68,6 @@ pauli:accounts-linkedin raix:handlebar-helpers rocketchat:push raix:ui-dropped-event -todda00:friendly-slugs rocketchat:tap-i18n underscore@1.0.10 @@ -76,7 +75,7 @@ juliancwirko:postcss littledata:synced-cron edgee:slingshot -jalik:ufs-local@0.2.5 +jalik:ufs-local@1.0.2 accounts-base@1.5.0 accounts-oauth@1.1.16 autoupdate@1.6.0 diff --git a/.meteor/versions b/.meteor/versions index ee1d117926a6..edfb768fcbb4 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -55,9 +55,9 @@ htmljs@1.0.11 http@1.4.2 id-map@1.1.0 inter-process-messaging@0.1.0 -jalik:ufs@0.7.5 -jalik:ufs-gridfs@0.2.1 -jalik:ufs-local@0.2.9 +jalik:ufs@1.0.2 +jalik:ufs-gridfs@1.0.2 +jalik:ufs-local@1.0.2 jparker:crypto-core@0.1.0 jparker:crypto-md5@0.1.1 jparker:gravatar@0.5.1 @@ -77,7 +77,7 @@ littledata:synced-cron@1.5.1 livedata@1.0.18 localstorage@1.2.0 logging@1.1.20 -matb33:collection-hooks@0.9.1 +matb33:collection-hooks@1.0.1 mdg:validation-error@0.5.1 meteor@1.9.3 meteor-base@1.4.0 @@ -147,7 +147,6 @@ templating-compiler@1.3.3 templating-runtime@1.3.2 templating-tools@1.1.2 tmeasday:check-npm-versions@0.3.2 -todda00:friendly-slugs@0.6.0 tracker@1.2.0 twitter-oauth@1.2.0 typescript@3.7.5 From 0fde98e63889d2cea00df339294aae136158cc6c Mon Sep 17 00:00:00 2001 From: lpilz Date: Mon, 13 Apr 2020 16:48:12 +0200 Subject: [PATCH 15/95] [NEW] Support importing Slack threads (#17130) * Added support for threads in slack importer * Added support for 'thread_broadcast' subtype, treating it as normal thread child for now. --- app/importer-slack/server/importer.js | 28 ++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/app/importer-slack/server/importer.js b/app/importer-slack/server/importer.js index 8cbfb213f575..b2702c442390 100644 --- a/app/importer-slack/server/importer.js +++ b/app/importer-slack/server/importer.js @@ -399,11 +399,14 @@ export class SlackImporter extends Base { msg: file.url_private_download || '', _importFile: this.convertSlackFileToPendingFile(file), }; + if (message.thread_ts && (message.thread_ts !== message.ts)) { + msgObj.tmid = `slack-${ slackChannel.id }-${ message.thread_ts.replace(/\./g, '-') }`; + } insertMessage(fileUser, msgObj, room, this._anyExistingSlackMessage); }); } - if (message.subtype) { + if (message.subtype && (message.subtype !== 'thread_broadcast')) { this.processMessageSubType(message, room, msgDataDefaults, missedTypes); } else { const user = this.getRocketUserFromUserId(message.user); @@ -419,6 +422,29 @@ export class SlackImporter extends Base { }, }; + if (message.thread_ts) { + if (message.thread_ts === message.ts) { + if (message.reply_users) { + msgObj.replies = []; + message.reply_users.forEach(function(item) { + msgObj.replies.push(item); + }); + } else if (message.replies) { + msgObj.replies = []; + message.replies.forEach(function(item) { + msgObj.replies.push(item.user); + }); + } else { + this.logger.warn(`Failed to import the parent comment, message: ${ msgDataDefaults._id }. Missing replies/reply_users field`); + } + + msgObj.tcount = message.reply_count; + msgObj.tlm = new Date(parseInt(message.latest_reply.split('.')[0]) * 1000); + } else { + msgObj.tmid = `slack-${ slackChannel.id }-${ message.thread_ts.replace(/\./g, '-') }`; + } + } + if (message.edited) { msgObj.editedAt = new Date(parseInt(message.edited.ts.split('.')[0]) * 1000); const editedBy = this.getRocketUserFromUserId(message.edited.user); From 2afc3ecb2384c73ee3deb39b20f104456000a2cc Mon Sep 17 00:00:00 2001 From: Felipe Curty Date: Mon, 13 Apr 2020 11:55:41 -0300 Subject: [PATCH 16/95] [NEW] Enable the IDP to choose the best authnContext (#17222) * Enable the IDP to choose the best authnContext * Fix SAML AuthRequest field and request The authnContextComparison is a combobox and never has null values. We changed the condition to check customAuthnContext, which is a text box. We also the tag that was not closing correctly. * Adds description to SAML custom authn context setting Co-authored-by: Pierre Lehnen --- .../server/saml_rocketchat.js | 1 + app/meteor-accounts-saml/server/saml_utils.js | 17 ++++++++++------- packages/rocketchat-i18n/i18n/en.i18n.json | 1 + 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/meteor-accounts-saml/server/saml_rocketchat.js b/app/meteor-accounts-saml/server/saml_rocketchat.js index c64e00ef5919..56e088ef9b5b 100644 --- a/app/meteor-accounts-saml/server/saml_rocketchat.js +++ b/app/meteor-accounts-saml/server/saml_rocketchat.js @@ -147,6 +147,7 @@ Meteor.methods({ group: 'SAML', section: name, i18nLabel: 'SAML_Custom_Authn_Context', + i18nDescription: 'SAML_Custom_Authn_Context_description', }); settings.add(`SAML_Custom_${ name }_user_data_fieldmap`, '{"username":"username", "email":"email", "cn": "name"}', { type: 'string', diff --git a/app/meteor-accounts-saml/server/saml_utils.js b/app/meteor-accounts-saml/server/saml_utils.js index 5c68621d281b..f3ad6fb93fe1 100644 --- a/app/meteor-accounts-saml/server/saml_utils.js +++ b/app/meteor-accounts-saml/server/saml_utils.js @@ -90,7 +90,7 @@ SAML.prototype.generateAuthorizeRequest = function(req) { id = this.options.id; } - let request = `` + `${ this.options.issuer }\n`; @@ -98,12 +98,15 @@ SAML.prototype.generateAuthorizeRequest = function(req) { request += `\n`; } - const authnContextComparison = this.options.authnContextComparison || 'exact'; - const authnContext = this.options.customAuthnContext || 'urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport'; - request - += `` - + `${ authnContext }\n` - + ''; + if (this.options.customAuthnContext) { + const authnContextComparison = this.options.authnContextComparison || 'exact'; + const authnContext = this.options.customAuthnContext; + request + += `` + + `${ authnContext }\n`; + } + + request += ''; return request; }; diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 0bccedfa5502..8d720436922a 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -2919,6 +2919,7 @@ "SAML": "SAML", "SAML_Custom_Authn_Context": "Custom Authn Context", "SAML_Custom_Authn_Context_Comparison": "Authn Context Comparison", + "SAML_Custom_Authn_Context_description": "Leave this empty to omit the authn context from the request.", "SAML_Custom_Cert": "Custom Certificate", "SAML_Custom_Debug": "Enable Debug", "SAML_Custom_Entry_point": "Custom Entry Point", From 58b14d1069b6978915ec725d30e9573ca30e6685 Mon Sep 17 00:00:00 2001 From: Tasso Evangelista Date: Mon, 13 Apr 2020 13:32:58 -0300 Subject: [PATCH 17/95] Apply $and helper to message template (#17280) --- app/ui-message/client/message.html | 2 +- app/ui-message/client/message.js | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/app/ui-message/client/message.html b/app/ui-message/client/message.html index a69ad4ca7a71..84b56e5dbe76 100644 --- a/app/ui-message/client/message.html +++ b/app/ui-message/client/message.html @@ -121,7 +121,7 @@
      {{/if}} - {{#if and settings.showReplyButton msg.tcount}} + {{#if $and settings.showReplyButton msg.tcount}}
      {{else}} diff --git a/app/ui-admin/client/rooms/channelSettingsDefault.js b/app/ui-admin/client/rooms/channelSettingsDefault.js index e7c3cb4db00e..2b57af949ebb 100644 --- a/app/ui-admin/client/rooms/channelSettingsDefault.js +++ b/app/ui-admin/client/rooms/channelSettingsDefault.js @@ -15,22 +15,34 @@ Template.channelSettingsDefault.helpers({ return Template.instance().editing.get() === field; }, roomDefault() { - const room = Template.instance().room.get(); - - if (room) { - return room.default; - } + return Template.instance().isDefault.get(); + }, + isFavorite() { + return Template.instance().isFavorite.get(); }, defaultDescription() { - const room = Template.instance().room.get(); - if (room && room.default) { - return t('True'); + const { room, isDefault, isFavorite } = { room: Template.instance().room.get(), isDefault: Template.instance().isDefault.get(), isFavorite: Template.instance().isFavorite.get() }; + let description = t('False'); + + if (room && isDefault) { + description = t('True'); + + if (isFavorite) { + description += `, ${ t('Set_as_favorite') }`; + } + return description; } - return t('False'); + return description; }, }); Template.channelSettingsDefault.events({ + 'change input[name=default]'(e, t) { + t.isDefault.set(e.currentTarget.value === 'true'); + }, + 'change input[name=favorite]'(e, t) { + t.isFavorite.set(e.currentTarget.checked); + }, 'click [data-edit]'(e, t) { e.preventDefault(); t.editing.set($(e.currentTarget).data('edit')); @@ -45,7 +57,7 @@ Template.channelSettingsDefault.events({ 'click .save'(e, t) { e.preventDefault(); - Meteor.call('saveRoomSettings', Template.instance().room.get()._id, 'default', $('input[name=default]:checked').val(), (err/* , result*/) => { + Meteor.call('saveRoomSettings', t.room.get()._id, { default: t.isDefault.get(), favorite: { defaultValue: t.isDefault.get(), favorite: t.isFavorite.get() } }, (err/* , result*/) => { if (err) { return handleError(err); } @@ -58,11 +70,15 @@ Template.channelSettingsDefault.events({ Template.channelSettingsDefault.onCreated(function() { this.editing = new ReactiveVar(); + this.isDefault = new ReactiveVar(); + this.isFavorite = new ReactiveVar(); this.room = new ReactiveVar(); this.onSuccess = Template.currentData().onSuccess; this.autorun(() => { const { room } = Template.currentData(); + this.isDefault.set(room && room.default); + this.isFavorite.set(room && room.favorite && room.default); this.room.set(room); }); }); diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 8d720436922a..65c0fe5b244f 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -3039,6 +3039,7 @@ "set-readonly": "Set ReadOnly", "set-readonly_description": "Permission to set a channel to read only channel", "Set_as_leader": "Set as leader", + "Set_as_favorite": "Set as favorite", "Set_as_moderator": "Set as moderator", "Set_as_owner": "Set as owner", "Settings": "Settings", From c180a53698f92c8d7408060626f6bb810f275c9d Mon Sep 17 00:00:00 2001 From: Tasso Evangelista Date: Mon, 13 Apr 2020 17:57:21 -0300 Subject: [PATCH 19/95] Static props for Administration route components (#17285) --- app/ui-admin/client/components/AdministrationRouter.js | 4 ++-- app/ui-admin/client/routes.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/ui-admin/client/components/AdministrationRouter.js b/app/ui-admin/client/components/AdministrationRouter.js index 8fc0486cd444..5efe3aff39a8 100644 --- a/app/ui-admin/client/components/AdministrationRouter.js +++ b/app/ui-admin/client/components/AdministrationRouter.js @@ -3,13 +3,13 @@ import React, { lazy, useMemo, Suspense } from 'react'; import { useAdminSideNav } from '../hooks/useAdminSideNav'; import PageSkeleton from './PageSkeleton'; -function AdministrationRouter({ lazyRouteComponent }) { +function AdministrationRouter({ lazyRouteComponent, ...props }) { useAdminSideNav(); const LazyRouteComponent = useMemo(() => lazy(lazyRouteComponent), [lazyRouteComponent]); return }> - + ; } diff --git a/app/ui-admin/client/routes.js b/app/ui-admin/client/routes.js index 0cf97ff76672..910e33863006 100644 --- a/app/ui-admin/client/routes.js +++ b/app/ui-admin/client/routes.js @@ -9,7 +9,7 @@ const routeGroup = FlowRouter.group({ prefix: '/admin', }); -export const registerAdminRoute = (path, { lazyRouteComponent, action, ...options } = {}) => { +export const registerAdminRoute = (path, { lazyRouteComponent, props, action, ...options } = {}) => { routeGroup.route(path, { ...options, action: (params, queryParams) => { @@ -21,7 +21,7 @@ export const registerAdminRoute = (path, { lazyRouteComponent, action, ...option renderRouteComponent(() => import('./components/AdministrationRouter'), { template: 'main', region: 'center', - propsFn: () => ({ lazyRouteComponent, ...options, params, queryParams }), + propsFn: () => ({ lazyRouteComponent, ...options, params, queryParams, ...props }), }); }, }); From 6a94e3c9e5d4435bdfe7cb2f162c0902613c7b49 Mon Sep 17 00:00:00 2001 From: Marcos Spessatto Defendi Date: Mon, 13 Apr 2020 18:43:54 -0300 Subject: [PATCH 20/95] [NEW][ENTERPRISE] Auto close abandoned Omnichannel rooms (#17055) * close/freeze automatically inactive omnichannel rooms * Apply suggestions from review * Apply suggestions from review * Apply suggestions from review * Apply suggestions from review * Set livechat rooms as waiting response after visitor's messages * Remove unnecessary console.log calls. Co-authored-by: Renato Becker --- .../server/hooks/markRoomNotResponded.js | 24 +++++ .../server/hooks/processRoomAbandonment.js | 2 +- app/livechat/server/index.js | 1 + app/models/server/models/LivechatRooms.js | 17 +++- .../livechatDepartmentCustomFieldsForm.html | 12 +++ .../hooks/afterForwardChatToDepartment.js | 2 + .../setPredictedVisitorAbandonmentTime.js | 26 ++++++ ee/app/livechat-enterprise/server/index.js | 1 + .../livechat-enterprise/server/lib/Helper.js | 33 ++++++- .../server/lib/VisitorInactivityMonitor.js | 87 +++++++++++++++++++ ee/app/livechat-enterprise/server/settings.js | 15 ++++ ee/app/livechat-enterprise/server/startup.js | 15 +++- ee/app/models/server/models/LivechatRooms.js | 34 ++++++++ ee/i18n/en.i18n.json | 5 ++ ee/i18n/pt-BR.i18n.json | 5 ++ 15 files changed, 274 insertions(+), 5 deletions(-) create mode 100644 app/livechat/server/hooks/markRoomNotResponded.js create mode 100644 ee/app/livechat-enterprise/server/hooks/setPredictedVisitorAbandonmentTime.js create mode 100644 ee/app/livechat-enterprise/server/lib/VisitorInactivityMonitor.js diff --git a/app/livechat/server/hooks/markRoomNotResponded.js b/app/livechat/server/hooks/markRoomNotResponded.js new file mode 100644 index 000000000000..08ab7d1d9272 --- /dev/null +++ b/app/livechat/server/hooks/markRoomNotResponded.js @@ -0,0 +1,24 @@ + +import { callbacks } from '../../../callbacks'; +import { LivechatRooms } from '../../../models'; + +callbacks.add('afterSaveMessage', function(message, room) { + // skips this callback if the message was edited + if (!message || message.editedAt) { + return message; + } + + // if the message has not a token, it was sent by the agent, so ignore it + if (!message.token) { + return message; + } + + // check if room is yet awaiting for response + if (typeof room.t !== 'undefined' && room.t === 'l' && room.waitingResponse) { + return message; + } + + LivechatRooms.setNotResponseByRoomId(room._id); + + return message; +}, callbacks.priority.LOW, 'markRoomNotResponded'); diff --git a/app/livechat/server/hooks/processRoomAbandonment.js b/app/livechat/server/hooks/processRoomAbandonment.js index 50bfeb5b469c..70f88ea7ed50 100644 --- a/app/livechat/server/hooks/processRoomAbandonment.js +++ b/app/livechat/server/hooks/processRoomAbandonment.js @@ -58,5 +58,5 @@ callbacks.add('livechat.closeRoom', (room) => { return; } const secondsSinceLastAgentResponse = getSecondsSinceLastAgentResponse(room, agentLastMessage); - LivechatRooms.setVisitorInactivityInSecondsByRoomId(room._id, secondsSinceLastAgentResponse); + LivechatRooms.setVisitorInactivityInSecondsById(room._id, secondsSinceLastAgentResponse); }, callbacks.priority.HIGH, 'process-room-abandonment'); diff --git a/app/livechat/server/index.js b/app/livechat/server/index.js index f806301c05d8..fe61cd6f5825 100644 --- a/app/livechat/server/index.js +++ b/app/livechat/server/index.js @@ -17,6 +17,7 @@ import './hooks/sendToCRM'; import './hooks/sendToFacebook'; import './hooks/processRoomAbandonment'; import './hooks/saveLastVisitorMessageTs'; +import './hooks/markRoomNotResponded'; import './methods/addAgent'; import './methods/addManager'; import './methods/changeLivechatStatus'; diff --git a/app/models/server/models/LivechatRooms.js b/app/models/server/models/LivechatRooms.js index 1a93ce690a0a..65b5b6e43047 100644 --- a/app/models/server/models/LivechatRooms.js +++ b/app/models/server/models/LivechatRooms.js @@ -15,6 +15,7 @@ export class LivechatRooms extends Base { this.tryEnsureIndex({ 'metrics.chatDuration': 1 }, { sparse: true }); this.tryEnsureIndex({ 'metrics.serviceTimeDuration': 1 }, { sparse: true }); this.tryEnsureIndex({ 'metrics.visitorInactivity': 1 }, { sparse: true }); + this.tryEnsureIndex({ 'omnichannel.predictedVisitorAbandonmentAt': 1 }, { sparse: true }); } findLivechat(filter = {}, offset = 0, limit = 20) { @@ -286,6 +287,20 @@ export class LivechatRooms extends Base { }); } + setNotResponseByRoomId(roomId) { + return this.update({ + _id: roomId, + t: 'l', + }, { + $set: { + waitingResponse: true, + }, + $unset: { + responseBy: 1, + }, + }); + } + setAgentLastMessageTs(roomId) { return this.update({ _id: roomId, @@ -566,7 +581,7 @@ export class LivechatRooms extends Base { return this.update(query, update); } - setVisitorInactivityInSecondsByRoomId(roomId, visitorInactivity) { + setVisitorInactivityInSecondsById(roomId, visitorInactivity) { const query = { _id: roomId, }; diff --git a/ee/app/livechat-enterprise/client/views/app/customTemplates/livechatDepartmentCustomFieldsForm.html b/ee/app/livechat-enterprise/client/views/app/customTemplates/livechatDepartmentCustomFieldsForm.html index 38d41dda64d5..c0cd15e90ca8 100644 --- a/ee/app/livechat-enterprise/client/views/app/customTemplates/livechatDepartmentCustomFieldsForm.html +++ b/ee/app/livechat-enterprise/client/views/app/customTemplates/livechatDepartmentCustomFieldsForm.html @@ -5,6 +5,18 @@

    +
    + +
    + +
    +
    +
    + +
    + +
    +
    diff --git a/ee/app/livechat-enterprise/server/hooks/afterForwardChatToDepartment.js b/ee/app/livechat-enterprise/server/hooks/afterForwardChatToDepartment.js index 66fe74c1d72f..ed8b311c8835 100644 --- a/ee/app/livechat-enterprise/server/hooks/afterForwardChatToDepartment.js +++ b/ee/app/livechat-enterprise/server/hooks/afterForwardChatToDepartment.js @@ -1,6 +1,7 @@ import { callbacks } from '../../../../../app/callbacks/server'; import LivechatRooms from '../../../../../app/models/server/models/LivechatRooms'; import LivechatDepartment from '../../../../../app/models/server/models/LivechatDepartment'; +import { setPredictedVisitorAbandonmentTime } from '../lib/Helper'; callbacks.add('livechat.afterForwardChatToDepartment', (options) => { const { rid, newDepartmentId } = options; @@ -9,6 +10,7 @@ callbacks.add('livechat.afterForwardChatToDepartment', (options) => { if (!room) { return; } + setPredictedVisitorAbandonmentTime(room); const department = LivechatDepartment.findOneById(newDepartmentId, { fields: { ancestors: 1 } }); if (!department) { diff --git a/ee/app/livechat-enterprise/server/hooks/setPredictedVisitorAbandonmentTime.js b/ee/app/livechat-enterprise/server/hooks/setPredictedVisitorAbandonmentTime.js new file mode 100644 index 000000000000..111e73fbccdf --- /dev/null +++ b/ee/app/livechat-enterprise/server/hooks/setPredictedVisitorAbandonmentTime.js @@ -0,0 +1,26 @@ +import { callbacks } from '../../../../../app/callbacks/server'; +import { settings } from '../../../../../app/settings/server'; +import { setPredictedVisitorAbandonmentTime } from '../lib/Helper'; + +callbacks.add('afterSaveMessage', function(message, room) { + if (!settings.get('Livechat_auto_close_abandoned_rooms') || settings.get('Livechat_visitor_inactivity_timeout') <= 0) { + return message; + } + // skips this callback if the message was edited + if (message.editedAt) { + return false; + } + // message valid only if it is a livechat room + if (!(typeof room.t !== 'undefined' && room.t === 'l' && room.v && room.v.token)) { + return false; + } + // if the message has a type means it is a special message (like the closing comment), so skips + if (message.t) { + return false; + } + const sentByAgent = !message.token; + if (sentByAgent) { + setPredictedVisitorAbandonmentTime(room); + } + return message; +}, callbacks.priority.HIGH, 'save-visitor-inactivity'); diff --git a/ee/app/livechat-enterprise/server/index.js b/ee/app/livechat-enterprise/server/index.js index e532db6f935b..e15a5bef4edc 100644 --- a/ee/app/livechat-enterprise/server/index.js +++ b/ee/app/livechat-enterprise/server/index.js @@ -3,6 +3,7 @@ import { Meteor } from 'meteor/meteor'; import './hooks/addDepartmentAncestors'; import './hooks/afterForwardChatToDepartment'; import './hooks/beforeListTags'; +import './hooks/setPredictedVisitorAbandonmentTime'; import './methods/addMonitor'; import './methods/getUnitsFromUserRoles'; import './methods/removeMonitor'; diff --git a/ee/app/livechat-enterprise/server/lib/Helper.js b/ee/app/livechat-enterprise/server/lib/Helper.js index e13dc640baed..ac4579219080 100644 --- a/ee/app/livechat-enterprise/server/lib/Helper.js +++ b/ee/app/livechat-enterprise/server/lib/Helper.js @@ -1,8 +1,9 @@ import { Meteor } from 'meteor/meteor'; import { Match, check } from 'meteor/check'; +import moment from 'moment'; import { hasRole } from '../../../../../app/authorization'; -import { LivechatDepartment, Users, LivechatInquiry } from '../../../../../app/models/server'; +import { LivechatDepartment, Users, LivechatInquiry, LivechatRooms } from '../../../../../app/models/server'; import { Rooms as RoomRaw } from '../../../../../app/models/server/raw'; import { settings } from '../../../../../app/settings'; import { Livechat } from '../../../../../app/livechat/server/lib/Livechat'; @@ -64,7 +65,7 @@ export const normalizeQueueInfo = async ({ position, queueInfo, department }) => queueInfo = await getQueueInfo(department); } - const { message, numberMostRecentChats, statistics: { avgChatDuration } = { } } = queueInfo; + const { message, numberMostRecentChats, statistics: { avgChatDuration } = {} } = queueInfo; const spot = position + 1; const estimatedWaitTimeSeconds = getSpotEstimatedWaitTime(spot, numberMostRecentChats, avgChatDuration); return { spot, message, estimatedWaitTimeSeconds }; @@ -137,3 +138,31 @@ export const allowAgentSkipQueue = (agent) => { return settings.get('Livechat_assign_new_conversation_to_bot') && hasRole(agent.agentId, 'bot'); }; + +export const setPredictedVisitorAbandonmentTime = (room) => { + if (!room.v || !room.v.lastMessageTs || !settings.get('Livechat_auto_close_abandoned_rooms')) { + return; + } + + let secondsToAdd = settings.get('Livechat_visitor_inactivity_timeout'); + + const department = room.departmentId && LivechatDepartment.findOneById(room.departmentId); + if (department && department.visitorInactivityTimeoutInSeconds) { + secondsToAdd = department.visitorInactivityTimeoutInSeconds; + } + + if (secondsToAdd <= 0) { + return; + } + + const willBeAbandonedAt = moment(room.v.lastMessageTs).add(Number(secondsToAdd), 'seconds').toDate(); + LivechatRooms.setPredictedVisitorAbandonment(room._id, willBeAbandonedAt); +}; + +export const updatePredictedVisitorAbandonment = () => { + if (settings.get('Livechat_auto_close_abandoned_rooms')) { + LivechatRooms.findLivechat({ open: true }).forEach((room) => setPredictedVisitorAbandonmentTime(room)); + } else { + LivechatRooms.unsetPredictedVisitorAbandonment(); + } +}; diff --git a/ee/app/livechat-enterprise/server/lib/VisitorInactivityMonitor.js b/ee/app/livechat-enterprise/server/lib/VisitorInactivityMonitor.js new file mode 100644 index 000000000000..11879836e182 --- /dev/null +++ b/ee/app/livechat-enterprise/server/lib/VisitorInactivityMonitor.js @@ -0,0 +1,87 @@ +import { SyncedCron } from 'meteor/littledata:synced-cron'; +import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; + +import { settings } from '../../../../../app/settings/server'; +import { LivechatRooms, LivechatDepartment, Users } from '../../../../../app/models/server'; +import { Livechat } from '../../../../../app/livechat/server/lib/Livechat'; + +export class VisitorInactivityMonitor { + constructor() { + this._started = false; + this._name = 'Omnichannel Visitor Inactivity Monitor'; + this.messageCache = new Map(); + this.userToPerformAutomaticClosing; + } + + start() { + this._startMonitoring(); + this._initializeMessageCache(); + this.userToPerformAutomaticClosing = Users.findOneById('rocket.cat'); + } + + _startMonitoring() { + if (this.isRunning()) { + return; + } + const everyMinute = '* * * * *'; + SyncedCron.add({ + name: this._name, + schedule: (parser) => parser.cron(everyMinute), + job: () => { + this.handleAbandonedRooms(); + }, + }); + this._started = true; + } + + stop() { + if (!this.isRunning()) { + return; + } + + SyncedCron.remove(this._name); + + this._started = false; + } + + isRunning() { + return this._started; + } + + _initializeMessageCache() { + this.messageCache.clear(); + this.messageCache.set('default', settings.get('Livechat_abandoned_rooms_closed_custom_message') || TAPi18n.__('Closed_automatically')); + } + + _getDepartmentAbandonedCustomMessage(departmentId) { + if (this.messageCache.has('departmentId')) { + return this.messageCache.get('departmentId'); + } + const department = LivechatDepartment.findOneById(departmentId); + if (!department) { + return; + } + this.messageCache.set(department._id, department.abandonedRoomsCloseCustomMessage); + return department.abandonedRoomsCloseCustomMessage; + } + + closeRooms(room) { + let comment = this.messageCache.get('default'); + if (room.departmentId) { + comment = this._getDepartmentAbandonedCustomMessage(room.departmentId) || comment; + } + Livechat.closeRoom({ + comment, + room, + user: this.userToPerformAutomaticClosing, + }); + } + + handleAbandonedRooms() { + if (!settings.get('Livechat_auto_close_abandoned_rooms')) { + return; + } + LivechatRooms.findAbandonedOpenRooms(new Date()).forEach((room) => this.closeRooms(room)); + this._initializeMessageCache(); + } +} diff --git a/ee/app/livechat-enterprise/server/settings.js b/ee/app/livechat-enterprise/server/settings.js index 4ad2147cb830..8d91cb92f6c2 100644 --- a/ee/app/livechat-enterprise/server/settings.js +++ b/ee/app/livechat-enterprise/server/settings.js @@ -36,5 +36,20 @@ export const createSettings = () => { enableQuery: { _id: 'Livechat_waiting_queue', value: true }, }); + settings.add('Livechat_auto_close_abandoned_rooms', false, { + type: 'boolean', + group: 'Omnichannel', + section: 'Sessions', + i18nLabel: 'Enable_omnichannel_auto_close_abandoned_rooms', + }); + + settings.add('Livechat_abandoned_rooms_closed_custom_message', '', { + type: 'string', + group: 'Omnichannel', + section: 'Sessions', + i18nLabel: 'Livechat_abandoned_rooms_closed_custom_message', + enableQuery: { _id: 'Livechat_auto_close_abandoned_rooms', value: true }, + }); + Settings.addOptionValueById('Livechat_Routing_Method', { key: 'Load_Balancing', i18nLabel: 'Load_Balancing' }); }; diff --git a/ee/app/livechat-enterprise/server/startup.js b/ee/app/livechat-enterprise/server/startup.js index 3016268255ab..91d956ad449c 100644 --- a/ee/app/livechat-enterprise/server/startup.js +++ b/ee/app/livechat-enterprise/server/startup.js @@ -1,11 +1,24 @@ import { Meteor } from 'meteor/meteor'; import { settings } from '../../../../app/settings'; -import { checkWaitingQueue } from './lib/Helper'; +import { checkWaitingQueue, updatePredictedVisitorAbandonment } from './lib/Helper'; +import { VisitorInactivityMonitor } from './lib/VisitorInactivityMonitor'; import './lib/query.helper'; +const visitorActivityMonitor = new VisitorInactivityMonitor(); + Meteor.startup(function() { settings.onload('Livechat_maximum_chats_per_agent', function(/* key, value */) { checkWaitingQueue(); }); + settings.onload('Livechat_auto_close_abandoned_rooms', function(_, value) { + updatePredictedVisitorAbandonment(); + if (!value) { + return visitorActivityMonitor.stop(); + } + visitorActivityMonitor.start(); + }); + settings.onload('Livechat_visitor_inactivity_timeout', function() { + updatePredictedVisitorAbandonment(); + }); }); diff --git a/ee/app/models/server/models/LivechatRooms.js b/ee/app/models/server/models/LivechatRooms.js index 8fa684baf4b6..2fb9844d7aab 100644 --- a/ee/app/models/server/models/LivechatRooms.js +++ b/ee/app/models/server/models/LivechatRooms.js @@ -23,4 +23,38 @@ overwriteClassOnLicense('livechat-enterprise', LivechatRooms, { }, }); + +LivechatRooms.prototype.setPredictedVisitorAbandonment = function(roomId, willBeAbandonedAt) { + const query = { + _id: roomId, + }; + const update = { + $set: { + 'omnichannel.predictedVisitorAbandonmentAt': willBeAbandonedAt, + }, + }; + + return this.update(query, update); +}; + +LivechatRooms.prototype.findAbandonedOpenRooms = function(date) { + return this.find({ + 'omnichannel.predictedVisitorAbandonmentAt': { $lte: date }, + waitingResponse: { $exists: false }, + closedAt: { $exists: false }, + open: true, + }); +}; + +LivechatRooms.prototype.unsetPredictedVisitorAbandonment = function() { + return this.update({ + open: true, + t: 'l', + }, { + $unset: { 'omnichannel.predictedVisitorAbandonmentAt': 1 }, + }, { + multi: true, + }); +}; + export default LivechatRooms; diff --git a/ee/i18n/en.i18n.json b/ee/i18n/en.i18n.json index 73d194a28f1f..f9d3d4bd7b09 100644 --- a/ee/i18n/en.i18n.json +++ b/ee/i18n/en.i18n.json @@ -6,8 +6,11 @@ "Canned Responses": "Canned Responses", "Canned_Response_Removed": "Canned Response Removed", "Canned_Responses_Enable": "Enable Canned Responses", + "Closed_automatically": "Closed automatically by the system", "Edit_Tag": "Edit Tag", "Edit_Unit": "Edit Unit", + "Enable_omnichannel_auto_close_abandoned_rooms": "Enable automatic closing of rooms abandoned by the visitor", + "Enter_a_custom_message": "Enter a custom message", "Enterprise_License": "Enterprise License", "Enterprise_License_Description": "If your workspace is registered and license is provided by Rocket.Chat Cloud you don't need to manually update the license here.", "Failed_to_add_monitor": "Failed to add monitor", @@ -22,6 +25,7 @@ "LDAP_Roles_To_Rocket_Chat_Roles_Description": "Role mapping in object format where the object key must be the LDAP role and the object value must be an array of RC roles. Example: { 'ldapRole': ['rcRole', 'anotherRCRole'] }", "LDAP_Validate_Roles_For_Each_Login": "Validate mapping for each login", "LDAP_Validate_Roles_For_Each_Login_Description": "If the validation should occurs for each login (Be careful with this setting because it will overwrite the user roles in each login, otherwise this will be validated only at the moment of user creation).", + "Livechat_abandoned_rooms_closed_custom_message": "Custom message when room is automatically closed by visitor inactivity", "Livechat_Monitors": "Monitors", "Livechat_monitors": "Livechat monitors", "Max_number_of_chats_per_agent": "Max. number of simultaneous chats", @@ -35,6 +39,7 @@ "New_Tag": "New Tag", "New_Unit": "New Unit", "No_Canned_Responses": "No Canned Responses", + "Number_in_seconds": "Number in seconds", "Number_of_most_recent_chats_estimate_wait_time": "Number of recent chats to calculate estimate wait time", "Number_of_most_recent_chats_estimate_wait_time_description": "This number defines the number of last served rooms that will be used to calculate queue wait times.", "Others": "Others", diff --git a/ee/i18n/pt-BR.i18n.json b/ee/i18n/pt-BR.i18n.json index d995cda488e3..58d93186aaf0 100644 --- a/ee/i18n/pt-BR.i18n.json +++ b/ee/i18n/pt-BR.i18n.json @@ -2,8 +2,11 @@ "error-max-number-simultaneous-chats-reached": "O número máximo de bate-papos simultâneos por agente foi atingido.", "Add_monitor": "Adicionar Monitor", "Available_departments": "Departamentos disponíveis", + "Closed_automatically": "Fechado automaticamente pelo sistema", "Edit_Tag": "Editar Tag", "Edit_Unit": "Editar Unidade", + "Enable_omnichannel_auto_close_abandoned_rooms": "Habilitar o fechamento automático de salas abandonadas pelo visitante", + "Enter_a_custom_message": "Digite uma mensagem customizada", "Enterprise_License": "Licença Enterprise", "Enterprise_License_Description": "Se você registrou seu workspace e a licença foi fornecida pelo Rocket.Chat Cloud você não precisa atualizar a licença manualmente aqui.", "Invalid_Department": "Departamento inválido", @@ -16,6 +19,7 @@ "LDAP_Roles_To_Rocket_Chat_Roles_Description": "Mapeamento dos papéis que deve ser em formato de objeto onde a chave do objeto precisa ser o nome do papel LDAP e o valor deve ser um array de papéis Rocket.Chat. Exemplo: { 'ldapRole': ['rcRole', 'anotherRCRole'] }", "LDAP_Validate_Roles_For_Each_Login": "Validar o mapeamento em cada login", "LDAP_Validate_Roles_For_Each_Login_Description": " Se a validação deve ser feita a cada login(Tenha cuidado com essa configuração, pois ela vai sobrescrever os papéis de usuário a cada login, caso esteja desabilitado, a validação será feita apenas no momento da criação do usuário).", + "Livechat_abandoned_rooms_closed_custom_message": "Mensagem customizada para usar quando a sala for automaticamente fechada por abandono do visitante", "Livechat_Monitors": "Monitores", "Livechat_monitors": "Monitores de Livechat", "Max_number_of_chats_per_agent": "Número máximo de atendimentos simultâneos", @@ -26,6 +30,7 @@ "Monitors": "Monitores", "New_Tag": "Nova Tag", "New_Unit": "Nova Unidade", + "Number_in_seconds": "Number in seconds", "Number_of_most_recent_chats_estimate_wait_time": "Número de chats recentes para cálculo de tempo na fila", "Number_of_most_recent_chats_estimate_wait_time_description": "Este numero define a quantidade de últimas salas atendidas que serão usadas para calculo de estimativa de tempo de espera da fila.", "Others": "Outros", From 39c74d4b8cbd68071b2ddc774b390cc456644d9a Mon Sep 17 00:00:00 2001 From: Douglas Gubert Date: Mon, 13 Apr 2020 22:15:28 -0300 Subject: [PATCH 21/95] Update Apps-Engine to stable version (#17287) --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index c979d72972c4..26011ed5e407 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2849,9 +2849,9 @@ } }, "@rocket.chat/apps-engine": { - "version": "1.13.0-beta.3003", - "resolved": "https://registry.npmjs.org/@rocket.chat/apps-engine/-/apps-engine-1.13.0-beta.3003.tgz", - "integrity": "sha512-RGegax9zaDzQta7U1v05JYUgJUhrGlYBYioMdCJRvKs6NrmJNbpdeJ6A0Bu6pNKF9ppMkG17hfxI6xT0MoSd0w==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@rocket.chat/apps-engine/-/apps-engine-1.13.0.tgz", + "integrity": "sha512-gU72qk3xhk5UYGmgsp4VLnOOYeAcsc4O8K2rYiLfs1EpBA1tNY+/YtR6Crl5usdU7sRSHUq4Y86pAchepT6aJQ==", "requires": { "adm-zip": "^0.4.9", "cryptiles": "^4.1.3", diff --git a/package.json b/package.json index cda18917ced2..6315adde6862 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,7 @@ "@nivo/heatmap": "^0.61.0", "@nivo/line": "^0.61.1", "@nivo/pie": "^0.61.1", - "@rocket.chat/apps-engine": "^1.13.0-beta.3003", + "@rocket.chat/apps-engine": "^1.13.0", "@rocket.chat/fuselage": "^0.7.1", "@rocket.chat/fuselage-hooks": "^0.7.1", "@rocket.chat/fuselage-polyfills": "^0.7.1", From fd69a79d748bba316561330221e2b276daccb907 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Mon, 13 Apr 2020 23:30:23 -0300 Subject: [PATCH 22/95] [FIX] Avatar on sidebar when showing real names (#17286) --- app/lib/lib/roomTypes/direct.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/app/lib/lib/roomTypes/direct.js b/app/lib/lib/roomTypes/direct.js index 1a36927ba561..28295be6bcde 100644 --- a/app/lib/lib/roomTypes/direct.js +++ b/app/lib/lib/roomTypes/direct.js @@ -186,16 +186,23 @@ export class DirectMessageRoomType extends RoomTypeConfig { } getAvatarPath(roomData, subData) { + if (!roomData && !subData) { + return ''; + } + if (this.isGroupChat(roomData)) { return getAvatarURL({ username: roomData.uids.length + roomData.usernames.join() }); } - if (roomData) { - return getUserAvatarURL(roomData.name || this.roomName(roomData)); + const sub = subData || Subscriptions.findOne({ rid: roomData._id }, { fields: { name: 1 } }); + + if (sub && sub.name) { + return getUserAvatarURL(sub.name); } - const sub = subData || Subscriptions.findOne({ rid: roomData._id }, { fields: { name: 1 } }); - return getUserAvatarURL(sub.name || this.roomName(roomData)); + if (roomData) { + return getUserAvatarURL(roomData.name || this.roomName(roomData)); // rooms should have no name for direct messages... + } } includeInDashboard() { From 6b303c466f8b7d6b6b416225620a08e27554c859 Mon Sep 17 00:00:00 2001 From: 1rV1N <34376228+1rV1N-git@users.noreply.github.com> Date: Tue, 14 Apr 2020 05:44:28 +0300 Subject: [PATCH 23/95] Update ru.i18n.json (#16869) --- packages/rocketchat-i18n/i18n/ru.i18n.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/rocketchat-i18n/i18n/ru.i18n.json b/packages/rocketchat-i18n/i18n/ru.i18n.json index 80dee4ae0e55..c69993f826d0 100644 --- a/packages/rocketchat-i18n/i18n/ru.i18n.json +++ b/packages/rocketchat-i18n/i18n/ru.i18n.json @@ -2390,7 +2390,7 @@ "Num_Agents": "# Представители", "Number_of_events": "Количество событий", "Number_of_federated_users": "Количество федеративных пользователей", - "Number_of_federated_servers": "Количество федеративных пользователей", + "Number_of_federated_servers": "Количество федеративных серверов", "Number_of_messages": "Количество сообщений", "OAuth Apps": "Приложения OAuth", "OAuth_Application": "Приложение OAuth", @@ -3559,4 +3559,4 @@ "Your_server_link": "Ссылка на ваш сервер", "Your_temporary_password_is_password": "Ваш временный пароль [password].", "Your_workspace_is_ready": "Ваше рабочее пространство готово к работе 🎉" -} \ No newline at end of file +} From d00a452daf8eeeaee773ec3746d9e94e641f48a8 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Tue, 14 Apr 2020 00:57:18 -0300 Subject: [PATCH 24/95] [FIX] Directory default tab (#17283) --- .../components/Directory/DirectoryTable.js | 22 +++++++++---------- .../views/app/components/Directory/index.js | 8 ++++--- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/app/ui/client/views/app/components/Directory/DirectoryTable.js b/app/ui/client/views/app/components/Directory/DirectoryTable.js index 09925c92e407..96c73164102c 100644 --- a/app/ui/client/views/app/components/Directory/DirectoryTable.js +++ b/app/ui/client/views/app/components/Directory/DirectoryTable.js @@ -27,23 +27,23 @@ export function Markdown({ children, ...props }) { const LoadingRow = ({ cols }) => - - - - - - - - - + + + + + + + - + { Array.from({ length: cols - 1 }, (_, i) => )} ; +const style = { minHeight: '40px' }; + export function DirectoryTable({ data = {}, renderRow, @@ -79,7 +79,7 @@ export function DirectoryTable({ return <> - + } onChange={handleChange} value={text} /> {channels && !channels.length diff --git a/app/ui/client/views/app/components/Directory/index.js b/app/ui/client/views/app/components/Directory/index.js index 9788b7fb11e3..671b079f423d 100644 --- a/app/ui/client/views/app/components/Directory/index.js +++ b/app/ui/client/views/app/components/Directory/index.js @@ -13,6 +13,8 @@ const avatarBase = { baseUrl: '/avatar/' }; export function DirectoryPage() { const t = useTranslation(); + const defaultTab = useSetting('Accounts_Directory_DefaultView'); + const federationEnabled = useSetting('FEDERATION_Enabled'); const tab = useRouteParameter('tab'); @@ -22,13 +24,13 @@ export function DirectoryPage() { useEffect(() => { if (!tab || (tab === 'external' && !federationEnabled)) { - return goToDirectory.replacingState({ tab: 'channels' }); + return goToDirectory.replacingState({ tab: defaultTab }); } - }, [tab, federationEnabled]); + }, [tab, federationEnabled, defaultTab]); return - + {t('Channels')} {t('Users')} { federationEnabled && {t('External_Users')} } From 16a2b9fcbd5960c146511f95d147b9521e85a946 Mon Sep 17 00:00:00 2001 From: gabriellsh <40830821+gabriellsh@users.noreply.github.com> Date: Tue, 14 Apr 2020 01:34:46 -0300 Subject: [PATCH 25/95] [FIX] Email not verified message (#16236) Co-authored-by: Guilherme Gazzo --- app/ui-login/client/login/form.html | 2 +- app/ui-login/client/login/form.js | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/ui-login/client/login/form.html b/app/ui-login/client/login/form.html index 565a3403ef2a..3a20bd66344f 100644 --- a/app/ui-login/client/login/form.html +++ b/app/ui-login/client/login/form.html @@ -109,7 +109,7 @@

    {{{_ "Registration_Succeeded"}}}

    + placeholder="{{_ "Email"}}" autofocus value="{{#if state 'email-verification'}}{{typedEmail}}{{/if}}">
    diff --git a/app/ui-login/client/login/form.js b/app/ui-login/client/login/form.js index a0c5bfa3ef41..cbf9fe67d25e 100644 --- a/app/ui-login/client/login/form.js +++ b/app/ui-login/client/login/form.js @@ -72,6 +72,9 @@ Template.loginForm.helpers({ manuallyApproveNewUsers() { return settings.get('Accounts_ManuallyApproveNewUsers'); }, + typedEmail() { + return s.trim(Template.instance().typedEmail); + }, }); Template.loginForm.events({ @@ -137,16 +140,18 @@ Template.loginForm.events({ return Meteor[loginMethod](s.trim(formData.emailOrUsername), formData.pass, function(error) { instance.loading.set(false); if (error != null) { - if (error.error === 'no-valid-email') { - instance.state.set('email-verification'); - } else if (error.error === 'error-user-is-not-activated') { + if (error.error === 'error-user-is-not-activated') { + return toastr.error(t('Wait_activation_warning')); + } if (error.error === 'error-invalid-email') { + instance.typedEmail = formData.emailOrUsername; + return instance.state.set('email-verification'); + } if (error.error === 'error-user-is-not-activated') { toastr.error(t('Wait_activation_warning')); } else if (error.error === 'error-app-user-is-not-allowed-to-login') { toastr.error(t('App_user_not_allowed_to_login')); } else { - toastr.error(t('User_not_found_or_incorrect_password')); + return toastr.error(t('User_not_found_or_incorrect_password')); } - return; } Session.set('forceLogin', false); }); @@ -234,7 +239,7 @@ Template.loginForm.onCreated(function() { validationObj.emailOrUsername = t('Invalid_email'); } } - if (state !== 'forgot-password') { + if (state !== 'forgot-password' && state !== 'email-verification') { if (!formObj.pass) { validationObj.pass = t('Invalid_pass'); } From 057ba18845ae194ee1134e7224150e5ed50373c1 Mon Sep 17 00:00:00 2001 From: Ashwani Yadav Date: Tue, 14 Apr 2020 10:08:41 +0530 Subject: [PATCH 26/95] [FIX] In Create a New Channel, input should be focused on channel name instead of invite users (#16405) --- app/ui/client/views/app/createChannel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/ui/client/views/app/createChannel.js b/app/ui/client/views/app/createChannel.js index 778f2a708d40..9cb96bfc1abc 100644 --- a/app/ui/client/views/app/createChannel.js +++ b/app/ui/client/views/app/createChannel.js @@ -274,7 +274,7 @@ Template.createChannel.events({ Template.createChannel.onRendered(function() { const users = this.selectedUsers; - this.firstNode.querySelector('[name="users"]').focus(); + this.firstNode.querySelector('[name="name"]').focus(); this.ac.element = this.firstNode.querySelector('[name="users"]'); this.ac.$element = $(this.ac.element); this.ac.$element.on('autocompleteselect', function(e, { item }) { From a05a2d5649b02dd0d7cfc69cbd9c0d0c502f1293 Mon Sep 17 00:00:00 2001 From: Ashwani Yadav Date: Tue, 14 Apr 2020 10:18:00 +0530 Subject: [PATCH 27/95] [FIX] Directory users email sort button (#16606) Co-authored-by: Guilherme Gazzo --- server/methods/browseChannels.js | 1 + 1 file changed, 1 insertion(+) diff --git a/server/methods/browseChannels.js b/server/methods/browseChannels.js index 762b4662fe5e..ba720a62cbba 100644 --- a/server/methods/browseChannels.js +++ b/server/methods/browseChannels.js @@ -31,6 +31,7 @@ const sortUsers = function(field, direction) { case 'email': return { 'emails.address': direction === 'asc' ? 1 : -1, + username: direction === 'asc' ? 1 : -1, }; default: return { From 9aaf2eab75c726a0d5ddf48b23bb655828cba5d1 Mon Sep 17 00:00:00 2001 From: Ashwani Yadav Date: Tue, 14 Apr 2020 10:20:01 +0530 Subject: [PATCH 28/95] [FIX] No maxlength defined for custom user status (#16534) --- app/user-status/client/admin/userStatusEdit.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/user-status/client/admin/userStatusEdit.html b/app/user-status/client/admin/userStatusEdit.html index 0c4bd9b21f42..75597ad3972f 100644 --- a/app/user-status/client/admin/userStatusEdit.html +++ b/app/user-status/client/admin/userStatusEdit.html @@ -13,7 +13,7 @@

    {{_ "Custom_User_Status_Add"}}

    From 01f1aac66d4dceea95f732c71e28f92215f2130e Mon Sep 17 00:00:00 2001 From: CC007 Date: Tue, 14 Apr 2020 06:54:49 +0200 Subject: [PATCH 29/95] [FIX] translation for nl (#16742) --- packages/rocketchat-i18n/i18n/nl.i18n.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/rocketchat-i18n/i18n/nl.i18n.json b/packages/rocketchat-i18n/i18n/nl.i18n.json index c425b6ad95a3..546b0b6c6e64 100644 --- a/packages/rocketchat-i18n/i18n/nl.i18n.json +++ b/packages/rocketchat-i18n/i18n/nl.i18n.json @@ -1115,8 +1115,8 @@ "Enter_a_username": "Voer een gebruikersnaam in", "Enter_Alternative": "Alternatieve modus (verzenden met Enter + Ctrl / Alt / Shift / CMD)", "Enter_authentication_code": "Voer verificatiecode in", - "Enter_Behaviour": "Voer sleutelgedrag in", - "Enter_Behaviour_Description": "Dit verandert als de Enter-toets een bericht verzendt of een regeleinde uitvoert", + "Enter_Behaviour": "Enter-toets gedrag", + "Enter_Behaviour_Description": "Dit verandert of de Enter-toets een bericht verstuurd of de cursor naar de volgende regel verplaatst.", "Enter_name_here": "Voer naam hier", "Enter_Normal": "Normale modus (verzenden met Enter)", "Enter_to": "Ga binnen bij", @@ -2044,7 +2044,7 @@ "OAuth_Application": "OAuth Application", "OAuth_Applications": "OAuth Applications", "Objects": "Voorwerpen", - "Off": "Af", + "Off": "Uit", "Off_the_record_conversation": "Off-the-opname Conversation", "Off_the_record_conversation_is_not_available_for_your_browser_or_device": "Off-the-opname gesprek is niet beschikbaar voor uw browser of apparaat.", "Office_Hours": "Kantoortijden", @@ -2064,7 +2064,7 @@ "Old Colors": "Oude kleuren", "Old Colors (minor)": "Oude kleuren (klein)", "Older_than": "Ouder dan", - "On": "Op", + "On": "Aan", "Online": "Online", "online": "online", "Only_authorized_users_can_write_new_messages": "Alleen geautoriseerde gebruikers kunnen nieuwe berichten schrijven", @@ -2123,7 +2123,7 @@ "pin-message": "Pinbericht", "pin-message_description": "Toestemming om een ​​bericht in een kanaal vast te zetten", "Pin_Message": "Zet bericht vast", - "Pinned_a_message": "Speldde een bericht:", + "Pinned_a_message": "Heeft een bericht vastgezet:", "Pinned_Messages": "Vastgezette berichten", "PiwikAdditionalTrackers": "Extra Piwik-sites", "PiwikAdditionalTrackers_Description": "Voer additionele Piwik-website-URL's en SiteID's in de volgende indeling in, als u dezelfde gegevens niet op verschillende websites wilt bijhouden: [{\"trackerURL\": \"https: //my.piwik.domain2/\", \"siteId\": 42}, {\"trackerURL\": \"https: //my.piwik.domain3/\", \"siteId\": 15}]", @@ -3056,4 +3056,4 @@ "Your_push_was_sent_to_s_devices": "Je push werd verzonden naar %s apparaten", "Your_server_link": "Uw serverlink", "Your_workspace_is_ready": "Uw werkruimte is klaar voor gebruik 🎉" -} \ No newline at end of file +} From 863b9b61eb850b6b97f3937595aee81e977ee6a8 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Tue, 14 Apr 2020 10:37:47 -0300 Subject: [PATCH 30/95] [FIX] Discussions created from inside DMs were not working (#17282) --- .../server/methods/createDiscussion.js | 4 +- app/lib/lib/roomTypes/public.js | 4 + app/utils/lib/RoomTypeConfig.js | 4 + server/startup/migrations/index.js | 1 + server/startup/migrations/v183.js | 94 +++++++++++++++++++ 5 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 server/startup/migrations/v183.js diff --git a/app/discussion/server/methods/createDiscussion.js b/app/discussion/server/methods/createDiscussion.js index b15a057adedb..e4287b86a45e 100644 --- a/app/discussion/server/methods/createDiscussion.js +++ b/app/discussion/server/methods/createDiscussion.js @@ -5,6 +5,7 @@ import { hasAtLeastOnePermission, canAccessRoom } from '../../../authorization/s import { Messages, Rooms } from '../../../models/server'; import { createRoom, addUserToRoom, sendMessage, attachMessage } from '../../../lib/server'; import { settings } from '../../../settings/server'; +import { roomTypes } from '../../../utils/server'; const getParentRoom = (rid) => { const room = Rooms.findOne(rid); @@ -86,7 +87,8 @@ const create = ({ prid, pmid, t_name, reply, users }) => { // auto invite the replied message owner const invitedUsers = message ? [message.u.username, ...users] : users; - const discussion = createRoom(p_room.t, name, user.username, [...new Set(invitedUsers)], false, { + const type = roomTypes.getConfig(p_room.t).getDiscussionType(); + const discussion = createRoom(type, name, user.username, [...new Set(invitedUsers)], false, { fname: t_name, description: message.msg, // TODO discussions remove topic: p_room.name, // TODO discussions remove diff --git a/app/lib/lib/roomTypes/public.js b/app/lib/lib/roomTypes/public.js index 11d688731eff..8732e6d13d9c 100644 --- a/app/lib/lib/roomTypes/public.js +++ b/app/lib/lib/roomTypes/public.js @@ -133,4 +133,8 @@ export class PublicRoomType extends RoomTypeConfig { return getAvatarURL({ username: `@${ this.roomName(roomData) }` }); } + + getDiscussionType() { + return 'c'; + } } diff --git a/app/utils/lib/RoomTypeConfig.js b/app/utils/lib/RoomTypeConfig.js index da578a82402e..bc40944c6b3a 100644 --- a/app/utils/lib/RoomTypeConfig.js +++ b/app/utils/lib/RoomTypeConfig.js @@ -299,4 +299,8 @@ export class RoomTypeConfig { openCustomProfileTab() { return false; } + + getDiscussionType() { + return 'p'; + } } diff --git a/server/startup/migrations/index.js b/server/startup/migrations/index.js index 60ee4afe9979..948bc590af93 100644 --- a/server/startup/migrations/index.js +++ b/server/startup/migrations/index.js @@ -180,4 +180,5 @@ import './v179'; import './v180'; import './v181'; import './v182'; +import './v183'; import './xrun'; diff --git a/server/startup/migrations/v183.js b/server/startup/migrations/v183.js new file mode 100644 index 000000000000..fd242bd4d9ef --- /dev/null +++ b/server/startup/migrations/v183.js @@ -0,0 +1,94 @@ +import { Random } from 'meteor/random'; + +import { Migrations } from '../../../app/migrations'; +import { Rooms, Messages, Subscriptions, Uploads } from '../../../app/models/server'; + +const unifyRooms = (room) => { + // verify if other DM already exists + const other = Rooms.findOne({ + _id: { $ne: room._id }, + t: 'd', + uids: room.uids, + }); + + // we need to at least change the _id of the current room, so remove it + Rooms.remove({ _id: room._id }); + + const newId = (other && other._id) || Random.id(); + + if (!other) { + // create the same room with different _id + Rooms.insert({ + ...room, + _id: newId, + }); + + // update subscription to point to new room _id + Subscriptions.update({ rid: room._id }, { + $set: { + rid: newId, + }, + }, { multi: true }); + + return newId; + } + + // the other room exists already, so just remove the subscription of the wrong room + Subscriptions.remove({ rid: room._id }); + + return newId; +}; + +const fixSelfDMs = () => { + Rooms.find({ + t: 'd', + uids: { $size: 1 }, + }).forEach((room) => { + if (!Array.isArray(room.uids) || room._id !== room.uids[0]) { + return; + } + + const correctId = unifyRooms(room); + + // move things to correct room + Messages.update({ rid: room._id }, { + $set: { + rid: correctId, + }, + }, { multi: true }); + Uploads.update({ rid: room._id }, { + $set: { + rid: correctId, + }, + }, { multi: true }); + }); +}; + +const fixDiscussions = () => { + Rooms.find({ t: 'd', prid: { $exists: true } }, { fields: { _id: 1 } }).forEach(({ _id }) => { + const { u } = Messages.findOne({ drid: _id }, { fields: { u: 1 } }) || {}; + + Rooms.update({ _id }, { + $set: { + t: 'p', + name: Random.id(), + u, + ro: false, + default: false, + sysMes: true, + }, + $unset: { + usernames: 1, + uids: 1, + }, + }); + }); +}; + +Migrations.add({ + version: 183, + up() { + fixDiscussions(); + fixSelfDMs(); + }, +}); From 130af28500e6740f7f1bb59a2637dec1aaa1a3d0 Mon Sep 17 00:00:00 2001 From: Ashwani Yadav Date: Tue, 14 Apr 2020 19:16:01 +0530 Subject: [PATCH 31/95] [FIX] Admin panel custom sounds, multiple sound playback fix and added single play/pause button (#16215) --- .../client/admin/adminSounds.html | 7 +++++-- app/custom-sounds/client/admin/adminSounds.js | 18 ++++++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/app/custom-sounds/client/admin/adminSounds.html b/app/custom-sounds/client/admin/adminSounds.html index b4ca2015025a..c9a20bd9c4fd 100644 --- a/app/custom-sounds/client/admin/adminSounds.html +++ b/app/custom-sounds/client/admin/adminSounds.html @@ -45,8 +45,11 @@
    - {{>icon _id=_id icon="play" block="icon-play-circled"}} - {{>icon _id=_id icon="pause" block="icon-pause-circled"}} + {{#if isPlaying _id}} + {{>icon _id=_id icon="pause" block="icon-pause-circled"}} + {{else}} + {{>icon _id=_id icon="play" block="icon-play-circled"}} + {{/if}} {{>icon _id=_id icon="ban" block="icon-reset-circled"}}
    diff --git a/app/custom-sounds/client/admin/adminSounds.js b/app/custom-sounds/client/admin/adminSounds.js index e142bc85d60d..9de092e3c143 100644 --- a/app/custom-sounds/client/admin/adminSounds.js +++ b/app/custom-sounds/client/admin/adminSounds.js @@ -16,6 +16,9 @@ Template.adminSounds.helpers({ const instance = Template.instance(); return instance.filter && instance.filter.get(); }, + isPlaying(_id) { + return Template.instance().isPlayingId.get() === _id; + }, customsounds() { return Template.instance().sounds.get(); }, @@ -62,6 +65,7 @@ Template.adminSounds.onCreated(function() { this.query = new ReactiveVar({}); this.isLoading = new ReactiveVar(false); this.filter = new ReactiveVar(''); + this.isPlayingId = new ReactiveVar(''); this.tabBar = new RocketChatTabBar(); this.tabBar.showGroup(FlowRouter.current().route.name); @@ -138,18 +142,28 @@ Template.adminSounds.events({ t.filter.set(e.currentTarget.value); t.offset.set(0); }, - 'click .icon-play-circled'(e) { + 'click .icon-play-circled'(e, t) { e.preventDefault(); e.stopPropagation(); CustomSounds.play(this._id); + const audio = document.getElementById(t.isPlayingId.get()); + if (audio) { + audio.pause(); + } + document.getElementById(this._id).onended = () => { + t.isPlayingId.set(''); + this.onended = null; + }; + t.isPlayingId.set(this._id); }, - 'click .icon-pause-circled'(e) { + 'click .icon-pause-circled'(e, t) { e.preventDefault(); e.stopPropagation(); const audio = document.getElementById(this._id); if (audio && !audio.paused) { audio.pause(); } + t.isPlayingId.set(''); }, 'click .icon-reset-circled'(e) { e.preventDefault(); From 4e055c4f07684729387a96039104522fa20da8ec Mon Sep 17 00:00:00 2001 From: ritwizsinha <43509699+ritwizsinha@users.noreply.github.com> Date: Tue, 14 Apr 2020 19:18:03 +0530 Subject: [PATCH 32/95] [FIX] Variable rendering problem on Import recent history page (#15997) --- app/importer/client/admin/importOperationSummary.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/importer/client/admin/importOperationSummary.html b/app/importer/client/admin/importOperationSummary.html index 2378a4ebddc8..c033a4ffe3b9 100644 --- a/app/importer/client/admin/importOperationSummary.html +++ b/app/importer/client/admin/importOperationSummary.html @@ -1,6 +1,6 @@ +
    + {{> livechatAutocompleteUser + onClickTag=onClickTagDepartment + list=selectedDepartments + onSelect=onSelectDepartments + collection='CachedDepartmentList' + endpoint='livechat/department.autocomplete' + field='name' + sort='name' + label="List_of_departments_for_forward" + placeholder="Enter_a_department_name" + name="department" + icon="queue" + noMatchTemplate="userSearchEmpty" + templateItem="popupList_item_channel" + template="roomSearch" + noMatchTemplate="roomSearchEmpty" + modifier=departmentModifier + showLabel=true + exceptions=exceptionsDepartments + }} + +
    + {{{_ "List_of_departments_for_forward_description"}}} +
    +
    + \ No newline at end of file diff --git a/ee/app/livechat-enterprise/client/views/app/customTemplates/livechatDepartmentCustomFieldsForm.js b/ee/app/livechat-enterprise/client/views/app/customTemplates/livechatDepartmentCustomFieldsForm.js index 71ffdfde7384..a1851d16cea3 100644 --- a/ee/app/livechat-enterprise/client/views/app/customTemplates/livechatDepartmentCustomFieldsForm.js +++ b/ee/app/livechat-enterprise/client/views/app/customTemplates/livechatDepartmentCustomFieldsForm.js @@ -1,23 +1,58 @@ import { ReactiveVar } from 'meteor/reactive-var'; import { Template } from 'meteor/templating'; -import { APIClient } from '../../../../../../../app/utils/client'; +import { APIClient, mountArrayQueryParameters } from '../../../../../../../app/utils/client'; import './livechatDepartmentCustomFieldsForm.html'; Template.livechatDepartmentCustomFieldsForm.helpers({ department() { return Template.instance().department.get(); }, + departmentModifier() { + return (filter, text = '') => { + const f = filter.get(); + return `${ f.length === 0 ? text : text.replace(new RegExp(filter.get(), 'i'), (part) => `${ part }`) }`; + }; + }, + onClickTagDepartment() { + return Template.instance().onClickTagDepartment; + }, + selectedDepartments() { + return Template.instance().selectedDepartments.get(); + }, + selectedDepartmentsIds() { + return Template.instance().selectedDepartments.get().map((dept) => dept._id); + }, + onSelectDepartments() { + return Template.instance().onSelectDepartments; + }, + exceptionsDepartments() { + const department = Template.instance().department.get(); + return [department && department._id, ...Template.instance().selectedDepartments.get().map((dept) => dept._id)]; + }, }); Template.livechatDepartmentCustomFieldsForm.onCreated(function() { + this.selectedDepartments = new ReactiveVar([]); const { id: _id, department: contextDepartment } = this.data; this.department = new ReactiveVar(contextDepartment); + this.onSelectDepartments = ({ item: department }) => { + department.text = department.name; + this.selectedDepartments.set(this.selectedDepartments.get().concat(department)); + }; + + this.onClickTagDepartment = (department) => { + this.selectedDepartments.set(this.selectedDepartments.get().filter((dept) => dept._id !== department._id)); + }; if (!contextDepartment && _id) { this.autorun(async () => { const { department } = await APIClient.v1.get(`livechat/department/${ _id }`); + if (department.departmentsAllowedToForward) { + const { departments } = await APIClient.v1.get(`livechat/department.listByIds?${ mountArrayQueryParameters('ids', department.departmentsAllowedToForward) }&fields=${ JSON.stringify({ fields: { name: 1 } }) }`); + this.selectedDepartments.set(departments.map((dept) => ({ _id: dept._id, text: dept.name }))); + } this.department.set(department); }); } diff --git a/ee/app/livechat-enterprise/server/hooks/afterRemoveDepartment.js b/ee/app/livechat-enterprise/server/hooks/afterRemoveDepartment.js new file mode 100644 index 000000000000..4a101a0787fb --- /dev/null +++ b/ee/app/livechat-enterprise/server/hooks/afterRemoveDepartment.js @@ -0,0 +1,10 @@ +import { callbacks } from '../../../../../app/callbacks'; +import { LivechatDepartment } from '../../../../../app/models/server'; + +callbacks.add('livechat.afterRemoveDepartment', (department) => { + if (!department) { + return department; + } + LivechatDepartment.removeDepartmentFromForwardListById(department._id); + return department; +}, callbacks.priority.HIGH, 'livechat-after-remove-department'); diff --git a/ee/app/livechat-enterprise/server/hooks/beforeForwardRoomToDepartment.js b/ee/app/livechat-enterprise/server/hooks/beforeForwardRoomToDepartment.js new file mode 100644 index 000000000000..b0bf3f95d1f5 --- /dev/null +++ b/ee/app/livechat-enterprise/server/hooks/beforeForwardRoomToDepartment.js @@ -0,0 +1,26 @@ +import { Meteor } from 'meteor/meteor'; + +import { callbacks } from '../../../../../app/callbacks'; +import { LivechatDepartment } from '../../../../../app/models/server'; + +callbacks.add('livechat.beforeForwardRoomToDepartment', (options) => { + const { room, transferData } = options; + if (!room || !transferData) { + return options; + } + const { departmentId } = room; + if (!departmentId) { + return options; + } + const { department: departmentToTransfer } = transferData; + const currentDepartment = LivechatDepartment.findOneById(departmentId); + if (!currentDepartment) { + return options; + } + const { departmentsAllowedToForward } = currentDepartment; + const isAllowedToTransfer = !departmentsAllowedToForward || (Array.isArray(departmentsAllowedToForward) && departmentsAllowedToForward.includes(departmentToTransfer._id)); + if (isAllowedToTransfer) { + return options; + } + throw new Meteor.Error('error-forwarding-department-target-not-allowed', 'The forwarding to the target department is not allowed.'); +}, callbacks.priority.HIGH, 'livechat-before-forward-room-to-department'); diff --git a/ee/app/livechat-enterprise/server/hooks/onLoadForwardDepartmentRestrictions.js b/ee/app/livechat-enterprise/server/hooks/onLoadForwardDepartmentRestrictions.js new file mode 100644 index 000000000000..538ce151b30c --- /dev/null +++ b/ee/app/livechat-enterprise/server/hooks/onLoadForwardDepartmentRestrictions.js @@ -0,0 +1,17 @@ +import { callbacks } from '../../../../../app/callbacks'; +import { LivechatDepartment } from '../../../../../app/models/server'; + +callbacks.add('livechat.onLoadForwardDepartmentRestrictions', (departmentId) => { + if (!departmentId) { + return {}; + } + const department = LivechatDepartment.findOneById(departmentId, { fields: { departmentsAllowedToForward: 1 } }); + if (!department) { + return {}; + } + const { departmentsAllowedToForward } = department; + if (!departmentsAllowedToForward) { + return {}; + } + return { _id: { $in: departmentsAllowedToForward } }; +}, callbacks.priority.MEDIUM, 'livechat-on-load-forward-department-restrictions'); diff --git a/ee/app/livechat-enterprise/server/index.js b/ee/app/livechat-enterprise/server/index.js index e15a5bef4edc..297e6d1962b5 100644 --- a/ee/app/livechat-enterprise/server/index.js +++ b/ee/app/livechat-enterprise/server/index.js @@ -4,6 +4,9 @@ import './hooks/addDepartmentAncestors'; import './hooks/afterForwardChatToDepartment'; import './hooks/beforeListTags'; import './hooks/setPredictedVisitorAbandonmentTime'; +import './hooks/beforeForwardRoomToDepartment'; +import './hooks/afterRemoveDepartment'; +import './hooks/onLoadForwardDepartmentRestrictions'; import './methods/addMonitor'; import './methods/getUnitsFromUserRoles'; import './methods/removeMonitor'; diff --git a/ee/app/models/server/models/LivechatDepartment.js b/ee/app/models/server/models/LivechatDepartment.js index d54c0db5d65f..2e4785282d91 100644 --- a/ee/app/models/server/models/LivechatDepartment.js +++ b/ee/app/models/server/models/LivechatDepartment.js @@ -32,6 +32,9 @@ overwriteClassOnLicense('livechat-enterprise', LivechatDepartment, { if (args.length > 2 && !args[1].type) { args[1].type = 'd'; } + if (args[1] && args[1].departmentsAllowedToForward) { + args[1].departmentsAllowedToForward = args[1].departmentsAllowedToForward.split(','); + } return originalFn.apply(this, args); }, @@ -49,4 +52,8 @@ overwriteClassOnLicense('livechat-enterprise', LivechatDepartment, { }, }); +LivechatDepartment.prototype.removeDepartmentFromForwardListById = function(_id) { + return this.update({ departmentsAllowedToForward: _id }, { $pull: { departmentsAllowedToForward: _id } }, { multi: true }); +}; + export default LivechatDepartment; diff --git a/ee/i18n/en.i18n.json b/ee/i18n/en.i18n.json index f9d3d4bd7b09..4d15e29fa152 100644 --- a/ee/i18n/en.i18n.json +++ b/ee/i18n/en.i18n.json @@ -13,6 +13,7 @@ "Enter_a_custom_message": "Enter a custom message", "Enterprise_License": "Enterprise License", "Enterprise_License_Description": "If your workspace is registered and license is provided by Rocket.Chat Cloud you don't need to manually update the license here.", + "error-forwarding-department-target-not-allowed": "The forwarding to the target department is not allowed.", "Failed_to_add_monitor": "Failed to add monitor", "Invalid Canned Response": "Invalid Canned Response", "Invalid_Department": "Invalid Department", @@ -25,6 +26,8 @@ "LDAP_Roles_To_Rocket_Chat_Roles_Description": "Role mapping in object format where the object key must be the LDAP role and the object value must be an array of RC roles. Example: { 'ldapRole': ['rcRole', 'anotherRCRole'] }", "LDAP_Validate_Roles_For_Each_Login": "Validate mapping for each login", "LDAP_Validate_Roles_For_Each_Login_Description": "If the validation should occurs for each login (Be careful with this setting because it will overwrite the user roles in each login, otherwise this will be validated only at the moment of user creation).", + "List_of_departments_for_forward": "List of departments allowed for forwarding (Optional)", + "List_of_departments_for_forward_description": "Allow to set a restricted list of departments that can receive chats from this department", "Livechat_abandoned_rooms_closed_custom_message": "Custom message when room is automatically closed by visitor inactivity", "Livechat_Monitors": "Monitors", "Livechat_monitors": "Livechat monitors", diff --git a/ee/i18n/pt-BR.i18n.json b/ee/i18n/pt-BR.i18n.json index 58d93186aaf0..7ec29f0cbd8b 100644 --- a/ee/i18n/pt-BR.i18n.json +++ b/ee/i18n/pt-BR.i18n.json @@ -9,6 +9,7 @@ "Enter_a_custom_message": "Digite uma mensagem customizada", "Enterprise_License": "Licença Enterprise", "Enterprise_License_Description": "Se você registrou seu workspace e a licença foi fornecida pelo Rocket.Chat Cloud você não precisa atualizar a licença manualmente aqui.", + "error-forwarding-department-target-not-allowed": "O encaminhamento para o departamento selecionado não é permitido.", "Invalid_Department": "Departamento inválido", "LDAP_Default_Role_To_User": "Papel padrão para o usuário", "LDAP_Default_Role_To_User_Description": "Papel padrão par ser aplicado ao usuário, caso ele tenha algum papel do LDAP que não esteja mapeado.", @@ -19,6 +20,8 @@ "LDAP_Roles_To_Rocket_Chat_Roles_Description": "Mapeamento dos papéis que deve ser em formato de objeto onde a chave do objeto precisa ser o nome do papel LDAP e o valor deve ser um array de papéis Rocket.Chat. Exemplo: { 'ldapRole': ['rcRole', 'anotherRCRole'] }", "LDAP_Validate_Roles_For_Each_Login": "Validar o mapeamento em cada login", "LDAP_Validate_Roles_For_Each_Login_Description": " Se a validação deve ser feita a cada login(Tenha cuidado com essa configuração, pois ela vai sobrescrever os papéis de usuário a cada login, caso esteja desabilitado, a validação será feita apenas no momento da criação do usuário).", + "List_of_departments_for_forward": "Lista de departamentos permitidos para o encaminhamento(Opcional).", + "List_of_departments_for_forward_description": "Permite definir uma lista restrita de departamentos que podem receber conversas desse departamento.", "Livechat_abandoned_rooms_closed_custom_message": "Mensagem customizada para usar quando a sala for automaticamente fechada por abandono do visitante", "Livechat_Monitors": "Monitores", "Livechat_monitors": "Monitores de Livechat", From 545e03a07d023a1a359779c9287212e525c9fc66 Mon Sep 17 00:00:00 2001 From: Hullen Gonzales Date: Mon, 20 Apr 2020 21:51:17 -0300 Subject: [PATCH 66/95] [FIX] Show active admin and user account menu item (#17047) --- app/apps/client/admin/helpers.js | 2 +- app/apps/client/admin/marketplace.js | 2 +- app/cloud/client/index.js | 4 ++-- app/federation/client/admin/dashboard.js | 2 +- app/livechat/client/views/sideNav/livechatFlex.js | 3 +++ app/theme/client/imports/components/sidebar/sidebar-item.css | 4 ++++ app/theme/client/imports/general/variables.css | 1 + app/ui-account/client/accountFlex.js | 3 +++ app/ui-admin/client/adminFlex.html | 2 +- app/ui-admin/client/adminFlex.js | 5 +++++ private/client/imports/general/variables.css | 1 + 11 files changed, 23 insertions(+), 6 deletions(-) diff --git a/app/apps/client/admin/helpers.js b/app/apps/client/admin/helpers.js index ca04c715fbc5..f78b4c661599 100644 --- a/app/apps/client/admin/helpers.js +++ b/app/apps/client/admin/helpers.js @@ -47,7 +47,7 @@ const promptCloudLogin = () => { html: false, }, (confirmed) => { if (confirmed) { - FlowRouter.go('cloud-config'); + FlowRouter.go('cloud'); } }); }; diff --git a/app/apps/client/admin/marketplace.js b/app/apps/client/admin/marketplace.js index 0907080453d2..495bda2a90ac 100644 --- a/app/apps/client/admin/marketplace.js +++ b/app/apps/client/admin/marketplace.js @@ -254,7 +254,7 @@ Template.marketplace.helpers({ Template.marketplace.events({ 'click .js-cloud-login'() { - FlowRouter.go('cloud-config'); + FlowRouter.go('cloud'); }, 'submit .js-search-form'(event) { event.stopPropagation(); diff --git a/app/cloud/client/index.js b/app/cloud/client/index.js index 6504dcc0e8e7..0c8025d22dbd 100644 --- a/app/cloud/client/index.js +++ b/app/cloud/client/index.js @@ -8,7 +8,7 @@ import { registerAdminRoute, registerAdminSidebarItem } from '../../ui-admin/cli import { hasAtLeastOnePermission } from '../../authorization'; registerAdminRoute('/cloud', { - name: 'cloud-config', + name: 'cloud', async action() { await import('./admin'); BlazeLayout.render('main', { center: 'cloud', old: true }); @@ -25,7 +25,7 @@ registerAdminRoute('/cloud/oauth-callback', { registerAdminSidebarItem({ icon: 'cloud-plus', - href: 'admin/cloud', + href: 'cloud', i18nLabel: 'Connectivity_Services', permissionGranted() { return hasAtLeastOnePermission(['manage-cloud']); diff --git a/app/federation/client/admin/dashboard.js b/app/federation/client/admin/dashboard.js index a675b11e2d68..3d68975bd35b 100644 --- a/app/federation/client/admin/dashboard.js +++ b/app/federation/client/admin/dashboard.js @@ -77,7 +77,7 @@ registerAdminRoute('/federation-dashboard', { registerAdminSidebarItem({ icon: 'discover', - href: 'admin/federation-dashboard', + href: 'federation-dashboard', i18nLabel: 'Federation Dashboard', permissionGranted() { return hasRole(Meteor.userId(), 'admin'); diff --git a/app/livechat/client/views/sideNav/livechatFlex.js b/app/livechat/client/views/sideNav/livechatFlex.js index a7dc9cb909d9..f57b76c313df 100644 --- a/app/livechat/client/views/sideNav/livechatFlex.js +++ b/app/livechat/client/views/sideNav/livechatFlex.js @@ -1,4 +1,5 @@ import { Template } from 'meteor/templating'; +import { FlowRouter } from 'meteor/kadira:flow-router'; import { SideNav, Layout } from '../../../../ui-utils'; import { t } from '../../../../utils'; @@ -8,11 +9,13 @@ import { sidebarItems } from './livechatSideNavItems'; Template.livechatFlex.helpers({ menuItem(name, icon, section) { + const routeName = FlowRouter.getRouteName(); return { name: t(name), icon, pathSection: section, darken: true, + active: section === routeName, }; }, embeddedVersion() { diff --git a/app/theme/client/imports/components/sidebar/sidebar-item.css b/app/theme/client/imports/components/sidebar/sidebar-item.css index b74a84800690..125ed7283f45 100644 --- a/app/theme/client/imports/components/sidebar/sidebar-item.css +++ b/app/theme/client/imports/components/sidebar/sidebar-item.css @@ -5,6 +5,10 @@ background-color: var(--sidebar-background-light-hover); } + &--active { + background-color: var(--sidebar-background-light-active); + } + &__picture { color: inherit; } diff --git a/app/theme/client/imports/general/variables.css b/app/theme/client/imports/general/variables.css index b2a0f27e476d..2cfb61fd812f 100644 --- a/app/theme/client/imports/general/variables.css +++ b/app/theme/client/imports/general/variables.css @@ -181,6 +181,7 @@ --sidebar-background-hover: var(--rc-color-primary-dark); --sidebar-background-light: var(--rc-color-primary-lightest); --sidebar-background-light-hover: var(--rc-color-primary-light); + --sidebar-background-light-active: var(--rc-color-primary-light-medium); --sidebar-default-padding: 24px; --sidebar-small-default-padding: 16px; --sidebar-extra-small-default-padding: 12px; diff --git a/app/ui-account/client/accountFlex.js b/app/ui-account/client/accountFlex.js index 56187884ed67..fe118a1c0d2a 100644 --- a/app/ui-account/client/accountFlex.js +++ b/app/ui-account/client/accountFlex.js @@ -1,4 +1,5 @@ import { Template } from 'meteor/templating'; +import { FlowRouter } from 'meteor/kadira:flow-router'; import { settings } from '../../settings'; import { hasAllPermission } from '../../authorization'; @@ -32,12 +33,14 @@ Template.accountFlex.helpers({ return settings.get('Webdav_Integration_Enabled'); }, menuItem(name, icon, section, group) { + const routeParam = FlowRouter.getParam('group'); return { name: t(name), icon, pathSection: section, pathGroup: group, darken: true, + active: group === routeParam, }; }, embeddedVersion() { diff --git a/app/ui-admin/client/adminFlex.html b/app/ui-admin/client/adminFlex.html index 140889c1fab2..35ef735fee26 100644 --- a/app/ui-admin/client/adminFlex.html +++ b/app/ui-admin/client/adminFlex.html @@ -8,7 +8,7 @@

    {{_ "Administration"}}

      - {{> sidebarItem menuItem "Info" "info-circled" "admin" "info" }} + {{> sidebarItem menuItem "Info" "info-circled" "admin-info" "" }} {{#if hasPermission 'run-import'}} {{> sidebarItem menuItem "Import" "import" "admin-import" "" }} diff --git a/app/ui-admin/client/adminFlex.js b/app/ui-admin/client/adminFlex.js index 6571d708d47c..dc9dfb51039f 100644 --- a/app/ui-admin/client/adminFlex.js +++ b/app/ui-admin/client/adminFlex.js @@ -3,6 +3,7 @@ import s from 'underscore.string'; import { ReactiveVar } from 'meteor/reactive-var'; import { Template } from 'meteor/templating'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; +import { FlowRouter } from 'meteor/kadira:flow-router'; import { settings } from '../../settings'; import { menu, SideNav, Layout } from '../../ui-utils/client'; @@ -69,6 +70,9 @@ Template.adminFlex.helpers({ return getSidebarItems(); }, menuItem(name, icon, section, group) { + const routeParam = FlowRouter.getParam('group'); + const routeName = FlowRouter.getRouteName(); + return { name: t(name), icon, @@ -76,6 +80,7 @@ Template.adminFlex.helpers({ pathGroup: group, darken: true, isLightSidebar: true, + active: (routeParam && routeParam === group) || (routeName !== 'admin' && routeName === section), }; }, embeddedVersion() { diff --git a/private/client/imports/general/variables.css b/private/client/imports/general/variables.css index cf80aae7fd6a..92c5124c4d22 100644 --- a/private/client/imports/general/variables.css +++ b/private/client/imports/general/variables.css @@ -181,6 +181,7 @@ --sidebar-background-hover: var(--rc-color-primary-dark); --sidebar-background-light: var(--rc-color-primary-lightest); --sidebar-background-light-hover: var(--rc-color-primary-light); + --sidebar-background-light-active: var(--rc-color-primary-light-medium); --sidebar-default-padding: 24px; --sidebar-small-default-padding: 16px; --sidebar-extra-small-default-padding: 12px; From c21bfd442ddfd47b3c11583894afb8a06384f12c Mon Sep 17 00:00:00 2001 From: Renato Becker Date: Mon, 20 Apr 2020 21:52:52 -0300 Subject: [PATCH 67/95] [NEW] Add ability to set tags in the Omnichannel room closing dialog (#17254) --- app/livechat/client/index.js | 1 + .../client/views/app/dialog/closeRoom.html | 72 +++++++ .../client/views/app/dialog/closeRoom.js | 190 ++++++++++++++++++ .../client/views/app/tabbar/visitorInfo.js | 67 +++--- app/livechat/server/hooks/beforeCloseRoom.js | 23 ++- app/livechat/server/lib/Livechat.js | 3 +- packages/rocketchat-i18n/i18n/en.i18n.json | 1 + packages/rocketchat-i18n/i18n/pt-BR.i18n.json | 1 + 8 files changed, 312 insertions(+), 46 deletions(-) create mode 100644 app/livechat/client/views/app/dialog/closeRoom.html create mode 100644 app/livechat/client/views/app/dialog/closeRoom.js diff --git a/app/livechat/client/index.js b/app/livechat/client/index.js index 4df9fcd92eda..26013edf70a5 100644 --- a/app/livechat/client/index.js +++ b/app/livechat/client/index.js @@ -4,6 +4,7 @@ import './route'; import './ui'; import './hooks/onCreateRoomTabBar'; import './startup/notifyUnreadRooms'; +import './views/app/dialog/closeRoom'; import './stylesheets/livechat.css'; import './views/sideNav/livechat'; import './views/sideNav/livechatFlex'; diff --git a/app/livechat/client/views/app/dialog/closeRoom.html b/app/livechat/client/views/app/dialog/closeRoom.html new file mode 100644 index 000000000000..0cb20ad48d85 --- /dev/null +++ b/app/livechat/client/views/app/dialog/closeRoom.html @@ -0,0 +1,72 @@ + diff --git a/app/livechat/client/views/app/dialog/closeRoom.js b/app/livechat/client/views/app/dialog/closeRoom.js new file mode 100644 index 000000000000..2dac3bc7956a --- /dev/null +++ b/app/livechat/client/views/app/dialog/closeRoom.js @@ -0,0 +1,190 @@ +import { Meteor } from 'meteor/meteor'; +import { Template } from 'meteor/templating'; +import { ReactiveVar } from 'meteor/reactive-var'; +import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; + +import { settings } from '../../../../../settings'; +import { modal } from '../../../../../ui-utils/client'; +import { APIClient, handleError, t } from '../../../../../utils'; +import { hasRole } from '../../../../../authorization'; +import './closeRoom.html'; + +const validateRoomComment = (comment) => { + if (!settings.get('Livechat_request_comment_when_closing_conversation')) { + return true; + } + + return comment?.length > 0; +}; + +const validateRoomTags = (tagsRequired, tags) => { + if (!tagsRequired) { + return true; + } + + return tags?.length > 0; +}; + +const checkUserTagPermission = (availableUserTags = [], tag) => { + if (hasRole(Meteor.userId(), ['admin', 'livechat-manager'])) { + return true; + } + + return availableUserTags.includes(tag); +}; + +Template.closeRoom.helpers({ + invalidComment() { + return Template.instance().invalidComment.get(); + }, + tags() { + return Template.instance().tags.get(); + }, + invalidTags() { + return Template.instance().invalidTags.get(); + }, + availableUserTags() { + return Template.instance().availableUserTags.get(); + }, + tagsPlaceHolder() { + let placeholder = TAPi18n.__('Enter_a_tag'); + + if (!Template.instance().tagsRequired.get()) { + placeholder = placeholder.concat(`(${ TAPi18n.__('Optional') })`); + } + + return placeholder; + }, + hasAvailableTags() { + const tags = Template.instance().availableTags.get(); + return tags?.length > 0; + }, + canRemoveTag(availableUserTags, tag) { + return checkUserTagPermission(availableUserTags, tag); + }, +}); + +Template.closeRoom.events({ + async 'submit .close-room__content'(e, instance) { + e.preventDefault(); + e.stopPropagation(); + + const comment = instance.$('#comment').val(); + instance.invalidComment.set(!validateRoomComment(comment)); + if (instance.invalidComment.get()) { + return; + } + + const tagsRequired = instance.tagsRequired.get(); + const tags = instance.tags.get(); + + instance.invalidTags.set(!validateRoomTags(tagsRequired, tags)); + if (instance.invalidTags.get()) { + return; + } + + Meteor.call('livechat:closeRoom', this.rid, comment, { clientAction: true, tags }, function(error/* , result*/) { + if (error) { + console.log(error); + return handleError(error); + } + + modal.open({ + title: t('Chat_closed'), + text: t('Chat_closed_successfully'), + type: 'success', + timer: 1000, + showConfirmButton: false, + }); + }); + }, + 'click .remove-tag'(e, instance) { + e.stopPropagation(); + e.preventDefault(); + + const tag = this.valueOf(); + const availableTags = instance.availableTags.get(); + const hasAvailableTags = availableTags?.length > 0; + const availableUserTags = instance.availableUserTags.get(); + if (hasAvailableTags && !checkUserTagPermission(availableUserTags, tag)) { + return; + } + + let tags = instance.tags.get(); + tags = tags.filter((el) => el !== tag); + instance.tags.set(tags); + }, + 'click #addTag'(e, instance) { + e.stopPropagation(); + e.preventDefault(); + + if ($('#tagSelect').find(':selected').is(':disabled')) { + return; + } + + const tags = [...instance.tags.get()]; + const tagVal = $('#tagSelect').val(); + if (tagVal === '' || tags.includes(tagVal)) { + return; + } + + tags.push(tagVal); + instance.tags.set(tags); + $('#tagSelect').val('placeholder'); + }, + 'keydown #tagInput'(e, instance) { + if (e.which === 13) { + e.stopPropagation(); + e.preventDefault(); + + const tags = [...instance.tags.get()]; + const tagVal = $('#tagInput').val(); + if (tagVal === '' || tags.includes(tagVal)) { + return; + } + + tags.push(tagVal); + instance.tags.set(tags); + $('#tagInput').val(''); + } + }, +}); + +Template.closeRoom.onRendered(function() { + this.find('#comment').focus(); +}); + +Template.closeRoom.onCreated(async function() { + this.tags = new ReactiveVar([]); + this.invalidComment = new ReactiveVar(false); + this.invalidTags = new ReactiveVar(false); + this.tagsRequired = new ReactiveVar(false); + this.availableTags = new ReactiveVar([]); + this.availableUserTags = new ReactiveVar([]); + this.agentDepartments = new ReactiveVar([]); + + this.onEnterTag = () => this.invalidTags.set(!validateRoomTags(this.tagsRequired.get(), this.tags.get())); + + const { rid } = Template.currentData(); + const { room } = await APIClient.v1.get(`rooms.info?roomId=${ rid }`); + this.tags.set(room?.tags || []); + + if (room?.departmentId) { + const { department } = await APIClient.v1.get(`livechat/department/${ room.departmentId }?includeAgents=false`); + this.tagsRequired.set(department?.requestTagBeforeClosingChat); + } + + const uid = Meteor.userId(); + const { departments } = await APIClient.v1.get(`livechat/agents/${ uid }/departments`); + const agentDepartments = departments.map((dept) => dept.departmentId); + this.agentDepartments.set(agentDepartments); + + Meteor.call('livechat:getTagsList', (err, tagsList) => { + this.availableTags.set(tagsList); + const isAdmin = hasRole(uid, ['admin', 'livechat-manager']); + const availableTags = tagsList + .filter(({ departments }) => isAdmin || (departments.length === 0 || departments.some((i) => agentDepartments.includes(i)))) + .map(({ name }) => name); + this.availableUserTags.set(availableTags); + }); +}); diff --git a/app/livechat/client/views/app/tabbar/visitorInfo.js b/app/livechat/client/views/app/tabbar/visitorInfo.js index 24de8917bcee..d33cbfc0c051 100644 --- a/app/livechat/client/views/app/tabbar/visitorInfo.js +++ b/app/livechat/client/views/app/tabbar/visitorInfo.js @@ -1,11 +1,10 @@ +import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import { Meteor } from 'meteor/meteor'; import { ReactiveVar } from 'meteor/reactive-var'; import { FlowRouter } from 'meteor/kadira:flow-router'; import { Session } from 'meteor/session'; import { Template } from 'meteor/templating'; -import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import _ from 'underscore'; -import s from 'underscore.string'; import moment from 'moment'; import UAParser from 'ua-parser-js'; @@ -29,6 +28,14 @@ const isSubscribedToRoom = () => { return subscription !== undefined; }; +const closingDialogRequired = (department) => { + if (settings.get('Livechat_request_comment_when_closing_conversation')) { + return true; + } + + return department && department.requestTagBeforeClosingChat; +}; + Template.visitorInfo.helpers({ user() { const user = Template.instance().user.get(); @@ -228,46 +235,36 @@ Template.visitorInfo.events({ instance.action.set('edit'); }, - 'click .close-livechat'(event) { + 'click .close-livechat'(event, instance) { event.preventDefault(); - const closeRoom = (comment) => Meteor.call('livechat:closeRoom', this.rid, comment, { clientAction: true }, function(error/* , result*/) { - if (error) { - return handleError(error); - } - modal.open({ - title: t('Chat_closed'), - text: t('Chat_closed_successfully'), - type: 'success', - timer: 1000, - showConfirmButton: false, - }); - }); - - if (!settings.get('Livechat_request_comment_when_closing_conversation')) { + if (!closingDialogRequired(instance.department.get())) { const comment = TAPi18n.__('Chat_closed_by_agent'); - return closeRoom(comment); + return Meteor.call('livechat:closeRoom', this.rid, comment, { clientAction: true }, function(error/* , result*/) { + if (error) { + return handleError(error); + } + + modal.open({ + title: t('Chat_closed'), + text: t('Chat_closed_successfully'), + type: 'success', + timer: 1000, + showConfirmButton: false, + }); + }); } - // Setting for Ask_for_conversation_finished_message is set to true modal.open({ title: t('Closing_chat'), - type: 'input', - inputPlaceholder: t('Please_add_a_comment'), - showCancelButton: true, - closeOnConfirm: false, - }, (inputValue) => { - if (!inputValue) { - modal.showInputError(t('Please_add_a_comment_to_close_the_room')); - return false; - } - - if (s.trim(inputValue) === '') { - modal.showInputError(t('Please_add_a_comment_to_close_the_room')); - return false; - } - - return closeRoom(inputValue); + modifier: 'modal', + content: 'closeRoom', + data: { + rid: this.rid, + }, + confirmOnEnter: false, + showConfirmButton: false, + showCancelButton: false, }); }, diff --git a/app/livechat/server/hooks/beforeCloseRoom.js b/app/livechat/server/hooks/beforeCloseRoom.js index de4f13a7f8c5..6c819c23e2bf 100644 --- a/app/livechat/server/hooks/beforeCloseRoom.js +++ b/app/livechat/server/hooks/beforeCloseRoom.js @@ -5,32 +5,35 @@ import { LivechatDepartment } from '../../../models'; const concatUnique = (...arrays) => [...new Set([].concat(...arrays.filter(Array.isArray)))]; -callbacks.add('livechat.beforeCloseRoom', ({ room, options }) => { - const { departmentId, tags: roomTags } = room; +const normalizeParams = (params, tags = []) => Object.assign(params, { extraData: { tags } }); + +callbacks.add('livechat.beforeCloseRoom', (originalParams = {}) => { + const { room, options } = originalParams; + const { departmentId, tags: optionsTags } = room; + const { clientAction, tags: oldRoomTags } = options; + const roomTags = concatUnique(oldRoomTags, optionsTags); + if (!departmentId) { - return; + return normalizeParams({ ...originalParams }, roomTags); } const department = LivechatDepartment.findOneById(departmentId); if (!department) { - return; + return normalizeParams({ ...originalParams }, roomTags); } const { requestTagBeforeClosingChat, chatClosingTags } = department; - const extraData = { - tags: concatUnique(roomTags, chatClosingTags), - }; + const extraRoomTags = concatUnique(roomTags, chatClosingTags); if (!requestTagBeforeClosingChat) { - return extraData; + return normalizeParams({ ...originalParams }, extraRoomTags); } - const { clientAction } = options; const checkRoomTags = !clientAction || (roomTags && roomTags.length > 0); const checkDepartmentTags = chatClosingTags && chatClosingTags.length > 0; if (!checkRoomTags || !checkDepartmentTags) { throw new Meteor.Error('error-tags-must-be-assigned-before-closing-chat', 'Tag(s) must be assigned before closing the chat', { method: 'livechat.beforeCloseRoom' }); } - return extraData; + return normalizeParams({ ...originalParams }, extraRoomTags); }, callbacks.priority.HIGH, 'livechat-before-close-Room'); diff --git a/app/livechat/server/lib/Livechat.js b/app/livechat/server/lib/Livechat.js index 323dd80b8a15..1438e24b9404 100644 --- a/app/livechat/server/lib/Livechat.js +++ b/app/livechat/server/lib/Livechat.js @@ -320,7 +320,8 @@ export const Livechat = { return false; } - const extraData = callbacks.run('livechat.beforeCloseRoom', { room, options }); + const params = callbacks.run('livechat.beforeCloseRoom', { room, options }); + const { extraData } = params; const now = new Date(); const { _id: rid, servedBy } = room; diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 4f48e53d8e26..ef3de4826644 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -692,6 +692,7 @@ "close-others-livechat-room": "Close other Omnichannel Room", "Cloud_workspace_connected_without_account": "Your workspace is now connected to the Rocket.Chat Cloud. If you would like, you can login to the Rocket.Chat Cloud and associate your workspace with your Cloud account.", "close-others-livechat-room_description": "Permission to close other Omnichannel rooms", + "Close_room_description" : "You are about to close this chat. Are you sure you want to continue?", "Closed": "Closed", "Closed_At": "Closed at", "Closed_by_visitor": "Closed by visitor", diff --git a/packages/rocketchat-i18n/i18n/pt-BR.i18n.json b/packages/rocketchat-i18n/i18n/pt-BR.i18n.json index 9792f3c1f07b..22ed0b99fea2 100644 --- a/packages/rocketchat-i18n/i18n/pt-BR.i18n.json +++ b/packages/rocketchat-i18n/i18n/pt-BR.i18n.json @@ -670,6 +670,7 @@ "close-others-livechat-room": "Sala de Omnichannel fechada", "Cloud_workspace_connected_without_account": "Seu workspace está agora conectado ao Rocket.Chat Cloud. Se desejar, você pode fazer o login no Rocket.Chat Cloud e associar seu workspace à sua conta do Cloud.", "close-others-livechat-room_description": "Permissão para fechar outras salas de Omnichannel", + "Close_room_description" : "Você está prestes a fechar este bate-papo. Você tem certeza que quer continuar?", "Closed": "Fechado", "Closed_At": "Encerrado em", "Closed_by_visitor": "Encerrado pelo visitante", From 9fd381e824779cd6b4d506f40a54f21dd09aff09 Mon Sep 17 00:00:00 2001 From: Subham Sahoo <43502196+subham103@users.noreply.github.com> Date: Tue, 21 Apr 2020 06:24:10 +0530 Subject: [PATCH 68/95] [IMPROVE] Add `file-title` and `file-desc` as new filter tag options on message search (#16858) --- server/methods/messageSearch.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/server/methods/messageSearch.js b/server/methods/messageSearch.js index f58674c598ef..e0fb9f394541 100644 --- a/server/methods/messageSearch.js +++ b/server/methods/messageSearch.js @@ -117,6 +117,16 @@ Meteor.methods({ return ''; } + function filterTitle(_, tag) { + query['attachments.title'] = new RegExp(s.escapeRegExp(tag), 'i'); + return ''; + } + + function filterDescription(_, tag) { + query['attachments.description'] = new RegExp(s.escapeRegExp(tag), 'i'); + return ''; + } + function sortByTimestamp(_, direction) { if (direction.startsWith('asc')) { options.sort.ts = 1; @@ -171,6 +181,10 @@ Meteor.methods({ text = text.replace(/has:location|has:map/g, filterLocation); // Filter image tags text = text.replace(/label:(\w+)/g, filterLabel); + // Filter on description of messages. + text = text.replace(/file-desc:(\w+)/g, filterDescription); + // Filter on title of messages. + text = text.replace(/file-title:(\w+)/g, filterTitle); // Filtering before/after/on a date // matches dd-MM-yyyy, dd/MM/yyyy, dd-MM-yyyy, prefixed by before:, after: and on: respectively. // Example: before:15/09/2016 after: 10-08-2016 From e7362645ff0d76d869bd88ae5bdce65141be2b2f Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Mon, 20 Apr 2020 21:54:33 -0300 Subject: [PATCH 69/95] Remove set as alias setting (#16343) --- app/lib/server/lib/processDirectEmail.js | 4 ---- app/lib/server/methods/sendMessage.js | 4 ---- app/lib/server/startup/settings.js | 5 ----- server/startup/migrations/index.js | 1 + server/startup/migrations/v185.js | 21 +++++++++++++++++++++ 5 files changed, 22 insertions(+), 13 deletions(-) create mode 100644 server/startup/migrations/v185.js diff --git a/app/lib/server/lib/processDirectEmail.js b/app/lib/server/lib/processDirectEmail.js index 4489551698e6..deab36914c60 100644 --- a/app/lib/server/lib/processDirectEmail.js +++ b/app/lib/server/lib/processDirectEmail.js @@ -102,10 +102,6 @@ export const processDirectEmail = function(email) { } } - if (message.alias == null && settings.get('Message_SetNameToAliasEnabled')) { - message.alias = user.name; - } - metrics.messagesSent.inc(); // TODO This line needs to be moved to it's proper place. See the comments on: https://github.com/RocketChat/Rocket.Chat/pull/5736 return _sendMessage(user, message, room); diff --git a/app/lib/server/methods/sendMessage.js b/app/lib/server/methods/sendMessage.js index d25284a3639f..be4ef0670d9c 100644 --- a/app/lib/server/methods/sendMessage.js +++ b/app/lib/server/methods/sendMessage.js @@ -51,7 +51,6 @@ export function executeSendMessage(uid, message) { fields: { username: 1, type: 1, - ...!!settings.get('Message_SetNameToAliasEnabled') && { name: 1 }, }, }); let { rid } = message; @@ -69,9 +68,6 @@ export function executeSendMessage(uid, message) { try { const room = canSendMessage(rid, { uid, username: user.username, type: user.type }); - if (message.alias == null && settings.get('Message_SetNameToAliasEnabled')) { - message.alias = user.name; - } metrics.messagesSent.inc(); // TODO This line needs to be moved to it's proper place. See the comments on: https://github.com/RocketChat/Rocket.Chat/pull/5736 return sendMessage(user, message, room, false); diff --git a/app/lib/server/startup/settings.js b/app/lib/server/startup/settings.js index 33bf91e477af..56020606dc8c 100644 --- a/app/lib/server/startup/settings.js +++ b/app/lib/server/startup/settings.js @@ -1062,11 +1062,6 @@ settings.addGroup('Message', function() { type: 'boolean', public: true, }); - this.add('Message_SetNameToAliasEnabled', false, { - type: 'boolean', - public: false, - i18nDescription: 'Message_SetNameToAliasEnabled_Description', - }); this.add('Message_GroupingPeriod', 300, { type: 'int', public: true, diff --git a/server/startup/migrations/index.js b/server/startup/migrations/index.js index 1085c8ea77df..dc1262908b52 100644 --- a/server/startup/migrations/index.js +++ b/server/startup/migrations/index.js @@ -182,4 +182,5 @@ import './v181'; import './v182'; import './v183'; import './v184'; +import './v185'; import './xrun'; diff --git a/server/startup/migrations/v185.js b/server/startup/migrations/v185.js new file mode 100644 index 000000000000..c6a20c9aa398 --- /dev/null +++ b/server/startup/migrations/v185.js @@ -0,0 +1,21 @@ +import { + Migrations, +} from '../../../app/migrations/server'; +import { + Settings, +} from '../../../app/models/server'; + +Migrations.add({ + version: 185, + up() { + const setting = Settings.findOne({ _id: 'Message_SetNameToAliasEnabled' }); + if (setting.value) { + Settings.update({ _id: 'UI_Use_Real_Name' }, { + $set: { + value: true, + }, + }); + } + Settings.remove({ _id: 'Message_SetNameToAliasEnabled' }); + }, +}); From 2e0e457355f1d1bf50d9572df6140e045c216d2d Mon Sep 17 00:00:00 2001 From: Ashwani Yadav Date: Tue, 21 Apr 2020 06:25:18 +0530 Subject: [PATCH 70/95] [IMPROVE] User gets UI feedback when message is pinned or unpinned (#16056) --- app/message-pin/client/pinMessage.js | 10 ++++++++++ packages/rocketchat-i18n/i18n/en.i18n.json | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/app/message-pin/client/pinMessage.js b/app/message-pin/client/pinMessage.js index 7822c2875a2d..9fbc2f778edc 100644 --- a/app/message-pin/client/pinMessage.js +++ b/app/message-pin/client/pinMessage.js @@ -1,4 +1,6 @@ import { Meteor } from 'meteor/meteor'; +import toastr from 'toastr'; +import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import { settings } from '../../settings'; import { ChatMessage, Subscriptions } from '../../models'; @@ -6,14 +8,18 @@ import { ChatMessage, Subscriptions } from '../../models'; Meteor.methods({ pinMessage(message) { if (!Meteor.userId()) { + toastr.error(TAPi18n.__('error-not-authorized')); return false; } if (!settings.get('Message_AllowPinning')) { + toastr.error(TAPi18n.__('pinning-not-allowed')); return false; } if (Subscriptions.findOne({ rid: message.rid }) == null) { + toastr.error(TAPi18n.__('error-pinning-message')); return false; } + toastr.success(TAPi18n.__('Message_has_been_pinned')); return ChatMessage.update({ _id: message._id, }, { @@ -24,14 +30,18 @@ Meteor.methods({ }, unpinMessage(message) { if (!Meteor.userId()) { + toastr.error(TAPi18n.__('error-not-authorized')); return false; } if (!settings.get('Message_AllowPinning')) { + toastr.error(TAPi18n.__('unpinning-not-allowed')); return false; } if (Subscriptions.findOne({ rid: message.rid }) == null) { + toastr.error(TAPi18n.__('error-unpinning-message')); return false; } + toastr.success(TAPi18n.__('Message_has_been_unpinned')); return ChatMessage.update({ _id: message._id, }, { diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index ef3de4826644..af5e9215cb6e 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -1411,6 +1411,8 @@ "error-password-policy-not-met-oneSpecial": "Password does not meet the server's policy of at least one special character", "error-password-policy-not-met-oneUppercase": "Password does not meet the server's policy of at least one uppercase character", "error-password-policy-not-met-repeatingCharacters": "Password not not meet the server's policy of forbidden repeating characters (you have too many of the same characters next to each other)", + "error-pinning-message": "Message could not be pinned", + "error-unpinning-message": "Message could not be unpinned", "error-push-disabled": "Push is disabled", "error-remove-last-owner": "This is the last owner. Please set a new owner before removing this one.", "error-tags-must-be-assigned-before-closing-chat": "Tag(s) must be assigned before closing the chat", @@ -2329,6 +2331,8 @@ "Message_GlobalSearch": "Global Search", "Message_GroupingPeriod": "Grouping Period (in seconds)", "Message_GroupingPeriodDescription": "Messages will be grouped with previous message if both are from the same user and the elapsed time was less than the informed time in seconds.", + "Message_has_been_pinned": "Message has been pinned", + "Message_has_been_unpinned": "Message has been unpinned", "Message_has_been_starred": "Message has been starred", "Message_has_been_unstarred": "Message has been unstarred", "Message_HideType_au": "Hide \"User Added\" messages", @@ -2628,6 +2632,7 @@ "Pin_Message": "Pin Message", "Pinned_a_message": "Pinned a message:", "Pinned_Messages": "Pinned Messages", + "pinning-not-allowed": "Pinning is not allowed", "PiwikAdditionalTrackers": "Additional Piwik Sites", "PiwikAdditionalTrackers_Description": "Enter addtitional Piwik website URLs and SiteIDs in the following format, if you wnat to track the same data into different websites: [ { \"trackerURL\" : \"https://my.piwik.domain2/\", \"siteId\" : 42 }, { \"trackerURL\" : \"https://my.piwik.domain3/\", \"siteId\" : 15 } ]", "PiwikAnalytics_cookieDomain": "All Subdomains", @@ -3451,6 +3456,7 @@ "Unnamed": "Unnamed", "Unpin": "Unpin", "Unpin_Message": "Unpin Message", + "unpinning-not-allowed": "Unpinning is not allowed", "Unread": "Unread", "Unread_Count": "Unread Count", "Unread_Count_DM": "Unread Count for Direct Messages", From ead78d7061dff1887068d1830d5348278c7f156d Mon Sep 17 00:00:00 2001 From: Nikhil Kaushik Date: Tue, 21 Apr 2020 06:47:34 +0530 Subject: [PATCH 71/95] [IMPROVE] Filter markdown in notifications (#9995) --- .../server/functions/notifications/index.js | 4 +- .../server/lib/sendNotificationsOnMessage.js | 2 +- app/markdown/lib/markdown.js | 9 ++ app/markdown/lib/parser/filtered/filtered.js | 46 ++++++ app/markdown/tests/client.tests.js | 131 +++++++++++++++++- 5 files changed, 186 insertions(+), 6 deletions(-) create mode 100644 app/markdown/lib/parser/filtered/filtered.js diff --git a/app/lib/server/functions/notifications/index.js b/app/lib/server/functions/notifications/index.js index 6dbe07fb0402..8b247c8810a3 100644 --- a/app/lib/server/functions/notifications/index.js +++ b/app/lib/server/functions/notifications/index.js @@ -2,6 +2,7 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import s from 'underscore.string'; +import { callbacks } from '../../../../callbacks'; import { settings } from '../../../../settings'; /** @@ -22,7 +23,8 @@ export function parseMessageTextPerUser(messageText, message, receiver) { return TAPi18n.__('Encrypted_message', { lng }); } - return messageText; + // perform processing required before sending message as notification such as markdown filtering + return callbacks.run('renderNotification', messageText); } /** diff --git a/app/lib/server/lib/sendNotificationsOnMessage.js b/app/lib/server/lib/sendNotificationsOnMessage.js index 1d2e831c4441..0394dc99b191 100644 --- a/app/lib/server/lib/sendNotificationsOnMessage.js +++ b/app/lib/server/lib/sendNotificationsOnMessage.js @@ -263,7 +263,7 @@ export async function sendMessageNotifications(message, room, usersInThread = [] } }); - // the find bellow is crucial. all subscription records returned will receive at least one kind of notification. + // the find below is crucial. All subscription records returned will receive at least one kind of notification. // the query is defined by the server's default values and Notifications_Max_Room_Members setting. const subscriptions = await Subscriptions.model.rawCollection().aggregate([ diff --git a/app/markdown/lib/markdown.js b/app/markdown/lib/markdown.js index eb97f4644272..c7163d0ee24d 100644 --- a/app/markdown/lib/markdown.js +++ b/app/markdown/lib/markdown.js @@ -8,6 +8,7 @@ import { Blaze } from 'meteor/blaze'; import { marked } from './parser/marked/marked.js'; import { original } from './parser/original/original.js'; +import { filtered } from './parser/filtered/filtered.js'; import { code } from './parser/original/code.js'; import { callbacks } from '../../callbacks'; import { settings } from '../../settings'; @@ -15,6 +16,7 @@ import { settings } from '../../settings'; const parsers = { original, marked, + filtered, }; class MarkdownClass { @@ -76,6 +78,10 @@ class MarkdownClass { code(...args) { return code(...args); } + + filterMarkdownFromMessage(message) { + return parsers.filtered(message); + } } export const Markdown = new MarkdownClass(); @@ -89,7 +95,10 @@ const MarkdownMessage = (message) => { return message; }; +const filterMarkdown = (message) => Markdown.filterMarkdownFromMessage(message); + callbacks.add('renderMessage', MarkdownMessage, callbacks.priority.HIGH, 'markdown'); +callbacks.add('renderNotification', filterMarkdown, callbacks.priority.HIGH, 'filter-markdown'); if (Meteor.isClient) { Blaze.registerHelper('RocketChatMarkdown', (text) => Markdown.parse(text)); diff --git a/app/markdown/lib/parser/filtered/filtered.js b/app/markdown/lib/parser/filtered/filtered.js new file mode 100644 index 000000000000..52ba496d6108 --- /dev/null +++ b/app/markdown/lib/parser/filtered/filtered.js @@ -0,0 +1,46 @@ +/* +* Filter markdown tags in message +* Use case: notifications +*/ +import { settings } from '../../../../settings'; + +const filterMarkdownTags = function(message) { + const schemes = settings.get('Markdown_SupportSchemesForLink').split(',').join('|'); + + // Remove block code backticks + message = message.replace(/```/g, ''); + + // Remove inline code backticks + message = message.replace(new RegExp(/`([^`\r\n]+)\`/gm), (match) => match.substr(1, match.length - 2)); + + // Filter [text](url), ![alt_text](image_url) + message = message.replace(new RegExp(`!?\\[([^\\]]+)\\]\\((?:${ schemes }):\\/\\/[^\\)]+\\)`, 'gm'), (match, title) => title); + + // Filter + message = message.replace(new RegExp(`(?:<|<)(?:${ schemes }):\\/\\/[^\\|]+\\|(.+?)(?=>|>)(?:>|>)`, 'gm'), (match, title) => title); + + // Filter headings + message = message.replace(/(^#{1,4}) (([\S\w\d-_\/\*\.,\\][ \u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]?)+)/gm, '$2'); + + // Filter bold + message = message.replace(/(^|>|[ >_~`])\*{1,2}([^\*\r\n]+)\*{1,2}([<_~`]|\B|\b|$)/gm, '$1$2$3'); + + // Filter italics + message = message.replace(/(^|>|[ >*~`])\_{1,2}([^\_\r\n]+)\_{1,2}([<*~`]|\B|\b|$)/gm, '$1$2$3'); + + // Filter strike-through text + message = message.replace(/(^|>|[ >_*`])\~{1,2}([^~\r\n]+)\~{1,2}([<_*`]|\B|\b|$)/gm, '$1$2$3'); + + // Filter block quotes + message = message.replace(/(?:>){3}\n+([\s\S]*?)\n+(?:<){3}/g, '$1'); + + // Filter > quote + message = message.replace(/^>(.*)$/gm, '$1'); + + return message; +}; + +export const filtered = function(message) { + message = filterMarkdownTags(message); + return message; +}; diff --git a/app/markdown/tests/client.tests.js b/app/markdown/tests/client.tests.js index 808eaddf918d..1738c61e5651 100644 --- a/app/markdown/tests/client.tests.js +++ b/app/markdown/tests/client.tests.js @@ -6,6 +6,7 @@ import s from 'underscore.string'; import './client.mocks.js'; import { original } from '../lib/parser/original/original'; +import { filtered } from '../lib/parser/filtered/filtered'; import { Markdown } from '../lib/markdown'; const wrapper = (text, tag) => `${ tag }${ text }${ tag }`; @@ -230,15 +231,119 @@ const nested = { '> some quote\n`window.location.reload();`': `${ quoteWrapper(' some quote') }${ inlinecodeWrapper('window.location.reload();') }`, }; +/* +* Markdown Filters +*/ +const boldFiltered = { + '*Hello*': 'Hello', + '**Hello**': 'Hello', + '*Hello**': 'Hello', + 'He*llo': 'He*llo', + '*Hello': '*Hello', + 'Hello*': 'Hello*', + '***Hello***': '***Hello***', + '***Hello**': '***Hello**', + '*Hello* there': 'Hello there', + '**Hello** there': 'Hello there', + 'Hi, *Hello*': 'Hi, Hello', + 'Hi, **Hello**': 'Hi, Hello', + 'Hi, *Hello* how are you?': 'Hi, Hello how are you?', + 'Hi, **Hello** how are you?': 'Hi, Hello how are you?', +}; + +const italicFiltered = { + _Hello_: 'Hello', + __Hello__: 'Hello', + _Hello__: 'Hello', + He_llo: 'He_llo', + _Hello: '_Hello', + __Hello: '__Hello', + Hello_: 'Hello_', + ___Hello___: '___Hello___', + ___Hello__: '___Hello__', + '_Hello_ there': 'Hello there', + '__Hello__ there': 'Hello there', + 'Hi, _Hello_': 'Hi, Hello', + 'Hi, __Hello__': 'Hi, Hello', + 'Hi, _Hello_ how are you?': 'Hi, Hello how are you?', + 'Hi, __Hello__ how are you?': 'Hi, Hello how are you?', +}; + +const strikeFiltered = { + '~Hello~': 'Hello', + '~~Hello~~': 'Hello', + '~~Hello': '~~Hello', + '~Hello~~': 'Hello', + 'He~llo': 'He~llo', + '~Hello': '~Hello', + 'Hello~': 'Hello~', + '~~~Hello~~~': '~~~Hello~~~', + '~~~Hello~~': '~~~Hello~~', + '~Hello~ there': 'Hello there', + '~~Hello~~ there': 'Hello there', + 'Hi, ~Hello~': 'Hi, Hello', + 'Hi, ~~Hello~~': 'Hi, Hello', + 'Hi, ~Hello~ how are you?': 'Hi, Hello how are you?', + 'Hi, ~~Hello~~ how are you?': 'Hi, Hello how are you?', +}; + +const headingFiltered = { + '# Hello': 'Hello', + '## Hello': 'Hello', + '### Hello': 'Hello', + '#### Hello': 'Hello', + '#Hello': '#Hello', + '##Hello': '##Hello', + '###Hello': '###Hello', + '####Hello': '####Hello', + 'He#llo': 'He#llo', + '# Hello there': 'Hello there', + 'Hi, # Hello': 'Hi, # Hello', + 'Hi, # Hello there': 'Hi, # Hello there', +}; + +const quoteFiltered = { + '>Hello': 'Hello', + '> Hello': ' Hello', + '>>>\nHello\n<<<': 'Hello', + '>>>\nHello there!\n<<<': 'Hello there!', + '>>>\n Hello there! \n<<<': ' Hello there! ', +}; + +const linkFiltered = { + '[Text](http://link)': 'Text', + '[Open Site For Rocket.Chat](https://open.rocket.chat/)': 'Open Site For Rocket.Chat', + '[ Open Site For Rocket.Chat](https://open.rocket.chat/ )': ' Open Site For Rocket.Chat', + '[Rocket.Chat Site](https://rocket.chat/)': 'Rocket.Chat Site', + '': 'Text', + '': 'Text for test', +}; + +const inlinecodeFiltered = { + '`code`': 'code', + '`code` begin': 'code begin', + 'End `code`': 'End code', + 'Middle `code` middle': 'Middle code middle', + '`code`begin': 'codebegin', + 'End`code`': 'Endcode', + 'Middle`code`middle': 'Middlecodemiddle', +}; + +const blockcodeFiltered = { + '```code```': 'code', + '```code': 'code', + 'code```': 'code', + 'Here ```code``` lies': 'Here code lies', + 'Here```code```lies': 'Herecodelies', +}; + const defaultObjectTest = (result, object, objectKey) => assert.equal(result.html, object[objectKey]); const testObject = (object, parser = original, test = defaultObjectTest) => { Object.keys(object).forEach((objectKey) => { describe(objectKey, () => { - const message = { - html: s.escapeHTML(objectKey), - }; - const result = Markdown.mountTokensBack(parser(message)); + const message = parser === original ? { html: s.escapeHTML(objectKey) } : objectKey; + const result = parser === original ? Markdown.mountTokensBack(parser(message)) : { html: parser(message) }; it(`should be equal to ${ object[objectKey] }`, () => { test(result, object, objectKey); }); @@ -274,6 +379,24 @@ describe('Original', function() { describe('Nested', () => testObject(nested)); }); +describe('Filtered', function() { + describe('BoldFilter', () => testObject(boldFiltered, filtered)); + + describe('Italic', () => testObject(italicFiltered, filtered)); + + describe('StrikeFilter', () => testObject(strikeFiltered, filtered)); + + describe('HeadingFilter', () => testObject(headingFiltered, filtered)); + + describe('QuoteFilter', () => testObject(quoteFiltered, filtered)); + + describe('LinkFilter', () => testObject(linkFiltered, filtered)); + + describe('inlinecodeFilter', () => testObject(inlinecodeFiltered, filtered)); + + describe('blockcodeFilter', () => testObject(blockcodeFiltered, filtered)); +}); + // describe.only('Marked', function() { // describe('Bold', () => testObject(bold, marked)); From 9506e9845cbea6a76f0e1af063541deabada6c61 Mon Sep 17 00:00:00 2001 From: Fernando Crespo Date: Mon, 20 Apr 2020 22:39:43 -0300 Subject: [PATCH 72/95] [IMPROVE] Change the SAML metadata order to conform to XSD specification (#15488) --- app/meteor-accounts-saml/server/saml_utils.js | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/app/meteor-accounts-saml/server/saml_utils.js b/app/meteor-accounts-saml/server/saml_utils.js index 9f7e4355d947..4f700769596f 100644 --- a/app/meteor-accounts-saml/server/saml_utils.js +++ b/app/meteor-accounts-saml/server/saml_utils.js @@ -772,23 +772,13 @@ SAML.prototype.generateServiceProviderMetadata = function(callbackUrl) { const metadata = { EntityDescriptor: { + '@xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance', + '@xsi:schemaLocation': 'urn:oasis:names:tc:SAML:2.0:metadata https://docs.oasis-open.org/security/saml/v2.0/saml-schema-metadata-2.0.xsd', '@xmlns': 'urn:oasis:names:tc:SAML:2.0:metadata', '@xmlns:ds': 'http://www.w3.org/2000/09/xmldsig#', '@entityID': this.options.issuer, SPSSODescriptor: { '@protocolSupportEnumeration': 'urn:oasis:names:tc:SAML:2.0:protocol', - SingleLogoutService: { - '@Binding': 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', - '@Location': `${ Meteor.absoluteUrl() }_saml/logout/${ this.options.provider }/`, - '@ResponseLocation': `${ Meteor.absoluteUrl() }_saml/logout/${ this.options.provider }/`, - }, - NameIDFormat: this.options.identifierFormat, - AssertionConsumerService: { - '@index': '1', - '@isDefault': 'true', - '@Binding': 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', - '@Location': callbackUrl, - }, }, }, }; @@ -826,6 +816,19 @@ SAML.prototype.generateServiceProviderMetadata = function(callbackUrl) { }; } + metadata.EntityDescriptor.SPSSODescriptor.SingleLogoutService = { + '@Binding': 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', + '@Location': `${ Meteor.absoluteUrl() }_saml/logout/${ this.options.provider }/`, + '@ResponseLocation': `${ Meteor.absoluteUrl() }_saml/logout/${ this.options.provider }/`, + }; + metadata.EntityDescriptor.SPSSODescriptor.NameIDFormat = this.options.identifierFormat; + metadata.EntityDescriptor.SPSSODescriptor.AssertionConsumerService = { + '@index': '1', + '@isDefault': 'true', + '@Binding': 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', + '@Location': callbackUrl, + }; + return xmlbuilder.create(metadata).end({ pretty: true, indent: ' ', From 65638b53d53a1731c1a8ff106bc6df5f174e4cfe Mon Sep 17 00:00:00 2001 From: Marcos Spessatto Defendi Date: Mon, 20 Apr 2020 23:21:22 -0300 Subject: [PATCH 73/95] [NEW] [ENTERPRISE] Omnichannel queue priorities (#17141) --- .../views/app/livechatDepartmentForm.js | 2 +- .../client/views/app/tabbar/visitorEdit.html | 3 + .../client/views/app/tabbar/visitorEdit.js | 10 ++ .../client/views/app/tabbar/visitorInfo.html | 1 + .../client/views/app/tabbar/visitorInfo.js | 11 +++ app/livechat/client/views/sideNav/livechat.js | 4 +- app/livechat/server/api/lib/livechat.js | 8 +- app/livechat/server/api/v1/room.js | 24 +++-- app/livechat/server/lib/Helper.js | 20 ++-- app/livechat/server/lib/Livechat.js | 4 +- app/livechat/server/lib/QueueManager.js | 6 +- app/livechat/server/methods/saveInfo.js | 10 +- app/models/server/models/LivechatInquiry.js | 5 +- app/models/server/models/LivechatRooms.js | 4 +- app/models/server/raw/LivechatInquiry.js | 4 +- ee/app/livechat-enterprise/client/index.js | 3 + ee/app/livechat-enterprise/client/route.js | 24 +++++ .../visitorEditCustomFieldsForm.html | 18 ++++ .../visitorEditCustomFieldsForm.js | 29 ++++++ .../visitorInfoCustomForm.html | 3 + .../customTemplates/visitorInfoCustomForm.js | 28 ++++++ .../views/app/registerCustomTemplates.js | 4 + .../client/views/livechatPriorities.html | 30 ++++++ .../client/views/livechatPriorities.js | 97 +++++++++++++++++++ .../client/views/livechatPriorityForm.html | 35 +++++++ .../client/views/livechatPriorityForm.js | 77 +++++++++++++++ .../client/views/livechatSideNavItems.js | 1 + .../livechat-enterprise/lib/messageTypes.js | 19 ++++ .../livechat-enterprise/server/api/index.js | 2 + .../server/api/inquiries.js | 17 ++++ .../server/api/lib/inquiries.js | 21 ++++ .../server/api/lib/priorities.js | 31 ++++++ .../server/api/priorities.js | 29 ++++++ .../server/hooks/beforeNewInquiry.js | 24 +++++ .../server/hooks/beforeNewRoom.js | 23 +++++ .../server/hooks/onCheckRoomParamsApi.js | 5 + .../server/hooks/onSaveVisitorInfo.js | 20 ++++ ee/app/livechat-enterprise/server/index.js | 7 ++ .../livechat-enterprise/server/lib/Helper.js | 52 +++++++++- .../server/lib/LivechatEnterprise.js | 47 +++++++++ .../server/methods/removePriority.js | 14 +++ .../server/methods/savePriority.js | 14 +++ .../livechat-enterprise/server/permissions.js | 1 + ee/app/models/server/index.js | 6 ++ .../models/server/models/LivechatInquiry.js | 18 ++++ .../models/server/models/LivechatPriority.js | 58 +++++++++++ ee/app/models/server/models/LivechatRooms.js | 22 +++++ ee/app/models/server/models/Messages.js | 27 ++++++ ee/app/models/server/raw/LivechatPriority.js | 18 ++++ ee/i18n/en.i18n.json | 11 ++- ee/i18n/pt-BR.i18n.json | 11 ++- server/publications/room/index.js | 1 + server/startup/migrations/index.js | 1 + server/startup/migrations/v153.js | 4 +- server/startup/migrations/v186.js | 19 ++++ 55 files changed, 949 insertions(+), 38 deletions(-) create mode 100644 ee/app/livechat-enterprise/client/views/app/customTemplates/visitorEditCustomFieldsForm.html create mode 100644 ee/app/livechat-enterprise/client/views/app/customTemplates/visitorEditCustomFieldsForm.js create mode 100644 ee/app/livechat-enterprise/client/views/app/customTemplates/visitorInfoCustomForm.html create mode 100644 ee/app/livechat-enterprise/client/views/app/customTemplates/visitorInfoCustomForm.js create mode 100644 ee/app/livechat-enterprise/client/views/livechatPriorities.html create mode 100644 ee/app/livechat-enterprise/client/views/livechatPriorities.js create mode 100644 ee/app/livechat-enterprise/client/views/livechatPriorityForm.html create mode 100644 ee/app/livechat-enterprise/client/views/livechatPriorityForm.js create mode 100644 ee/app/livechat-enterprise/lib/messageTypes.js create mode 100644 ee/app/livechat-enterprise/server/api/inquiries.js create mode 100644 ee/app/livechat-enterprise/server/api/lib/inquiries.js create mode 100644 ee/app/livechat-enterprise/server/api/lib/priorities.js create mode 100644 ee/app/livechat-enterprise/server/api/priorities.js create mode 100644 ee/app/livechat-enterprise/server/hooks/beforeNewInquiry.js create mode 100644 ee/app/livechat-enterprise/server/hooks/beforeNewRoom.js create mode 100644 ee/app/livechat-enterprise/server/hooks/onCheckRoomParamsApi.js create mode 100644 ee/app/livechat-enterprise/server/hooks/onSaveVisitorInfo.js create mode 100644 ee/app/livechat-enterprise/server/methods/removePriority.js create mode 100644 ee/app/livechat-enterprise/server/methods/savePriority.js create mode 100644 ee/app/models/server/models/LivechatInquiry.js create mode 100644 ee/app/models/server/models/LivechatPriority.js create mode 100644 ee/app/models/server/models/Messages.js create mode 100644 ee/app/models/server/raw/LivechatPriority.js create mode 100644 server/startup/migrations/v186.js diff --git a/app/livechat/client/views/app/livechatDepartmentForm.js b/app/livechat/client/views/app/livechatDepartmentForm.js index 4af23b45ddcf..59bbcec12286 100644 --- a/app/livechat/client/views/app/livechatDepartmentForm.js +++ b/app/livechat/client/views/app/livechatDepartmentForm.js @@ -265,7 +265,7 @@ Template.livechatDepartmentForm.onCreated(async function() { this.autorun(async () => { const id = FlowRouter.getParam('_id'); if (id) { - const { department, agents } = await APIClient.v1.get(`livechat/department/${ FlowRouter.getParam('_id') }`); + const { department, agents = [] } = await APIClient.v1.get(`livechat/department/${ FlowRouter.getParam('_id') }`); this.department.set(department); this.departmentAgents.set(agents); this.chatClosingTags.set((department && department.chatClosingTags) || []); diff --git a/app/livechat/client/views/app/tabbar/visitorEdit.html b/app/livechat/client/views/app/tabbar/visitorEdit.html index 0d3afb3118be..306d1c310246 100644 --- a/app/livechat/client/views/app/tabbar/visitorEdit.html +++ b/app/livechat/client/views/app/tabbar/visitorEdit.html @@ -45,6 +45,9 @@

      {{username}}

      {{#with room}}

      {{_ "Conversation" }}

      + {{#if customFieldsTemplate}} + {{> Template.dynamic template=customFieldsTemplate data=room }} + {{/if}}