diff --git a/frontend/src/App.js b/frontend/src/App.js
index 67cb60b391..85e2e0378b 100644
--- a/frontend/src/App.js
+++ b/frontend/src/App.js
@@ -1,5 +1,5 @@
import React, { lazy, Suspense } from 'react'
-import { Route, Switch } from 'react-router-dom'
+import { Switch } from 'react-router-dom'
import { useLingui } from '@lingui/react'
import { LandingPage } from './LandingPage'
import { Main } from './Main'
@@ -15,7 +15,8 @@ import { useUserState } from './UserState'
import { ErrorBoundary } from 'react-error-boundary'
import { ErrorFallbackMessage } from './ErrorFallbackMessage'
import { FloatingMenu } from './FloatingMenu'
-import PrivateRoute from './PrivateRoute'
+import PrivatePage from './PrivatePage'
+import { Page } from './Page'
const PageNotFound = lazy(() => import('./PageNotFound'))
const CreateUserPage = lazy(() => import('./CreateUserPage'))
@@ -119,74 +120,91 @@ export default function App() {
Loading...}>
-
+
-
+
-
+
-
+
-
+
-
-
+
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
+
-
+
@@ -215,7 +233,7 @@ export default function App() {
Report an Issue
diff --git a/frontend/src/DmarcGuidancePage.js b/frontend/src/DmarcGuidancePage.js
index bf1ec4fb8a..5ee481926a 100644
--- a/frontend/src/DmarcGuidancePage.js
+++ b/frontend/src/DmarcGuidancePage.js
@@ -9,11 +9,14 @@ import { Trans } from '@lingui/macro'
import { ErrorFallbackMessage } from './ErrorFallbackMessage'
import { ErrorBoundary } from 'react-error-boundary'
import { LoadingMessage } from './LoadingMessage'
+import { useDocumentTitle } from './useDocumentTitle'
export default function DmarcGuidancePage() {
const { currentUser } = useUserState()
const { domainSlug } = useParams()
+ useDocumentTitle(`${domainSlug}`)
+
const { loading, error, data } = useQuery(GET_GUIDANCE_TAGS_OF_DOMAIN, {
context: {
headers: {
diff --git a/frontend/src/DmarcReportPage.js b/frontend/src/DmarcReportPage.js
index 7119848e11..7e4874d480 100644
--- a/frontend/src/DmarcReportPage.js
+++ b/frontend/src/DmarcReportPage.js
@@ -28,6 +28,7 @@ import { months } from './months'
import { ErrorBoundary } from 'react-error-boundary'
import { ErrorFallbackMessage } from './ErrorFallbackMessage'
import { LoadingMessage } from './LoadingMessage'
+import { useDocumentTitle } from './useDocumentTitle'
export default function DmarcReportPage({ summaryListResponsiveWidth }) {
const { currentUser } = useUserState()
@@ -35,6 +36,8 @@ export default function DmarcReportPage({ summaryListResponsiveWidth }) {
const history = useHistory()
const { i18n } = useLingui()
+ useDocumentTitle(t`DMARC Report for ${domainSlug}`)
+
const currentDate = new Date()
const [selectedPeriod, setSelectedPeriod] = useState(period)
const [selectedYear, setSelectedYear] = useState(year)
diff --git a/frontend/src/OrganizationDetails.js b/frontend/src/OrganizationDetails.js
index 37c06d3dab..a8c170cd3d 100644
--- a/frontend/src/OrganizationDetails.js
+++ b/frontend/src/OrganizationDetails.js
@@ -23,12 +23,16 @@ import { ErrorFallbackMessage } from './ErrorFallbackMessage'
import { LoadingMessage } from './LoadingMessage'
import { OrganizationDomains } from './OrganizationDomains'
import { OrganizationAffiliations } from './OrganizationAffiliations'
+import { useDocumentTitle } from './useDocumentTitle'
export default function OrganizationDetails() {
const { orgSlug } = useParams()
const { currentUser } = useUserState()
const toast = useToast()
const history = useHistory()
+
+ useDocumentTitle(`${orgSlug}`)
+
const { loading, _error, data } = useQuery(ORG_DETAILS_PAGE, {
variables: { slug: orgSlug },
context: {
diff --git a/frontend/src/Page.js b/frontend/src/Page.js
new file mode 100644
index 0000000000..6e7bb0e600
--- /dev/null
+++ b/frontend/src/Page.js
@@ -0,0 +1,15 @@
+import React from 'react'
+import { Route } from 'react-router-dom'
+import { bool, string } from 'prop-types'
+import { useDocumentTitle } from './useDocumentTitle'
+
+export const Page = ({ title, setTitle, ...props }) => {
+ useDocumentTitle(title, setTitle)
+
+ return
+}
+
+Page.propTypes = {
+ title: string,
+ setTitle: bool,
+}
diff --git a/frontend/src/PrivateRoute.js b/frontend/src/PrivatePage.js
similarity index 61%
rename from frontend/src/PrivateRoute.js
rename to frontend/src/PrivatePage.js
index a4aa6d5507..a7e22468a7 100644
--- a/frontend/src/PrivateRoute.js
+++ b/frontend/src/PrivatePage.js
@@ -1,17 +1,18 @@
-// From https://reactrouter.com/web/example/auth-workflow
-
import React from 'react'
import { node } from 'prop-types'
-import { Route, Redirect, useLocation } from 'react-router-dom'
+import { Redirect, useLocation } from 'react-router-dom'
import { useUserState } from './UserState'
+import { Page } from './Page'
-// A wrapper for that redirects to the login
+// A wrapper for that redirects to the login
// screen if you're not yet authenticated.
-export default function PrivateRoute({ children, ...rest }) {
+export default function PrivatePage({ children, title, setTitle, ...rest }) {
const { isLoggedIn } = useUserState()
const location = useLocation()
return (
-
isLoggedIn() ? (
@@ -29,6 +30,7 @@ export default function PrivateRoute({ children, ...rest }) {
)
}
-PrivateRoute.propTypes = {
+PrivatePage.propTypes = {
children: node,
+ ...Page.propTypes,
}
diff --git a/frontend/src/browserconfig.xml b/frontend/src/browserconfig.xml
new file mode 100644
index 0000000000..c987d4ae9f
--- /dev/null
+++ b/frontend/src/browserconfig.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ #2e2e40
+
+
+
diff --git a/frontend/src/client.js b/frontend/src/client.js
index d8b8015af2..8c4899442b 100644
--- a/frontend/src/client.js
+++ b/frontend/src/client.js
@@ -43,7 +43,7 @@ export const cache = createCache()
export const client = new ApolloClient({
link: new HttpLink({
- uri: 'https://tracker.alpha.canada.ca/graphql',
+ uri: '/graphql',
}),
cache,
})
diff --git a/frontend/src/html.js b/frontend/src/html.js
index ce495a0fd6..8e369ca8fd 100644
--- a/frontend/src/html.js
+++ b/frontend/src/html.js
@@ -1,4 +1,3 @@
-import './images/favicon.ico'
import './images/apple-touch-icon.png'
import './images/favicon-32x32.png'
import './images/favicon-16x16.png'
@@ -12,37 +11,25 @@ export default () => `
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
Tracker
diff --git a/frontend/src/images/android-chrome-192x192.png b/frontend/src/images/android-chrome-192x192.png
new file mode 100644
index 0000000000..08931a5bf9
Binary files /dev/null and b/frontend/src/images/android-chrome-192x192.png differ
diff --git a/frontend/src/images/android-chrome-512x512.png b/frontend/src/images/android-chrome-512x512.png
new file mode 100644
index 0000000000..5d466baef0
Binary files /dev/null and b/frontend/src/images/android-chrome-512x512.png differ
diff --git a/frontend/src/images/apple-touch-icon.png b/frontend/src/images/apple-touch-icon.png
index a4f9665902..e5f42ec232 100644
Binary files a/frontend/src/images/apple-touch-icon.png and b/frontend/src/images/apple-touch-icon.png differ
diff --git a/frontend/src/images/favicon-16x16.png b/frontend/src/images/favicon-16x16.png
index 84873eb7e3..bcc5f5f570 100644
Binary files a/frontend/src/images/favicon-16x16.png and b/frontend/src/images/favicon-16x16.png differ
diff --git a/frontend/src/images/favicon-32x32.png b/frontend/src/images/favicon-32x32.png
index 5a814ec62c..d0e18da20f 100644
Binary files a/frontend/src/images/favicon-32x32.png and b/frontend/src/images/favicon-32x32.png differ
diff --git a/frontend/src/images/favicon.ico b/frontend/src/images/favicon.ico
index 368ae15d68..a737ab8e36 100644
Binary files a/frontend/src/images/favicon.ico and b/frontend/src/images/favicon.ico differ
diff --git a/frontend/src/images/https.svg b/frontend/src/images/https.svg
new file mode 100755
index 0000000000..14ae6d373d
--- /dev/null
+++ b/frontend/src/images/https.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/frontend/src/images/mstile-150x150.png b/frontend/src/images/mstile-150x150.png
new file mode 100644
index 0000000000..2e351ae01f
Binary files /dev/null and b/frontend/src/images/mstile-150x150.png differ
diff --git a/frontend/src/images/safari-pinned-tab.svg b/frontend/src/images/safari-pinned-tab.svg
index 783eaf519b..ff9a05ec82 100644
--- a/frontend/src/images/safari-pinned-tab.svg
+++ b/frontend/src/images/safari-pinned-tab.svg
@@ -2,30 +2,140 @@
diff --git a/frontend/src/locales/en.js b/frontend/src/locales/en.js
index 25128cb5b2..e4bcedc61d 100644
--- a/frontend/src/locales/en.js
+++ b/frontend/src/locales/en.js
@@ -28,6 +28,7 @@
Acronym: 'Acronym',
'Add Domain': 'Add Domain',
'Add a domain': 'Add a domain',
+ Admin: 'Admin',
'Admin Portal': 'Admin Portal',
'Admin Profile': 'Admin Profile',
'An email was sent with a link to reset your password':
@@ -53,6 +54,8 @@
'As per RFC section 3.6.1, Testing flag t=y means Verifiers MUST treat messages as unsigned (i.e. DKIM is not enabled), so this flag should not be enabled.':
'As per RFC section 3.6.1, Testing flag t=y means Verifiers MUST treat messages as unsigned (i.e. DKIM is not enabled), so this flag should not be enabled.',
August: 'August',
+ Authenticate: 'Authenticate',
+ 'Authentication QR Code': 'Authentication QR Code',
'B.1.1 SPF Records': 'B.1.1 SPF Records',
'B.1.3 DNS Lookup Limit': 'B.1.3 DNS Lookup Limit',
'B.2.1 DKIM Records': 'B.2.1 DKIM Records',
@@ -89,6 +92,7 @@
'Confirm removal of domain:': 'Confirm removal of domain:',
'Contact 3rd party': 'Contact 3rd party',
'Create Account': 'Create Account',
+ 'Create an Account': 'Create an Account',
'Create an account by entering an email and password.':
'Create an account by entering an email and password.',
'Current Display Name:': 'Current Display Name:',
@@ -105,6 +109,7 @@
'DKIM Flag t': 'DKIM Flag t',
'DKIM Results': 'DKIM Results',
'DKIM Selectors': 'DKIM Selectors',
+ 'DKIM Status': 'DKIM Status',
'DKIM TXT record invalid': 'DKIM TXT record invalid',
'DKIM key does not use RSA': 'DKIM key does not use RSA',
'DKIM record missing but MX uses O365. Follow cloud-specific guidance':
@@ -125,6 +130,9 @@
'DMARC Messages': 'DMARC Messages',
'DMARC Not Implemented': 'DMARC Not Implemented',
'DMARC Report': 'DMARC Report',
+ 'DMARC Report for {domainSlug}': ['DMARC Report for ', ['domainSlug']],
+ 'DMARC Report | {domainSlug}': ['DMARC Report | ', ['domainSlug']],
+ 'DMARC Status': 'DMARC Status',
'DMARC fail': 'DMARC fail',
'DMARC pass': 'DMARC pass',
'DMARC-GC': 'DMARC-GC',
@@ -136,6 +144,8 @@
'Display name cannot be empty': 'Display name cannot be empty',
Disposition: 'Disposition',
Domain: 'Domain',
+ 'Domain DMARC Report': 'Domain DMARC Report',
+ 'Domain Details': 'Domain Details',
'Domain List': 'Domain List',
'Domain URL': 'Domain URL',
'Domain URL:': 'Domain URL:',
@@ -189,6 +199,7 @@
'For in-depth CCCS implementation guidance:',
'For technical implementation guidance:':
'For technical implementation guidance:',
+ 'Forgot Password': 'Forgot Password',
'Forgot your password?': 'Forgot your password?',
'Full Fail %': 'Full Fail %',
'Full Pass %': 'Full Pass %',
@@ -210,6 +221,7 @@
'HTTP Strict Transport Security (HSTS) not implemented',
'HTTP Strict Transport Security (HSTS) policy maximum age is shorter than one year':
'HTTP Strict Transport Security (HSTS) policy maximum age is shorter than one year',
+ 'HTTPS Status': 'HTTPS Status',
'HTTPS certificate chain is invalid': 'HTTPS certificate chain is invalid',
'HTTPS certificate is expired': 'HTTPS certificate is expired',
'HTTPS certificate is self-signed': 'HTTPS certificate is self-signed',
@@ -276,6 +288,7 @@
'L-30-D': 'L-30-D',
'Language:': 'Language:',
'Last 30 Days': 'Last 30 Days',
+ 'Last Scanned': 'Last Scanned',
'Last scanned:': 'Last scanned:',
'Level of Enforcment:': 'Level of Enforcment:',
'Loading {children}...': ['Loading ', ['children'], '...'],
@@ -423,6 +436,7 @@
'Remove Domain': 'Remove Domain',
'Report an Issue': 'Report an Issue',
'Request a domain to be scanned:': 'Request a domain to be scanned:',
+ 'Reset Password': 'Reset Password',
'Result:': 'Result:',
'Results for scans of email technologies (DMARC, SPF, DKIM).':
'Results for scans of email technologies (DMARC, SPF, DKIM).',
@@ -440,11 +454,13 @@
'SPF Failure Table': 'SPF Failure Table',
'SPF Failures by IP Address': 'SPF Failures by IP Address',
'SPF Results': 'SPF Results',
+ 'SPF Status': 'SPF Status',
'SPF implemented in incorrect subdomain':
'SPF implemented in incorrect subdomain',
'SPF-GC': 'SPF-GC',
'SPF-bad-path': 'SPF-bad-path',
'SPF-missing': 'SPF-missing',
+ 'SSL Status': 'SSL Status',
'SSL-3des': 'SSL-3des',
'SSL-GC': 'SSL-GC',
'SSL-acceptable-certificate': 'SSL-acceptable-certificate',
@@ -510,6 +526,7 @@
'Total Messages': 'Total Messages',
'Total users': 'Total users',
'Track Digital Security': 'Track Digital Security',
+ Tracker: 'Tracker',
'Tracker Logo': 'Tracker Logo',
'Two Factor Authentication': 'Two Factor Authentication',
USER: 'USER',
@@ -607,6 +624,7 @@
'You may now sign in with your new password',
'Your 2FA app will then have a valid code that you can use when you sign in.':
'Your 2FA app will then have a valid code that you can use when you sign in.',
+ 'Your Account': 'Your Account',
'https://cyber.gc.ca/en/guidance/implementation-guidance-email-domain-protection#a322':
'https://cyber.gc.ca/en/guidance/implementation-guidance-email-domain-protection#a322',
'https://cyber.gc.ca/en/guidance/implementation-guidance-email-domain-protection#anna23':
@@ -650,6 +668,7 @@
'pct=0 will use the next lower level of enforcement and may result in irregular mail flow if parsed incorrectly (p=quarantine; pct=0 should be none but mail agents may process messages based on Quarantine)',
'{0} was added to {orgSlug}': [['0'], ' was added to ', ['orgSlug']],
'{count} records...': [['count'], ' records...'],
+ '{domainSlug} DMARC Report': [['domainSlug'], ' DMARC Report'],
'{editingDomainUrl} from {orgSlug} successfully updated to {0}': [
['editingDomainUrl'],
' from ',
@@ -658,5 +677,6 @@
['0'],
],
'{orgName}': [['orgName']],
+ '{title} - Tracker': [['title'], ' - Tracker'],
},
}
diff --git a/frontend/src/locales/en.po b/frontend/src/locales/en.po
index 516b0f6043..7de0030c1a 100644
--- a/frontend/src/locales/en.po
+++ b/frontend/src/locales/en.po
@@ -90,7 +90,7 @@ msgstr "Accepted cipher list contains 3DES symmetric-key block cipher, as prohib
msgid "Accepted cipher list contains RC4 stream cipher, as prohibited by BOD 18-01"
msgstr "Accepted cipher list contains RC4 stream cipher, as prohibited by BOD 18-01"
-#: src/App.js:83
+#: src/App.js:84
#: src/FloatingMenu.js:129
#: src/UserPage.js:35
msgid "Account Settings"
@@ -112,11 +112,15 @@ msgstr "Add Domain"
msgid "Add a domain"
msgstr "Add a domain"
+#: src/App.js:166
+msgid "Admin"
+msgstr "Admin"
+
#: src/FloatingMenu.js:131
msgid "Admin Portal"
msgstr "Admin Portal"
-#: src/App.js:89
+#: src/App.js:90
msgid "Admin Profile"
msgstr "Admin Profile"
@@ -182,6 +186,14 @@ msgstr "As per RFC section 3.6.1, Testing flag t=y means Verifiers MUST treat me
msgid "August"
msgstr "August"
+#: src/App.js:139
+msgid "Authenticate"
+msgstr "Authenticate"
+
+#: src/App.js:202
+msgid "Authentication QR Code"
+msgstr "Authentication QR Code"
+
#: src/guidanceTagConstants.js:37
msgid "B.1.1 SPF Records"
msgstr "B.1.1 SPF Records"
@@ -316,6 +328,10 @@ msgstr "Contact 3rd party"
msgid "Create Account"
msgstr "Create Account"
+#: src/App.js:129
+msgid "Create an Account"
+msgstr "Create an Account"
+
#: src/CreateUserPage.js:142
msgid "Create an account by entering an email and password."
msgstr "Create an account by entering an email and password."
@@ -340,7 +356,7 @@ msgstr "Current Password:"
msgid "Current Phone Number:"
msgstr "Current Phone Number:"
-#: src/DmarcReportPage.js:305
+#: src/DmarcReportPage.js:308
msgid "DKIM Aligned"
msgstr "DKIM Aligned"
@@ -348,16 +364,16 @@ msgstr "DKIM Aligned"
msgid "DKIM CNAMEs do not exist, but MX points to *.onmicrosoft.com and SPF record includes O365."
msgstr "DKIM CNAMEs do not exist, but MX points to *.onmicrosoft.com and SPF record includes O365."
-#: src/DmarcReportPage.js:272
+#: src/DmarcReportPage.js:275
msgid "DKIM Domains"
msgstr "DKIM Domains"
-#: src/DmarcReportPage.js:327
+#: src/DmarcReportPage.js:330
msgid "DKIM Failure Table"
msgstr "DKIM Failure Table"
-#: src/DmarcReportPage.js:338
-#: src/DmarcReportPage.js:370
+#: src/DmarcReportPage.js:341
+#: src/DmarcReportPage.js:373
msgid "DKIM Failures by IP Address"
msgstr "DKIM Failures by IP Address"
@@ -365,11 +381,11 @@ msgstr "DKIM Failures by IP Address"
msgid "DKIM Flag t"
msgstr "DKIM Flag t"
-#: src/DmarcReportPage.js:309
+#: src/DmarcReportPage.js:312
msgid "DKIM Results"
msgstr "DKIM Results"
-#: src/DmarcReportPage.js:276
+#: src/DmarcReportPage.js:279
msgid "DKIM Selectors"
msgstr "DKIM Selectors"
@@ -413,12 +429,12 @@ msgstr "DKIM-missing-mx-O365"
msgid "DKIM-value-invalid"
msgstr "DKIM-value-invalid"
-#: src/DmarcReportPage.js:530
+#: src/DmarcReportPage.js:533
msgid "DMARC Failure Table"
msgstr "DMARC Failure Table"
-#: src/DmarcReportPage.js:541
-#: src/DmarcReportPage.js:570
+#: src/DmarcReportPage.js:544
+#: src/DmarcReportPage.js:573
msgid "DMARC Failures by IP Address"
msgstr "DMARC Failures by IP Address"
@@ -426,7 +442,7 @@ msgstr "DMARC Failures by IP Address"
msgid "DMARC Implementation Phase: {0}"
msgstr "DMARC Implementation Phase: {0}"
-#: src/ScanCard.js:48
+#: src/ScanCard.js:61
#~ msgid "DMARC Implementation Phase: {status}"
#~ msgstr "DMARC Implementation Phase: {status}"
@@ -439,12 +455,21 @@ msgstr "DMARC Messages"
#~ msgid "DMARC Not Implemented"
#~ msgstr "DMARC Not Implemented"
-#: src/App.js:77
-#: src/DmarcGuidancePage.js:60
+#: src/App.js:78
+#: src/App.js:190
+#: src/DmarcGuidancePage.js:63
#: src/DomainCard.js:167
msgid "DMARC Report"
msgstr "DMARC Report"
+#: src/DmarcReportPage.js:39
+msgid "DMARC Report for {domainSlug}"
+msgstr "DMARC Report for {domainSlug}"
+
+#: src/DmarcReportPage.js:39
+#~ msgid "DMARC Report | {domainSlug}"
+#~ msgstr "DMARC Report | {domainSlug}"
+
#: src/DomainsPage.js:136
msgid "DMARC Status"
msgstr "DMARC Status"
@@ -465,7 +490,7 @@ msgstr "DMARC-GC"
msgid "DMARC-missing"
msgstr "DMARC-missing"
-#: src/DmarcReportPage.js:285
+#: src/DmarcReportPage.js:288
msgid "DNS Host"
msgstr "DNS Host"
@@ -486,7 +511,7 @@ msgstr "Display Name:"
msgid "Display name cannot be empty"
msgstr "Display name cannot be empty"
-#: src/DmarcReportPage.js:313
+#: src/DmarcReportPage.js:316
msgid "Disposition"
msgstr "Disposition"
@@ -495,6 +520,14 @@ msgstr "Disposition"
msgid "Domain"
msgstr "Domain"
+#: src/App.js:209
+#~ msgid "Domain DMARC Report"
+#~ msgstr "Domain DMARC Report"
+
+#: src/App.js:165
+#~ msgid "Domain Details"
+#~ msgstr "Domain Details"
+
#: src/AdminDomains.js:248
#: src/AdminDomains.js:256
msgid "Domain List"
@@ -557,10 +590,11 @@ msgstr "Domain uses potentially-outsourced DMARC service"
msgid "Domain:"
msgstr "Domain:"
-#: src/App.js:71
+#: src/App.js:72
+#: src/App.js:172
#: src/DomainsPage.js:64
#: src/DomainsPage.js:85
-#: src/OrganizationDetails.js:88
+#: src/OrganizationDetails.js:92
#: src/OrganizationDomains.js:39
msgid "Domains"
msgstr "Domains"
@@ -645,11 +679,11 @@ msgstr "Enter two factor code"
msgid "Enter your user account's verified email address and we will send you a password reset link."
msgstr "Enter your user account's verified email address and we will send you a password reset link."
-#: src/DmarcReportPage.js:267
+#: src/DmarcReportPage.js:270
msgid "Envelope From"
msgstr "Envelope From"
-#: src/DmarcReportPage.js:224
+#: src/DmarcReportPage.js:227
#: src/fixtures/summaryListData.js:171
msgid "Fail"
msgstr "Fail"
@@ -692,6 +726,10 @@ msgstr "For in-depth CCCS implementation guidance:"
msgid "For technical implementation guidance:"
msgstr "For technical implementation guidance:"
+#: src/App.js:145
+msgid "Forgot Password"
+msgstr "Forgot Password"
+
#: src/SignInPage.js:142
msgid "Forgot your password?"
msgstr "Forgot your password?"
@@ -704,12 +742,12 @@ msgstr "Full Fail %"
msgid "Full Pass %"
msgstr "Full Pass %"
-#: src/DmarcReportPage.js:397
+#: src/DmarcReportPage.js:400
msgid "Fully Aligned Table"
msgstr "Fully Aligned Table"
-#: src/DmarcReportPage.js:408
-#: src/DmarcReportPage.js:435
+#: src/DmarcReportPage.js:411
+#: src/DmarcReportPage.js:438
msgid "Fully Aligned by IP Address"
msgstr "Fully Aligned by IP Address"
@@ -726,12 +764,12 @@ msgstr "Go to page:"
msgid "Government of Canada domains subject to TBS guidelines"
msgstr "Government of Canada domains subject to TBS guidelines"
-#: src/DmarcReportPage.js:295
-#: src/DmarcReportPage.js:616
+#: src/DmarcReportPage.js:298
+#: src/DmarcReportPage.js:619
msgid "Guidance"
msgstr "Guidance"
-#: src/DmarcGuidancePage.js:33
+#: src/DmarcGuidancePage.js:36
msgid "Guidance Tags"
msgstr "Guidance Tags"
@@ -832,11 +870,12 @@ msgstr "HTTPS-not-enforced"
msgid "HTTPS-weakly-enforced"
msgstr "HTTPS-weakly-enforced"
-#: src/DmarcReportPage.js:291
+#: src/DmarcReportPage.js:294
msgid "Header From"
msgstr "Header From"
-#: src/App.js:60
+#: src/App.js:61
+#: src/App.js:123
#: src/FloatingMenu.js:127
msgid "Home"
msgstr "Home"
@@ -993,7 +1032,7 @@ msgid "Language:"
msgstr "Language:"
#: src/DmarcByDomainPage.js:187
-#: src/DmarcReportPage.js:138
+#: src/DmarcReportPage.js:141
msgid "Last 30 Days"
msgstr "Last 30 Days"
@@ -1171,11 +1210,11 @@ msgstr "No Users"
msgid "No current phone number"
msgstr "No current phone number"
-#: src/DmarcReportPage.js:385
+#: src/DmarcReportPage.js:388
msgid "No data for the DKIM Failures by IP Address table"
msgstr "No data for the DKIM Failures by IP Address table"
-#: src/DmarcReportPage.js:585
+#: src/DmarcReportPage.js:588
msgid "No data for the DMARC Failures by IP Address table"
msgstr "No data for the DMARC Failures by IP Address table"
@@ -1183,15 +1222,15 @@ msgstr "No data for the DMARC Failures by IP Address table"
msgid "No data for the DMARC summary table"
msgstr "No data for the DMARC summary table"
-#: src/DmarcReportPage.js:256
+#: src/DmarcReportPage.js:259
msgid "No data for the DMARC yearly report graph"
msgstr "No data for the DMARC yearly report graph"
-#: src/DmarcReportPage.js:450
+#: src/DmarcReportPage.js:453
msgid "No data for the Fully Aligned by IP Address table"
msgstr "No data for the Fully Aligned by IP Address table"
-#: src/DmarcReportPage.js:518
+#: src/DmarcReportPage.js:521
msgid "No data for the SPF Failures by IP Address table"
msgstr "No data for the SPF Failures by IP Address table"
@@ -1236,7 +1275,7 @@ msgstr "October"
msgid "One or more ciphers in use are not compliant with guidelines"
msgstr "One or more ciphers in use are not compliant with guidelines"
-#: src/OrganizationDetails.js:60
+#: src/OrganizationDetails.js:64
msgid "Organization Details"
msgstr "Organization Details"
@@ -1244,7 +1283,8 @@ msgstr "Organization Details"
msgid "Organization:"
msgstr "Organization:"
-#: src/App.js:65
+#: src/App.js:66
+#: src/App.js:154
#: src/Organizations.js:62
#: src/Organizations.js:97
msgid "Organizations"
@@ -1347,17 +1387,17 @@ msgstr "Page Size:"
msgid "Page {0} of {1}"
msgstr "Page {0} of {1}"
-#: src/DmarcReportPage.js:206
+#: src/DmarcReportPage.js:209
#: src/fixtures/summaryListData.js:155
msgid "Pass"
msgstr "Pass"
-#: src/DmarcReportPage.js:218
+#: src/DmarcReportPage.js:221
#: src/fixtures/summaryListData.js:165
msgid "Pass Only DKIM"
msgstr "Pass Only DKIM"
-#: src/DmarcReportPage.js:212
+#: src/DmarcReportPage.js:215
#: src/fixtures/summaryListData.js:161
msgid "Pass Only SPF"
msgstr "Pass Only SPF"
@@ -1454,7 +1494,7 @@ msgstr "Policy applies to no part of mailflow - irregular config"
msgid "Policy applies to percentage of mailflow"
msgstr "Policy applies to percentage of mailflow"
-#: src/App.js:52
+#: src/App.js:53
msgid "Pre-Alpha"
msgstr "Pre-Alpha"
@@ -1466,7 +1506,7 @@ msgstr "Pre-Alpha"
msgid "Previous"
msgstr "Previous"
-#: src/App.js:203
+#: src/App.js:221
#: src/FloatingMenu.js:175
msgid "Privacy"
msgstr "Privacy"
@@ -1543,7 +1583,7 @@ msgstr "RUF-none"
msgid "Remove Domain"
msgstr "Remove Domain"
-#: src/App.js:221
+#: src/App.js:239
msgid "Report an Issue"
msgstr "Report an Issue"
@@ -1551,6 +1591,10 @@ msgstr "Report an Issue"
msgid "Request a domain to be scanned:"
msgstr "Request a domain to be scanned:"
+#: src/App.js:151
+msgid "Reset Password"
+msgstr "Reset Password"
+
#: src/GuidanceTagDetails.js:76
#: src/GuidanceTagList.js:77
msgid "Result:"
@@ -1594,24 +1638,24 @@ msgstr "SP-quarantine"
msgid "SP-reject"
msgstr "SP-reject"
-#: src/DmarcReportPage.js:297
+#: src/DmarcReportPage.js:300
msgid "SPF Aligned"
msgstr "SPF Aligned"
-#: src/DmarcReportPage.js:287
+#: src/DmarcReportPage.js:290
msgid "SPF Domains"
msgstr "SPF Domains"
-#: src/DmarcReportPage.js:462
+#: src/DmarcReportPage.js:465
msgid "SPF Failure Table"
msgstr "SPF Failure Table"
-#: src/DmarcReportPage.js:473
-#: src/DmarcReportPage.js:503
+#: src/DmarcReportPage.js:476
+#: src/DmarcReportPage.js:506
msgid "SPF Failures by IP Address"
msgstr "SPF Failures by IP Address"
-#: src/DmarcReportPage.js:301
+#: src/DmarcReportPage.js:304
msgid "SPF Results"
msgstr "SPF Results"
@@ -1703,7 +1747,7 @@ msgstr "Search"
msgid "Search for a domain"
msgstr "Search for a domain"
-#: src/UserList.js:231
+#: src/UserList.js:253
#~ msgid "Search for a user"
#~ msgstr "Search for a user"
@@ -1748,11 +1792,12 @@ msgid "Show {pageSize}"
msgstr "Show {pageSize}"
#: src/DmarcByDomainPage.js:231
-#: src/DmarcReportPage.js:625
+#: src/DmarcReportPage.js:628
msgid "Showing data for period:"
msgstr "Showing data for period:"
-#: src/App.js:113
+#: src/App.js:114
+#: src/App.js:134
#: src/FloatingMenu.js:158
#: src/SignInPage.js:153
msgid "Sign In"
@@ -1763,12 +1808,12 @@ msgstr "Sign In"
msgid "Sign In."
msgstr "Sign In."
-#: src/App.js:109
+#: src/App.js:110
#: src/FloatingMenu.js:144
msgid "Sign Out"
msgstr "Sign Out"
-#: src/App.js:99
+#: src/App.js:100
#: src/FloatingMenu.js:148
msgid "Sign Out."
msgstr "Sign Out."
@@ -1777,7 +1822,7 @@ msgstr "Sign Out."
msgid "Sign in with your username and password."
msgstr "Sign in with your username and password."
-#: src/App.js:50
+#: src/App.js:51
msgid "Skip to main content"
msgstr "Skip to main content"
@@ -1786,7 +1831,7 @@ msgstr "Skip to main content"
msgid "Sort by:"
msgstr "Sort by:"
-#: src/DmarcReportPage.js:262
+#: src/DmarcReportPage.js:265
msgid "Source IP Address"
msgstr "Source IP Address"
@@ -1795,7 +1840,7 @@ msgstr "Source IP Address"
msgid "Submit"
msgstr "Submit"
-#: src/OrganizationDetails.js:85
+#: src/OrganizationDetails.js:89
msgid "Summary"
msgstr "Summary"
@@ -1819,7 +1864,7 @@ msgstr "TXT-DMARC-enabled"
msgid "TXT-DMARC-missing"
msgstr "TXT-DMARC-missing"
-#: src/App.js:214
+#: src/App.js:232
#: src/FloatingMenu.js:185
msgid "Terms & conditions"
msgstr "Terms & conditions"
@@ -1848,12 +1893,12 @@ msgstr "This could be due to improper configuration, or could be the result of a
#~ msgid "This could be due to improper configurations, or could be the result of a scan error"
#~ msgstr "This could be due to improper configurations, or could be the result of a scan error"
-#: src/App.js:53
+#: src/App.js:54
msgid "This service is being developed in the open"
msgstr "This service is being developed in the open"
#: src/DmarcByDomainPage.js:88
-#: src/DmarcReportPage.js:280
+#: src/DmarcReportPage.js:283
msgid "Total Messages"
msgstr "Total Messages"
@@ -1865,6 +1910,10 @@ msgstr "Total users"
msgid "Track Digital Security"
msgstr "Track Digital Security"
+#: src/Page.js:8
+#~ msgid "Tracker"
+#~ msgstr "Tracker"
+
#: src/TopBanner.js:36
msgid "Tracker Logo"
msgstr "Tracker Logo"
@@ -1988,7 +2037,7 @@ msgstr "User List"
msgid "User invited"
msgstr "User invited"
-#: src/OrganizationDetails.js:91
+#: src/OrganizationDetails.js:95
msgid "Users"
msgstr "Users"
@@ -2070,7 +2119,7 @@ msgstr "Welcome, you are successfully signed in to your new account!"
msgid "Welcome, you are successfully signed in!"
msgstr "Welcome, you are successfully signed in!"
-#: src/DmarcReportPage.js:192
+#: src/DmarcReportPage.js:195
msgid "Yearly DMARC Graph"
msgstr "Yearly DMARC Graph"
@@ -2082,7 +2131,7 @@ msgstr "You do not have admin permissions in any organization"
msgid "You have not enabled Two Factor Authentication. To maximize your account's security, <0>please enable 2FA0>."
msgstr "You have not enabled Two Factor Authentication. To maximize your account's security, <0>please enable 2FA0>."
-#: src/App.js:100
+#: src/App.js:101
#: src/FloatingMenu.js:149
msgid "You have successfully been signed out."
msgstr "You have successfully been signed out."
@@ -2119,6 +2168,10 @@ msgstr "You may now sign in with your new password"
msgid "Your 2FA app will then have a valid code that you can use when you sign in."
msgstr "Your 2FA app will then have a valid code that you can use when you sign in."
+#: src/App.js:196
+msgid "Your Account"
+msgstr "Your Account"
+
#: src/guidanceTagConstants.js:6
msgid "https://cyber.gc.ca/en/guidance/implementation-guidance-email-domain-protection#a322"
msgstr "https://cyber.gc.ca/en/guidance/implementation-guidance-email-domain-protection#a322"
@@ -2211,10 +2264,18 @@ msgstr "{0} was added to {orgSlug}"
msgid "{count} records..."
msgstr "{count} records..."
+#: src/DmarcReportPage.js:39
+#~ msgid "{domainSlug} DMARC Report"
+#~ msgstr "{domainSlug} DMARC Report"
+
#: src/AdminDomains.js:209
msgid "{editingDomainUrl} from {orgSlug} successfully updated to {0}"
msgstr "{editingDomainUrl} from {orgSlug} successfully updated to {0}"
-#: src/OrganizationDetails.js:76
+#: src/OrganizationDetails.js:80
msgid "{orgName}"
msgstr "{orgName}"
+
+#: src/useDocumentTitle.js:6
+msgid "{title} - Tracker"
+msgstr "{title} - Tracker"
diff --git a/frontend/src/locales/fr.js b/frontend/src/locales/fr.js
index 6fe2590eb4..67f3803bae 100644
--- a/frontend/src/locales/fr.js
+++ b/frontend/src/locales/fr.js
@@ -30,6 +30,7 @@
Acronym: 'Acronyme',
'Add Domain': 'Ajouter un domaine',
'Add a domain': 'Ajouter un domaine',
+ Admin: 'Administrateur',
'Admin Portal': 'Portail Admin',
'Admin Profile': "Profil de l'administrateur",
'An email was sent with a link to reset your password':
@@ -55,6 +56,8 @@
'As per RFC section 3.6.1, Testing flag t=y means Verifiers MUST treat messages as unsigned (i.e. DKIM is not enabled), so this flag should not be enabled.':
"Conformément à la section 3.6.1 du RFC, l'indicateur de test t=y signifie que les vérificateurs DOIVENT traiter les messages comme non signés (c'est-à-dire que DKIM n'est pas activé), donc cet indicateur ne doit pas être activé.",
August: 'Août',
+ Authenticate: 'Authentifier',
+ 'Authentication QR Code': "Code QR d'authentification",
'B.1.1 SPF Records': 'B.1.1 Enregistrements SPF',
'B.1.3 DNS Lookup Limit': 'B.1.3 Limite de recherches DNS',
'B.2.1 DKIM Records': 'B.2.1 Enregistrements DKIM',
@@ -95,6 +98,7 @@
'Confirm removal of domain:': 'Confirmer la suppression du domaine :',
'Contact 3rd party': 'Contacter une tierce partie',
'Create Account': 'Créer un compte',
+ 'Create an Account': 'Créer un compte',
'Create an account by entering an email and password.':
'Créez un compte en entrant un courriel et un mot de passe.',
'Current Display Name:': "Nom de l'affichage actuel :",
@@ -111,6 +115,7 @@
'DKIM Flag t': 'DKIM Flag t',
'DKIM Results': 'Résultats DKIM',
'DKIM Selectors': 'Sélecteurs DKIM',
+ 'DKIM Status': 'Statut DKIM',
'DKIM TXT record invalid': 'Enregistrement DKIM TXT non valable',
'DKIM key does not use RSA': "La clé DKIM n'utilise pas le RSA",
'DKIM record missing but MX uses O365. Follow cloud-specific guidance':
@@ -130,7 +135,9 @@
],
'DMARC Messages': 'Messages de la DMARC',
'DMARC Not Implemented': "La DMARC n'est pas mise en œuvre",
- 'DMARC Report': 'Rapport de la DMARC',
+ 'DMARC Report': 'Rapport DMARC ',
+ 'DMARC Report for {domainSlug}': ['Rapport DMARC pour ', ['domainSlug']],
+ 'DMARC Status': 'Statut DMARC',
'DMARC fail': 'DMARC échoue',
'DMARC pass': 'Passe DMARC',
'DMARC-GC': 'DMARC-GC',
@@ -142,6 +149,8 @@
'Display name cannot be empty': "Le nom d'affichage ne peut pas être vide",
Disposition: 'Disposition',
Domain: 'Domaine',
+ 'Domain DMARC Report': 'Domain DMARC Report',
+ 'Domain Details': 'Détails du domaine',
'Domain List': 'Liste des domaines',
'Domain URL': 'URL du domaine',
'Domain URL:': 'URL du domaine:',
@@ -196,6 +205,7 @@
'Pour des conseils approfondis sur la mise en œuvre du CCCS :',
'For technical implementation guidance:':
'Pour des conseils de mise en œuvre technique :',
+ 'Forgot Password': 'Mot de passe oublié',
'Forgot your password?': 'Oublié votre mot de passe?',
'Full Fail %': 'Échec total %',
'Full Pass %': 'Passage complet %',
@@ -217,6 +227,7 @@
'HTTP Strict Transport Security (HSTS) non mis en œuvre',
'HTTP Strict Transport Security (HSTS) policy maximum age is shorter than one year':
"L'âge maximum de la politique de sécurité stricte des transports HTTP (HSTS) est inférieur à un an",
+ 'HTTPS Status': 'Statut HTTPS',
'HTTPS certificate chain is invalid':
"La chaîne de certificats HTTPS n'est pas valable",
'HTTPS certificate is expired': 'Le certificat HTTPS est expiré',
@@ -285,6 +296,7 @@
'L-30-D': 'L-30-D',
'Language:': 'La langue:',
'Last 30 Days': 'Les 30 derniers jours',
+ 'Last Scanned': 'Dernière numérisation',
'Last scanned:': 'Dernier scan:',
'Level of Enforcment:': "Niveau d'application:",
'Loading {children}...': ['Chargement ', ['children'], '...'],
@@ -439,6 +451,7 @@
'Remove Domain': 'Supprimer un domaine',
'Report an Issue': 'Signaler un problème',
'Request a domain to be scanned:': "Demander qu'un domaine soit scanné:",
+ 'Reset Password': 'Réinitialiser le mot de passe',
'Result:': 'Résultat',
'Results for scans of email technologies (DMARC, SPF, DKIM).':
'Résultats des analyses des technologies du courrier électronique (DMARC, SPF, DKIM).',
@@ -456,11 +469,13 @@
'SPF Failure Table': 'Tableau des échecs du SPF',
'SPF Failures by IP Address': 'Défaillances du SPF par adresse IP',
'SPF Results': 'Résultats du SPF',
+ 'SPF Status': 'Statut SPF',
'SPF implemented in incorrect subdomain':
'SPF implémenté dans un sous-domaine incorrect',
'SPF-GC': 'SPF-GC',
'SPF-bad-path': 'SPF-bad-path',
'SPF-missing': 'SPF-missing',
+ 'SSL Status': 'Statut SSL',
'SSL-3des': 'SSL-3des',
'SSL-GC': 'SSL-GC',
'SSL-acceptable-certificate': 'SSL-acceptable-certificate',
@@ -526,6 +541,7 @@
'Total Messages': 'Total des messages',
'Total users': 'total des utilisateurs',
'Track Digital Security': 'Track Digital Security',
+ Tracker: 'Suivi',
'Tracker Logo': 'Logo du Tracker',
'Two Factor Authentication': 'Authentification à deux facteurs',
USER: 'UTILISATEUR',
@@ -589,9 +605,9 @@
"We've sent an SMS to your new phone number with an authentication code to confirm this change.":
"Nous avons envoyé un SMS à votre nouveau numéro de téléphone avec un code d'authentification pour confirmer ce changement.",
"We've sent an SMS to your registered phone number with an authentication code to sign into Tracker.":
- "Nous avons envoyé un SMS à votre numéro de téléphone enregistré avec un code d'authentification pour vous connecter à Tracker.",
+ "Nous avons envoyé un SMS à votre numéro de téléphone enregistré avec un code d'authentification pour vous connecter à Suivi.",
"We've sent you an email with an authentication code to sign into Tracker.":
- "Nous vous avons envoyé un e-mail avec un code d'authentification pour vous connecter à Tracker.",
+ "Nous vous avons envoyé un e-mail avec un code d'authentification pour vous connecter à Suivi.",
'Web Configuration': 'Configuration Web',
'Web Scan Results': "Résultats de l'analyse du Web",
'Web encryption settings summary':
@@ -624,6 +640,7 @@
'Vous pouvez maintenant vous connecter avec votre nouveau mot de passe',
'Your 2FA app will then have a valid code that you can use when you sign in.':
"Votre application 2FA disposera alors d'un code valide que vous pourrez utiliser lorsque vous vous connecterez.",
+ 'Your Account': 'Votre compte',
'https://cyber.gc.ca/en/guidance/implementation-guidance-email-domain-protection#a322':
'https://cyber.gc.ca/fr/orientation/directives-de-mise-en-oeuvre-protection-du-domaine-de-courrier#a322',
'https://cyber.gc.ca/en/guidance/implementation-guidance-email-domain-protection#anna23':
@@ -675,5 +692,6 @@
['0'],
],
'{orgName}': [['orgName']],
+ '{title} - Tracker': [['title'], ' - Suivi'],
},
}
diff --git a/frontend/src/locales/fr.po b/frontend/src/locales/fr.po
index 0f0347ec73..14321f0f32 100644
--- a/frontend/src/locales/fr.po
+++ b/frontend/src/locales/fr.po
@@ -90,7 +90,7 @@ msgstr "La liste de chiffrement acceptée contient le chiffrement 3DES à blocs
msgid "Accepted cipher list contains RC4 stream cipher, as prohibited by BOD 18-01"
msgstr "La liste de chiffrement acceptée contient le chiffrement de flux RC4, tel qu'interdit par le BOD 18-01"
-#: src/App.js:83
+#: src/App.js:84
#: src/FloatingMenu.js:129
#: src/UserPage.js:35
msgid "Account Settings"
@@ -112,11 +112,15 @@ msgstr "Ajouter un domaine"
msgid "Add a domain"
msgstr "Ajouter un domaine"
+#: src/App.js:166
+msgid "Admin"
+msgstr "Administrateur"
+
#: src/FloatingMenu.js:131
msgid "Admin Portal"
msgstr "Portail Admin"
-#: src/App.js:89
+#: src/App.js:90
msgid "Admin Profile"
msgstr "Profil de l'administrateur"
@@ -182,6 +186,14 @@ msgstr "Conformément à la section 3.6.1 du RFC, l'indicateur de test t=y signi
msgid "August"
msgstr "Août"
+#: src/App.js:139
+msgid "Authenticate"
+msgstr "Authentifier"
+
+#: src/App.js:202
+msgid "Authentication QR Code"
+msgstr "Code QR d'authentification"
+
#: src/guidanceTagConstants.js:37
msgid "B.1.1 SPF Records"
msgstr "B.1.1 Enregistrements SPF"
@@ -316,6 +328,10 @@ msgstr "Contacter une tierce partie"
msgid "Create Account"
msgstr "Créer un compte"
+#: src/App.js:129
+msgid "Create an Account"
+msgstr "Créer un compte"
+
#: src/CreateUserPage.js:142
msgid "Create an account by entering an email and password."
msgstr "Créez un compte en entrant un courriel et un mot de passe."
@@ -340,7 +356,7 @@ msgstr "Mot de passe actuel :"
msgid "Current Phone Number:"
msgstr "Numéro de téléphone actuel:"
-#: src/DmarcReportPage.js:305
+#: src/DmarcReportPage.js:308
msgid "DKIM Aligned"
msgstr "DKIM Aligné"
@@ -348,16 +364,16 @@ msgstr "DKIM Aligné"
msgid "DKIM CNAMEs do not exist, but MX points to *.onmicrosoft.com and SPF record includes O365."
msgstr "Les CNAME DKIM n'existent pas, mais MX pointe vers *.onmicrosoft.com et l'enregistrement SPF inclut O365."
-#: src/DmarcReportPage.js:272
+#: src/DmarcReportPage.js:275
msgid "DKIM Domains"
msgstr "Domaines DKIM"
-#: src/DmarcReportPage.js:327
+#: src/DmarcReportPage.js:330
msgid "DKIM Failure Table"
msgstr "Tableau des échecs DKIM"
-#: src/DmarcReportPage.js:338
-#: src/DmarcReportPage.js:370
+#: src/DmarcReportPage.js:341
+#: src/DmarcReportPage.js:373
msgid "DKIM Failures by IP Address"
msgstr "Défaillances DKIM par adresse IP"
@@ -365,11 +381,11 @@ msgstr "Défaillances DKIM par adresse IP"
msgid "DKIM Flag t"
msgstr "DKIM Flag t"
-#: src/DmarcReportPage.js:309
+#: src/DmarcReportPage.js:312
msgid "DKIM Results"
msgstr "Résultats DKIM"
-#: src/DmarcReportPage.js:276
+#: src/DmarcReportPage.js:279
msgid "DKIM Selectors"
msgstr "Sélecteurs DKIM"
@@ -413,12 +429,12 @@ msgstr "DKIM-missing-mx-O365"
msgid "DKIM-value-invalid"
msgstr "DKIM-value-invalid"
-#: src/DmarcReportPage.js:530
+#: src/DmarcReportPage.js:533
msgid "DMARC Failure Table"
msgstr "Tableau des échecs de la DMARC"
-#: src/DmarcReportPage.js:541
-#: src/DmarcReportPage.js:570
+#: src/DmarcReportPage.js:544
+#: src/DmarcReportPage.js:573
msgid "DMARC Failures by IP Address"
msgstr "Défaillances du DMARC par adresse IP"
@@ -426,7 +442,7 @@ msgstr "Défaillances du DMARC par adresse IP"
msgid "DMARC Implementation Phase: {0}"
msgstr "Phase de mise en œuvre de DMARC : {0}"
-#: src/ScanCard.js:48
+#: src/ScanCard.js:61
#~ msgid "DMARC Implementation Phase: {status}"
#~ msgstr "Phase de mise en œuvre de la DMARC: {status}"
@@ -439,11 +455,16 @@ msgstr "Messages de la DMARC"
#~ msgid "DMARC Not Implemented"
#~ msgstr "La DMARC n'est pas mise en œuvre"
-#: src/App.js:77
-#: src/DmarcGuidancePage.js:60
+#: src/App.js:78
+#: src/App.js:190
+#: src/DmarcGuidancePage.js:63
#: src/DomainCard.js:167
msgid "DMARC Report"
-msgstr "Rapport de la DMARC"
+msgstr "Rapport DMARC "
+
+#: src/DmarcReportPage.js:39
+msgid "DMARC Report for {domainSlug}"
+msgstr "Rapport DMARC pour {domainSlug}"
#: src/DomainsPage.js:136
msgid "DMARC Status"
@@ -465,7 +486,7 @@ msgstr "DMARC-GC"
msgid "DMARC-missing"
msgstr "DMARC-missing"
-#: src/DmarcReportPage.js:285
+#: src/DmarcReportPage.js:288
msgid "DNS Host"
msgstr "Hôte DNS"
@@ -486,7 +507,7 @@ msgstr "Nom d'affichage :"
msgid "Display name cannot be empty"
msgstr "Le nom d'affichage ne peut pas être vide"
-#: src/DmarcReportPage.js:313
+#: src/DmarcReportPage.js:316
msgid "Disposition"
msgstr "Disposition"
@@ -495,6 +516,14 @@ msgstr "Disposition"
msgid "Domain"
msgstr "Domaine"
+#: src/App.js:209
+#~ msgid "Domain DMARC Report"
+#~ msgstr ""
+
+#: src/App.js:165
+#~ msgid "Domain Details"
+#~ msgstr "Détails du domaine"
+
#: src/AdminDomains.js:248
#: src/AdminDomains.js:256
msgid "Domain List"
@@ -557,10 +586,11 @@ msgstr "Le domaine utilise un service DMARC potentiellement externalisé"
msgid "Domain:"
msgstr "Domaine:"
-#: src/App.js:71
+#: src/App.js:72
+#: src/App.js:172
#: src/DomainsPage.js:64
#: src/DomainsPage.js:85
-#: src/OrganizationDetails.js:88
+#: src/OrganizationDetails.js:92
#: src/OrganizationDomains.js:39
msgid "Domains"
msgstr "Domaines"
@@ -645,11 +675,11 @@ msgstr "Entrez le code à deux facteurs"
msgid "Enter your user account's verified email address and we will send you a password reset link."
msgstr "Saisissez l'adresse électronique vérifiée de votre compte d'utilisateur et nous vous enverrons un lien pour réinitialiser votre mot de passe."
-#: src/DmarcReportPage.js:267
+#: src/DmarcReportPage.js:270
msgid "Envelope From"
msgstr "Enveloppe De"
-#: src/DmarcReportPage.js:224
+#: src/DmarcReportPage.js:227
#: src/fixtures/summaryListData.js:171
msgid "Fail"
msgstr "Échec"
@@ -692,6 +722,10 @@ msgstr "Pour des conseils approfondis sur la mise en œuvre du CCCS :"
msgid "For technical implementation guidance:"
msgstr "Pour des conseils de mise en œuvre technique :"
+#: src/App.js:145
+msgid "Forgot Password"
+msgstr "Mot de passe oublié"
+
#: src/SignInPage.js:142
msgid "Forgot your password?"
msgstr "Oublié votre mot de passe?"
@@ -704,12 +738,12 @@ msgstr "Échec total %"
msgid "Full Pass %"
msgstr "Passage complet %"
-#: src/DmarcReportPage.js:397
+#: src/DmarcReportPage.js:400
msgid "Fully Aligned Table"
msgstr "Tableau entièrement aligné"
-#: src/DmarcReportPage.js:408
-#: src/DmarcReportPage.js:435
+#: src/DmarcReportPage.js:411
+#: src/DmarcReportPage.js:438
msgid "Fully Aligned by IP Address"
msgstr "Entièrement aligné par adresse IP"
@@ -726,12 +760,12 @@ msgstr "Aller à la page"
msgid "Government of Canada domains subject to TBS guidelines"
msgstr "Les domaines du gouvernement du Canada sont soumis aux directives du SCT"
-#: src/DmarcReportPage.js:295
-#: src/DmarcReportPage.js:616
+#: src/DmarcReportPage.js:298
+#: src/DmarcReportPage.js:619
msgid "Guidance"
msgstr "Conseils"
-#: src/DmarcGuidancePage.js:33
+#: src/DmarcGuidancePage.js:36
msgid "Guidance Tags"
msgstr "Étiquettes d'orientation"
@@ -832,11 +866,12 @@ msgstr ""
msgid "HTTPS-weakly-enforced"
msgstr ""
-#: src/DmarcReportPage.js:291
+#: src/DmarcReportPage.js:294
msgid "Header From"
msgstr "En-tête De"
-#: src/App.js:60
+#: src/App.js:61
+#: src/App.js:123
#: src/FloatingMenu.js:127
msgid "Home"
msgstr "Accueil"
@@ -993,7 +1028,7 @@ msgid "Language:"
msgstr "La langue:"
#: src/DmarcByDomainPage.js:187
-#: src/DmarcReportPage.js:138
+#: src/DmarcReportPage.js:141
msgid "Last 30 Days"
msgstr "Les 30 derniers jours"
@@ -1171,11 +1206,11 @@ msgstr "Pas d'utilisateurs"
msgid "No current phone number"
msgstr "Pas de numéro de téléphone actuel"
-#: src/DmarcReportPage.js:385
+#: src/DmarcReportPage.js:388
msgid "No data for the DKIM Failures by IP Address table"
msgstr "Aucune donnée pour le tableau des défaillances DKIM par adresse IP"
-#: src/DmarcReportPage.js:585
+#: src/DmarcReportPage.js:588
msgid "No data for the DMARC Failures by IP Address table"
msgstr "Pas de données pour le tableau des défaillances DMARC par adresse IP"
@@ -1183,15 +1218,15 @@ msgstr "Pas de données pour le tableau des défaillances DMARC par adresse IP"
msgid "No data for the DMARC summary table"
msgstr "Pas de données pour le tableau récapitulatif de la DMARC"
-#: src/DmarcReportPage.js:256
+#: src/DmarcReportPage.js:259
msgid "No data for the DMARC yearly report graph"
msgstr "Pas de données pour le graphique du rapport annuel de la DMARC"
-#: src/DmarcReportPage.js:450
+#: src/DmarcReportPage.js:453
msgid "No data for the Fully Aligned by IP Address table"
msgstr "Pas de données pour le tableau Entièrement aligné par adresse IP"
-#: src/DmarcReportPage.js:518
+#: src/DmarcReportPage.js:521
msgid "No data for the SPF Failures by IP Address table"
msgstr "Aucune donnée pour le tableau des défaillances du SPF par adresse IP"
@@ -1236,7 +1271,7 @@ msgstr "Octobre"
msgid "One or more ciphers in use are not compliant with guidelines"
msgstr "Un ou plusieurs chiffres utilisés ne sont pas conformes aux lignes directrices"
-#: src/OrganizationDetails.js:60
+#: src/OrganizationDetails.js:64
msgid "Organization Details"
msgstr "Détails de l'organisation"
@@ -1244,7 +1279,8 @@ msgstr "Détails de l'organisation"
msgid "Organization:"
msgstr "Organisation:"
-#: src/App.js:65
+#: src/App.js:66
+#: src/App.js:154
#: src/Organizations.js:62
#: src/Organizations.js:97
msgid "Organizations"
@@ -1347,17 +1383,17 @@ msgstr "Taille de la page :"
msgid "Page {0} of {1}"
msgstr "Page {0} de {1}"
-#: src/DmarcReportPage.js:206
+#: src/DmarcReportPage.js:209
#: src/fixtures/summaryListData.js:155
msgid "Pass"
msgstr "Passez"
-#: src/DmarcReportPage.js:218
+#: src/DmarcReportPage.js:221
#: src/fixtures/summaryListData.js:165
msgid "Pass Only DKIM"
msgstr "Passez seulement DKIM"
-#: src/DmarcReportPage.js:212
+#: src/DmarcReportPage.js:215
#: src/fixtures/summaryListData.js:161
msgid "Pass Only SPF"
msgstr "Passez seulement SPF"
@@ -1454,7 +1490,7 @@ msgstr "La politique ne s'applique à aucune partie du flux de courrier - config
msgid "Policy applies to percentage of mailflow"
msgstr "La politique s'applique au pourcentage du flux de courrier"
-#: src/App.js:52
+#: src/App.js:53
msgid "Pre-Alpha"
msgstr "préalpha"
@@ -1466,7 +1502,7 @@ msgstr "préalpha"
msgid "Previous"
msgstr "Précédent"
-#: src/App.js:203
+#: src/App.js:221
#: src/FloatingMenu.js:175
msgid "Privacy"
msgstr "Confidentialité"
@@ -1543,7 +1579,7 @@ msgstr ""
msgid "Remove Domain"
msgstr "Supprimer un domaine"
-#: src/App.js:221
+#: src/App.js:239
msgid "Report an Issue"
msgstr "Signaler un problème"
@@ -1551,6 +1587,10 @@ msgstr "Signaler un problème"
msgid "Request a domain to be scanned:"
msgstr "Demander qu'un domaine soit scanné:"
+#: src/App.js:151
+msgid "Reset Password"
+msgstr "Réinitialiser le mot de passe"
+
#: src/GuidanceTagDetails.js:76
#: src/GuidanceTagList.js:77
msgid "Result:"
@@ -1594,24 +1634,24 @@ msgstr ""
msgid "SP-reject"
msgstr ""
-#: src/DmarcReportPage.js:297
+#: src/DmarcReportPage.js:300
msgid "SPF Aligned"
msgstr "Alignement du SPF"
-#: src/DmarcReportPage.js:287
+#: src/DmarcReportPage.js:290
msgid "SPF Domains"
msgstr "Domaine SPF"
-#: src/DmarcReportPage.js:462
+#: src/DmarcReportPage.js:465
msgid "SPF Failure Table"
msgstr "Tableau des échecs du SPF"
-#: src/DmarcReportPage.js:473
-#: src/DmarcReportPage.js:503
+#: src/DmarcReportPage.js:476
+#: src/DmarcReportPage.js:506
msgid "SPF Failures by IP Address"
msgstr "Défaillances du SPF par adresse IP"
-#: src/DmarcReportPage.js:301
+#: src/DmarcReportPage.js:304
msgid "SPF Results"
msgstr "Résultats du SPF"
@@ -1703,7 +1743,7 @@ msgstr "Recherchez"
msgid "Search for a domain"
msgstr "Rechercher un domaine"
-#: src/UserList.js:231
+#: src/UserList.js:253
#~ msgid "Search for a user"
#~ msgstr "Rechercher un utilisateur"
@@ -1748,11 +1788,12 @@ msgid "Show {pageSize}"
msgstr "Voir {pageSize}"
#: src/DmarcByDomainPage.js:231
-#: src/DmarcReportPage.js:625
+#: src/DmarcReportPage.js:628
msgid "Showing data for period:"
msgstr "Affichage des données pour la période :"
-#: src/App.js:113
+#: src/App.js:114
+#: src/App.js:134
#: src/FloatingMenu.js:158
#: src/SignInPage.js:153
msgid "Sign In"
@@ -1763,12 +1804,12 @@ msgstr "Se connecter"
msgid "Sign In."
msgstr "Se connecter."
-#: src/App.js:109
+#: src/App.js:110
#: src/FloatingMenu.js:144
msgid "Sign Out"
msgstr "Déconnexion"
-#: src/App.js:99
+#: src/App.js:100
#: src/FloatingMenu.js:148
msgid "Sign Out."
msgstr "Déconnexion."
@@ -1777,7 +1818,7 @@ msgstr "Déconnexion."
msgid "Sign in with your username and password."
msgstr "Connectez-vous avec votre nom d'utilisateur et votre mot de passe."
-#: src/App.js:50
+#: src/App.js:51
msgid "Skip to main content"
msgstr "Passer au contenu principal"
@@ -1786,7 +1827,7 @@ msgstr "Passer au contenu principal"
msgid "Sort by:"
msgstr "Trier par:"
-#: src/DmarcReportPage.js:262
+#: src/DmarcReportPage.js:265
msgid "Source IP Address"
msgstr "Adresse IP source"
@@ -1795,7 +1836,7 @@ msgstr "Adresse IP source"
msgid "Submit"
msgstr "Soumettre"
-#: src/OrganizationDetails.js:85
+#: src/OrganizationDetails.js:89
msgid "Summary"
msgstr "Résumé"
@@ -1819,7 +1860,7 @@ msgstr ""
msgid "TXT-DMARC-missing"
msgstr ""
-#: src/App.js:214
+#: src/App.js:232
#: src/FloatingMenu.js:185
msgid "Terms & conditions"
msgstr "Avis"
@@ -1842,18 +1883,18 @@ msgstr "Ce composant n'est pas disponible actuellement. Essayez de recharger la
#: src/GuidanceTagList.js:88
msgid "This could be due to improper configuration, or could be the result of a scan error"
-msgstr ""
+msgstr "Cela peut être dû à une mauvaise configuration ou à une erreur d'analyse"
#: src/GuidanceTagList.js:89
#~ msgid "This could be due to improper configurations, or could be the result of a scan error"
#~ msgstr "Cela peut être dû à une mauvaise configuration ou à une erreur d'analyse"
-#: src/App.js:53
+#: src/App.js:54
msgid "This service is being developed in the open"
msgstr "Ce service est développé de façon ouverte"
#: src/DmarcByDomainPage.js:88
-#: src/DmarcReportPage.js:280
+#: src/DmarcReportPage.js:283
msgid "Total Messages"
msgstr "Total des messages"
@@ -1865,6 +1906,10 @@ msgstr "total des utilisateurs"
msgid "Track Digital Security"
msgstr "Suivre la sécurité numérique"
+#: src/Page.js:8
+#~ msgid "Tracker"
+#~ msgstr "Suivi"
+
#: src/TopBanner.js:36
msgid "Tracker Logo"
msgstr "Logo du Tracker"
@@ -1988,7 +2033,7 @@ msgstr "Liste des utilisateurs"
msgid "User invited"
msgstr "Utilisateur invité"
-#: src/OrganizationDetails.js:91
+#: src/OrganizationDetails.js:95
msgid "Users"
msgstr "Utilisateurs"
@@ -2038,11 +2083,11 @@ msgstr "Nous avons envoyé un SMS à votre nouveau numéro de téléphone avec u
#: src/AuthenticateField.js:34
msgid "We've sent an SMS to your registered phone number with an authentication code to sign into Tracker."
-msgstr "Nous avons envoyé un SMS à votre numéro de téléphone enregistré avec un code d'authentification pour vous connecter à Tracker."
+msgstr "Nous avons envoyé un SMS à votre numéro de téléphone enregistré avec un code d'authentification pour vous connecter à Suivi."
#: src/AuthenticateField.js:29
msgid "We've sent you an email with an authentication code to sign into Tracker."
-msgstr "Nous vous avons envoyé un e-mail avec un code d'authentification pour vous connecter à Tracker."
+msgstr "Nous vous avons envoyé un e-mail avec un code d'authentification pour vous connecter à Suivi."
#: src/OrganizationCard.js:107
#: src/SummaryGroup.js:21
@@ -2070,7 +2115,7 @@ msgstr "Veuillez choisir votre langue préférée"
msgid "Welcome, you are successfully signed in!"
msgstr "Bienvenue, vous êtes connecté avec succès!"
-#: src/DmarcReportPage.js:192
+#: src/DmarcReportPage.js:195
msgid "Yearly DMARC Graph"
msgstr "Graphique annuel du DMARC"
@@ -2082,7 +2127,7 @@ msgstr "Vous n'avez pas d'autorisations administratives dans une organisation"
msgid "You have not enabled Two Factor Authentication. To maximize your account's security, <0>please enable 2FA0>."
msgstr "Vous n'avez pas activé l'authentification à deux facteurs. Pour maximiser la sécurité de votre compte, <0>veuillez activer l'authentification à deux facteurs0>."
-#: src/App.js:100
+#: src/App.js:101
#: src/FloatingMenu.js:149
msgid "You have successfully been signed out."
msgstr "Vous avez été déconnecté avec succès."
@@ -2119,6 +2164,10 @@ msgstr "Vous pouvez maintenant vous connecter avec votre nouveau mot de passe"
msgid "Your 2FA app will then have a valid code that you can use when you sign in."
msgstr "Votre application 2FA disposera alors d'un code valide que vous pourrez utiliser lorsque vous vous connecterez."
+#: src/App.js:196
+msgid "Your Account"
+msgstr "Votre compte"
+
#: src/guidanceTagConstants.js:6
msgid "https://cyber.gc.ca/en/guidance/implementation-guidance-email-domain-protection#a322"
msgstr "https://cyber.gc.ca/fr/orientation/directives-de-mise-en-oeuvre-protection-du-domaine-de-courrier#a322"
@@ -2215,6 +2264,10 @@ msgstr "{count} enregistrements..."
msgid "{editingDomainUrl} from {orgSlug} successfully updated to {0}"
msgstr "{editingDomainUrl} de {orgSlug} mis à jour avec succès à {0}"
-#: src/OrganizationDetails.js:76
+#: src/OrganizationDetails.js:80
msgid "{orgName}"
msgstr ""
+
+#: src/useDocumentTitle.js:6
+msgid "{title} - Tracker"
+msgstr "{title} - Suivi"
diff --git a/frontend/src/manifest.json b/frontend/src/manifest.json
index 17cde2c461..f28bd41fc6 100644
--- a/frontend/src/manifest.json
+++ b/frontend/src/manifest.json
@@ -2,24 +2,19 @@
"short_name": "Tracker",
"name": "Tracking GoC Web Security",
"icons": [
- {
- "src": "/favicon.ico",
- "sizes": "32x32 16x16",
- "type": "image/x-icon"
- },
- {
- "src": "/images/logo192.png",
- "type": "image/png",
- "sizes": "192x192"
- },
- {
- "src": "/images/logo512.png",
- "type": "image/png",
- "sizes": "512x512"
- }
+ {
+ "src": "/images/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/images/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
],
"start_url": ".",
"display": "standalone",
- "theme_color": "#000000",
- "background_color": "#ffffff"
+ "theme_color": "#ff0000",
+ "background_color": "#ff0000"
}
diff --git a/frontend/src/useDocumentTitle.js b/frontend/src/useDocumentTitle.js
new file mode 100644
index 0000000000..a4afc47cfe
--- /dev/null
+++ b/frontend/src/useDocumentTitle.js
@@ -0,0 +1,8 @@
+import { useEffect } from 'react'
+import { t } from '@lingui/macro'
+
+export const useDocumentTitle = (title, setTitle = true) => {
+ useEffect(() => {
+ if (setTitle) document.title = t`${title} - Tracker` || 'Tracker'
+ })
+}