Compare commits
43 Commits
bilalqamar
...
frontend-b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ac471e2dd7 | ||
|
|
f04429f6f7 | ||
|
|
bad12462f5 | ||
|
|
ec915f622b | ||
|
|
60da5eafc4 | ||
|
|
05cf174335 | ||
|
|
ff72dab001 | ||
|
|
c38887ec2b | ||
|
|
58aa512f47 | ||
|
|
62a5c11f52 | ||
|
|
3ef8515891 | ||
|
|
3cc39d83c4 | ||
|
|
af6cd1853c | ||
|
|
79a2fa404b | ||
|
|
472bbe2d96 | ||
|
|
dc5f097736 | ||
|
|
5e8c8254b4 | ||
|
|
0d6692cf8c | ||
|
|
3391e966f3 | ||
|
|
4297a96102 | ||
|
|
db883ca7cd | ||
|
|
422fbf6173 | ||
|
|
e862ee6fb1 | ||
|
|
eeae6d45ce | ||
|
|
71b88bcea3 | ||
|
|
c808069fe1 | ||
|
|
b9543c6d9c | ||
|
|
a545d0b9f6 | ||
|
|
8d86e6dcc0 | ||
|
|
37781566f5 | ||
|
|
50948acfeb | ||
|
|
4de1011780 | ||
|
|
d7474782b4 | ||
|
|
e1c78dda6e | ||
|
|
f282da52c1 | ||
|
|
d7fcc86847 | ||
|
|
c0873df575 | ||
|
|
12fbe7eebd | ||
|
|
7db4fde252 | ||
|
|
4914f51b6e | ||
|
|
80073e3f83 | ||
|
|
3aacdda7a1 | ||
|
|
1a2068d52f |
@@ -2,3 +2,4 @@ coverage/*
|
||||
dist/
|
||||
node_modules/
|
||||
jest.config.js
|
||||
src/i18n/messages/
|
||||
|
||||
10
.github/workflows/ci.yml
vendored
10
.github/workflows/ci.yml
vendored
@@ -9,17 +9,16 @@ on:
|
||||
jobs:
|
||||
tests:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Setup Nodejs Env
|
||||
run: echo "NODE_VER=`cat .nvmrc`" >> $GITHUB_ENV
|
||||
- name: Setup Nodejs
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ env.NODE_VER }}
|
||||
node-version-file: '.nvmrc'
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
- name: Validate package-lock.json changes
|
||||
@@ -33,4 +32,7 @@ jobs:
|
||||
- name: i18n_extract
|
||||
run: npm run i18n_extract
|
||||
- name: Coverage
|
||||
uses: codecov/codecov-action@v3
|
||||
uses: codecov/codecov-action@v4
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
fail_ci_if_error: true
|
||||
|
||||
2
.github/workflows/lockfileversion-check.yml
vendored
2
.github/workflows/lockfileversion-check.yml
vendored
@@ -10,4 +10,4 @@ on:
|
||||
|
||||
jobs:
|
||||
version-check:
|
||||
uses: openedx/.github/.github/workflows/lockfile-check.yml@master
|
||||
uses: openedx/.github/.github/workflows/lockfileversion-check-v3.yml@master
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -6,6 +6,7 @@ node_modules
|
||||
npm-debug.log
|
||||
coverage
|
||||
module.config.js
|
||||
env.config.*
|
||||
|
||||
dist/
|
||||
src/i18n/transifex_input.json
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[o:open-edx:p:edx-platform:r:frontend-app-discussions]
|
||||
file_filter = src/i18n/messages/<lang>.json
|
||||
source_file = src/i18n/transifex_input.json
|
||||
source_lang = en
|
||||
type = KEYVALUEJSON
|
||||
14
Makefile
14
Makefile
@@ -1,7 +1,3 @@
|
||||
export TRANSIFEX_RESOURCE = frontend-app-discussions
|
||||
transifex_resource = frontend-app-discussions
|
||||
transifex_langs = "ar,cs,de_DE,es_419,es_AR,es_ES,fa_IR,fr,fr_CA,fr_FR,hi,it_IT,pl,pt_PT,tr_TR,uk,ru,zh_CN"
|
||||
|
||||
intl_imports = ./node_modules/.bin/intl-imports.js
|
||||
transifex_utils = ./node_modules/.bin/transifex-utils.js
|
||||
i18n = ./src/i18n
|
||||
@@ -56,12 +52,6 @@ push_translations:
|
||||
# Pushing comments to Transifex...
|
||||
./node_modules/@edx/reactifex/bash_scripts/put_comments_v3.sh
|
||||
|
||||
ifeq ($(OPENEDX_ATLAS_PULL),)
|
||||
# Pulls translations from Transifex.
|
||||
pull_translations:
|
||||
tx pull -t -f --mode reviewed --languages=$(transifex_langs)
|
||||
else
|
||||
# Experimental: OEP-58 Pulls translations using atlas
|
||||
pull_translations:
|
||||
rm -rf src/i18n/messages
|
||||
mkdir src/i18n/messages
|
||||
@@ -74,9 +64,9 @@ pull_translations:
|
||||
translations/frontend-app-discussions/src/i18n/messages:frontend-app-discussions
|
||||
|
||||
$(intl_imports) frontend-component-header frontend-component-footer frontend-platform paragon frontend-app-discussions
|
||||
endif
|
||||
# endif
|
||||
|
||||
# This target is used by Travis.
|
||||
validate-no-uncommitted-package-lock-changes:
|
||||
# Checking for package-lock.json changes...
|
||||
git diff --exit-code package-lock.json
|
||||
git diff --exit-code package-lock.json
|
||||
|
||||
10
README.rst
10
README.rst
@@ -52,6 +52,12 @@ Cloning and Startup
|
||||
|
||||
The dev server is running at `http://localhost:2002 <http://localhost:2002>`_.
|
||||
|
||||
Plugins
|
||||
=======
|
||||
This MFE can be customized using `Frontend Plugin Framework <https://github.com/openedx/frontend-plugin-framework>`_.
|
||||
|
||||
The parts of this MFE that can be customized in that manner are documented `here </src/plugin-slots>`_.
|
||||
|
||||
Getting Help
|
||||
============
|
||||
Please tag **@openedx/edx-infinity ** on any PRs or issues. Thanks.
|
||||
@@ -70,7 +76,7 @@ How to Contribute
|
||||
|
||||
Details about how to become a contributor to the Open edX project may be found in the wiki at `How to contribute`_
|
||||
|
||||
.. _How to contribute: https://edx.readthedocs.io/projects/edx-developer-guide/en/latest/process/index.html
|
||||
.. _How to contribute: https://docs.openedx.org/en/latest/developers/references/developer_guide/process/index.html
|
||||
|
||||
PR description template should be automatically applied if you are sending PR from github interface; otherwise you
|
||||
can find it it at `PULL_REQUEST_TEMPLATE.md <https://github.com/openedx/frontend-app-discussions/blob/master/.github/pull_request_template.md>`_
|
||||
@@ -119,4 +125,4 @@ Please see `edx/frontend-platform's i18n module <https://edx.github.io/frontend-
|
||||
Reporting Security Issues
|
||||
=========================
|
||||
|
||||
Please do not report security issues in public. Please email security@openedx.org.
|
||||
Please do not report security issues in public. Please email security@openedx.org.
|
||||
|
||||
@@ -12,6 +12,7 @@ metadata:
|
||||
icon: "Web"
|
||||
annotations:
|
||||
openedx.org/arch-interest-groups: ""
|
||||
openedx.org/release: "master"
|
||||
spec:
|
||||
owner: group:edx-infinity
|
||||
type: 'website'
|
||||
|
||||
11
openedx.yaml
11
openedx.yaml
@@ -1,11 +0,0 @@
|
||||
# This file describes this Open edX repo, as described in OEP-2:
|
||||
# http://open-edx-proposals.readthedocs.io/en/latest/oeps/oep-0002.html#specification
|
||||
|
||||
nick: tmpa
|
||||
oeps: {}
|
||||
owner: edx/arch-team
|
||||
openedx-release:
|
||||
# The openedx-release key is described in OEP-10:
|
||||
# https://open-edx-proposals.readthedocs.io/en/latest/oep-0010-proc-openedx-releases.html
|
||||
# The FAQ might also be helpful: https://openedx.atlassian.net/wiki/spaces/COMM/pages/1331268879/Open+edX+Release+FAQ
|
||||
ref: master
|
||||
16212
package-lock.json
generated
16212
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
27
package.json
27
package.json
@@ -16,13 +16,9 @@
|
||||
"lint:fix": "fedx-scripts eslint --ext .js --ext .jsx . --fix",
|
||||
"snapshot": "fedx-scripts jest --updateSnapshot",
|
||||
"start": "fedx-scripts webpack-dev-server --progress",
|
||||
"dev": "PUBLIC_PATH=/discussions/ MFE_CONFIG_API_URL='http://localhost:8000/api/mfe_config/v1' fedx-scripts webpack-dev-server --progress --host apps.local.openedx.io",
|
||||
"test": "fedx-scripts jest --coverage --passWithNoTests"
|
||||
},
|
||||
"husky": {
|
||||
"hooks": {
|
||||
"pre-commit": "npm run lint"
|
||||
}
|
||||
},
|
||||
"author": "edX",
|
||||
"license": "AGPL-3.0",
|
||||
"homepage": "https://github.com/openedx/frontend-app-discussions#readme",
|
||||
@@ -34,13 +30,13 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@edx/brand": "npm:@openedx/brand-openedx@^1.2.2",
|
||||
"@edx/frontend-component-footer": "13.0.2",
|
||||
"@edx/frontend-component-header": "5.0.2",
|
||||
"@edx/frontend-platform": "7.1.0",
|
||||
"@edx/frontend-component-footer": "^14.6.0",
|
||||
"@edx/frontend-component-header": "^6.2.0",
|
||||
"@edx/frontend-platform": "^8.3.3",
|
||||
"@edx/openedx-atlas": "^0.6.0",
|
||||
"@openedx/paragon": "^21.11.3",
|
||||
"@openedx/paragon": "^22.16.0",
|
||||
"@reduxjs/toolkit": "1.9.7",
|
||||
"@tinymce/tinymce-react": "3.13.1",
|
||||
"@tinymce/tinymce-react": "5.1.1",
|
||||
"babel-polyfill": "6.26.0",
|
||||
"classnames": "2.5.1",
|
||||
"core-js": "3.21.1",
|
||||
@@ -49,8 +45,9 @@
|
||||
"lodash.snakecase": "4.1.1",
|
||||
"prop-types": "15.8.1",
|
||||
"raw-loader": "4.0.2",
|
||||
"react": "17.0.2",
|
||||
"react-dom": "17.0.2",
|
||||
"react": "18.3.1",
|
||||
"react-dom": "18.3.1",
|
||||
"react-helmet": "6.1.0",
|
||||
"react-redux": "7.2.9",
|
||||
"react-router": "6.18.0",
|
||||
"react-router-dom": "6.18.0",
|
||||
@@ -62,16 +59,16 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@edx/browserslist-config": "1.2.0",
|
||||
"@openedx/frontend-build": "13.0.28",
|
||||
"@edx/reactifex": "1.1.0",
|
||||
"@openedx/frontend-build": "^14.3.3",
|
||||
"@testing-library/jest-dom": "5.17.0",
|
||||
"@testing-library/react": "12.1.5",
|
||||
"@testing-library/react": "14.3.1",
|
||||
"@testing-library/user-event": "13.5.0",
|
||||
"axios": "^0.28.0",
|
||||
"axios-mock-adapter": "1.22.0",
|
||||
"babel-plugin-react-intl": "8.2.25",
|
||||
"eslint-plugin-simple-import-sort": "7.0.0",
|
||||
"glob": "7.2.0",
|
||||
"husky": "7.0.4",
|
||||
"jest": "29.7.0",
|
||||
"rosie": "2.1.1"
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import { useDebounce } from '../discussions/data/hooks';
|
||||
|
||||
const defaultSanitizeOptions = {
|
||||
USE_PROFILES: { html: true },
|
||||
ADD_ATTR: ['columnalign'],
|
||||
ADD_ATTR: ['columnalign', 'target'],
|
||||
};
|
||||
|
||||
const HTMLLoader = ({
|
||||
|
||||
23
src/components/Head/Head.jsx
Normal file
23
src/components/Head/Head.jsx
Normal file
@@ -0,0 +1,23 @@
|
||||
import React from 'react';
|
||||
|
||||
import { Helmet } from 'react-helmet';
|
||||
|
||||
import { getConfig } from '@edx/frontend-platform';
|
||||
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
|
||||
|
||||
import messages from './messages';
|
||||
|
||||
const Head = ({ intl }) => (
|
||||
<Helmet>
|
||||
<title>
|
||||
{intl.formatMessage(messages['discussions.page.title'], { siteName: getConfig().SITE_NAME })}
|
||||
</title>
|
||||
<link rel="shortcut icon" href={getConfig().FAVICON_URL} type="image/x-icon" />
|
||||
</Helmet>
|
||||
);
|
||||
|
||||
Head.propTypes = {
|
||||
intl: intlShape.isRequired,
|
||||
};
|
||||
|
||||
export default injectIntl(Head);
|
||||
20
src/components/Head/Head.test.jsx
Normal file
20
src/components/Head/Head.test.jsx
Normal file
@@ -0,0 +1,20 @@
|
||||
import React from 'react';
|
||||
|
||||
import { render } from '@testing-library/react';
|
||||
import { Helmet } from 'react-helmet';
|
||||
|
||||
import { getConfig } from '@edx/frontend-platform';
|
||||
import { IntlProvider } from '@edx/frontend-platform/i18n';
|
||||
|
||||
import Head from './Head';
|
||||
|
||||
describe('Head', () => {
|
||||
const props = {};
|
||||
it('should match render title tag and favicon with the site configuration values', () => {
|
||||
render(<IntlProvider locale="en"><Head {...props} /></IntlProvider>);
|
||||
const helmet = Helmet.peek();
|
||||
expect(helmet.title).toEqual(`Discussions | ${getConfig().SITE_NAME}`);
|
||||
expect(helmet.linkTags[0].rel).toEqual('shortcut icon');
|
||||
expect(helmet.linkTags[0].href).toEqual(getConfig().FAVICON_URL);
|
||||
});
|
||||
});
|
||||
11
src/components/Head/messages.js
Normal file
11
src/components/Head/messages.js
Normal file
@@ -0,0 +1,11 @@
|
||||
import { defineMessages } from '@edx/frontend-platform/i18n';
|
||||
|
||||
const messages = defineMessages({
|
||||
'discussions.page.title': {
|
||||
id: 'discussions.page.title',
|
||||
defaultMessage: 'Discussions | {siteName}',
|
||||
description: 'Title tag',
|
||||
},
|
||||
});
|
||||
|
||||
export default messages;
|
||||
74
src/components/PostHelpPanel.jsx
Normal file
74
src/components/PostHelpPanel.jsx
Normal file
@@ -0,0 +1,74 @@
|
||||
import React, { useState } from 'react';
|
||||
|
||||
import {
|
||||
Hyperlink, Icon, IconButton, IconButtonWithTooltip,
|
||||
} from '@openedx/paragon';
|
||||
import { Close, HelpOutline } from '@openedx/paragon/icons';
|
||||
|
||||
import { useIntl } from '@edx/frontend-platform/i18n';
|
||||
|
||||
import messages from '../discussions/posts/post-editor/messages';
|
||||
|
||||
const PostHelpPanel = () => {
|
||||
const intl = useIntl();
|
||||
const [showHelpPane, setShowHelpPane] = useState(false);
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="d-flex justify-content-end">
|
||||
<IconButtonWithTooltip
|
||||
onClick={() => setShowHelpPane(true)}
|
||||
alt={intl.formatMessage(messages.showHelpIcon)}
|
||||
tooltipContent={<div>{intl.formatMessage(messages.discussionHelpTooltip)}</div>}
|
||||
src={HelpOutline}
|
||||
iconAs={Icon}
|
||||
size="inline"
|
||||
className="float-right p-3 help-icon"
|
||||
iconClassNames="help-icon-size"
|
||||
data-testid="help-button"
|
||||
invertColors
|
||||
isActive
|
||||
/>
|
||||
</div>
|
||||
{showHelpPane && (
|
||||
<div
|
||||
className="w-100 p-2 bg-light-200 rounded box-shadow-down-1 post-preview overflow-auto my-3"
|
||||
style={{ minHeight: '200px', wordBreak: 'break-word' }}
|
||||
>
|
||||
<IconButton
|
||||
onClick={() => setShowHelpPane(false)}
|
||||
alt={intl.formatMessage(messages.actionsAlt)}
|
||||
src={Close}
|
||||
iconAs={Icon}
|
||||
size="inline"
|
||||
className="float-right p-3"
|
||||
iconClassNames="icon-size"
|
||||
data-testid="hide-help-button"
|
||||
/>
|
||||
<div className="pt-2 px-3">
|
||||
<h4 className="font-weight-bold">{intl.formatMessage(messages.discussionHelpHeader)}</h4>
|
||||
<p className="pt-2">{intl.formatMessage(messages.discussionHelpDescription)}</p>
|
||||
<Hyperlink
|
||||
target="_blank"
|
||||
className="w-100"
|
||||
destination="https://support.edx.org/hc/en-us/sections/115004169687-Participating-in-Course-Discussions"
|
||||
showLaunchIcon={false}
|
||||
>
|
||||
{intl.formatMessage(messages.discussionHelpCourseParticipation)}
|
||||
</Hyperlink>
|
||||
<Hyperlink
|
||||
target="_blank"
|
||||
className="w-100"
|
||||
destination="https://support.edx.org/hc/en-us/articles/360000035267-Entering-math-expressions-in-course-discussions"
|
||||
showLaunchIcon={false}
|
||||
>
|
||||
{intl.formatMessage(messages.discussionHelpMathExpressions)}
|
||||
</Hyperlink>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default React.memo(PostHelpPanel);
|
||||
@@ -79,7 +79,7 @@ const ActionsDropdown = ({
|
||||
placement="bottom-end"
|
||||
>
|
||||
<div
|
||||
className="bg-white shadow d-flex flex-column"
|
||||
className="bg-white shadow d-flex flex-column mt-1"
|
||||
data-testid="actions-dropdown-modal-popup"
|
||||
>
|
||||
{actions.map(action => (
|
||||
@@ -94,12 +94,13 @@ const ActionsDropdown = ({
|
||||
handleActions(action.action);
|
||||
}}
|
||||
className="d-flex justify-content-start actions-dropdown-item"
|
||||
data-testId={action.id}
|
||||
>
|
||||
<Icon
|
||||
src={action.icon}
|
||||
className="icon-size-24"
|
||||
/>
|
||||
<span className="font-weight-normal font-xl ml-2">
|
||||
<span className="font-weight-normal ml-2">
|
||||
{intl.formatMessage(action.label)}
|
||||
</span>
|
||||
</Dropdown.Item>
|
||||
|
||||
@@ -38,7 +38,7 @@ const AuthorLabel = ({
|
||||
|
||||
const authorName = useMemo(() => (
|
||||
<span
|
||||
className={classNames('mr-1.5 font-size-14 font-style font-weight-500 author-name', {
|
||||
className={classNames('mr-1.5 font-style font-weight-500 author-name', {
|
||||
'text-gray-700': isRetiredUser,
|
||||
'text-primary-500': !authorLabelMessage && !isRetiredUser,
|
||||
})}
|
||||
@@ -71,7 +71,7 @@ const AuthorLabel = ({
|
||||
/>
|
||||
{authorLabelMessage && (
|
||||
<span
|
||||
className={classNames('mr-1.5 font-size-14 font-style font-weight-500', {
|
||||
className={classNames('mr-1.5 font-style font-weight-500', {
|
||||
'text-primary-500': showTextPrimary,
|
||||
'text-gray-700': isRetiredUser,
|
||||
})}
|
||||
@@ -85,7 +85,7 @@ const AuthorLabel = ({
|
||||
{postCreatedAt && (
|
||||
<span
|
||||
title={postCreatedAt}
|
||||
className={classNames('align-content-center', {
|
||||
className={classNames('align-content-center post-summary-timestamp', {
|
||||
'text-white': alert,
|
||||
'text-gray-500': !alert,
|
||||
})}
|
||||
@@ -99,7 +99,7 @@ const AuthorLabel = ({
|
||||
|
||||
return showUserNameAsLink
|
||||
? (
|
||||
<div className={className}>
|
||||
<div className={`${className} flex-wrap`}>
|
||||
<Link
|
||||
data-testid="learner-posts-link"
|
||||
id="learner-posts-link"
|
||||
@@ -112,7 +112,7 @@ const AuthorLabel = ({
|
||||
{labelContents}
|
||||
</div>
|
||||
)
|
||||
: <div className={className}>{authorName}{labelContents}</div>;
|
||||
: <div className={`${className} flex-wrap`}>{authorName}{labelContents}</div>;
|
||||
};
|
||||
|
||||
AuthorLabel.propTypes = {
|
||||
|
||||
@@ -12,7 +12,7 @@ import classNames from 'classnames';
|
||||
import { useIntl } from '@edx/frontend-platform/i18n';
|
||||
|
||||
import { ThreadType } from '../../data/constants';
|
||||
import { useUserPostingEnabled } from '../data/hooks';
|
||||
import { useHasLikePermission, useUserPostingEnabled } from '../data/hooks';
|
||||
import PostCommentsContext from '../post-comments/postCommentsContext';
|
||||
import ActionsDropdown from './ActionsDropdown';
|
||||
import DiscussionContext from './context';
|
||||
@@ -33,6 +33,7 @@ const HoverCard = ({
|
||||
const { enableInContextSidebar } = useContext(DiscussionContext);
|
||||
const { isClosed } = useContext(PostCommentsContext);
|
||||
const isUserPrivilegedInPostingRestriction = useUserPostingEnabled();
|
||||
const userHasLikePermission = useHasLikePermission(contentType, id);
|
||||
|
||||
return (
|
||||
<div
|
||||
@@ -45,7 +46,7 @@ const HoverCard = ({
|
||||
<Button
|
||||
variant="tertiary"
|
||||
className={classNames(
|
||||
'px-2.5 py-2 border-0 font-style text-gray-700 font-size-12',
|
||||
'px-2.5 py-2 border-0 font-style text-gray-700',
|
||||
{ 'w-100': enableInContextSidebar },
|
||||
)}
|
||||
onClick={() => handleResponseCommentButton()}
|
||||
@@ -86,6 +87,7 @@ const HoverCard = ({
|
||||
iconAs={Icon}
|
||||
size="sm"
|
||||
alt="Like"
|
||||
disabled={!userHasLikePermission}
|
||||
iconClassNames="like-icon-dimensions"
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
|
||||
@@ -106,8 +106,8 @@ describe('HoverCard', () => {
|
||||
});
|
||||
|
||||
test('it should have hover card on post', async () => {
|
||||
await waitFor(() => renderComponent(discussionPostId));
|
||||
const post = screen.getByTestId('post-thread-1');
|
||||
renderComponent(discussionPostId);
|
||||
const post = await screen.findByTestId('post-thread-1');
|
||||
expect(within(post).getByTestId('hover-card-thread-1')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
|
||||
@@ -10,12 +10,12 @@ import { useIntl } from '@edx/frontend-platform/i18n';
|
||||
|
||||
import ContentUnavailableIcon from '../../assets/ContentUnavailable';
|
||||
import selectCourseTabs from '../../components/NavigationBar/data/selectors';
|
||||
import { useIsOnDesktop, useIsOnXLDesktop } from '../data/hooks';
|
||||
import { useIsOnTablet, useIsOnXLDesktop } from '../data/hooks';
|
||||
import messages from '../messages';
|
||||
|
||||
const ContentUnavailable = ({ subTitleMessage }) => {
|
||||
const intl = useIntl();
|
||||
const isOnDesktop = useIsOnDesktop();
|
||||
const isOnTabletorDesktop = useIsOnTablet();
|
||||
const isOnXLDesktop = useIsOnXLDesktop();
|
||||
const { courseId } = useSelector(selectCourseTabs);
|
||||
|
||||
@@ -26,8 +26,8 @@ const ContentUnavailable = ({ subTitleMessage }) => {
|
||||
return (
|
||||
<div className="min-content-height justify-content-center align-items-center d-flex w-100 flex-column bg-white">
|
||||
<div className={classNames('d-flex flex-column align-items-center', {
|
||||
'content-unavailable-desktop': isOnDesktop || isOnXLDesktop,
|
||||
'py-0 px-3': !isOnDesktop && !isOnXLDesktop,
|
||||
'content-unavailable-desktop': isOnTabletorDesktop || isOnXLDesktop,
|
||||
'py-0 px-3': !isOnTabletorDesktop && !isOnXLDesktop,
|
||||
})}
|
||||
>
|
||||
<ContentUnavailableIcon />
|
||||
@@ -35,7 +35,7 @@ const ContentUnavailable = ({ subTitleMessage }) => {
|
||||
{intl.formatMessage(messages.contentUnavailableTitle)}
|
||||
</h3>
|
||||
<p className="pb-2 text-gray-500 text-center">{intl.formatMessage(subTitleMessage)}</p>
|
||||
<Button onClick={redirectToDashboard} variant="outline-dark" className="font-size-14 py-2 px-2.5">
|
||||
<Button onClick={redirectToDashboard} variant="outline-dark" className="py-2 px-2.5">
|
||||
{intl.formatMessage(messages.contentUnavailableAction)}
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
@@ -5,8 +5,10 @@ ensureConfig([
|
||||
'LMS_BASE_URL',
|
||||
], 'Posts API service');
|
||||
|
||||
export const getCourseConfigApiUrl = () => `${getConfig().LMS_BASE_URL}/api/discussion/v1/courses/`;
|
||||
export const getCourseConfigApiUrl = () => `${getConfig().LMS_BASE_URL}/api/discussion/v2/courses/`;
|
||||
export const getCourseSettingsApiUrl = () => `${getConfig().LMS_BASE_URL}/api/discussion/v1/courses/`;
|
||||
export const getDiscussionsConfigUrl = (courseId) => `${getCourseConfigApiUrl()}${courseId}/`;
|
||||
export const getDiscussionsSettingsUrl = (courseId) => `${getCourseSettingsApiUrl()}${courseId}/settings`;
|
||||
/**
|
||||
* Get discussions course config
|
||||
* @param {string} courseId
|
||||
@@ -21,7 +23,7 @@ export async function getDiscussionsConfig(courseId) {
|
||||
* @param {string} courseId
|
||||
*/
|
||||
export async function getDiscussionsSettings(courseId) {
|
||||
const url = `${getDiscussionsConfigUrl(courseId)}settings`;
|
||||
const url = `${getDiscussionsSettingsUrl(courseId)}`;
|
||||
const { data } = await getAuthenticatedHttpClient().get(url);
|
||||
return data;
|
||||
}
|
||||
|
||||
@@ -13,11 +13,14 @@ import { getAuthenticatedUser } from '@edx/frontend-platform/auth';
|
||||
import { useIntl } from '@edx/frontend-platform/i18n';
|
||||
import { AppContext } from '@edx/frontend-platform/react';
|
||||
|
||||
import selectCourseTabs from '../../components/NavigationBar/data/selectors';
|
||||
import { LOADED } from '../../components/NavigationBar/data/slice';
|
||||
import fetchTab from '../../components/NavigationBar/data/thunks';
|
||||
import { RequestStatus, Routes } from '../../data/constants';
|
||||
import { ContentActions, RequestStatus, Routes } from '../../data/constants';
|
||||
import { selectTopicsUnderCategory } from '../../data/selectors';
|
||||
import fetchCourseBlocks from '../../data/thunks';
|
||||
import DiscussionContext from '../common/context';
|
||||
import PostCommentsContext from '../post-comments/postCommentsContext';
|
||||
import { clearRedirect } from '../posts/data';
|
||||
import { threadsLoadingStatus } from '../posts/data/selectors';
|
||||
import { selectTopics } from '../topics/data/selectors';
|
||||
@@ -25,17 +28,16 @@ import tourCheckpoints from '../tours/constants';
|
||||
import selectTours from '../tours/data/selectors';
|
||||
import { updateTourShowStatus } from '../tours/data/thunks';
|
||||
import messages from '../tours/messages';
|
||||
import { discussionsPath } from '../utils';
|
||||
import { checkPermissions, discussionsPath } from '../utils';
|
||||
import { ContentSelectors } from './constants';
|
||||
import {
|
||||
selectAreThreadsFiltered,
|
||||
selectEnableInContext,
|
||||
selectIsCourseAdmin,
|
||||
selectIsCourseStaff,
|
||||
selectIsPostingEnabled,
|
||||
selectIsUserLearner,
|
||||
selectPostThreadCount,
|
||||
selectUserHasModerationPrivileges,
|
||||
selectUserIsGroupTa,
|
||||
selectUserIsStaff,
|
||||
} from './selectors';
|
||||
import fetchCourseConfig from './thunks';
|
||||
|
||||
@@ -74,12 +76,10 @@ export const useSidebarVisible = () => {
|
||||
|
||||
export function useCourseDiscussionData(courseId) {
|
||||
const dispatch = useDispatch();
|
||||
const { authenticatedUser } = useContext(AppContext);
|
||||
|
||||
useEffect(() => {
|
||||
async function fetchBaseData() {
|
||||
await dispatch(fetchCourseConfig(courseId));
|
||||
await dispatch(fetchCourseBlocks(courseId, authenticatedUser.username));
|
||||
await dispatch(fetchTab(courseId));
|
||||
}
|
||||
|
||||
@@ -87,6 +87,23 @@ export function useCourseDiscussionData(courseId) {
|
||||
}, [courseId]);
|
||||
}
|
||||
|
||||
export function useCourseBlockData(courseId) {
|
||||
const dispatch = useDispatch();
|
||||
const { authenticatedUser } = useContext(AppContext);
|
||||
const { isEnrolled, courseStatus } = useSelector(selectCourseTabs);
|
||||
const isUserLearner = useSelector(selectIsUserLearner);
|
||||
|
||||
useEffect(() => {
|
||||
async function fetchBaseData() {
|
||||
if (courseStatus === LOADED && (!isUserLearner || isEnrolled)) {
|
||||
await dispatch(fetchCourseBlocks(courseId, authenticatedUser.username));
|
||||
}
|
||||
}
|
||||
|
||||
fetchBaseData();
|
||||
}, [courseId, isEnrolled, courseStatus, isUserLearner]);
|
||||
}
|
||||
|
||||
export function useRedirectToThread(courseId, enableInContextSidebar) {
|
||||
const dispatch = useDispatch();
|
||||
const navigate = useNavigate();
|
||||
@@ -113,12 +130,17 @@ export function useRedirectToThread(courseId, enableInContextSidebar) {
|
||||
|
||||
export function useIsOnDesktop() {
|
||||
const windowSize = useWindowSize();
|
||||
return windowSize.width >= breakpoints.medium.minWidth;
|
||||
return windowSize.width >= breakpoints.medium.maxWidth;
|
||||
}
|
||||
|
||||
export function useIsOnTablet() {
|
||||
const windowSize = useWindowSize();
|
||||
return windowSize.width >= breakpoints.small.maxWidth;
|
||||
}
|
||||
|
||||
export function useIsOnXLDesktop() {
|
||||
const windowSize = useWindowSize();
|
||||
return windowSize.width >= breakpoints.extraLarge.minWidth;
|
||||
return windowSize.width >= breakpoints.extraLarge.maxWidth;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -195,12 +217,9 @@ export const useCurrentDiscussionTopic = () => {
|
||||
|
||||
export const useUserPostingEnabled = () => {
|
||||
const isPostingEnabled = useSelector(selectIsPostingEnabled);
|
||||
const isUserAdmin = useSelector(selectUserIsStaff);
|
||||
const userHasModerationPrivileges = useSelector(selectUserHasModerationPrivileges);
|
||||
const isUserGroupTA = useSelector(selectUserIsGroupTa);
|
||||
const isCourseAdmin = useSelector(selectIsCourseAdmin);
|
||||
const isCourseStaff = useSelector(selectIsCourseStaff);
|
||||
const isPrivileged = isUserAdmin || userHasModerationPrivileges || isUserGroupTA || isCourseAdmin || isCourseStaff;
|
||||
const isPrivileged = userHasModerationPrivileges || isUserGroupTA;
|
||||
|
||||
return (isPostingEnabled || isPrivileged);
|
||||
};
|
||||
@@ -261,3 +280,10 @@ export const useDebounce = (value, delay) => {
|
||||
);
|
||||
return debouncedValue;
|
||||
};
|
||||
|
||||
export const useHasLikePermission = (contentType, id) => {
|
||||
const { postType } = useContext(PostCommentsContext);
|
||||
const content = { ...useSelector(ContentSelectors[contentType](id)), postType };
|
||||
|
||||
return checkPermissions(content, ContentActions.VOTE);
|
||||
};
|
||||
|
||||
@@ -19,11 +19,11 @@ const courseConfigApiUrl = getCourseConfigApiUrl();
|
||||
let store;
|
||||
let axiosMock;
|
||||
|
||||
const generateApiResponse = (isPostingEnabled, isCourseAdmin = false) => ({
|
||||
const generateApiResponse = (isPostingEnabled, hasModerationPrivileges = false) => ({
|
||||
isPostingEnabled,
|
||||
hasModerationPrivileges: false,
|
||||
hasModerationPrivileges,
|
||||
isGroupTa: false,
|
||||
isCourseAdmin,
|
||||
isCourseAdmin: false,
|
||||
isCourseStaff: false,
|
||||
isUserAdmin: false,
|
||||
});
|
||||
@@ -160,7 +160,7 @@ describe('Hooks', () => {
|
||||
expect(queryByText('false')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
test('when posting is not disabled and Role is not Learner return true', async () => {
|
||||
test('when posting is disabled and Role is not Learner return true', async () => {
|
||||
axiosMock.onGet(`${courseConfigApiUrl}${courseId}/`)
|
||||
.reply(200, generateApiResponse(false, true));
|
||||
await executeThunk(fetchCourseConfig(courseId), store.dispatch, store.getState);
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
|
||||
import selectCourseTabs from '../../components/NavigationBar/data/selectors';
|
||||
import { PostsStatusFilter, ThreadType } from '../../data/constants';
|
||||
import { isCourseStatusValid } from '../utils';
|
||||
|
||||
export const selectAnonymousPostingConfig = state => ({
|
||||
allowAnonymous: state.config.allowAnonymous,
|
||||
@@ -69,12 +71,14 @@ export const selectIsUserLearner = createSelector(
|
||||
selectUserIsStaff,
|
||||
selectIsCourseAdmin,
|
||||
selectIsCourseStaff,
|
||||
selectCourseTabs,
|
||||
(
|
||||
userHasModerationPrivileges,
|
||||
userIsGroupTa,
|
||||
userIsStaff,
|
||||
userIsCourseAdmin,
|
||||
userIsCourseStaff,
|
||||
{ courseStatus },
|
||||
) => (
|
||||
(
|
||||
!userHasModerationPrivileges
|
||||
@@ -82,6 +86,7 @@ export const selectIsUserLearner = createSelector(
|
||||
&& !userIsStaff
|
||||
&& !userIsCourseAdmin
|
||||
&& !userIsCourseStaff
|
||||
&& isCourseStatusValid(courseStatus)
|
||||
) || false
|
||||
),
|
||||
);
|
||||
|
||||
@@ -13,7 +13,9 @@ import {
|
||||
import Spinner from '../../components/Spinner';
|
||||
import { RequestStatus, Routes as ROUTES } from '../../data/constants';
|
||||
import DiscussionContext from '../common/context';
|
||||
import { useContainerSize, useIsOnDesktop, useIsOnXLDesktop } from '../data/hooks';
|
||||
import {
|
||||
useContainerSize, useIsOnDesktop, useIsOnTablet, useIsOnXLDesktop,
|
||||
} from '../data/hooks';
|
||||
import { selectConfigLoadingStatus, selectEnableInContext } from '../data/selectors';
|
||||
|
||||
const TopicPostsView = lazy(() => import('../in-context-topics/TopicPostsView'));
|
||||
@@ -26,6 +28,7 @@ const LegacyTopicsView = lazy(() => import('../topics/TopicsView'));
|
||||
const DiscussionSidebar = ({ displaySidebar, postActionBarRef }) => {
|
||||
const isOnDesktop = useIsOnDesktop();
|
||||
const isOnXLDesktop = useIsOnXLDesktop();
|
||||
const isOnTablet = useIsOnTablet();
|
||||
const { enableInContextSidebar } = useContext(DiscussionContext);
|
||||
const enableInContext = useSelector(selectEnableInContext);
|
||||
const configStatus = useSelector(selectConfigLoadingStatus);
|
||||
@@ -51,6 +54,7 @@ const DiscussionSidebar = ({ displaySidebar, postActionBarRef }) => {
|
||||
'd-flex overflow-auto box-shadow-centered-1': displaySidebar,
|
||||
'w-100': !isOnDesktop,
|
||||
'sidebar-desktop-width': isOnDesktop && !isOnXLDesktop,
|
||||
'sidebar-tablet-width': isOnTablet && !isOnDesktop,
|
||||
'w-25 sidebar-XL-width': isOnXLDesktop,
|
||||
'min-content-height': !enableInContextSidebar,
|
||||
})}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { render, screen } from '@testing-library/react';
|
||||
import MockAdapter from 'axios-mock-adapter';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { IntlProvider } from 'react-intl';
|
||||
import { Context as ResponsiveContext } from 'react-responsive';
|
||||
import { MemoryRouter } from 'react-router-dom';
|
||||
@@ -85,7 +84,7 @@ describe('DiscussionSidebar', () => {
|
||||
},
|
||||
})]);
|
||||
renderComponent();
|
||||
await act(async () => expect(await screen.findAllByText('Thread by other users')).toBeTruthy());
|
||||
await screen.findAllByText('Thread by other users');
|
||||
expect(screen.queryByText('Thread by abc123')).not.toBeInTheDocument();
|
||||
});
|
||||
|
||||
@@ -100,7 +99,7 @@ describe('DiscussionSidebar', () => {
|
||||
},
|
||||
})]);
|
||||
renderComponent();
|
||||
await act(async () => expect(await screen.findAllByText('Thread by other users')).toBeTruthy());
|
||||
await screen.findAllByText('Thread by other users');
|
||||
expect(screen.queryByText('Thread by abc123')).not.toBeInTheDocument();
|
||||
expect(container.querySelectorAll('.discussion-post')).toHaveLength(postCount);
|
||||
});
|
||||
|
||||
@@ -12,12 +12,11 @@ import { LearningHeader as Header } from '@edx/frontend-component-header';
|
||||
|
||||
import { Spinner } from '../../components';
|
||||
import selectCourseTabs from '../../components/NavigationBar/data/selectors';
|
||||
import { LOADED } from '../../components/NavigationBar/data/slice';
|
||||
import { ALL_ROUTES, DiscussionProvider, Routes as ROUTES } from '../../data/constants';
|
||||
import DiscussionContext from '../common/context';
|
||||
import ContentUnavailable from '../content-unavailable/ContentUnavailable';
|
||||
import {
|
||||
useCourseDiscussionData, useIsOnDesktop, useRedirectToThread, useSidebarVisible,
|
||||
useCourseBlockData, useCourseDiscussionData, useIsOnTablet, useRedirectToThread, useSidebarVisible,
|
||||
} from '../data/hooks';
|
||||
import { selectDiscussionProvider, selectEnableInContext, selectIsUserLearner } from '../data/selectors';
|
||||
import { EmptyLearners, EmptyTopics } from '../empty-posts';
|
||||
@@ -25,9 +24,10 @@ import EmptyPosts from '../empty-posts/EmptyPosts';
|
||||
import { EmptyTopic as InContextEmptyTopics } from '../in-context-topics/components';
|
||||
import messages from '../messages';
|
||||
import { selectPostEditorVisible } from '../posts/data/selectors';
|
||||
import { isCourseStatusValid } from '../utils';
|
||||
import useFeedbackWrapper from './FeedbackWrapper';
|
||||
|
||||
const Footer = lazy(() => import('@edx/frontend-component-footer'));
|
||||
const FooterSlot = lazy(() => import('@edx/frontend-component-footer').then(module => ({ default: module.FooterSlot })));
|
||||
const PostActionsBar = lazy(() => import('../posts/post-actions-bar/PostActionsBar'));
|
||||
const CourseTabsNavigation = lazy(() => import('../../components/NavigationBar/CourseTabsNavigation'));
|
||||
const LegacyBreadcrumbMenu = lazy(() => import('../navigation/breadcrumb-menu/LegacyBreadcrumbMenu'));
|
||||
@@ -51,7 +51,7 @@ const DiscussionsHome = () => {
|
||||
const page = pageParams?.page || null;
|
||||
const matchPattern = ALL_ROUTES.find((route) => matchPath({ path: route }, location.pathname));
|
||||
const { params } = useMatch(matchPattern);
|
||||
const isOnDesktop = useIsOnDesktop();
|
||||
const isOnTabletorDesktop = useIsOnTablet();
|
||||
let displaySidebar = useSidebarVisible();
|
||||
const enableInContextSidebar = Boolean(new URLSearchParams(location.search).get('inContextSidebar') !== null);
|
||||
const {
|
||||
@@ -60,12 +60,13 @@ const DiscussionsHome = () => {
|
||||
|
||||
useCourseDiscussionData(courseId);
|
||||
useRedirectToThread(courseId, enableInContextSidebar);
|
||||
useCourseBlockData(courseId);
|
||||
useFeedbackWrapper();
|
||||
/* Display the content area if we are currently viewing/editing a post or creating one.
|
||||
If the window is larger than a particular size, show the sidebar for navigating between posts/topics.
|
||||
However, for smaller screens or embeds, only show the sidebar if the content area isn't displayed. */
|
||||
const displayContentArea = (postId || postEditorVisible || (learnerUsername && postId));
|
||||
if (displayContentArea) { displaySidebar = isOnDesktop; }
|
||||
if (displayContentArea) { displaySidebar = isOnTabletorDesktop; }
|
||||
|
||||
const discussionContextValue = useMemo(() => ({
|
||||
page,
|
||||
@@ -81,7 +82,7 @@ const DiscussionsHome = () => {
|
||||
<Suspense fallback={(<Spinner />)}>
|
||||
<DiscussionContext.Provider value={discussionContextValue}>
|
||||
{!enableInContextSidebar && (<Header courseOrg={org} courseNumber={courseNumber} courseTitle={courseTitle} />)}
|
||||
<main className="container-fluid d-flex flex-column p-0 w-100" id="main" tabIndex="-1">
|
||||
<main className="container-fluid d-flex flex-column p-0 w-100 font-size" id="main" tabIndex="-1">
|
||||
{!enableInContextSidebar && <CourseTabsNavigation />}
|
||||
{(isEnrolled || !isUserLearner) && (
|
||||
<div
|
||||
@@ -120,7 +121,7 @@ const DiscussionsHome = () => {
|
||||
</Routes>
|
||||
</Suspense>
|
||||
)}
|
||||
{(courseStatus === LOADED) && (
|
||||
{isCourseStatusValid(courseStatus) && (
|
||||
!isEnrolled && isUserLearner ? (
|
||||
<Suspense fallback={(<Spinner />)}>
|
||||
<Routes>
|
||||
@@ -172,9 +173,9 @@ const DiscussionsHome = () => {
|
||||
</div>
|
||||
)
|
||||
)}
|
||||
{!enableInContextSidebar && (<DiscussionsProductTour />)}
|
||||
{!enableInContextSidebar && isEnrolled && (<DiscussionsProductTour />)}
|
||||
</main>
|
||||
{!enableInContextSidebar && <Footer />}
|
||||
{!enableInContextSidebar && <FooterSlot />}
|
||||
</DiscussionContext.Provider>
|
||||
</Suspense>
|
||||
);
|
||||
|
||||
@@ -90,8 +90,7 @@ describe('DiscussionsHome', () => {
|
||||
|
||||
test('full view should hide close button', async () => {
|
||||
renderComponent(`/${courseId}/topics`);
|
||||
expect(screen.queryByText(navigationBarMessages.allTopics.defaultMessage))
|
||||
.toBeInTheDocument();
|
||||
await screen.findByText(navigationBarMessages.allTopics.defaultMessage);
|
||||
expect(screen.queryByRole('button', { name: 'Close' }))
|
||||
.not
|
||||
.toBeInTheDocument();
|
||||
@@ -144,9 +143,7 @@ describe('DiscussionsHome', () => {
|
||||
await executeThunk(fetchCourseConfig(courseId), store.dispatch, store.getState);
|
||||
await renderComponent(`/${courseId}/${searchByEndPoint}`);
|
||||
|
||||
waitFor(() => {
|
||||
expect(screen.queryByText('Add a post')).toBeInTheDocument();
|
||||
});
|
||||
await screen.findByText('Add a post');
|
||||
});
|
||||
|
||||
it.each([
|
||||
@@ -170,9 +167,7 @@ describe('DiscussionsHome', () => {
|
||||
await executeThunk(fetchThreads(courseId), store.dispatch, store.getState);
|
||||
await renderComponent(`/${courseId}/${searchByEndPoint}`);
|
||||
|
||||
waitFor(() => {
|
||||
expect(screen.queryByText(result)).toBeInTheDocument();
|
||||
});
|
||||
await screen.findByText(result);
|
||||
});
|
||||
|
||||
it.each([
|
||||
@@ -199,9 +194,7 @@ describe('DiscussionsHome', () => {
|
||||
await executeThunk(fetchCourseTopicsV3(courseId), store.dispatch, store.getState);
|
||||
await renderComponent(`/${courseId}/${searchByEndPoint}`);
|
||||
|
||||
waitFor(() => {
|
||||
expect(screen.queryByText('No topic selected')).toBeInTheDocument();
|
||||
});
|
||||
await screen.findByText('No topic selected');
|
||||
},
|
||||
);
|
||||
|
||||
@@ -210,9 +203,7 @@ describe('DiscussionsHome', () => {
|
||||
await executeThunk(fetchCourseConfig(courseId), store.dispatch, store.getState);
|
||||
await renderComponent(`/${courseId}/learners`);
|
||||
|
||||
waitFor(() => {
|
||||
expect(screen.queryByText('Nothing here yet')).toBeInTheDocument();
|
||||
});
|
||||
await screen.findByText('Nothing here yet');
|
||||
});
|
||||
|
||||
it('should display post editor form when click on add a post button for posts', async () => {
|
||||
@@ -230,15 +221,15 @@ describe('DiscussionsHome', () => {
|
||||
|
||||
it('should display post editor form when click on add a post button in legacy topics view', async () => {
|
||||
axiosMock.onGet(getDiscussionsConfigUrl(courseId)).reply(200, {
|
||||
enable_in_context: false,
|
||||
enable_in_context: false, hasModerationPrivileges: true,
|
||||
});
|
||||
await executeThunk(fetchCourseConfig(courseId), store.dispatch, store.getState);
|
||||
await renderComponent(`/${courseId}/topics`);
|
||||
|
||||
await waitFor(() => expect(screen.queryByText('Nothing here yet')).toBeInTheDocument());
|
||||
await screen.findByText('Nothing here yet');
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryByText('Add a post'));
|
||||
fireEvent.click((await screen.findAllByText('Add a post'))[0]);
|
||||
});
|
||||
|
||||
await waitFor(() => expect(container.querySelector('.post-form')).toBeInTheDocument());
|
||||
@@ -247,27 +238,27 @@ describe('DiscussionsHome', () => {
|
||||
it('should display Add a post button for legacy topics view', async () => {
|
||||
await renderComponent(`/${courseId}/topics/topic-1`);
|
||||
|
||||
await waitFor(() => expect(screen.queryByText('Add a post')).toBeInTheDocument());
|
||||
await screen.findByText('Add a post');
|
||||
});
|
||||
|
||||
it('should display No post selected for legacy topics view', async () => {
|
||||
await setUpV1TopicsMockResponse();
|
||||
await renderComponent(`/${courseId}/topics/category-1-topic-1`);
|
||||
|
||||
await waitFor(() => expect(screen.queryByText('No post selected')).toBeInTheDocument());
|
||||
await screen.findByText('No post selected');
|
||||
});
|
||||
|
||||
it('should display No topic selected for legacy topics view', async () => {
|
||||
await setUpV1TopicsMockResponse();
|
||||
await renderComponent(`/${courseId}/topics`);
|
||||
|
||||
await waitFor(() => expect(screen.queryByText('No topic selected')).toBeInTheDocument());
|
||||
await screen.findByText('No topic selected');
|
||||
});
|
||||
|
||||
it('should display navigation tabs', async () => {
|
||||
renderComponent(`/${courseId}/topics`);
|
||||
|
||||
await waitFor(() => expect(screen.queryByText('Discussion')).toBeInTheDocument());
|
||||
await screen.findByText('Discussion');
|
||||
});
|
||||
|
||||
it('should display content unavailable message when the user is not enrolled in the course.', async () => {
|
||||
@@ -276,7 +267,7 @@ describe('DiscussionsHome', () => {
|
||||
|
||||
renderComponent();
|
||||
|
||||
await waitFor(() => expect(screen.queryByText('Content unavailable')).toBeInTheDocument());
|
||||
await screen.findByText('Content unavailable');
|
||||
});
|
||||
|
||||
it('should redirect to dashboard when the user clicks on the Enroll button.', async () => {
|
||||
|
||||
@@ -2,15 +2,15 @@ import React from 'react';
|
||||
|
||||
import { useIntl } from '@edx/frontend-platform/i18n';
|
||||
|
||||
import { useIsOnDesktop } from '../data/hooks';
|
||||
import { useIsOnTablet } from '../data/hooks';
|
||||
import messages from '../messages';
|
||||
import EmptyPage from './EmptyPage';
|
||||
|
||||
const EmptyLearners = () => {
|
||||
const intl = useIntl();
|
||||
const isOnDesktop = useIsOnDesktop();
|
||||
const isOnTabletorDesktop = useIsOnTablet();
|
||||
|
||||
if (!isOnDesktop) {
|
||||
if (!isOnTabletorDesktop) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import { useDispatch, useSelector } from 'react-redux';
|
||||
|
||||
import { useIntl } from '@edx/frontend-platform/i18n';
|
||||
|
||||
import { useIsOnDesktop } from '../data/hooks';
|
||||
import { useIsOnTablet } from '../data/hooks';
|
||||
import { selectAreThreadsFiltered, selectPostThreadCount } from '../data/selectors';
|
||||
import messages from '../messages';
|
||||
import { showPostEditor } from '../posts/data';
|
||||
@@ -15,7 +15,7 @@ import EmptyPage from './EmptyPage';
|
||||
const EmptyPosts = ({ subTitleMessage }) => {
|
||||
const intl = useIntl();
|
||||
const dispatch = useDispatch();
|
||||
const isOnDesktop = useIsOnDesktop();
|
||||
const isOnTabletorDesktop = useIsOnTablet();
|
||||
const isFiltered = useSelector(selectAreThreadsFiltered);
|
||||
const totalThreads = useSelector(selectPostThreadCount);
|
||||
|
||||
@@ -31,7 +31,7 @@ const EmptyPosts = ({ subTitleMessage }) => {
|
||||
|
||||
const isEmpty = [0, null].includes(totalThreads) && !isFiltered;
|
||||
|
||||
if (!(isOnDesktop || isEmpty)) {
|
||||
if (!(isOnTabletorDesktop || isEmpty)) {
|
||||
return null;
|
||||
} if (isEmpty) {
|
||||
subTitle = subTitleMessage;
|
||||
|
||||
@@ -5,7 +5,7 @@ import { useParams } from 'react-router-dom';
|
||||
|
||||
import { useIntl } from '@edx/frontend-platform/i18n';
|
||||
|
||||
import { useIsOnDesktop, useTotalTopicThreadCount } from '../data/hooks';
|
||||
import { useIsOnTablet, useTotalTopicThreadCount } from '../data/hooks';
|
||||
import { selectTopicThreadCount } from '../data/selectors';
|
||||
import messages from '../messages';
|
||||
import { showPostEditor } from '../posts/data';
|
||||
@@ -16,7 +16,7 @@ const EmptyTopics = () => {
|
||||
const intl = useIntl();
|
||||
const { topicId } = useParams();
|
||||
const dispatch = useDispatch();
|
||||
const isOnDesktop = useIsOnDesktop();
|
||||
const isOnTabletorDesktop = useIsOnTablet();
|
||||
const hasGlobalThreads = useTotalTopicThreadCount() > 0;
|
||||
const topicThreadCount = useSelector(selectTopicThreadCount(topicId));
|
||||
|
||||
@@ -30,7 +30,7 @@ const EmptyTopics = () => {
|
||||
let action;
|
||||
let actionText;
|
||||
|
||||
if (!isOnDesktop) {
|
||||
if (!isOnTabletorDesktop) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -66,15 +66,13 @@ describe('EmptyTopics', () => {
|
||||
|
||||
test('"no topic selected" text shown when viewing topics page', async () => {
|
||||
renderComponent(`/${courseId}/topics/`);
|
||||
expect(screen.queryByText(messages.emptyTitle.defaultMessage))
|
||||
.toBeInTheDocument();
|
||||
await screen.findByText(messages.emptyTitle.defaultMessage);
|
||||
});
|
||||
|
||||
test('"no post selected" text shown when viewing a specific topic', async () => {
|
||||
await setupMockResponse();
|
||||
renderComponent(`/${courseId}/topics/ncwtopic-3/`);
|
||||
|
||||
expect(screen.queryByText(messages.noPostSelected.defaultMessage))
|
||||
.toBeInTheDocument();
|
||||
await screen.findByText(messages.noPostSelected.defaultMessage);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -283,9 +283,9 @@ describe('InContext Topic Posts View', () => {
|
||||
await setupTopicsMockResponse(0, 0, 0);
|
||||
await renderComponent({ topicId: 'test-topic', category: 'test-category' });
|
||||
|
||||
await waitFor(() => expect(within(container).queryByText('Nothing here yet')).toBeInTheDocument());
|
||||
expect(within(container).queryByText('No topic exists')).toBeInTheDocument();
|
||||
expect(within(container).queryByText('Unnamed Topic')).toBeInTheDocument();
|
||||
await within(container).findByText('Nothing here yet');
|
||||
await within(container).findByText('No topic exists');
|
||||
await within(container).findByText('Unnamed Topic');
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ import {
|
||||
fireEvent, render, screen, waitFor,
|
||||
within,
|
||||
} from '@testing-library/react';
|
||||
import userEvent from '@testing-library/user-event';
|
||||
import MockAdapter from 'axios-mock-adapter';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { IntlProvider } from 'react-intl';
|
||||
@@ -165,9 +166,10 @@ describe('InContext Topics View', () => {
|
||||
it('The subsection should have a title name, be clickable, and have the stats', async () => {
|
||||
await setupMockResponse();
|
||||
renderComponent();
|
||||
await screen.findByTestId('redux-provider');
|
||||
const subsectionObject = coursewareTopics[0].children[0];
|
||||
const subSection = await container.querySelector(`[data-subsection-id=${subsectionObject.id}]`);
|
||||
const subSectionTitle = await within(subSection).queryByText(subsectionObject.displayName);
|
||||
const subSectionTitle = await within(subSection).findByText(subsectionObject.displayName);
|
||||
const statsList = await subSection.querySelectorAll('.icon-size');
|
||||
|
||||
expect(subSectionTitle).toBeInTheDocument();
|
||||
@@ -177,11 +179,12 @@ describe('InContext Topics View', () => {
|
||||
it('Subsection names should be clickable and redirected to the units lists', async () => {
|
||||
await setupMockResponse();
|
||||
renderComponent();
|
||||
await screen.findByTestId('redux-provider');
|
||||
|
||||
const subsectionObject = coursewareTopics[0].children[0];
|
||||
const subSection = await container.querySelector(`[data-subsection-id=${subsectionObject.id}]`);
|
||||
|
||||
await act(async () => { fireEvent.click(subSection); });
|
||||
await userEvent.click(subSection);
|
||||
await waitFor(async () => {
|
||||
const backButton = await screen.getByLabelText('Back to topics list');
|
||||
const topicsList = await screen.getByRole('list');
|
||||
@@ -198,9 +201,11 @@ describe('InContext Topics View', () => {
|
||||
it('The number of units should be matched with the actual unit length.', async () => {
|
||||
await setupMockResponse();
|
||||
renderComponent();
|
||||
await screen.findByTestId('redux-provider');
|
||||
|
||||
const subSection = await container.querySelector(`[data-subsection-id=${coursewareTopics[0].children[0].id}]`);
|
||||
|
||||
await act(async () => { fireEvent.click(subSection); });
|
||||
await userEvent.click(subSection);
|
||||
await waitFor(async () => {
|
||||
const units = await container.querySelectorAll('.discussion-topic');
|
||||
|
||||
@@ -211,12 +216,14 @@ describe('InContext Topics View', () => {
|
||||
it('A unit should have a title and should be clickable', async () => {
|
||||
await setupMockResponse();
|
||||
renderComponent();
|
||||
await screen.findByTestId('redux-provider');
|
||||
|
||||
const subSectionObject = coursewareTopics[0].children[0];
|
||||
const unitObject = subSectionObject.children[0];
|
||||
|
||||
const subSection = await container.querySelector(`[data-subsection-id=${subSectionObject.id}]`);
|
||||
|
||||
await act(async () => { fireEvent.click(subSection); });
|
||||
await userEvent.click(subSection);
|
||||
await waitFor(async () => {
|
||||
const unitElement = await screen.findByText(unitObject.name);
|
||||
const unitContainer = await container.querySelector(`[data-topic-id=${unitObject.id}]`);
|
||||
|
||||
@@ -6,7 +6,7 @@ import { useParams } from 'react-router-dom';
|
||||
import { useIntl } from '@edx/frontend-platform/i18n';
|
||||
|
||||
import DiscussionContext from '../../common/context';
|
||||
import { useIsOnDesktop } from '../../data/hooks';
|
||||
import { useIsOnTablet } from '../../data/hooks';
|
||||
import { selectPostThreadCount } from '../../data/selectors';
|
||||
import EmptyPage from '../../empty-posts/EmptyPage';
|
||||
import messages from '../../messages';
|
||||
@@ -17,7 +17,7 @@ const EmptyTopics = () => {
|
||||
const intl = useIntl();
|
||||
const { category, topicId } = useParams();
|
||||
const dispatch = useDispatch();
|
||||
const isOnDesktop = useIsOnDesktop();
|
||||
const isOnTabletorDesktop = useIsOnTablet();
|
||||
const { enableInContextSidebar } = useContext(DiscussionContext);
|
||||
const courseWareThreadsCount = useSelector(selectCourseWareThreadsCount(category));
|
||||
const topicThreadsCount = useSelector(selectPostThreadCount);
|
||||
@@ -34,7 +34,7 @@ const EmptyTopics = () => {
|
||||
let action;
|
||||
let actionText;
|
||||
|
||||
if (!isOnDesktop) {
|
||||
if (!isOnTabletorDesktop) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ const LearnerCard = ({ learner }) => {
|
||||
<div className="d-flex flex-column justify-content-start mw-100 flex-fill">
|
||||
<div className="d-flex align-items-center flex-fill">
|
||||
<div
|
||||
className="text-truncate font-weight-500 font-size-14 text-primary-500 font-style"
|
||||
className="text-truncate font-weight-500 text-primary-500 font-style"
|
||||
>
|
||||
{username}
|
||||
</div>
|
||||
|
||||
@@ -9,12 +9,10 @@ import { useLocation, useNavigate } from 'react-router-dom';
|
||||
import { useIntl } from '@edx/frontend-platform/i18n';
|
||||
|
||||
import Spinner from '../../components/Spinner';
|
||||
import {
|
||||
EndorsementStatus, PostsPages, ThreadType,
|
||||
} from '../../data/constants';
|
||||
import { PostsPages } from '../../data/constants';
|
||||
import useDispatchWithState from '../../data/hooks';
|
||||
import DiscussionContext from '../common/context';
|
||||
import { useIsOnDesktop } from '../data/hooks';
|
||||
import { useIsOnTablet } from '../data/hooks';
|
||||
import { EmptyPage } from '../empty-posts';
|
||||
import { Post } from '../posts';
|
||||
import { fetchThread } from '../posts/data/thunks';
|
||||
@@ -31,7 +29,7 @@ const PostCommentsView = () => {
|
||||
const intl = useIntl();
|
||||
const navigate = useNavigate();
|
||||
const location = useLocation();
|
||||
const isOnDesktop = useIsOnDesktop();
|
||||
const isOnTabletorDesktop = useIsOnTablet();
|
||||
const [addingResponse, setAddingResponse] = useState(false);
|
||||
const [isLoading, submitDispatch] = useDispatchWithState();
|
||||
const {
|
||||
@@ -86,7 +84,7 @@ const PostCommentsView = () => {
|
||||
|
||||
return (
|
||||
<PostCommentsContext.Provider value={postCommentsContextValue}>
|
||||
{!isOnDesktop && (
|
||||
{!isOnTabletorDesktop && (
|
||||
enableInContextSidebar ? (
|
||||
<>
|
||||
<div className="px-4 py-1.5 bg-white">
|
||||
@@ -127,15 +125,7 @@ const PostCommentsView = () => {
|
||||
</div>
|
||||
<Suspense fallback={(<Spinner />)}>
|
||||
{!!commentsCount && <CommentsSort />}
|
||||
{type === ThreadType.DISCUSSION && (
|
||||
<CommentsView endorsed={EndorsementStatus.DISCUSSION} />
|
||||
)}
|
||||
{type === ThreadType.QUESTION && (
|
||||
<>
|
||||
<CommentsView endorsed={EndorsementStatus.ENDORSED} />
|
||||
<CommentsView endorsed={EndorsementStatus.UNENDORSED} />
|
||||
</>
|
||||
)}
|
||||
<CommentsView threadType={type} />
|
||||
</Suspense>
|
||||
</PostCommentsContext.Provider>
|
||||
);
|
||||
|
||||
@@ -12,13 +12,13 @@ import { camelCaseObject, initializeMockApp } from '@edx/frontend-platform';
|
||||
import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';
|
||||
import { AppProvider } from '@edx/frontend-platform/react';
|
||||
|
||||
import { getApiBaseUrl } from '../../data/constants';
|
||||
import { getApiBaseUrl, ThreadType } from '../../data/constants';
|
||||
import { initializeStore } from '../../store';
|
||||
import executeThunk from '../../test-utils';
|
||||
import { getCohortsApiUrl } from '../cohorts/data/api';
|
||||
import fetchCourseCohorts from '../cohorts/data/thunks';
|
||||
import DiscussionContext from '../common/context';
|
||||
import { getCourseConfigApiUrl } from '../data/api';
|
||||
import { getCourseConfigApiUrl, getCourseSettingsApiUrl } from '../data/api';
|
||||
import fetchCourseConfig from '../data/thunks';
|
||||
import DiscussionContent from '../discussions-home/DiscussionContent';
|
||||
import { getThreadsApiUrl } from '../posts/data/api';
|
||||
@@ -37,6 +37,7 @@ import '../topics/data/__factories__';
|
||||
import '../cohorts/data/__factories__';
|
||||
|
||||
const courseConfigApiUrl = getCourseConfigApiUrl();
|
||||
const courseSettingsApiUrl = getCourseSettingsApiUrl();
|
||||
const commentsApiUrl = getCommentsApiUrl();
|
||||
const threadsApiUrl = getThreadsApiUrl();
|
||||
const discussionPostId = 'thread-1';
|
||||
@@ -50,10 +51,10 @@ let testLocation;
|
||||
let container;
|
||||
let unmount;
|
||||
|
||||
async function mockAxiosReturnPagedComments(threadId, endorsed = false, page = 1, count = 2) {
|
||||
async function mockAxiosReturnPagedComments(threadId, threadType = ThreadType.DISCUSSION, page = 1, count = 2) {
|
||||
axiosMock.onGet(commentsApiUrl).reply(200, Factory.build('commentsResult', { can_delete: true }, {
|
||||
threadId,
|
||||
endorsed,
|
||||
threadType,
|
||||
pageSize: 1,
|
||||
count,
|
||||
childCount: page === 1 ? 2 : 0,
|
||||
@@ -76,6 +77,7 @@ async function mockAxiosReturnPagedCommentsResponses() {
|
||||
Factory.build('commentsResult', null, {
|
||||
threadId: discussionPostId,
|
||||
parentId,
|
||||
endorsed: false,
|
||||
page,
|
||||
pageSize: 1,
|
||||
count: 2,
|
||||
@@ -104,7 +106,7 @@ async function setupCourseConfig() {
|
||||
{ code: 'reason-2', label: 'reason 2' },
|
||||
],
|
||||
});
|
||||
axiosMock.onGet(`${courseConfigApiUrl}${courseId}/settings`).reply(200, {});
|
||||
axiosMock.onGet(`${courseSettingsApiUrl}${courseId}/settings`).reply(200, {});
|
||||
await executeThunk(fetchCourseConfig(courseId), store.dispatch, store.getState);
|
||||
}
|
||||
|
||||
@@ -201,6 +203,7 @@ describe('ThreadView', () => {
|
||||
id: commentId,
|
||||
rendered_body: rawBody,
|
||||
raw_body: rawBody,
|
||||
endorsed: false,
|
||||
})];
|
||||
});
|
||||
axiosMock.onPost(commentsApiUrl).reply(({ data }) => {
|
||||
@@ -209,6 +212,7 @@ describe('ThreadView', () => {
|
||||
rendered_body: rawBody,
|
||||
raw_body: rawBody,
|
||||
thread_id: threadId,
|
||||
endorsed: false,
|
||||
})];
|
||||
});
|
||||
axiosMock.onGet(`${courseConfigApiUrl}${courseId}/`).reply(200, { isPostingEnabled: true });
|
||||
@@ -230,9 +234,9 @@ describe('ThreadView', () => {
|
||||
expect(JSON.parse(axiosMock.history.patch[axiosMock.history.patch.length - 1].data)).toMatchObject(data);
|
||||
}
|
||||
|
||||
it('should not allow posting a comment on a closed post', async () => {
|
||||
it('should not allow posting a reply on a closed post', async () => {
|
||||
axiosMock.reset();
|
||||
await mockAxiosReturnPagedComments(closedPostId, true);
|
||||
await mockAxiosReturnPagedComments(closedPostId, ThreadType.QUESTION);
|
||||
await waitFor(() => renderComponent(closedPostId, true));
|
||||
const comments = await waitFor(() => screen.findAllByTestId('comment-comment-4'));
|
||||
const hoverCard = within(comments[0]).getByTestId('hover-card-comment-4');
|
||||
@@ -288,7 +292,7 @@ describe('ThreadView', () => {
|
||||
expect(screen.queryByTestId('tinymce-editor')).not.toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('should allow posting a response', async () => {
|
||||
it('should allow posting a comment', async () => {
|
||||
await waitFor(() => renderComponent(discussionPostId));
|
||||
|
||||
const post = await screen.findByTestId('post-thread-1');
|
||||
@@ -540,8 +544,11 @@ describe('ThreadView', () => {
|
||||
// Wait for the content to load
|
||||
const comment = await waitFor(() => screen.findByTestId('comment-comment-1'));
|
||||
const hoverCard = within(comment).getByTestId('hover-card-comment-1');
|
||||
|
||||
const endorseButton = await waitFor(() => within(hoverCard).getByRole('button', { name: /Endorse/i }));
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(within(hoverCard).getByRole('button', { name: /Endorse/i }));
|
||||
fireEvent.click(endorseButton);
|
||||
});
|
||||
expect(axiosMock.history.patch).toHaveLength(2);
|
||||
expect(JSON.parse(axiosMock.history.patch[1].data)).toMatchObject({ endorsed: true });
|
||||
@@ -591,7 +598,7 @@ describe('ThreadView', () => {
|
||||
|
||||
it('pressing load more button will load next page of comments', async () => {
|
||||
await waitFor(() => renderComponent(discussionPostId));
|
||||
await mockAxiosReturnPagedComments(discussionPostId, false, 2);
|
||||
await mockAxiosReturnPagedComments(discussionPostId, ThreadType.DISCUSSION, 2);
|
||||
|
||||
const loadMoreButton = await findLoadMoreCommentsButton();
|
||||
await act(async () => {
|
||||
@@ -604,7 +611,7 @@ describe('ThreadView', () => {
|
||||
|
||||
it('newly loaded comments are appended to the old ones', async () => {
|
||||
await waitFor(() => renderComponent(discussionPostId));
|
||||
await mockAxiosReturnPagedComments(discussionPostId, false, 2);
|
||||
await mockAxiosReturnPagedComments(discussionPostId, ThreadType.DISCUSSION, 2);
|
||||
|
||||
const loadMoreButton = await findLoadMoreCommentsButton();
|
||||
await act(async () => {
|
||||
@@ -622,7 +629,7 @@ describe('ThreadView', () => {
|
||||
const findLoadMoreCommentsButtons = () => screen.findByTestId('load-more-comments');
|
||||
|
||||
it('initially loads only the first page', async () => {
|
||||
await mockAxiosReturnPagedComments(questionPostId);
|
||||
await mockAxiosReturnPagedComments(questionPostId, ThreadType.QUESTION);
|
||||
act(() => renderComponent(questionPostId));
|
||||
|
||||
expect(await screen.findByTestId('comment-comment-4'))
|
||||
@@ -633,7 +640,7 @@ describe('ThreadView', () => {
|
||||
});
|
||||
|
||||
it('pressing load more button will load next page of comments', async () => {
|
||||
await mockAxiosReturnPagedComments(questionPostId);
|
||||
await mockAxiosReturnPagedComments(questionPostId, ThreadType.QUESTION);
|
||||
await waitFor(() => renderComponent(questionPostId));
|
||||
|
||||
const loadMoreButton = await findLoadMoreCommentsButtons();
|
||||
@@ -644,7 +651,7 @@ describe('ThreadView', () => {
|
||||
expect(await screen.queryByTestId('comment-comment-5'))
|
||||
.not
|
||||
.toBeInTheDocument();
|
||||
await mockAxiosReturnPagedComments(questionPostId, false, 2, 1);
|
||||
await mockAxiosReturnPagedComments(questionPostId, ThreadType.QUESTION, 2, 1);
|
||||
await act(async () => {
|
||||
fireEvent.click(loadMoreButton);
|
||||
});
|
||||
@@ -664,7 +671,152 @@ describe('ThreadView', () => {
|
||||
expect(screen.queryByTestId('reply-comment-3')).not.toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('pressing load more button will load next page of responses', async () => {
|
||||
it('successfully added comment in the draft.', async () => {
|
||||
await waitFor(() => renderComponent(discussionPostId));
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryByText('Add comment'));
|
||||
});
|
||||
|
||||
await waitFor(() => {
|
||||
fireEvent.change(screen.queryByTestId('tinymce-editor'), { target: { value: 'Draft comment!' } });
|
||||
});
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryByText('Cancel'));
|
||||
});
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryByText('Add comment'));
|
||||
});
|
||||
|
||||
expect(screen.queryByText('Draft comment!')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('successfully updated comment in the draft.', async () => {
|
||||
await waitFor(() => renderComponent(discussionPostId));
|
||||
|
||||
const comment = screen.queryByTestId('reply-comment-2');
|
||||
const actionBtn = comment.querySelector('button[aria-label="Actions menu"]');
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(actionBtn);
|
||||
});
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryByTestId('edit'));
|
||||
});
|
||||
|
||||
await waitFor(() => {
|
||||
fireEvent.change(screen.queryByTestId('tinymce-editor'), { target: { value: 'Draft comment!' } });
|
||||
});
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryByText('Cancel'));
|
||||
});
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(actionBtn);
|
||||
});
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryByTestId('edit'));
|
||||
});
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryByText('Submit'));
|
||||
});
|
||||
|
||||
await waitFor(() => expect(screen.queryByText('Draft comment!')).toBeInTheDocument());
|
||||
});
|
||||
|
||||
it('successfully removed comment from the draft.', async () => {
|
||||
await waitFor(() => renderComponent(discussionPostId));
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryByText('Add comment'));
|
||||
});
|
||||
|
||||
await waitFor(() => {
|
||||
fireEvent.change(screen.queryByTestId('tinymce-editor'), { target: { value: 'Draft comment 123!' } });
|
||||
});
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryByText('Submit'));
|
||||
});
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryAllByText('Add comment')[0]);
|
||||
});
|
||||
|
||||
expect(screen.queryByTestId('tinymce-editor').value).toBe('');
|
||||
});
|
||||
|
||||
it('successfully added response in the draft.', async () => {
|
||||
await waitFor(() => renderComponent(discussionPostId));
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryByText('Add response'));
|
||||
});
|
||||
|
||||
await waitFor(() => {
|
||||
fireEvent.change(screen.queryByTestId('tinymce-editor'), { target: { value: 'Draft Response!' } });
|
||||
});
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryByText('Cancel'));
|
||||
});
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryByText('Add response'));
|
||||
});
|
||||
|
||||
expect(screen.queryByText('Draft Response!')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('successfully removed response from the draft.', async () => {
|
||||
await waitFor(() => renderComponent(discussionPostId));
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryByText('Add response'));
|
||||
});
|
||||
|
||||
await waitFor(() => {
|
||||
fireEvent.change(screen.queryByTestId('tinymce-editor'), { target: { value: 'Draft Response!' } });
|
||||
});
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryByText('Submit'));
|
||||
});
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryByText('Add response'));
|
||||
});
|
||||
|
||||
expect(screen.queryByTestId('tinymce-editor').value).toBe('');
|
||||
});
|
||||
|
||||
it('successfully maintain response for the specific post in the draft.', async () => {
|
||||
await waitFor(() => renderComponent(discussionPostId));
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryByText('Add response'));
|
||||
});
|
||||
|
||||
await waitFor(() => {
|
||||
fireEvent.change(screen.queryByTestId('tinymce-editor'), { target: { value: 'Hello, world!' } });
|
||||
});
|
||||
|
||||
await waitFor(() => renderComponent('thread-2'));
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(screen.queryAllByText('Add response')[0]);
|
||||
});
|
||||
|
||||
expect(screen.queryByText('Hello, world!')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('pressing load more button will load next page of replies', async () => {
|
||||
await waitFor(() => renderComponent(discussionPostId));
|
||||
|
||||
const loadMoreButton = await findLoadMoreCommentsResponsesButton();
|
||||
@@ -674,7 +826,7 @@ describe('ThreadView', () => {
|
||||
await screen.findByTestId('reply-comment-3');
|
||||
});
|
||||
|
||||
it('newly loaded responses are appended to the old ones', async () => {
|
||||
it('newly loaded replies are appended to the old ones', async () => {
|
||||
await waitFor(() => renderComponent(discussionPostId));
|
||||
|
||||
const loadMoreButton = await findLoadMoreCommentsResponsesButton();
|
||||
@@ -687,7 +839,7 @@ describe('ThreadView', () => {
|
||||
expect(screen.queryByTestId('reply-comment-2')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('load more button is hidden when no more responses pages to load', async () => {
|
||||
it('load more button is hidden when no more replies pages to load', async () => {
|
||||
await waitFor(() => renderComponent(discussionPostId));
|
||||
|
||||
const loadMoreButton = await findLoadMoreCommentsResponsesButton();
|
||||
|
||||
@@ -5,7 +5,7 @@ import { Button, Spinner } from '@openedx/paragon';
|
||||
|
||||
import { useIntl } from '@edx/frontend-platform/i18n';
|
||||
|
||||
import { EndorsementStatus } from '../../../data/constants';
|
||||
import { ThreadType } from '../../../data/constants';
|
||||
import { useUserPostingEnabled } from '../../data/hooks';
|
||||
import { isLastElementOfList } from '../../utils';
|
||||
import { usePostComments } from '../data/hooks';
|
||||
@@ -13,7 +13,7 @@ import messages from '../messages';
|
||||
import PostCommentsContext from '../postCommentsContext';
|
||||
import { Comment, ResponseEditor } from './comment';
|
||||
|
||||
const CommentsView = ({ endorsed }) => {
|
||||
const CommentsView = ({ threadType }) => {
|
||||
const intl = useIntl();
|
||||
const [addingResponse, setAddingResponse] = useState(false);
|
||||
const { isClosed } = useContext(PostCommentsContext);
|
||||
@@ -25,7 +25,7 @@ const CommentsView = ({ endorsed }) => {
|
||||
hasMorePages,
|
||||
isLoading,
|
||||
handleLoadMoreResponses,
|
||||
} = usePostComments(endorsed);
|
||||
} = usePostComments(threadType);
|
||||
|
||||
const handleAddResponse = useCallback(() => {
|
||||
setAddingResponse(true);
|
||||
@@ -45,7 +45,7 @@ const CommentsView = ({ endorsed }) => {
|
||||
</div>
|
||||
), []);
|
||||
|
||||
const handleComments = useCallback((postCommentsIds, showLoadMoreResponses = false) => (
|
||||
const handleComments = useCallback((postCommentsIds) => (
|
||||
<div className="mx-4" role="list">
|
||||
{postCommentsIds.map((commentId) => (
|
||||
<Comment
|
||||
@@ -54,72 +54,66 @@ const CommentsView = ({ endorsed }) => {
|
||||
marginBottom={isLastElementOfList(postCommentsIds, commentId)}
|
||||
/>
|
||||
))}
|
||||
{hasMorePages && !isLoading && !showLoadMoreResponses && (
|
||||
<Button
|
||||
onClick={handleLoadMoreResponses}
|
||||
variant="link"
|
||||
block="true"
|
||||
className="px-4 mt-3 border-0 line-height-24 py-0 mb-2 font-style font-weight-500 font-size-14"
|
||||
data-testid="load-more-comments"
|
||||
>
|
||||
{intl.formatMessage(messages.loadMoreResponses)}
|
||||
</Button>
|
||||
)}
|
||||
{isLoading && !showLoadMoreResponses && (
|
||||
<div className="mb-2 mt-3 d-flex justify-content-center">
|
||||
<Spinner animation="border" variant="primary" className="spinner-dimensions" />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
), [hasMorePages, isLoading, handleLoadMoreResponses]);
|
||||
|
||||
return (
|
||||
((hasMorePages && isLoading) || !isLoading) && (
|
||||
<>
|
||||
{endorsedCommentsIds.length > 0 && (
|
||||
<>
|
||||
{endorsedCommentsIds.length > 0 && (
|
||||
<>
|
||||
{handleDefinition(messages.endorsedResponseCount, endorsedCommentsIds.length)}
|
||||
{endorsed === EndorsementStatus.DISCUSSION
|
||||
? handleComments(endorsedCommentsIds, true)
|
||||
: handleComments(endorsedCommentsIds, false)}
|
||||
</>
|
||||
)}
|
||||
{endorsed !== EndorsementStatus.ENDORSED && (
|
||||
<>
|
||||
{handleDefinition(messages.responseCount, unEndorsedCommentsIds.length)}
|
||||
{unEndorsedCommentsIds.length === 0 && <br />}
|
||||
{handleComments(unEndorsedCommentsIds, false)}
|
||||
{(isUserPrivilegedInPostingRestriction && !!unEndorsedCommentsIds.length && !isClosed) && (
|
||||
<div className="mx-4">
|
||||
{!addingResponse && (
|
||||
<Button
|
||||
variant="plain"
|
||||
block="true"
|
||||
className="card mb-4 px-0 border-0 py-10px mt-2 font-style font-weight-500
|
||||
line-height-24 font-size-14 text-primary-500"
|
||||
onClick={handleAddResponse}
|
||||
data-testid="add-response"
|
||||
>
|
||||
{intl.formatMessage(messages.addResponse)}
|
||||
</Button>
|
||||
)}
|
||||
<ResponseEditor
|
||||
addWrappingDiv
|
||||
addingResponse={addingResponse}
|
||||
handleCloseEditor={handleCloseResponseEditor}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
{handleDefinition(messages.endorsedResponseCount, endorsedCommentsIds.length)}
|
||||
{handleComments(endorsedCommentsIds)}
|
||||
</>
|
||||
)}
|
||||
{handleDefinition(messages.responseCount, unEndorsedCommentsIds.length)}
|
||||
{unEndorsedCommentsIds.length > 0 && handleComments(unEndorsedCommentsIds)}
|
||||
{hasMorePages && !isLoading && (!!unEndorsedCommentsIds.length || !!endorsedCommentsIds.length) && (
|
||||
<Button
|
||||
onClick={handleLoadMoreResponses}
|
||||
variant="link"
|
||||
block="true"
|
||||
className="px-4 mt-3 border-0 line-height-24 py-0 mb-2 font-style font-weight-500"
|
||||
data-testid="load-more-comments"
|
||||
>
|
||||
{intl.formatMessage(messages.loadMoreResponses)}
|
||||
</Button>
|
||||
)}
|
||||
{isLoading && (
|
||||
<div className="mb-2 mt-3 d-flex justify-content-center">
|
||||
<Spinner animation="border" variant="primary" className="spinner-dimensions" />
|
||||
</div>
|
||||
)}
|
||||
{(isUserPrivilegedInPostingRestriction && (!!unEndorsedCommentsIds.length || !!endorsedCommentsIds.length)
|
||||
&& !isClosed) && (
|
||||
<div className="mx-4">
|
||||
{!addingResponse && (
|
||||
<Button
|
||||
variant="plain"
|
||||
block="true"
|
||||
className="card mb-4 px-0 border-0 py-10px mt-2 font-style font-weight-500
|
||||
line-height-24 text-primary-500"
|
||||
onClick={handleAddResponse}
|
||||
data-testid="add-response"
|
||||
>
|
||||
{intl.formatMessage(messages.addResponse)}
|
||||
</Button>
|
||||
)}
|
||||
<ResponseEditor
|
||||
addWrappingDiv
|
||||
addingResponse={addingResponse}
|
||||
handleCloseEditor={handleCloseResponseEditor}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
)
|
||||
);
|
||||
};
|
||||
|
||||
CommentsView.propTypes = {
|
||||
endorsed: PropTypes.oneOf([
|
||||
EndorsementStatus.ENDORSED, EndorsementStatus.UNENDORSED, EndorsementStatus.DISCUSSION,
|
||||
threadType: PropTypes.oneOf([
|
||||
ThreadType.DISCUSSION, ThreadType.QUESTION,
|
||||
]).isRequired,
|
||||
};
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ const Comment = ({
|
||||
}, []);
|
||||
|
||||
const handleCommentEndorse = useCallback(async () => {
|
||||
await dispatch(editComment(id, { endorsed: !endorsed }, ContentActions.ENDORSE));
|
||||
await dispatch(editComment(id, { endorsed: !endorsed }));
|
||||
await dispatch(fetchThread(threadId, courseId));
|
||||
}, [id, endorsed, threadId]);
|
||||
|
||||
@@ -104,6 +104,10 @@ const Comment = ({
|
||||
hideReportConfirmation();
|
||||
}, [abuseFlagged, id, hideReportConfirmation]);
|
||||
|
||||
const handleCommentLike = useCallback(async () => {
|
||||
await dispatch(editComment(id, { voted: !voted }));
|
||||
}, [id, voted]);
|
||||
|
||||
const actionHandlers = useMemo(() => ({
|
||||
[ContentActions.EDIT_CONTENT]: handleEditContent,
|
||||
[ContentActions.ENDORSE]: handleCommentEndorse,
|
||||
@@ -124,10 +128,6 @@ const Comment = ({
|
||||
}
|
||||
}, [isUserPrivilegedInPostingRestriction]);
|
||||
|
||||
const handleCommentLike = useCallback(async () => {
|
||||
await dispatch(editComment(id, { voted: !voted }));
|
||||
}, [id, voted]);
|
||||
|
||||
const handleCloseEditor = useCallback(() => {
|
||||
setEditing(false);
|
||||
}, []);
|
||||
@@ -249,7 +249,7 @@ const Comment = ({
|
||||
onClick={handleLoadMoreComments}
|
||||
variant="link"
|
||||
block="true"
|
||||
className="font-size-14 line-height-24 font-style pt-10px border-0 font-weight-500 pb-0"
|
||||
className="line-height-24 font-style pt-10px border-0 font-weight-500 pb-0"
|
||||
data-testid="load-more-comments-responses"
|
||||
>
|
||||
{intl.formatMessage(messages.loadMoreComments)}
|
||||
@@ -267,7 +267,7 @@ const Comment = ({
|
||||
) : (
|
||||
!isClosed && isUserPrivilegedInPostingRestriction && (inlineReplies.length >= 5) && (
|
||||
<Button
|
||||
className="d-flex flex-grow mt-2 font-size-14 font-style font-weight-500 text-primary-500 add-comment-btn rounded-0"
|
||||
className="d-flex flex-grow mt-2 font-style font-weight-500 text-primary-500 add-comment-btn rounded-0"
|
||||
variant="plain"
|
||||
style={{ height: '36px' }}
|
||||
onClick={handleAddCommentReply}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React, {
|
||||
useCallback, useContext, useEffect, useRef,
|
||||
useCallback, useContext, useEffect, useRef, useState,
|
||||
} from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
@@ -22,7 +22,9 @@ import {
|
||||
selectUserIsGroupTa,
|
||||
selectUserIsStaff,
|
||||
} from '../../../data/selectors';
|
||||
import { formikCompatibleHandler, isFormikFieldInvalid } from '../../../utils';
|
||||
import { extractContent, formikCompatibleHandler, isFormikFieldInvalid } from '../../../utils';
|
||||
import { useDraftContent } from '../../data/hooks';
|
||||
import { setDraftComments, setDraftResponses } from '../../data/slices';
|
||||
import { addComment, editComment } from '../../data/thunks';
|
||||
import messages from '../../messages';
|
||||
|
||||
@@ -45,6 +47,8 @@ const CommentEditor = ({
|
||||
const userIsStaff = useSelector(selectUserIsStaff);
|
||||
const { editReasons } = useSelector(selectModerationSettings);
|
||||
const [submitting, dispatch] = useDispatchWithState();
|
||||
const [editorContent, setEditorContent] = useState();
|
||||
const { addDraftContent, getDraftContent, removeDraftContent } = useDraftContent();
|
||||
|
||||
const canDisplayEditReason = (edit
|
||||
&& (userHasModerationPrivileges || userIsGroupTa || userIsStaff)
|
||||
@@ -62,7 +66,7 @@ const CommentEditor = ({
|
||||
});
|
||||
|
||||
const initialValues = {
|
||||
comment: rawBody,
|
||||
comment: editorContent,
|
||||
editReasonCode: lastEdit?.reasonCode || (userIsStaff && canDisplayEditReason ? 'violates-guidelines' : undefined),
|
||||
};
|
||||
|
||||
@@ -71,6 +75,15 @@ const CommentEditor = ({
|
||||
onCloseEditor();
|
||||
}, [onCloseEditor, initialValues]);
|
||||
|
||||
const deleteEditorContent = useCallback(async () => {
|
||||
const { updatedResponses, updatedComments } = removeDraftContent(parentId, id, threadId);
|
||||
if (parentId) {
|
||||
await dispatch(setDraftComments(updatedComments));
|
||||
} else {
|
||||
await dispatch(setDraftResponses(updatedResponses));
|
||||
}
|
||||
}, [parentId, id, threadId, setDraftComments, setDraftResponses]);
|
||||
|
||||
const saveUpdatedComment = useCallback(async (values, { resetForm }) => {
|
||||
if (id) {
|
||||
const payload = {
|
||||
@@ -86,6 +99,7 @@ const CommentEditor = ({
|
||||
editorRef.current.plugins.autosave.removeDraft();
|
||||
}
|
||||
handleCloseEditor(resetForm);
|
||||
deleteEditorContent();
|
||||
}, [id, threadId, parentId, enableInContextSidebar, handleCloseEditor]);
|
||||
// The editorId is used to autosave contents to localstorage. This format means that the autosave is scoped to
|
||||
// the current comment id, or the current comment parent or the curren thread.
|
||||
@@ -97,11 +111,33 @@ const CommentEditor = ({
|
||||
}
|
||||
}, [formRef]);
|
||||
|
||||
useEffect(() => {
|
||||
const draftHtml = getDraftContent(parentId, threadId, id) || rawBody;
|
||||
setEditorContent(draftHtml);
|
||||
}, [parentId, threadId, id]);
|
||||
|
||||
const saveDraftContent = async (content) => {
|
||||
const draftDataContent = extractContent(content);
|
||||
|
||||
const { updatedResponses, updatedComments } = addDraftContent(
|
||||
draftDataContent,
|
||||
parentId,
|
||||
id,
|
||||
threadId,
|
||||
);
|
||||
if (parentId) {
|
||||
await dispatch(setDraftComments(updatedComments));
|
||||
} else {
|
||||
await dispatch(setDraftResponses(updatedResponses));
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<Formik
|
||||
initialValues={initialValues}
|
||||
validationSchema={validationSchema}
|
||||
onSubmit={saveUpdatedComment}
|
||||
enableReinitialize
|
||||
>
|
||||
{({
|
||||
values,
|
||||
@@ -151,7 +187,10 @@ const CommentEditor = ({
|
||||
id={editorId}
|
||||
value={values.comment}
|
||||
onEditorChange={formikCompatibleHandler(handleChange, 'comment')}
|
||||
onBlur={formikCompatibleHandler(handleBlur, 'comment')}
|
||||
onBlur={(content) => {
|
||||
formikCompatibleHandler(handleChange, 'comment');
|
||||
saveDraftContent(content);
|
||||
}}
|
||||
/>
|
||||
{isFormikFieldInvalid('comment', {
|
||||
errors,
|
||||
|
||||
@@ -54,7 +54,7 @@ const Reply = ({ responseId }) => {
|
||||
}, []);
|
||||
|
||||
const handleReplyEndorse = useCallback(() => {
|
||||
dispatch(editComment(id, { endorsed: !endorsed }, ContentActions.ENDORSE));
|
||||
dispatch(editComment(id, { endorsed: !endorsed }));
|
||||
}, [endorsed, id]);
|
||||
|
||||
const handleAbusedFlag = useCallback(() => {
|
||||
@@ -129,9 +129,9 @@ const Reply = ({ responseId }) => {
|
||||
</div>
|
||||
<div
|
||||
className="bg-light-300 pl-4 pt-2.5 pr-2.5 pb-10px flex-fill"
|
||||
style={{ borderRadius: '0rem 0.375rem 0.375rem' }}
|
||||
style={{ borderRadius: '0rem 0.375rem 0.375rem', maxWidth: 'calc(100% - 50px)' }}
|
||||
>
|
||||
<div className="d-flex flex-row justify-content-between" style={{ height: '24px' }}>
|
||||
<div className="d-flex flex-row justify-content-between">
|
||||
<AuthorLabel
|
||||
author={author}
|
||||
authorLabel={authorLabel}
|
||||
|
||||
@@ -6,7 +6,7 @@ Factory.define('comment')
|
||||
.sequence('rendered_body', ['endorsed'], (idx, endorsed) => `Some contents for <b>${endorsed ? 'endorsed ' : 'unendorsed '}comment number ${idx}</b>.`)
|
||||
.attr('thread_id', null, 'test-thread')
|
||||
.option('endorsedBy', null, null)
|
||||
.attr('endorsed', ['endorsedBy'], (endorsedBy) => !!endorsedBy)
|
||||
.attr('endorsed', ['endorsed'], (endorsed) => endorsed)
|
||||
.attr('endorsed_by', ['endorsedBy'], (endorsedBy) => endorsedBy)
|
||||
.attr('endorsed_by_label', ['endorsedBy'], (endorsedBy) => (endorsedBy ? 'Staff' : null))
|
||||
.attr('endorsed_at', ['endorsedBy'], (endorsedBy) => (endorsedBy ? (new Date()).toISOString() : null))
|
||||
@@ -38,7 +38,7 @@ Factory.define('commentsResult')
|
||||
.option('pageSize', null, 5)
|
||||
.option('threadId', null, 'test-thread')
|
||||
.option('parentId', null, null)
|
||||
.option('endorsed', null, null)
|
||||
.option('endorsed', false, false)
|
||||
.option('childCount', null, 0)
|
||||
.attr('pagination', ['threadId', 'count', 'page', 'pageSize'], (threadId, count, page, pageSize) => {
|
||||
const numPages = Math.ceil(count / pageSize);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { ensureConfig, getConfig, snakeCaseObject } from '@edx/frontend-platform';
|
||||
import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';
|
||||
|
||||
import { EndorsementValue } from '../../../data/constants';
|
||||
import { ThreadType } from '../../../data/constants';
|
||||
|
||||
ensureConfig([
|
||||
'LMS_BASE_URL',
|
||||
@@ -20,7 +20,7 @@ export const getCommentsApiUrl = () => `${getConfig().LMS_BASE_URL}/api/discussi
|
||||
* @returns {Promise<{}>}
|
||||
*/
|
||||
export const getThreadComments = async (threadId, {
|
||||
endorsed,
|
||||
threadType,
|
||||
page,
|
||||
pageSize,
|
||||
reverseOrder,
|
||||
@@ -29,12 +29,12 @@ export const getThreadComments = async (threadId, {
|
||||
} = {}) => {
|
||||
const params = snakeCaseObject({
|
||||
threadId,
|
||||
endorsed: EndorsementValue[endorsed],
|
||||
page,
|
||||
pageSize,
|
||||
reverseOrder,
|
||||
requestedFields: 'profile_image',
|
||||
enableInContextSidebar,
|
||||
mergeQuestionTypeResponses: threadType === ThreadType.QUESTION ? true : null,
|
||||
});
|
||||
|
||||
const { data } = await getAuthenticatedHttpClient().get(getCommentsApiUrl(), { params: { ...params, signal } });
|
||||
|
||||
@@ -3,6 +3,7 @@ import {
|
||||
} from 'react';
|
||||
|
||||
import { useDispatch, useSelector } from 'react-redux';
|
||||
import { v4 as uuidv4 } from 'uuid';
|
||||
|
||||
import { sendTrackEvent } from '@edx/frontend-platform/analytics';
|
||||
|
||||
@@ -13,7 +14,8 @@ import { selectThread } from '../../posts/data/selectors';
|
||||
import { markThreadAsRead } from '../../posts/data/thunks';
|
||||
import { filterPosts } from '../../utils';
|
||||
import {
|
||||
selectCommentSortOrder, selectThreadComments, selectThreadCurrentPage, selectThreadHasMorePages,
|
||||
selectCommentSortOrder, selectDraftComments, selectDraftResponses,
|
||||
selectThreadComments, selectThreadCurrentPage, selectThreadHasMorePages,
|
||||
} from './selectors';
|
||||
import { fetchThreadComments } from './thunks';
|
||||
|
||||
@@ -40,13 +42,13 @@ export function usePost(postId) {
|
||||
return thread || {};
|
||||
}
|
||||
|
||||
export function usePostComments(endorsed = null) {
|
||||
export function usePostComments(threadType) {
|
||||
const { enableInContextSidebar, postId } = useContext(DiscussionContext);
|
||||
const [isLoading, dispatch] = useDispatchWithState();
|
||||
const comments = useSelector(selectThreadComments(postId, endorsed));
|
||||
const comments = useSelector(selectThreadComments(postId));
|
||||
const reverseOrder = useSelector(selectCommentSortOrder);
|
||||
const hasMorePages = useSelector(selectThreadHasMorePages(postId, endorsed));
|
||||
const currentPage = useSelector(selectThreadCurrentPage(postId, endorsed));
|
||||
const hasMorePages = useSelector(selectThreadHasMorePages(postId));
|
||||
const currentPage = useSelector(selectThreadCurrentPage(postId));
|
||||
|
||||
const endorsedCommentsIds = useMemo(() => (
|
||||
[...filterPosts(comments, 'endorsed')].map(comment => comment.id)
|
||||
@@ -58,19 +60,19 @@ export function usePostComments(endorsed = null) {
|
||||
|
||||
const handleLoadMoreResponses = useCallback(async () => {
|
||||
const params = {
|
||||
endorsed,
|
||||
threadType,
|
||||
page: currentPage + 1,
|
||||
reverseOrder,
|
||||
};
|
||||
await dispatch(fetchThreadComments(postId, params));
|
||||
trackLoadMoreEvent(postId, params);
|
||||
}, [currentPage, endorsed, postId, reverseOrder]);
|
||||
}, [currentPage, threadType, postId, reverseOrder]);
|
||||
|
||||
useEffect(() => {
|
||||
const abortController = new AbortController();
|
||||
|
||||
dispatch(fetchThreadComments(postId, {
|
||||
endorsed,
|
||||
threadType,
|
||||
page: 1,
|
||||
reverseOrder,
|
||||
enableInContextSidebar,
|
||||
@@ -80,7 +82,7 @@ export function usePostComments(endorsed = null) {
|
||||
return () => {
|
||||
abortController.abort();
|
||||
};
|
||||
}, [postId, endorsed, reverseOrder, enableInContextSidebar]);
|
||||
}, [postId, threadType, reverseOrder, enableInContextSidebar]);
|
||||
|
||||
return {
|
||||
endorsedCommentsIds,
|
||||
@@ -102,3 +104,73 @@ export function useCommentsCount(postId) {
|
||||
|
||||
return commentsLength;
|
||||
}
|
||||
|
||||
export const useDraftContent = () => {
|
||||
const comments = useSelector(selectDraftComments);
|
||||
const responses = useSelector(selectDraftResponses);
|
||||
|
||||
const getObjectByParentId = (data, parentId, isComment, id) => Object.values(data)
|
||||
.find(draft => (isComment ? draft.parentId === parentId && (id ? draft.id === id : draft.isNewContent === true)
|
||||
: draft.threadId === parentId && (id ? draft.id === id : draft.isNewContent === true)));
|
||||
|
||||
const updateDraftData = (draftData, newDraftObject) => ({
|
||||
...draftData,
|
||||
[newDraftObject.id]: newDraftObject,
|
||||
});
|
||||
|
||||
const addDraftContent = (content, parentId, id, threadId) => {
|
||||
const data = parentId ? comments : responses;
|
||||
const draftParentId = parentId || threadId;
|
||||
const isComment = !!parentId;
|
||||
const existingObj = getObjectByParentId(data, draftParentId, isComment, id);
|
||||
const newObject = existingObj
|
||||
? { ...existingObj, content }
|
||||
: {
|
||||
threadId,
|
||||
content,
|
||||
parentId,
|
||||
id: id || uuidv4(),
|
||||
isNewContent: !id,
|
||||
};
|
||||
|
||||
const updatedComments = parentId ? updateDraftData(comments, newObject) : comments;
|
||||
const updatedResponses = !parentId ? updateDraftData(responses, newObject) : responses;
|
||||
|
||||
return { updatedComments, updatedResponses };
|
||||
};
|
||||
|
||||
const getDraftContent = (parentId, threadId, id) => {
|
||||
if (id) {
|
||||
return parentId ? comments?.[id]?.content : responses?.[id]?.content;
|
||||
}
|
||||
|
||||
const data = parentId ? comments : responses;
|
||||
const draftParentId = parentId || threadId;
|
||||
const isComment = !!parentId;
|
||||
|
||||
return getObjectByParentId(data, draftParentId, isComment, id)?.content;
|
||||
};
|
||||
|
||||
const removeItem = (draftData, objId) => {
|
||||
const { [objId]: _, ...newDraftData } = draftData;
|
||||
return newDraftData;
|
||||
};
|
||||
|
||||
const updateContent = (items, itemId, parentId, isComment) => {
|
||||
const itemObj = itemId ? items[itemId] : getObjectByParentId(items, parentId, isComment, itemId);
|
||||
return itemObj ? removeItem(items, itemObj.id) : items;
|
||||
};
|
||||
|
||||
const removeDraftContent = (parentId, id, threadId) => {
|
||||
const updatedResponses = !parentId ? updateContent(responses, id, threadId, false) : responses;
|
||||
const updatedComments = parentId ? updateContent(comments, id, parentId, true) : comments;
|
||||
|
||||
return { updatedResponses, updatedComments };
|
||||
};
|
||||
|
||||
return {
|
||||
addDraftContent,
|
||||
getDraftContent,
|
||||
removeDraftContent,
|
||||
};
|
||||
};
|
||||
|
||||
@@ -4,7 +4,7 @@ import { Factory } from 'rosie';
|
||||
import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';
|
||||
import { initializeMockApp } from '@edx/frontend-platform/testing';
|
||||
|
||||
import { EndorsementStatus } from '../../../data/constants';
|
||||
import { ThreadType } from '../../../data/constants';
|
||||
import { initializeStore } from '../../../store';
|
||||
import executeThunk from '../../../test-utils';
|
||||
import { getCommentsApiUrl } from './api';
|
||||
@@ -39,37 +39,23 @@ describe('Comments/Responses data layer tests', () => {
|
||||
});
|
||||
|
||||
test.each([
|
||||
{
|
||||
threadType: 'discussion',
|
||||
endorsed: EndorsementStatus.DISCUSSION,
|
||||
},
|
||||
{
|
||||
threadType: 'question',
|
||||
endorsed: EndorsementStatus.UNENDORSED,
|
||||
},
|
||||
{
|
||||
threadType: 'question',
|
||||
endorsed: EndorsementStatus.ENDORSED,
|
||||
},
|
||||
])('successfully processes comments for \'$threadType\' thread with endorsed=$endorsed', async ({
|
||||
endorsed,
|
||||
}) => {
|
||||
ThreadType.DISCUSSION,
|
||||
ThreadType.QUESTION,
|
||||
])('successfully processes comments for %s type thread', async (threadType) => {
|
||||
const threadId = 'test-thread';
|
||||
axiosMock.onGet(commentsApiUrl)
|
||||
.reply(200, Factory.build('commentsResult'));
|
||||
|
||||
await executeThunk(fetchThreadComments(threadId, { endorsed }), store.dispatch, store.getState);
|
||||
await executeThunk(fetchThreadComments(threadId, { threadType }), store.dispatch, store.getState);
|
||||
|
||||
expect(store.getState().comments.commentsInThreads)
|
||||
.toEqual({ 'test-thread': { [endorsed]: ['comment-1', 'comment-2', 'comment-3'] } });
|
||||
.toEqual({ 'test-thread': ['comment-1', 'comment-2', 'comment-3'] });
|
||||
expect(store.getState().comments.pagination)
|
||||
.toEqual({
|
||||
'test-thread': {
|
||||
[endorsed]: {
|
||||
currentPage: 1,
|
||||
totalPages: 1,
|
||||
hasMorePages: false,
|
||||
},
|
||||
currentPage: 1,
|
||||
totalPages: 1,
|
||||
hasMorePages: false,
|
||||
},
|
||||
});
|
||||
expect(Object.keys(store.getState().comments.commentsById))
|
||||
@@ -82,7 +68,7 @@ describe('Comments/Responses data layer tests', () => {
|
||||
.toEqual('test-thread');
|
||||
});
|
||||
|
||||
test('successfully processes comment responses', async () => {
|
||||
test('successfully processes comment replies', async () => {
|
||||
const threadId = 'test-thread';
|
||||
const commentId = 'comment-1';
|
||||
axiosMock.onGet(commentsApiUrl)
|
||||
@@ -101,7 +87,7 @@ describe('Comments/Responses data layer tests', () => {
|
||||
.toEqual({ 'comment-1': ['comment-4', 'comment-5', 'comment-6'] });
|
||||
});
|
||||
|
||||
test('successfully handles response creation for discussion type threads', async () => {
|
||||
test('successfully handles comment creation for threads', async () => {
|
||||
const threadId = 'test-thread';
|
||||
const content = 'Test comment';
|
||||
axiosMock.onGet(commentsApiUrl)
|
||||
@@ -119,21 +105,19 @@ describe('Comments/Responses data layer tests', () => {
|
||||
await executeThunk(addComment(content, threadId, null), store.dispatch, store.getState);
|
||||
|
||||
expect(store.getState().comments.commentsInThreads[threadId])
|
||||
.toEqual({
|
||||
[EndorsementStatus.DISCUSSION]: [
|
||||
'comment-1',
|
||||
'comment-2',
|
||||
'comment-3',
|
||||
'comment-4',
|
||||
],
|
||||
});
|
||||
.toEqual([
|
||||
'comment-1',
|
||||
'comment-2',
|
||||
'comment-3',
|
||||
'comment-4',
|
||||
]);
|
||||
expect(Object.keys(store.getState().comments.commentsById))
|
||||
.toEqual(['comment-1', 'comment-2', 'comment-3', 'comment-4']);
|
||||
expect(store.getState().comments.commentsById['comment-4'].threadId)
|
||||
.toEqual(threadId);
|
||||
});
|
||||
|
||||
test('successfully handles reply creation for discussion type threads', async () => {
|
||||
test('successfully handles reply creation for threads', async () => {
|
||||
const threadId = 'test-thread';
|
||||
const parentId = 'comment-1';
|
||||
const content = 'Test comment';
|
||||
@@ -156,13 +140,11 @@ describe('Comments/Responses data layer tests', () => {
|
||||
await executeThunk(addComment(content, threadId, null), store.dispatch, store.getState);
|
||||
|
||||
expect(store.getState().comments.commentsInThreads[threadId])
|
||||
.toEqual({
|
||||
[EndorsementStatus.DISCUSSION]: [
|
||||
'comment-1',
|
||||
'comment-2',
|
||||
'comment-3',
|
||||
],
|
||||
});
|
||||
.toEqual([
|
||||
'comment-1',
|
||||
'comment-2',
|
||||
'comment-3',
|
||||
]);
|
||||
expect(Object.keys(store.getState().comments.commentsById))
|
||||
.toEqual(['comment-1', 'comment-2', 'comment-3', 'comment-4']);
|
||||
expect(store.getState().comments.commentsInComments[parentId])
|
||||
@@ -173,54 +155,6 @@ describe('Comments/Responses data layer tests', () => {
|
||||
.toEqual(parentId);
|
||||
});
|
||||
|
||||
test('successfully handles comment creation for question type threads', async () => {
|
||||
const threadId = 'test-thread';
|
||||
const content = 'Test comment';
|
||||
axiosMock.onGet(commentsApiUrl)
|
||||
.reply(200, Factory.build('commentsResult', null, { endorsed: false }));
|
||||
await executeThunk(
|
||||
fetchThreadComments(threadId, { endorsed: EndorsementStatus.UNENDORSED }),
|
||||
store.dispatch,
|
||||
store.getState,
|
||||
);
|
||||
axiosMock.onGet(commentsApiUrl)
|
||||
.reply(200, Factory.build('commentsResult', null, { endorsed: true }));
|
||||
await executeThunk(
|
||||
fetchThreadComments(threadId, { endorsed: EndorsementStatus.ENDORSED }),
|
||||
store.dispatch,
|
||||
store.getState,
|
||||
);
|
||||
|
||||
axiosMock.onPost(commentsApiUrl)
|
||||
.reply(200, Factory.build('comment', {
|
||||
thread_id: threadId,
|
||||
raw_body: content,
|
||||
rendered_body: content,
|
||||
}));
|
||||
|
||||
await executeThunk(addComment(content, threadId, null), store.dispatch, store.getState);
|
||||
|
||||
expect(store.getState().comments.commentsInThreads[threadId])
|
||||
.toEqual({
|
||||
[EndorsementStatus.UNENDORSED]: [
|
||||
'comment-1',
|
||||
'comment-2',
|
||||
'comment-3',
|
||||
// Newly-added comment
|
||||
'comment-7',
|
||||
],
|
||||
[EndorsementStatus.ENDORSED]: [
|
||||
'comment-4',
|
||||
'comment-5',
|
||||
'comment-6',
|
||||
],
|
||||
});
|
||||
expect(Object.keys(store.getState().comments.commentsById))
|
||||
.toEqual(['comment-1', 'comment-2', 'comment-3', 'comment-4', 'comment-5', 'comment-6', 'comment-7']);
|
||||
expect(store.getState().comments.commentsById['comment-7'].threadId)
|
||||
.toEqual(threadId);
|
||||
});
|
||||
|
||||
test('successfully handles comment edits', async () => {
|
||||
const threadId = 'test-thread';
|
||||
const commentId = 'comment-1';
|
||||
@@ -271,7 +205,7 @@ describe('Comments/Responses data layer tests', () => {
|
||||
.toContain(commentId);
|
||||
});
|
||||
|
||||
test('correctly handles comment responses pagination after posting a new response', async () => {
|
||||
test('correctly handles comment replies pagination after posting a new reply', async () => {
|
||||
const threadId = 'test-thread';
|
||||
const commentId = 'comment-1';
|
||||
|
||||
@@ -327,15 +261,9 @@ describe('Comments/Responses data layer tests', () => {
|
||||
});
|
||||
|
||||
test.each([
|
||||
{
|
||||
threadType: 'discussion',
|
||||
endorsed: EndorsementStatus.DISCUSSION,
|
||||
},
|
||||
{
|
||||
threadType: 'unendorsed',
|
||||
endorsed: EndorsementStatus.UNENDORSED,
|
||||
},
|
||||
])('correctly handles `$threadType` thread comments pagination after posting a new comment', async ({ endorsed }) => {
|
||||
ThreadType.DISCUSSION,
|
||||
ThreadType.QUESTION,
|
||||
])('correctly handles %s thread comments pagination after posting a new comment', async (threadType) => {
|
||||
const threadId = 'test-thread';
|
||||
|
||||
// Build all comments first, so we can paginate over them and they
|
||||
@@ -348,7 +276,7 @@ describe('Comments/Responses data layer tests', () => {
|
||||
results: allComments.slice(0, 3),
|
||||
pagination: { count: 4, numPages: 2 },
|
||||
});
|
||||
await executeThunk(fetchThreadComments(threadId, { endorsed }), store.dispatch, store.getState);
|
||||
await executeThunk(fetchThreadComments(threadId, { threadType }), store.dispatch, store.getState);
|
||||
|
||||
// Post new comment
|
||||
const comment = Factory.build('comment', { thread_id: threadId });
|
||||
@@ -365,10 +293,10 @@ describe('Comments/Responses data layer tests', () => {
|
||||
results: allComments.slice(3, 6),
|
||||
pagination: { count: 6, numPages: 2 },
|
||||
});
|
||||
await executeThunk(fetchThreadComments(threadId, { page: 2, endorsed }), store.dispatch, store.getState);
|
||||
await executeThunk(fetchThreadComments(threadId, { page: 2, threadType }), store.dispatch, store.getState);
|
||||
|
||||
// sorting is implemented on backend
|
||||
expect(store.getState().comments.commentsInThreads[threadId][endorsed])
|
||||
expect(store.getState().comments.commentsInThreads[threadId])
|
||||
.toEqual([
|
||||
'comment-1',
|
||||
'comment-2',
|
||||
|
||||
@@ -8,9 +8,9 @@ export const selectCommentOrResponseById = commentOrResponseId => createSelector
|
||||
comments => comments[commentOrResponseId],
|
||||
);
|
||||
|
||||
export const selectThreadComments = (threadId, endorsed = null) => createSelector(
|
||||
export const selectThreadComments = (threadId) => createSelector(
|
||||
[
|
||||
state => state.comments.commentsInThreads[threadId]?.[endorsed] || [],
|
||||
state => state.comments.commentsInThreads[threadId] || [],
|
||||
selectCommentsById,
|
||||
],
|
||||
mapIdToComment,
|
||||
@@ -28,12 +28,12 @@ export const selectCommentResponses = commentId => createSelector(
|
||||
mapIdToComment,
|
||||
);
|
||||
|
||||
export const selectThreadHasMorePages = (threadId, endorsed = null) => (
|
||||
state => state.comments.pagination[threadId]?.[endorsed]?.hasMorePages || false
|
||||
export const selectThreadHasMorePages = (threadId) => (
|
||||
state => state.comments.pagination[threadId]?.hasMorePages || false
|
||||
);
|
||||
|
||||
export const selectThreadCurrentPage = (threadId, endorsed = null) => (
|
||||
state => state.comments.pagination[threadId]?.[endorsed]?.currentPage || null
|
||||
export const selectThreadCurrentPage = (threadId) => (
|
||||
state => state.comments.pagination[threadId]?.currentPage || null
|
||||
);
|
||||
|
||||
export const selectCommentHasMorePages = commentId => (
|
||||
@@ -47,3 +47,7 @@ export const selectCommentCurrentPage = commentId => (
|
||||
export const selectCommentsStatus = state => state.comments.status;
|
||||
|
||||
export const selectCommentSortOrder = state => state.comments.sortOrder;
|
||||
|
||||
export const selectDraftComments = state => state.comments.draftComments;
|
||||
|
||||
export const selectDraftResponses = state => state.comments.draftResponses;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { createSlice } from '@reduxjs/toolkit';
|
||||
|
||||
import { EndorsementStatus, RequestStatus } from '../../../data/constants';
|
||||
import { RequestStatus } from '../../../data/constants';
|
||||
|
||||
const commentsSlice = createSlice({
|
||||
name: 'comments',
|
||||
@@ -22,6 +22,8 @@ const commentsSlice = createSlice({
|
||||
pagination: {},
|
||||
responsesPagination: {},
|
||||
sortOrder: true,
|
||||
draftResponses: {},
|
||||
draftComments: {},
|
||||
},
|
||||
reducers: {
|
||||
fetchCommentsRequest: (state) => (
|
||||
@@ -31,17 +33,12 @@ const commentsSlice = createSlice({
|
||||
}
|
||||
),
|
||||
fetchCommentsSuccess: (state, { payload }) => {
|
||||
const { threadId, page, endorsed } = payload;
|
||||
const { threadId, page } = payload;
|
||||
|
||||
const newState = { ...state };
|
||||
|
||||
newState.status = RequestStatus.SUCCESSFUL;
|
||||
|
||||
newState.commentsInThreads = {
|
||||
...newState.commentsInThreads,
|
||||
[threadId]: newState.commentsInThreads[threadId] || {},
|
||||
};
|
||||
|
||||
newState.pagination = {
|
||||
...newState.pagination,
|
||||
[threadId]: newState.pagination[threadId] || {},
|
||||
@@ -50,23 +47,16 @@ const commentsSlice = createSlice({
|
||||
if (page === 1) {
|
||||
newState.commentsInThreads = {
|
||||
...newState.commentsInThreads,
|
||||
[threadId]: {
|
||||
...newState.commentsInThreads[threadId],
|
||||
[endorsed]: payload.commentsInThreads[threadId] || [],
|
||||
},
|
||||
[threadId]: payload.commentsInThreads[threadId] ? [...payload.commentsInThreads[threadId]] : [],
|
||||
};
|
||||
} else {
|
||||
newState.commentsInThreads = {
|
||||
...newState.commentsInThreads,
|
||||
[threadId]: {
|
||||
...newState.commentsInThreads[threadId],
|
||||
[endorsed]: [
|
||||
...new Set([
|
||||
...(newState.commentsInThreads[threadId][endorsed] || []),
|
||||
...(payload.commentsInThreads[threadId] || []),
|
||||
]),
|
||||
],
|
||||
},
|
||||
[threadId]: [
|
||||
...new Set([
|
||||
...(newState.commentsInThreads[threadId] || []),
|
||||
...(payload.commentsInThreads[threadId] || []),
|
||||
]),
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
@@ -74,11 +64,9 @@ const commentsSlice = createSlice({
|
||||
...newState.pagination,
|
||||
[threadId]: {
|
||||
...newState.pagination[threadId],
|
||||
[endorsed]: {
|
||||
currentPage: payload.page,
|
||||
totalPages: payload.pagination.numPages,
|
||||
hasMorePages: Boolean(payload.pagination.next),
|
||||
},
|
||||
currentPage: payload.page,
|
||||
totalPages: payload.pagination.numPages,
|
||||
hasMorePages: Boolean(payload.pagination.next),
|
||||
},
|
||||
};
|
||||
|
||||
@@ -181,21 +169,10 @@ const commentsSlice = createSlice({
|
||||
],
|
||||
};
|
||||
} else {
|
||||
const threadComments = newState.commentsInThreads[payload.threadId] || {};
|
||||
const endorsementStatus = threadComments[EndorsementStatus.DISCUSSION]
|
||||
? EndorsementStatus.DISCUSSION
|
||||
: EndorsementStatus.UNENDORSED;
|
||||
|
||||
const updatedThreadComments = {
|
||||
...threadComments,
|
||||
[endorsementStatus]: [
|
||||
...(threadComments[endorsementStatus] || []),
|
||||
payload.id,
|
||||
],
|
||||
};
|
||||
const threadComments = newState.commentsInThreads[payload.threadId] || [];
|
||||
newState.commentsInThreads = {
|
||||
...newState.commentsInThreads,
|
||||
[payload.threadId]: updatedThreadComments,
|
||||
[payload.threadId]: [...threadComments, payload.id],
|
||||
};
|
||||
}
|
||||
|
||||
@@ -231,30 +208,7 @@ const commentsSlice = createSlice({
|
||||
[payload.id]: payload,
|
||||
},
|
||||
commentDraft: null,
|
||||
}
|
||||
),
|
||||
updateCommentsList: (state, { payload }) => {
|
||||
const { id: commentId, threadId, endorsed } = payload;
|
||||
const commentAddListtype = endorsed ? EndorsementStatus.ENDORSED : EndorsementStatus.UNENDORSED;
|
||||
const commentRemoveListType = !endorsed ? EndorsementStatus.ENDORSED : EndorsementStatus.UNENDORSED;
|
||||
|
||||
const updatedThread = { ...state.commentsInThreads[threadId] };
|
||||
|
||||
updatedThread[commentRemoveListType] = updatedThread[commentRemoveListType]
|
||||
?.filter(item => item !== commentId)
|
||||
?? [];
|
||||
updatedThread[commentAddListtype] = [
|
||||
...(updatedThread[commentAddListtype] || []), commentId,
|
||||
];
|
||||
|
||||
return {
|
||||
...state,
|
||||
commentsInThreads: {
|
||||
...state.commentsInThreads,
|
||||
[threadId]: updatedThread,
|
||||
},
|
||||
};
|
||||
},
|
||||
}),
|
||||
deleteCommentRequest: (state) => (
|
||||
{
|
||||
...state,
|
||||
@@ -285,12 +239,9 @@ const commentsSlice = createSlice({
|
||||
commentsById: { ...state.commentsById },
|
||||
};
|
||||
|
||||
[EndorsementStatus.DISCUSSION, EndorsementStatus.UNENDORSED, EndorsementStatus.ENDORSED].forEach((endorsed) => {
|
||||
newState.commentsInThreads[threadId] = {
|
||||
...newState.commentsInThreads[threadId],
|
||||
[endorsed]: newState.commentsInThreads[threadId]?.[endorsed]?.filter(item => item !== commentId),
|
||||
};
|
||||
});
|
||||
newState.commentsInThreads[threadId] = [
|
||||
...newState.commentsInThreads[threadId]?.filter(item => item !== commentId) || [],
|
||||
];
|
||||
|
||||
if (parentId) {
|
||||
newState.commentsInComments[parentId] = newState.commentsInComments[parentId].filter(
|
||||
@@ -308,6 +259,18 @@ const commentsSlice = createSlice({
|
||||
sortOrder: payload,
|
||||
}
|
||||
),
|
||||
setDraftComments: (state, { payload }) => (
|
||||
{
|
||||
...state,
|
||||
draftComments: payload,
|
||||
}
|
||||
),
|
||||
setDraftResponses: (state, { payload }) => (
|
||||
{
|
||||
...state,
|
||||
draftResponses: payload,
|
||||
}
|
||||
),
|
||||
},
|
||||
});
|
||||
|
||||
@@ -328,12 +291,13 @@ export const {
|
||||
updateCommentFailed,
|
||||
updateCommentRequest,
|
||||
updateCommentSuccess,
|
||||
updateCommentsList,
|
||||
deleteCommentDenied,
|
||||
deleteCommentFailed,
|
||||
deleteCommentRequest,
|
||||
deleteCommentSuccess,
|
||||
setCommentSortOrder,
|
||||
setDraftComments,
|
||||
setDraftResponses,
|
||||
} = commentsSlice.actions;
|
||||
|
||||
export const commentsReducer = commentsSlice.reducer;
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { camelCaseObject } from '@edx/frontend-platform';
|
||||
import { logError } from '@edx/frontend-platform/logging';
|
||||
|
||||
import { ContentActions, EndorsementStatus } from '../../../data/constants';
|
||||
import { getHttpErrorStatus } from '../../utils';
|
||||
import {
|
||||
deleteComment, getCommentResponses, getThreadComments, postComment, updateComment,
|
||||
@@ -26,7 +25,6 @@ import {
|
||||
updateCommentDenied,
|
||||
updateCommentFailed,
|
||||
updateCommentRequest,
|
||||
updateCommentsList,
|
||||
updateCommentSuccess,
|
||||
} from './slices';
|
||||
|
||||
@@ -78,7 +76,7 @@ export function fetchThreadComments(
|
||||
{
|
||||
page = 1,
|
||||
reverseOrder,
|
||||
endorsed = EndorsementStatus.DISCUSSION,
|
||||
threadType,
|
||||
enableInContextSidebar,
|
||||
signal,
|
||||
} = {},
|
||||
@@ -87,11 +85,10 @@ export function fetchThreadComments(
|
||||
try {
|
||||
dispatch(fetchCommentsRequest());
|
||||
const data = await getThreadComments(threadId, {
|
||||
page, reverseOrder, endorsed, enableInContextSidebar, signal,
|
||||
page, reverseOrder, threadType, enableInContextSidebar, signal,
|
||||
});
|
||||
dispatch(fetchCommentsSuccess({
|
||||
...normaliseComments(camelCaseObject(data)),
|
||||
endorsed,
|
||||
page,
|
||||
threadId,
|
||||
}));
|
||||
@@ -127,15 +124,12 @@ export function fetchCommentResponses(commentId, { page = 1, reverseOrder = true
|
||||
};
|
||||
}
|
||||
|
||||
export function editComment(commentId, comment, action = null) {
|
||||
export function editComment(commentId, comment) {
|
||||
return async (dispatch) => {
|
||||
try {
|
||||
dispatch(updateCommentRequest({ commentId }));
|
||||
const data = await updateComment(commentId, comment);
|
||||
dispatch(updateCommentSuccess(camelCaseObject(data)));
|
||||
if (action === ContentActions.ENDORSE) {
|
||||
dispatch(updateCommentsList(camelCaseObject(data)));
|
||||
}
|
||||
} catch (error) {
|
||||
if (getHttpErrorStatus(error) === 403) {
|
||||
dispatch(updateCommentDenied());
|
||||
|
||||
@@ -11,9 +11,9 @@ const usePostList = (ids) => {
|
||||
|
||||
const sortedIds = useMemo(() => {
|
||||
posts.forEach((post) => {
|
||||
if (post.pinned) {
|
||||
if (post && post.pinned) {
|
||||
pinnedPostsIds.push(post.id);
|
||||
} else {
|
||||
} else if (post) {
|
||||
unpinnedPostsIds.push(post.id);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -185,7 +185,7 @@ const threadsSlice = createSlice({
|
||||
},
|
||||
pages: !payload.anonymousToPeers
|
||||
? [
|
||||
...[payload.id].concat(state.pages[0]) || [],
|
||||
...(state.pages[0] ? [payload.id].concat(state.pages[0]) : []),
|
||||
...state.pages.slice(1),
|
||||
]
|
||||
: [...state.pages],
|
||||
|
||||
@@ -18,6 +18,7 @@ import { AppContext } from '@edx/frontend-platform/react';
|
||||
|
||||
import { TinyMCEEditor } from '../../../components';
|
||||
import FormikErrorFeedback from '../../../components/FormikErrorFeedback';
|
||||
import PostHelpPanel from '../../../components/PostHelpPanel';
|
||||
import PostPreviewPanel from '../../../components/PostPreviewPanel';
|
||||
import useDispatchWithState from '../../../data/hooks';
|
||||
import selectCourseCohorts from '../../cohorts/data/selectors';
|
||||
@@ -241,7 +242,7 @@ const PostEditor = ({
|
||||
resetForm,
|
||||
}) => (
|
||||
<Form className="m-4 card p-4 post-form" onSubmit={handleSubmit}>
|
||||
<h4 className="mb-4 font-style font-size-16" style={{ lineHeight: '16px' }}>
|
||||
<h4 className="mb-4 font-style" style={{ lineHeight: '16px' }}>
|
||||
{editExisting
|
||||
? intl.formatMessage(messages.editPostHeading)
|
||||
: intl.formatMessage(messages.addPostHeading)}
|
||||
@@ -409,6 +410,7 @@ const PostEditor = ({
|
||||
onEditorChange={formikCompatibleHandler(handleChange, 'comment')}
|
||||
onBlur={formikCompatibleHandler(handleBlur, 'comment')}
|
||||
/>
|
||||
<PostHelpPanel />
|
||||
<FormikErrorFeedback name="comment" />
|
||||
</div>
|
||||
<PostPreviewPanel htmlNode={values.comment} isPost editExisting={editExisting} />
|
||||
@@ -423,7 +425,7 @@ const PostEditor = ({
|
||||
onBlur={handleBlur}
|
||||
className="mr-4.5"
|
||||
>
|
||||
<span className="font-size-14">
|
||||
<span>
|
||||
{intl.formatMessage(messages.followPost)}
|
||||
</span>
|
||||
</Form.Checkbox>
|
||||
@@ -436,7 +438,7 @@ const PostEditor = ({
|
||||
onChange={handleChange}
|
||||
onBlur={handleBlur}
|
||||
>
|
||||
<span className="font-size-14">
|
||||
<span>
|
||||
{intl.formatMessage(messages.anonymousToPeersPost)}
|
||||
</span>
|
||||
</Form.Checkbox>
|
||||
|
||||
@@ -368,5 +368,34 @@ describe('PostEditor', () => {
|
||||
expect(container.querySelector('[data-testid="hide-preview-button"]')).not.toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
it('should show Help Panel', async () => {
|
||||
await renderComponent(true, `/${courseId}/posts/${threadId}/edit`);
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(container.querySelector('[data-testid="help-button"]'));
|
||||
});
|
||||
|
||||
await waitFor(() => {
|
||||
expect(container.querySelector('[data-testid="hide-help-button"]')).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
it('should hide Help Panel', async () => {
|
||||
await renderComponent(true, `/${courseId}/posts/${threadId}/edit`);
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(container.querySelector('[data-testid="help-button"]'));
|
||||
});
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(container.querySelector('[data-testid="hide-help-button"]'));
|
||||
});
|
||||
|
||||
await waitFor(() => {
|
||||
expect(container.querySelector('[data-testid="help-button"]')).toBeInTheDocument();
|
||||
expect(container.querySelector('[data-testid="hide-help-button"]')).not.toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -116,6 +116,36 @@ const messages = defineMessages({
|
||||
defaultMessage: 'Show preview',
|
||||
description: 'show preview button text to allow user to see their post content.',
|
||||
},
|
||||
showHelpIcon: {
|
||||
id: 'discussions.editor.posts.showHelp.icon',
|
||||
defaultMessage: 'Show Help',
|
||||
description: 'show help icon to allow user to see important documentation.',
|
||||
},
|
||||
discussionHelpHeader: {
|
||||
id: 'discussions.editor.posts.discussionHelpHeader',
|
||||
defaultMessage: 'Discussions help',
|
||||
description: 'header text for post help section.',
|
||||
},
|
||||
discussionHelpDescription: {
|
||||
id: 'discussions.editor.posts.discussionHelpDescription',
|
||||
defaultMessage: 'Course discussions give you the opportunity to start conversations, ask questions, and interact with other learners. See the links below to learn more:',
|
||||
description: 'description message for post help section.',
|
||||
},
|
||||
discussionHelpCourseParticipation: {
|
||||
id: 'discussions.editor.posts.discussionHelpCourseParticipation',
|
||||
defaultMessage: 'Participating in course discussions',
|
||||
description: 'Documentation link title for participating in course discussions.',
|
||||
},
|
||||
discussionHelpMathExpressions: {
|
||||
id: 'discussions.editor.posts.discussionHelpMathExpressions',
|
||||
defaultMessage: 'Entering math expressions in course discussions',
|
||||
description: 'Documentation link title for entering math expressions in course discussions.',
|
||||
},
|
||||
discussionHelpTooltip: {
|
||||
id: 'discussions.editor.posts.discussionHelpTooltip',
|
||||
defaultMessage: 'Learn more about MathJax & LaTeX',
|
||||
description: 'Tooltip help message for documentation help.',
|
||||
},
|
||||
actionsAlt: {
|
||||
id: 'discussions.actions.label',
|
||||
defaultMessage: 'Actions menu',
|
||||
|
||||
@@ -44,7 +44,7 @@ export const ActionItem = React.memo(({
|
||||
// eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
|
||||
tabIndex={value === selected ? '0' : '-1'}
|
||||
>
|
||||
<Icon src={Check} className={classNames('text-success mr-2', { invisible: value !== selected })} />
|
||||
<Icon src={Check} className={classNames('text-success dropdown-icon-dimensions', { invisible: value !== selected })} />
|
||||
<Form.Radio id={id} className="sr-only sr-only-focusable" value={value} tabIndex="0">
|
||||
{label}
|
||||
</Form.Radio>
|
||||
|
||||
@@ -85,6 +85,10 @@ const Post = ({ handleAddResponseButton }) => {
|
||||
updateExistingThread(postId, { pinned: !pinned }),
|
||||
), [postId, pinned]);
|
||||
|
||||
const handlePostLike = useCallback(() => {
|
||||
dispatch(updateExistingThread(postId, { voted: !voted }));
|
||||
}, [postId, voted]);
|
||||
|
||||
const handlePostReport = useCallback(() => {
|
||||
if (abuseFlagged) {
|
||||
dispatch(updateExistingThread(postId, { flagged: !abuseFlagged }));
|
||||
@@ -109,10 +113,6 @@ const Post = ({ handleAddResponseButton }) => {
|
||||
hideClosePostModal();
|
||||
}, [postId, hideClosePostModal]);
|
||||
|
||||
const handlePostLike = useCallback(() => {
|
||||
dispatch(updateExistingThread(postId, { voted: !voted }));
|
||||
}, [postId, voted]);
|
||||
|
||||
const handlePostFollow = useCallback(() => {
|
||||
dispatch(updateExistingThread(postId, { following: !following }));
|
||||
}, [postId, following]);
|
||||
@@ -188,10 +188,7 @@ const Post = ({ handleAddResponseButton }) => {
|
||||
</div>
|
||||
{(topicContext || topic) && (
|
||||
<div
|
||||
className={classNames(
|
||||
'mt-14px font-style font-size-12',
|
||||
{ 'w-100': enableInContextSidebar, 'mb-1': !displayPostFooter },
|
||||
)}
|
||||
className={classNames('mt-14px font-style', { 'w-100': enableInContextSidebar, 'mb-1': !displayPostFooter })}
|
||||
style={{ lineHeight: '20px' }}
|
||||
>
|
||||
<span className="text-gray-500" style={{ lineHeight: '20px' }}>
|
||||
@@ -206,13 +203,9 @@ const Post = ({ handleAddResponseButton }) => {
|
||||
)}
|
||||
>
|
||||
{(topicContext && !topic) ? (
|
||||
<>
|
||||
<span className="w-auto">{topicContext.chapterName}</span>
|
||||
<span className="mx-1">/</span>
|
||||
<span className="w-auto">{topicContext.verticalName}</span>
|
||||
<span className="mx-1">/</span>
|
||||
<span className="w-auto">{topicContext.unitName}</span>
|
||||
</>
|
||||
<span>
|
||||
{topicContext.chapterName} / {topicContext.verticalName} / {topicContext.unitName}
|
||||
</span>
|
||||
) : (
|
||||
getTopicInfo(topic)
|
||||
)}
|
||||
|
||||
@@ -89,13 +89,13 @@ const PostLink = ({
|
||||
<div className="d-flex align-items-center pb-0 mb-0 flex-fill">
|
||||
<div className="text-truncate mr-1">
|
||||
<span className={classNames(
|
||||
'font-weight-500 font-size-14 text-primary-500 font-style align-bottom mr-1',
|
||||
'font-weight-500 text-primary-500 font-style align-bottom mr-1',
|
||||
{ 'font-weight-bolder': !read },
|
||||
)}
|
||||
>
|
||||
{title}
|
||||
</span>
|
||||
<span className="text-gray-700 font-weight-normal font-size-14 font-style align-bottom">
|
||||
<span className="text-gray-700 font-weight-normal font-style align-bottom">
|
||||
{isPostPreviewAvailable(previewBody) ? previewBody : intl.formatMessage(messages.postWithoutPreview)}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -68,7 +68,7 @@ const PostSummaryFooter = ({
|
||||
</OverlayTrigger>
|
||||
|
||||
{preview && commentCount > 1 && (
|
||||
<div className="d-flex align-items-center ml-4.5 text-gray-700 font-style font-size-12">
|
||||
<div className="d-flex align-items-center ml-4.5 text-gray-700 font-style">
|
||||
<OverlayTrigger
|
||||
overlay={(
|
||||
<Tooltip id={`follow-${postId}-tooltip`}>
|
||||
|
||||
@@ -14,6 +14,7 @@ import {
|
||||
|
||||
import { getConfig } from '@edx/frontend-platform';
|
||||
|
||||
import { DENIED, LOADED } from '../components/NavigationBar/data/slice';
|
||||
import {
|
||||
ContentActions, Routes, ThreadType,
|
||||
} from '../data/constants';
|
||||
@@ -313,3 +314,12 @@ export function getAuthorLabel(intl, authorLabel) {
|
||||
|
||||
return authorLabelMappings[authorLabel] || {};
|
||||
}
|
||||
|
||||
export const isCourseStatusValid = (courseStatus) => [DENIED, LOADED].includes(courseStatus);
|
||||
|
||||
export const extractContent = (content) => {
|
||||
if (typeof content === 'object') {
|
||||
return content.target.getContent();
|
||||
}
|
||||
return content;
|
||||
};
|
||||
|
||||
@@ -1,52 +1 @@
|
||||
import { messages as paragonMessages } from '@openedx/paragon';
|
||||
|
||||
import { messages as footerMessages } from '@edx/frontend-component-footer';
|
||||
import { messages as headerMessages } from '@edx/frontend-component-header';
|
||||
|
||||
import arMessages from './messages/ar.json';
|
||||
import csMessages from './messages/cs.json';
|
||||
import deDEMessages from './messages/de_DE.json';
|
||||
import es419Messages from './messages/es_419.json';
|
||||
import esARMessages from './messages/es_AR.json';
|
||||
import esESMessages from './messages/es_ES.json';
|
||||
import faIRMessages from './messages/fa_IR.json';
|
||||
import frMessages from './messages/fr.json';
|
||||
import frCAMessages from './messages/fr_CA.json';
|
||||
import frFRMessages from './messages/fr_FR.json';
|
||||
import hiMessages from './messages/hi.json';
|
||||
import itITMessages from './messages/it_IT.json';
|
||||
import plMessages from './messages/pl.json';
|
||||
import ptPTMessages from './messages/pt_PT.json';
|
||||
import ruMessages from './messages/ru.json';
|
||||
import trTRMessages from './messages/tr_TR.json';
|
||||
import ukMessages from './messages/uk.json';
|
||||
import zhCNMessages from './messages/zh_CN.json';
|
||||
// no need to import en messages-- they are in the defaultMessage field
|
||||
|
||||
const appMessages = {
|
||||
ar: arMessages,
|
||||
cs: csMessages,
|
||||
'de-de': deDEMessages,
|
||||
'es-419': es419Messages,
|
||||
'es-ar': esARMessages,
|
||||
'es-es': esESMessages,
|
||||
'fa-ir': faIRMessages,
|
||||
fr: frMessages,
|
||||
'fr-ca': frCAMessages,
|
||||
'fr-fr': frFRMessages,
|
||||
hi: hiMessages,
|
||||
'it-it': itITMessages,
|
||||
pl: plMessages,
|
||||
'pt-pt': ptPTMessages,
|
||||
'tr-tr': trTRMessages,
|
||||
uk: ukMessages,
|
||||
ru: ruMessages,
|
||||
'zh-cn': zhCNMessages,
|
||||
};
|
||||
|
||||
export default [
|
||||
headerMessages,
|
||||
footerMessages,
|
||||
paragonMessages,
|
||||
appMessages,
|
||||
];
|
||||
export default [];
|
||||
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "قائمة الإجراءات",
|
||||
"discussions.actions.copylink": "نسخ الرابط",
|
||||
"discussions.actions.edit": "تعديل",
|
||||
"discussions.actions.pin": "تثبيت",
|
||||
"discussions.actions.unpin": "إلغاء التثبيت",
|
||||
"discussions.actions.delete": "حذف",
|
||||
"discussions.confirmation.button.confirm": "تأكيد",
|
||||
"discussions.actions.close": "إقفال ",
|
||||
"discussions.actions.reopen": "إعادة الفتح",
|
||||
"discussions.actions.report": "إبلاغ",
|
||||
"discussions.actions.unreport": "سحب البلاغ",
|
||||
"discussions.actions.endorse": "اعتماد",
|
||||
"discussions.actions.unendorse": "إلغاء الاعتماد",
|
||||
"discussions.actions.markAnswered": "وضع علامة \"تمت الإجابة\"",
|
||||
"discussions.actions.unMarkAnswered": "إزالة علامة \"تمت الإجابة\"",
|
||||
"discussions.modal.confirmation.button.cancel": "إلغاء",
|
||||
"discussions.empty.allTopics": "ستظهر هنا جميع مناقشات هذه المواضيع.",
|
||||
"discussions.empty.allPosts": "ستظهر هنا جميع مناقشات مساقك.",
|
||||
"discussions.empty.myPosts": "ستظهر المنشورات التي تفاعلت معها هنا.",
|
||||
"discussions.empty.topic": "ستظهر هنا جميع مناقشات هذا الموضوع.",
|
||||
"discussions.empty.title": "لا شيء هنا بعد",
|
||||
"discussions.empty.noPostSelected": "لم يتم تحديد أي منشور",
|
||||
"discussions.empty.noTopicSelected": "لا موضوع محددًا",
|
||||
"discussions.sidebar.noResultsFound": "لم يعثر على نتائج",
|
||||
"discussions.sidebar.differentKeywords": "جرب البحث بكلمات مفتاحية مختلفة",
|
||||
"discussions.sidebar.removeKeywords": "جرب البحث بكلمات مفتاحية مختلفة أو أزل بعض المرشحات",
|
||||
"discussions.sidebar.removeKeywordsOnly": "جرب البحث بكلمات مفتاحية مختلفة",
|
||||
"discussions.sidebar.removeFilters": "جرب إزالة بعض المرشحات",
|
||||
"discussions.empty.iconAlt": "خالٍ",
|
||||
"discussions.authors.label.staff": "عضو طاقم",
|
||||
"discussions.authors.label.ta": "أستاذ مساعد",
|
||||
"discussions.learner.loadMostPosts": "تواريخ تعطيل نشطة حاليا. لا يمكن النشر في المناقشات خلال هذه الفترة.",
|
||||
"discussions.post.anonymous.author": "مجهول",
|
||||
"discussion.blackoutBanner.information": "تم تعطيل النشر في المناقشات بواسطة فريق الدورة التدريبية",
|
||||
"discussions.editor.image.warning.message": "لن تظهر الصور التي يزيد عرضها أو ارتفاعها عن 999 بكسل عند عرض المنشور أو الرد او التعليق باستخدام مناقشات المساق المضمّنة",
|
||||
"discussions.editor.image.warning.title": "تحذير!",
|
||||
"discussions.editor.image.warning.dismiss": "حسنًا",
|
||||
"navigation.course.tabs.label": "مواد المساق",
|
||||
"discussions.topics.backAlt": "العودة إلى قائمة المواضيع",
|
||||
"discussions.topics.discussions": "{العدد، الجمع، =0 { المحادثة } واحد {# المحادثة } آخر {# المحادثات } }",
|
||||
"discussions.topics.questions": "{عد، جمع، =0 {سؤال} واحد {# سؤال} آخر {# أسئلة} }",
|
||||
"discussions.topics.reported": "تم الإبلاغ عن {reported}",
|
||||
"discussions.topics.previouslyReported": "تم الإبلاغ عن {previouslyReported} من قبل",
|
||||
"discussions.topics.find.label": "البحث في المواضيع",
|
||||
"discussions.topics.unnamed.section.label": "قسم بدون اسم",
|
||||
"discussions.topics.unnamed.subsection.label": "قسم فرعي بدون اسم",
|
||||
"discussions.subtopics.unnamed.topic.label": "موضوع لم يذكر اسمه",
|
||||
"discussions.topics.title": "لا يوجد موضوع",
|
||||
"discussions.topics.createTopic": "يرجى الاتصال بك المسؤول لإنشاء موضوع",
|
||||
"discussions.topics.nothing": "لا شيء هنا حتى الان",
|
||||
"discussions.topics.archived.label": "مؤرشف",
|
||||
"discussions.learner.reported": "تم الإبلاغ عن {reported}",
|
||||
"discussions.learner.previouslyReported": "تم الإبلاغ عن {previouslyReported} من قبل",
|
||||
"discussions.learner.lastLogin": "آخر نشاط {lastActiveTime}",
|
||||
"discussions.learner.loadMostLearners": "تحميل المزيد",
|
||||
"discussions.learner.back": "عودة",
|
||||
"discussions.learner.activityForLearner": "نشاط {username}",
|
||||
"discussions.learner.mostActivity": "الأكثر نشاطًا",
|
||||
"discussions.learner.reportedActivity": "النشاطات المبلغ عنها",
|
||||
"discussions.learner.recentActivity": "الأحدث نشاطًا",
|
||||
"discussions.learner.sortFilterStatus": "تم ترتيب كل الطلّاب حسب {sort, Select, flagled {reportedactivity} النشاط {الأكثر نشاطًا} Other { {sort} } }",
|
||||
"discussion.learner.allActivity": "كل النشاط",
|
||||
"discussion.learner.posts": "المنشورات",
|
||||
"discussions.comments.comment.addComment": "إضافة تعليق",
|
||||
"discussions.comments.comment.addResponse": "إضافة رد",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "تم إبلاغ الطاقم عن هذا المحتوى لمراجعته.",
|
||||
"discussions.actions.back.alt": "العودة إلى القائمة",
|
||||
"discussions.comments.comment.responseCount": "{num, plural, =0 {لا يوجد ردود} واحد {يظهر # رد} آخر {يظهر # ردود} }",
|
||||
"discussions.comments.comment.endorsedResponseCount": "{num, plural, =0 {لا توجد ردود معتمدة} واحدة {يتم عرض # ردود معتمدة} أخرى {يتم عرض # ردود معتمدة} }",
|
||||
"discussions.comments.comment.loadMoreComments": "تحميل المزيد من التعليقات",
|
||||
"discussions.comments.comment.loadMoreResponses": "تحميل المزيد من الردود",
|
||||
"discussions.comments.comment.visibility": "هذا المنشور مرئي لـ {group, Select, null {Everyone}other { {group} } }.",
|
||||
"discussions.comments.comment.postedTime": "{postType, Select, المحادثة {المحادثة} سؤال {سؤال} آخر { {postType} } } تم النشر بواسطة {relativeTime}",
|
||||
"discussions.comments.comment.commentTime": "تم النشر {relativeTime}",
|
||||
"discussions.comments.comment.answer": "الإجابة",
|
||||
"discussions.comments.comment.answeredlabel": "تم تعليمها كمُجابة من طرف",
|
||||
"discussions.comments.comment.endorsed": "معتمد",
|
||||
"discussions.comments.comment.endorsedlabel": "اعتمده",
|
||||
"discussions.actions.label": "قائمة الإجراءات",
|
||||
"discussions.editor.submit": "إرسال",
|
||||
"discussions.editor.submitting": "الإرسال جارٍ",
|
||||
"discussions.editor.cancel": "إلغاء",
|
||||
"discussions.editor.error.empty": "لا يمكن أن يكون محتوى المنشور فارغًا.",
|
||||
"discussions.editor.delete.response.title": "حذف الرد",
|
||||
"discussions.editor.delete.response.description": "هل أنت متأكد من رغبتك في حذف هذا الردّ نهائيًا؟",
|
||||
"discussions.editor.delete.comment.title": "حذف التعليق",
|
||||
"discussions.editor.delete.comment.description": "هل أنت متأكد من رغبتك في حذف هذا التعليق نهائيا؟",
|
||||
"discussions.delete.confirmation.button.delete": "حذف",
|
||||
"discussions.editor.response.response.title": "أتريد الإبلاغ عن محتوى غير لائق؟",
|
||||
"discussions.editor.response.description": "سيراجع فريق الإشراف على المناقشة هذا المحتوى و يتخذ الإجراء المناسب.",
|
||||
"discussions.editor.report.comment.title": "أتريد الإبلاغ عن محتوى غير لائق؟",
|
||||
"discussions.editor.report.comment.description": "سيراجع فريق الإشراف على المناقشة هذا المحتوى ويتخذ الإجراء المناسب.",
|
||||
"discussions.editor.comments.editReasonCode": "سبب التعديل",
|
||||
"discussions.editor.posts.editReasonCode.error": "حدد سبب التعديل",
|
||||
"discussions.comment.comments.editedBy": "عدّله",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "السبب",
|
||||
"discussions.post.closedBy": "تم إقفال المنشور من طرف",
|
||||
"discussion.comment.time": "منذ {time}",
|
||||
"discussion.thread.notFound": "المناقشة غير موجودة",
|
||||
"discussions.comment.sortFilterStatus": "{فرز، تحديد، خطأ {الأقدم أولاً} صحيح {الأحدث أولاً} أخرى { {sort} } }",
|
||||
"discussions.topics.sort.message": "مرتبة حسب {sortBy}",
|
||||
"discussions.topics.sort.lastActivity": "الأحدث نشاطًا",
|
||||
"discussions.topics.sort.commentCount": "الاكثر نشاطًا",
|
||||
"discussions.topics.sort.courseStructure": "هيكل المساق",
|
||||
"discussions.topics.unnamed.label": "فئة بدون اسم",
|
||||
"discussions.subtopics.unnamed.label": "فئة فرعية بدون اسم",
|
||||
"tour.action.advance": "التالي",
|
||||
"tour.action.dismiss": "تجاهل",
|
||||
"tour.action.end": "حسنًا",
|
||||
"tour.example.title": "جولة المثال",
|
||||
"tour.example.body": "هذه جولة نموذجية",
|
||||
"learn.course.tabs.navigation.overflow.menu": "المزيد...",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "المواضيع",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "عرض الكل",
|
||||
"discussions.navigation.navigationBar.allPosts": "جميع المنشورات",
|
||||
"discussions.navigation.navigationBar.allTopics": "المواضيع",
|
||||
"discussions.navigation.navigationBar.myPosts": "منشوراتي",
|
||||
"discussions.navigation.navigationBar.learners": "المتعلمون",
|
||||
"discussions.post.author.anonymous": "مجهول",
|
||||
"discussions.post.addResponse": "أضف الرد",
|
||||
"discussions.post.lastResponse": "آخر رد {time}",
|
||||
"discussions.post.postedOn": "منشور في {time} من طرف {author} {authorLabel}",
|
||||
"discussions.post.contentReported": "تم الإبلاغ",
|
||||
"discussions.post.following": "جاري المتابعة",
|
||||
"discussions.post.follow": "متابعة",
|
||||
"discussions.post.followed": "تابع",
|
||||
"discussions.post.notFollowed": "ليس متابع",
|
||||
"discussions.post.answered": "تمّت الإجابة",
|
||||
"discussions.post.unFollow": "إلغاء المتابعة",
|
||||
"discussions.post.like": "أعجبني",
|
||||
"discussions.post.removeLike": "إلغاء الإغجاب",
|
||||
"discussions.post.liked": "اعحبني",
|
||||
"discussions.post.likes": "الإعجابات",
|
||||
"discussions.post.viewActivity": "عرض النشاط",
|
||||
"discussions.post.activity": "النشاط",
|
||||
"discussions.post.closed": "منشور مقفل أمام الردود والتعليقات",
|
||||
"discussions.post.relatedTo": "متعلق بـ",
|
||||
"discussions.editor.delete.post.title": "حذف المنشور",
|
||||
"discussions.editor.delete.post.description": "هل أنت متأكد من رغبتك في حذف هذا المنشور نهائيًا؟",
|
||||
"discussions.post.delete.confirmation.button.delete": "حذف",
|
||||
"discussions.editor.report.post.title": "أتريد الإبلاغ عن محتوى غير لائق؟",
|
||||
"discussions.editor.report.post.description": "سيراجع فريق الإشراف على المناقشة هذا المحتوى و يتخذ الإجراء المناسب.",
|
||||
"discussions.post.closePostModal.title": "إقفال المنشور",
|
||||
"discussions.post.closePostModal.text": "أدخل سبب إقفال هذه المنشور. سيظهر هذا فقط لبقية المشرفين.",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "السبب",
|
||||
"discussions.post.closePostModal.cancel": "إلغاء",
|
||||
"discussions.post.closePostModal.confirm": "إقفال المنشور",
|
||||
"discussions.post.label.new": "{count} جديدة",
|
||||
"discussions.post.editedBy": "عدّله",
|
||||
"discussions.post.editReason": "السبب",
|
||||
"discussions.post.postWithoutPreview": "المعاينة غير متاحة",
|
||||
"discussions.post.follow.description": "أنت تتابع هذا المنشور/الرد",
|
||||
"discussions.post.unfollow.description": "أنت لا تتابع هذا المنصب",
|
||||
"discussions.app.title": "المناقشات",
|
||||
"discussions.posts.actionBar.searchAllPosts": "البحث في كافّة المنشورات",
|
||||
"discussions.posts.actionBar.search": "{صفحة، حدد المواضيع {بحث في المواضيع} مشاركات {بحث في كل المشاركات} الطلّاب {بحث الطلّاب } myPosts {بحث في كل المشاركات} أخرى { {page} } }",
|
||||
"discussions.actionBar.searchInfo": "{num، plural, =0 {لا توجد نتائج} one {تم إظهار نتيجة واحدة} two {تم إظهار نتيجتين} few {تم إظهار # نتائج} many {تم إظهار # نتيجة} other {تم إظهار # نتائج}} لـ\"{text}\"",
|
||||
"discussions.actionBar.searchRewriteInfo": "لم يعثر على نتائج لـ \"{searchString}\". {num، plural, =0 {لا توجد نتائج} one {تم إظهار نتيجة واحدة} two {تم إظهار نتيجتين} few {تم إظهار # نتائج} many {تم إظهار # نتيجة} other {تم إظهار # نتائج}} لـ\"{textSearchRewrite}\" ",
|
||||
"discussions.actionBar.searchInfoSearching": "البحث جارٍ...",
|
||||
"discussions.actionBar.clearSearch": "مسح النتائج",
|
||||
"discussion.posts.actionBar.add": "أضف منشورًا",
|
||||
"discussion.posts.actionBar.close": "إغلاق ",
|
||||
"discussions.post.editor.type": "نوع المنشور",
|
||||
"discussions.post.editor.addPostHeading": "أضف منشورًا",
|
||||
"discussions.post.editor.editPostHeading": "تعديل المنشور",
|
||||
"discussions.post.editor.typeDescription": "تطرح الأسئلة القضايا تحتاج إلى إجابات. بينما تفتح المناقشات باب مشاركة الأفكار و بدء المحادثات.",
|
||||
"discussions.post.editor.required": "مطلوب",
|
||||
"discussions.post.editor.questionType": "سؤال",
|
||||
"discussions.post.editor.questionDescription": "اطرح القضايا التي تحتاج إجابات",
|
||||
"discussions.post.editor.discussionType": "مناقشة",
|
||||
"discussions.post.editor.discussionDescription": "شارك الأفكار و ابدء المحادثات",
|
||||
"discussions.post.editor.topicArea": "مجال الموضوع:",
|
||||
"discussions.post.editor.topicAreaDescription": "أضف منشورك إلى موضوع مناسب لمساعدة الآخرين على إيجاده.",
|
||||
"discussions.post.editor.cohortVisibility": "الظهور للأفواج",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "جميع المتعلّمين",
|
||||
"discussions.post.editor.title": "عنوان المنشور",
|
||||
"discussions.post.editor.titleDescription": "أضِف عنوانًا واضحًا ومعبّرًا للتشجيع على المشاركة.",
|
||||
"discussions.post.editor.title.error": "لا يمكن لعنوان المنشور أن يكون فارغًا.",
|
||||
"discussions.post.editor.content.error": "لا يمكن لمحتوى المنشور أن يكون فارغًا.",
|
||||
"discussions.post.editor.questionText": "سؤالك أو فكرتك (مطلوب)",
|
||||
"discussions.post.editor.preview": "معاينة",
|
||||
"discussions.post.editor.followPost": "متابعة هذا المنشور",
|
||||
"discussions.post.editor.anonymousPost": "النشر كمجهول",
|
||||
"discussions.post.editor.anonymousToPeersPost": "انشر ﻷقرانك كمجهول",
|
||||
"discussions.editor.posts.editReasonCode": "سبب التعديل",
|
||||
"discussions.editor.posts.showPreview.button": "عرض المعاينة",
|
||||
"discussions.topic.noName.label": "تصنيف دون اسم",
|
||||
"discussions.subtopic.noName.label": "تصنيف فرعي دون اسم",
|
||||
"discussions.posts.filter.showALl": "عرض الكل",
|
||||
"discussions.posts.filter.discussions": "المناقشات",
|
||||
"discussions.posts.filter.questions": "الأسئلة",
|
||||
"discussions.posts.filter.message": "الحالة: {filterBy}",
|
||||
"discussions.posts.status.filter.anyStatus": "أي حالة",
|
||||
"discussions.posts.status.filter.unread": "غير المقروءة",
|
||||
"discussions.posts.status.filter.following": "التي تتابعها",
|
||||
"discussions.posts.status.filter.reported": "مبلّغ عنها",
|
||||
"discussions.posts.status.filter.unanswered": "دون إجابة",
|
||||
"discussions.posts.status.filter.unresponded": "دون رد",
|
||||
"discussions.posts.filter.myPosts": "منشوراتي",
|
||||
"discussions.posts.filter.myDiscussions": "مناقشاتي",
|
||||
"discussions.posts.filter.myQuestions": "أسئلتي",
|
||||
"discussions.posts.sort.message": "مرتبة حسب {sortBy}",
|
||||
"discussions.posts.sort.lastActivity": "الأحدث نشاطًا",
|
||||
"discussions.posts.sort.commentCount": "الأكثر نشاطًا",
|
||||
"discussions.posts.sort.voteCount": "الأكثر إعجابًا",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": "{خاص، حدد، خطأ {الكل} صحيح {ملكي} آخر { {own} } } {الحالة، حدد، الحالة الكل {} الحالة غير مقروءة {غير مقروءة} الحالة التالية {followed} الحالة المُبلغ عنها {المُبلغ عنها} الحالة غير المُجيبة {unanswered} الحالة غير المُستجيبة {unresponded} أخرى { {status} } } {نوع، حدد، المحادثة { المحادثات } سؤال {أسئلة} جميع {المشاركات} أخرى { {type} } } {cohortType، حدد، الكل {} المجموعة {in {فوج} } أخرى { {cohortType} } } مرتبة حسب {فرز، تحديد، LastActivityAt { النشاط الأخير} تعليق عدد {أكثر الأنشطة} عدد الأصوات {أكثر الإعجابات} أخرى { {sort} } }"
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "Nabídka akcí",
|
||||
"discussions.actions.copylink": "Kopírovat odkaz",
|
||||
"discussions.actions.edit": "Editovat",
|
||||
"discussions.actions.pin": "Připnout",
|
||||
"discussions.actions.unpin": "Odepnout",
|
||||
"discussions.actions.delete": "Smazat",
|
||||
"discussions.confirmation.button.confirm": "Potvrdit",
|
||||
"discussions.actions.close": "Zavřít",
|
||||
"discussions.actions.reopen": "Znovu otevřít",
|
||||
"discussions.actions.report": "Nahlásit",
|
||||
"discussions.actions.unreport": "Zrušit nahlášení",
|
||||
"discussions.actions.endorse": "Schválit",
|
||||
"discussions.actions.unendorse": "Nepodporovat",
|
||||
"discussions.actions.markAnswered": "Označit jako zodpovězené",
|
||||
"discussions.actions.unMarkAnswered": "Označit jako nezodpovězené",
|
||||
"discussions.modal.confirmation.button.cancel": "Zrušit",
|
||||
"discussions.empty.allTopics": "Veškerá aktivita diskuze pro tato témata se zobrazí zde.",
|
||||
"discussions.empty.allPosts": "Veškerá aktivita diskuze pro vaše kurzy se zobrazí zde.",
|
||||
"discussions.empty.myPosts": "Příspěvky, se kterými jste interagovali, se zobrazí zde.",
|
||||
"discussions.empty.topic": "Veškerá aktivita diskuze pro toto téma se zobrazí zde.",
|
||||
"discussions.empty.title": "Ještě tu nic není",
|
||||
"discussions.empty.noPostSelected": "Nevybrány žádné příspěvky",
|
||||
"discussions.empty.noTopicSelected": "Nevybrána žádná témata",
|
||||
"discussions.sidebar.noResultsFound": "Nebyly nalezeny žádné výsledky",
|
||||
"discussions.sidebar.differentKeywords": "Zkuste vyhledávat různá klíčová slova",
|
||||
"discussions.sidebar.removeKeywords": "Zkuste vyhledávat klíčová slova nebo odstranit některé filtry",
|
||||
"discussions.sidebar.removeKeywordsOnly": "Zkuste vyhledávat různá klíčová slova",
|
||||
"discussions.sidebar.removeFilters": "Zkuste odstranit některé filtry",
|
||||
"discussions.empty.iconAlt": "Prázdný",
|
||||
"discussions.authors.label.staff": "Učitelé",
|
||||
"discussions.authors.label.ta": "TA",
|
||||
"discussions.learner.loadMostPosts": "Načíst další příspěvky",
|
||||
"discussions.post.anonymous.author": "anonymní",
|
||||
"discussion.blackoutBanner.information": "Zasílání příspěvků v diskuzích je zakázáno týmem kurzu",
|
||||
"discussions.editor.image.warning.message": "Obrázky mající šířku nebo výšku větší než 999px nebudou viditelné, když příspěvek, odpověď nebo komentář zobrazíte pomocí diskuzí v rámci kurzu",
|
||||
"discussions.editor.image.warning.title": "Varování!",
|
||||
"discussions.editor.image.warning.dismiss": "Ok",
|
||||
"navigation.course.tabs.label": "Materiály ke kurzu",
|
||||
"discussions.topics.backAlt": "Zpět na seznam témat",
|
||||
"discussions.topics.discussions": "",
|
||||
"discussions.topics.questions": "",
|
||||
"discussions.topics.reported": "{reported} nahlášeno",
|
||||
"discussions.topics.previouslyReported": "{previouslyReported} minule nahlášeno",
|
||||
"discussions.topics.find.label": "Hledat témata",
|
||||
"discussions.topics.unnamed.section.label": "Nejmenovaná sekce",
|
||||
"discussions.topics.unnamed.subsection.label": "Nepojmenovaná podsekce",
|
||||
"discussions.subtopics.unnamed.topic.label": "Nepojmenované téma",
|
||||
"discussions.topics.title": "Žádné téma neexistuje",
|
||||
"discussions.topics.createTopic": "Chcete-li vytvořit téma, kontaktujte svého správce",
|
||||
"discussions.topics.nothing": "Ještě tu nic není",
|
||||
"discussions.topics.archived.label": "Archivováno",
|
||||
"discussions.learner.reported": "{reported} nahlášeno",
|
||||
"discussions.learner.previouslyReported": "{previouslyReported} minule nahlášeno",
|
||||
"discussions.learner.lastLogin": "Poslední aktivita {lastActiveTime}",
|
||||
"discussions.learner.loadMostLearners": "Načíst více",
|
||||
"discussions.learner.back": "Zpět",
|
||||
"discussions.learner.activityForLearner": "Aktivita pro {username}",
|
||||
"discussions.learner.mostActivity": "Nejvíce aktivity",
|
||||
"discussions.learner.reportedActivity": "Nahlášené aktivity",
|
||||
"discussions.learner.recentActivity": "Nedávné aktivity",
|
||||
"discussions.learner.sortFilterStatus": "",
|
||||
"discussion.learner.allActivity": "Všechna aktivita",
|
||||
"discussion.learner.posts": "Příspěvky",
|
||||
"discussions.comments.comment.addComment": "Přidat komentář",
|
||||
"discussions.comments.comment.addResponse": "Přidat odpověď",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "Obsah byl nahlášen učiteli ke kontrole",
|
||||
"discussions.actions.back.alt": "Zpět na seznam",
|
||||
"discussions.comments.comment.responseCount": "",
|
||||
"discussions.comments.comment.endorsedResponseCount": "",
|
||||
"discussions.comments.comment.loadMoreComments": "Načíst další komentáře",
|
||||
"discussions.comments.comment.loadMoreResponses": "Načíst další odpovědi",
|
||||
"discussions.comments.comment.visibility": "",
|
||||
"discussions.comments.comment.postedTime": "",
|
||||
"discussions.comments.comment.commentTime": "Odesláno {relativeTime}",
|
||||
"discussions.comments.comment.answer": "Odpověď",
|
||||
"discussions.comments.comment.answeredlabel": "Označit jako zodpovězené",
|
||||
"discussions.comments.comment.endorsed": "Schválené",
|
||||
"discussions.comments.comment.endorsedlabel": "Schváleno uživatelem",
|
||||
"discussions.actions.label": "Nabídka akcí",
|
||||
"discussions.editor.submit": "Odeslat",
|
||||
"discussions.editor.submitting": "Odesílám",
|
||||
"discussions.editor.cancel": "Zrušit",
|
||||
"discussions.editor.error.empty": "Obsah příspěvku nemůže být prázdný.",
|
||||
"discussions.editor.delete.response.title": "Smazat obsah",
|
||||
"discussions.editor.delete.response.description": "Opravdu chcete trvale smazat tento obsah?",
|
||||
"discussions.editor.delete.comment.title": "Smazat komentář",
|
||||
"discussions.editor.delete.comment.description": "Opravdu chcete smazat tento komentář?",
|
||||
"discussions.delete.confirmation.button.delete": "Smazat",
|
||||
"discussions.editor.response.response.title": "Nahlásit nevhodný obsah?",
|
||||
"discussions.editor.response.description": "Tým pro moderování diskuze zkontroluje tento obsah a podnikne příslušné kroky.",
|
||||
"discussions.editor.report.comment.title": "Nahlásit nevhodný obsah?",
|
||||
"discussions.editor.report.comment.description": "Tým pro moderování diskuze zkontroluje tento obsah a podnikne příslušné kroky.",
|
||||
"discussions.editor.comments.editReasonCode": "Důvod úpravy",
|
||||
"discussions.editor.posts.editReasonCode.error": "Zvolit důvod úpravy",
|
||||
"discussions.comment.comments.editedBy": "Úprava od",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "Důvod",
|
||||
"discussions.post.closedBy": "Příspěvek zavřen uživatelem",
|
||||
"discussion.comment.time": "Před {time}",
|
||||
"discussion.thread.notFound": "Vlákno nebylo nelezeno",
|
||||
"discussions.comment.sortFilterStatus": "",
|
||||
"discussions.topics.sort.message": "Seřazeno podle {sortBy}",
|
||||
"discussions.topics.sort.lastActivity": "Nedávná aktivita",
|
||||
"discussions.topics.sort.commentCount": "Nejvíce aktivity",
|
||||
"discussions.topics.sort.courseStructure": "Struktura kurzu",
|
||||
"discussions.topics.unnamed.label": "Nepojmenovaná kategorie",
|
||||
"discussions.subtopics.unnamed.label": "Nepojmenovaná podkategorie",
|
||||
"tour.action.advance": "Další",
|
||||
"tour.action.dismiss": "Zamítnout",
|
||||
"tour.action.end": "Dobře",
|
||||
"tour.example.title": "",
|
||||
"tour.example.body": "",
|
||||
"learn.course.tabs.navigation.overflow.menu": "Více...",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "Témata",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "Zobrazit vše",
|
||||
"discussions.navigation.navigationBar.allPosts": "Všechny příspěvky",
|
||||
"discussions.navigation.navigationBar.allTopics": "Témata",
|
||||
"discussions.navigation.navigationBar.myPosts": "Moje příspěvky",
|
||||
"discussions.navigation.navigationBar.learners": "Studenti",
|
||||
"discussions.post.author.anonymous": "anonymní",
|
||||
"discussions.post.addResponse": "Přidat odpověď",
|
||||
"discussions.post.lastResponse": "Poslední odpověď {time}",
|
||||
"discussions.post.postedOn": "Odesláno {time} uživatelem {author} {authorLabel}",
|
||||
"discussions.post.contentReported": "Nahlášeno",
|
||||
"discussions.post.following": "Sledováno",
|
||||
"discussions.post.follow": "Sledovat",
|
||||
"discussions.post.followed": "Sledoval",
|
||||
"discussions.post.notFollowed": "Nesledoval",
|
||||
"discussions.post.answered": "Zodpovězeno",
|
||||
"discussions.post.unFollow": "Zrušit sledování",
|
||||
"discussions.post.like": "Lajk",
|
||||
"discussions.post.removeLike": "Zrušit lajk",
|
||||
"discussions.post.liked": "Lajknul",
|
||||
"discussions.post.likes": "Lajky",
|
||||
"discussions.post.viewActivity": "Zobrazit aktivitu",
|
||||
"discussions.post.activity": "Aktivita",
|
||||
"discussions.post.closed": "Příspěvek uzavřen pro odpovědi a komentáře",
|
||||
"discussions.post.relatedTo": "Související s",
|
||||
"discussions.editor.delete.post.title": "Odstranit příspěvek",
|
||||
"discussions.editor.delete.post.description": "Opravdu chcete smazat tento příspěvek?",
|
||||
"discussions.post.delete.confirmation.button.delete": "Smazat",
|
||||
"discussions.editor.report.post.title": "Nahlásit nevhodný obsah?",
|
||||
"discussions.editor.report.post.description": "Tým pro moderování diskuze zkontroluje tento obsah a podnikne příslušné kroky.",
|
||||
"discussions.post.closePostModal.title": "Zavřít příspěvek",
|
||||
"discussions.post.closePostModal.text": "Zadejte důvod pro uzavření tohoto příspěvku. Toto se zobrazí pouze ostatním moderátorům.",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "Důvod",
|
||||
"discussions.post.closePostModal.cancel": "Zrušit",
|
||||
"discussions.post.closePostModal.confirm": "Zavřít příspěvek",
|
||||
"discussions.post.label.new": "{count} nových",
|
||||
"discussions.post.editedBy": "Úprava od",
|
||||
"discussions.post.editReason": "Důvod",
|
||||
"discussions.post.postWithoutPreview": "Není k dispozici žádný náhled",
|
||||
"discussions.post.follow.description": "sledujete tento příspěvek",
|
||||
"discussions.post.unfollow.description": "nesledujete tento příspěvek",
|
||||
"discussions.app.title": "Diskuze",
|
||||
"discussions.posts.actionBar.searchAllPosts": "Prohledejte příspěvky",
|
||||
"discussions.posts.actionBar.search": "",
|
||||
"discussions.actionBar.searchInfo": "Zobrazuji {count} výsledků pro \"{text}\"",
|
||||
"discussions.actionBar.searchRewriteInfo": "Nenylezeny žádné výsledky pro \"{searchString}\". Zobrazuji {count} výsledků pro \"{textSearchRewrite}\".",
|
||||
"discussions.actionBar.searchInfoSearching": "Vyhledávám...",
|
||||
"discussions.actionBar.clearSearch": "Vymazat vyhledávání",
|
||||
"discussion.posts.actionBar.add": "Přidat příspěvek",
|
||||
"discussion.posts.actionBar.close": "Zavřít",
|
||||
"discussions.post.editor.type": "Typ příspěvku",
|
||||
"discussions.post.editor.addPostHeading": "Přidat příspěvek",
|
||||
"discussions.post.editor.editPostHeading": "Upravit příspěvek",
|
||||
"discussions.post.editor.typeDescription": "Otázky vyvolávají problémy, které vyžadují odpovědi. Diskuse sdílejí nápady a zahajují konverzace.",
|
||||
"discussions.post.editor.required": "Povinný",
|
||||
"discussions.post.editor.questionType": "Otázka",
|
||||
"discussions.post.editor.questionDescription": "Upozorňovat na problémy, které vyžadují odpovědi",
|
||||
"discussions.post.editor.discussionType": "Diskuze",
|
||||
"discussions.post.editor.discussionDescription": "Sdílet nápady a začít konverzaci",
|
||||
"discussions.post.editor.topicArea": "Tematická oblast",
|
||||
"discussions.post.editor.topicAreaDescription": "Přidejte svůj příspěvek k relevantnímu tématu, aby ho ostatní mohli najít.",
|
||||
"discussions.post.editor.cohortVisibility": "Viditelnost kohorty",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "Všichni studenti",
|
||||
"discussions.post.editor.title": "Název příspěvku",
|
||||
"discussions.post.editor.titleDescription": "Přidejte jasný a popisný název, abyste podpořili účast.",
|
||||
"discussions.post.editor.title.error": "Název příspěvku nemůže být prázdný.",
|
||||
"discussions.post.editor.content.error": "Obsah příspěvku nemůže být prázdný.",
|
||||
"discussions.post.editor.questionText": "Vaše otázka či nápad (povinné)",
|
||||
"discussions.post.editor.preview": "Náhled",
|
||||
"discussions.post.editor.followPost": "Sledovat tento příspěvek",
|
||||
"discussions.post.editor.anonymousPost": "Odeslat anonymně",
|
||||
"discussions.post.editor.anonymousToPeersPost": "Anonymně přispívat spolužákům",
|
||||
"discussions.editor.posts.editReasonCode": "Důvod úpravy",
|
||||
"discussions.editor.posts.showPreview.button": "Zobrazit náhled",
|
||||
"discussions.topic.noName.label": "Nepojmenovaná kategorie",
|
||||
"discussions.subtopic.noName.label": "Nepojmenovaná podkategorie",
|
||||
"discussions.posts.filter.showALl": "Zobrazit vše",
|
||||
"discussions.posts.filter.discussions": "Diskuze",
|
||||
"discussions.posts.filter.questions": "Otázky",
|
||||
"discussions.posts.filter.message": "Stav: {filterBy}",
|
||||
"discussions.posts.status.filter.anyStatus": "Jakýkoli stav",
|
||||
"discussions.posts.status.filter.unread": "Nepřečtený",
|
||||
"discussions.posts.status.filter.following": "Sledováno",
|
||||
"discussions.posts.status.filter.reported": "Nahlášeno",
|
||||
"discussions.posts.status.filter.unanswered": "Nezodpovězené",
|
||||
"discussions.posts.status.filter.unresponded": "Nereagované",
|
||||
"discussions.posts.filter.myPosts": "Moje příspěvky",
|
||||
"discussions.posts.filter.myDiscussions": "Moje diskuze",
|
||||
"discussions.posts.filter.myQuestions": "Moje otázky",
|
||||
"discussions.posts.sort.message": "Seřazeno podle {sortBy}",
|
||||
"discussions.posts.sort.lastActivity": "Nedávné aktivity",
|
||||
"discussions.posts.sort.commentCount": "Největší aktivity",
|
||||
"discussions.posts.sort.voteCount": "Nejvíce lajků",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": ""
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "Aktionsmenü",
|
||||
"discussions.actions.copylink": "Link kopieren",
|
||||
"discussions.actions.edit": "Bearbeiten",
|
||||
"discussions.actions.pin": "Veröffentlichen",
|
||||
"discussions.actions.unpin": "Ablösen",
|
||||
"discussions.actions.delete": "Löschen",
|
||||
"discussions.confirmation.button.confirm": "Bestätigen",
|
||||
"discussions.actions.close": "Schließen",
|
||||
"discussions.actions.reopen": "Wieder öffnen",
|
||||
"discussions.actions.report": "Melden",
|
||||
"discussions.actions.unreport": "Meldung aufheben",
|
||||
"discussions.actions.endorse": "Befürworten",
|
||||
"discussions.actions.unendorse": "Nicht Befürworten",
|
||||
"discussions.actions.markAnswered": "Als beantwortet markieren",
|
||||
"discussions.actions.unMarkAnswered": "Markierung als beantwortet aufheben",
|
||||
"discussions.modal.confirmation.button.cancel": "Löschen",
|
||||
"discussions.empty.allTopics": "Alle Diskussionsaktivitäten zu diesen Themen werden hier angezeigt.",
|
||||
"discussions.empty.allPosts": "Alle Diskussionsaktivitäten für Ihren Kurs werden hier angezeigt.",
|
||||
"discussions.empty.myPosts": "Beiträge, mit denen Sie interagiert haben, werden hier angezeigt.",
|
||||
"discussions.empty.topic": "Alle Diskussionsaktivitäten zu diesem Thema werden hier angezeigt.",
|
||||
"discussions.empty.title": "Hier noch nichts",
|
||||
"discussions.empty.noPostSelected": "Kein Beitrag ausgewählt",
|
||||
"discussions.empty.noTopicSelected": "Kein Thema ausgewählt",
|
||||
"discussions.sidebar.noResultsFound": "Keine Ergebnisse gefunden",
|
||||
"discussions.sidebar.differentKeywords": "Versuchen Sie, nach anderen Schlüsselwörtern zu suchen",
|
||||
"discussions.sidebar.removeKeywords": "Versuchen Sie, nach anderen Schlüsselwörtern zu suchen oder einige Filter zu entfernen",
|
||||
"discussions.sidebar.removeKeywordsOnly": "Versuchen Sie, nach anderen Schlüsselwörtern zu suchen",
|
||||
"discussions.sidebar.removeFilters": "Versuchen Sie, einige Filter zu entfernen",
|
||||
"discussions.empty.iconAlt": "Leer",
|
||||
"discussions.authors.label.staff": "Betreuung",
|
||||
"discussions.authors.label.ta": "TA",
|
||||
"discussions.learner.loadMostPosts": "Mehr Beiträge laden",
|
||||
"discussions.post.anonymous.author": "Anonym",
|
||||
"discussion.blackoutBanner.information": "Das Posten in Diskussionen ist vom Kursteam deaktiviert",
|
||||
"discussions.editor.image.warning.message": "Bilder mit einer Breite oder Höhe von mehr als 999 Pixel sind nicht sichtbar, wenn der Beitrag, die Antwort oder der Kommentar über Inline-Kursdiskussionen angezeigt werden",
|
||||
"discussions.editor.image.warning.title": "Warnung!",
|
||||
"discussions.editor.image.warning.dismiss": "Ok",
|
||||
"navigation.course.tabs.label": "Kursmaterial",
|
||||
"discussions.topics.backAlt": "Zurück zur Themenliste",
|
||||
"discussions.topics.discussions": "{count, plural, =0 { Diskussion } one {# Diskussion } other {# Diskussionen } }",
|
||||
"discussions.topics.questions": "{count, plural, =0 { Frage } one {# Frage } other {# Questions} }",
|
||||
"discussions.topics.reported": "{reported} gemeldet",
|
||||
"discussions.topics.previouslyReported": "{previouslyReported} zuvor gemeldet",
|
||||
"discussions.topics.find.label": "Themen suchen",
|
||||
"discussions.topics.unnamed.section.label": "Unbenannter Abschnitt",
|
||||
"discussions.topics.unnamed.subsection.label": "Unbenannter Unterabschnitt",
|
||||
"discussions.subtopics.unnamed.topic.label": "Unbenanntes Thema",
|
||||
"discussions.topics.title": "Kein Thema vorhanden",
|
||||
"discussions.topics.createTopic": "Bitte kontaktieren Sie Ihren Administrator, um ein Thema zu erstellen",
|
||||
"discussions.topics.nothing": "Hier noch nichts",
|
||||
"discussions.topics.archived.label": "Archiviert",
|
||||
"discussions.learner.reported": "{reported} gemeldet",
|
||||
"discussions.learner.previouslyReported": "{previouslyReported} zuvor gemeldet",
|
||||
"discussions.learner.lastLogin": "Zuletzt aktiv {lastActiveTime}",
|
||||
"discussions.learner.loadMostLearners": "Lade weiteres",
|
||||
"discussions.learner.back": "Zurück",
|
||||
"discussions.learner.activityForLearner": "Aktivität für {username}",
|
||||
"discussions.learner.mostActivity": "Die meisten Aktivitäten",
|
||||
"discussions.learner.reportedActivity": "Gemeldete Aktivität",
|
||||
"discussions.learner.recentActivity": "Letzte Aktivität",
|
||||
"discussions.learner.sortFilterStatus": "Alle Lernenden sortiert nach {sortieren, auswählen, markiert {gemeldete Aktivität} Aktivität {größte Aktivität} andere { {sort} } }",
|
||||
"discussion.learner.allActivity": "Alle Aktivitäten",
|
||||
"discussion.learner.posts": "Beiträge",
|
||||
"discussions.comments.comment.addComment": "Kommentar hinzufügen",
|
||||
"discussions.comments.comment.addResponse": "Fügen Sie eine Antwort hinzu",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "Inhalte, die den Kursmitarbeitern zur Überprüfung gemeldet wurden",
|
||||
"discussions.actions.back.alt": "Zurück zur Liste",
|
||||
"discussions.comments.comment.responseCount": "{num, plural, =0 {Keine Antworten} one {# Antwort wird angezeigt} other {# Antworten werden angezeigt} }",
|
||||
"discussions.comments.comment.endorsedResponseCount": "{num, plural, =0 {Keine befürworteten Antworten} one {# befürwortete Antwort wird angezeigt} other {# befürwortete Antworten werden angezeigt} }",
|
||||
"discussions.comments.comment.loadMoreComments": "Weitere Kommentare laden",
|
||||
"discussions.comments.comment.loadMoreResponses": "Weitere Antworten laden",
|
||||
"discussions.comments.comment.visibility": "Dieser Beitrag ist für {group, select, null {Everyone} other { {group} } } sichtbar.",
|
||||
"discussions.comments.comment.postedTime": "{postType, select, Diskussion {Diskussion} Frage {Frage} other { {postType} } } gepostet {relativeTime} von",
|
||||
"discussions.comments.comment.commentTime": "Gepostet {relativeTime}",
|
||||
"discussions.comments.comment.answer": "Antwort",
|
||||
"discussions.comments.comment.answeredlabel": "Als beantwortet von markiert",
|
||||
"discussions.comments.comment.endorsed": "Bestätigt",
|
||||
"discussions.comments.comment.endorsedlabel": "Bestätigt von",
|
||||
"discussions.actions.label": "Aktionsmenü",
|
||||
"discussions.editor.submit": "Einreichen",
|
||||
"discussions.editor.submitting": "Übermitteln, einreichen",
|
||||
"discussions.editor.cancel": "Löschen",
|
||||
"discussions.editor.error.empty": "Der Beitragsinhalt darf nicht leer sein.",
|
||||
"discussions.editor.delete.response.title": "Antwort löschen",
|
||||
"discussions.editor.delete.response.description": "Möchten Sie diese Antwort wirklich dauerhaft löschen?",
|
||||
"discussions.editor.delete.comment.title": "Kommentar löschen",
|
||||
"discussions.editor.delete.comment.description": "Möchten Sie diesen Kommentar wirklich dauerhaft löschen?",
|
||||
"discussions.delete.confirmation.button.delete": "Löschen",
|
||||
"discussions.editor.response.response.title": "Unangemessene Inhalte melden?",
|
||||
"discussions.editor.response.description": "Das Diskussionsmoderationsteam überprüft diesen Inhalt und ergreift entsprechende Maßnahmen.",
|
||||
"discussions.editor.report.comment.title": "Unangemessene Inhalte melden?",
|
||||
"discussions.editor.report.comment.description": "Das Diskussionsmoderationsteam überprüft diesen Inhalt und ergreift entsprechende Maßnahmen.",
|
||||
"discussions.editor.comments.editReasonCode": "Grund für die Bearbeitung",
|
||||
"discussions.editor.posts.editReasonCode.error": "Grund für die Bearbeitung auswählen",
|
||||
"discussions.comment.comments.editedBy": "Bearbeitet von",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "Grund",
|
||||
"discussions.post.closedBy": "Post geschlossen von",
|
||||
"discussion.comment.time": "{time} vor",
|
||||
"discussion.thread.notFound": "Thema nicht gefunden",
|
||||
"discussions.comment.sortFilterStatus": "{sort, select, falsch {Älteste zuerst} Wahr {Neueste zuerst} other { {sort} } }",
|
||||
"discussions.topics.sort.message": "Sortiert nach {sortBy}",
|
||||
"discussions.topics.sort.lastActivity": "Letzte Aktivität",
|
||||
"discussions.topics.sort.commentCount": "Die meisten Aktivitäten",
|
||||
"discussions.topics.sort.courseStructure": "Kursstruktur",
|
||||
"discussions.topics.unnamed.label": "Unbenannte Kategorie",
|
||||
"discussions.subtopics.unnamed.label": "Unbenannte Unterkategorie",
|
||||
"tour.action.advance": "Weiter",
|
||||
"tour.action.dismiss": "Abgewiesen",
|
||||
"tour.action.end": "okay",
|
||||
"tour.example.title": "Beispiel",
|
||||
"tour.example.body": "Dies ist eine Beispiel",
|
||||
"learn.course.tabs.navigation.overflow.menu": "Mehr...",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "Themen",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "Alles anzeigen",
|
||||
"discussions.navigation.navigationBar.allPosts": "Alle Artikel",
|
||||
"discussions.navigation.navigationBar.allTopics": "Themen",
|
||||
"discussions.navigation.navigationBar.myPosts": "Meine Posts",
|
||||
"discussions.navigation.navigationBar.learners": "Lernende",
|
||||
"discussions.post.author.anonymous": "Anonym",
|
||||
"discussions.post.addResponse": "Antwort hinzufügen",
|
||||
"discussions.post.lastResponse": "Letzte Antwort {time}",
|
||||
"discussions.post.postedOn": "Gepostet {time} von {author} {authorLabel}",
|
||||
"discussions.post.contentReported": "Gemeldet",
|
||||
"discussions.post.following": "Folge",
|
||||
"discussions.post.follow": "Folgen",
|
||||
"discussions.post.followed": "Gefolgt",
|
||||
"discussions.post.notFollowed": "Nicht gefolgt",
|
||||
"discussions.post.answered": "Beantwortet",
|
||||
"discussions.post.unFollow": "Verlassen",
|
||||
"discussions.post.like": "Wie",
|
||||
"discussions.post.removeLike": "nicht wie",
|
||||
"discussions.post.liked": "gefallen",
|
||||
"discussions.post.likes": "Likes",
|
||||
"discussions.post.viewActivity": "Aktivität anzeigen",
|
||||
"discussions.post.activity": "Aktivität",
|
||||
"discussions.post.closed": "Beitrag für Antworten und Kommentare geschlossen",
|
||||
"discussions.post.relatedTo": "Im Zusammenhang mit",
|
||||
"discussions.editor.delete.post.title": "Beitrag entfernen",
|
||||
"discussions.editor.delete.post.description": "Möchten Sie diesen Beitrag wirklich dauerhaft löschen?",
|
||||
"discussions.post.delete.confirmation.button.delete": "Löschen",
|
||||
"discussions.editor.report.post.title": "Unangemessene Inhalte melden?",
|
||||
"discussions.editor.report.post.description": "Das Diskussionsmoderationsteam überprüft diesen Inhalt und ergreift entsprechende Maßnahmen.",
|
||||
"discussions.post.closePostModal.title": "Beitrag schließen",
|
||||
"discussions.post.closePostModal.text": "Geben Sie einen Grund für das Schließen dieses Beitrags ein. Dies wird nur anderen Moderatoren angezeigt.",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "Grund",
|
||||
"discussions.post.closePostModal.cancel": "Löschen",
|
||||
"discussions.post.closePostModal.confirm": "Beitrag schließen",
|
||||
"discussions.post.label.new": "{count} Neu",
|
||||
"discussions.post.editedBy": "Bearbeitet von",
|
||||
"discussions.post.editReason": "Grund",
|
||||
"discussions.post.postWithoutPreview": "Keine Vorschau vorhanden",
|
||||
"discussions.post.follow.description": "Sie folgen diesem Beitrag",
|
||||
"discussions.post.unfollow.description": "Sie folgen diesem Beitrag nicht",
|
||||
"discussions.app.title": "Diskussionen",
|
||||
"discussions.posts.actionBar.searchAllPosts": "Einträge durchsuchen",
|
||||
"discussions.posts.actionBar.search": "{Seite, Auswahl, Themen {Themen durchsuchen} Beiträge {Alle Beiträge durchsuchen} Lernende {Lernende suchen} myPosts {Alle Beiträge durchsuchen} andere { {page} } }",
|
||||
"discussions.actionBar.searchInfo": "{count} Ergebnisse für "{text}" werden angezeigt",
|
||||
"discussions.actionBar.searchRewriteInfo": "Keine Ergebnisse gefunden für "{searchString}". {count} Ergebnisse für "{textSearchRewrite}" werden angezeigt.",
|
||||
"discussions.actionBar.searchInfoSearching": "Suche...",
|
||||
"discussions.actionBar.clearSearch": "Klare Ergebnisse",
|
||||
"discussion.posts.actionBar.add": "Fügen Sie einen Beitrag hinzu",
|
||||
"discussion.posts.actionBar.close": "Schließen",
|
||||
"discussions.post.editor.type": "Beitragsart",
|
||||
"discussions.post.editor.addPostHeading": "Fügen Sie einen Beitrag hinzu",
|
||||
"discussions.post.editor.editPostHeading": "Beitrag bearbeiten",
|
||||
"discussions.post.editor.typeDescription": "Wenn Sie eine konkrete Antwort für ein Problem suchen, stellen Sie eine Frage. Um sich mit anderen Nutzern über ein Thema auszutauschen und Ideen zu teilen, nutzen Sie die Diskussion. ",
|
||||
"discussions.post.editor.required": "Erforderlich",
|
||||
"discussions.post.editor.questionType": "Frage",
|
||||
"discussions.post.editor.questionDescription": "Sprechen Sie Probleme an, die Antworten erfordern",
|
||||
"discussions.post.editor.discussionType": "Diskussion",
|
||||
"discussions.post.editor.discussionDescription": "Teilen Sie Ideen und beginnen Sie Gespräche",
|
||||
"discussions.post.editor.topicArea": "Themenbereich",
|
||||
"discussions.post.editor.topicAreaDescription": "Fügen Sie Ihren Beitrag zu einem entsprechenden Thema hinzu, um andern das Auffinden zu erleichtern.",
|
||||
"discussions.post.editor.cohortVisibility": "Kohortensichtbarkeit",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "Alle Teilnehmer",
|
||||
"discussions.post.editor.title": "Titel des Beitrags",
|
||||
"discussions.post.editor.titleDescription": "Um zur Teilnahme zu motivieren, fügen Sie bitte einen klaren und beschreibenden Titel hinzu.",
|
||||
"discussions.post.editor.title.error": "Beitragstitel darf nicht leer sein.",
|
||||
"discussions.post.editor.content.error": "Der Beitragsinhalt darf nicht leer sein.",
|
||||
"discussions.post.editor.questionText": "Ihre Frage oder Idee (*)",
|
||||
"discussions.post.editor.preview": "Vorschau",
|
||||
"discussions.post.editor.followPost": "Diesem Eintrag folgen",
|
||||
"discussions.post.editor.anonymousPost": "Anonym posten",
|
||||
"discussions.post.editor.anonymousToPeersPost": "Posten Sie anonym an Kollegen",
|
||||
"discussions.editor.posts.editReasonCode": "Bearbeitungsgrund",
|
||||
"discussions.editor.posts.showPreview.button": "Vorschau zeigen",
|
||||
"discussions.topic.noName.label": "Unbenannte Kategorie",
|
||||
"discussions.subtopic.noName.label": "Unbenannte Unterkategorie",
|
||||
"discussions.posts.filter.showALl": "Alles anzeigen",
|
||||
"discussions.posts.filter.discussions": "Diskussionen",
|
||||
"discussions.posts.filter.questions": "Fragen",
|
||||
"discussions.posts.filter.message": "Status: {filterBy}",
|
||||
"discussions.posts.status.filter.anyStatus": "Jeder Status",
|
||||
"discussions.posts.status.filter.unread": "Ungelesen",
|
||||
"discussions.posts.status.filter.following": "Folge",
|
||||
"discussions.posts.status.filter.reported": "Gemeldet",
|
||||
"discussions.posts.status.filter.unanswered": "Unbeantwortet",
|
||||
"discussions.posts.status.filter.unresponded": "Nicht geantwortet",
|
||||
"discussions.posts.filter.myPosts": "Meine Posts",
|
||||
"discussions.posts.filter.myDiscussions": "Meine Diskussionen",
|
||||
"discussions.posts.filter.myQuestions": "Meine Fragen",
|
||||
"discussions.posts.sort.message": "Sortiert nach {sortBy}",
|
||||
"discussions.posts.sort.lastActivity": "Letzte Aktivität",
|
||||
"discussions.posts.sort.commentCount": "Die meisten Aktivitäten",
|
||||
"discussions.posts.sort.voteCount": "Die meisten Likes",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": "{own, select, falsch {All} Wahr {Own} other { {own} } } {status, select, statusAll {} statusUnread {unread} statusFollowing {followed} statusReported {reported} statusUnanswered {unanswered} statusUnresponded {unresponded} other { {status} } } {type, select, Diskussion { Diskussionen } Frage {questions} all {posts} other { {type} } } {cohortType, select, all {} group {in {cohort} } other { {cohortType} } } sortiert nach {sort, select, lastActivityAt { Letzte Aktivität} commentCount {die meisten Aktivitäten} voteCount {die meisten Likes} other { {sort} } }"
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "Menú de acciones",
|
||||
"discussions.actions.copylink": "Copiar link",
|
||||
"discussions.actions.edit": "Editar",
|
||||
"discussions.actions.pin": "Marcar",
|
||||
"discussions.actions.unpin": "Desmarcar",
|
||||
"discussions.actions.delete": "Borrar",
|
||||
"discussions.confirmation.button.confirm": "Confirmar",
|
||||
"discussions.actions.close": "Cerrar",
|
||||
"discussions.actions.reopen": "Reabrir",
|
||||
"discussions.actions.report": "Informar",
|
||||
"discussions.actions.unreport": "Dejar de denunciar",
|
||||
"discussions.actions.endorse": "Validar",
|
||||
"discussions.actions.unendorse": "Invalidar",
|
||||
"discussions.actions.markAnswered": "Marcar como respondida",
|
||||
"discussions.actions.unMarkAnswered": "Desmarcar como respondida",
|
||||
"discussions.modal.confirmation.button.cancel": "Cancelar",
|
||||
"discussions.empty.allTopics": "Toda la actividad de debate de estos temas se mostrará aquí.",
|
||||
"discussions.empty.allPosts": "Toda la actividad de debate de su curso se mostrará aquí.",
|
||||
"discussions.empty.myPosts": "Las publicaciones con las que has interactuado se mostrarán aquí.",
|
||||
"discussions.empty.topic": "Toda la actividad de debate sobre este tema se mostrará aquí.",
|
||||
"discussions.empty.title": "Nada aquí todavía",
|
||||
"discussions.empty.noPostSelected": "Ninguna publicación seleccionada",
|
||||
"discussions.empty.noTopicSelected": "Ningún tema seleccionado",
|
||||
"discussions.sidebar.noResultsFound": "No se han encontrado resultados",
|
||||
"discussions.sidebar.differentKeywords": "Intenta buscar diferentes palabras clave",
|
||||
"discussions.sidebar.removeKeywords": "Intente buscar diferentes palabras clave o elimine algunos filtros.",
|
||||
"discussions.sidebar.removeKeywordsOnly": "Intenta buscar diferentes palabras clave",
|
||||
"discussions.sidebar.removeFilters": "Pruebe eliminando algunos filtros.",
|
||||
"discussions.empty.iconAlt": "Vacío",
|
||||
"discussions.authors.label.staff": "Equipo del curso",
|
||||
"discussions.authors.label.ta": "ejército de reserva",
|
||||
"discussions.learner.loadMostPosts": "Cargar más mensajes\n",
|
||||
"discussions.post.anonymous.author": "anónimo",
|
||||
"discussion.blackoutBanner.information": "El equipo del curso ha desactivado la publicación en los debates.",
|
||||
"discussions.editor.image.warning.message": "Las imágenes que tengan un ancho o alto superior a 999 px no serán visibles cuando la publicación, la respuesta o el comentario se vean mediante debates en línea del curso.",
|
||||
"discussions.editor.image.warning.title": "¡Advertencia!",
|
||||
"discussions.editor.image.warning.dismiss": "Aceptar",
|
||||
"navigation.course.tabs.label": "Material del Curso",
|
||||
"discussions.topics.backAlt": "Volver a la lista de temas",
|
||||
"discussions.topics.discussions": "{count, plural,\n =0 {Discussion}\n one {# Discussion}\n other {# Discussions}\n }",
|
||||
"discussions.topics.questions": "{count, plural, =0 {Pregunta} una {# Pregunta} otra {# Preguntas} }",
|
||||
"discussions.topics.reported": "{reported} informado",
|
||||
"discussions.topics.previouslyReported": "{previouslyReported} informado anteriormente",
|
||||
"discussions.topics.find.label": "Buscar temas",
|
||||
"discussions.topics.unnamed.section.label": "Sección sin nombre",
|
||||
"discussions.topics.unnamed.subsection.label": "Subsección sin nombre",
|
||||
"discussions.subtopics.unnamed.topic.label": "Tema sin nombre",
|
||||
"discussions.topics.title": "No existe ningún tema",
|
||||
"discussions.topics.createTopic": "Póngase en contacto con su administrador para crear un tema",
|
||||
"discussions.topics.nothing": "Nada aquí todavía",
|
||||
"discussions.topics.archived.label": "Archivado",
|
||||
"discussions.learner.reported": "{reported} informado",
|
||||
"discussions.learner.previouslyReported": "{previouslyReported} informado anteriormente",
|
||||
"discussions.learner.lastLogin": "Último activo {lastActiveTime}",
|
||||
"discussions.learner.loadMostLearners": "Cargar más",
|
||||
"discussions.learner.back": "Volver atrás",
|
||||
"discussions.learner.activityForLearner": "Actividad para {username}",
|
||||
"discussions.learner.mostActivity": "La mayoría de la actividad",
|
||||
"discussions.learner.reportedActivity": "Actividad reportada",
|
||||
"discussions.learner.recentActivity": "Actividad reciente",
|
||||
"discussions.learner.sortFilterStatus": "Todos los alumnos ordenados por {sort, Seleccionar , actividad {actividad reportada} {más actividad} otra {{sort}} }",
|
||||
"discussion.learner.allActivity": "Toda la actividad",
|
||||
"discussion.learner.posts": "Publicaciones",
|
||||
"discussions.comments.comment.addComment": "Añadir comentario",
|
||||
"discussions.comments.comment.addResponse": "Agregar una respuesta",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "Contenido informado para que el personal lo revise",
|
||||
"discussions.actions.back.alt": "Volver a la lista",
|
||||
"discussions.comments.comment.responseCount": "{num, plural, =0 {Sin respuestas} uno {Mostrando # respuesta} otro {Mostrando # respuestas} }",
|
||||
"discussions.comments.comment.endorsedResponseCount": "{num, plural, =0 {Sin respuestas respaldadas} one {Mostrando # respuesta respaldada} other {Mostrando # respuestas respaldadas} }",
|
||||
"discussions.comments.comment.loadMoreComments": "Cargar más comentarios",
|
||||
"discussions.comments.comment.loadMoreResponses": "Cargar más respuestas",
|
||||
"discussions.comments.comment.visibility": "Esta publicación es visible para { grupo , Seleccionar , null {Todos} otros {{ grupo }} }.",
|
||||
"discussions.comments.comment.postedTime": "{postType, Seleccionar , discusión { discusión } pregunta {Question} otro {{postType}} } publicado {relativeTime} por",
|
||||
"discussions.comments.comment.commentTime": "Publicado {relativeTime}",
|
||||
"discussions.comments.comment.answer": "Respuesta",
|
||||
"discussions.comments.comment.answeredlabel": "Marcado como respondido por",
|
||||
"discussions.comments.comment.endorsed": "respaldado",
|
||||
"discussions.comments.comment.endorsedlabel": "Avalado por",
|
||||
"discussions.actions.label": "Menú de acciones",
|
||||
"discussions.editor.submit": "Enviar",
|
||||
"discussions.editor.submitting": "Enviando",
|
||||
"discussions.editor.cancel": "Cancelar",
|
||||
"discussions.editor.error.empty": "El contenido de la publicación no puede estar vacío.",
|
||||
"discussions.editor.delete.response.title": "Eliminar respuesta",
|
||||
"discussions.editor.delete.response.description": "¿Está seguro de que desea eliminar esta respuesta de forma permanente?",
|
||||
"discussions.editor.delete.comment.title": "Eliminar comentario",
|
||||
"discussions.editor.delete.comment.description": "¿Estás seguro de que quieres eliminar este comentario de forma permanente?",
|
||||
"discussions.delete.confirmation.button.delete": "Borrar",
|
||||
"discussions.editor.response.response.title": "¿Denunciar contenido inapropiado?",
|
||||
"discussions.editor.response.description": "El equipo de moderación de debates revisará este contenido y tomará las medidas adecuadas.",
|
||||
"discussions.editor.report.comment.title": "¿Denunciar contenido inapropiado?",
|
||||
"discussions.editor.report.comment.description": "El equipo de moderación de debates revisará este contenido y tomará las medidas adecuadas.",
|
||||
"discussions.editor.comments.editReasonCode": "Razón de la edición",
|
||||
"discussions.editor.posts.editReasonCode.error": "Seleccione el motivo de la edición",
|
||||
"discussions.comment.comments.editedBy": "Editado por",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "Motivo",
|
||||
"discussions.post.closedBy": "Publicación cerrada por",
|
||||
"discussion.comment.time": "hace {time}",
|
||||
"discussion.thread.notFound": "Hilo no encontrado",
|
||||
"discussions.comment.sortFilterStatus": "{sort, Seleccionar , falso {El más antiguo primero} cierto {El más nuevo primero} other {{sort}} }",
|
||||
"discussions.topics.sort.message": "Ordenado por {sortBy}",
|
||||
"discussions.topics.sort.lastActivity": "Actividad reciente",
|
||||
"discussions.topics.sort.commentCount": "La mayoría de la actividad",
|
||||
"discussions.topics.sort.courseStructure": "Estructura del curso",
|
||||
"discussions.topics.unnamed.label": "Categoría sin nombre",
|
||||
"discussions.subtopics.unnamed.label": "Subcategoría sin nombre",
|
||||
"tour.action.advance": "Siguiente",
|
||||
"tour.action.dismiss": "Descartar",
|
||||
"tour.action.end": "Okey",
|
||||
"tour.example.title": "ejemplo Tour",
|
||||
"tour.example.body": "Este es un recorrido ejemplo .",
|
||||
"learn.course.tabs.navigation.overflow.menu": "Más...",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "Temas",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "Mostrar todo",
|
||||
"discussions.navigation.navigationBar.allPosts": "Todos los mensajes",
|
||||
"discussions.navigation.navigationBar.allTopics": "Temas",
|
||||
"discussions.navigation.navigationBar.myPosts": "Mis publicaciones",
|
||||
"discussions.navigation.navigationBar.learners": "Estudiantes",
|
||||
"discussions.post.author.anonymous": "anónimo",
|
||||
"discussions.post.addResponse": "Añadir respuesta",
|
||||
"discussions.post.lastResponse": "Última respuesta {time}",
|
||||
"discussions.post.postedOn": "Publicado {time} por {author} {authorLabel}",
|
||||
"discussions.post.contentReported": "Informado",
|
||||
"discussions.post.following": "Siguiendo",
|
||||
"discussions.post.follow": "Seguir",
|
||||
"discussions.post.followed": "Seguido",
|
||||
"discussions.post.notFollowed": "No seguido",
|
||||
"discussions.post.answered": "Respondido",
|
||||
"discussions.post.unFollow": "Dejar de seguir",
|
||||
"discussions.post.like": "Me gusta",
|
||||
"discussions.post.removeLike": "Dejar de gustar",
|
||||
"discussions.post.liked": "Me gusta",
|
||||
"discussions.post.likes": "Me gustan",
|
||||
"discussions.post.viewActivity": "Ver actividad",
|
||||
"discussions.post.activity": "Actividad",
|
||||
"discussions.post.closed": "Publicación cerrada por respuestas y comentarios.",
|
||||
"discussions.post.relatedTo": "Relacionado con",
|
||||
"discussions.editor.delete.post.title": "Eliminar mensaje",
|
||||
"discussions.editor.delete.post.description": "¿Seguro que quieres eliminar esta publicación de forma permanente?",
|
||||
"discussions.post.delete.confirmation.button.delete": "Borrar",
|
||||
"discussions.editor.report.post.title": "¿Denunciar contenido inapropiado?",
|
||||
"discussions.editor.report.post.description": "El equipo de moderación de debates revisará este contenido y tomará las medidas adecuadas.",
|
||||
"discussions.post.closePostModal.title": "Cerrar publicación",
|
||||
"discussions.post.closePostModal.text": "Escribe un motivo para cerrar esta publicación. Esto solo se mostrará a otros moderadores.",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "Motivo",
|
||||
"discussions.post.closePostModal.cancel": "Cancelar",
|
||||
"discussions.post.closePostModal.confirm": "Cerrar publicación",
|
||||
"discussions.post.label.new": "{count} Nuevo",
|
||||
"discussions.post.editedBy": "Editado por",
|
||||
"discussions.post.editReason": "Motivo",
|
||||
"discussions.post.postWithoutPreview": "No hay vista previa disponible",
|
||||
"discussions.post.follow.description": "estás siguiendo esta publicación",
|
||||
"discussions.post.unfollow.description": "No estás siguiendo esta publicación",
|
||||
"discussions.app.title": "Debates",
|
||||
"discussions.posts.actionBar.searchAllPosts": "Buscar en todas las publicaciones",
|
||||
"discussions.posts.actionBar.search": "{página, Seleccionar , temas {Buscar temas} publicaciones {Buscar todas las publicaciones} alumnos {Buscar alumnos} myPosts {Buscar todas las publicaciones} otros {{page}} }",
|
||||
"discussions.actionBar.searchInfo": "Mostrando resultados de {count} para "{text}"",
|
||||
"discussions.actionBar.searchRewriteInfo": "No results found for \"{searchString}\". Showing {count} results for \"{textSearchRewrite}\".",
|
||||
"discussions.actionBar.searchInfoSearching": "Buscando..",
|
||||
"discussions.actionBar.clearSearch": "Borrar resultados",
|
||||
"discussion.posts.actionBar.add": "Agregar una publicación",
|
||||
"discussion.posts.actionBar.close": "Cerrar",
|
||||
"discussions.post.editor.type": "Tipo de publicación",
|
||||
"discussions.post.editor.addPostHeading": "Agregar una publicación",
|
||||
"discussions.post.editor.editPostHeading": "Editar post",
|
||||
"discussions.post.editor.typeDescription": "Las preguntas plantean cuestiones que necesitan respuestas. En la sección \"Debates\" comparte ideas y comienza conversaciones.",
|
||||
"discussions.post.editor.required": "Obligatorio",
|
||||
"discussions.post.editor.questionType": "Pregunta",
|
||||
"discussions.post.editor.questionDescription": "Plantear cuestiones que necesiten respuestas",
|
||||
"discussions.post.editor.discussionType": "Debate",
|
||||
"discussions.post.editor.discussionDescription": "Comparte ideas e inicia conversaciones",
|
||||
"discussions.post.editor.topicArea": "Área de temas",
|
||||
"discussions.post.editor.topicAreaDescription": "Agrega tu publicación a un tema relevante para ayudar a los demás a encontrarlo.",
|
||||
"discussions.post.editor.cohortVisibility": "Visibilidad de la cohorte",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "Todos los estudiantes",
|
||||
"discussions.post.editor.title": "Título de la publicación",
|
||||
"discussions.post.editor.titleDescription": "Agrega un título claro y descriptivo para fomentar la participación.",
|
||||
"discussions.post.editor.title.error": "El título de la publicación no puede estar vacío.",
|
||||
"discussions.post.editor.content.error": "El contenido de la publicación no puede estar vacío.",
|
||||
"discussions.post.editor.questionText": "Tu pregunta o idea (requerido)",
|
||||
"discussions.post.editor.preview": "Vista previa",
|
||||
"discussions.post.editor.followPost": "Seguir esta publicación",
|
||||
"discussions.post.editor.anonymousPost": "Publicar de forma anónima",
|
||||
"discussions.post.editor.anonymousToPeersPost": "Publicar de forma anónima para tus compañeros",
|
||||
"discussions.editor.posts.editReasonCode": "Motivo de la edición",
|
||||
"discussions.editor.posts.showPreview.button": "Mostrar vista previa",
|
||||
"discussions.topic.noName.label": "Categoría sin nombre",
|
||||
"discussions.subtopic.noName.label": "Subcategoría sin nombre",
|
||||
"discussions.posts.filter.showALl": "Mostrar todo",
|
||||
"discussions.posts.filter.discussions": "Debates\n",
|
||||
"discussions.posts.filter.questions": "Preguntas",
|
||||
"discussions.posts.filter.message": "Estado: {filterBy}",
|
||||
"discussions.posts.status.filter.anyStatus": "Cualquier estado",
|
||||
"discussions.posts.status.filter.unread": "Sin leer",
|
||||
"discussions.posts.status.filter.following": "Siguiendo",
|
||||
"discussions.posts.status.filter.reported": "Informado",
|
||||
"discussions.posts.status.filter.unanswered": "Sin responder",
|
||||
"discussions.posts.status.filter.unresponded": "Sin respuesta",
|
||||
"discussions.posts.filter.myPosts": "Mis publicaciones",
|
||||
"discussions.posts.filter.myDiscussions": "Mis debates",
|
||||
"discussions.posts.filter.myQuestions": "Mis preguntas",
|
||||
"discussions.posts.sort.message": "Ordenado por {sortBy}",
|
||||
"discussions.posts.sort.lastActivity": "Actividad reciente",
|
||||
"discussions.posts.sort.commentCount": "La mayoría de la actividad",
|
||||
"discussions.posts.sort.voteCount": "La mayoría me gusta",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": "{propio, Seleccionar , falso {Todos} cierto {Propio} otro {{propio}} } {status, Seleccionar , statusAll {} statusUnread {unread} statusFollowing {followed} statusReported {reported} statusUnan respondió {sin respuesta} estado sin respuesta {sin respuesta} otro { {status}} } {type, Seleccionar , discusión { discusiones } pregunta {preguntas} todas las {publicaciones} other {{type}} } {cohortType, Seleccionar , all {} grupo { en { dividir en cohortes }} otro {{cohortType}} } ordenado por {ordenar, Seleccionar , lastActivityAt {actividad reciente} commentCount {más actividad} voteCount {más me gusta} otros {{sort}} }"
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "Menú de acciones",
|
||||
"discussions.actions.copylink": "Copiar link",
|
||||
"discussions.actions.edit": "Editar",
|
||||
"discussions.actions.pin": "Alfiler",
|
||||
"discussions.actions.unpin": "Desprender",
|
||||
"discussions.actions.delete": "Borrar",
|
||||
"discussions.confirmation.button.confirm": "Confirmar",
|
||||
"discussions.actions.close": "Cerrar",
|
||||
"discussions.actions.reopen": "Reabrir",
|
||||
"discussions.actions.report": "Informar",
|
||||
"discussions.actions.unreport": "No informar",
|
||||
"discussions.actions.endorse": "Validar",
|
||||
"discussions.actions.unendorse": "Invalidar",
|
||||
"discussions.actions.markAnswered": "Marcar como respondida",
|
||||
"discussions.actions.unMarkAnswered": "Desmarcar como respondida",
|
||||
"discussions.modal.confirmation.button.cancel": "Cancelar",
|
||||
"discussions.empty.allTopics": "Toda la actividad de debate de estos temas se mostrará aquí.",
|
||||
"discussions.empty.allPosts": "Toda la actividad de debate de su curso se mostrará aquí.",
|
||||
"discussions.empty.myPosts": "Las publicaciones con las que has interactuado se mostrarán aquí.",
|
||||
"discussions.empty.topic": "Toda la actividad de debate sobre este tema se mostrará aquí.",
|
||||
"discussions.empty.title": "Nada aquí todavía",
|
||||
"discussions.empty.noPostSelected": "Ninguna publicación seleccionada",
|
||||
"discussions.empty.noTopicSelected": "Ningún tema seleccionado",
|
||||
"discussions.sidebar.noResultsFound": "No se han encontrado resultados",
|
||||
"discussions.sidebar.differentKeywords": "Intenta buscar diferentes palabras clave",
|
||||
"discussions.sidebar.removeKeywords": "Intente buscar diferentes palabras clave o elimine algunos filtros.",
|
||||
"discussions.sidebar.removeKeywordsOnly": "Intenta buscar diferentes palabras clave",
|
||||
"discussions.sidebar.removeFilters": "Prueba a eliminar algunos filtros.",
|
||||
"discussions.empty.iconAlt": "Vacío",
|
||||
"discussions.authors.label.staff": "Personal",
|
||||
"discussions.authors.label.ta": "ejército de reserva",
|
||||
"discussions.learner.loadMostPosts": "Cargar más entradas",
|
||||
"discussions.post.anonymous.author": "anónimo",
|
||||
"discussion.blackoutBanner.information": "El equipo del curso ha desactivado la publicación en los debates.",
|
||||
"discussions.editor.image.warning.message": "Las imágenes que tengan un ancho o alto superior a 999 px no serán visibles cuando la publicación, la respuesta o el comentario se vean mediante debates en línea del curso.",
|
||||
"discussions.editor.image.warning.title": "¡Advertencia!",
|
||||
"discussions.editor.image.warning.dismiss": "Ok",
|
||||
"navigation.course.tabs.label": "Material del curso",
|
||||
"discussions.topics.backAlt": "Volver a la lista de temas",
|
||||
"discussions.topics.discussions": "{count, plural, =0 {Discusión} uno {# Discusión} otro {# Discusiones} }",
|
||||
"discussions.topics.questions": "{count, plural, =0 {Pregunta} una {# Pregunta} otra {# Preguntas} }",
|
||||
"discussions.topics.reported": "{reported} denunciado",
|
||||
"discussions.topics.previouslyReported": "{previouslyReported} informado anteriormente",
|
||||
"discussions.topics.find.label": "Buscar temas",
|
||||
"discussions.topics.unnamed.section.label": "Sección sin nombre",
|
||||
"discussions.topics.unnamed.subsection.label": "Subsección sin nombre",
|
||||
"discussions.subtopics.unnamed.topic.label": "Tema sin nombre",
|
||||
"discussions.topics.title": "No existe ningún tema",
|
||||
"discussions.topics.createTopic": "Póngase en contacto con su administrador para crear un tema",
|
||||
"discussions.topics.nothing": "Nada aquí todavía",
|
||||
"discussions.topics.archived.label": "Archivado",
|
||||
"discussions.learner.reported": "{reported} reportado",
|
||||
"discussions.learner.previouslyReported": "{previouslyReported} informado anteriormente",
|
||||
"discussions.learner.lastLogin": "Último activo {lastActiveTime}",
|
||||
"discussions.learner.loadMostLearners": "Cargar más",
|
||||
"discussions.learner.back": "atrás",
|
||||
"discussions.learner.activityForLearner": "Actividad para {username}",
|
||||
"discussions.learner.mostActivity": "La mayoría de la actividad",
|
||||
"discussions.learner.reportedActivity": "Actividad reportada",
|
||||
"discussions.learner.recentActivity": "Actividad reciente",
|
||||
"discussions.learner.sortFilterStatus": "Todos los alumnos ordenados por {ordenar, seleccionar, marcar {actividad reportada} actividad {más actividad} otro { {sort} } }",
|
||||
"discussion.learner.allActivity": "Toda la actividad",
|
||||
"discussion.learner.posts": "Publicaciones",
|
||||
"discussions.comments.comment.addComment": "Agregar comentario",
|
||||
"discussions.comments.comment.addResponse": "Agregar una respuesta",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "Contenido informado para que el personal lo revise",
|
||||
"discussions.actions.back.alt": "Volver a la lista",
|
||||
"discussions.comments.comment.responseCount": "{num, plural, =0 {Sin respuestas} one {Mostrando # respuesta} other {Mostrando # respuestas} }",
|
||||
"discussions.comments.comment.endorsedResponseCount": "{num, plural, =0 {Sin respuestas respaldadas} one {Mostrando # respuesta respaldada} other {Mostrando # respuestas respaldadas} }",
|
||||
"discussions.comments.comment.loadMoreComments": "Cargar más comentarios",
|
||||
"discussions.comments.comment.loadMoreResponses": "Cargar más respuestas",
|
||||
"discussions.comments.comment.visibility": "Esta publicación es visible para {group, select, null {Todos} otros { {group} } }.",
|
||||
"discussions.comments.comment.postedTime": "{postType, select, discusión {Discusión} pregunta {Pregunta} otro { {postType} } } publicado {relativeTime} por",
|
||||
"discussions.comments.comment.commentTime": "Publicado {relativeTime}",
|
||||
"discussions.comments.comment.answer": "Respuesta",
|
||||
"discussions.comments.comment.answeredlabel": "Marcado como respondido por",
|
||||
"discussions.comments.comment.endorsed": "Respaldado",
|
||||
"discussions.comments.comment.endorsedlabel": "Avalado por",
|
||||
"discussions.actions.label": "Menú de acciones",
|
||||
"discussions.editor.submit": "Enviar",
|
||||
"discussions.editor.submitting": "Enviar",
|
||||
"discussions.editor.cancel": "Cancelar",
|
||||
"discussions.editor.error.empty": "El contenido de la publicación no puede estar vacío.",
|
||||
"discussions.editor.delete.response.title": "Eliminar respuesta",
|
||||
"discussions.editor.delete.response.description": "¿Está seguro de que desea eliminar esta respuesta de forma permanente?",
|
||||
"discussions.editor.delete.comment.title": "Eliminar comentario",
|
||||
"discussions.editor.delete.comment.description": "¿Estás seguro de que quieres eliminar este comentario de forma permanente?",
|
||||
"discussions.delete.confirmation.button.delete": "Borrar",
|
||||
"discussions.editor.response.response.title": "¿Denunciar contenido inapropiado?",
|
||||
"discussions.editor.response.description": "El equipo de moderación de debates revisará este contenido y tomará las medidas adecuadas.",
|
||||
"discussions.editor.report.comment.title": "¿Denunciar contenido inapropiado?",
|
||||
"discussions.editor.report.comment.description": "El equipo de moderación de debates revisará este contenido y tomará las medidas adecuadas.",
|
||||
"discussions.editor.comments.editReasonCode": "Motivo de la edición",
|
||||
"discussions.editor.posts.editReasonCode.error": "Seleccione el motivo de la edición",
|
||||
"discussions.comment.comments.editedBy": "Editado por",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "Motivo",
|
||||
"discussions.post.closedBy": "Publicación cerrada por",
|
||||
"discussion.comment.time": "{time} hace",
|
||||
"discussion.thread.notFound": "Hilo no encontrado",
|
||||
"discussions.comment.sortFilterStatus": "{sort, select, false {El más antiguo primero} true {El más nuevo primero} other { {sort} } }",
|
||||
"discussions.topics.sort.message": "Ordenado por {sortBy}",
|
||||
"discussions.topics.sort.lastActivity": "Actividad reciente",
|
||||
"discussions.topics.sort.commentCount": "La mayoría de la actividad",
|
||||
"discussions.topics.sort.courseStructure": "Estructura del curso",
|
||||
"discussions.topics.unnamed.label": "Categoría sin nombre",
|
||||
"discussions.subtopics.unnamed.label": "Subcategoría sin nombre",
|
||||
"tour.action.advance": "Próximo",
|
||||
"tour.action.dismiss": "Descartar",
|
||||
"tour.action.end": "Ok",
|
||||
"tour.example.title": "Tour de ejemplo",
|
||||
"tour.example.body": "Este es un recorrido de ejemplo.",
|
||||
"learn.course.tabs.navigation.overflow.menu": "Más...",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "Temas",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "Mostrar todo",
|
||||
"discussions.navigation.navigationBar.allPosts": "Todos los mensajes",
|
||||
"discussions.navigation.navigationBar.allTopics": "Temas",
|
||||
"discussions.navigation.navigationBar.myPosts": "Mis publicaciones",
|
||||
"discussions.navigation.navigationBar.learners": "Estudiantes",
|
||||
"discussions.post.author.anonymous": "anónimo",
|
||||
"discussions.post.addResponse": "Añadir respuesta",
|
||||
"discussions.post.lastResponse": "Última respuesta {time}",
|
||||
"discussions.post.postedOn": "Publicado {time} por {author} {authorLabel}",
|
||||
"discussions.post.contentReported": "Reportado",
|
||||
"discussions.post.following": "Siguiendo",
|
||||
"discussions.post.follow": "Seguir",
|
||||
"discussions.post.followed": "Seguido",
|
||||
"discussions.post.notFollowed": "No seguido",
|
||||
"discussions.post.answered": "Una vez respondido",
|
||||
"discussions.post.unFollow": "Dejar de seguir",
|
||||
"discussions.post.like": "Como",
|
||||
"discussions.post.removeLike": "A diferencia de",
|
||||
"discussions.post.liked": "apreciado",
|
||||
"discussions.post.likes": "gustos",
|
||||
"discussions.post.viewActivity": "Ver actividad",
|
||||
"discussions.post.activity": "Actividad ",
|
||||
"discussions.post.closed": "Publicación cerrada por respuestas y comentarios.",
|
||||
"discussions.post.relatedTo": "Relacionado con",
|
||||
"discussions.editor.delete.post.title": "Eliminar mensaje",
|
||||
"discussions.editor.delete.post.description": "¿Seguro que quieres eliminar esta publicación de forma permanente?",
|
||||
"discussions.post.delete.confirmation.button.delete": "Borrar",
|
||||
"discussions.editor.report.post.title": "¿Denunciar contenido inapropiado?",
|
||||
"discussions.editor.report.post.description": "El equipo de moderación de debates revisará este contenido y tomará las medidas adecuadas.",
|
||||
"discussions.post.closePostModal.title": "Cerrar publicación",
|
||||
"discussions.post.closePostModal.text": "Introduce un motivo para cerrar esta publicación. Esto solo se mostrará a otros moderadores.",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "Razón",
|
||||
"discussions.post.closePostModal.cancel": "Cancelar",
|
||||
"discussions.post.closePostModal.confirm": "Cerrar publicación",
|
||||
"discussions.post.label.new": "{count} Nuevo",
|
||||
"discussions.post.editedBy": "Editado por",
|
||||
"discussions.post.editReason": "Razón",
|
||||
"discussions.post.postWithoutPreview": "No hay vista previa disponible",
|
||||
"discussions.post.follow.description": "estás siguiendo esta publicación",
|
||||
"discussions.post.unfollow.description": "no estas siguiendo esta publicación",
|
||||
"discussions.app.title": "Debates",
|
||||
"discussions.posts.actionBar.searchAllPosts": "Buscar todas las publicaciones",
|
||||
"discussions.posts.actionBar.search": "{página, seleccionar, temas {Buscar temas} publicaciones {Buscar todas las publicaciones} alumnos {Buscar alumnos} myPosts {Buscar todas las publicaciones} other { {page} } }",
|
||||
"discussions.actionBar.searchInfo": "Mostrando resultados {count} para \"{text}\"",
|
||||
"discussions.actionBar.searchRewriteInfo": "No results found for \"{searchString}\". Showing {count} results for \"{textSearchRewrite}\".",
|
||||
"discussions.actionBar.searchInfoSearching": "Buscando...",
|
||||
"discussions.actionBar.clearSearch": "Borrar resultados",
|
||||
"discussion.posts.actionBar.add": "Agregar una publicación",
|
||||
"discussion.posts.actionBar.close": "Cerrar",
|
||||
"discussions.post.editor.type": "Tipo de publicación",
|
||||
"discussions.post.editor.addPostHeading": "Agregar una publicación",
|
||||
"discussions.post.editor.editPostHeading": "Editar publicación",
|
||||
"discussions.post.editor.typeDescription": "Las preguntas plantean problemas que necesitan respuestas. Las discusiones comparten ideas y comienzan conversaciones.",
|
||||
"discussions.post.editor.required": "Requerido",
|
||||
"discussions.post.editor.questionType": "Pregunta",
|
||||
"discussions.post.editor.questionDescription": "Plantear problemas que necesitan respuestas",
|
||||
"discussions.post.editor.discussionType": "Debate",
|
||||
"discussions.post.editor.discussionDescription": "Comparte ideas e inicia conversaciones",
|
||||
"discussions.post.editor.topicArea": "Área de temas",
|
||||
"discussions.post.editor.topicAreaDescription": "Agregar la publicación a un tema relevante para ayudar a otros a encontrarla.",
|
||||
"discussions.post.editor.cohortVisibility": "Visibilidad de la cohorte",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "Todos los estudiantes",
|
||||
"discussions.post.editor.title": "Título de la entrada",
|
||||
"discussions.post.editor.titleDescription": "Agregue un título claro y descriptivo para fomentar la participación.",
|
||||
"discussions.post.editor.title.error": "El título de la publicación no puede estar vacío.",
|
||||
"discussions.post.editor.content.error": "El contenido de la publicación no puede estar vacío.",
|
||||
"discussions.post.editor.questionText": "Su pregunta o idea (obligatorio)",
|
||||
"discussions.post.editor.preview": "Vista previa",
|
||||
"discussions.post.editor.followPost": "Seguir esta publicación",
|
||||
"discussions.post.editor.anonymousPost": "Publicar de forma anónima",
|
||||
"discussions.post.editor.anonymousToPeersPost": "Publicar de forma anónima a los compañeros",
|
||||
"discussions.editor.posts.editReasonCode": "Motivo de la edición",
|
||||
"discussions.editor.posts.showPreview.button": "Mostrar vista previa",
|
||||
"discussions.topic.noName.label": "Categoría sin nombre",
|
||||
"discussions.subtopic.noName.label": "Subcategoría sin nombre",
|
||||
"discussions.posts.filter.showALl": "Mostrar todo",
|
||||
"discussions.posts.filter.discussions": "Debates",
|
||||
"discussions.posts.filter.questions": "Preguntas",
|
||||
"discussions.posts.filter.message": "Estado: {filterBy}",
|
||||
"discussions.posts.status.filter.anyStatus": "Cualquier estatus",
|
||||
"discussions.posts.status.filter.unread": "No leído",
|
||||
"discussions.posts.status.filter.following": "Siguiendo",
|
||||
"discussions.posts.status.filter.reported": "Reportado",
|
||||
"discussions.posts.status.filter.unanswered": "Sin respuesta",
|
||||
"discussions.posts.status.filter.unresponded": "Sin respuesta",
|
||||
"discussions.posts.filter.myPosts": "Mis publicaciones",
|
||||
"discussions.posts.filter.myDiscussions": "Mis debates",
|
||||
"discussions.posts.filter.myQuestions": "Mis preguntas",
|
||||
"discussions.posts.sort.message": "Ordenado por {sortBy}",
|
||||
"discussions.posts.sort.lastActivity": "Actividad reciente",
|
||||
"discussions.posts.sort.commentCount": "La mayoría de la actividad",
|
||||
"discussions.posts.sort.voteCount": "La mayoría me gusta",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": "{propio, seleccionar, falso {Todos} verdadero {Propio} otro { {own} } } {status, select, statusAll {} statusUnread {no leído} statusSeguimiento {seguido} statusReported {reportado} statusUnanswered {sin responder} statusUnresponded {sin responder} otro { {status} } } {escribir, seleccionar, discusión {discusiones} pregunta {preguntas} todas las {publicaciones} otras { {type} } } {cohortType, seleccionar, todas {} grupo {en {cohort} } otras { {cohortType} } } ordenado por {sort, select, lastActivityAt { actividad reciente} commentCount {más actividad} voteCount {más me gusta} otro { {sort} } }"
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "Menú de acciones",
|
||||
"discussions.actions.copylink": "Copiar link",
|
||||
"discussions.actions.edit": "Editar",
|
||||
"discussions.actions.pin": "Marcar",
|
||||
"discussions.actions.unpin": "Desmarcar",
|
||||
"discussions.actions.delete": "Eliminar",
|
||||
"discussions.confirmation.button.confirm": "Confirmar",
|
||||
"discussions.actions.close": "Cerrar",
|
||||
"discussions.actions.reopen": "Reabrir",
|
||||
"discussions.actions.report": "Informar",
|
||||
"discussions.actions.unreport": "No informar",
|
||||
"discussions.actions.endorse": "Apoyar",
|
||||
"discussions.actions.unendorse": "No apoyar",
|
||||
"discussions.actions.markAnswered": "Marcar como respondida",
|
||||
"discussions.actions.unMarkAnswered": "Desmarcar como respondida",
|
||||
"discussions.modal.confirmation.button.cancel": "Cancelar",
|
||||
"discussions.empty.allTopics": "Toda la actividad de debate de estos temas se mostrará aquí.",
|
||||
"discussions.empty.allPosts": "Toda la actividad de debate sobre este tema se mostrará aquí.",
|
||||
"discussions.empty.myPosts": "Las publicaciones con las que has interactuado se mostrarán aquí.",
|
||||
"discussions.empty.topic": "Toda la actividad de debate sobre este tema se mostrará aquí.",
|
||||
"discussions.empty.title": "Nada aquí todavía",
|
||||
"discussions.empty.noPostSelected": "Ninguna publicación seleccionada",
|
||||
"discussions.empty.noTopicSelected": "Ningún tema seleccionado",
|
||||
"discussions.sidebar.noResultsFound": "No se han encontrado resultados",
|
||||
"discussions.sidebar.differentKeywords": "Intente buscar diferentes palabras clave",
|
||||
"discussions.sidebar.removeKeywords": "Intente buscar diferentes palabras clave o elimine algunos filtros.",
|
||||
"discussions.sidebar.removeKeywordsOnly": "Intenta buscar diferentes palabras clave",
|
||||
"discussions.sidebar.removeFilters": "Pruebe eliminar algunos filtros.",
|
||||
"discussions.empty.iconAlt": "Vacío",
|
||||
"discussions.authors.label.staff": "Equipo docente",
|
||||
"discussions.authors.label.ta": "TA",
|
||||
"discussions.learner.loadMostPosts": "Cargar más entradas",
|
||||
"discussions.post.anonymous.author": "anónimo",
|
||||
"discussion.blackoutBanner.information": "El equipo del curso ha desactivado temporalmente la publicación en los debates.",
|
||||
"discussions.editor.image.warning.message": "Las imágenes que tengan un ancho o alto superior a 999 px no serán visibles cuando la publicación, la respuesta o el comentario se vean mediante debates en línea del curso.",
|
||||
"discussions.editor.image.warning.title": "¡Advertencia!",
|
||||
"discussions.editor.image.warning.dismiss": "Aceptar",
|
||||
"navigation.course.tabs.label": "Material del curso",
|
||||
"discussions.topics.backAlt": "Volver a la lista de temas",
|
||||
"discussions.topics.discussions": "{count, plural, =0 {Discusión} one {# Discusión} other {# Discusiones} }",
|
||||
"discussions.topics.questions": "{count, plural, =0 {Discusión} one {# Discusión} other {# Discusiones} }",
|
||||
"discussions.topics.reported": "{reported} informado",
|
||||
"discussions.topics.previouslyReported": "{previouslyReported} informado anteriormente",
|
||||
"discussions.topics.find.label": "Buscar temas",
|
||||
"discussions.topics.unnamed.section.label": "Sección sin nombre",
|
||||
"discussions.topics.unnamed.subsection.label": "Subsección sin nombre",
|
||||
"discussions.subtopics.unnamed.topic.label": "Tema sin nombre",
|
||||
"discussions.topics.title": "No existe ningún tema",
|
||||
"discussions.topics.createTopic": "Póngase en contacto con su administrador para crear un tema",
|
||||
"discussions.topics.nothing": "Nada aquí todavía",
|
||||
"discussions.topics.archived.label": "Archivado",
|
||||
"discussions.learner.reported": "{reported} informado",
|
||||
"discussions.learner.previouslyReported": "{previouslyReported} informado anteriormente",
|
||||
"discussions.learner.lastLogin": "Último vez activo {lastActiveTime}",
|
||||
"discussions.learner.loadMostLearners": "Cargar más",
|
||||
"discussions.learner.back": "Volver",
|
||||
"discussions.learner.activityForLearner": "Actividad para {username}",
|
||||
"discussions.learner.mostActivity": "La mayoría de la actividad",
|
||||
"discussions.learner.reportedActivity": "Actividad reportada",
|
||||
"discussions.learner.recentActivity": "Actividad reciente",
|
||||
"discussions.learner.sortFilterStatus": "Todos los alumnos ordenados por {sort, Seleccionar , actividad {actividad reportada} {más actividad} otra {{sort}} }",
|
||||
"discussion.learner.allActivity": "Toda la actividad",
|
||||
"discussion.learner.posts": "Publicación",
|
||||
"discussions.comments.comment.addComment": "Añadir comentario",
|
||||
"discussions.comments.comment.addResponse": "Agregar una respuesta",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "Contenido informado para que el personal lo revise",
|
||||
"discussions.actions.back.alt": "Volver a la lista",
|
||||
"discussions.comments.comment.responseCount": "{num, plural, =0 {Sin respuestas} uno {Mostrando # respuesta} otro {Mostrando # respuestas} }",
|
||||
"discussions.comments.comment.endorsedResponseCount": "{num, plural, =0 {Sin respuestas promocionado } one {Mostrando # respuesta promocionado } other {Mostrando # respuestas promocionado } }",
|
||||
"discussions.comments.comment.loadMoreComments": "Cargar más comentarios",
|
||||
"discussions.comments.comment.loadMoreResponses": "Cargar más respuestas",
|
||||
"discussions.comments.comment.visibility": "Esta publicar es visible para {group, select, null {Everyone} other { {group} } }.",
|
||||
"discussions.comments.comment.postedTime": "{postType, select, foro {foro} question {Question} other { {postType} } } publicado {relativeTime} por",
|
||||
"discussions.comments.comment.commentTime": "Publicado {relativeTime}",
|
||||
"discussions.comments.comment.answer": "Respuesta",
|
||||
"discussions.comments.comment.answeredlabel": "Marcado como respondido por",
|
||||
"discussions.comments.comment.endorsed": "respaldado",
|
||||
"discussions.comments.comment.endorsedlabel": "Avalado por",
|
||||
"discussions.actions.label": "Menú de acciones",
|
||||
"discussions.editor.submit": "Enviar",
|
||||
"discussions.editor.submitting": "Enviando",
|
||||
"discussions.editor.cancel": "Cancelar",
|
||||
"discussions.editor.error.empty": "El contenido de la publicación no puede estar vacío.",
|
||||
"discussions.editor.delete.response.title": "Eliminar respuesta",
|
||||
"discussions.editor.delete.response.description": "¿Está seguro de que desea eliminar esta respuesta de forma permanente?",
|
||||
"discussions.editor.delete.comment.title": "Eliminar comentario",
|
||||
"discussions.editor.delete.comment.description": "¿Estás seguro de que desea eliminar este comentario de forma permanente?",
|
||||
"discussions.delete.confirmation.button.delete": "Eliminar",
|
||||
"discussions.editor.response.response.title": "¿Denunciar contenido inapropiado?",
|
||||
"discussions.editor.response.description": "El equipo de moderación de debates revisará este contenido y tomará las medidas adecuadas.",
|
||||
"discussions.editor.report.comment.title": "¿Denunciar contenido inapropiado?",
|
||||
"discussions.editor.report.comment.description": "El equipo de moderación de debates revisará este contenido y tomará las medidas adecuadas.",
|
||||
"discussions.editor.comments.editReasonCode": "Motivo de la edición",
|
||||
"discussions.editor.posts.editReasonCode.error": "Seleccione el motivo de la edición",
|
||||
"discussions.comment.comments.editedBy": "Editado por",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "Motivo",
|
||||
"discussions.post.closedBy": "Publicación cerrada por",
|
||||
"discussion.comment.time": "hace {time}",
|
||||
"discussion.thread.notFound": "Tema no encontrado",
|
||||
"discussions.comment.sortFilterStatus": "{sort, select, falso {El más antiguo primero} verdadero {El más nuevo primero} other { {sort} } }",
|
||||
"discussions.topics.sort.message": "Ordenado por {sortBy}",
|
||||
"discussions.topics.sort.lastActivity": "Actividad reciente",
|
||||
"discussions.topics.sort.commentCount": "La mayoría de la actividad",
|
||||
"discussions.topics.sort.courseStructure": "Estructura del curso",
|
||||
"discussions.topics.unnamed.label": "Categoría sin nombre",
|
||||
"discussions.subtopics.unnamed.label": "Subcategoría sin nombre",
|
||||
"tour.action.advance": "Siguiente",
|
||||
"tour.action.dismiss": "Descartar",
|
||||
"tour.action.end": "De acuerdo",
|
||||
"tour.example.title": "",
|
||||
"tour.example.body": "",
|
||||
"learn.course.tabs.navigation.overflow.menu": "Más...",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "Temas",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "Mostrar todo",
|
||||
"discussions.navigation.navigationBar.allPosts": "Todos los mensajes",
|
||||
"discussions.navigation.navigationBar.allTopics": "Temas",
|
||||
"discussions.navigation.navigationBar.myPosts": "Mis publicaciones",
|
||||
"discussions.navigation.navigationBar.learners": "Estudiantes",
|
||||
"discussions.post.author.anonymous": "anónimo",
|
||||
"discussions.post.addResponse": "Agregar respuesta",
|
||||
"discussions.post.lastResponse": "Última respuesta {time}",
|
||||
"discussions.post.postedOn": "Publicado {time} por {author} {authorLabel}",
|
||||
"discussions.post.contentReported": "Informado",
|
||||
"discussions.post.following": "Siguiendo",
|
||||
"discussions.post.follow": "Seguir",
|
||||
"discussions.post.followed": "Seguido",
|
||||
"discussions.post.notFollowed": "No seguido",
|
||||
"discussions.post.answered": "Respondido",
|
||||
"discussions.post.unFollow": "Dejar de seguir",
|
||||
"discussions.post.like": "Me gusta",
|
||||
"discussions.post.removeLike": "No me gusta",
|
||||
"discussions.post.liked": "Me gustó",
|
||||
"discussions.post.likes": "gustos",
|
||||
"discussions.post.viewActivity": "Ver actividad",
|
||||
"discussions.post.activity": "Actividad",
|
||||
"discussions.post.closed": "Publicación cerrada por respuestas y comentarios.",
|
||||
"discussions.post.relatedTo": "Relacionado con",
|
||||
"discussions.editor.delete.post.title": "Eliminar publicación",
|
||||
"discussions.editor.delete.post.description": "¿Seguro que quiere eliminar esta publicación de forma permanente?",
|
||||
"discussions.post.delete.confirmation.button.delete": "Eliminar",
|
||||
"discussions.editor.report.post.title": "¿Denunciar contenido inapropiado?",
|
||||
"discussions.editor.report.post.description": "El equipo de moderación de debates revisará este contenido y tomará las medidas adecuadas.",
|
||||
"discussions.post.closePostModal.title": "Cerrar publicación",
|
||||
"discussions.post.closePostModal.text": "Introduce un motivo para cerrar esta publicación. Esto solo se mostrará a otros moderadores.",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "Motivo",
|
||||
"discussions.post.closePostModal.cancel": "Cancelar",
|
||||
"discussions.post.closePostModal.confirm": "Cerrar publicación",
|
||||
"discussions.post.label.new": "{count} Nuevo",
|
||||
"discussions.post.editedBy": "Editado por",
|
||||
"discussions.post.editReason": "Motivo",
|
||||
"discussions.post.postWithoutPreview": "No hay vista previa disponible",
|
||||
"discussions.post.follow.description": "Está siguiendo esta publicación",
|
||||
"discussions.post.unfollow.description": "No está siguiendo esta publicación",
|
||||
"discussions.app.title": "Foros",
|
||||
"discussions.posts.actionBar.searchAllPosts": "Buscar todas las entradas",
|
||||
"discussions.posts.actionBar.search": "{página, seleccionar, temas {Buscar temas} publicaciones {Buscar todas las publicaciones} estudiantes {Buscar estudiantes } myPosts {Buscar todas las publicaciones} other { {page} } }",
|
||||
"discussions.actionBar.searchInfo": "Mostrando resultados {count} para \"{text}\"",
|
||||
"discussions.actionBar.searchRewriteInfo": "No se han encontrado resultados para \"{searchString}\". Mostrando resultados de {count} para \"{textSearchRewrite}\".",
|
||||
"discussions.actionBar.searchInfoSearching": "Buscando...",
|
||||
"discussions.actionBar.clearSearch": "Borrar resultados",
|
||||
"discussion.posts.actionBar.add": "Agregar una publicación",
|
||||
"discussion.posts.actionBar.close": "Cerrar",
|
||||
"discussions.post.editor.type": "Tipo de publicación",
|
||||
"discussions.post.editor.addPostHeading": "Agregar una publicación",
|
||||
"discussions.post.editor.editPostHeading": "Editar publicación",
|
||||
"discussions.post.editor.typeDescription": "Las preguntas suscitan cuestiones que necesitan respuestas. Los debates permiten compartir ideas e iniciar conversaciones.",
|
||||
"discussions.post.editor.required": "Obligatorio",
|
||||
"discussions.post.editor.questionType": "Pregunta",
|
||||
"discussions.post.editor.questionDescription": "Plantear problemas que necesitan respuestas",
|
||||
"discussions.post.editor.discussionType": "Foro",
|
||||
"discussions.post.editor.discussionDescription": "Comparte ideas e inicia conversaciones",
|
||||
"discussions.post.editor.topicArea": "Tema",
|
||||
"discussions.post.editor.topicAreaDescription": "Añadir tu comentario a un tema relevante ayuda a los demás a encontrarlo.",
|
||||
"discussions.post.editor.cohortVisibility": "Visibilidad de la cohorte",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "Todos los estudiantes",
|
||||
"discussions.post.editor.title": "Título de la publicación",
|
||||
"discussions.post.editor.titleDescription": "Añadir un título claro y descriptivo para animar a la participación.",
|
||||
"discussions.post.editor.title.error": "El título de la publicación no puede estar vacío.",
|
||||
"discussions.post.editor.content.error": "El contenido de la publicación no puede estar vacío.",
|
||||
"discussions.post.editor.questionText": "Su pregunta o idea (obligatorio)",
|
||||
"discussions.post.editor.preview": "Vista previa",
|
||||
"discussions.post.editor.followPost": "Seguir este post",
|
||||
"discussions.post.editor.anonymousPost": "Publicar de forma anónima",
|
||||
"discussions.post.editor.anonymousToPeersPost": "Publicar de forma anónima a los compañeros",
|
||||
"discussions.editor.posts.editReasonCode": "Motivo de la edición",
|
||||
"discussions.editor.posts.showPreview.button": "Mostrar vista previa",
|
||||
"discussions.topic.noName.label": "Categoría sin nombre",
|
||||
"discussions.subtopic.noName.label": "Subcategoría sin nombre",
|
||||
"discussions.posts.filter.showALl": "Mostrar todo",
|
||||
"discussions.posts.filter.discussions": "Foros",
|
||||
"discussions.posts.filter.questions": "Preguntas",
|
||||
"discussions.posts.filter.message": "Estado: {filterBy}",
|
||||
"discussions.posts.status.filter.anyStatus": "Cualquier estado",
|
||||
"discussions.posts.status.filter.unread": "No leído",
|
||||
"discussions.posts.status.filter.following": "Siguiendo",
|
||||
"discussions.posts.status.filter.reported": "Informado",
|
||||
"discussions.posts.status.filter.unanswered": "Sin responder",
|
||||
"discussions.posts.status.filter.unresponded": "Sin respuesta",
|
||||
"discussions.posts.filter.myPosts": "Mis publicaciones",
|
||||
"discussions.posts.filter.myDiscussions": "Mis debates",
|
||||
"discussions.posts.filter.myQuestions": "Mis preguntas",
|
||||
"discussions.posts.sort.message": "Ordenado por {sortBy}",
|
||||
"discussions.posts.sort.lastActivity": "Actividad reciente",
|
||||
"discussions.posts.sort.commentCount": "La mayoría de la actividad",
|
||||
"discussions.posts.sort.voteCount": "La mayoría me gusta",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": "{propio, Seleccionar , falso {Todos} cierto {Propio} otro {{propio}} } {status, Seleccionar , statusAll {} statusUnread {unread} statusFollowing {followed} statusReported {reported} statusUnan respondió {sin respuesta} estado sin respuesta {sin respuesta} otro { {status}} } {type, Seleccionar , discusión { discusiones } pregunta {preguntas} todas las {publicaciones} other {{type}} } {cohortType, Seleccionar , all {} grupo { en { dividir en cohortes }} otro {{cohortType}} } ordenado por {ordenar, Seleccionar , lastActivityAt {actividad reciente} commentCount {más actividad} voteCount {más me gusta} otros {{sort}} }"
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "منوی فعالیتها",
|
||||
"discussions.actions.copylink": "کپی پیوند",
|
||||
"discussions.actions.edit": " ویرایش",
|
||||
"discussions.actions.pin": "نشانه",
|
||||
"discussions.actions.unpin": "حذف نشانه",
|
||||
"discussions.actions.delete": "حذف",
|
||||
"discussions.confirmation.button.confirm": "تایید",
|
||||
"discussions.actions.close": "بستن",
|
||||
"discussions.actions.reopen": "گشایش مجدد",
|
||||
"discussions.actions.report": "گزارش",
|
||||
"discussions.actions.unreport": "لغو گزارش",
|
||||
"discussions.actions.endorse": "تأیید",
|
||||
"discussions.actions.unendorse": "عدم تأیید",
|
||||
"discussions.actions.markAnswered": "علامت گذاری به عنوان پاسخ",
|
||||
"discussions.actions.unMarkAnswered": "علامت را بهعنوان پاسخ بردارید",
|
||||
"discussions.modal.confirmation.button.cancel": "لغو",
|
||||
"discussions.empty.allTopics": "همه فعالیتهای گفتگو برای این موضوعات در اینجا نشان داده میشود.",
|
||||
"discussions.empty.allPosts": "همه فعالیتهای گفتگو برای دوره آموزشی شما در اینجا نمایش داده میشود.",
|
||||
"discussions.empty.myPosts": "مطالبی که با آنها تعامل داشتهاید در اینجا نشان داده میشوند.",
|
||||
"discussions.empty.topic": "همه فعالیتهای بحث برای این موضوع در این قسمت نشان داده میشود.",
|
||||
"discussions.empty.title": "اینجا هنوز چیزی نیست",
|
||||
"discussions.empty.noPostSelected": "هیچ مطلبی انتخاب نشدهاست",
|
||||
"discussions.empty.noTopicSelected": "هیچ موضوعی انتخاب نشدهاست",
|
||||
"discussions.sidebar.noResultsFound": "هیچ نتیجهای پیدا نشد",
|
||||
"discussions.sidebar.differentKeywords": "کلیدواژههای دیگری استفاده کرده و دوباره جستجو کنید",
|
||||
"discussions.sidebar.removeKeywords": "سعی کنید کلمات کلیدی مختلف را جستجو کنید یا برخی از فیلترها را حذف کنید",
|
||||
"discussions.sidebar.removeKeywordsOnly": "کلیدواژههای دیگری استفاده کرده و دوباره جستجو کنید",
|
||||
"discussions.sidebar.removeFilters": "سعی کنید برخی از فیلترها را حذف کنید",
|
||||
"discussions.empty.iconAlt": "خالی",
|
||||
"discussions.authors.label.staff": "کارکنان",
|
||||
"discussions.authors.label.ta": "کمک مربی",
|
||||
"discussions.learner.loadMostPosts": "بارگیری مطالب بیشتر",
|
||||
"discussions.post.anonymous.author": "بینام",
|
||||
"discussion.blackoutBanner.information": "ارسال پست در بحث ها توسط تیم دوره غیرفعال شده است",
|
||||
"discussions.editor.image.warning.message": "هنگامی که مطلب یا پاسخ یا نظری در گفتگوهای دوره به صورت درونخطی مشاهده می شود، تصاویری که عرض یا ارتفاع آنها بیشتر از 999 پیکسل باشد، قابل مشاهده نخواهند بود.",
|
||||
"discussions.editor.image.warning.title": "هشدار!",
|
||||
"discussions.editor.image.warning.dismiss": "بسیارخوب",
|
||||
"navigation.course.tabs.label": "منابع دوره آموزشی",
|
||||
"discussions.topics.backAlt": "بازگشت به لیست موضوعات",
|
||||
"discussions.topics.discussions": "",
|
||||
"discussions.topics.questions": "",
|
||||
"discussions.topics.reported": "{reported} گزارش شده",
|
||||
"discussions.topics.previouslyReported": "{previouslyReported} قبلا گزارش شدهاست",
|
||||
"discussions.topics.find.label": "جستجوی موضوعات",
|
||||
"discussions.topics.unnamed.section.label": "بخش بدون نام",
|
||||
"discussions.topics.unnamed.subsection.label": "زیربخش بدون نام",
|
||||
"discussions.subtopics.unnamed.topic.label": "موضوع بی نام",
|
||||
"discussions.topics.title": "هیچ موضوعی وجود ندارد",
|
||||
"discussions.topics.createTopic": "لطفا برای ایجاد موضوع با ادمین خود تماس بگیرید",
|
||||
"discussions.topics.nothing": "اینجا هنوز چیزی نیست",
|
||||
"discussions.topics.archived.label": "آرشیو شده",
|
||||
"discussions.learner.reported": "{reported} گزارش شده",
|
||||
"discussions.learner.previouslyReported": "{previouslyReported} قبلا گزارش شدهاست",
|
||||
"discussions.learner.lastLogin": "آخرین فعال {lastActiveTime}",
|
||||
"discussions.learner.loadMostLearners": "بارگیری بیشتر",
|
||||
"discussions.learner.back": "بازگشت",
|
||||
"discussions.learner.activityForLearner": "فعالیت برای {username}",
|
||||
"discussions.learner.mostActivity": "بیشترین فعالیت",
|
||||
"discussions.learner.reportedActivity": "فعالیت گزارششده",
|
||||
"discussions.learner.recentActivity": "فعالیت اخیر",
|
||||
"discussions.learner.sortFilterStatus": "",
|
||||
"discussion.learner.allActivity": "تمام فعالیت",
|
||||
"discussion.learner.posts": "نوشته ها",
|
||||
"discussions.comments.comment.addComment": "اضافه کردن نظر",
|
||||
"discussions.comments.comment.addResponse": "افزودن پاسخ",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "محتوا برای بررسی کارکنان گزارش شده است",
|
||||
"discussions.actions.back.alt": "بازگشت به لیست",
|
||||
"discussions.comments.comment.responseCount": "",
|
||||
"discussions.comments.comment.endorsedResponseCount": "",
|
||||
"discussions.comments.comment.loadMoreComments": "بارگیری نظرات بیشتر",
|
||||
"discussions.comments.comment.loadMoreResponses": "بارگیری پاسخهای بیشتر",
|
||||
"discussions.comments.comment.visibility": "",
|
||||
"discussions.comments.comment.postedTime": "",
|
||||
"discussions.comments.comment.commentTime": "ارسال شده {relativeTime}",
|
||||
"discussions.comments.comment.answer": "پاسخ",
|
||||
"discussions.comments.comment.answeredlabel": "علامتگذاری شده به عنوان پاسخ دادهشده توسط ",
|
||||
"discussions.comments.comment.endorsed": "تاییدشده ",
|
||||
"discussions.comments.comment.endorsedlabel": "تاییدشده توسط",
|
||||
"discussions.actions.label": "منوی فعالیتها",
|
||||
"discussions.editor.submit": "ارسال",
|
||||
"discussions.editor.submitting": "در حال ارسال",
|
||||
"discussions.editor.cancel": "لغو",
|
||||
"discussions.editor.error.empty": "محتوای مطلب نمیتواند خالی باشد.",
|
||||
"discussions.editor.delete.response.title": "حذف پاسخ",
|
||||
"discussions.editor.delete.response.description": "آیا از حذف این پاسخ برای همیشه اطمینان دارید؟",
|
||||
"discussions.editor.delete.comment.title": "حذف نظر",
|
||||
"discussions.editor.delete.comment.description": "آیا از حذف این نظر برای همیشه اطمینان دارید؟",
|
||||
"discussions.delete.confirmation.button.delete": "حذف",
|
||||
"discussions.editor.response.response.title": "گزارش محتوای نامناسب؟",
|
||||
"discussions.editor.response.description": "تیم نظارت بر بحث این محتوا را بررسی کرده و اقدامات لازم را انجام خواهد داد.",
|
||||
"discussions.editor.report.comment.title": "گزارش محتوای نامناسب؟",
|
||||
"discussions.editor.report.comment.description": "تیم نظارت بر بحث این محتوا را بررسی کرده و اقدامات لازم را انجام خواهد داد.",
|
||||
"discussions.editor.comments.editReasonCode": "علت ویرایش",
|
||||
"discussions.editor.posts.editReasonCode.error": "انتخاب دلیل برای ویرایش",
|
||||
"discussions.comment.comments.editedBy": "ویرایششده بهدست",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "علت",
|
||||
"discussions.post.closedBy": "مطلب توسط این فرد بسته شده",
|
||||
"discussion.comment.time": "{time} قبل",
|
||||
"discussion.thread.notFound": "موضوع پیدا نشد",
|
||||
"discussions.comment.sortFilterStatus": "",
|
||||
"discussions.topics.sort.message": "منظم برحسب {sortBy}",
|
||||
"discussions.topics.sort.lastActivity": "فعالیت اخیر",
|
||||
"discussions.topics.sort.commentCount": "بیشترین فعالیت",
|
||||
"discussions.topics.sort.courseStructure": "ساختار دوره آموزشی",
|
||||
"discussions.topics.unnamed.label": "دسته بی نام",
|
||||
"discussions.subtopics.unnamed.label": "زیرمجموعه بی نام",
|
||||
"tour.action.advance": "بعدی",
|
||||
"tour.action.dismiss": "لطفا نادیده بگیرید",
|
||||
"tour.action.end": "بسیار خوب",
|
||||
"tour.example.title": "",
|
||||
"tour.example.body": "",
|
||||
"learn.course.tabs.navigation.overflow.menu": "بیشتر...",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "عناوین ",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "نمایش همه",
|
||||
"discussions.navigation.navigationBar.allPosts": "همه مطالب",
|
||||
"discussions.navigation.navigationBar.allTopics": "عناوین ",
|
||||
"discussions.navigation.navigationBar.myPosts": "مطالب ارسالی من",
|
||||
"discussions.navigation.navigationBar.learners": "یادگیرندگان",
|
||||
"discussions.post.author.anonymous": "بینام",
|
||||
"discussions.post.addResponse": "افزودن پاسخ",
|
||||
"discussions.post.lastResponse": "پاسخ اخیر {time}",
|
||||
"discussions.post.postedOn": "ارسال شده {time} به دست {author} {authorLabel}",
|
||||
"discussions.post.contentReported": "گزارششده",
|
||||
"discussions.post.following": "دنبال میکنم",
|
||||
"discussions.post.follow": "دنبال میکنم",
|
||||
"discussions.post.followed": "دنبال شد",
|
||||
"discussions.post.notFollowed": "دنبال نشده است",
|
||||
"discussions.post.answered": "پاسخ دادهشده",
|
||||
"discussions.post.unFollow": "دنبال نمیکنم",
|
||||
"discussions.post.like": "میپسندم",
|
||||
"discussions.post.removeLike": "غیرمشابه",
|
||||
"discussions.post.liked": "دوست داشت",
|
||||
"discussions.post.likes": "دوست دارد",
|
||||
"discussions.post.viewActivity": "مشاهده فعالیت",
|
||||
"discussions.post.activity": "فعالیت",
|
||||
"discussions.post.closed": "این مطلب برای پاسخ و نظر بسته است",
|
||||
"discussions.post.relatedTo": "مربوط به ",
|
||||
"discussions.editor.delete.post.title": "حذف مطلب",
|
||||
"discussions.editor.delete.post.description": "از حذف دایمی این مطلب اطمینان دارید؟",
|
||||
"discussions.post.delete.confirmation.button.delete": "حذف",
|
||||
"discussions.editor.report.post.title": "گزارش محتوای نامناسب؟",
|
||||
"discussions.editor.report.post.description": "تیم نظارت بر بحث این محتوا را بررسی کرده و اقدامات لازم را انجام خواهد داد.",
|
||||
"discussions.post.closePostModal.title": "بستن مطلب",
|
||||
"discussions.post.closePostModal.text": "دلیل بستن این مطلب را وارد کنید. این دلیل فقط برای مدیران دیگر نمایش داده میشود.",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "دلیل",
|
||||
"discussions.post.closePostModal.cancel": "لغو",
|
||||
"discussions.post.closePostModal.confirm": "بستن مطلب",
|
||||
"discussions.post.label.new": "{count} جدید",
|
||||
"discussions.post.editedBy": "ویرایششده به دست",
|
||||
"discussions.post.editReason": "علت",
|
||||
"discussions.post.postWithoutPreview": "پیشنمایش در دسترس نیست",
|
||||
"discussions.post.follow.description": "شما این پست را دنبال می کنید",
|
||||
"discussions.post.unfollow.description": "شما این پست را دنبال نمی کنید",
|
||||
"discussions.app.title": "گفتگوها",
|
||||
"discussions.posts.actionBar.searchAllPosts": "جستجوی همۀ مطالب ارسالی",
|
||||
"discussions.posts.actionBar.search": "",
|
||||
"discussions.actionBar.searchInfo": "نمایش {count} نتایج برای \"{text}\"",
|
||||
"discussions.actionBar.searchRewriteInfo": "هیچ نتیجه ای برای \"{searchString}\" یافت نشد. نمایش نتایج {count} برای \"{textSearchRewrite}\".",
|
||||
"discussions.actionBar.searchInfoSearching": "در حال جستجو...",
|
||||
"discussions.actionBar.clearSearch": "پاککردن نتایج",
|
||||
"discussion.posts.actionBar.add": "افزودن مطلب",
|
||||
"discussion.posts.actionBar.close": "بستن",
|
||||
"discussions.post.editor.type": "نوع مطلب ارسالی",
|
||||
"discussions.post.editor.addPostHeading": "افزودن مطلب",
|
||||
"discussions.post.editor.editPostHeading": "ویرایش مطلب",
|
||||
"discussions.post.editor.typeDescription": "پرسشها مسائلی را مطرح میکنند که نیاز به پاسخ دارند. گفتگوها ایدهها را به اشتراک میگذارند و مکالمه را شروع میکنند.",
|
||||
"discussions.post.editor.required": "ضروری",
|
||||
"discussions.post.editor.questionType": "سوال",
|
||||
"discussions.post.editor.questionDescription": "مسائلی را مطرح کنید که نیاز به پاسخ دارند",
|
||||
"discussions.post.editor.discussionType": "گفتگو",
|
||||
"discussions.post.editor.discussionDescription": "ایدهها را به اشتراک بگذارید و گفتگو را شروع کنید",
|
||||
"discussions.post.editor.topicArea": "محل موضوع",
|
||||
"discussions.post.editor.topicAreaDescription": "مطلب ارسالی خود را به یک موضوع مرتبط اضافه کنید تا به دیگران در یافتن آن کمک کنید.",
|
||||
"discussions.post.editor.cohortVisibility": "رؤیتپذیری انجمن",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "همه يادگيرندگان",
|
||||
"discussions.post.editor.title": "ارسال عنوان",
|
||||
"discussions.post.editor.titleDescription": "برای تشویق مشارکت سایرین، عنوانی واضح و توصیفی بیفزایید.",
|
||||
"discussions.post.editor.title.error": "عنوان مطلب نمیتواند خالی باشد.",
|
||||
"discussions.post.editor.content.error": "محتوای مطلب نمیتواند خالی باشد.",
|
||||
"discussions.post.editor.questionText": "پرسش یا ایده شما (الزامی)",
|
||||
"discussions.post.editor.preview": "پیشنمایش",
|
||||
"discussions.post.editor.followPost": "این مطلب را دنبال میکنم",
|
||||
"discussions.post.editor.anonymousPost": "بهصورت ناشناس ارسال کنید",
|
||||
"discussions.post.editor.anonymousToPeersPost": "بهصورت ناشناس برای همتایان ارسال کنید",
|
||||
"discussions.editor.posts.editReasonCode": "علت ویرایش",
|
||||
"discussions.editor.posts.showPreview.button": "پیشنمایش",
|
||||
"discussions.topic.noName.label": "دسته بی نام",
|
||||
"discussions.subtopic.noName.label": "زیرمجموعه بی نام",
|
||||
"discussions.posts.filter.showALl": "نمایش همه",
|
||||
"discussions.posts.filter.discussions": "گفتگوها",
|
||||
"discussions.posts.filter.questions": "سوالات ",
|
||||
"discussions.posts.filter.message": "وضعیت: {filterBy}",
|
||||
"discussions.posts.status.filter.anyStatus": "هر وضعیتی",
|
||||
"discussions.posts.status.filter.unread": "نخوانده",
|
||||
"discussions.posts.status.filter.following": "دنبال میکنم",
|
||||
"discussions.posts.status.filter.reported": "گزارششده",
|
||||
"discussions.posts.status.filter.unanswered": "پاسخ دادهنشده",
|
||||
"discussions.posts.status.filter.unresponded": "پاسخ داده نشد",
|
||||
"discussions.posts.filter.myPosts": "مطالب ارسالی من",
|
||||
"discussions.posts.filter.myDiscussions": "گفتگوهای من",
|
||||
"discussions.posts.filter.myQuestions": "سوالات من",
|
||||
"discussions.posts.sort.message": "منظم شده برحسب {sortBy}",
|
||||
"discussions.posts.sort.lastActivity": "فعالیت اخیر",
|
||||
"discussions.posts.sort.commentCount": "بیشترین فعالیت",
|
||||
"discussions.posts.sort.voteCount": "بیشترین لایک",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": ""
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "Menu Actions",
|
||||
"discussions.actions.copylink": "Copier le lien",
|
||||
"discussions.actions.edit": "Modifier",
|
||||
"discussions.actions.pin": "Épingler",
|
||||
"discussions.actions.unpin": "Ne plus épingler",
|
||||
"discussions.actions.delete": "Supprimer",
|
||||
"discussions.confirmation.button.confirm": "Confirmer",
|
||||
"discussions.actions.close": "Fermer",
|
||||
"discussions.actions.reopen": "Réouvrir",
|
||||
"discussions.actions.report": "Dénoncer",
|
||||
"discussions.actions.unreport": "Ne plus dénoncer",
|
||||
"discussions.actions.endorse": "Approuver",
|
||||
"discussions.actions.unendorse": "Ne plus approuver",
|
||||
"discussions.actions.markAnswered": "Marquer comme répondu",
|
||||
"discussions.actions.unMarkAnswered": "Décocher comme répondu",
|
||||
"discussions.modal.confirmation.button.cancel": "Annuler",
|
||||
"discussions.empty.allTopics": "Toutes les activités de discussion pour ces sujets apparaîtront ici.",
|
||||
"discussions.empty.allPosts": "Toutes les activités de discussion pour votre cours s'afficheront ici.",
|
||||
"discussions.empty.myPosts": "Les publications avec lesquelles vous avez interagi s'afficheront ici.",
|
||||
"discussions.empty.topic": "Toutes les activités de discussion pour ce sujet s'afficheront ici.",
|
||||
"discussions.empty.title": "Rien ici encore",
|
||||
"discussions.empty.noPostSelected": "Aucune publication sélectionnée",
|
||||
"discussions.empty.noTopicSelected": "Aucun sujet sélectionné",
|
||||
"discussions.sidebar.noResultsFound": "Aucun résultat trouvé",
|
||||
"discussions.sidebar.differentKeywords": "Essayez de rechercher différents mots clés",
|
||||
"discussions.sidebar.removeKeywords": "Essayez de rechercher différents mots clés ou de supprimer certains filtres",
|
||||
"discussions.sidebar.removeKeywordsOnly": "Essayez de rechercher différents mots clés",
|
||||
"discussions.sidebar.removeFilters": "Essayez de supprimer certains filtres",
|
||||
"discussions.empty.iconAlt": "Vide",
|
||||
"discussions.authors.label.staff": "Équipe",
|
||||
"discussions.authors.label.ta": "assistant d'enseignement",
|
||||
"discussions.learner.loadMostPosts": "Charger plus de messages",
|
||||
"discussions.post.anonymous.author": "anonyme",
|
||||
"discussion.blackoutBanner.information": "La publication dans les discussions est désactivée par le cours Équipe",
|
||||
"discussions.editor.image.warning.message": "Les images dont la largeur ou la hauteur est supérieure à 999 pixels ne seront pas visibles lorsque la publication, la réponse ou le commentaire est affiché à l'aide de discussions de cours en ligne",
|
||||
"discussions.editor.image.warning.title": "Avertissement!",
|
||||
"discussions.editor.image.warning.dismiss": "Ok",
|
||||
"navigation.course.tabs.label": "Matériel de cours",
|
||||
"discussions.topics.backAlt": "Retour à la liste des sujets",
|
||||
"discussions.topics.discussions": "{count, plural, =0 {Discussion} un {# Discussion} autre {# Discussions} }",
|
||||
"discussions.topics.questions": "{count, plural, =0 {Question} un {# Question} autre {# Questions} }",
|
||||
"discussions.topics.reported": "{reported} signalé",
|
||||
"discussions.topics.previouslyReported": "{previouslyReported} signalé précédemment",
|
||||
"discussions.topics.find.label": "Rechercher des sujets",
|
||||
"discussions.topics.unnamed.section.label": "Section sans nom",
|
||||
"discussions.topics.unnamed.subsection.label": "Sous-section sans nom",
|
||||
"discussions.subtopics.unnamed.topic.label": "Sujet sans nom",
|
||||
"discussions.topics.title": "Aucun sujet n'existe",
|
||||
"discussions.topics.createTopic": "Veuillez contacter votre administrateur pour créer un sujet",
|
||||
"discussions.topics.nothing": "Rien ici encore",
|
||||
"discussions.topics.archived.label": "Archivé",
|
||||
"discussions.learner.reported": "{reported} signalé",
|
||||
"discussions.learner.previouslyReported": "{previouslyReported} signalé précédemment",
|
||||
"discussions.learner.lastLogin": "Dernier actif {lastActiveTime}",
|
||||
"discussions.learner.loadMostLearners": "Charger plus",
|
||||
"discussions.learner.back": "Retour",
|
||||
"discussions.learner.activityForLearner": "Activité pour {username}",
|
||||
"discussions.learner.mostActivity": "La plupart des activités",
|
||||
"discussions.learner.reportedActivity": "Activité signalée",
|
||||
"discussions.learner.recentActivity": "Activité récente",
|
||||
"discussions.learner.sortFilterStatus": "Tous les apprenants triés par {trier, sélectionner, signaler {activité signalée} activité {la plupart des activités} autre { {sort} } }",
|
||||
"discussion.learner.allActivity": "Toutes les activités",
|
||||
"discussion.learner.posts": "Posts",
|
||||
"discussions.comments.comment.addComment": "Ajouter un commentaire",
|
||||
"discussions.comments.comment.addResponse": "Ajouter une réponse",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "Contenu signalé au personnel pour examen",
|
||||
"discussions.actions.back.alt": "Retour à la liste",
|
||||
"discussions.comments.comment.responseCount": "{num, pluriel, =0 {Aucune réponse} un {Affichage de # réponse} autre {Affichage de # réponses} }",
|
||||
"discussions.comments.comment.endorsedResponseCount": "{num, pluriel, =0 {Aucune réponse approuvé } un {Affichant # réponse approuvé } autre {Affichant # réponses approuvé } }",
|
||||
"discussions.comments.comment.loadMoreComments": "Charger plus de commentaires",
|
||||
"discussions.comments.comment.loadMoreResponses": "Charger plus de réponses",
|
||||
"discussions.comments.comment.visibility": "Cette poster est visible par {group, select, null {Tout le monde} autre { {group} } }.",
|
||||
"discussions.comments.comment.postedTime": "{postType, select, discussion {Discussion} question {Question} autre { {postType} } } publié {relativeTime} par",
|
||||
"discussions.comments.comment.commentTime": "Publié {relativeTime}",
|
||||
"discussions.comments.comment.answer": "Réponse",
|
||||
"discussions.comments.comment.answeredlabel": "Marqué comme répondu par",
|
||||
"discussions.comments.comment.endorsed": "Approuvé",
|
||||
"discussions.comments.comment.endorsedlabel": "Approuvé par",
|
||||
"discussions.actions.label": "Menu Actions",
|
||||
"discussions.editor.submit": "Envoyez",
|
||||
"discussions.editor.submitting": "Réponse",
|
||||
"discussions.editor.cancel": "Annuler",
|
||||
"discussions.editor.error.empty": "Le contenu de la publication ne peut pas être vide.",
|
||||
"discussions.editor.delete.response.title": "Supprimer la réponse",
|
||||
"discussions.editor.delete.response.description": "Êtes-vous sûr de vouloir supprimer définitivement cette réponse ?",
|
||||
"discussions.editor.delete.comment.title": "Supprimer le commentaire",
|
||||
"discussions.editor.delete.comment.description": "Êtes-vous sûr de vouloir supprimer définitivement ce commentaire ?",
|
||||
"discussions.delete.confirmation.button.delete": "Supprimer",
|
||||
"discussions.editor.response.response.title": "Signaler un contenu inapproprié?",
|
||||
"discussions.editor.response.description": "L'équipe de modération de la discussion examinera ce contenu et prendra les mesures appropriées.",
|
||||
"discussions.editor.report.comment.title": "Signaler un contenu inapproprié?",
|
||||
"discussions.editor.report.comment.description": "L'équipe de modération de la discussion examinera ce contenu et prendra les mesures appropriées.",
|
||||
"discussions.editor.comments.editReasonCode": "Raison de la modification",
|
||||
"discussions.editor.posts.editReasonCode.error": "Sélectionnez la raison de la modification",
|
||||
"discussions.comment.comments.editedBy": "Édité par",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "Motif",
|
||||
"discussions.post.closedBy": "Message fermé par",
|
||||
"discussion.comment.time": "il y a {time}",
|
||||
"discussion.thread.notFound": "Sujet introuvable",
|
||||
"discussions.comment.sortFilterStatus": "{sort, select, faux/fausse {Le plus ancien en premier} Vrai {Le plus récent en premier} autre {{sort}} }",
|
||||
"discussions.topics.sort.message": "Trié par {sortBy}",
|
||||
"discussions.topics.sort.lastActivity": "Activité récente",
|
||||
"discussions.topics.sort.commentCount": "La plupart des activités",
|
||||
"discussions.topics.sort.courseStructure": "Structure du cours",
|
||||
"discussions.topics.unnamed.label": "Catégorie sans nom",
|
||||
"discussions.subtopics.unnamed.label": "Sous-catégorie sans nom",
|
||||
"tour.action.advance": "Suivant",
|
||||
"tour.action.dismiss": "Ignorer",
|
||||
"tour.action.end": "Okay",
|
||||
"tour.example.title": "exemple de visite",
|
||||
"tour.example.body": "Ceci est un exemple de visite",
|
||||
"learn.course.tabs.navigation.overflow.menu": "Plus...",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "Sujets",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "Tout montrer",
|
||||
"discussions.navigation.navigationBar.allPosts": "Tous les messages",
|
||||
"discussions.navigation.navigationBar.allTopics": "Sujets",
|
||||
"discussions.navigation.navigationBar.myPosts": "Mes messages",
|
||||
"discussions.navigation.navigationBar.learners": "Apprenants",
|
||||
"discussions.post.author.anonymous": "anonyme",
|
||||
"discussions.post.addResponse": "Ajouter une réponse",
|
||||
"discussions.post.lastResponse": "Dernière réponse {time}",
|
||||
"discussions.post.postedOn": "Publié {time} par {author} {authorLabel}",
|
||||
"discussions.post.contentReported": "Reporté",
|
||||
"discussions.post.following": "Suivi",
|
||||
"discussions.post.follow": "Suivre",
|
||||
"discussions.post.followed": "Suivi",
|
||||
"discussions.post.notFollowed": "Non suivi",
|
||||
"discussions.post.answered": "Répondu",
|
||||
"discussions.post.unFollow": "Ne plus suivre",
|
||||
"discussions.post.like": "Aime",
|
||||
"discussions.post.removeLike": "N'aime pas",
|
||||
"discussions.post.liked": "aimé",
|
||||
"discussions.post.likes": "aime",
|
||||
"discussions.post.viewActivity": "Afficher l'activité",
|
||||
"discussions.post.activity": "Activité",
|
||||
"discussions.post.closed": "Message fermé pour réponses et commentaires",
|
||||
"discussions.post.relatedTo": "Relative à",
|
||||
"discussions.editor.delete.post.title": "Supprimer le message",
|
||||
"discussions.editor.delete.post.description": "Êtes-vous sûr de vouloir supprimer définitivement ce message ?",
|
||||
"discussions.post.delete.confirmation.button.delete": "Supprimer",
|
||||
"discussions.editor.report.post.title": "Signaler un contenu inapproprié?",
|
||||
"discussions.editor.report.post.description": "L'équipe de modération de la discussion examinera ce contenu et prendra les mesures appropriées.",
|
||||
"discussions.post.closePostModal.title": "Fermer le message",
|
||||
"discussions.post.closePostModal.text": "Entrez une raison pour fermer ce message. Cela ne sera affiché qu'aux autres modérateurs.",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "Motif",
|
||||
"discussions.post.closePostModal.cancel": "Annuler",
|
||||
"discussions.post.closePostModal.confirm": "Fermer le message",
|
||||
"discussions.post.label.new": "{count} Nouveau",
|
||||
"discussions.post.editedBy": "Édité par",
|
||||
"discussions.post.editReason": "Motif",
|
||||
"discussions.post.postWithoutPreview": "Aucun aperçu disponible",
|
||||
"discussions.post.follow.description": "vous suivez ce post",
|
||||
"discussions.post.unfollow.description": "vous ne suivez pas ce post",
|
||||
"discussions.app.title": "Discussions",
|
||||
"discussions.posts.actionBar.searchAllPosts": "Rechercher un sujet",
|
||||
"discussions.posts.actionBar.search": "{page, sélection, sujets {Rechercher des sujets} messages {Rechercher tous les messages} apprenants {Rechercher des apprenants} mes messages {Rechercher tous les messages} autre { {page} } }",
|
||||
"discussions.actionBar.searchInfo": "Affichage des {count} résultats pour \"{text}\"",
|
||||
"discussions.actionBar.searchRewriteInfo": "Aucun résultat trouvé pour \"(searchString}\". Affichage des résultats {count} pour \"{textSearchRewrite}\".",
|
||||
"discussions.actionBar.searchInfoSearching": "Recherche...",
|
||||
"discussions.actionBar.clearSearch": "Effacer les résultats",
|
||||
"discussion.posts.actionBar.add": "Ajouter un message",
|
||||
"discussion.posts.actionBar.close": "Fermer",
|
||||
"discussions.post.editor.type": "Type de message",
|
||||
"discussions.post.editor.addPostHeading": "Ajouter un message",
|
||||
"discussions.post.editor.editPostHeading": "Modifier le message",
|
||||
"discussions.post.editor.typeDescription": "Les Questions soulèvent des problèmes qui appellent une réponse. Les Discussions partagent des idées et lancent des conversations.",
|
||||
"discussions.post.editor.required": "Obligatoire",
|
||||
"discussions.post.editor.questionType": "Question",
|
||||
"discussions.post.editor.questionDescription": "Soulever des problèmes qui nécessitent des réponses",
|
||||
"discussions.post.editor.discussionType": "Discussion",
|
||||
"discussions.post.editor.discussionDescription": "Partagez des idées et démarrez des conversations",
|
||||
"discussions.post.editor.topicArea": "Sujet",
|
||||
"discussions.post.editor.topicAreaDescription": "Associer un sujet au post pour en faciliter la recherche.",
|
||||
"discussions.post.editor.cohortVisibility": "Visibilité de la cohorte",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "Tous les apprenants",
|
||||
"discussions.post.editor.title": "Titre du message",
|
||||
"discussions.post.editor.titleDescription": "Ajouter un titre clair et explicite pour encourager la participation.",
|
||||
"discussions.post.editor.title.error": "Le titre du message ne peut pas être vide.",
|
||||
"discussions.post.editor.content.error": "Le contenu de la publication ne peut pas être vide.",
|
||||
"discussions.post.editor.questionText": "Votre question ou message (requis)",
|
||||
"discussions.post.editor.preview": "Aperçu",
|
||||
"discussions.post.editor.followPost": "Suivre ce message",
|
||||
"discussions.post.editor.anonymousPost": "Publiez anonymement",
|
||||
"discussions.post.editor.anonymousToPeersPost": "Publiez anonymement à vos pairs",
|
||||
"discussions.editor.posts.editReasonCode": "Raison de la modification",
|
||||
"discussions.editor.posts.showPreview.button": "Afficher aperçu",
|
||||
"discussions.topic.noName.label": "Catégorie sans nom",
|
||||
"discussions.subtopic.noName.label": "Sous-catégorie sans nom",
|
||||
"discussions.posts.filter.showALl": "Tout montrer",
|
||||
"discussions.posts.filter.discussions": "Discussions",
|
||||
"discussions.posts.filter.questions": "Questions",
|
||||
"discussions.posts.filter.message": "Statut : {filterBy}",
|
||||
"discussions.posts.status.filter.anyStatus": "Tout statut",
|
||||
"discussions.posts.status.filter.unread": "Non lu",
|
||||
"discussions.posts.status.filter.following": "Suivi",
|
||||
"discussions.posts.status.filter.reported": "Reporté",
|
||||
"discussions.posts.status.filter.unanswered": "Non répondu",
|
||||
"discussions.posts.status.filter.unresponded": "Pas répondu",
|
||||
"discussions.posts.filter.myPosts": "Mes messages",
|
||||
"discussions.posts.filter.myDiscussions": "Mes discussions",
|
||||
"discussions.posts.filter.myQuestions": "Mes questions",
|
||||
"discussions.posts.sort.message": "Trié par {sortBy}",
|
||||
"discussions.posts.sort.lastActivity": "Activité récente",
|
||||
"discussions.posts.sort.commentCount": "La plupart des activités",
|
||||
"discussions.posts.sort.voteCount": "La plupart des aimés",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": "{own, select, faux/fausse {Tous} Vrai {Own} other {{own}} } {status, select, statusAll {} statusUnread {non lu} statusFollowing {follow} statusReported {reported} statusUnanswered {unanswered} statusUnresponded {unresponded} other {{status}} } {type, select, discussion {discussions} question {questions} all {posts} other {{type}} } {cohortType, select, all {} group {in { Groupe d'étudiants }} other {{cohortType}} } triés par {sort, select, lastActivityAt {activité récente} commentCount {la plupart des activités} voteCount {la plupart des likes} autre {{sort}} }"
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "Menu Actions",
|
||||
"discussions.actions.copylink": "Copier le lien",
|
||||
"discussions.actions.edit": "Éditer",
|
||||
"discussions.actions.pin": "Épingler",
|
||||
"discussions.actions.unpin": "Détacher",
|
||||
"discussions.actions.delete": "Supprimer",
|
||||
"discussions.confirmation.button.confirm": "Confirmer",
|
||||
"discussions.actions.close": "Fermer",
|
||||
"discussions.actions.reopen": "Rouvrir",
|
||||
"discussions.actions.report": "Signaler",
|
||||
"discussions.actions.unreport": "Ne pas signaler",
|
||||
"discussions.actions.endorse": "Approuver",
|
||||
"discussions.actions.unendorse": "Ne plus approuver",
|
||||
"discussions.actions.markAnswered": "Marquer comme répondue",
|
||||
"discussions.actions.unMarkAnswered": "Décocher comme répondue",
|
||||
"discussions.modal.confirmation.button.cancel": "Annuler",
|
||||
"discussions.empty.allTopics": "Toutes les activités de discussion pour ces sujets s'afficheront ici.",
|
||||
"discussions.empty.allPosts": "Toutes les activités de discussion pour votre cours s'afficheront ici.",
|
||||
"discussions.empty.myPosts": "Les publications avec lesquelles vous avez interagi s'afficheront ici.",
|
||||
"discussions.empty.topic": "Toutes les activités de discussion pour ce sujet s'afficheront ici.",
|
||||
"discussions.empty.title": "Rien ici encore",
|
||||
"discussions.empty.noPostSelected": "Aucune publication sélectionnée",
|
||||
"discussions.empty.noTopicSelected": "Aucun sujet sélectionné",
|
||||
"discussions.sidebar.noResultsFound": "Aucun résultat trouvé",
|
||||
"discussions.sidebar.differentKeywords": "Essayez de rechercher différents mots-clés",
|
||||
"discussions.sidebar.removeKeywords": "Essayez de rechercher différents mots-clés ou de retirer certains filtres",
|
||||
"discussions.sidebar.removeKeywordsOnly": "Essayez de rechercher différents mots-clés",
|
||||
"discussions.sidebar.removeFilters": "Essayez de retirer certains filtres",
|
||||
"discussions.empty.iconAlt": "Vide",
|
||||
"discussions.authors.label.staff": "Personnel",
|
||||
"discussions.authors.label.ta": "Assistant d'enseignement",
|
||||
"discussions.learner.loadMostPosts": "Charger plus de publications",
|
||||
"discussions.post.anonymous.author": "anonyme",
|
||||
"discussion.blackoutBanner.information": "La publication dans les discussions est désactivée par l'équipe du cours",
|
||||
"discussions.editor.image.warning.message": "Les images dont la largeur ou la hauteur est supérieure à 999 pixels ne seront pas visibles lorsque la publication, la réponse ou le commentaire est affiché à l'aide de discussions de cours en ligne",
|
||||
"discussions.editor.image.warning.title": "Avertissement!",
|
||||
"discussions.editor.image.warning.dismiss": "Ok",
|
||||
"navigation.course.tabs.label": "Matériel de cours",
|
||||
"discussions.topics.backAlt": "Retour à la liste des sujets",
|
||||
"discussions.topics.discussions": "{count, plural, =0 {Discussion} one {# Discussion} other {# Discussions} }",
|
||||
"discussions.topics.questions": "{count, plural, =0 {Question} one {# Question} other {# Questions} }",
|
||||
"discussions.topics.reported": "{reported} signalé",
|
||||
"discussions.topics.previouslyReported": "{previouslyReported} signalé précédemment",
|
||||
"discussions.topics.find.label": "Rechercher des sujets",
|
||||
"discussions.topics.unnamed.section.label": "Section sans nom",
|
||||
"discussions.topics.unnamed.subsection.label": "Sous-section sans nom",
|
||||
"discussions.subtopics.unnamed.topic.label": "Sujet sans nom",
|
||||
"discussions.topics.title": "Aucun sujet n'existe",
|
||||
"discussions.topics.createTopic": "Veuillez contacter votre admin pour créer un sujet",
|
||||
"discussions.topics.nothing": "Rien ici encore",
|
||||
"discussions.topics.archived.label": "Archivé",
|
||||
"discussions.learner.reported": "{reported} signalé",
|
||||
"discussions.learner.previouslyReported": "{previouslyReported} signalé précédemment",
|
||||
"discussions.learner.lastLogin": "Dernier actif {lastActiveTime}",
|
||||
"discussions.learner.loadMostLearners": "Afficher plus",
|
||||
"discussions.learner.back": "Retour",
|
||||
"discussions.learner.activityForLearner": "Activité pour {username}",
|
||||
"discussions.learner.mostActivity": "Les plus actifs",
|
||||
"discussions.learner.reportedActivity": "Activité signalée",
|
||||
"discussions.learner.recentActivity": "Activité récente",
|
||||
"discussions.learner.sortFilterStatus": "Tous les apprenants triés par {sort, select, flagged {activité signalée} activité {la plupart des activités} autre {{sort}}",
|
||||
"discussion.learner.allActivity": "Toutes les activités",
|
||||
"discussion.learner.posts": "Publications",
|
||||
"discussions.comments.comment.addComment": "Ajouter un commentaire",
|
||||
"discussions.comments.comment.addResponse": "Ajouter une réponse",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "Contenu signalé au personnel pour examen",
|
||||
"discussions.actions.back.alt": "Retour à la liste",
|
||||
"discussions.comments.comment.responseCount": "{num, plural, =0 {Aucune réponse} on {Affichage de # réponse} other {Affichage de # réponses} }",
|
||||
"discussions.comments.comment.endorsedResponseCount": "{num, pluriel, =0 {Aucune réponse approuvé } un {Affichage de # réponse approuvé } autre {Affichage de # réponses approuvé } }",
|
||||
"discussions.comments.comment.loadMoreComments": "Charger plus de commentaires",
|
||||
"discussions.comments.comment.loadMoreResponses": "Charger plus de réponses",
|
||||
"discussions.comments.comment.visibility": "Cette publication est visible par {group, select, null {Tout le monde} other {{group}} }.",
|
||||
"discussions.comments.comment.postedTime": "{postType, select, discussion {Discussion} Question {Question} other { {postType}} } publié {relativeTime} par",
|
||||
"discussions.comments.comment.commentTime": "Publié {relativeTime}",
|
||||
"discussions.comments.comment.answer": "Réponse",
|
||||
"discussions.comments.comment.answeredlabel": "Marqué comme répondue par",
|
||||
"discussions.comments.comment.endorsed": "Approuvé",
|
||||
"discussions.comments.comment.endorsedlabel": "Approuvé par",
|
||||
"discussions.actions.label": "Menu Actions",
|
||||
"discussions.editor.submit": "Soumettre",
|
||||
"discussions.editor.submitting": "Soumission",
|
||||
"discussions.editor.cancel": "Annuler",
|
||||
"discussions.editor.error.empty": "Le contenu de la publication ne peut pas être vide.",
|
||||
"discussions.editor.delete.response.title": "Supprimer la réponse",
|
||||
"discussions.editor.delete.response.description": "Êtes-vous sûr de vouloir supprimer définitivement cette réponse?",
|
||||
"discussions.editor.delete.comment.title": "Supprimer le commentaire",
|
||||
"discussions.editor.delete.comment.description": "Êtes-vous sûr de vouloir supprimer définitivement ce commentaire?",
|
||||
"discussions.delete.confirmation.button.delete": "Supprimer",
|
||||
"discussions.editor.response.response.title": "Signaler un contenu inapproprié?",
|
||||
"discussions.editor.response.description": "L'équipe de modération de la discussion examinera ce contenu et prendra les mesures appropriées.",
|
||||
"discussions.editor.report.comment.title": "Signaler un contenu inapproprié?",
|
||||
"discussions.editor.report.comment.description": "L'équipe de modération de la discussion examinera ce contenu et prendra les mesures appropriées.",
|
||||
"discussions.editor.comments.editReasonCode": "Raison de la modification",
|
||||
"discussions.editor.posts.editReasonCode.error": "Sélectionnez la raison de la modification",
|
||||
"discussions.comment.comments.editedBy": "Édité par",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "Raison",
|
||||
"discussions.post.closedBy": "Publication fermée par",
|
||||
"discussion.comment.time": "il y a {time}",
|
||||
"discussion.thread.notFound": "Sujet introuvable",
|
||||
"discussions.comment.sortFilterStatus": "{sort, select, false {Le plus ancien en premier} true {Le plus récent en premier} other {{sort}} }",
|
||||
"discussions.topics.sort.message": "Triées par {sortBy}",
|
||||
"discussions.topics.sort.lastActivity": "Activité récente",
|
||||
"discussions.topics.sort.commentCount": "Les plus actives",
|
||||
"discussions.topics.sort.courseStructure": "Structure du cours",
|
||||
"discussions.topics.unnamed.label": "Catégorie sans nom",
|
||||
"discussions.subtopics.unnamed.label": "Sous-catégorie sans nom",
|
||||
"tour.action.advance": "Suivant",
|
||||
"tour.action.dismiss": "Rejeter",
|
||||
"tour.action.end": "D'accord",
|
||||
"tour.example.title": "exemple de visite",
|
||||
"tour.example.body": "Ceci est un exemple de visite",
|
||||
"learn.course.tabs.navigation.overflow.menu": "Plus...",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "Sujets",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "Tout afficher",
|
||||
"discussions.navigation.navigationBar.allPosts": "Toutes les publications",
|
||||
"discussions.navigation.navigationBar.allTopics": "Sujets",
|
||||
"discussions.navigation.navigationBar.myPosts": "Mes publications",
|
||||
"discussions.navigation.navigationBar.learners": "Apprenants",
|
||||
"discussions.post.author.anonymous": "anonyme",
|
||||
"discussions.post.addResponse": "Ajouter une réponse",
|
||||
"discussions.post.lastResponse": "Dernière réponse {time}",
|
||||
"discussions.post.postedOn": "Publiée {time} par {author} {authorLabel}",
|
||||
"discussions.post.contentReported": "Signalées",
|
||||
"discussions.post.following": "Suivies",
|
||||
"discussions.post.follow": "Suivre",
|
||||
"discussions.post.followed": "Suivies",
|
||||
"discussions.post.notFollowed": "Non suivies",
|
||||
"discussions.post.answered": "Répondues",
|
||||
"discussions.post.unFollow": "Ne plus suivre",
|
||||
"discussions.post.like": "Aime",
|
||||
"discussions.post.removeLike": "N'aime plus",
|
||||
"discussions.post.liked": "aimées",
|
||||
"discussions.post.likes": "aime",
|
||||
"discussions.post.viewActivity": "Afficher l'activité",
|
||||
"discussions.post.activity": "Activité",
|
||||
"discussions.post.closed": "Publication fermée pour réponses et commentaires",
|
||||
"discussions.post.relatedTo": "Relative à",
|
||||
"discussions.editor.delete.post.title": "Supprimer la publication",
|
||||
"discussions.editor.delete.post.description": "Êtes-vous sûr de vouloir supprimer définitivement cette publication?",
|
||||
"discussions.post.delete.confirmation.button.delete": "Supprimer",
|
||||
"discussions.editor.report.post.title": "Signaler un contenu inapproprié?",
|
||||
"discussions.editor.report.post.description": "L'équipe de modération de la discussion examinera ce contenu et prendra les mesures appropriées.",
|
||||
"discussions.post.closePostModal.title": "Fermer la publication",
|
||||
"discussions.post.closePostModal.text": "Entrez une raison pour fermer cette publication. Cela ne sera affiché qu'aux autres modérateurs.",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "Raison",
|
||||
"discussions.post.closePostModal.cancel": "Annuler",
|
||||
"discussions.post.closePostModal.confirm": "Fermer la publication",
|
||||
"discussions.post.label.new": "{count} Nouveau",
|
||||
"discussions.post.editedBy": "Éditée par",
|
||||
"discussions.post.editReason": "Raison",
|
||||
"discussions.post.postWithoutPreview": "Aucun aperçu disponible",
|
||||
"discussions.post.follow.description": "vous suivez cette publication",
|
||||
"discussions.post.unfollow.description": "vous ne suivez pas cette publication",
|
||||
"discussions.app.title": "Discussions",
|
||||
"discussions.posts.actionBar.searchAllPosts": "Recherche dans les publications",
|
||||
"discussions.posts.actionBar.search": "{page, select, topics {Rechercher des sujets} posts {Rechercher tous les messages} learners {Rechercher des apprenants} myPosts {Rechercher tous les messages} other {{page}} }",
|
||||
"discussions.actionBar.searchInfo": "Affichage des résultats {count} pour \"{text}\"",
|
||||
"discussions.actionBar.searchRewriteInfo": "Aucun résultat trouvé pour \"{searchString}\". Affichage des résultats {count} pour \"{textSearchRewrite}\".",
|
||||
"discussions.actionBar.searchInfoSearching": "Recherche...",
|
||||
"discussions.actionBar.clearSearch": "Effacer les résultats",
|
||||
"discussion.posts.actionBar.add": "Ajouter une publication",
|
||||
"discussion.posts.actionBar.close": "Fermer",
|
||||
"discussions.post.editor.type": "Type de publication",
|
||||
"discussions.post.editor.addPostHeading": "Ajouter une publication",
|
||||
"discussions.post.editor.editPostHeading": "Modifier la publication",
|
||||
"discussions.post.editor.typeDescription": "Les questions soulèvent des problèmes auxquels il faut répondre. Les discussions partagent des idées et démarrent des conversations.",
|
||||
"discussions.post.editor.required": "Obligatoire",
|
||||
"discussions.post.editor.questionType": "Question",
|
||||
"discussions.post.editor.questionDescription": "Soulever des problèmes qui nécessitent des réponses",
|
||||
"discussions.post.editor.discussionType": "Discussion",
|
||||
"discussions.post.editor.discussionDescription": "Partagez des idées et démarrez des conversations",
|
||||
"discussions.post.editor.topicArea": "Secteur thématique",
|
||||
"discussions.post.editor.topicAreaDescription": "Ajouter votre publication à un sujet pertinent afin d'aider les autres à la trouver.",
|
||||
"discussions.post.editor.cohortVisibility": "Visibilité de la cohorte",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "Tous les apprenants",
|
||||
"discussions.post.editor.title": "Titre de la publication",
|
||||
"discussions.post.editor.titleDescription": "Ajouter un titre clair et descriptif afin d'encourager la participation.",
|
||||
"discussions.post.editor.title.error": "Le titre de la publication ne peut pas être vide.",
|
||||
"discussions.post.editor.content.error": "Le contenu de la publication ne peut pas être vide.",
|
||||
"discussions.post.editor.questionText": "Votre question ou idée (obligatoire)",
|
||||
"discussions.post.editor.preview": "Aperçu",
|
||||
"discussions.post.editor.followPost": "Suivez cette publication",
|
||||
"discussions.post.editor.anonymousPost": "Publier anonymement",
|
||||
"discussions.post.editor.anonymousToPeersPost": "Publier anonymement à vos pairs",
|
||||
"discussions.editor.posts.editReasonCode": "Raison de la modification",
|
||||
"discussions.editor.posts.showPreview.button": "Afficher l'aperçu",
|
||||
"discussions.topic.noName.label": "Catégorie sans nom",
|
||||
"discussions.subtopic.noName.label": "Sous-catégorie sans nom",
|
||||
"discussions.posts.filter.showALl": "Tout afficher",
|
||||
"discussions.posts.filter.discussions": "Discussions",
|
||||
"discussions.posts.filter.questions": "Questions",
|
||||
"discussions.posts.filter.message": "Statut : {filterBy}",
|
||||
"discussions.posts.status.filter.anyStatus": "Tout statut",
|
||||
"discussions.posts.status.filter.unread": "Non lues",
|
||||
"discussions.posts.status.filter.following": "Suivies",
|
||||
"discussions.posts.status.filter.reported": "Signalées",
|
||||
"discussions.posts.status.filter.unanswered": "Sans réponses",
|
||||
"discussions.posts.status.filter.unresponded": "Non répondues",
|
||||
"discussions.posts.filter.myPosts": "Mes publications",
|
||||
"discussions.posts.filter.myDiscussions": "Mes discussions",
|
||||
"discussions.posts.filter.myQuestions": "Mes questions",
|
||||
"discussions.posts.sort.message": "Triées par {sortBy}",
|
||||
"discussions.posts.sort.lastActivity": "Activité récente",
|
||||
"discussions.posts.sort.commentCount": "Les plus actives",
|
||||
"discussions.posts.sort.voteCount": "Les plus aimées",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": "{own, select, false {Toutes} true {Own} other {{own}} } {status, select, statusAll {} statusUnread {non lues} statusFollowing {suivies} statusReported {signalées} statusUnanswered {sans réponses} statusUnresponded {non répondues} other {{status}} } {type, select, discussion {discussions} question {questions} all {posts} other {{type}} } {cohortType, select, all {} group {in {cohort}} other {{cohortType}} } triées par {sort, select, lastActivityAt {les plus récentes} commentCount {les plus actives} voteCount {les plus aimées} other {{sort}} }"
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "Menu Actions",
|
||||
"discussions.actions.copylink": "Copier le lien",
|
||||
"discussions.actions.edit": "Éditer",
|
||||
"discussions.actions.pin": "Broche",
|
||||
"discussions.actions.unpin": "Détacher",
|
||||
"discussions.actions.delete": "Supprimer",
|
||||
"discussions.confirmation.button.confirm": "Confirmer",
|
||||
"discussions.actions.close": "Fermer",
|
||||
"discussions.actions.reopen": "Rouvrir",
|
||||
"discussions.actions.report": "Signaler",
|
||||
"discussions.actions.unreport": "Annuler le rapport",
|
||||
"discussions.actions.endorse": "Endosser",
|
||||
"discussions.actions.unendorse": "Désapprouver",
|
||||
"discussions.actions.markAnswered": "Marquer comme répondu",
|
||||
"discussions.actions.unMarkAnswered": "Décocher comme répondu",
|
||||
"discussions.modal.confirmation.button.cancel": "Annuler",
|
||||
"discussions.empty.allTopics": "Toutes les activités de discussion pour ces sujets apparaîtront ici.",
|
||||
"discussions.empty.allPosts": "Toutes les activités de discussion pour votre cours s'afficheront ici.",
|
||||
"discussions.empty.myPosts": "Les publications avec lesquelles vous avez interagi s'afficheront ici.",
|
||||
"discussions.empty.topic": "Toutes les activités de discussion pour ce sujet s'afficheront ici.",
|
||||
"discussions.empty.title": "Rien ici encore",
|
||||
"discussions.empty.noPostSelected": "Aucune publication sélectionnée",
|
||||
"discussions.empty.noTopicSelected": "Aucun sujet sélectionné",
|
||||
"discussions.sidebar.noResultsFound": "Aucun résultat trouvé",
|
||||
"discussions.sidebar.differentKeywords": "Essayez de rechercher différents mots-clés",
|
||||
"discussions.sidebar.removeKeywords": "Essayez de rechercher différents mots clés ou de supprimer certains filtres",
|
||||
"discussions.sidebar.removeKeywordsOnly": "Essayez de rechercher différents mots-clés",
|
||||
"discussions.sidebar.removeFilters": "Essayez de supprimer certains filtres",
|
||||
"discussions.empty.iconAlt": "Vide",
|
||||
"discussions.authors.label.staff": "Personnel",
|
||||
"discussions.authors.label.ta": "AT",
|
||||
"discussions.learner.loadMostPosts": "Charger plus de messages",
|
||||
"discussions.post.anonymous.author": "anonyme",
|
||||
"discussion.blackoutBanner.information": "La publication dans les discussions est désactivée par l'équipe du cours",
|
||||
"discussions.editor.image.warning.message": "Les images dont la largeur ou la hauteur est supérieure à 999 pixels ne seront pas visibles lorsque la publication, la réponse ou le commentaire est affiché à l'aide de discussions de cours en ligne",
|
||||
"discussions.editor.image.warning.title": "Avertissement!",
|
||||
"discussions.editor.image.warning.dismiss": "Ok",
|
||||
"navigation.course.tabs.label": "Matériel de cours",
|
||||
"discussions.topics.backAlt": "Retour à la liste des sujets",
|
||||
"discussions.topics.discussions": "{count, plural, =0 {Discussion} un {# Discussion} autre {# Discussions} }",
|
||||
"discussions.topics.questions": "{count, plural, =0 {Question} un {# Question} autre {# Questions} }",
|
||||
"discussions.topics.reported": "{reported} signalé",
|
||||
"discussions.topics.previouslyReported": "{previouslyReported} signalé précédemment",
|
||||
"discussions.topics.find.label": "Rechercher des sujets",
|
||||
"discussions.topics.unnamed.section.label": "Section sans nom",
|
||||
"discussions.topics.unnamed.subsection.label": "Sous-section sans nom",
|
||||
"discussions.subtopics.unnamed.topic.label": "Sujet sans nom",
|
||||
"discussions.topics.title": "Aucun sujet n'existe",
|
||||
"discussions.topics.createTopic": "Veuillez contacter votre administrateur pour créer un sujet",
|
||||
"discussions.topics.nothing": "Rien ici encore",
|
||||
"discussions.topics.archived.label": "Archivé",
|
||||
"discussions.learner.reported": "{reported} signalé",
|
||||
"discussions.learner.previouslyReported": "{previouslyReported} signalé précédemment",
|
||||
"discussions.learner.lastLogin": "Dernier actif {lastActiveTime}",
|
||||
"discussions.learner.loadMostLearners": "Charger plus",
|
||||
"discussions.learner.back": "Retour",
|
||||
"discussions.learner.activityForLearner": "Activité pour {username}",
|
||||
"discussions.learner.mostActivity": "La plupart des activités",
|
||||
"discussions.learner.reportedActivity": "Activité signalée",
|
||||
"discussions.learner.recentActivity": "Activité récente",
|
||||
"discussions.learner.sortFilterStatus": "Tous les apprenants triés par {trier, sélectionner, signaler {activité signalée} activité {la plupart des activités} autre { {sort} } }",
|
||||
"discussion.learner.allActivity": "Toutes les activités",
|
||||
"discussion.learner.posts": "Des postes",
|
||||
"discussions.comments.comment.addComment": "Ajouter un commentaire",
|
||||
"discussions.comments.comment.addResponse": "Ajouter une réponse",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "Contenu signalé au personnel pour examen",
|
||||
"discussions.actions.back.alt": "Retour à la liste",
|
||||
"discussions.comments.comment.responseCount": "{num, pluriel, =0 {Aucune réponse} un {Affichage de # réponse} autre {Affichage de # réponses} }",
|
||||
"discussions.comments.comment.endorsedResponseCount": "{num, pluriel, =0 {Aucune réponse approuvé } un {Affichage de # réponse approuvé } autre {Affichage de # réponses approuvé } }",
|
||||
"discussions.comments.comment.loadMoreComments": "Charger plus de commentaires",
|
||||
"discussions.comments.comment.loadMoreResponses": "Charger plus de réponses",
|
||||
"discussions.comments.comment.visibility": "Ce poster est visible par {group, select, null {Tout le monde} autre { {group} } }.",
|
||||
"discussions.comments.comment.postedTime": "{postType, select, discussion {Discussion} question {Question} autre { {postType} } } publié {relativeTime} par",
|
||||
"discussions.comments.comment.commentTime": "Publié {relativeTime}",
|
||||
"discussions.comments.comment.answer": "Réponse",
|
||||
"discussions.comments.comment.answeredlabel": "Marqué comme répondu par",
|
||||
"discussions.comments.comment.endorsed": "Approuvé",
|
||||
"discussions.comments.comment.endorsedlabel": "Approuvé par",
|
||||
"discussions.actions.label": "Menu Actions",
|
||||
"discussions.editor.submit": "Soumettre",
|
||||
"discussions.editor.submitting": "Soumission",
|
||||
"discussions.editor.cancel": "Annuler",
|
||||
"discussions.editor.error.empty": "Le contenu de la publication ne peut pas être vide.",
|
||||
"discussions.editor.delete.response.title": "Supprimer la réponse",
|
||||
"discussions.editor.delete.response.description": "Êtes-vous sûr de vouloir supprimer définitivement cette réponse ?",
|
||||
"discussions.editor.delete.comment.title": "Supprimer le commentaire",
|
||||
"discussions.editor.delete.comment.description": "Êtes-vous sûr de vouloir supprimer définitivement ce commentaire ?",
|
||||
"discussions.delete.confirmation.button.delete": "Supprimer",
|
||||
"discussions.editor.response.response.title": "Signaler un contenu inapproprié ?",
|
||||
"discussions.editor.response.description": "L'équipe de modération de la discussion examinera ce contenu et prendra les mesures appropriées.",
|
||||
"discussions.editor.report.comment.title": "Signaler un contenu inapproprié ?",
|
||||
"discussions.editor.report.comment.description": "L'équipe de modération de la discussion examinera ce contenu et prendra les mesures appropriées.",
|
||||
"discussions.editor.comments.editReasonCode": "Raison de la modification",
|
||||
"discussions.editor.posts.editReasonCode.error": "Sélectionnez la raison de la modification",
|
||||
"discussions.comment.comments.editedBy": "Édité par",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "Raison",
|
||||
"discussions.post.closedBy": "Message fermé par",
|
||||
"discussion.comment.time": "il y a {time}",
|
||||
"discussion.thread.notFound": "Sujet introuvable",
|
||||
"discussions.comment.sortFilterStatus": "{trier, sélectionner, faux/fausse {Le plus ancien en premier} Vrai {Le plus récent en premier} autre { {sort} } }",
|
||||
"discussions.topics.sort.message": "Trié par {sortBy}",
|
||||
"discussions.topics.sort.lastActivity": "Activité récente",
|
||||
"discussions.topics.sort.commentCount": "La plupart des activités",
|
||||
"discussions.topics.sort.courseStructure": "Structure du cours",
|
||||
"discussions.topics.unnamed.label": "Catégorie sans nom",
|
||||
"discussions.subtopics.unnamed.label": "Sous-catégorie sans nom",
|
||||
"tour.action.advance": "Suivant",
|
||||
"tour.action.dismiss": "Rejeter",
|
||||
"tour.action.end": "D'accord",
|
||||
"tour.example.title": "exemple de visite",
|
||||
"tour.example.body": "Ceci est un exemple de visite",
|
||||
"learn.course.tabs.navigation.overflow.menu": "Suite...",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "Les sujets",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "Afficher tout",
|
||||
"discussions.navigation.navigationBar.allPosts": "Tous les messages",
|
||||
"discussions.navigation.navigationBar.allTopics": "Les sujets",
|
||||
"discussions.navigation.navigationBar.myPosts": "Mes publications",
|
||||
"discussions.navigation.navigationBar.learners": "Apprenants",
|
||||
"discussions.post.author.anonymous": "anonyme",
|
||||
"discussions.post.addResponse": "Ajouter une réponse",
|
||||
"discussions.post.lastResponse": "Dernière réponse {time}",
|
||||
"discussions.post.postedOn": "Publié {time} par {author} {authorLabel}",
|
||||
"discussions.post.contentReported": "Signalé",
|
||||
"discussions.post.following": "Suivant",
|
||||
"discussions.post.follow": "Suivre",
|
||||
"discussions.post.followed": "Suivi",
|
||||
"discussions.post.notFollowed": "Pas suivi",
|
||||
"discussions.post.answered": "Répondu",
|
||||
"discussions.post.unFollow": "Ne plus suivre",
|
||||
"discussions.post.like": "Comme",
|
||||
"discussions.post.removeLike": "Contrairement à",
|
||||
"discussions.post.liked": "aimé",
|
||||
"discussions.post.likes": "aime",
|
||||
"discussions.post.viewActivity": "Afficher l'activité",
|
||||
"discussions.post.activity": "Activité",
|
||||
"discussions.post.closed": "Message fermé pour réponses et commentaires",
|
||||
"discussions.post.relatedTo": "Relative à",
|
||||
"discussions.editor.delete.post.title": "Supprimer le message",
|
||||
"discussions.editor.delete.post.description": "Êtes-vous sûr de vouloir supprimer définitivement ce message ?",
|
||||
"discussions.post.delete.confirmation.button.delete": "Supprimer",
|
||||
"discussions.editor.report.post.title": "Signaler un contenu inapproprié ?",
|
||||
"discussions.editor.report.post.description": "L'équipe de modération de la discussion examinera ce contenu et prendra les mesures appropriées.",
|
||||
"discussions.post.closePostModal.title": "Fermer le message",
|
||||
"discussions.post.closePostModal.text": "Entrez une raison pour fermer ce message. Cela ne sera affiché qu'aux autres modérateurs.",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "Raison",
|
||||
"discussions.post.closePostModal.cancel": "Annuler",
|
||||
"discussions.post.closePostModal.confirm": "Fermer le message",
|
||||
"discussions.post.label.new": "{count} Nouveau",
|
||||
"discussions.post.editedBy": "Édité par",
|
||||
"discussions.post.editReason": "Raison",
|
||||
"discussions.post.postWithoutPreview": "Aucun aperçu disponible",
|
||||
"discussions.post.follow.description": "tu suis ce post",
|
||||
"discussions.post.unfollow.description": "tu ne suis pas ce post",
|
||||
"discussions.app.title": "Discussions",
|
||||
"discussions.posts.actionBar.searchAllPosts": "Rechercher tous les articles",
|
||||
"discussions.posts.actionBar.search": "{page, sélection, sujets {Rechercher des sujets} messages {Rechercher tous les messages} apprenants {Rechercher des apprenants} mes messages {Rechercher tous les messages} autre { {page} } }",
|
||||
"discussions.actionBar.searchInfo": "Affichage des résultats {count} pour "{text}"",
|
||||
"discussions.actionBar.searchRewriteInfo": "Aucun résultat trouvé pour "{searchString}". Affichage des résultats {count} pour "{textSearchRewrite}".",
|
||||
"discussions.actionBar.searchInfoSearching": "Recherche...",
|
||||
"discussions.actionBar.clearSearch": "Des résultats clairs",
|
||||
"discussion.posts.actionBar.add": "Ajouter une publication",
|
||||
"discussion.posts.actionBar.close": "Fermer",
|
||||
"discussions.post.editor.type": "Type de poste",
|
||||
"discussions.post.editor.addPostHeading": "Ajouter une publication",
|
||||
"discussions.post.editor.editPostHeading": "Modifier le message",
|
||||
"discussions.post.editor.typeDescription": "Les questions soulèvent des problèmes qui nécessitent des réponses. Les discussions permettent de partager des idées et d'engager des conversations.",
|
||||
"discussions.post.editor.required": "Obligatoire",
|
||||
"discussions.post.editor.questionType": "Question",
|
||||
"discussions.post.editor.questionDescription": "Soulever des problèmes qui nécessitent des réponses",
|
||||
"discussions.post.editor.discussionType": "Discussions",
|
||||
"discussions.post.editor.discussionDescription": "Partagez des idées et démarrez des conversations",
|
||||
"discussions.post.editor.topicArea": "Zone thématique",
|
||||
"discussions.post.editor.topicAreaDescription": "Ajoutez votre message à un sujet pertinent pour aider les autres à le trouver.",
|
||||
"discussions.post.editor.cohortVisibility": "Visibilité de la cohorte",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "Tous les apprenants",
|
||||
"discussions.post.editor.title": "Titre de l'article",
|
||||
"discussions.post.editor.titleDescription": "Ajoutez un titre clair et descriptif pour encourager la participation.",
|
||||
"discussions.post.editor.title.error": "Le titre du message ne peut pas être vide.",
|
||||
"discussions.post.editor.content.error": "Le contenu de la publication ne peut pas être vide.",
|
||||
"discussions.post.editor.questionText": "Votre question ou idée (obligatoire)",
|
||||
"discussions.post.editor.preview": "Aperçu",
|
||||
"discussions.post.editor.followPost": "Suivez ce message",
|
||||
"discussions.post.editor.anonymousPost": "Publier anonymement",
|
||||
"discussions.post.editor.anonymousToPeersPost": "Publiez anonymement à vos pairs",
|
||||
"discussions.editor.posts.editReasonCode": "Raison de la modification",
|
||||
"discussions.editor.posts.showPreview.button": "Afficher l'aperçu",
|
||||
"discussions.topic.noName.label": "Catégorie sans nom",
|
||||
"discussions.subtopic.noName.label": "Sous-catégorie sans nom",
|
||||
"discussions.posts.filter.showALl": "Afficher tout",
|
||||
"discussions.posts.filter.discussions": "Discussions",
|
||||
"discussions.posts.filter.questions": "Des questions",
|
||||
"discussions.posts.filter.message": "Statut : {filterBy}",
|
||||
"discussions.posts.status.filter.anyStatus": "Tout statut",
|
||||
"discussions.posts.status.filter.unread": "Non lu",
|
||||
"discussions.posts.status.filter.following": "Suivant",
|
||||
"discussions.posts.status.filter.reported": "Signalé",
|
||||
"discussions.posts.status.filter.unanswered": "Sans réponse",
|
||||
"discussions.posts.status.filter.unresponded": "Pas répondu",
|
||||
"discussions.posts.filter.myPosts": "Mes publications",
|
||||
"discussions.posts.filter.myDiscussions": "Mes échanges",
|
||||
"discussions.posts.filter.myQuestions": "Mes questions",
|
||||
"discussions.posts.sort.message": "Trié par {sortBy}",
|
||||
"discussions.posts.sort.lastActivity": "Activité récente",
|
||||
"discussions.posts.sort.commentCount": "La plupart des activités",
|
||||
"discussions.posts.sort.voteCount": "La plupart des goûts",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": "{propre, select, faux/fausse {Tous} Vrai {Possède} autre { {own} } } {statut, select, statusAll {} statusUnread {non lu} statusSuivant {suivi} statusReported {signalé} statusUnanswered {unanswered} statusUnresponded {unresponded} other { {status} } } {type, sélectionnez, discussion {discussions} question {questions} tous les {messages} autre { {type} } } {cohortType, sélectionnez, tous {} groupe {dans {Groupe d'étudiants} } autre { {cohortType} } } triés par {trier, sélectionner, dernier ActivitéÀ { activité récente} commentCount {la plupart des activités} voteCount {la plupart des likes} autre { {sort} } }"
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "एक्शन मेन्यू",
|
||||
"discussions.actions.copylink": "कॉपी लिंक",
|
||||
"discussions.actions.edit": "संपादित करें",
|
||||
"discussions.actions.pin": "पिन",
|
||||
"discussions.actions.unpin": "अनपिन",
|
||||
"discussions.actions.delete": "नष्ट करें",
|
||||
"discussions.confirmation.button.confirm": "पुष्टि करें",
|
||||
"discussions.actions.close": "बंद करे",
|
||||
"discussions.actions.reopen": "फिर से खोलें",
|
||||
"discussions.actions.report": "रिपोर्ट",
|
||||
"discussions.actions.unreport": "अनरिपोर्ट",
|
||||
"discussions.actions.endorse": "समर्थन",
|
||||
"discussions.actions.unendorse": "समर्थन न करें",
|
||||
"discussions.actions.markAnswered": "उत्तर के रूप में चिह्नित करें",
|
||||
"discussions.actions.unMarkAnswered": "उत्तर के रूप में अचिह्नित करें",
|
||||
"discussions.modal.confirmation.button.cancel": "रद्द करना",
|
||||
"discussions.empty.allTopics": "इन विषयों के लिए सभी चर्चा गतिविधियाँ यहाँ दिखाई देंगी।",
|
||||
"discussions.empty.allPosts": "आपके पाठ्यक्रम की सभी चर्चा गतिविधियाँ यहाँ दिखाई देंगी।",
|
||||
"discussions.empty.myPosts": "जिन पोस्टों के साथ आपने इंटरैक्ट किया है वे यहां दिखाई देंगी।",
|
||||
"discussions.empty.topic": "इस विषय की सभी चर्चा गतिविधियाँ यहाँ दिखाई देंगी।",
|
||||
"discussions.empty.title": "अभी तक यहां कुछ भी नहीं है",
|
||||
"discussions.empty.noPostSelected": "कोई पोस्ट चयनित नहीं",
|
||||
"discussions.empty.noTopicSelected": "कोई विषय चयनित नहीं",
|
||||
"discussions.sidebar.noResultsFound": "कोई परिणाम नहीं मिला",
|
||||
"discussions.sidebar.differentKeywords": "अलग-अलग कीवर्ड खोजने का प्रयास करें",
|
||||
"discussions.sidebar.removeKeywords": "अलग-अलग कीवर्ड खोजने या कुछ फ़िल्टर हटाने का प्रयास करें",
|
||||
"discussions.sidebar.removeKeywordsOnly": "अलग-अलग कीवर्ड खोजने का प्रयास करें",
|
||||
"discussions.sidebar.removeFilters": "कुछ फ़िल्टर हटाने का प्रयास करें",
|
||||
"discussions.empty.iconAlt": "खाली",
|
||||
"discussions.authors.label.staff": "कर्मचारी",
|
||||
"discussions.authors.label.ta": "टीए",
|
||||
"discussions.learner.loadMostPosts": "और पोस्ट लोड करें",
|
||||
"discussions.post.anonymous.author": "गुमनाम",
|
||||
"discussion.blackoutBanner.information": "चर्चाओं में पोस्ट करना पाठ्यक्रम टीम द्वारा अक्षम कर दिया गया है",
|
||||
"discussions.editor.image.warning.message": "जब पोस्ट, प्रतिक्रिया या टिप्पणी को इन-लाइन पाठ्यक्रम चर्चाओं का उपयोग करके देखा जाता है तो 999px से अधिक चौड़ाई या ऊंचाई वाली छवियां दिखाई नहीं देंगी",
|
||||
"discussions.editor.image.warning.title": "चेतावनी!",
|
||||
"discussions.editor.image.warning.dismiss": "ठीक",
|
||||
"navigation.course.tabs.label": "पाठ्यक्रम सामग्री",
|
||||
"discussions.topics.backAlt": "विषय सूची पर वापस जाएं",
|
||||
"discussions.topics.discussions": "{count, plural, =0 {Discussion} one {# Discussion} other {# Discussions} }",
|
||||
"discussions.topics.questions": "{count, plural, =0 {Question} one {# Question} other {# Questions} }",
|
||||
"discussions.topics.reported": "{reported} रिपोर्ट किया गया",
|
||||
"discussions.topics.previouslyReported": "{previouslyReported} ने पहले रिपोर्ट किया था",
|
||||
"discussions.topics.find.label": "विषय खोजें",
|
||||
"discussions.topics.unnamed.section.label": "अनाम अनुभाग",
|
||||
"discussions.topics.unnamed.subsection.label": "अनाम उपखंड",
|
||||
"discussions.subtopics.unnamed.topic.label": "अनाम विषय",
|
||||
"discussions.topics.title": "कोई विषय मौजूद नहीं है",
|
||||
"discussions.topics.createTopic": "विषय बनाने के लिए कृपया अपने व्यवस्थापक से संपर्क करें",
|
||||
"discussions.topics.nothing": "अभी तक यहां कुछ भी नहीं है",
|
||||
"discussions.topics.archived.label": "संग्रहीत",
|
||||
"discussions.learner.reported": "{reported} रिपोर्ट किया गया",
|
||||
"discussions.learner.previouslyReported": "{previouslyReported} ने पहले रिपोर्ट किया था",
|
||||
"discussions.learner.lastLogin": "अंतिम सक्रिय {lastActiveTime}",
|
||||
"discussions.learner.loadMostLearners": "और लोड करें",
|
||||
"discussions.learner.back": "वापस",
|
||||
"discussions.learner.activityForLearner": "{username} के लिए गतिविधि",
|
||||
"discussions.learner.mostActivity": "सर्वाधिक गतिविधि",
|
||||
"discussions.learner.reportedActivity": "रिपोर्ट की गई गतिविधि",
|
||||
"discussions.learner.recentActivity": "हाल की गतिविधि",
|
||||
"discussions.learner.sortFilterStatus": "सभी शिक्षार्थियों को {sort, select, flagged {reported activity} activity {most activity} other {{sort}} }",
|
||||
"discussion.learner.allActivity": "सारी गतिविधि",
|
||||
"discussion.learner.posts": "पोस्ट",
|
||||
"discussions.comments.comment.addComment": "टिप्पणी जोड़ें",
|
||||
"discussions.comments.comment.addResponse": "एक प्रतिक्रिया जोड़ें",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "कर्मचारियों की समीक्षा के लिए सामग्री रिपोर्ट की गई",
|
||||
"discussions.actions.back.alt": "सूची पर वापस जाएं",
|
||||
"discussions.comments.comment.responseCount": "{num, plural, =0 {No responses} one {Showing # response} other {Showing # responses} }",
|
||||
"discussions.comments.comment.endorsedResponseCount": "{num, plural, =0 {No endorsed responses} one {Showing # endorsed response} other {Showing # endorsed responses} }",
|
||||
"discussions.comments.comment.loadMoreComments": "और टिप्पणियों को लोड करें",
|
||||
"discussions.comments.comment.loadMoreResponses": "अधिक प्रतिक्रियाएं लोड करें",
|
||||
"discussions.comments.comment.visibility": "यह पोस्ट {group, select, null {Everyone} other {{group}} } को दृश्यमान है।",
|
||||
"discussions.comments.comment.postedTime": "{postType, select, discussion {Discussion} question {Question} other {{postType}} } posted {relativeTime} by",
|
||||
"discussions.comments.comment.commentTime": "{relativeTime} पोस्ट किया गया",
|
||||
"discussions.comments.comment.answer": "उत्तर",
|
||||
"discussions.comments.comment.answeredlabel": "उत्तर देने के रूप में चिह्नित किया गया",
|
||||
"discussions.comments.comment.endorsed": "समर्थन किया",
|
||||
"discussions.comments.comment.endorsedlabel": "द्वारा समर्थन",
|
||||
"discussions.actions.label": "एक्शन मेन्यू",
|
||||
"discussions.editor.submit": "प्रस्तुत",
|
||||
"discussions.editor.submitting": "भेजने से",
|
||||
"discussions.editor.cancel": "रद्द करना",
|
||||
"discussions.editor.error.empty": "पोस्ट सामग्री खाली नहीं हो सकती।",
|
||||
"discussions.editor.delete.response.title": "प्रतिक्रिया हटाएँ",
|
||||
"discussions.editor.delete.response.description": "क्या आप वाकई इस प्रतिक्रिया को स्थायी रूप से हटाना चाहते हैं?",
|
||||
"discussions.editor.delete.comment.title": "टिप्पणी हटाएँ",
|
||||
"discussions.editor.delete.comment.description": "क्या आप वाकई इस टिप्पणी को स्थायी रूप से हटाना चाहते हैं?",
|
||||
"discussions.delete.confirmation.button.delete": "नष्ट करें",
|
||||
"discussions.editor.response.response.title": "अनुचित सामग्री की रिपोर्ट करें?",
|
||||
"discussions.editor.response.description": "चर्चा मॉडरेशन टीम इस सामग्री की समीक्षा करेगी और उचित कार्रवाई करेगी।",
|
||||
"discussions.editor.report.comment.title": "अनुचित सामग्री की रिपोर्ट करें?",
|
||||
"discussions.editor.report.comment.description": "चर्चा मॉडरेशन टीम इस सामग्री की समीक्षा करेगी और उचित कार्रवाई करेगी।",
|
||||
"discussions.editor.comments.editReasonCode": "संपादन का कारण",
|
||||
"discussions.editor.posts.editReasonCode.error": "संपादन का कारण चुनें",
|
||||
"discussions.comment.comments.editedBy": "द्वारा संपादित",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "कारण",
|
||||
"discussions.post.closedBy": "पोस्ट बंद कर दी गई",
|
||||
"discussion.comment.time": "{time} पहले",
|
||||
"discussion.thread.notFound": "थ्रेड नहीं मिला",
|
||||
"discussions.comment.sortFilterStatus": "{sort, select, false {Oldest first} true {Newest first} other {{sort}} }",
|
||||
"discussions.topics.sort.message": "{sortBy} द्वारा क्रमबद्ध",
|
||||
"discussions.topics.sort.lastActivity": "हाल की गतिविधि",
|
||||
"discussions.topics.sort.commentCount": "सर्वाधिक गतिविधि",
|
||||
"discussions.topics.sort.courseStructure": "पाठ्यक्रम संरचना",
|
||||
"discussions.topics.unnamed.label": "अनाम श्रेणी",
|
||||
"discussions.subtopics.unnamed.label": "अनाम उपश्रेणी",
|
||||
"tour.action.advance": "अगला",
|
||||
"tour.action.dismiss": "ख़ारिज करें",
|
||||
"tour.action.end": "ठीक है",
|
||||
"tour.example.title": "उदाहरण यात्रा",
|
||||
"tour.example.body": "यह एक उदाहरण दौरा है",
|
||||
"learn.course.tabs.navigation.overflow.menu": "ज़्यादा...",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "विषय",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "सभी दिखाएं",
|
||||
"discussions.navigation.navigationBar.allPosts": "सभी पोस्ट",
|
||||
"discussions.navigation.navigationBar.allTopics": "विषय",
|
||||
"discussions.navigation.navigationBar.myPosts": "मेरी पोस्ट",
|
||||
"discussions.navigation.navigationBar.learners": "छात्र",
|
||||
"discussions.post.author.anonymous": "गुमनाम",
|
||||
"discussions.post.addResponse": "जवाब जोड़ें",
|
||||
"discussions.post.lastResponse": "अंतिम प्रतिक्रिया {time}",
|
||||
"discussions.post.postedOn": "{time} {author} {authorLabel} द्वारा पोस्ट",
|
||||
"discussions.post.contentReported": "सूचित किया जा चूका है",
|
||||
"discussions.post.following": "फ़ॉलोइंग",
|
||||
"discussions.post.follow": "फ़ॉलो",
|
||||
"discussions.post.followed": "अनुसरित",
|
||||
"discussions.post.notFollowed": "नहीं अनुसरित",
|
||||
"discussions.post.answered": "उत्तरित",
|
||||
"discussions.post.unFollow": "करें",
|
||||
"discussions.post.like": "जैसे",
|
||||
"discussions.post.removeLike": "अलग",
|
||||
"discussions.post.liked": "पसंद की",
|
||||
"discussions.post.likes": "पसंद",
|
||||
"discussions.post.viewActivity": "गतिविधि देखें",
|
||||
"discussions.post.activity": "पुनः प्रयास करें",
|
||||
"discussions.post.closed": "प्रतिक्रियाओं और टिप्पणियों के लिए पोस्ट बंद है",
|
||||
"discussions.post.relatedTo": "संबंधित",
|
||||
"discussions.editor.delete.post.title": "पोस्ट हटाएं",
|
||||
"discussions.editor.delete.post.description": "क्या आप वाकई इस पोस्ट को स्थायी रूप से हटाना चाहते हैं?",
|
||||
"discussions.post.delete.confirmation.button.delete": "नष्ट करें",
|
||||
"discussions.editor.report.post.title": "अनुचित सामग्री की रिपोर्ट करें?",
|
||||
"discussions.editor.report.post.description": "चर्चा मॉडरेशन टीम इस सामग्री की समीक्षा करेगी और उचित कार्रवाई करेगी।",
|
||||
"discussions.post.closePostModal.title": "पोस्ट बंद करें",
|
||||
"discussions.post.closePostModal.text": "इस पोस्ट को बंद करने का कारण दर्ज करें। यह केवल अन्य मॉडरेटर्स को प्रदर्शित होगा।",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "कारण",
|
||||
"discussions.post.closePostModal.cancel": "रद्द करना",
|
||||
"discussions.post.closePostModal.confirm": "पोस्ट बंद करें",
|
||||
"discussions.post.label.new": "{count} नया",
|
||||
"discussions.post.editedBy": "द्वारा संपादित",
|
||||
"discussions.post.editReason": "कारण",
|
||||
"discussions.post.postWithoutPreview": "कोई पूर्वावलोकन उपलब्ध नहीं है",
|
||||
"discussions.post.follow.description": "आप इस पोस्ट का पालन कर रहे हैं",
|
||||
"discussions.post.unfollow.description": "आप इस पोस्ट का पालन नहीं कर रहे हैं",
|
||||
"discussions.app.title": "चर्चाएँ",
|
||||
"discussions.posts.actionBar.searchAllPosts": "सभी पोस्ट खोजें",
|
||||
"discussions.posts.actionBar.search": "{page, select, topics {Search topics} posts {Search all posts} learners {Search learners} myPosts {Search all posts} other {{page}} }",
|
||||
"discussions.actionBar.searchInfo": "\"{text}\" के लिए {count} परिणाम दिखा रहा है",
|
||||
"discussions.actionBar.searchRewriteInfo": "\"{searchString}\" के लिए कोई परिणाम नहीं मिले। \"{textSearchRewrite}\" के लिए {count} परिणाम दिखा रहे हैं।",
|
||||
"discussions.actionBar.searchInfoSearching": "खोज रहा है...",
|
||||
"discussions.actionBar.clearSearch": "स्पष्ट परिणाम",
|
||||
"discussion.posts.actionBar.add": "एक पोस्ट जोड़ें",
|
||||
"discussion.posts.actionBar.close": "बंद करे",
|
||||
"discussions.post.editor.type": "पद प्रकार",
|
||||
"discussions.post.editor.addPostHeading": "एक पोस्ट जोड़ें",
|
||||
"discussions.post.editor.editPostHeading": "संपादित पोस्ट",
|
||||
"discussions.post.editor.typeDescription": "प्रश्न ऐसे मुद्दे उठाते हैं जिनके उत्तर की आवश्यकता होती है। चर्चाएँ विचार साझा करती हैं और बातचीत शुरू करती हैं।",
|
||||
"discussions.post.editor.required": "आवश्यक",
|
||||
"discussions.post.editor.questionType": "सवाल",
|
||||
"discussions.post.editor.questionDescription": "जवाब दें",
|
||||
"discussions.post.editor.discussionType": "चर्चा",
|
||||
"discussions.post.editor.discussionDescription": "विचारों को साझा करें और बातचीत शुरू करें",
|
||||
"discussions.post.editor.topicArea": "विषय क्षेत्र",
|
||||
"discussions.post.editor.topicAreaDescription": "दूसरों को इसे ढूंढने में मदद करने के लिए अपनी पोस्ट को किसी प्रासंगिक विषय पर जोड़ें।",
|
||||
"discussions.post.editor.cohortVisibility": "समूह दृश्यता",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "सभी शिक्षार्थी",
|
||||
"discussions.post.editor.title": "पोस्ट शीर्षक",
|
||||
"discussions.post.editor.titleDescription": "भागीदारी को प्रोत्साहित करने के लिए एक स्पष्ट और वर्णनात्मक शीर्षक जोड़ें।",
|
||||
"discussions.post.editor.title.error": "पोस्ट शीर्षक खाली नहीं हो सकता है।",
|
||||
"discussions.post.editor.content.error": "पोस्ट सामग्री खाली नहीं हो सकती।",
|
||||
"discussions.post.editor.questionText": "आपका प्रश्न या विचार (आवश्यक)",
|
||||
"discussions.post.editor.preview": "पूर्वावलोकन",
|
||||
"discussions.post.editor.followPost": "इस पोस्ट को फ़ॉलो करें",
|
||||
"discussions.post.editor.anonymousPost": "गुमनाम रूप से पोस्ट करें",
|
||||
"discussions.post.editor.anonymousToPeersPost": "साथियों को गुमनाम रूप से पोस्ट करें",
|
||||
"discussions.editor.posts.editReasonCode": "संपादन का कारण",
|
||||
"discussions.editor.posts.showPreview.button": "पूर्वावलोकन दिखाएं",
|
||||
"discussions.topic.noName.label": "अनाम श्रेणी",
|
||||
"discussions.subtopic.noName.label": "अनाम उपश्रेणी",
|
||||
"discussions.posts.filter.showALl": "सभी दिखाएं",
|
||||
"discussions.posts.filter.discussions": "चर्चाएँ",
|
||||
"discussions.posts.filter.questions": "प्रश्न",
|
||||
"discussions.posts.filter.message": "स्थिति: {filterBy}",
|
||||
"discussions.posts.status.filter.anyStatus": "कोई स्थिति",
|
||||
"discussions.posts.status.filter.unread": "अपठित",
|
||||
"discussions.posts.status.filter.following": "फ़ॉलोइंग",
|
||||
"discussions.posts.status.filter.reported": "सूचित किया जा चूका है",
|
||||
"discussions.posts.status.filter.unanswered": "अनुत्तरित",
|
||||
"discussions.posts.status.filter.unresponded": "जवाब नहीं दिया",
|
||||
"discussions.posts.filter.myPosts": "मेरे पोस्ट",
|
||||
"discussions.posts.filter.myDiscussions": "मेरी चर्चाएँ",
|
||||
"discussions.posts.filter.myQuestions": "मेरे सवाल",
|
||||
"discussions.posts.sort.message": "{sortBy} द्वारा क्रमबद्ध",
|
||||
"discussions.posts.sort.lastActivity": "हाल की गतिविधि",
|
||||
"discussions.posts.sort.commentCount": "सर्वाधिक गतिविधि",
|
||||
"discussions.posts.sort.voteCount": "सबसे अधिक पसंद",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": "{own, select, false {All} true {Own} other {{own}} } {status, select, statusAll {} statusUnread {unread} statusFollowing {followed} statusReported {reported} statusUnanswered {unanswered} statusUnresponded {unresponded} other {{status}} } {type, select, discussion {discussions} question {questions} all {posts} other {{type}} } {cohortType, select, all {} group {in {cohort}} other {{cohortType}} } sorted by {sort, select, lastActivityAt {recent activity} commentCount {most activity} voteCount {most likes} other {{sort}} }"
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "Menù Azioni",
|
||||
"discussions.actions.copylink": "Copia link",
|
||||
"discussions.actions.edit": "Modifica",
|
||||
"discussions.actions.pin": "Blocca",
|
||||
"discussions.actions.unpin": "Sblocca ",
|
||||
"discussions.actions.delete": "Cancella",
|
||||
"discussions.confirmation.button.confirm": "Conferma",
|
||||
"discussions.actions.close": "Chiudi",
|
||||
"discussions.actions.reopen": "Riaprire",
|
||||
"discussions.actions.report": "Segnala",
|
||||
"discussions.actions.unreport": "Annulla segnalazione",
|
||||
"discussions.actions.endorse": "Promuovi ",
|
||||
"discussions.actions.unendorse": "Annulla promozione ",
|
||||
"discussions.actions.markAnswered": "Contrassegna come risposto",
|
||||
"discussions.actions.unMarkAnswered": "Deseleziona come risposta",
|
||||
"discussions.modal.confirmation.button.cancel": "Annulla",
|
||||
"discussions.empty.allTopics": "Tutte le attività di discussione per questi argomenti verranno visualizzate qui.",
|
||||
"discussions.empty.allPosts": "Tutte le attività di discussione per il tuo corso verranno visualizzate qui.",
|
||||
"discussions.empty.myPosts": "I post con cui hai interagito verranno visualizzati qui.",
|
||||
"discussions.empty.topic": "Tutte le attività di discussione per questo argomento verranno visualizzate qui.",
|
||||
"discussions.empty.title": "Ancora niente qui",
|
||||
"discussions.empty.noPostSelected": "Nessun post selezionato",
|
||||
"discussions.empty.noTopicSelected": "Nessun argomento selezionato",
|
||||
"discussions.sidebar.noResultsFound": "Nessun risultato trovato ",
|
||||
"discussions.sidebar.differentKeywords": "Prova a cercare parole chiave diverse",
|
||||
"discussions.sidebar.removeKeywords": "Prova a cercare parole chiave diverse o a rimuovere alcuni filtri",
|
||||
"discussions.sidebar.removeKeywordsOnly": "Prova a cercare parole chiave diverse",
|
||||
"discussions.sidebar.removeFilters": "Prova a rimuovere alcuni filtri",
|
||||
"discussions.empty.iconAlt": "Vuoto",
|
||||
"discussions.authors.label.staff": "Staff",
|
||||
"discussions.authors.label.ta": "TA",
|
||||
"discussions.learner.loadMostPosts": "Carica più post",
|
||||
"discussions.post.anonymous.author": "anonimo",
|
||||
"discussion.blackoutBanner.information": "La pubblicazione nelle discussioni è disabilitata dal team del corso",
|
||||
"discussions.editor.image.warning.message": "Le immagini di larghezza o altezza superiori a 999 pixel non saranno visibili quando il post, la risposta o il commento vengono visualizzati utilizzando le discussioni del corso in linea",
|
||||
"discussions.editor.image.warning.title": "Avvertimento!",
|
||||
"discussions.editor.image.warning.dismiss": "Ok",
|
||||
"navigation.course.tabs.label": "Materiale del corso",
|
||||
"discussions.topics.backAlt": "Torna all'elenco degli argomenti",
|
||||
"discussions.topics.discussions": "{count, plural, =0 {Discussione} one {# Discussione} other {# Discussioni} }",
|
||||
"discussions.topics.questions": "{count, plural, =0 {Domanda} one {# Domanda} other {# Domande} }",
|
||||
"discussions.topics.reported": "{reported} segnalato",
|
||||
"discussions.topics.previouslyReported": "{previouslyReported} segnalato in precedenza",
|
||||
"discussions.topics.find.label": "Cerca argomenti",
|
||||
"discussions.topics.unnamed.section.label": "Sezione senza nome",
|
||||
"discussions.topics.unnamed.subsection.label": "Sottosezione senza nome",
|
||||
"discussions.subtopics.unnamed.topic.label": "Argomento senza nome",
|
||||
"discussions.topics.title": "Nessun argomento esiste",
|
||||
"discussions.topics.createTopic": "Contatta l'amministratore per creare un argomento",
|
||||
"discussions.topics.nothing": "Ancora niente qui",
|
||||
"discussions.topics.archived.label": "Archiviati",
|
||||
"discussions.learner.reported": "{reported} segnalato",
|
||||
"discussions.learner.previouslyReported": "{previouslyReported} segnalato in precedenza",
|
||||
"discussions.learner.lastLogin": "Ultimo attivo {lastActiveTime}",
|
||||
"discussions.learner.loadMostLearners": "Caricane di più",
|
||||
"discussions.learner.back": "Indietro",
|
||||
"discussions.learner.activityForLearner": "Attività per {username}",
|
||||
"discussions.learner.mostActivity": "La maggior parte delle attività",
|
||||
"discussions.learner.reportedActivity": "Attività segnalata",
|
||||
"discussions.learner.recentActivity": "Attività Recente",
|
||||
"discussions.learner.sortFilterStatus": "Tutti gli studenti ordinati per {ordina, seleziona, contrassegnato {attività segnalata} attività {la maggior parte delle attività} altro { {sort} } }",
|
||||
"discussion.learner.allActivity": "Tutte le attività",
|
||||
"discussion.learner.posts": "Messaggi",
|
||||
"discussions.comments.comment.addComment": "Aggiungi commento",
|
||||
"discussions.comments.comment.addResponse": "Aggiungi una risposta",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "Contenuto segnalato per la revisione da parte del personale",
|
||||
"discussions.actions.back.alt": "Torna alla lista",
|
||||
"discussions.comments.comment.responseCount": "{num, plurale, =0 {Nessuna risposta} one {Mostra # risposta} other {Mostra # risposte} }",
|
||||
"discussions.comments.comment.endorsedResponseCount": "{num, plural, =0 {Nessuna risposta approvata} one {Visualizzazione di # risposta approvata} other {Visualizzazione di # risposte approvate} }",
|
||||
"discussions.comments.comment.loadMoreComments": "Carica più commenti",
|
||||
"discussions.comments.comment.loadMoreResponses": "Carica più risposte",
|
||||
"discussions.comments.comment.visibility": "Questo post è visibile a {group, select, null {Everyone} other { {group} } }.",
|
||||
"discussions.comments.comment.postedTime": "{postType, select, discuss {Discussion} question {Question} other { {postType} } } pubblicato {relativeTime} da",
|
||||
"discussions.comments.comment.commentTime": "Inserito {relativeTime}",
|
||||
"discussions.comments.comment.answer": "Risposta",
|
||||
"discussions.comments.comment.answeredlabel": "Contrassegnato come risposta da",
|
||||
"discussions.comments.comment.endorsed": "Approvato",
|
||||
"discussions.comments.comment.endorsedlabel": "Approvato dal",
|
||||
"discussions.actions.label": "Menù Azioni",
|
||||
"discussions.editor.submit": "Invia",
|
||||
"discussions.editor.submitting": "In fase di invio",
|
||||
"discussions.editor.cancel": "Annulla",
|
||||
"discussions.editor.error.empty": "Il contenuto del post non può essere vuoto.",
|
||||
"discussions.editor.delete.response.title": "Elimina risposta",
|
||||
"discussions.editor.delete.response.description": "Sei sicuro di voler eliminare definitivamente questa risposta?",
|
||||
"discussions.editor.delete.comment.title": "Elimina commento",
|
||||
"discussions.editor.delete.comment.description": "Sei sicuro di voler eliminare definitivamente questo commento?",
|
||||
"discussions.delete.confirmation.button.delete": "Cancella",
|
||||
"discussions.editor.response.response.title": "Segnalare contenuti inappropriati?",
|
||||
"discussions.editor.response.description": "Il team di moderazione della discussione esaminerà questo contenuto e intraprenderà le azioni appropriate.",
|
||||
"discussions.editor.report.comment.title": "Segnalare contenuti inappropriati?",
|
||||
"discussions.editor.report.comment.description": "Il team di moderazione della discussione esaminerà questo contenuto e intraprenderà le azioni appropriate.",
|
||||
"discussions.editor.comments.editReasonCode": "Motivo della modifica",
|
||||
"discussions.editor.posts.editReasonCode.error": "Seleziona il motivo per la modifica",
|
||||
"discussions.comment.comments.editedBy": "A cura di",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "Motivo ",
|
||||
"discussions.post.closedBy": "Post chiuso da",
|
||||
"discussion.comment.time": "{time} fa",
|
||||
"discussion.thread.notFound": "Discussione non trovata",
|
||||
"discussions.comment.sortFilterStatus": "{sort, select, false {Prima il più vecchio} true {Prima il più nuovo} other { {sort} } }",
|
||||
"discussions.topics.sort.message": "Ordinato per {sortBy}",
|
||||
"discussions.topics.sort.lastActivity": "Attività Recente",
|
||||
"discussions.topics.sort.commentCount": "La maggior parte delle attività",
|
||||
"discussions.topics.sort.courseStructure": "Struttura Corso",
|
||||
"discussions.topics.unnamed.label": "Categoria senza nome",
|
||||
"discussions.subtopics.unnamed.label": "Sottocategoria senza nome",
|
||||
"tour.action.advance": "Successivo",
|
||||
"tour.action.dismiss": "Chiudi",
|
||||
"tour.action.end": "Bene",
|
||||
"tour.example.title": "Giro d'esempio",
|
||||
"tour.example.body": "Questo è un tour di esempio",
|
||||
"learn.course.tabs.navigation.overflow.menu": "Altro... ",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "Argomenti",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "Mostra tutto",
|
||||
"discussions.navigation.navigationBar.allPosts": "Tutti i post",
|
||||
"discussions.navigation.navigationBar.allTopics": "Argomenti",
|
||||
"discussions.navigation.navigationBar.myPosts": "I miei post",
|
||||
"discussions.navigation.navigationBar.learners": "Utenti",
|
||||
"discussions.post.author.anonymous": "anonimo",
|
||||
"discussions.post.addResponse": "Aggiungi risposta",
|
||||
"discussions.post.lastResponse": "Ultima risposta {time}",
|
||||
"discussions.post.postedOn": "Inserito {time} da {author} {authorLabel}",
|
||||
"discussions.post.contentReported": "Segnalato ",
|
||||
"discussions.post.following": "Seguente",
|
||||
"discussions.post.follow": "Segui ",
|
||||
"discussions.post.followed": "Seguito",
|
||||
"discussions.post.notFollowed": "Non seguito",
|
||||
"discussions.post.answered": "Risposto",
|
||||
"discussions.post.unFollow": "Annulla Segui ",
|
||||
"discussions.post.like": "Piace",
|
||||
"discussions.post.removeLike": "A differenza di",
|
||||
"discussions.post.liked": "è piaciuto",
|
||||
"discussions.post.likes": "piace",
|
||||
"discussions.post.viewActivity": "Visualizza attività",
|
||||
"discussions.post.activity": "Attività",
|
||||
"discussions.post.closed": "Post chiuso per risposte e commenti",
|
||||
"discussions.post.relatedTo": "Relativo a",
|
||||
"discussions.editor.delete.post.title": "Elimina messaggio",
|
||||
"discussions.editor.delete.post.description": "Sei sicuro di voler eliminare definitivamente questo post?",
|
||||
"discussions.post.delete.confirmation.button.delete": "Cancella",
|
||||
"discussions.editor.report.post.title": "Segnalare contenuti inappropriati?",
|
||||
"discussions.editor.report.post.description": "Il team di moderazione della discussione esaminerà questo contenuto e intraprenderà le azioni appropriate.",
|
||||
"discussions.post.closePostModal.title": "Chiudi messaggio",
|
||||
"discussions.post.closePostModal.text": "Inserisci un motivo per chiudere questo post. Questo verrà mostrato solo agli altri moderatori.",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "Motivo ",
|
||||
"discussions.post.closePostModal.cancel": "Annulla",
|
||||
"discussions.post.closePostModal.confirm": "Chiudi messaggio",
|
||||
"discussions.post.label.new": "{count} Nuovo",
|
||||
"discussions.post.editedBy": "A cura di",
|
||||
"discussions.post.editReason": "Motivo ",
|
||||
"discussions.post.postWithoutPreview": "nessuna anteprima disponibile",
|
||||
"discussions.post.follow.description": "stai seguendo questo post",
|
||||
"discussions.post.unfollow.description": "non stai seguendo questo post",
|
||||
"discussions.app.title": "Discussioni",
|
||||
"discussions.posts.actionBar.searchAllPosts": "Cerca tutti i messaggi",
|
||||
"discussions.posts.actionBar.search": "{page, select, topics {Cerca argomenti} post {Cerca tutti i post} studenti {Cerca studenti} myPosts {Cerca tutti i post} other { {page} } }",
|
||||
"discussions.actionBar.searchInfo": "Visualizzazione di {count} risultati per "{text}"",
|
||||
"discussions.actionBar.searchRewriteInfo": "Nessun risultato trovato per "{searchString}". Visualizzazione di {count} risultati per "{textSearchRewrite}".",
|
||||
"discussions.actionBar.searchInfoSearching": "Ricerca in corso...",
|
||||
"discussions.actionBar.clearSearch": "Risultati chiari",
|
||||
"discussion.posts.actionBar.add": "Aggiungi un post",
|
||||
"discussion.posts.actionBar.close": "Chiudi",
|
||||
"discussions.post.editor.type": "Tipo di post ",
|
||||
"discussions.post.editor.addPostHeading": "Aggiungi un post",
|
||||
"discussions.post.editor.editPostHeading": "Modifica post",
|
||||
"discussions.post.editor.typeDescription": "Le domande sollevano problemi che necessitano di risposte. Le discussioni condividono idee e avviano conversazioni.",
|
||||
"discussions.post.editor.required": "Richiesto",
|
||||
"discussions.post.editor.questionType": "Domanda",
|
||||
"discussions.post.editor.questionDescription": "Solleva problemi che richiedono risposte",
|
||||
"discussions.post.editor.discussionType": "Discussione",
|
||||
"discussions.post.editor.discussionDescription": "Condividi idee e avvia conversazioni",
|
||||
"discussions.post.editor.topicArea": "Area argomento ",
|
||||
"discussions.post.editor.topicAreaDescription": "Aggiungere il proprio post ad un argomento rilevante per consentire agli altri utenti di trovarlo.",
|
||||
"discussions.post.editor.cohortVisibility": "Visibilità di coorte",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "Tutti gli studenti",
|
||||
"discussions.post.editor.title": "Titolo del post",
|
||||
"discussions.post.editor.titleDescription": "Aggiungere un titolo chiaro e descrittivo per incoraggiare la partecipazione.",
|
||||
"discussions.post.editor.title.error": "Il titolo del post non può essere vuoto.",
|
||||
"discussions.post.editor.content.error": "Il contenuto del post non può essere vuoto.",
|
||||
"discussions.post.editor.questionText": "La tua domanda o idea (obbligatorio)",
|
||||
"discussions.post.editor.preview": "Anteprima",
|
||||
"discussions.post.editor.followPost": "Segui questo post",
|
||||
"discussions.post.editor.anonymousPost": "Pubblica in modo anonimo",
|
||||
"discussions.post.editor.anonymousToPeersPost": "Pubblica in modo anonimo ai colleghi",
|
||||
"discussions.editor.posts.editReasonCode": "Motivo della modifica",
|
||||
"discussions.editor.posts.showPreview.button": "Anteprima dello spettacolo",
|
||||
"discussions.topic.noName.label": "Categoria senza nome",
|
||||
"discussions.subtopic.noName.label": "Sottocategoria senza nome",
|
||||
"discussions.posts.filter.showALl": "Mostra tutto",
|
||||
"discussions.posts.filter.discussions": "Discussioni",
|
||||
"discussions.posts.filter.questions": "Domande",
|
||||
"discussions.posts.filter.message": "Stato: {filterBy}",
|
||||
"discussions.posts.status.filter.anyStatus": "Qualsiasi stato",
|
||||
"discussions.posts.status.filter.unread": "Non letto",
|
||||
"discussions.posts.status.filter.following": "Seguente",
|
||||
"discussions.posts.status.filter.reported": "Segnalato ",
|
||||
"discussions.posts.status.filter.unanswered": "Senza Risposta",
|
||||
"discussions.posts.status.filter.unresponded": "Non ha risposto",
|
||||
"discussions.posts.filter.myPosts": "I miei post",
|
||||
"discussions.posts.filter.myDiscussions": "Le mie discussioni",
|
||||
"discussions.posts.filter.myQuestions": "Le mie domande",
|
||||
"discussions.posts.sort.message": "Ordinato per {sortBy}",
|
||||
"discussions.posts.sort.lastActivity": "Attività Recente",
|
||||
"discussions.posts.sort.commentCount": "La maggior parte delle attività",
|
||||
"discussions.posts.sort.voteCount": "La maggior parte dei Mi piace",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": "{own, select, false {All} true {Own} other { {own} } } {status, select, statusAll {} statusNon letto {non letto} statusFollowing {followed} statusReported {reported} statusNon risposto {senza risposta} statusNon risposto {senza risposta} other { {status} } } {type, select, discuss {discussions} question {questions} all {posts} other { {type} } } {cohortType, select, all {} group {in {cohort} } other { {cohortType} } } ordinato per {sort, select, lastActivityAt { attività recente} commentCount {la maggior parte delle attività} voteCount {il maggior numero di Mi piace} other { {sort} } }"
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "Menu czynności",
|
||||
"discussions.actions.copylink": "Skopiuj link",
|
||||
"discussions.actions.edit": "Edytuj",
|
||||
"discussions.actions.pin": "Przypnij",
|
||||
"discussions.actions.unpin": "Odepnij",
|
||||
"discussions.actions.delete": "Usuń",
|
||||
"discussions.confirmation.button.confirm": "Potwierdź",
|
||||
"discussions.actions.close": "Zamknij",
|
||||
"discussions.actions.reopen": "Otwórz ponownie",
|
||||
"discussions.actions.report": "Zgłoś",
|
||||
"discussions.actions.unreport": "Anuluj zgłoszenie",
|
||||
"discussions.actions.endorse": "Zaaprobuj",
|
||||
"discussions.actions.unendorse": "Anuluj aprobatę",
|
||||
"discussions.actions.markAnswered": "Odpowiedź wysłana",
|
||||
"discussions.actions.unMarkAnswered": "Nie oznaczaj jako odpowiedziane",
|
||||
"discussions.modal.confirmation.button.cancel": "Anuluj",
|
||||
"discussions.empty.allTopics": "Wszystkie dyskusje dotyczące tych tematów pojawią się tutaj.",
|
||||
"discussions.empty.allPosts": "Tutaj pojawią się wszystkie dyskusje dotyczące Twojego kursu.",
|
||||
"discussions.empty.myPosts": "Posty, z którymi wchodzisz w interakcję, pojawią się tutaj.",
|
||||
"discussions.empty.topic": "Wszystkie dyskusje dla tego tematu pojawią się tutaj.",
|
||||
"discussions.empty.title": "Nic tu jeszcze nie ma.",
|
||||
"discussions.empty.noPostSelected": "Nie wybrano żadnego postu",
|
||||
"discussions.empty.noTopicSelected": "Nie wybrano żadnego tematu",
|
||||
"discussions.sidebar.noResultsFound": "Brak wyników wyszukiwania",
|
||||
"discussions.sidebar.differentKeywords": "Spróbuj wyszukać inne słowa kluczowe",
|
||||
"discussions.sidebar.removeKeywords": "Spróbuj wyszukać inne słowa kluczowe lub usunąć niektóre filtry",
|
||||
"discussions.sidebar.removeKeywordsOnly": "Spróbuj wyszukać inne słowa kluczowe",
|
||||
"discussions.sidebar.removeFilters": "Spróbuj usunąć niektóre filtry",
|
||||
"discussions.empty.iconAlt": "Puste",
|
||||
"discussions.authors.label.staff": "Kadra",
|
||||
"discussions.authors.label.ta": "TA",
|
||||
"discussions.learner.loadMostPosts": "Wczytaj więcej postów",
|
||||
"discussions.post.anonymous.author": "anonimowy",
|
||||
"discussion.blackoutBanner.information": "Kurs zespół blokuje możliwość zamieszczania wpisów w dyskusjach",
|
||||
"discussions.editor.image.warning.message": "Obrazy o szerokości lub wysokości większej niż 999 pikseli nie będą widoczne podczas wyświetlania wpisu, odpowiedzi lub komentarza w ramach dyskusji na kursie",
|
||||
"discussions.editor.image.warning.title": "Ostrzeżenie!",
|
||||
"discussions.editor.image.warning.dismiss": "Ok",
|
||||
"navigation.course.tabs.label": "Materiał kursowy",
|
||||
"discussions.topics.backAlt": "Powrót do listy tematów",
|
||||
"discussions.topics.discussions": "{count, plural, =0 {Dyskusja} one {# Dyskusja} other {# Dyskusje} }",
|
||||
"discussions.topics.questions": "{count, plural, =0 {Pytanie} jedno {# Pytanie} inne {# Pytania} }",
|
||||
"discussions.topics.reported": "{reported} zgłoszone",
|
||||
"discussions.topics.previouslyReported": "{previouslyReported} wcześniej zgłoszone",
|
||||
"discussions.topics.find.label": "Szukaj tematów",
|
||||
"discussions.topics.unnamed.section.label": "Sekcja bez nazwy",
|
||||
"discussions.topics.unnamed.subsection.label": "Podsekcja bez nazwy",
|
||||
"discussions.subtopics.unnamed.topic.label": "Nienazwany temat",
|
||||
"discussions.topics.title": "Nie istnieje żaden temat",
|
||||
"discussions.topics.createTopic": "Proszę o kontakt z administratorem w celu Utworzyć tematu",
|
||||
"discussions.topics.nothing": "Nic tu jeszcze nie ma.",
|
||||
"discussions.topics.archived.label": "Zarchiwizowany",
|
||||
"discussions.learner.reported": "{reported} zgłoszone",
|
||||
"discussions.learner.previouslyReported": "{previouslyReported} wcześniej zgłoszone",
|
||||
"discussions.learner.lastLogin": "Ostatnia aktywność {lastActiveTime}",
|
||||
"discussions.learner.loadMostLearners": "Wczytaj więcej",
|
||||
"discussions.learner.back": "Przejdź wstecz",
|
||||
"discussions.learner.activityForLearner": "Aktywność dla {username}",
|
||||
"discussions.learner.mostActivity": "Największa aktywność",
|
||||
"discussions.learner.reportedActivity": "Zgłoszona aktywność",
|
||||
"discussions.learner.recentActivity": "Ostatnia aktywność",
|
||||
"discussions.learner.sortFilterStatus": "Wszyscy uczniowie posortowani według {sort, wybierz, oflagowana {zgłoszona aktywność} aktywność {najwięcej aktywności} inne { {sort} } }",
|
||||
"discussion.learner.allActivity": "Cała aktywność",
|
||||
"discussion.learner.posts": "Posty",
|
||||
"discussions.comments.comment.addComment": "Dodaj komentarz",
|
||||
"discussions.comments.comment.addResponse": "Dodaj odpowiedź",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "Treść zgłoszona do przeglądu przez pracowników",
|
||||
"discussions.actions.back.alt": "Powrót do listy",
|
||||
"discussions.comments.comment.responseCount": "{num, plural, =0 {Brak odpowiedzi} one {Pokazuję # odpowiedzi} other {Pokazuję # odpowiedzi} }",
|
||||
"discussions.comments.comment.endorsedResponseCount": "{num, plural, =0 {Brak zatwierdzonych odpowiedzi} one {Pokazuje # zatwierdzonych odpowiedzi} other {Pokazuje # zatwierdzonych odpowiedzi} }",
|
||||
"discussions.comments.comment.loadMoreComments": "Załaduj więcej komentarzy",
|
||||
"discussions.comments.comment.loadMoreResponses": "Załaduj więcej odpowiedzi",
|
||||
"discussions.comments.comment.visibility": "Ten post jest widoczny dla {group,select, null {Everyone} other { {group} } }.",
|
||||
"discussions.comments.comment.postedTime": "{postType, wybierz, dyskusja {Dyskusja} pytanie {Pytanie} inne { {postType} } } wysłane {relativeTime} przez",
|
||||
"discussions.comments.comment.commentTime": "Wysłano {relativeTime}",
|
||||
"discussions.comments.comment.answer": "Odpowiedź",
|
||||
"discussions.comments.comment.answeredlabel": "Oznaczono jako odpowiedziane przez",
|
||||
"discussions.comments.comment.endorsed": "Zatwierdzony",
|
||||
"discussions.comments.comment.endorsedlabel": "Zatwierdzony przez",
|
||||
"discussions.actions.label": "Menu czynności",
|
||||
"discussions.editor.submit": "Prześlij",
|
||||
"discussions.editor.submitting": "Wysyłanie",
|
||||
"discussions.editor.cancel": "Anuluj",
|
||||
"discussions.editor.error.empty": "Treść postu nie może być pusta.",
|
||||
"discussions.editor.delete.response.title": "Usuń odpowiedź",
|
||||
"discussions.editor.delete.response.description": "Czy na pewno chcesz trwale usunąć tę odpowiedź?",
|
||||
"discussions.editor.delete.comment.title": "Usuń komentarz",
|
||||
"discussions.editor.delete.comment.description": "Czy na pewno chcesz trwale usunąć ten komentarz?",
|
||||
"discussions.delete.confirmation.button.delete": "Usuń",
|
||||
"discussions.editor.response.response.title": "Zgłoś nieodpowiednią zawartość ?",
|
||||
"discussions.editor.response.description": "Moderator dyskusji zespół sprawdzi tę zawartość i podejmie odpowiednie działania.",
|
||||
"discussions.editor.report.comment.title": "Zgłoś nieodpowiednią zawartość ?",
|
||||
"discussions.editor.report.comment.description": "Moderator dyskusji zespół sprawdzi tę zawartość i podejmie odpowiednie działania.",
|
||||
"discussions.editor.comments.editReasonCode": "Powód edycji",
|
||||
"discussions.editor.posts.editReasonCode.error": "Wybierz powód edycji",
|
||||
"discussions.comment.comments.editedBy": "Edytowany przez",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "Powód",
|
||||
"discussions.post.closedBy": "Post zamknięty przez",
|
||||
"discussion.comment.time": "{time} temu",
|
||||
"discussion.thread.notFound": "Nie znaleziono wątku",
|
||||
"discussions.comment.sortFilterStatus": "{sort, wybierz, false {Najpierw najstarsze} prawda {Najpierw najnowsze} other { {sort} } }",
|
||||
"discussions.topics.sort.message": "Posortowane według {sortBy}",
|
||||
"discussions.topics.sort.lastActivity": "Ostatnia aktywność",
|
||||
"discussions.topics.sort.commentCount": "Największa aktywność",
|
||||
"discussions.topics.sort.courseStructure": "Struktura kursu",
|
||||
"discussions.topics.unnamed.label": "Kategoria bez nazwy",
|
||||
"discussions.subtopics.unnamed.label": "Podkategoria bez nazwy",
|
||||
"tour.action.advance": "Następny",
|
||||
"tour.action.dismiss": "Odrzuć",
|
||||
"tour.action.end": "Okay",
|
||||
"tour.example.title": "Przykładowa wycieczka",
|
||||
"tour.example.body": "To jest przykładowa wycieczka",
|
||||
"learn.course.tabs.navigation.overflow.menu": "Więcej...",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "Tematy",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "Pokaż wszystkie",
|
||||
"discussions.navigation.navigationBar.allPosts": "Wszystkie posty",
|
||||
"discussions.navigation.navigationBar.allTopics": "Tematy",
|
||||
"discussions.navigation.navigationBar.myPosts": "Moje posty",
|
||||
"discussions.navigation.navigationBar.learners": "Studenci",
|
||||
"discussions.post.author.anonymous": "anonimowy",
|
||||
"discussions.post.addResponse": "Dodaj odpowiedź",
|
||||
"discussions.post.lastResponse": "Ostatnia odpowiedź {time}",
|
||||
"discussions.post.postedOn": "Wysłane {time} przez {author} {authorLabel}",
|
||||
"discussions.post.contentReported": "Zgłoszony",
|
||||
"discussions.post.following": "Obserwowanie",
|
||||
"discussions.post.follow": "Obserwuj",
|
||||
"discussions.post.followed": "Śledzono",
|
||||
"discussions.post.notFollowed": "Nie podążano",
|
||||
"discussions.post.answered": "Odpowiedziano",
|
||||
"discussions.post.unFollow": "Nie obserwuj",
|
||||
"discussions.post.like": "Lubię",
|
||||
"discussions.post.removeLike": "Nie lubię",
|
||||
"discussions.post.liked": "podobało się",
|
||||
"discussions.post.likes": "lubi",
|
||||
"discussions.post.viewActivity": "Zobacz aktywność",
|
||||
"discussions.post.activity": "Aktywność",
|
||||
"discussions.post.closed": "Post zamknięty dla odpowiedzi i komentarzy",
|
||||
"discussions.post.relatedTo": "Powiązane z",
|
||||
"discussions.editor.delete.post.title": "Usuń post",
|
||||
"discussions.editor.delete.post.description": "Czy na pewno chcesz trwale usunąć ten wpis?",
|
||||
"discussions.post.delete.confirmation.button.delete": "Usuń",
|
||||
"discussions.editor.report.post.title": "Zgłoś nieodpowiednią zawartość ?",
|
||||
"discussions.editor.report.post.description": "Moderator dyskusji zespół sprawdzi tę zawartość i podejmie odpowiednie działania.",
|
||||
"discussions.post.closePostModal.title": "Zamknij post",
|
||||
"discussions.post.closePostModal.text": "Podaj powód zamknięcia tego posta. Będzie to widoczne tylko dla innych moderatorów.",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "Powód",
|
||||
"discussions.post.closePostModal.cancel": "Anuluj",
|
||||
"discussions.post.closePostModal.confirm": "Zamknij post",
|
||||
"discussions.post.label.new": "{count} nowe",
|
||||
"discussions.post.editedBy": "Edytowany przez",
|
||||
"discussions.post.editReason": "Powód",
|
||||
"discussions.post.postWithoutPreview": "Podgląd niedostępny",
|
||||
"discussions.post.follow.description": "śledzisz ten post",
|
||||
"discussions.post.unfollow.description": "nie śledzisz tego postu",
|
||||
"discussions.app.title": "Dyskusje",
|
||||
"discussions.posts.actionBar.searchAllPosts": "Przeszukaj wszystkie wpisy",
|
||||
"discussions.posts.actionBar.search": "{strona, wybierz, tematy {Przeszukaj tematy} posty {Przeszukaj wszystkie posty} uczniowie {Szukaj uczniów} myPosts {Przeszukaj wszystkie posty} other { {page} } }",
|
||||
"discussions.actionBar.searchInfo": "Wyświetlanie {count} wyników dla „{text}”",
|
||||
"discussions.actionBar.searchRewriteInfo": "Nie znaleziono wyników dla \"{searchString}\". Wyświetlanie {count} wyników dla \"{textSearchRewrite}\".",
|
||||
"discussions.actionBar.searchInfoSearching": "Szukam...",
|
||||
"discussions.actionBar.clearSearch": "Wyczyść wyniki",
|
||||
"discussion.posts.actionBar.add": "Dodaj post",
|
||||
"discussion.posts.actionBar.close": "Zamknij",
|
||||
"discussions.post.editor.type": "Typ wpisu",
|
||||
"discussions.post.editor.addPostHeading": "Dodaj post",
|
||||
"discussions.post.editor.editPostHeading": "Edytuj post",
|
||||
"discussions.post.editor.typeDescription": "Pytanie, czyli wszelkie sprawy wymagające odpowiedzi. Dyskusja, czyli propozycje i wymiany opinii.",
|
||||
"discussions.post.editor.required": "Wymagany",
|
||||
"discussions.post.editor.questionType": "Pytanie",
|
||||
"discussions.post.editor.questionDescription": "Zgłaszaj problemy wymagające odpowiedzi",
|
||||
"discussions.post.editor.discussionType": "Dyskusja",
|
||||
"discussions.post.editor.discussionDescription": "Dziel się pomyslami i rozpoczynaj rozmowy",
|
||||
"discussions.post.editor.topicArea": "Obszar tematu",
|
||||
"discussions.post.editor.topicAreaDescription": "Dodaj wpis do odpowiedniego tematu, aby ułatwić innym odnalezienie go",
|
||||
"discussions.post.editor.cohortVisibility": "Widoczność kohorty",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "Dla wszystkich studentów",
|
||||
"discussions.post.editor.title": "Tytuł postu",
|
||||
"discussions.post.editor.titleDescription": "Dodaj wyraźny, opisowy tytuł, aby zachęcić do zajrzenia.",
|
||||
"discussions.post.editor.title.error": "Tytuł postu nie może być pusty.",
|
||||
"discussions.post.editor.content.error": "Treść postu nie może być pusta.",
|
||||
"discussions.post.editor.questionText": "Twój pomysł, uwaga lub pytanie (wymagane)",
|
||||
"discussions.post.editor.preview": "Podgląd",
|
||||
"discussions.post.editor.followPost": "Obserwuj ten post",
|
||||
"discussions.post.editor.anonymousPost": "Publikuj anonimowo",
|
||||
"discussions.post.editor.anonymousToPeersPost": "Wysyłaj anonimowo do rówieśników",
|
||||
"discussions.editor.posts.editReasonCode": "Powód edycji",
|
||||
"discussions.editor.posts.showPreview.button": "Pokaż zapowiedzi",
|
||||
"discussions.topic.noName.label": "Kategoria bez nazwy",
|
||||
"discussions.subtopic.noName.label": "Podkategoria bez nazwy",
|
||||
"discussions.posts.filter.showALl": "Pokaż wszystkie",
|
||||
"discussions.posts.filter.discussions": "Dyskusje",
|
||||
"discussions.posts.filter.questions": "Pytania",
|
||||
"discussions.posts.filter.message": "Status: {filterBy}",
|
||||
"discussions.posts.status.filter.anyStatus": "Dowolny status",
|
||||
"discussions.posts.status.filter.unread": "Nieprzeczytane",
|
||||
"discussions.posts.status.filter.following": "Obserwowanie",
|
||||
"discussions.posts.status.filter.reported": "Zgłoszony",
|
||||
"discussions.posts.status.filter.unanswered": "Bez odpowiedzi",
|
||||
"discussions.posts.status.filter.unresponded": "Brak odpowiedzi",
|
||||
"discussions.posts.filter.myPosts": "Moje posty",
|
||||
"discussions.posts.filter.myDiscussions": "Moje dyskusje",
|
||||
"discussions.posts.filter.myQuestions": "Moje pytania",
|
||||
"discussions.posts.sort.message": "Posortowane według {sortBy}",
|
||||
"discussions.posts.sort.lastActivity": "Ostatnia aktywność",
|
||||
"discussions.posts.sort.commentCount": "Największa aktywność",
|
||||
"discussions.posts.sort.voteCount": "Najwięcej polubień",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": "{own,select, false {All} prawda {Own} other { {own} } } {status,select, statusAll {} statusUnread {unread} statusFollowing {followed} statusReported {reported} statusUnanswered {unanswered} statusUnresponded {unresponded} other { {status} } } {wpisz, wybierz, dyskusja {dyskusje} pytanie {pytania} wszystkie {posty} inne { {type} } } {cohortType, wybierz, wszystko {} grupa {in {grupa} } other { {cohortType} } } posortowane według {sort, wybierz, lastActivityAt { ostatnia aktywność} komentarzCount {najwięcej aktywności} głosowanieCount {najwięcej polubień} other { {sort} } }"
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "Menu de acções",
|
||||
"discussions.actions.copylink": "Copiar ligação",
|
||||
"discussions.actions.edit": "Editar",
|
||||
"discussions.actions.pin": "Fixar",
|
||||
"discussions.actions.unpin": "Desafixar",
|
||||
"discussions.actions.delete": "Eliminar",
|
||||
"discussions.confirmation.button.confirm": "Confirmar",
|
||||
"discussions.actions.close": "Fechar",
|
||||
"discussions.actions.reopen": "Reabrir",
|
||||
"discussions.actions.report": "Relatório",
|
||||
"discussions.actions.unreport": "Retirar denuncia",
|
||||
"discussions.actions.endorse": "Apoiar",
|
||||
"discussions.actions.unendorse": "Não apoiar",
|
||||
"discussions.actions.markAnswered": "Marcar como respondido",
|
||||
"discussions.actions.unMarkAnswered": "Desmarcar como respondido",
|
||||
"discussions.modal.confirmation.button.cancel": "Cancelar",
|
||||
"discussions.empty.allTopics": "Toda a actividade de fórum destes tópicos aparecerá aqui.",
|
||||
"discussions.empty.allPosts": "Todas as actividades de debate do fórum do seu curso serão apresentadas aqui.",
|
||||
"discussions.empty.myPosts": "As mensagens com as quais interagiu aparecerão aqui.",
|
||||
"discussions.empty.topic": "Toda a actividade de debate do fórum deste tópico aparecerá aqui.",
|
||||
"discussions.empty.title": "Ainda não há aqui nada",
|
||||
"discussions.empty.noPostSelected": "Nenhuma mensagem seleccionada",
|
||||
"discussions.empty.noTopicSelected": "Nenhum tópico seleccionado",
|
||||
"discussions.sidebar.noResultsFound": "Sem resultados",
|
||||
"discussions.sidebar.differentKeywords": "Tente pesquisar palavras-chave diferentes",
|
||||
"discussions.sidebar.removeKeywords": "Tente pesquisar palavras-chave diferentes ou remover alguns filtros",
|
||||
"discussions.sidebar.removeKeywordsOnly": "Tente pesquisar palavras-chave diferentes",
|
||||
"discussions.sidebar.removeFilters": "Tente remover alguns filtros",
|
||||
"discussions.empty.iconAlt": "Vazio",
|
||||
"discussions.authors.label.staff": "Equipa",
|
||||
"discussions.authors.label.ta": "",
|
||||
"discussions.learner.loadMostPosts": "Carregar mais mensagens",
|
||||
"discussions.post.anonymous.author": "anónimo",
|
||||
"discussion.blackoutBanner.information": "",
|
||||
"discussions.editor.image.warning.message": "As imagens com largura ou altura superior a 999px não serão visíveis quando a mensagem, resposta ou comentário for visualizado utilizando os debates em linha da disciplina",
|
||||
"discussions.editor.image.warning.title": "Aviso!",
|
||||
"discussions.editor.image.warning.dismiss": "Ok",
|
||||
"navigation.course.tabs.label": "Material do Curso",
|
||||
"discussions.topics.backAlt": "Voltar à lista de tópicos",
|
||||
"discussions.topics.discussions": "",
|
||||
"discussions.topics.questions": "",
|
||||
"discussions.topics.reported": "{reported} reportado",
|
||||
"discussions.topics.previouslyReported": "{previouslyReported} anteriormente reportado",
|
||||
"discussions.topics.find.label": "Pesquisar tópicos",
|
||||
"discussions.topics.unnamed.section.label": "Secção sem nome",
|
||||
"discussions.topics.unnamed.subsection.label": "Subsecção sem nome",
|
||||
"discussions.subtopics.unnamed.topic.label": "Tópico sem nome",
|
||||
"discussions.topics.title": "Não existe nenhum tópico",
|
||||
"discussions.topics.createTopic": "Contacte o seu administrador para criar um tópico",
|
||||
"discussions.topics.nothing": "Ainda não há aqui nada",
|
||||
"discussions.topics.archived.label": "Arquivado",
|
||||
"discussions.learner.reported": "{reported} reportado",
|
||||
"discussions.learner.previouslyReported": "{previouslyReported} anteriormente reportado",
|
||||
"discussions.learner.lastLogin": "Último activo {lastActiveTime}",
|
||||
"discussions.learner.loadMostLearners": "Carregar mais",
|
||||
"discussions.learner.back": "Voltar",
|
||||
"discussions.learner.activityForLearner": "Actividade para {username}",
|
||||
"discussions.learner.mostActivity": "Maior actividade",
|
||||
"discussions.learner.reportedActivity": "Actividade comunicada",
|
||||
"discussions.learner.recentActivity": "Actividade recente",
|
||||
"discussions.learner.sortFilterStatus": "",
|
||||
"discussion.learner.allActivity": "Toda a actividade",
|
||||
"discussion.learner.posts": "Publicações",
|
||||
"discussions.comments.comment.addComment": "Adicionar comentário",
|
||||
"discussions.comments.comment.addResponse": "Adicionar uma resposta",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "Conteúdo comunicado para análise pelo pessoal",
|
||||
"discussions.actions.back.alt": "Voltar à lista",
|
||||
"discussions.comments.comment.responseCount": "",
|
||||
"discussions.comments.comment.endorsedResponseCount": "",
|
||||
"discussions.comments.comment.loadMoreComments": "Carregar mais comentários",
|
||||
"discussions.comments.comment.loadMoreResponses": "Carregar mais respostas",
|
||||
"discussions.comments.comment.visibility": "",
|
||||
"discussions.comments.comment.postedTime": "",
|
||||
"discussions.comments.comment.commentTime": "Publicado {relativeTime}",
|
||||
"discussions.comments.comment.answer": "Resposta",
|
||||
"discussions.comments.comment.answeredlabel": "Marcado como respondido por",
|
||||
"discussions.comments.comment.endorsed": "Aprovado",
|
||||
"discussions.comments.comment.endorsedlabel": "Aprovado por",
|
||||
"discussions.actions.label": "Menu de acções",
|
||||
"discussions.editor.submit": "Submeter",
|
||||
"discussions.editor.submitting": "A submeter",
|
||||
"discussions.editor.cancel": "Cancelar",
|
||||
"discussions.editor.error.empty": "O conteúdo do post não pode estar vazio.",
|
||||
"discussions.editor.delete.response.title": "Eliminar resposta",
|
||||
"discussions.editor.delete.response.description": "Tem a certeza de que pretende apagar permanentemente esta resposta?",
|
||||
"discussions.editor.delete.comment.title": "Eliminar comentário",
|
||||
"discussions.editor.delete.comment.description": "Tem a certeza de que pretende apagar permanentemente este comentário?",
|
||||
"discussions.delete.confirmation.button.delete": "Eliminar",
|
||||
"discussions.editor.response.response.title": "Comunicar conteúdo inadequado?",
|
||||
"discussions.editor.response.description": "A equipa de moderação do debate analisará este conteúdo e tomará as medidas adequadas.",
|
||||
"discussions.editor.report.comment.title": "Comunicar conteúdo inadequado?",
|
||||
"discussions.editor.report.comment.description": "A equipa de moderação do debate analisará este conteúdo e tomará as medidas adequadas.",
|
||||
"discussions.editor.comments.editReasonCode": "Motivo da edição",
|
||||
"discussions.editor.posts.editReasonCode.error": "Seleccionar o motivo da edição",
|
||||
"discussions.comment.comments.editedBy": "Editado por",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "Razão",
|
||||
"discussions.post.closedBy": "Mensagem fechada por",
|
||||
"discussion.comment.time": "{time} atrás",
|
||||
"discussion.thread.notFound": "Thread não encontrado",
|
||||
"discussions.comment.sortFilterStatus": "",
|
||||
"discussions.topics.sort.message": "Ordenado por {sortBy}",
|
||||
"discussions.topics.sort.lastActivity": "Actividade recente",
|
||||
"discussions.topics.sort.commentCount": "Maior actividade",
|
||||
"discussions.topics.sort.courseStructure": "Estrutura do Curso",
|
||||
"discussions.topics.unnamed.label": "Categoria sem nome",
|
||||
"discussions.subtopics.unnamed.label": "Subcategoria sem nome",
|
||||
"tour.action.advance": "Seguinte",
|
||||
"tour.action.dismiss": "Ignorar",
|
||||
"tour.action.end": "OK",
|
||||
"tour.example.title": "",
|
||||
"tour.example.body": "",
|
||||
"learn.course.tabs.navigation.overflow.menu": "Mais...",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "Tópicos",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "Mostrar tudo",
|
||||
"discussions.navigation.navigationBar.allPosts": "Todas as mensagens",
|
||||
"discussions.navigation.navigationBar.allTopics": "Tópicos",
|
||||
"discussions.navigation.navigationBar.myPosts": "As minhas mensagens",
|
||||
"discussions.navigation.navigationBar.learners": "Estudantes",
|
||||
"discussions.post.author.anonymous": "anónimo",
|
||||
"discussions.post.addResponse": "Adicionar resposta",
|
||||
"discussions.post.lastResponse": "Última resposta {time}",
|
||||
"discussions.post.postedOn": "Publicado {time} por {author} {authorLabel}",
|
||||
"discussions.post.contentReported": "Denunciado",
|
||||
"discussions.post.following": "Seguir",
|
||||
"discussions.post.follow": "Seguir",
|
||||
"discussions.post.followed": "Seguido",
|
||||
"discussions.post.notFollowed": "Não seguido",
|
||||
"discussions.post.answered": "Respondido",
|
||||
"discussions.post.unFollow": "Deixar de Seguir",
|
||||
"discussions.post.like": "Gosto da mensagem",
|
||||
"discussions.post.removeLike": "Não gostei da mensagem",
|
||||
"discussions.post.liked": "gostei",
|
||||
"discussions.post.likes": "gostos",
|
||||
"discussions.post.viewActivity": "Ver actividade",
|
||||
"discussions.post.activity": "Atividade",
|
||||
"discussions.post.closed": "Post fechado para respostas e comentários",
|
||||
"discussions.post.relatedTo": "Relacionado com",
|
||||
"discussions.editor.delete.post.title": "Eliminar mensagem",
|
||||
"discussions.editor.delete.post.description": "Tem a certeza de que pretende apagar permanentemente esta mensagem?",
|
||||
"discussions.post.delete.confirmation.button.delete": "Eliminar",
|
||||
"discussions.editor.report.post.title": "Comunicar conteúdo inadequado?",
|
||||
"discussions.editor.report.post.description": "A equipa de moderação do debate analisará este conteúdo e tomará as medidas adequadas.",
|
||||
"discussions.post.closePostModal.title": "Fechar mensagem",
|
||||
"discussions.post.closePostModal.text": "Introduza um motivo para encerrar esta mensagem. Isto só será exibido para outros moderadores.",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "Razão",
|
||||
"discussions.post.closePostModal.cancel": "Cancelar",
|
||||
"discussions.post.closePostModal.confirm": "Fechar mensagem",
|
||||
"discussions.post.label.new": "{count} Novo",
|
||||
"discussions.post.editedBy": "Editado por",
|
||||
"discussions.post.editReason": "Razão",
|
||||
"discussions.post.postWithoutPreview": "Não há pré-visualização disponível",
|
||||
"discussions.post.follow.description": "está a seguir esta mensagem",
|
||||
"discussions.post.unfollow.description": "não está a seguir este post",
|
||||
"discussions.app.title": "Debates",
|
||||
"discussions.posts.actionBar.searchAllPosts": "Pesquisar publicações",
|
||||
"discussions.posts.actionBar.search": "",
|
||||
"discussions.actionBar.searchInfo": "Exibindo {count} resultados para \"{text}\"",
|
||||
"discussions.actionBar.searchRewriteInfo": "Não foram encontrados resultados para \"{searchString}\". A mostrar {count} resultados para \"{textSearchRewrite}\".",
|
||||
"discussions.actionBar.searchInfoSearching": "A procurar...",
|
||||
"discussions.actionBar.clearSearch": "Limpar resultados",
|
||||
"discussion.posts.actionBar.add": "Adicionar uma mensagem",
|
||||
"discussion.posts.actionBar.close": "Fechar",
|
||||
"discussions.post.editor.type": "Tipo de publicação",
|
||||
"discussions.post.editor.addPostHeading": "Adicionar uma mensagem",
|
||||
"discussions.post.editor.editPostHeading": "Editar mensagem",
|
||||
"discussions.post.editor.typeDescription": "As perguntas levantam questões que precisam de uma resposta. Os debates partilham ideias e iniciam conversas.",
|
||||
"discussions.post.editor.required": "Obrigatório",
|
||||
"discussions.post.editor.questionType": "Questão",
|
||||
"discussions.post.editor.questionDescription": "Levantar questões que precisam de resposta",
|
||||
"discussions.post.editor.discussionType": "Fórum",
|
||||
"discussions.post.editor.discussionDescription": "Partilhar ideias e iniciar conversas",
|
||||
"discussions.post.editor.topicArea": "Área do tópico",
|
||||
"discussions.post.editor.topicAreaDescription": "Adicione a sua mensagem a um tópico relevante para ajudar os outros a encontrá-la.",
|
||||
"discussions.post.editor.cohortVisibility": "Visibilidade da coorte",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "Todos os estudantes",
|
||||
"discussions.post.editor.title": "Título da mensagem",
|
||||
"discussions.post.editor.titleDescription": "Adicionar um título claro e descritivo para incentivar a participação.",
|
||||
"discussions.post.editor.title.error": "O título da mensagem não pode estar vazio.",
|
||||
"discussions.post.editor.content.error": "O conteúdo do post não pode estar vazio.",
|
||||
"discussions.post.editor.questionText": "A sua pergunta ou ideia (obrigatório)",
|
||||
"discussions.post.editor.preview": "Pré-visualizar",
|
||||
"discussions.post.editor.followPost": "Siga esta mensagem",
|
||||
"discussions.post.editor.anonymousPost": "Publicar anonimamente",
|
||||
"discussions.post.editor.anonymousToPeersPost": "Enviar mensagens anónimas aos seus pares",
|
||||
"discussions.editor.posts.editReasonCode": "Motivo da edição",
|
||||
"discussions.editor.posts.showPreview.button": "Mostrar pré-visualização",
|
||||
"discussions.topic.noName.label": "Categoria sem nome",
|
||||
"discussions.subtopic.noName.label": "Subcategoria sem nome",
|
||||
"discussions.posts.filter.showALl": "Mostrar tudo",
|
||||
"discussions.posts.filter.discussions": "Debates",
|
||||
"discussions.posts.filter.questions": "Perguntas",
|
||||
"discussions.posts.filter.message": "Estado: {filterBy}",
|
||||
"discussions.posts.status.filter.anyStatus": "Qualquer estado",
|
||||
"discussions.posts.status.filter.unread": "Não lido",
|
||||
"discussions.posts.status.filter.following": "Seguir",
|
||||
"discussions.posts.status.filter.reported": "Denunciado",
|
||||
"discussions.posts.status.filter.unanswered": "Sem resposta",
|
||||
"discussions.posts.status.filter.unresponded": "Não respondeu",
|
||||
"discussions.posts.filter.myPosts": "As minhas mensagens",
|
||||
"discussions.posts.filter.myDiscussions": "Os meus debates",
|
||||
"discussions.posts.filter.myQuestions": "As minhas perguntas",
|
||||
"discussions.posts.sort.message": "Ordenado por {sortBy}",
|
||||
"discussions.posts.sort.lastActivity": "Actividade recente",
|
||||
"discussions.posts.sort.commentCount": "Maior actividade",
|
||||
"discussions.posts.sort.voteCount": "Mais gostos",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": ""
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "",
|
||||
"discussions.actions.copylink": "Копировать ссылку",
|
||||
"discussions.actions.edit": "Редактировать",
|
||||
"discussions.actions.pin": "Закрепить",
|
||||
"discussions.actions.unpin": "Открепить",
|
||||
"discussions.actions.delete": "Удалить",
|
||||
"discussions.confirmation.button.confirm": "Подтвердить",
|
||||
"discussions.actions.close": "Закрыть",
|
||||
"discussions.actions.reopen": "",
|
||||
"discussions.actions.report": "Пожаловаться",
|
||||
"discussions.actions.unreport": "Отозвать жалобу",
|
||||
"discussions.actions.endorse": "Подтвердить",
|
||||
"discussions.actions.unendorse": "Снять подтверждение",
|
||||
"discussions.actions.markAnswered": "",
|
||||
"discussions.actions.unMarkAnswered": "",
|
||||
"discussions.modal.confirmation.button.cancel": "Отмена",
|
||||
"discussions.empty.allTopics": "",
|
||||
"discussions.empty.allPosts": "",
|
||||
"discussions.empty.myPosts": "",
|
||||
"discussions.empty.topic": "",
|
||||
"discussions.empty.title": "",
|
||||
"discussions.empty.noPostSelected": "",
|
||||
"discussions.empty.noTopicSelected": "",
|
||||
"discussions.sidebar.noResultsFound": "результаты не найдены",
|
||||
"discussions.sidebar.differentKeywords": "",
|
||||
"discussions.sidebar.removeKeywords": "",
|
||||
"discussions.sidebar.removeKeywordsOnly": "",
|
||||
"discussions.sidebar.removeFilters": "",
|
||||
"discussions.empty.iconAlt": "Пусто",
|
||||
"discussions.authors.label.staff": "Сотрудник",
|
||||
"discussions.authors.label.ta": "",
|
||||
"discussions.learner.loadMostPosts": "",
|
||||
"discussions.post.anonymous.author": "аноним",
|
||||
"discussion.blackoutBanner.information": "",
|
||||
"discussions.editor.image.warning.message": "",
|
||||
"discussions.editor.image.warning.title": "",
|
||||
"discussions.editor.image.warning.dismiss": "ОК",
|
||||
"navigation.course.tabs.label": "Материалы курса",
|
||||
"discussions.topics.backAlt": "",
|
||||
"discussions.topics.discussions": "",
|
||||
"discussions.topics.questions": "",
|
||||
"discussions.topics.reported": "",
|
||||
"discussions.topics.previouslyReported": "",
|
||||
"discussions.topics.find.label": "",
|
||||
"discussions.topics.unnamed.section.label": "",
|
||||
"discussions.topics.unnamed.subsection.label": "",
|
||||
"discussions.subtopics.unnamed.topic.label": "",
|
||||
"discussions.topics.title": "",
|
||||
"discussions.topics.createTopic": "",
|
||||
"discussions.topics.nothing": "",
|
||||
"discussions.topics.archived.label": "Архивировано",
|
||||
"discussions.learner.reported": "",
|
||||
"discussions.learner.previouslyReported": "",
|
||||
"discussions.learner.lastLogin": "",
|
||||
"discussions.learner.loadMostLearners": "Загрузить ещё",
|
||||
"discussions.learner.back": "Назад",
|
||||
"discussions.learner.activityForLearner": "",
|
||||
"discussions.learner.mostActivity": "",
|
||||
"discussions.learner.reportedActivity": "",
|
||||
"discussions.learner.recentActivity": "",
|
||||
"discussions.learner.sortFilterStatus": "",
|
||||
"discussion.learner.allActivity": "",
|
||||
"discussion.learner.posts": "",
|
||||
"discussions.comments.comment.addComment": "Добавить комментарий",
|
||||
"discussions.comments.comment.addResponse": "",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "",
|
||||
"discussions.actions.back.alt": "",
|
||||
"discussions.comments.comment.responseCount": "",
|
||||
"discussions.comments.comment.endorsedResponseCount": "",
|
||||
"discussions.comments.comment.loadMoreComments": "",
|
||||
"discussions.comments.comment.loadMoreResponses": "",
|
||||
"discussions.comments.comment.visibility": "",
|
||||
"discussions.comments.comment.postedTime": "",
|
||||
"discussions.comments.comment.commentTime": "",
|
||||
"discussions.comments.comment.answer": "Ответ",
|
||||
"discussions.comments.comment.answeredlabel": "",
|
||||
"discussions.comments.comment.endorsed": "",
|
||||
"discussions.comments.comment.endorsedlabel": "",
|
||||
"discussions.actions.label": "",
|
||||
"discussions.editor.submit": "Отправить",
|
||||
"discussions.editor.submitting": "Отправка",
|
||||
"discussions.editor.cancel": "Отмена",
|
||||
"discussions.editor.error.empty": "",
|
||||
"discussions.editor.delete.response.title": "",
|
||||
"discussions.editor.delete.response.description": "",
|
||||
"discussions.editor.delete.comment.title": "",
|
||||
"discussions.editor.delete.comment.description": "",
|
||||
"discussions.delete.confirmation.button.delete": "Удалить",
|
||||
"discussions.editor.response.response.title": "",
|
||||
"discussions.editor.response.description": "",
|
||||
"discussions.editor.report.comment.title": "",
|
||||
"discussions.editor.report.comment.description": "",
|
||||
"discussions.editor.comments.editReasonCode": "",
|
||||
"discussions.editor.posts.editReasonCode.error": "",
|
||||
"discussions.comment.comments.editedBy": "",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "Причина",
|
||||
"discussions.post.closedBy": "",
|
||||
"discussion.comment.time": "",
|
||||
"discussion.thread.notFound": "",
|
||||
"discussions.comment.sortFilterStatus": "",
|
||||
"discussions.topics.sort.message": "",
|
||||
"discussions.topics.sort.lastActivity": "",
|
||||
"discussions.topics.sort.commentCount": "",
|
||||
"discussions.topics.sort.courseStructure": "Структура курса",
|
||||
"discussions.topics.unnamed.label": "",
|
||||
"discussions.subtopics.unnamed.label": "",
|
||||
"tour.action.advance": "Вперёд",
|
||||
"tour.action.dismiss": "Скрыть",
|
||||
"tour.action.end": "Okay",
|
||||
"tour.example.title": "",
|
||||
"tour.example.body": "",
|
||||
"learn.course.tabs.navigation.overflow.menu": "Больше...",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "Темы",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "Показать всё",
|
||||
"discussions.navigation.navigationBar.allPosts": "",
|
||||
"discussions.navigation.navigationBar.allTopics": "Темы",
|
||||
"discussions.navigation.navigationBar.myPosts": "",
|
||||
"discussions.navigation.navigationBar.learners": "Слушатели",
|
||||
"discussions.post.author.anonymous": "аноним",
|
||||
"discussions.post.addResponse": "",
|
||||
"discussions.post.lastResponse": "",
|
||||
"discussions.post.postedOn": "",
|
||||
"discussions.post.contentReported": "Жалоба отправлена",
|
||||
"discussions.post.following": "Отслеживаемые",
|
||||
"discussions.post.follow": "Отслеживать",
|
||||
"discussions.post.followed": "",
|
||||
"discussions.post.notFollowed": "",
|
||||
"discussions.post.answered": "Дан ответ",
|
||||
"discussions.post.unFollow": "Не отслеживать",
|
||||
"discussions.post.like": "",
|
||||
"discussions.post.removeLike": "",
|
||||
"discussions.post.liked": "",
|
||||
"discussions.post.likes": "",
|
||||
"discussions.post.viewActivity": "",
|
||||
"discussions.post.activity": "Активность",
|
||||
"discussions.post.closed": "",
|
||||
"discussions.post.relatedTo": "",
|
||||
"discussions.editor.delete.post.title": "",
|
||||
"discussions.editor.delete.post.description": "",
|
||||
"discussions.post.delete.confirmation.button.delete": "Удалить",
|
||||
"discussions.editor.report.post.title": "",
|
||||
"discussions.editor.report.post.description": "",
|
||||
"discussions.post.closePostModal.title": "",
|
||||
"discussions.post.closePostModal.text": "",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "Причина",
|
||||
"discussions.post.closePostModal.cancel": "Отмена",
|
||||
"discussions.post.closePostModal.confirm": "",
|
||||
"discussions.post.label.new": "",
|
||||
"discussions.post.editedBy": "",
|
||||
"discussions.post.editReason": "Причина",
|
||||
"discussions.post.postWithoutPreview": "",
|
||||
"discussions.post.follow.description": "",
|
||||
"discussions.post.unfollow.description": "",
|
||||
"discussions.app.title": "Обсуждения",
|
||||
"discussions.posts.actionBar.searchAllPosts": "Поиск по всем темам",
|
||||
"discussions.posts.actionBar.search": "",
|
||||
"discussions.actionBar.searchInfo": "",
|
||||
"discussions.actionBar.searchRewriteInfo": "",
|
||||
"discussions.actionBar.searchInfoSearching": "Поиск...",
|
||||
"discussions.actionBar.clearSearch": "",
|
||||
"discussion.posts.actionBar.add": "",
|
||||
"discussion.posts.actionBar.close": "Закрыть",
|
||||
"discussions.post.editor.type": "Тип сообщения",
|
||||
"discussions.post.editor.addPostHeading": "",
|
||||
"discussions.post.editor.editPostHeading": "",
|
||||
"discussions.post.editor.typeDescription": "В вопросах поднимаются проблемы, требующие ответа. Обсуждения позволяют делиться идеями и участвовать в дискуссиях.",
|
||||
"discussions.post.editor.required": "Требуется",
|
||||
"discussions.post.editor.questionType": "Вопрос",
|
||||
"discussions.post.editor.questionDescription": "",
|
||||
"discussions.post.editor.discussionType": "Обсуждение",
|
||||
"discussions.post.editor.discussionDescription": "",
|
||||
"discussions.post.editor.topicArea": "Предмет обсуждения",
|
||||
"discussions.post.editor.topicAreaDescription": "Поместите ваше сообщение в подходящую тему, чтобы упростить другим пользователям его поиск.",
|
||||
"discussions.post.editor.cohortVisibility": "",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "Все слушатели",
|
||||
"discussions.post.editor.title": "",
|
||||
"discussions.post.editor.titleDescription": "Добавьте чётко сформулированный, содержательный заголовок, чтобы побудить других к участию в обсуждении.",
|
||||
"discussions.post.editor.title.error": "",
|
||||
"discussions.post.editor.content.error": "",
|
||||
"discussions.post.editor.questionText": "Ваш вопрос или предложение (обязательно)",
|
||||
"discussions.post.editor.preview": "Предварительный просмотр",
|
||||
"discussions.post.editor.followPost": "Следить за этим сообщением",
|
||||
"discussions.post.editor.anonymousPost": "",
|
||||
"discussions.post.editor.anonymousToPeersPost": "",
|
||||
"discussions.editor.posts.editReasonCode": "",
|
||||
"discussions.editor.posts.showPreview.button": "",
|
||||
"discussions.topic.noName.label": "",
|
||||
"discussions.subtopic.noName.label": "",
|
||||
"discussions.posts.filter.showALl": "Показать всё",
|
||||
"discussions.posts.filter.discussions": "Обсуждения",
|
||||
"discussions.posts.filter.questions": "Вопросы",
|
||||
"discussions.posts.filter.message": "",
|
||||
"discussions.posts.status.filter.anyStatus": "",
|
||||
"discussions.posts.status.filter.unread": "Непрочитанные",
|
||||
"discussions.posts.status.filter.following": "Отслеживаемые",
|
||||
"discussions.posts.status.filter.reported": "Жалоба отправлена",
|
||||
"discussions.posts.status.filter.unanswered": "Без ответа",
|
||||
"discussions.posts.status.filter.unresponded": "",
|
||||
"discussions.posts.filter.myPosts": "",
|
||||
"discussions.posts.filter.myDiscussions": "",
|
||||
"discussions.posts.filter.myQuestions": "",
|
||||
"discussions.posts.sort.message": "",
|
||||
"discussions.posts.sort.lastActivity": "",
|
||||
"discussions.posts.sort.commentCount": "",
|
||||
"discussions.posts.sort.voteCount": "",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": ""
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "Eylemler menüsü",
|
||||
"discussions.actions.copylink": "Bağlantıyı kopyala",
|
||||
"discussions.actions.edit": "Düzenle",
|
||||
"discussions.actions.pin": "İşaretle",
|
||||
"discussions.actions.unpin": "İşareti kaldır",
|
||||
"discussions.actions.delete": "Sil",
|
||||
"discussions.confirmation.button.confirm": "Onayla",
|
||||
"discussions.actions.close": "Kapat",
|
||||
"discussions.actions.reopen": "Yeniden aç",
|
||||
"discussions.actions.report": "Raporla",
|
||||
"discussions.actions.unreport": "Raporlamaktan vazgeç",
|
||||
"discussions.actions.endorse": "Destekle",
|
||||
"discussions.actions.unendorse": "Desteklemekten vazgeç",
|
||||
"discussions.actions.markAnswered": "Cevaplandı olarak işaretle",
|
||||
"discussions.actions.unMarkAnswered": "Cevaplandı olarak işaretini kaldır",
|
||||
"discussions.modal.confirmation.button.cancel": "İptal",
|
||||
"discussions.empty.allTopics": "Bu konularla ilgili tüm tartışma etkinlikleri burada gösterilecektir.",
|
||||
"discussions.empty.allPosts": "Dersiniz için tüm tartışma etkinlikleri burada gösterilecektir.",
|
||||
"discussions.empty.myPosts": "Etkileşimde bulunduğunuz gönderiler burada gösterilecektir.",
|
||||
"discussions.empty.topic": "Bu konuyla ilgili tüm tartışma etkinlikleri burada gösterilecektir.",
|
||||
"discussions.empty.title": "Burada henüz bir şey yok",
|
||||
"discussions.empty.noPostSelected": "Gönderi seçilmedi",
|
||||
"discussions.empty.noTopicSelected": "Konu seçilmedi",
|
||||
"discussions.sidebar.noResultsFound": "Sonuç bulunamadı",
|
||||
"discussions.sidebar.differentKeywords": "Farklı anahtar kelimelerle aramayı dene",
|
||||
"discussions.sidebar.removeKeywords": "Farklı anahtar kelimeler aramayı veya bazı filtreleri kaldırmayı deneyin",
|
||||
"discussions.sidebar.removeKeywordsOnly": "Farklı anahtar kelimelerle aramayı dene",
|
||||
"discussions.sidebar.removeFilters": "Bazı filtreleri kaldırmayı deneyin",
|
||||
"discussions.empty.iconAlt": "Boş",
|
||||
"discussions.authors.label.staff": "Personel",
|
||||
"discussions.authors.label.ta": "TA",
|
||||
"discussions.learner.loadMostPosts": "Daha fazla ileti yükle",
|
||||
"discussions.post.anonymous.author": "anonim",
|
||||
"discussion.blackoutBanner.information": "",
|
||||
"discussions.editor.image.warning.message": "Genişliği veya yüksekliği 999 pikselden büyük olan resimler, çevrimiçi ders tartışmalarında yer alan gönderi, yanıt veya yorumlarda görüntülenemez.",
|
||||
"discussions.editor.image.warning.title": "Uyarı!",
|
||||
"discussions.editor.image.warning.dismiss": "Tamam",
|
||||
"navigation.course.tabs.label": "Ders Materyali",
|
||||
"discussions.topics.backAlt": "Konular listesine dön",
|
||||
"discussions.topics.discussions": "",
|
||||
"discussions.topics.questions": "",
|
||||
"discussions.topics.reported": "{reported} rapor edildi",
|
||||
"discussions.topics.previouslyReported": "{previouslyReported} ileti rapor edildi",
|
||||
"discussions.topics.find.label": "Konuları ara",
|
||||
"discussions.topics.unnamed.section.label": "İsimsiz Bölüm",
|
||||
"discussions.topics.unnamed.subsection.label": "İsimsiz Altbölüm",
|
||||
"discussions.subtopics.unnamed.topic.label": "İsimsiz Konu",
|
||||
"discussions.topics.title": "Hiçbir konu yok",
|
||||
"discussions.topics.createTopic": "Bir konu başlatmak için yöneticinizle iletişime geçin",
|
||||
"discussions.topics.nothing": "Burada henüz bir şey yok",
|
||||
"discussions.topics.archived.label": "Arşivlenmiş",
|
||||
"discussions.learner.reported": "{reported} rapor edildi",
|
||||
"discussions.learner.previouslyReported": "{previouslyReported} daha önce rapor edildi",
|
||||
"discussions.learner.lastLogin": "Son etkinlik {lastActiveTime}",
|
||||
"discussions.learner.loadMostLearners": "Daha fazla yükle",
|
||||
"discussions.learner.back": "Geri",
|
||||
"discussions.learner.activityForLearner": "{username} için etkinlik",
|
||||
"discussions.learner.mostActivity": "En çok etkinlik",
|
||||
"discussions.learner.reportedActivity": "Rapor edilen etkinlik",
|
||||
"discussions.learner.recentActivity": "Son etkinlik",
|
||||
"discussions.learner.sortFilterStatus": "",
|
||||
"discussion.learner.allActivity": "Tüm etkinlikler",
|
||||
"discussion.learner.posts": "Gönderiler",
|
||||
"discussions.comments.comment.addComment": "Yorum ekle",
|
||||
"discussions.comments.comment.addResponse": "Bir cevap ekle",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "Personelin incelemesi için bildirilen içerik",
|
||||
"discussions.actions.back.alt": "Listeye dön",
|
||||
"discussions.comments.comment.responseCount": "",
|
||||
"discussions.comments.comment.endorsedResponseCount": "",
|
||||
"discussions.comments.comment.loadMoreComments": "Daha fazla yorum yükle",
|
||||
"discussions.comments.comment.loadMoreResponses": "Daha fazla yanıt yükle",
|
||||
"discussions.comments.comment.visibility": "",
|
||||
"discussions.comments.comment.postedTime": "",
|
||||
"discussions.comments.comment.commentTime": "{relativeTime} önce gönderildi",
|
||||
"discussions.comments.comment.answer": "Cevap",
|
||||
"discussions.comments.comment.answeredlabel": "Yanıtlandı olarak işaretleyen ",
|
||||
"discussions.comments.comment.endorsed": "Doğrulandı",
|
||||
"discussions.comments.comment.endorsedlabel": "Doğrulayan",
|
||||
"discussions.actions.label": "Eylemler menüsü",
|
||||
"discussions.editor.submit": "Gönder",
|
||||
"discussions.editor.submitting": "Gönderiliyor",
|
||||
"discussions.editor.cancel": "İptal",
|
||||
"discussions.editor.error.empty": "Gönderi içeriği boş olamaz.",
|
||||
"discussions.editor.delete.response.title": "Yanıtı sil",
|
||||
"discussions.editor.delete.response.description": "Bu yanıtı kalıcı olarak silmek istediğinizden emin misiniz?",
|
||||
"discussions.editor.delete.comment.title": "Yorumu sil",
|
||||
"discussions.editor.delete.comment.description": "Bu yorumu kalıcı olarak silmek istediğinizden emin misiniz?",
|
||||
"discussions.delete.confirmation.button.delete": "Sil",
|
||||
"discussions.editor.response.response.title": "Uygunsuz içerik mi raporlayacaksınız?",
|
||||
"discussions.editor.response.description": "Tartışma yöneticileri bu içeriği inceleyecek ve uygun işlemi yapacaktır.",
|
||||
"discussions.editor.report.comment.title": "Uygunsuz içerik mi raporlayacaksınız?",
|
||||
"discussions.editor.report.comment.description": "Tartışma yöneticileri bu içeriği inceleyecek ve uygun işlemi yapacaktır.",
|
||||
"discussions.editor.comments.editReasonCode": "Düzenleme nedeni",
|
||||
"discussions.editor.posts.editReasonCode.error": "Düzenleme nedenini seçin",
|
||||
"discussions.comment.comments.editedBy": "Düzenleyen",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "Gerekçe",
|
||||
"discussions.post.closedBy": "Gönderiyi kapatan ",
|
||||
"discussion.comment.time": "{time} önce",
|
||||
"discussion.thread.notFound": "Tartışma zinciri bulunamadı",
|
||||
"discussions.comment.sortFilterStatus": "",
|
||||
"discussions.topics.sort.message": "{sortBy} ölçütüne göre sıralandı",
|
||||
"discussions.topics.sort.lastActivity": "Son etkinlik",
|
||||
"discussions.topics.sort.commentCount": "En çok etkinlik",
|
||||
"discussions.topics.sort.courseStructure": "Ders Yapısı",
|
||||
"discussions.topics.unnamed.label": "İsimsiz kategori",
|
||||
"discussions.subtopics.unnamed.label": "İsimsiz alt kategori",
|
||||
"tour.action.advance": "Sonraki",
|
||||
"tour.action.dismiss": "İptal",
|
||||
"tour.action.end": "Tamam",
|
||||
"tour.example.title": "",
|
||||
"tour.example.body": "",
|
||||
"learn.course.tabs.navigation.overflow.menu": "Daha Fazlası...",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "Konular",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "Tümünü göster",
|
||||
"discussions.navigation.navigationBar.allPosts": "Tüm iletiler",
|
||||
"discussions.navigation.navigationBar.allTopics": "Konular",
|
||||
"discussions.navigation.navigationBar.myPosts": "İletilerim",
|
||||
"discussions.navigation.navigationBar.learners": "Öğrenciler",
|
||||
"discussions.post.author.anonymous": "anonim",
|
||||
"discussions.post.addResponse": "Yanıt ekle",
|
||||
"discussions.post.lastResponse": "Son yanıt {time}",
|
||||
"discussions.post.postedOn": "{author} {authorLabel} tarafından {time} önce gönderildi",
|
||||
"discussions.post.contentReported": "Rapor edildi",
|
||||
"discussions.post.following": "Takip ediliyor",
|
||||
"discussions.post.follow": "Takip et",
|
||||
"discussions.post.followed": "İzlendi",
|
||||
"discussions.post.notFollowed": "İzlenmedi",
|
||||
"discussions.post.answered": "Yanıtlandı",
|
||||
"discussions.post.unFollow": "Takibi bırak",
|
||||
"discussions.post.like": "Beğen",
|
||||
"discussions.post.removeLike": "Beğenmeme",
|
||||
"discussions.post.liked": "beğendi",
|
||||
"discussions.post.likes": "beğeni",
|
||||
"discussions.post.viewActivity": "Etkinliği görüntüle",
|
||||
"discussions.post.activity": "Etkinlik",
|
||||
"discussions.post.closed": "Yanıtlar ve yorumlar için gönderi kapatıldı",
|
||||
"discussions.post.relatedTo": "Bunun ile ilgili",
|
||||
"discussions.editor.delete.post.title": "Gönderiyi sil",
|
||||
"discussions.editor.delete.post.description": "Bu gönderiyi kalıcı olarak silmek istediğinizden emin misiniz?",
|
||||
"discussions.post.delete.confirmation.button.delete": "Sil",
|
||||
"discussions.editor.report.post.title": "Uygunsuz içerik mi raporlayacaksınız?",
|
||||
"discussions.editor.report.post.description": "Tartışma yöneticileri bu içeriği inceleyecek ve uygun işlemi yapacaktır.",
|
||||
"discussions.post.closePostModal.title": "Gönderiyi kapat",
|
||||
"discussions.post.closePostModal.text": "Bu gönderiyi kapatmak için bir neden girin. Bu sadece diğer moderatörlere gösterilecektir.",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "Gerekçe",
|
||||
"discussions.post.closePostModal.cancel": "İptal",
|
||||
"discussions.post.closePostModal.confirm": "Gönderiyi kapat",
|
||||
"discussions.post.label.new": "{count} Yeni",
|
||||
"discussions.post.editedBy": "Düzenleyen",
|
||||
"discussions.post.editReason": "Gerekçe",
|
||||
"discussions.post.postWithoutPreview": "Önizleme yok",
|
||||
"discussions.post.follow.description": "bu iletiyi izliyorsunuz",
|
||||
"discussions.post.unfollow.description": "bu iletiyi izlemiyorsunuz",
|
||||
"discussions.app.title": "Forumlar",
|
||||
"discussions.posts.actionBar.searchAllPosts": "Tüm gönderilerde ara",
|
||||
"discussions.posts.actionBar.search": "",
|
||||
"discussions.actionBar.searchInfo": "\"{text}\" için {count} sonuç gösteriliyor",
|
||||
"discussions.actionBar.searchRewriteInfo": "\"{searchString}\" için sonuç bulunamadı. \"{textSearchRewrite}\" için {count} sonuç gösteriliyor.",
|
||||
"discussions.actionBar.searchInfoSearching": "Aranıyor...",
|
||||
"discussions.actionBar.clearSearch": "Sonuçları temizle",
|
||||
"discussion.posts.actionBar.add": "Bir ileti ekle",
|
||||
"discussion.posts.actionBar.close": "Kapat",
|
||||
"discussions.post.editor.type": "Gönderi türü",
|
||||
"discussions.post.editor.addPostHeading": "Bir ileti ekle",
|
||||
"discussions.post.editor.editPostHeading": "İletiyi düzenle",
|
||||
"discussions.post.editor.typeDescription": "Sorular cevap gerektiren konuları ileri sürer. Tartışmalar fikirleri paylaşır ve sohbeti başlatır.",
|
||||
"discussions.post.editor.required": "Gerekli",
|
||||
"discussions.post.editor.questionType": "Soru",
|
||||
"discussions.post.editor.questionDescription": "Cevaplanması gereken sorunları dile getirin",
|
||||
"discussions.post.editor.discussionType": "Forum",
|
||||
"discussions.post.editor.discussionDescription": "Fikirleri paylaşın ve sohbetler başlatın",
|
||||
"discussions.post.editor.topicArea": "Başlık alanı",
|
||||
"discussions.post.editor.topicAreaDescription": "Başkalarının bulmasına yardımcı olmak için gönderinizi ilgili bir konuya ekleyin.",
|
||||
"discussions.post.editor.cohortVisibility": "Kohort görünürlüğü",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "Tüm öğrenciler",
|
||||
"discussions.post.editor.title": "İleti başlığı",
|
||||
"discussions.post.editor.titleDescription": "Katılıma teşvik etmek için, açık ve tanıtıcı bir başlık ekleyin.",
|
||||
"discussions.post.editor.title.error": "Gönderi başlığı boş olamaz.",
|
||||
"discussions.post.editor.content.error": "Gönderi içeriği boş olamaz.",
|
||||
"discussions.post.editor.questionText": "Sorunuz veya fikriniz (gerekli)",
|
||||
"discussions.post.editor.preview": "Önizleme",
|
||||
"discussions.post.editor.followPost": "Bu iletiyi takip edin",
|
||||
"discussions.post.editor.anonymousPost": "Anonim olarak gönder",
|
||||
"discussions.post.editor.anonymousToPeersPost": "Akranlarına anonim olarak gönder",
|
||||
"discussions.editor.posts.editReasonCode": "Düzenleme nedeni",
|
||||
"discussions.editor.posts.showPreview.button": "Önizlemeyi göster",
|
||||
"discussions.topic.noName.label": "İsimsiz kategori",
|
||||
"discussions.subtopic.noName.label": "İsimsiz alt kategori",
|
||||
"discussions.posts.filter.showALl": "Tümünü göster",
|
||||
"discussions.posts.filter.discussions": "Forumlar",
|
||||
"discussions.posts.filter.questions": "Sorular",
|
||||
"discussions.posts.filter.message": "Durum: {filterBy}",
|
||||
"discussions.posts.status.filter.anyStatus": "Herhangi bir durum",
|
||||
"discussions.posts.status.filter.unread": "Okunmamış",
|
||||
"discussions.posts.status.filter.following": "Takip ediliyor",
|
||||
"discussions.posts.status.filter.reported": "Rapor edildi",
|
||||
"discussions.posts.status.filter.unanswered": "Cevaplanmamış",
|
||||
"discussions.posts.status.filter.unresponded": "Yanıtlanmamış",
|
||||
"discussions.posts.filter.myPosts": "Gönderilerim",
|
||||
"discussions.posts.filter.myDiscussions": "Tartışmalarım",
|
||||
"discussions.posts.filter.myQuestions": "Sorularım",
|
||||
"discussions.posts.sort.message": "{sortBy} ölçütüne göre sıralandı",
|
||||
"discussions.posts.sort.lastActivity": "Son etkinlik",
|
||||
"discussions.posts.sort.commentCount": "En çok etkinlik",
|
||||
"discussions.posts.sort.voteCount": "En çok beğenilenler",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": ""
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "Меню дій",
|
||||
"discussions.actions.copylink": "Копіювати посилання",
|
||||
"discussions.actions.edit": "Редагувати",
|
||||
"discussions.actions.pin": "Закріпити",
|
||||
"discussions.actions.unpin": "Відкріпити",
|
||||
"discussions.actions.delete": "Видалити",
|
||||
"discussions.confirmation.button.confirm": "Підтвердити",
|
||||
"discussions.actions.close": "Закрити",
|
||||
"discussions.actions.reopen": "Відкрити знову",
|
||||
"discussions.actions.report": "Доповісти",
|
||||
"discussions.actions.unreport": "Відкликати скаргу",
|
||||
"discussions.actions.endorse": "Підтримати",
|
||||
"discussions.actions.unendorse": "Скасувати підтримку",
|
||||
"discussions.actions.markAnswered": "Позначити Має відповідь",
|
||||
"discussions.actions.unMarkAnswered": "Зняти відмітку про відповідь",
|
||||
"discussions.modal.confirmation.button.cancel": "Скасувати",
|
||||
"discussions.empty.allTopics": "Всі обговорення цих тем зʼявляться тут.",
|
||||
"discussions.empty.allPosts": "Всі обговорення курсу зʼявляться тут.",
|
||||
"discussions.empty.myPosts": "Повідомлення, з якими ви взаємодіяли, зʼявлвяться тут.",
|
||||
"discussions.empty.topic": "Всі обговорення цієї теми зʼявляться тут.",
|
||||
"discussions.empty.title": "Тут поки нічого немає",
|
||||
"discussions.empty.noPostSelected": "Не обрано повідомлень",
|
||||
"discussions.empty.noTopicSelected": "Не обрано тем",
|
||||
"discussions.sidebar.noResultsFound": "Нічого не знайдено",
|
||||
"discussions.sidebar.differentKeywords": "Спробуйте пошукати за іншими ключовими словами",
|
||||
"discussions.sidebar.removeKeywords": "Спробуйте пошукати за іншими ключовими словами або прибрати деякі фільтри",
|
||||
"discussions.sidebar.removeKeywordsOnly": "Спробуйте пошукати за іншими ключовими словами",
|
||||
"discussions.sidebar.removeFilters": "Спробуйте прибрати деякі фільтри",
|
||||
"discussions.empty.iconAlt": "Порожній",
|
||||
"discussions.authors.label.staff": "Персонал",
|
||||
"discussions.authors.label.ta": "Помічник інструктора",
|
||||
"discussions.learner.loadMostPosts": "Завантажити більше повідомлень",
|
||||
"discussions.post.anonymous.author": "анонім",
|
||||
"discussion.blackoutBanner.information": "Додавання повідомлень вимкнено командою курсу",
|
||||
"discussions.editor.image.warning.message": "Зображення, ширина чи висота яких перевищує 999 пікселів, не відображатимуться під час перегляду публікації, відповіді чи коментаря в обговореннях всередині курсу",
|
||||
"discussions.editor.image.warning.title": "Попередження!",
|
||||
"discussions.editor.image.warning.dismiss": "Добре",
|
||||
"navigation.course.tabs.label": "Матеріал курсу",
|
||||
"discussions.topics.backAlt": "Повернутися до списку тем",
|
||||
"discussions.topics.discussions": "{count, plural, =0 {Discussion} one {# Discussion} other {# Discussions} }",
|
||||
"discussions.topics.questions": "{count, plural, =0 {Question} one {# Question} other {# Questions} }",
|
||||
"discussions.topics.reported": "{reported} повідомлено",
|
||||
"discussions.topics.previouslyReported": "{previouslyReported} раніше повідомлено",
|
||||
"discussions.topics.find.label": "Пошук тем",
|
||||
"discussions.topics.unnamed.section.label": "Розділ без назви",
|
||||
"discussions.topics.unnamed.subsection.label": "Підрозділ без назви",
|
||||
"discussions.subtopics.unnamed.topic.label": "Тема без назви",
|
||||
"discussions.topics.title": "Немає тем",
|
||||
"discussions.topics.createTopic": "Звʼяжіться з адміністратором для створення теми",
|
||||
"discussions.topics.nothing": "Тут поки нічого немає",
|
||||
"discussions.topics.archived.label": "В архіві",
|
||||
"discussions.learner.reported": "{reported} повідомлено",
|
||||
"discussions.learner.previouslyReported": "{previouslyReported} раніше повідомлено",
|
||||
"discussions.learner.lastLogin": "Остання активність {lastActiveTime}",
|
||||
"discussions.learner.loadMostLearners": "Завантажити ще",
|
||||
"discussions.learner.back": "Назад",
|
||||
"discussions.learner.activityForLearner": "Активність {username}",
|
||||
"discussions.learner.mostActivity": "Кількість подій",
|
||||
"discussions.learner.reportedActivity": "Повідомлена активність",
|
||||
"discussions.learner.recentActivity": "Поточна активність",
|
||||
"discussions.learner.sortFilterStatus": "Сортувати всіх слухачів за {sort, select, flagged {reported activity} activity {most activity} other {{sort}} }",
|
||||
"discussion.learner.allActivity": "Вся активність",
|
||||
"discussion.learner.posts": "Повідомлення",
|
||||
"discussions.comments.comment.addComment": "Додати коментар",
|
||||
"discussions.comments.comment.addResponse": "Додати відповідь",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "Про вміст повідомлено пероналу",
|
||||
"discussions.actions.back.alt": "Назад до списку",
|
||||
"discussions.comments.comment.responseCount": "{num, plural, =0 {No responses} one {Showing # response} other {Showing # responses} }",
|
||||
"discussions.comments.comment.endorsedResponseCount": "{num, plural, =0 {No endorsed responses} one {Showing # endorsed response} other {Showing # endorsed responses} }",
|
||||
"discussions.comments.comment.loadMoreComments": "Завантажити більше коментарів",
|
||||
"discussions.comments.comment.loadMoreResponses": "Завантажити більше відповідей",
|
||||
"discussions.comments.comment.visibility": "Цю публікацію бачать {group, select, null {Everyone} other {{group}} }.",
|
||||
"discussions.comments.comment.postedTime": "{postType, select, discussion {Discussion} question {Question} other {{postType}} } posted {relativeTime} by",
|
||||
"discussions.comments.comment.commentTime": "Опубліковано о {relativeTime}",
|
||||
"discussions.comments.comment.answer": "Відповідь",
|
||||
"discussions.comments.comment.answeredlabel": "Відмічено \"Має відповідь\" ",
|
||||
"discussions.comments.comment.endorsed": "Схвалнено",
|
||||
"discussions.comments.comment.endorsedlabel": "Схвалено ",
|
||||
"discussions.actions.label": "Меню дій",
|
||||
"discussions.editor.submit": "Надіслати",
|
||||
"discussions.editor.submitting": "Відправлення на перевірку",
|
||||
"discussions.editor.cancel": "Скасувати",
|
||||
"discussions.editor.error.empty": "Вміст публікації не може бути пустим.",
|
||||
"discussions.editor.delete.response.title": "Видалити відповідь",
|
||||
"discussions.editor.delete.response.description": "Ви впевнені, що хочете назавжди видалити цю відповідь?",
|
||||
"discussions.editor.delete.comment.title": "Видалити коментар",
|
||||
"discussions.editor.delete.comment.description": "Ви впевнені, що хочете назавжди видалити цей коментар?",
|
||||
"discussions.delete.confirmation.button.delete": "Видалити",
|
||||
"discussions.editor.response.response.title": "Повідомити про неприйнятний вміст?",
|
||||
"discussions.editor.response.description": "Команда модераторів обговорення перегляне цей вміст і вжиє відповідних заходів.",
|
||||
"discussions.editor.report.comment.title": "Повідомити про неприйнятний вміст?",
|
||||
"discussions.editor.report.comment.description": "Команда модераторів обговорення перегляне цей вміст і вжиє відповідних заходів.",
|
||||
"discussions.editor.comments.editReasonCode": "Причина для редагування",
|
||||
"discussions.editor.posts.editReasonCode.error": "Оберіть причину для редагування",
|
||||
"discussions.comment.comments.editedBy": "Відредаговано ",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "Причина",
|
||||
"discussions.post.closedBy": "Допис закрито ",
|
||||
"discussion.comment.time": "{time} тому",
|
||||
"discussion.thread.notFound": "Тема не знайдена",
|
||||
"discussions.comment.sortFilterStatus": "{sort, select, false {Oldest first} true {Newest first} other {{sort}} }",
|
||||
"discussions.topics.sort.message": "Відсортовано за {sortBy}",
|
||||
"discussions.topics.sort.lastActivity": "Поточна активність",
|
||||
"discussions.topics.sort.commentCount": "Кількість подій",
|
||||
"discussions.topics.sort.courseStructure": "Структура курсу",
|
||||
"discussions.topics.unnamed.label": "Категорія без імені",
|
||||
"discussions.subtopics.unnamed.label": "Підкатегорія без імені",
|
||||
"tour.action.advance": "Вперед",
|
||||
"tour.action.dismiss": "Відхилити",
|
||||
"tour.action.end": "Гаразд",
|
||||
"tour.example.title": "",
|
||||
"tour.example.body": "",
|
||||
"learn.course.tabs.navigation.overflow.menu": "Більше...",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "Теми",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "Показати усе",
|
||||
"discussions.navigation.navigationBar.allPosts": "Усі повідомлення",
|
||||
"discussions.navigation.navigationBar.allTopics": "Теми",
|
||||
"discussions.navigation.navigationBar.myPosts": "Мої повідомлення",
|
||||
"discussions.navigation.navigationBar.learners": "Учні",
|
||||
"discussions.post.author.anonymous": "анонім",
|
||||
"discussions.post.addResponse": "Додати відповідь",
|
||||
"discussions.post.lastResponse": "Остання відповідь о {time}",
|
||||
"discussions.post.postedOn": "Опубліковано о {time} автором {author} {authorLabel}",
|
||||
"discussions.post.contentReported": "Повідомлений",
|
||||
"discussions.post.following": "Слідом за",
|
||||
"discussions.post.follow": "Стежити",
|
||||
"discussions.post.followed": "Те, що я відстежую",
|
||||
"discussions.post.notFollowed": "Те, що я не відстежую",
|
||||
"discussions.post.answered": "Надано відповідь",
|
||||
"discussions.post.unFollow": "Не стежити",
|
||||
"discussions.post.like": "Вподобати",
|
||||
"discussions.post.removeLike": "Зняти вподобайку",
|
||||
"discussions.post.liked": "вподобано",
|
||||
"discussions.post.likes": "вподобайок",
|
||||
"discussions.post.viewActivity": "Подивитися активність",
|
||||
"discussions.post.activity": "Діяльність",
|
||||
"discussions.post.closed": "Повідомлення закрито для відповідей і коментарів",
|
||||
"discussions.post.relatedTo": "Відноситься до",
|
||||
"discussions.editor.delete.post.title": "Видалити повідомлення",
|
||||
"discussions.editor.delete.post.description": "Ви впевнені, що хочете назавжди видалити це повідомлення?",
|
||||
"discussions.post.delete.confirmation.button.delete": "Видалити",
|
||||
"discussions.editor.report.post.title": "Повідомити про неприйнятний вміст?",
|
||||
"discussions.editor.report.post.description": "Команда модераторів обговорення перегляне цей вміст і вжиє відповідних заходів.",
|
||||
"discussions.post.closePostModal.title": "Закрити повідомлення",
|
||||
"discussions.post.closePostModal.text": "Введіть причину закриття цієї публікації. Це буде показано лише іншим модераторам.",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "Причина",
|
||||
"discussions.post.closePostModal.cancel": "Скасувати",
|
||||
"discussions.post.closePostModal.confirm": "Закрити повідомлення",
|
||||
"discussions.post.label.new": "{count} нових",
|
||||
"discussions.post.editedBy": "Відредаговано ",
|
||||
"discussions.post.editReason": "Причина",
|
||||
"discussions.post.postWithoutPreview": "Попередній перегляд недоступний",
|
||||
"discussions.post.follow.description": "ви стежите з цим повідомленням",
|
||||
"discussions.post.unfollow.description": "ви не стежите з цим повідомленням",
|
||||
"discussions.app.title": "Обговорення",
|
||||
"discussions.posts.actionBar.searchAllPosts": "Пошук",
|
||||
"discussions.posts.actionBar.search": "{page, select, topics {Search topics} posts {Search all posts} learners {Search learners} myPosts {Search all posts} other {{page}} }",
|
||||
"discussions.actionBar.searchInfo": "Показано {count} результатів для \"{text}\"",
|
||||
"discussions.actionBar.searchRewriteInfo": "Не знайдено результатів для \"{searchString}\". Показано {count} результатів для \"{textSearchRewrite}\".",
|
||||
"discussions.actionBar.searchInfoSearching": "Пошук...",
|
||||
"discussions.actionBar.clearSearch": "Очистити результати",
|
||||
"discussion.posts.actionBar.add": "Додати повідомлення",
|
||||
"discussion.posts.actionBar.close": "Закрити",
|
||||
"discussions.post.editor.type": "Тип повідомлення",
|
||||
"discussions.post.editor.addPostHeading": "Додати повідомлення",
|
||||
"discussions.post.editor.editPostHeading": "Редагувати повідомлення",
|
||||
"discussions.post.editor.typeDescription": "Запитання використовуються тоді, коли вам потрібні конкретні відповіді. Обговорення використовуються для того, щоб ділитися ідеями та вести дискусії.",
|
||||
"discussions.post.editor.required": "Обов'язкове",
|
||||
"discussions.post.editor.questionType": "Питання",
|
||||
"discussions.post.editor.questionDescription": "Підняти питання, які потребують відповідей",
|
||||
"discussions.post.editor.discussionType": "Обговорення",
|
||||
"discussions.post.editor.discussionDescription": "Діліться ідеями та починайте розмови",
|
||||
"discussions.post.editor.topicArea": "Тематична область",
|
||||
"discussions.post.editor.topicAreaDescription": "Додайте ваше повідомлення до відповідної теми, щоб допомогти іншим знайти його. ",
|
||||
"discussions.post.editor.cohortVisibility": "Видимість когортам",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "Всі слухачі",
|
||||
"discussions.post.editor.title": "Заголовок повідомлення",
|
||||
"discussions.post.editor.titleDescription": "Додайте зрозумілу та вичерпну назву, щоб заохотити участь.",
|
||||
"discussions.post.editor.title.error": "Заголовок повідомлення не може бути пустим.",
|
||||
"discussions.post.editor.content.error": "Вміст повідомлення не може бути пустим.",
|
||||
"discussions.post.editor.questionText": "Ваше запитання чи ідея (обов'язково)",
|
||||
"discussions.post.editor.preview": "Попередній перегляд",
|
||||
"discussions.post.editor.followPost": "Стежити за цим повідомленням",
|
||||
"discussions.post.editor.anonymousPost": "Залишити повідомлення анонімно",
|
||||
"discussions.post.editor.anonymousToPeersPost": "Залишити повідомлення анонімно для однокласників",
|
||||
"discussions.editor.posts.editReasonCode": "Причина для редагування",
|
||||
"discussions.editor.posts.showPreview.button": "Показати попередній перегляд",
|
||||
"discussions.topic.noName.label": "Категорія без імені",
|
||||
"discussions.subtopic.noName.label": "Підкатегорія без імені",
|
||||
"discussions.posts.filter.showALl": "Показати усе",
|
||||
"discussions.posts.filter.discussions": "Обговорення",
|
||||
"discussions.posts.filter.questions": "Питання",
|
||||
"discussions.posts.filter.message": "Статус: {filterBy}",
|
||||
"discussions.posts.status.filter.anyStatus": "Будь-який статус",
|
||||
"discussions.posts.status.filter.unread": "Непрочитані",
|
||||
"discussions.posts.status.filter.following": "Слідом за",
|
||||
"discussions.posts.status.filter.reported": "Повідомлений",
|
||||
"discussions.posts.status.filter.unanswered": "Без відповіді",
|
||||
"discussions.posts.status.filter.unresponded": "Без відповіді",
|
||||
"discussions.posts.filter.myPosts": "Мої повідомлення",
|
||||
"discussions.posts.filter.myDiscussions": "Мої обговорення",
|
||||
"discussions.posts.filter.myQuestions": "Мої питання",
|
||||
"discussions.posts.sort.message": "Відсортовано за {sortBy}",
|
||||
"discussions.posts.sort.lastActivity": "Поточна активність",
|
||||
"discussions.posts.sort.commentCount": "Кількість подій",
|
||||
"discussions.posts.sort.voteCount": "Найбільше лайків",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": "{own, select, false {All} true {Own} other {{own}} } {status, select, statusAll {} statusUnread {unread} statusFollowing {followed} statusReported {reported} statusUnanswered {unanswered} statusUnresponded {unresponded} other {{status}} } {type, select, discussion {discussions} question {questions} all {posts} other {{type}} } {cohortType, select, all {} group {in {cohort}} other {{cohortType}} } sorted by {sort, select, lastActivityAt {recent activity} commentCount {most activity} voteCount {most likes} other {{sort}} }"
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
{
|
||||
"discussions.actions.button.alt": "操作菜单",
|
||||
"discussions.actions.copylink": "复制链接",
|
||||
"discussions.actions.edit": "编辑",
|
||||
"discussions.actions.pin": "处理",
|
||||
"discussions.actions.unpin": "不做处理",
|
||||
"discussions.actions.delete": "删除",
|
||||
"discussions.confirmation.button.confirm": "确认",
|
||||
"discussions.actions.close": "关闭",
|
||||
"discussions.actions.reopen": "重开",
|
||||
"discussions.actions.report": "报告",
|
||||
"discussions.actions.unreport": "取消报告",
|
||||
"discussions.actions.endorse": "支持",
|
||||
"discussions.actions.unendorse": "取消支持",
|
||||
"discussions.actions.markAnswered": "标记为已回答",
|
||||
"discussions.actions.unMarkAnswered": "取消标记为已回答",
|
||||
"discussions.modal.confirmation.button.cancel": "取消",
|
||||
"discussions.empty.allTopics": "这些主题的所有讨论活动都将显示在这里。",
|
||||
"discussions.empty.allPosts": "您课程的所有讨论活动都将显示在这里。",
|
||||
"discussions.empty.myPosts": "您互动过的帖子会显示在这里。",
|
||||
"discussions.empty.topic": "该主题的所有讨论活动都将显示在这里。",
|
||||
"discussions.empty.title": "什么都没有",
|
||||
"discussions.empty.noPostSelected": "未选择帖子",
|
||||
"discussions.empty.noTopicSelected": "未选择主题",
|
||||
"discussions.sidebar.noResultsFound": "未找到结果",
|
||||
"discussions.sidebar.differentKeywords": "尝试搜索不同的关键字",
|
||||
"discussions.sidebar.removeKeywords": "尝试搜索不同的关键字或删除一些过滤器",
|
||||
"discussions.sidebar.removeKeywordsOnly": "尝试搜索不同的关键字",
|
||||
"discussions.sidebar.removeFilters": "尝试删除一些过滤器",
|
||||
"discussions.empty.iconAlt": "空白",
|
||||
"discussions.authors.label.staff": "工作人员",
|
||||
"discussions.authors.label.ta": "助教",
|
||||
"discussions.learner.loadMostPosts": "加载更多帖子",
|
||||
"discussions.post.anonymous.author": "匿名",
|
||||
"discussion.blackoutBanner.information": "",
|
||||
"discussions.editor.image.warning.message": "当使用在线课程讨论查看帖子、回复或评论时,宽度或高度大于 999 像素的图像将不可见",
|
||||
"discussions.editor.image.warning.title": "警告!",
|
||||
"discussions.editor.image.warning.dismiss": "确定",
|
||||
"navigation.course.tabs.label": "课程资料",
|
||||
"discussions.topics.backAlt": "返回主题列表",
|
||||
"discussions.topics.discussions": "",
|
||||
"discussions.topics.questions": "",
|
||||
"discussions.topics.reported": "{reported} 报告",
|
||||
"discussions.topics.previouslyReported": "{previouslyReported} 之前报告过",
|
||||
"discussions.topics.find.label": "搜索主题",
|
||||
"discussions.topics.unnamed.section.label": "未命名部分",
|
||||
"discussions.topics.unnamed.subsection.label": "未命名小节",
|
||||
"discussions.subtopics.unnamed.topic.label": "未命名主题",
|
||||
"discussions.topics.title": "主题不存在",
|
||||
"discussions.topics.createTopic": "请联系您的管理员创建主题",
|
||||
"discussions.topics.nothing": "目前什么都没有",
|
||||
"discussions.topics.archived.label": "存档",
|
||||
"discussions.learner.reported": "{reported} 报告",
|
||||
"discussions.learner.previouslyReported": "{previouslyReported} 之前报告过",
|
||||
"discussions.learner.lastLogin": "最后活跃 {lastActiveTime}",
|
||||
"discussions.learner.loadMostLearners": "载入更多",
|
||||
"discussions.learner.back": "返回",
|
||||
"discussions.learner.activityForLearner": "{username} 的活动",
|
||||
"discussions.learner.mostActivity": "大多数活动",
|
||||
"discussions.learner.reportedActivity": "报告的活动",
|
||||
"discussions.learner.recentActivity": "近期活动",
|
||||
"discussions.learner.sortFilterStatus": "",
|
||||
"discussion.learner.allActivity": "所有活动",
|
||||
"discussion.learner.posts": "帖子",
|
||||
"discussions.comments.comment.addComment": "添加评论",
|
||||
"discussions.comments.comment.addResponse": "添加回复",
|
||||
"discussions.comments.comment.abuseFlaggedMessage": "报告的内容供工作人员审查",
|
||||
"discussions.actions.back.alt": "返回目录",
|
||||
"discussions.comments.comment.responseCount": "",
|
||||
"discussions.comments.comment.endorsedResponseCount": "",
|
||||
"discussions.comments.comment.loadMoreComments": "加载更多评论",
|
||||
"discussions.comments.comment.loadMoreResponses": "加载更多回复",
|
||||
"discussions.comments.comment.visibility": "",
|
||||
"discussions.comments.comment.postedTime": "",
|
||||
"discussions.comments.comment.commentTime": "发布 {relativeTime}",
|
||||
"discussions.comments.comment.answer": "答案",
|
||||
"discussions.comments.comment.answeredlabel": "标记为回答者",
|
||||
"discussions.comments.comment.endorsed": "认可",
|
||||
"discussions.comments.comment.endorsedlabel": "受认可",
|
||||
"discussions.actions.label": "操作菜单",
|
||||
"discussions.editor.submit": "提交",
|
||||
"discussions.editor.submitting": "提交中",
|
||||
"discussions.editor.cancel": "取消",
|
||||
"discussions.editor.error.empty": "帖子内容不能为空。",
|
||||
"discussions.editor.delete.response.title": "删除回复",
|
||||
"discussions.editor.delete.response.description": "您确定要永久删除此回复吗?",
|
||||
"discussions.editor.delete.comment.title": "删除评论",
|
||||
"discussions.editor.delete.comment.description": "您确定要永久删除此评论吗?",
|
||||
"discussions.delete.confirmation.button.delete": "删除",
|
||||
"discussions.editor.response.response.title": "举报不当内容?",
|
||||
"discussions.editor.response.description": "讨论管理小组将审核此内容并采取适当的措施。",
|
||||
"discussions.editor.report.comment.title": "举报不当内容?",
|
||||
"discussions.editor.report.comment.description": "讨论管理小组将审核此内容并采取适当的措施。",
|
||||
"discussions.editor.comments.editReasonCode": "编辑原因",
|
||||
"discussions.editor.posts.editReasonCode.error": "选择编辑原因",
|
||||
"discussions.comment.comments.editedBy": "编辑者",
|
||||
"discussions.comment.comments.fullStop": "•",
|
||||
"discussions.comment.comments.reason": "原因",
|
||||
"discussions.post.closedBy": "帖子关闭者",
|
||||
"discussion.comment.time": "{time} 前",
|
||||
"discussion.thread.notFound": "找不到帖子",
|
||||
"discussions.comment.sortFilterStatus": "",
|
||||
"discussions.topics.sort.message": "按 {sortBy} 排序",
|
||||
"discussions.topics.sort.lastActivity": "近期活动",
|
||||
"discussions.topics.sort.commentCount": "大多数活动",
|
||||
"discussions.topics.sort.courseStructure": "课程结构",
|
||||
"discussions.topics.unnamed.label": "未命名类别",
|
||||
"discussions.subtopics.unnamed.label": "未命名的子类别",
|
||||
"tour.action.advance": "下一节",
|
||||
"tour.action.dismiss": "忽略",
|
||||
"tour.action.end": "好的",
|
||||
"tour.example.title": "",
|
||||
"tour.example.body": "",
|
||||
"learn.course.tabs.navigation.overflow.menu": "更多的...",
|
||||
"discussions.navigation.breadcrumbMenu.allTopics": "主题",
|
||||
"discussions.navigation.breadcrumbMenu.showAll": "显示所有",
|
||||
"discussions.navigation.navigationBar.allPosts": "所有帖子",
|
||||
"discussions.navigation.navigationBar.allTopics": "主题",
|
||||
"discussions.navigation.navigationBar.myPosts": "我的帖子",
|
||||
"discussions.navigation.navigationBar.learners": "学员",
|
||||
"discussions.post.author.anonymous": "匿名",
|
||||
"discussions.post.addResponse": "添加回复",
|
||||
"discussions.post.lastResponse": "最后回复 {time}",
|
||||
"discussions.post.postedOn": "{author} {authorLabel} 发布 {time}",
|
||||
"discussions.post.contentReported": "已报告",
|
||||
"discussions.post.following": "关注",
|
||||
"discussions.post.follow": "关注",
|
||||
"discussions.post.followed": "已关注",
|
||||
"discussions.post.notFollowed": "取消关注",
|
||||
"discussions.post.answered": "已回答",
|
||||
"discussions.post.unFollow": "取消关注",
|
||||
"discussions.post.like": "喜欢",
|
||||
"discussions.post.removeLike": "不喜欢",
|
||||
"discussions.post.liked": "喜欢",
|
||||
"discussions.post.likes": "喜欢",
|
||||
"discussions.post.viewActivity": "查看活动",
|
||||
"discussions.post.activity": "活动",
|
||||
"discussions.post.closed": "帖子关闭以供回复和评论",
|
||||
"discussions.post.relatedTo": "相关",
|
||||
"discussions.editor.delete.post.title": "删除帖子",
|
||||
"discussions.editor.delete.post.description": "您确定要永久删除此帖子吗?",
|
||||
"discussions.post.delete.confirmation.button.delete": "删除",
|
||||
"discussions.editor.report.post.title": "举报不当内容?",
|
||||
"discussions.editor.report.post.description": "讨论管理小组将审核此内容并采取适当的措施。",
|
||||
"discussions.post.closePostModal.title": "关闭帖子",
|
||||
"discussions.post.closePostModal.text": "输入关闭此帖子的原因。这只会显示给其他版主。",
|
||||
"discussions.post.closePostModal.reasonCodeInput": "原因",
|
||||
"discussions.post.closePostModal.cancel": "取消",
|
||||
"discussions.post.closePostModal.confirm": "关闭帖子",
|
||||
"discussions.post.label.new": "{count} 新",
|
||||
"discussions.post.editedBy": "编辑者",
|
||||
"discussions.post.editReason": "原因",
|
||||
"discussions.post.postWithoutPreview": "预览不可用",
|
||||
"discussions.post.follow.description": "你正在关注这篇文章",
|
||||
"discussions.post.unfollow.description": "你没有关注这篇文章",
|
||||
"discussions.app.title": "讨论",
|
||||
"discussions.posts.actionBar.searchAllPosts": "搜索所有帖子",
|
||||
"discussions.posts.actionBar.search": "",
|
||||
"discussions.actionBar.searchInfo": "显示“{text}”的 {count} 结果",
|
||||
"discussions.actionBar.searchRewriteInfo": "找不到与“{searchString}”相关的结果。显示“{textSearchRewrite}”的 {count} 结果。",
|
||||
"discussions.actionBar.searchInfoSearching": "搜索中",
|
||||
"discussions.actionBar.clearSearch": "清理结果",
|
||||
"discussion.posts.actionBar.add": "添加帖子",
|
||||
"discussion.posts.actionBar.close": "关闭",
|
||||
"discussions.post.editor.type": "帖子类型",
|
||||
"discussions.post.editor.addPostHeading": "添加帖子",
|
||||
"discussions.post.editor.editPostHeading": "编辑帖子",
|
||||
"discussions.post.editor.typeDescription": "“问题”提出需要答案的议题,“讨论”分享想法并开始交流。",
|
||||
"discussions.post.editor.required": "必需",
|
||||
"discussions.post.editor.questionType": "问题",
|
||||
"discussions.post.editor.questionDescription": "提出需要回答的问题",
|
||||
"discussions.post.editor.discussionType": "讨论",
|
||||
"discussions.post.editor.discussionDescription": "分享想法并开始对话",
|
||||
"discussions.post.editor.topicArea": "主题范围",
|
||||
"discussions.post.editor.topicAreaDescription": "把你的帖子发布到相应的话题里以帮助别人快速找到它。",
|
||||
"discussions.post.editor.cohortVisibility": "群组可见性",
|
||||
"discussions.post.editor.cohortVisibilityAllLearners": "所有学员",
|
||||
"discussions.post.editor.title": "帖子标题",
|
||||
"discussions.post.editor.titleDescription": "添加一个清晰并且描述性强的标题来鼓励参与。",
|
||||
"discussions.post.editor.title.error": "帖子标题不能为空。",
|
||||
"discussions.post.editor.content.error": "帖子内容不能为空。",
|
||||
"discussions.post.editor.questionText": "您的问题或想法 (必填项)",
|
||||
"discussions.post.editor.preview": "预览",
|
||||
"discussions.post.editor.followPost": "跟踪这个帖子",
|
||||
"discussions.post.editor.anonymousPost": "匿名发帖",
|
||||
"discussions.post.editor.anonymousToPeersPost": "匿名发帖给同行",
|
||||
"discussions.editor.posts.editReasonCode": "编辑原因",
|
||||
"discussions.editor.posts.showPreview.button": "显示预览",
|
||||
"discussions.topic.noName.label": "未命名类别",
|
||||
"discussions.subtopic.noName.label": "未命名的子类别",
|
||||
"discussions.posts.filter.showALl": "显示所有",
|
||||
"discussions.posts.filter.discussions": "讨论",
|
||||
"discussions.posts.filter.questions": "问题",
|
||||
"discussions.posts.filter.message": "状态:{filterBy}",
|
||||
"discussions.posts.status.filter.anyStatus": "任何状态",
|
||||
"discussions.posts.status.filter.unread": "未读",
|
||||
"discussions.posts.status.filter.following": "关注",
|
||||
"discussions.posts.status.filter.reported": "已报告",
|
||||
"discussions.posts.status.filter.unanswered": "未答复",
|
||||
"discussions.posts.status.filter.unresponded": "未回复",
|
||||
"discussions.posts.filter.myPosts": "我的帖子",
|
||||
"discussions.posts.filter.myDiscussions": "我的讨论",
|
||||
"discussions.posts.filter.myQuestions": "我的问题",
|
||||
"discussions.posts.sort.message": "按 {sortBy} 排序",
|
||||
"discussions.posts.sort.lastActivity": "近期活动",
|
||||
"discussions.posts.sort.commentCount": "大多数活动",
|
||||
"discussions.posts.sort.voteCount": "最喜欢",
|
||||
"discussions.posts.sort-filter.sortFilterStatus": ""
|
||||
}
|
||||
@@ -1,8 +1,10 @@
|
||||
import 'core-js/stable';
|
||||
import 'regenerator-runtime/runtime';
|
||||
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import React, { StrictMode } from 'react';
|
||||
|
||||
// eslint-disable-next-line import/no-unresolved
|
||||
import { createRoot } from 'react-dom/client';
|
||||
|
||||
import {
|
||||
APP_INIT_ERROR, APP_READY, initialize, mergeConfig,
|
||||
@@ -10,24 +12,27 @@ import {
|
||||
} from '@edx/frontend-platform';
|
||||
import { AppProvider, ErrorPage } from '@edx/frontend-platform/react';
|
||||
|
||||
import Head from './components/Head/Head';
|
||||
import { DiscussionsHome } from './discussions';
|
||||
import messages from './i18n';
|
||||
import store from './store';
|
||||
|
||||
import './assets/favicon.ico';
|
||||
import './index.scss';
|
||||
|
||||
const rootNode = createRoot(document.getElementById('root'));
|
||||
subscribe(APP_READY, () => {
|
||||
ReactDOM.render(
|
||||
<AppProvider store={store}>
|
||||
<DiscussionsHome />
|
||||
</AppProvider>,
|
||||
document.getElementById('root'),
|
||||
rootNode.render(
|
||||
<StrictMode>
|
||||
<AppProvider store={store}>
|
||||
<Head />
|
||||
<DiscussionsHome />
|
||||
</AppProvider>
|
||||
</StrictMode>,
|
||||
);
|
||||
});
|
||||
|
||||
subscribe(APP_INIT_ERROR, (error) => {
|
||||
ReactDOM.render(<ErrorPage message={error.message} />, document.getElementById('root'));
|
||||
rootNode.render(<ErrorPage message={error.message} />);
|
||||
});
|
||||
|
||||
initialize({
|
||||
|
||||
154
src/index.scss
154
src/index.scss
@@ -9,6 +9,25 @@
|
||||
$fa-font-path: "~font-awesome/fonts";
|
||||
@import "~font-awesome/scss/font-awesome";
|
||||
|
||||
body,
|
||||
#main
|
||||
{
|
||||
font-size: 14px ;
|
||||
}
|
||||
|
||||
.btn,
|
||||
.form-control,
|
||||
.dropdown-menu,
|
||||
.pgn__modal,
|
||||
.pgn__form-control-floating-label-content,
|
||||
.pgn__form-label {
|
||||
font-size: 14px !important;
|
||||
}
|
||||
|
||||
.btn-md {
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
#post,
|
||||
#comment,
|
||||
#reply,
|
||||
@@ -41,18 +60,6 @@ $fa-font-path: "~font-awesome/fonts";
|
||||
outline: $light-400 solid 2px;
|
||||
}
|
||||
|
||||
.font-size-16 {
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.font-size-14 {
|
||||
font-size: 14px !important;
|
||||
}
|
||||
|
||||
.font-size-12 {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.font-size-8 {
|
||||
font-size: 8px !important;
|
||||
}
|
||||
@@ -61,10 +68,6 @@ $fa-font-path: "~font-awesome/fonts";
|
||||
font-weight: 500 !important;
|
||||
}
|
||||
|
||||
.font-style-normal {
|
||||
font-style: normal !important;
|
||||
}
|
||||
|
||||
.post-footer-icon-dimensions {
|
||||
width: 32px !important;
|
||||
height: 32px !important;
|
||||
@@ -233,7 +236,11 @@ header {
|
||||
}
|
||||
|
||||
.sidebar-desktop-width {
|
||||
min-width: 29rem !important;
|
||||
max-width: 28rem !important;
|
||||
}
|
||||
|
||||
.sidebar-tablet-width {
|
||||
max-width: 21rem !important;
|
||||
}
|
||||
|
||||
.sidebar-XL-width {
|
||||
@@ -259,6 +266,9 @@ header {
|
||||
width: 18px !important;
|
||||
height: 18px !important;
|
||||
}
|
||||
h4 {
|
||||
font-size: 16px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.pointer-cursor-hover :hover {
|
||||
@@ -390,6 +400,7 @@ header {
|
||||
|
||||
.badge {
|
||||
padding: 1px 5px !important;
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.pgn__checkpoint {
|
||||
@@ -484,6 +495,10 @@ code {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.pgn__avatar {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.spinner-dimensions {
|
||||
@@ -496,7 +511,7 @@ code {
|
||||
}
|
||||
|
||||
.font-style {
|
||||
font-style: normal;
|
||||
font-style: normal !important;
|
||||
}
|
||||
|
||||
.in-context-navbar {
|
||||
@@ -538,7 +553,7 @@ code {
|
||||
.actions-dropdown-item {
|
||||
padding: 12px 16px;
|
||||
height: 48px !important;
|
||||
width: 304px !important;
|
||||
width: 195px !important
|
||||
}
|
||||
|
||||
.font-xl {
|
||||
@@ -564,7 +579,7 @@ code {
|
||||
}
|
||||
|
||||
.author-name {
|
||||
line-height: 1;
|
||||
line-height: 1.5;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
@@ -577,3 +592,102 @@ th, td {
|
||||
padding: 0.4rem;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.help-icon {
|
||||
margin: -47px -3px 0px 0px;
|
||||
}
|
||||
|
||||
.help-icon-size {
|
||||
height: 16px !important;
|
||||
width: 16px !important;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 367px) {
|
||||
|
||||
.discussion-comments h5,
|
||||
.btn,
|
||||
.alert-message-content,
|
||||
.pgn__form-control-floating-label-content,
|
||||
.form-control,
|
||||
.pgn__modal,
|
||||
.pgn__form-label,
|
||||
.dropdown-menu,
|
||||
.tox-tbtn,
|
||||
.tooltip {
|
||||
font-size: 10px !important;
|
||||
}
|
||||
|
||||
.badge,
|
||||
.post-summary-timestamp,
|
||||
.hover-card button {
|
||||
font-size: 8px !important;
|
||||
}
|
||||
|
||||
.header-action-bar button {
|
||||
height: 42px;
|
||||
text-wrap: nowrap;
|
||||
;
|
||||
}
|
||||
|
||||
.nav-item a {
|
||||
padding-left: 14px !important;
|
||||
padding-right: 14px !important;
|
||||
}
|
||||
|
||||
.post-form h4,
|
||||
.discussion-posts .btn-md {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 367px) and (max-width: 768px) {
|
||||
|
||||
.discussion-comments h5,
|
||||
.btn,
|
||||
.alert-message-content,
|
||||
.pgn__form-control-floating-label-content,
|
||||
.form-control,
|
||||
.pgn__form-label,
|
||||
.pgn__modal,
|
||||
.dropdown-menu,
|
||||
.tox-tbtn,
|
||||
.tooltip {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.badge,
|
||||
.post-summary-timestamp,
|
||||
.hover-card.btn-tertiary {
|
||||
font-size: 10px !important;
|
||||
}
|
||||
|
||||
.post-form h4,
|
||||
.discussion-posts .btn-md {
|
||||
font-size: 14px !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 769px) {
|
||||
|
||||
body,
|
||||
#main,
|
||||
.tooltip {
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 768px) {
|
||||
|
||||
body,
|
||||
#main {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 366px) {
|
||||
|
||||
body,
|
||||
#main {
|
||||
font-size: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
51
src/plugin-slots/FooterSlot/README.md
Normal file
51
src/plugin-slots/FooterSlot/README.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# Footer Slot
|
||||
|
||||
### Slot ID: `org.openedx.frontend.layout.footer.v1`
|
||||
|
||||
### Slot ID Aliases
|
||||
* `footer_slot`
|
||||
|
||||
This slot is used to replace/modify/hide the footer.
|
||||
|
||||
The implementation of the `FooterSlot` component lives in [the `frontend-component-footer` repository](https://github.com/openedx/frontend-component-footer/).
|
||||
|
||||
## Example
|
||||
|
||||
The following `env.config.jsx` will replace the default footer.
|
||||
|
||||

|
||||
|
||||
with a simple custom footer
|
||||
|
||||

|
||||
|
||||
```jsx
|
||||
import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework';
|
||||
|
||||
const config = {
|
||||
pluginSlots: {
|
||||
'org.openedx.frontend.layout.footer.v1': {
|
||||
plugins: [
|
||||
{
|
||||
// Hide the default footer
|
||||
op: PLUGIN_OPERATIONS.Hide,
|
||||
widgetId: 'default_contents',
|
||||
},
|
||||
{
|
||||
// Insert a custom footer
|
||||
op: PLUGIN_OPERATIONS.Insert,
|
||||
widget: {
|
||||
id: 'custom_footer',
|
||||
type: DIRECT_PLUGIN,
|
||||
RenderWidget: () => (
|
||||
<h1 style={{textAlign: 'center'}}>🦶</h1>
|
||||
),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
export default config;
|
||||
```
|
||||
BIN
src/plugin-slots/FooterSlot/images/custom_footer.png
Normal file
BIN
src/plugin-slots/FooterSlot/images/custom_footer.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.3 KiB |
BIN
src/plugin-slots/FooterSlot/images/default_footer.png
Normal file
BIN
src/plugin-slots/FooterSlot/images/default_footer.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.7 KiB |
3
src/plugin-slots/README.md
Normal file
3
src/plugin-slots/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# `frontend-app-discussions` Plugin Slots
|
||||
|
||||
* [`org.openedx.frontend.layout.footer.v1`](./FooterSlot/)
|
||||
@@ -19,25 +19,35 @@ Object.defineProperty(window, 'matchMedia', {
|
||||
})),
|
||||
});
|
||||
|
||||
global.MathJax = {
|
||||
typeset: jest.fn(callback => {
|
||||
if (callback) { callback(); }
|
||||
}),
|
||||
startup: {
|
||||
defaultPageReady: jest.fn(() => Promise.resolve()),
|
||||
},
|
||||
};
|
||||
|
||||
// Provides a mock editor component that functions like tinyMCE without the overhead
|
||||
const MockEditor = ({
|
||||
onBlur,
|
||||
onEditorChange,
|
||||
value,
|
||||
}) => (
|
||||
<textarea
|
||||
data-testid="tinymce-editor"
|
||||
value={value}
|
||||
onChange={(event) => {
|
||||
onEditorChange(event.currentTarget.value);
|
||||
}}
|
||||
onBlur={event => {
|
||||
onBlur(event.currentTarget.value);
|
||||
}}
|
||||
onBlur={onBlur}
|
||||
/>
|
||||
);
|
||||
|
||||
MockEditor.propTypes = {
|
||||
onBlur: PropTypes.func.isRequired,
|
||||
onEditorChange: PropTypes.func.isRequired,
|
||||
value: PropTypes.string.isRequired,
|
||||
};
|
||||
jest.mock('@tinymce/tinymce-react', () => {
|
||||
const originalModule = jest.requireActual('@tinymce/tinymce-react');
|
||||
|
||||
Reference in New Issue
Block a user