diff --git a/services/web/frontend/extracted-translations.json b/services/web/frontend/extracted-translations.json
index dd38d566b7..3c709e3abf 100644
--- a/services/web/frontend/extracted-translations.json
+++ b/services/web/frontend/extracted-translations.json
@@ -81,6 +81,7 @@
"free_accounts_have_timeout_upgrade_to_increase": "",
"from_another_project": "",
"from_external_url": "",
+ "from_provider": "",
"full_doc_history": "",
"full_screen": "",
"generic_something_went_wrong": "",
@@ -236,6 +237,7 @@
"repository_name": "",
"resend": "",
"review": "",
+ "revoke": "",
"revoke_invite": "",
"run_syntax_check_now": "",
"select_a_file": "",
diff --git a/services/web/frontend/js/features/share-project-modal/components/edit-member.js b/services/web/frontend/js/features/share-project-modal/components/edit-member.js
index cb50b1fe4a..119448e6db 100644
--- a/services/web/frontend/js/features/share-project-modal/components/edit-member.js
+++ b/services/web/frontend/js/features/share-project-modal/components/edit-member.js
@@ -120,6 +120,7 @@ SelectPrivilege.propTypes = {
}
function RemoveMemberAction({ member }) {
+ const { t } = useTranslation()
const { updateProject, monitorRequest } = useShareProjectContext()
const project = useProjectContext()
@@ -148,7 +149,7 @@ function RemoveMemberAction({ member }) {
bsStyle="link"
onClick={handleClick}
className="remove-button"
- aria-label="Remove from project"
+ aria-label={t('remove_collaborator')}
>
diff --git a/services/web/frontend/js/features/share-project-modal/components/invite.js b/services/web/frontend/js/features/share-project-modal/components/invite.js
index 3cf25f1e33..bcf27de71e 100644
--- a/services/web/frontend/js/features/share-project-modal/components/invite.js
+++ b/services/web/frontend/js/features/share-project-modal/components/invite.js
@@ -6,7 +6,7 @@ import {
} from './share-project-modal'
import Icon from '../../../shared/components/icon'
import { Button, Col, Row, OverlayTrigger, Tooltip } from 'react-bootstrap'
-import { Trans } from 'react-i18next'
+import { Trans, useTranslation } from 'react-i18next'
import MemberPrivileges from './member-privileges'
import { resendInvite, revokeInvite } from '../utils/api'
@@ -75,6 +75,7 @@ ResendInvite.propTypes = {
}
function RevokeInvite({ invite }) {
+ const { t } = useTranslation()
const { updateProject, monitorRequest } = useShareProjectContext()
const project = useProjectContext()
@@ -101,7 +102,7 @@ function RevokeInvite({ invite }) {
type="button"
bsStyle="link"
onClick={handleClick}
- aria-label="Revoke"
+ aria-label={t('revoke')}
className="btn-inline-link"
>
diff --git a/services/web/frontend/js/shared/components/copy-link.js b/services/web/frontend/js/shared/components/copy-link.js
index 547fbee804..60af68f22e 100644
--- a/services/web/frontend/js/shared/components/copy-link.js
+++ b/services/web/frontend/js/shared/components/copy-link.js
@@ -1,10 +1,12 @@
import React, { useCallback, useState } from 'react'
import { Button, OverlayTrigger, Tooltip } from 'react-bootstrap'
import PropTypes from 'prop-types'
-import { Trans } from 'react-i18next'
+import { Trans, useTranslation } from 'react-i18next'
import Icon from './icon'
export default function CopyLink({ link, tooltipId }) {
+ const { t } = useTranslation()
+
const [copied, setCopied] = useState(false)
const handleClick = useCallback(() => {
@@ -36,7 +38,7 @@ export default function CopyLink({ link, tooltipId }) {
bsSize="xsmall"
bsStyle="link"
className="copy-button"
- aria-label="Copy"
+ aria-label={t('copy')}
>
{copied ? : }
diff --git a/services/web/locales/en.json b/services/web/locales/en.json
index e4aad5e777..a4ae06ffda 100644
--- a/services/web/locales/en.json
+++ b/services/web/locales/en.json
@@ -634,6 +634,7 @@
"invite_not_accepted": "Invite not yet accepted",
"resend": "Resend",
"syntax_check": "Syntax check",
+ "revoke": "Revoke",
"revoke_invite": "Revoke Invite",
"pending": "Pending",
"invite_not_valid": "This is not a valid project invite",
@@ -705,6 +706,7 @@
"unlink_warning_reference": "Warning: When you unlink your account from this provider you will not be able to import references into your projects.",
"mendeley": "Mendeley",
"zotero": "Zotero",
+ "from_provider": "From __provider__",
"suggest_new_doc": "Suggest new doc",
"request_sent_thank_you": "Message sent! Our team will review it and reply by email.",
"suggestion": "Suggestion",
diff --git a/services/web/test/frontend/features/share-project-modal/components/share-project-modal.test.js b/services/web/test/frontend/features/share-project-modal/components/share-project-modal.test.js
index 33a3383796..0516eb01e8 100644
--- a/services/web/test/frontend/features/share-project-modal/components/share-project-modal.test.js
+++ b/services/web/test/frontend/features/share-project-modal/components/share-project-modal.test.js
@@ -484,7 +484,7 @@ describe('', function () {
expect(screen.queryAllByText('member-viewer@example.com')).to.have.length(1)
const removeButton = screen.getByRole('button', {
- name: 'Remove from project',
+ name: 'Remove collaborator',
})
fireEvent.click(removeButton)