From 6ed2983665f24086f2675fee9ef6e7be58887d45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Gangloff?= Date: Fri, 23 Aug 2024 21:19:34 +0200 Subject: [PATCH] feat: add DomainLifecycleSteps --- .../search/DomainLifecycleSteps.tsx | 55 + assets/components/search/DomainResult.tsx | 20 +- assets/components/search/DomainSearchBar.tsx | 3 +- assets/components/search/EntitiesList.tsx | 2 +- assets/components/search/EventTimeline.tsx | 78 +- .../tracking/watchlist/WatchlistCard.tsx | 2 +- .../tracking/watchlist/WatchlistForm.tsx | 2 +- .../watchlist/diagram/watchlistToEdges.tsx | 2 +- assets/pages/search/DomainSearchPage.tsx | 24 +- .../utils/functions/eppStatusCodeToColor.tsx | 5 + .../functions}/rdapTranslation.ts | 0 assets/utils/functions/rolesToColor.tsx | 4 +- public/manifest.json | 1 - src/Controller/WatchListController.php | 5 +- .../ProcessDomainTriggerHandler.php | 3 +- translations/translations.pot | 1089 +++++++++-------- 16 files changed, 689 insertions(+), 606 deletions(-) create mode 100644 assets/components/search/DomainLifecycleSteps.tsx create mode 100644 assets/utils/functions/eppStatusCodeToColor.tsx rename assets/{components/search => utils/functions}/rdapTranslation.ts (100%) diff --git a/assets/components/search/DomainLifecycleSteps.tsx b/assets/components/search/DomainLifecycleSteps.tsx new file mode 100644 index 0000000..180f22c --- /dev/null +++ b/assets/components/search/DomainLifecycleSteps.tsx @@ -0,0 +1,55 @@ +import {StepProps, Steps, Tooltip} from "antd"; +import React from "react"; +import {t} from "ttag"; +import { + CheckOutlined, + DeleteOutlined, + ExclamationCircleOutlined, + ReloadOutlined, + SignatureOutlined +} from "@ant-design/icons"; +import {rdapEventDetailTranslation, rdapStatusCodeDetailTranslation} from "../../utils/functions/rdapTranslation"; + +export function DomainLifecycleSteps({status}: { status: string[] }) { + + const rdapEventDetailTranslated = rdapEventDetailTranslation() + const rdapStatusCodeDetailTranslated = rdapStatusCodeDetailTranslation() + + + const steps: StepProps[] = [ + { + title: {t`Registration`}, + icon: + }, + { + title: {t`Active`}, + icon: + }, + { + title: {t`Renew Period`}, + icon: + }, + { + title: {t`Redemption Period`}, + icon: + }, + { + title: {t`Pending Delete`}, + icon: + } + ] + + let currentStep = 1 + + if (status.includes('redemption period')) { + currentStep = 4 + } else if (status.includes('pending delete')) { + currentStep = 5 + } + + return +} \ No newline at end of file diff --git a/assets/components/search/DomainResult.tsx b/assets/components/search/DomainResult.tsx index 3ef7d55..ed4d1db 100644 --- a/assets/components/search/DomainResult.tsx +++ b/assets/components/search/DomainResult.tsx @@ -5,15 +5,18 @@ import {EntitiesList} from "./EntitiesList"; import {DomainDiagram} from "./DomainDiagram"; import React from "react"; import {Domain} from "../../utils/api"; -import {rdapStatusCodeDetailTranslation} from "./rdapTranslation"; +import {rdapStatusCodeDetailTranslation} from "../../utils/functions/rdapTranslation"; import {regionNames} from "../../i18n"; import {getCountryCode} from "../../utils/functions/getCountryCode"; +import {eppStatusCodeToColor} from "../../utils/functions/eppStatusCodeToColor"; +import {DomainLifecycleSteps} from "./DomainLifecycleSteps"; export function DomainResult({domain}: { domain: Domain }) { const rdapStatusCodeDetailTranslated = rdapStatusCodeDetailTranslation() - const {tld} = domain + const {tld, events} = domain + const domainEvents = events.sort((e1, e2) => new Date(e2.date).getTime() - new Date(e1.date).getTime()) return @@ -34,6 +37,9 @@ export function DomainResult({domain}: { domain: Domain }) { {domain.ldhName}{domain.handle && {domain.handle}} } size="small"> + { + domain.events.length > 0 && + } {domain.status.length > 0 && <> {t`EPP Status Codes`} @@ -43,15 +49,19 @@ export function DomainResult({domain}: { domain: Domain }) { - {s} + {s} ) } } - {t`Timeline`} - + { + domain.events.length > 0 && <> + {t`Timeline`} + + + } { domain.entities.length > 0 && <> diff --git a/assets/components/search/DomainSearchBar.tsx b/assets/components/search/DomainSearchBar.tsx index e85a9b0..f98c124 100644 --- a/assets/components/search/DomainSearchBar.tsx +++ b/assets/components/search/DomainSearchBar.tsx @@ -10,10 +10,9 @@ export type FieldType = { export function DomainSearchBar({onFinish}: { onFinish: (values: FieldType) => void }) { return
name="ldhName" diff --git a/assets/components/search/EntitiesList.tsx b/assets/components/search/EntitiesList.tsx index 599e7bb..7a12d6c 100644 --- a/assets/components/search/EntitiesList.tsx +++ b/assets/components/search/EntitiesList.tsx @@ -1,7 +1,7 @@ import {List, Tag, Tooltip} from "antd"; import React from "react"; import {Domain} from "../../utils/api"; -import {rdapRoleDetailTranslation, rdapRoleTranslation} from "./rdapTranslation"; +import {rdapRoleDetailTranslation, rdapRoleTranslation} from "../../utils/functions/rdapTranslation"; import {roleToAvatar} from "../../utils/functions/roleToAvatar"; import {rolesToColor} from "../../utils/functions/rolesToColor"; import {entityToName} from "../../utils/functions/entityToName"; diff --git a/assets/components/search/EventTimeline.tsx b/assets/components/search/EventTimeline.tsx index c5a4a16..86f20f0 100644 --- a/assets/components/search/EventTimeline.tsx +++ b/assets/components/search/EventTimeline.tsx @@ -1,53 +1,53 @@ -import {Timeline, Tooltip, Typography} from "antd"; +import {Progress, Timeline, Tooltip, Typography} from "antd"; import React from "react"; -import {Domain} from "../../utils/api"; +import {Event} from "../../utils/api"; import useBreakpoint from "../../hooks/useBreakpoint"; -import {rdapEventDetailTranslation, rdapEventNameTranslation} from "./rdapTranslation"; +import {rdapEventDetailTranslation, rdapEventNameTranslation} from "../../utils/functions/rdapTranslation"; import {actionToColor} from "../../utils/functions/actionToColor"; import {actionToIcon} from "../../utils/functions/actionToIcon"; -export function EventTimeline({domain}: { domain: Domain }) { +export function EventTimeline({events}: { events: Event[] }) { const sm = useBreakpoint('sm') const locale = navigator.language.split('-')[0] const rdapEventNameTranslated = rdapEventNameTranslation() const rdapEventDetailTranslated = rdapEventDetailTranslation() - const domainEvents = domain.events.sort((e1, e2) => new Date(e2.date).getTime() - new Date(e1.date).getTime()) - - return { - const sameEvents = domainEvents.filter(se => se.action === e.action) - const isRelevant = !(sameEvents.length > 1 && sameEvents.indexOf(e) !== 0) - - const eventName = - {e.action in rdapEventNameTranslated ? rdapEventNameTranslated[e.action as keyof typeof rdapEventNameTranslated] : e.action} - - - const dateStr = {new Date(e.date).toLocaleString(locale)} - - - const eventDetail = e.action in rdapEventDetailTranslated ? rdapEventDetailTranslated[e.action as keyof typeof rdapEventDetailTranslated] : undefined - - const text = sm ? { - children: - {eventName} {dateStr} - - } : { - label: dateStr, - children: {eventName}, - } - - return { - color: isRelevant ? actionToColor(e.action) : 'grey', - dot: actionToIcon(e.action), - pending: new Date(e.date).getTime() > new Date().getTime(), - ...text + return <> + { + const sameEvents = events.filter(se => se.action === e.action) + const isRelevant = !(sameEvents.length > 1 && sameEvents.indexOf(e) !== 0) + + const eventName = + {e.action in rdapEventNameTranslated ? rdapEventNameTranslated[e.action as keyof typeof rdapEventNameTranslated] : e.action} + + + const dateStr = {new Date(e.date).toLocaleString(locale)} + + + const eventDetail = e.action in rdapEventDetailTranslated ? rdapEventDetailTranslated[e.action as keyof typeof rdapEventDetailTranslated] : undefined + + const text = sm ? { + children: + {eventName} {dateStr} + + } : { + label: dateStr, + children: {eventName}, + } + + return { + color: isRelevant ? actionToColor(e.action) : 'grey', + dot: actionToIcon(e.action), + pending: new Date(e.date).getTime() > new Date().getTime(), + ...text + } } + ) } - ) - } - /> + /> + } \ No newline at end of file diff --git a/assets/components/tracking/watchlist/WatchlistCard.tsx b/assets/components/tracking/watchlist/WatchlistCard.tsx index 334fe28..a93b9e5 100644 --- a/assets/components/tracking/watchlist/WatchlistCard.tsx +++ b/assets/components/tracking/watchlist/WatchlistCard.tsx @@ -10,7 +10,7 @@ import {Watchlist} from "../../../pages/tracking/WatchlistPage"; import {Connector} from "../../../utils/api/connectors"; import useBreakpoint from "../../../hooks/useBreakpoint"; import {CalendarWatchlistButton} from "./CalendarWatchlistButton"; -import {rdapEventDetailTranslation, rdapEventNameTranslation} from "../../search/rdapTranslation"; +import {rdapEventDetailTranslation, rdapEventNameTranslation} from "../../../utils/functions/rdapTranslation"; import {actionToColor} from "../../../utils/functions/actionToColor"; diff --git a/assets/components/tracking/watchlist/WatchlistForm.tsx b/assets/components/tracking/watchlist/WatchlistForm.tsx index 02a22e7..ac9cf56 100644 --- a/assets/components/tracking/watchlist/WatchlistForm.tsx +++ b/assets/components/tracking/watchlist/WatchlistForm.tsx @@ -3,7 +3,7 @@ import {t} from "ttag"; import {ApiOutlined, MinusCircleOutlined, PlusOutlined} from "@ant-design/icons"; import React from "react"; import {Connector} from "../../../utils/api/connectors"; -import {rdapEventDetailTranslation, rdapEventNameTranslation} from "../../search/rdapTranslation"; +import {rdapEventDetailTranslation, rdapEventNameTranslation} from "../../../utils/functions/rdapTranslation"; import {actionToColor} from "../../../utils/functions/actionToColor"; import {actionToIcon} from "../../../utils/functions/actionToIcon"; diff --git a/assets/components/tracking/watchlist/diagram/watchlistToEdges.tsx b/assets/components/tracking/watchlist/diagram/watchlistToEdges.tsx index 8168d3e..572cd94 100644 --- a/assets/components/tracking/watchlist/diagram/watchlistToEdges.tsx +++ b/assets/components/tracking/watchlist/diagram/watchlistToEdges.tsx @@ -1,5 +1,5 @@ import {Domain, Watchlist} from "../../../../utils/api"; -import {rdapRoleTranslation} from "../../../search/rdapTranslation"; +import {rdapRoleTranslation} from "../../../../utils/functions/rdapTranslation"; import {t} from "ttag"; import {rolesToColor} from "../../../../utils/functions/rolesToColor"; diff --git a/assets/pages/search/DomainSearchPage.tsx b/assets/pages/search/DomainSearchPage.tsx index 9049b34..f5be277 100644 --- a/assets/pages/search/DomainSearchPage.tsx +++ b/assets/pages/search/DomainSearchPage.tsx @@ -1,5 +1,5 @@ import React, {useState} from "react"; -import {Card, Empty, Flex, FormProps, message, Skeleton} from "antd"; +import {Empty, Flex, FormProps, message, Skeleton} from "antd"; import {Domain, getDomain} from "../../utils/api"; import {AxiosError} from "axios" import {t} from 'ttag' @@ -23,18 +23,16 @@ export default function DomainSearchPage() { } return - - {contextHolder} - + {contextHolder} + - - { - domain && - (!domain.deleted ? - : ) - } - - + + { + domain && + (!domain.deleted ? + : ) + } + } \ No newline at end of file diff --git a/assets/utils/functions/eppStatusCodeToColor.tsx b/assets/utils/functions/eppStatusCodeToColor.tsx new file mode 100644 index 0000000..cb5c897 --- /dev/null +++ b/assets/utils/functions/eppStatusCodeToColor.tsx @@ -0,0 +1,5 @@ +export const eppStatusCodeToColor = (s: string) => + ['active', 'ok'].includes(s) ? 'green' : + s.startsWith('client') ? 'purple' : + s.startsWith('server') ? 'geekblue' : + s.includes('prohibited') ? 'red' : 'blue' \ No newline at end of file diff --git a/assets/components/search/rdapTranslation.ts b/assets/utils/functions/rdapTranslation.ts similarity index 100% rename from assets/components/search/rdapTranslation.ts rename to assets/utils/functions/rdapTranslation.ts diff --git a/assets/utils/functions/rolesToColor.tsx b/assets/utils/functions/rolesToColor.tsx index f4d40f0..fbfb73e 100644 --- a/assets/utils/functions/rolesToColor.tsx +++ b/assets/utils/functions/rolesToColor.tsx @@ -1,6 +1,6 @@ export const rolesToColor = (roles: string[]) => roles.includes('registrant') ? 'green' : - roles.includes('administrative') ? 'blue' : - roles.includes('technical') ? 'orange' : + roles.includes('technical') ? 'orange' : + roles.includes('administrative') ? 'blue' : roles.includes('registrar') ? 'purple' : roles.includes('sponsor') ? 'magenta' : roles.includes('billing') ? 'cyan' : 'default' \ No newline at end of file diff --git a/public/manifest.json b/public/manifest.json index 57bbd98..fb215e3 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -10,7 +10,6 @@ ], "scope": "/", "start_url": "/", - "orientation": "landscape", "display": "standalone", "background_color": "#fff", "description": "A standalone app that collects open access information about domain names, helping users track the history and changes associated with domain names. " diff --git a/src/Controller/WatchListController.php b/src/Controller/WatchListController.php index 0266c1d..760b1a5 100644 --- a/src/Controller/WatchListController.php +++ b/src/Controller/WatchListController.php @@ -52,7 +52,10 @@ public function __construct( private readonly SerializerInterface $serializer, private readonly EntityManagerInterface $em, private readonly WatchListRepository $watchListRepository, - private readonly LoggerInterface $logger, private readonly HttpClientInterface $httpClient, private readonly CacheItemPoolInterface $cacheItemPool, private readonly KernelInterface $kernel + private readonly LoggerInterface $logger, + private readonly HttpClientInterface $httpClient, + private readonly CacheItemPoolInterface $cacheItemPool, + private readonly KernelInterface $kernel ) { } diff --git a/src/MessageHandler/ProcessDomainTriggerHandler.php b/src/MessageHandler/ProcessDomainTriggerHandler.php index 770c94d..8bbbf71 100644 --- a/src/MessageHandler/ProcessDomainTriggerHandler.php +++ b/src/MessageHandler/ProcessDomainTriggerHandler.php @@ -43,7 +43,8 @@ public function __construct( private KernelInterface $kernel, private LoggerInterface $logger, private HttpClientInterface $client, - private MailerInterface $mailer, private CacheItemPoolInterface $cacheItemPool + private MailerInterface $mailer, + private CacheItemPoolInterface $cacheItemPool ) { $this->sender = new Address($mailerSenderEmail, $mailerSenderName); } diff --git a/translations/translations.pot b/translations/translations.pot index 9dfef2d..14ec0f6 100644 --- a/translations/translations.pot +++ b/translations/translations.pot @@ -12,7 +12,7 @@ msgstr "" #: assets/components/LoginForm.tsx:62 #: assets/components/RegisterForm.tsx:41 #: assets/components/RegisterForm.tsx:49 -#: assets/components/search/DomainSearchBar.tsx:22 +#: assets/components/search/DomainSearchBar.tsx:21 #: assets/components/tracking/connector/ConnectorForm.tsx:43 #: assets/components/tracking/connector/ConnectorForm.tsx:69 #: assets/components/tracking/connector/ConnectorForm.tsx:77 @@ -40,927 +40,940 @@ msgstr "" msgid "Log in with SSO" msgstr "" -#: assets/components/search/rdapTranslation.ts:7 -msgid "Registrant" +#: assets/components/search/DomainResult.tsx:45 +msgid "EPP Status Codes" msgstr "" -#: assets/components/search/rdapTranslation.ts:8 -msgid "Technical" +#: assets/components/search/DomainResult.tsx:61 +msgid "Timeline" msgstr "" -#: assets/components/search/rdapTranslation.ts:9 -msgid "Administrative" +#: assets/components/search/DomainResult.tsx:68 +msgid "Entities" msgstr "" -#: assets/components/search/rdapTranslation.ts:10 -msgid "Abuse" +#: assets/components/search/DomainSearchBar.tsx:24 +#: assets/components/tracking/watchlist/WatchlistForm.tsx:118 +msgid "This domain name does not appear to be valid" msgstr "" -#: assets/components/search/rdapTranslation.ts:11 -msgid "Billing" +#: assets/components/search/DomainLifecycleSteps.tsx:21 +#: assets/utils/functions/rdapTranslation.ts:43 +msgid "Registration" msgstr "" -#: assets/components/search/rdapTranslation.ts:12 -msgid "Registrar" +#: assets/components/search/DomainLifecycleSteps.tsx:25 +msgid "Active" msgstr "" -#: assets/components/search/rdapTranslation.ts:13 -msgid "Reseller" +#: assets/components/search/DomainLifecycleSteps.tsx:29 +msgid "Renew Period" msgstr "" -#: assets/components/search/rdapTranslation.ts:14 -msgid "Sponsor" +#: assets/components/search/DomainLifecycleSteps.tsx:34 +msgid "Redemption Period" msgstr "" -#: assets/components/search/rdapTranslation.ts:15 -msgid "Proxy" +#: assets/components/search/DomainLifecycleSteps.tsx:38 +msgid "Pending Delete" msgstr "" -#: assets/components/search/rdapTranslation.ts:16 -msgid "Notifications" +#: assets/components/tracking/connector/ConnectorForm.tsx:40 +msgid "Provider" msgstr "" -#: assets/components/search/rdapTranslation.ts:17 -msgid "Noc" +#: assets/components/tracking/connector/ConnectorForm.tsx:47 +msgid "Please select a Provider" msgstr "" -#: assets/components/search/rdapTranslation.ts:25 -msgid "" -"The entity object instance is the registrant of the registration. In some " -"registries, this is known as a maintainer." +#: assets/components/tracking/connector/ConnectorForm.tsx:75 +msgid "OVH Endpoint" msgstr "" -#: assets/components/search/rdapTranslation.ts:26 -msgid "The entity object instance is a technical contact for the registration." +#: assets/components/tracking/connector/ConnectorForm.tsx:82 +msgid "OVH subsidiary" msgstr "" -#: assets/components/search/rdapTranslation.ts:27 -msgid "" -"The entity object instance is an administrative contact for the " -"registration." +#: assets/components/tracking/connector/ConnectorForm.tsx:90 +msgid "OVH pricing mode" msgstr "" -#: assets/components/search/rdapTranslation.ts:28 -msgid "" -"The entity object instance handles network abuse issues on behalf of the " -"registrant of the registration." +#: assets/components/tracking/connector/ConnectorForm.tsx:95 +msgid "Confirm pricing mode" msgstr "" -#: assets/components/search/rdapTranslation.ts:29 +#: assets/components/tracking/connector/ConnectorForm.tsx:96 msgid "" -"The entity object instance handles payment and billing issues on behalf of " -"the registrant of the registration." +"Are you sure about this setting? This may result in additional charges from " +"the API Provider" msgstr "" -#: assets/components/search/rdapTranslation.ts:30 -msgid "" -"The entity object instance represents the authority responsible for the " -"registration in the registry." +#: assets/components/tracking/connector/ConnectorForm.tsx:120 +msgid "Personal Access Token (PAT)" msgstr "" -#: assets/components/search/rdapTranslation.ts:31 -msgid "" -"The entity object instance represents a third party through which the " -"registration was conducted (i.e., not the registry or registrar)." +#: assets/components/tracking/connector/ConnectorForm.tsx:126 +msgid "Organization sharing ID" msgstr "" -#: assets/components/search/rdapTranslation.ts:32 -msgid "" -"The entity object instance represents a domain policy sponsor, such as an " -"ICANN-approved sponsor." +#: assets/components/tracking/connector/ConnectorForm.tsx:129 +msgid "It indicates the organization that will pay for the ordered product" msgstr "" -#: assets/components/search/rdapTranslation.ts:33 -msgid "" -"The entity object instance represents a proxy for another entity object, " -"such as a registrant." +#: assets/components/tracking/connector/ConnectorForm.tsx:140 +msgid "API Terms of Service" msgstr "" -#: assets/components/search/rdapTranslation.ts:34 +#: assets/components/tracking/connector/ConnectorForm.tsx:148 msgid "" -"An entity object instance designated to receive notifications about " -"association object instances." +"I have read and accepted the conditions of use of the Provider API, " +"accessible from this hyperlink" msgstr "" -#: assets/components/search/rdapTranslation.ts:35 -msgid "" -"The entity object instance handles communications related to a network " -"operations center (NOC)." +#: assets/components/tracking/connector/ConnectorForm.tsx:154 +msgid "Legal age" msgstr "" -#: assets/components/search/rdapTranslation.ts:43 -msgid "Registration" +#: assets/components/tracking/connector/ConnectorForm.tsx:159 +msgid "I am of the minimum age required to consent to these conditions" msgstr "" -#: assets/components/search/rdapTranslation.ts:44 -msgid "Reregistration" +#: assets/components/tracking/connector/ConnectorForm.tsx:163 +msgid "Withdrawal period" msgstr "" -#: assets/components/search/rdapTranslation.ts:45 -msgid "Changed" +#: assets/components/tracking/connector/ConnectorForm.tsx:168 +msgid "" +"I waive my right of withdrawal regarding the purchase of domain names via " +"the Provider's API" msgstr "" -#: assets/components/search/rdapTranslation.ts:46 -msgid "Expiration" +#: assets/components/tracking/connector/ConnectorForm.tsx:176 +#: assets/components/tracking/watchlist/WatchlistForm.tsx:252 +msgid "Create" msgstr "" -#: assets/components/search/rdapTranslation.ts:47 -msgid "Deletion" +#: assets/components/tracking/connector/ConnectorForm.tsx:179 +#: assets/components/tracking/watchlist/WatchlistForm.tsx:255 +msgid "Reset" msgstr "" -#: assets/components/search/rdapTranslation.ts:48 -msgid "Reinstantiation" +#: assets/components/tracking/connector/ConnectorsList.tsx:18 +msgid "" +"An error occurred while deleting the Connector. Make sure it is not used in " +"any Watchlist" msgstr "" -#: assets/components/search/rdapTranslation.ts:49 -msgid "Transfer" +#: assets/components/tracking/connector/ConnectorsList.tsx:25 +#, javascript-format +msgid "Connector ${ connector.provider }" msgstr "" -#: assets/components/search/rdapTranslation.ts:50 -msgid "Locked" +#: assets/components/tracking/connector/ConnectorsList.tsx:28 +msgid "Delete the Connector" msgstr "" -#: assets/components/search/rdapTranslation.ts:51 -msgid "Unlocked" +#: assets/components/tracking/connector/ConnectorsList.tsx:29 +msgid "Are you sure to delete this Connector?" msgstr "" -#: assets/components/search/rdapTranslation.ts:52 -msgid "Registrar expiration" +#: assets/components/tracking/connector/ConnectorsList.tsx:31 +#: assets/components/tracking/watchlist/DeleteWatchlistButton.tsx:15 +msgid "Yes" msgstr "" -#: assets/components/search/rdapTranslation.ts:53 -msgid "ENUM validation expiration" +#: assets/components/tracking/connector/ConnectorsList.tsx:32 +#: assets/components/tracking/watchlist/DeleteWatchlistButton.tsx:16 +msgid "No" msgstr "" -#: assets/components/search/rdapTranslation.ts:60 -msgid "The object instance was initially registered." +#: assets/components/tracking/watchlist/WatchlistForm.tsx:72 +msgid "Name" msgstr "" -#: assets/components/search/rdapTranslation.ts:61 -msgid "The object instance was registered subsequently to initial registration." +#: assets/components/tracking/watchlist/WatchlistForm.tsx:83 +msgid "Watchlist Name" msgstr "" -#: assets/components/search/rdapTranslation.ts:62 -msgid "" -"An action noting when the information in the object instance was last " -"changed." +#: assets/components/tracking/watchlist/WatchlistForm.tsx:84 +msgid "Naming the Watchlist makes it easier to find in the list below." msgstr "" -#: assets/components/search/rdapTranslation.ts:63 -msgid "" -"The object instance has been removed or will be removed at a predetermined " -"date and time from the registry." +#: assets/components/tracking/watchlist/WatchlistForm.tsx:95 +msgid "At least one domain name" msgstr "" -#: assets/components/search/rdapTranslation.ts:64 -msgid "" -"The object instance was removed from the registry at a point in time that " -"was not predetermined." +#: assets/components/tracking/watchlist/WatchlistCard.tsx:29 +#: assets/components/tracking/watchlist/WatchlistForm.tsx:106 +msgid "Domain names" msgstr "" -#: assets/components/search/rdapTranslation.ts:65 -msgid "" -"The object instance was reregistered after having been removed from the " -"registry." +#: assets/components/tracking/watchlist/WatchlistForm.tsx:124 +msgid "Domain name" msgstr "" -#: assets/components/search/rdapTranslation.ts:66 -msgid "The object instance was transferred from one registrar to another." +#: assets/components/tracking/watchlist/WatchlistForm.tsx:141 +msgid "Add a Domain name" msgstr "" -#: assets/components/search/rdapTranslation.ts:67 -msgid "The object instance was locked." +#: assets/components/tracking/watchlist/WatchlistCard.tsx:33 +#: assets/components/tracking/watchlist/WatchlistForm.tsx:148 +msgid "Tracked events" msgstr "" -#: assets/components/search/rdapTranslation.ts:68 -msgid "The object instance was unlocked." +#: assets/components/tracking/watchlist/WatchlistForm.tsx:150 +msgid "At least one trigger" msgstr "" -#: assets/components/search/rdapTranslation.ts:69 -msgid "An action noting the expiration date of the object in the registrar system." +#: assets/components/tracking/watchlist/WatchlistForm.tsx:173 +#: assets/components/tracking/watchlist/WatchlistForm.tsx:187 +msgid "Connector" msgstr "" -#: assets/components/search/rdapTranslation.ts:70 +#: assets/components/tracking/watchlist/WatchlistForm.tsx:183 msgid "" -"Association of phone number represented by this ENUM domain to registrant " -"has expired or will expire at a predetermined date and time." +"Please make sure the connector information is valid to purchase a domain " +"that may be available soon." msgstr "" -#: assets/components/search/rdapTranslation.ts:78 -msgid "" -"Signifies that the data of the object instance has been found to be " -"accurate." +#: assets/components/tracking/watchlist/WatchlistForm.tsx:203 +msgid "DSN" msgstr "" -#: assets/components/search/rdapTranslation.ts:79 -msgid "Renewal or reregistration of the object instance is forbidden." +#: assets/components/tracking/watchlist/WatchlistForm.tsx:215 +msgid "This DSN does not appear to be valid" msgstr "" -#: assets/components/search/rdapTranslation.ts:80 -msgid "Updates to the object instance are forbidden." +#: assets/components/tracking/watchlist/WatchlistForm.tsx:233 +msgid "Check out this link to the Symfony documentation to help you build the DSN" msgstr "" -#: assets/components/search/rdapTranslation.ts:81 -msgid "Transfers of the registration from one registrar to another are forbidden." +#: assets/components/tracking/watchlist/WatchlistForm.tsx:242 +msgid "Add a Webhook" msgstr "" -#: assets/components/search/rdapTranslation.ts:82 -msgid "Deletion of the registration of the object instance is forbidden." +#: assets/components/tracking/watchlist/WatchlistForm.tsx:252 +msgid "Update" msgstr "" -#: assets/components/search/rdapTranslation.ts:83 -msgid "The registration of the object instance has been performed by a third party." +#: assets/components/tracking/watchlist/UpdateWatchlistButton.tsx:31 +msgid "Edit the Watchlist" msgstr "" -#: assets/components/search/rdapTranslation.ts:84 -msgid "" -"The information of the object instance is not designated for public " -"consumption." +#: assets/components/tracking/watchlist/UpdateWatchlistButton.tsx:44 +msgid "Update a Watchlist" msgstr "" -#: assets/components/search/rdapTranslation.ts:85 -msgid "" -"Some of the information of the object instance has not been made available " -"and has been removed." +#: assets/components/tracking/watchlist/UpdateWatchlistButton.tsx:54 +msgid "Cancel" msgstr "" -#: assets/components/search/rdapTranslation.ts:86 -msgid "" -"Some of the information of the object instance has been altered for the " -"purposes of not readily revealing the actual information of the object " -"instance." +#: assets/components/tracking/watchlist/diagram/ViewDiagramWatchlistButton.tsx:39 +msgid "View the Watchlist Entity Diagram" msgstr "" -#: assets/components/search/rdapTranslation.ts:87 -msgid "" -"The object instance is associated with other object instances in the " -"registry." +#: assets/components/tracking/watchlist/diagram/ViewDiagramWatchlistButton.tsx:44 +msgid "Watchlist Entity Diagram" msgstr "" -#: assets/components/search/rdapTranslation.ts:88 -msgid "" -"Changes to the object instance cannot be made, including the association of " -"other object instances." +#: assets/components/tracking/watchlist/diagram/watchlistToEdges.tsx:37 +msgid "Registry" msgstr "" -#: assets/components/search/rdapTranslation.ts:90 -#: assets/components/search/rdapTranslation.ts:99 -msgid "" -"This is the standard status for a domain, meaning it has no pending " -"operations or prohibitions." +#: assets/components/tracking/watchlist/diagram/watchlistToNodes.tsx:30 +#, javascript-format +msgid ".${ tld.tld } Registry" msgstr "" -#: assets/components/search/rdapTranslation.ts:91 -msgid "" -"This status code indicates that delegation information (name servers) has " -"not been associated with your domain. Your domain is not activated in the " -"DNS and will not resolve." +#: assets/components/tracking/watchlist/CalendarWatchlistButton.tsx:14 +msgid "QR Code for iCalendar export" msgstr "" -#: assets/components/search/rdapTranslation.ts:92 -msgid "" -"This status code indicates that a request to create your domain has been " -"received and is being processed." +#: assets/components/tracking/watchlist/CalendarWatchlistButton.tsx:17 +msgid "Export events to iCalendar format" msgstr "" -#: assets/components/search/rdapTranslation.ts:93 -msgid "" -"This status code indicates that a request to renew your domain has been " -"received and is being processed." +#: assets/components/tracking/watchlist/DeleteWatchlistButton.tsx:12 +#: assets/components/tracking/watchlist/DeleteWatchlistButton.tsx:19 +msgid "Delete the Watchlist" msgstr "" -#: assets/components/search/rdapTranslation.ts:94 -msgid "" -"This status code indicates that a request to transfer your domain to a new " -"registrar has been received and is being processed." +#: assets/components/tracking/watchlist/DeleteWatchlistButton.tsx:13 +msgid "Are you sure to delete this Watchlist?" msgstr "" -#: assets/components/search/rdapTranslation.ts:95 -msgid "" -"This status code indicates that a request to update your domain has been " -"received and is being processed." +#: assets/components/tracking/watchlist/WatchlistCard.tsx:47 +msgid "This Watchlist is not linked to a Connector." msgstr "" -#: assets/components/search/rdapTranslation.ts:96 -msgid "" -"This status code may be mixed with redemptionPeriod or pendingRestore. In " -"such case, depending on the status (i.e. redemptionPeriod or " -"pendingRestore) set in the domain name, the corresponding description " -"presented above applies. If this status is not combined with the " -"redemptionPeriod or pendingRestore status, the pendingDelete status code " -"indicates that your domain has been in redemptionPeriod status for 30 days " -"and you have not restored it within that 30-day period. Your domain will " -"remain in this status for several days, after which time your domain will " -"be purged and dropped from the registry database. Once deletion occurs, the " -"domain is available for re-registration in accordance with the registry's " -"policies." +#: assets/components/tracking/watchlist/WatchlistCard.tsx:52 +msgid "Watchlist" msgstr "" -#: assets/components/search/rdapTranslation.ts:97 -msgid "" -"This grace period is provided after the initial registration of a domain " -"name. If the registrar deletes the domain name during this period, the " -"registry may provide credit to the registrar for the cost of the " -"registration." +#: assets/components/Sider.tsx:28 +msgid "Home" msgstr "" -#: assets/components/search/rdapTranslation.ts:98 -msgid "" -"This grace period is provided after a domain name registration period " -"expires and is extended (renewed) automatically by the registry. If the " -"registrar deletes the domain name during this period, the registry provides " -"a credit to the registrar for the cost of the renewal." +#: assets/components/Sider.tsx:34 +msgid "Search" msgstr "" -#: assets/components/search/rdapTranslation.ts:100 -msgid "" -"This status code tells your domain's registry to reject requests to delete " -"the domain." +#: assets/components/Sider.tsx:40 +msgid "Domain" msgstr "" -#: assets/components/search/rdapTranslation.ts:101 -msgid "" -"This status code tells your domain's registry to not activate your domain " -"in the DNS and as a consequence, it will not resolve. It is an uncommon " -"status that is usually enacted during legal disputes, non-payment, or when " -"your domain is subject to deletion." +#: assets/components/Sider.tsx:41 +msgid "Domain Finder" msgstr "" -#: assets/components/search/rdapTranslation.ts:102 -msgid "" -"This status code tells your domain's registry to reject requests to renew " -"your domain. It is an uncommon status that is usually enacted during legal " -"disputes or when your domain is subject to deletion." +#: assets/components/Sider.tsx:48 +#: assets/pages/search/TldPage.tsx:65 +msgid "TLD" msgstr "" -#: assets/components/search/rdapTranslation.ts:103 -msgid "" -"This status code tells your domain's registry to reject requests to " -"transfer the domain from your current registrar to another." +#: assets/components/Sider.tsx:49 +msgid "TLD list" msgstr "" -#: assets/components/search/rdapTranslation.ts:104 -msgid "" -"This status code tells your domain's registry to reject requests to update " -"the domain." +#: assets/components/Sider.tsx:56 +msgid "Entity" msgstr "" -#: assets/components/search/rdapTranslation.ts:105 -msgid "" -"This status code indicates that your registrar has asked the registry to " -"restore your domain that was in redemptionPeriod status. Your registry will " -"hold the domain in this status while waiting for your registrar to provide " -"required restoration documentation. If your registrar fails to provide " -"documentation to the registry operator within a set time period to confirm " -"the restoration request, the domain will revert to redemptionPeriod status." +#: assets/components/Sider.tsx:57 +msgid "Entity Finder" msgstr "" -#: assets/components/search/rdapTranslation.ts:106 -msgid "" -"This status code indicates that your registrar has asked the registry to " -"delete your domain. Your domain will be held in this status for 30 days. " -"After five calendar days following the end of the redemptionPeriod, your " -"domain is purged from the registry database and becomes available for " -"registration." +#: assets/components/Sider.tsx:64 +msgid "Nameserver" msgstr "" -#: assets/components/search/rdapTranslation.ts:107 -msgid "" -"This grace period is provided after a domain name registration period is " -"explicitly extended (renewed) by the registrar. If the registrar deletes " -"the domain name during this period, the registry provides a credit to the " -"registrar for the cost of the renewal." +#: assets/components/Sider.tsx:65 +msgid "Nameserver Finder" msgstr "" -#: assets/components/search/rdapTranslation.ts:108 -msgid "" -"This status code prevents your domain from being deleted. It is an uncommon " -"status that is usually enacted during legal disputes, at your request, or " -"when a redemptionPeriod status is in place." +#: assets/components/Sider.tsx:73 +msgid "Tracking" msgstr "" -#: assets/components/search/rdapTranslation.ts:109 -msgid "" -"This status code indicates your domain's Registry Operator will not allow " -"your registrar to renew your domain. It is an uncommon status that is " -"usually enacted during legal disputes or when your domain is subject to " -"deletion." +#: assets/components/Sider.tsx:79 +msgid "My Watchlists" msgstr "" -#: assets/components/search/rdapTranslation.ts:110 -msgid "" -"This status code prevents your domain from being transferred from your " -"current registrar to another. It is an uncommon status that is usually " -"enacted during legal or other disputes, at your request, or when a " -"redemptionPeriod status is in place." +#: assets/components/Sider.tsx:86 +msgid "My Connectors" msgstr "" -#: assets/components/search/rdapTranslation.ts:111 -msgid "" -"This status code locks your domain preventing it from being updated. It is " -"an uncommon status that is usually enacted during legal disputes, at your " -"request, or when a redemptionPeriod status is in place." +#: assets/components/Sider.tsx:95 +msgid "Statistics" msgstr "" -#: assets/components/search/rdapTranslation.ts:112 -msgid "" -"This status code is set by your domain's Registry Operator. Your domain is " -"not activated in the DNS." +#: assets/components/Sider.tsx:105 +#: assets/pages/UserPage.tsx:16 +msgid "My Account" msgstr "" -#: assets/components/search/rdapTranslation.ts:113 -msgid "" -"This grace period is provided after the successful transfer of a domain " -"name from one registrar to another. If the new registrar deletes the domain " -"name during this period, the registry provides a credit to the registrar " -"for the cost of the transfer." +#: assets/components/Sider.tsx:110 +msgid "Log out" msgstr "" -#: assets/components/search/rdapTranslation.ts:115 -msgid "" -"The object instance has been allocated administratively (i.e., not for use " -"by the recipient in their own right in operational networks)." +#: assets/components/Sider.tsx:118 +#: assets/pages/LoginPage.tsx:25 +#: assets/pages/LoginPage.tsx:33 +msgid "Log in" +msgstr "" + +#: assets/components/RegisterForm.tsx:56 +#: assets/pages/LoginPage.tsx:25 +msgid "Register" msgstr "" -#: assets/components/search/rdapTranslation.ts:116 +#: assets/pages/search/DomainSearchPage.tsx:18 +msgid "Found !" +msgstr "" + +#: assets/pages/search/DomainSearchPage.tsx:34 msgid "" -"The object instance has been allocated to an IANA special-purpose address " -"registry." +"Although the domain exists in my database, it has been deleted from the " +"WHOIS by its registrar." msgstr "" -#: assets/components/search/DomainResult.tsx:39 -msgid "EPP Status Codes" +#: assets/pages/search/TldPage.tsx:71 +msgid "Flag" msgstr "" -#: assets/components/search/DomainResult.tsx:53 -msgid "Timeline" +#: assets/pages/search/TldPage.tsx:74 +msgid "Country" msgstr "" -#: assets/components/search/DomainResult.tsx:58 -msgid "Entities" +#: assets/pages/search/TldPage.tsx:79 +msgid "Registry Operator" msgstr "" -#: assets/components/search/DomainSearchBar.tsx:25 -#: assets/components/tracking/watchlist/WatchlistForm.tsx:118 -msgid "This domain name does not appear to be valid" +#: assets/pages/search/TldPage.tsx:106 +msgid "This page presents all active TLDs in the root zone database." msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:40 -msgid "Provider" +#: assets/pages/search/TldPage.tsx:109 +msgid "" +"IANA provides the list of currently active TLDs, regardless of their type, " +"and ICANN provides the list of gTLDs.\n" +"In most cases, the two-letter ccTLD assigned to a country is made in " +"accordance with the ISO 3166-1 standard.\n" +"This data is updated every month. Three HTTP requests are needed for the " +"complete update of TLDs in Domain Watchdog (two requests to IANA and one to " +"ICANN).\n" +"At the same time, the list of root RDAP servers is updated." msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:47 -msgid "Please select a Provider" +#: assets/pages/search/TldPage.tsx:120 +msgid "Sponsored Top-Level-Domains" msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:75 -msgid "OVH Endpoint" +#: assets/pages/search/TldPage.tsx:122 +msgid "" +"Top-level domains sponsored by specific organizations that set rules for " +"registration and use, often related to particular interest groups or " +"industries." msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:82 -msgid "OVH subsidiary" +#: assets/pages/search/TldPage.tsx:129 +msgid "Generic Top-Level-Domains" msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:90 -msgid "OVH pricing mode" +#: assets/pages/search/TldPage.tsx:131 +msgid "" +"Generic top-level domains open to everyone, not restricted by specific " +"criteria, representing various themes or industries." msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:95 -msgid "Confirm pricing mode" +#: assets/pages/search/TldPage.tsx:138 +msgid "Brand Generic Top-Level-Domains" msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:96 +#: assets/pages/search/TldPage.tsx:140 msgid "" -"Are you sure about this setting? This may result in additional charges from " -"the API Provider" +"Generic top-level domains associated with specific brands, allowing " +"companies to use their own brand names as domains." msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:120 -msgid "Personal Access Token (PAT)" +#: assets/pages/search/TldPage.tsx:147 +msgid "Country-Code Top-Level-Domains" msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:126 -msgid "Organization sharing ID" +#: assets/pages/search/TldPage.tsx:149 +msgid "" +"Top-level domains based on country codes, identifying websites according to " +"their country of origin." msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:129 -msgid "It indicates the organization that will pay for the ordered product" +#: assets/pages/tracking/ConnectorsPage.tsx:20 +msgid "Connector created !" msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:140 -msgid "API Terms of Service" +#: assets/pages/tracking/ConnectorsPage.tsx:39 +msgid "Create a Connector" msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:148 -msgid "" -"I have read and accepted the conditions of use of the Provider API, " -"accessible from this hyperlink" +#: assets/pages/tracking/WatchlistPage.tsx:65 +msgid "Watchlist created !" msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:154 -msgid "Legal age" +#: assets/pages/tracking/WatchlistPage.tsx:77 +msgid "Watchlist updated !" msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:159 -msgid "I am of the minimum age required to consent to these conditions" +#: assets/pages/tracking/WatchlistPage.tsx:101 +msgid "Create a Watchlist" msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:163 -msgid "Withdrawal period" +#: assets/pages/NotFoundPage.tsx:10 +msgid "Sorry, the page you visited does not exist." msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:168 -msgid "" -"I waive my right of withdrawal regarding the purchase of domain names via " -"the Provider's API" +#: assets/pages/StatisticsPage.tsx:32 +msgid "RDAP queries" msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:176 -#: assets/components/tracking/watchlist/WatchlistForm.tsx:252 -msgid "Create" +#: assets/pages/StatisticsPage.tsx:41 +msgid "Alerts sent" msgstr "" -#: assets/components/tracking/connector/ConnectorForm.tsx:179 -#: assets/components/tracking/watchlist/WatchlistForm.tsx:255 -msgid "Reset" +#: assets/pages/StatisticsPage.tsx:55 +msgid "Domain names in database" msgstr "" -#: assets/components/tracking/connector/ConnectorsList.tsx:18 -msgid "" -"An error occurred while deleting the Connector. Make sure it is not used in " -"any Watchlist" +#: assets/pages/StatisticsPage.tsx:66 +msgid "Tracked domain names" msgstr "" -#: assets/components/tracking/connector/ConnectorsList.tsx:25 -#, javascript-format -msgid "Connector ${ connector.provider }" +#: assets/pages/StatisticsPage.tsx:80 +msgid "Purchased domain names" msgstr "" -#: assets/components/tracking/connector/ConnectorsList.tsx:28 -msgid "Delete the Connector" +#: assets/pages/StatisticsPage.tsx:90 +msgid "" +"This value is based on the status code of the HTTP response from the " +"providers following the domain order." msgstr "" -#: assets/components/tracking/connector/ConnectorsList.tsx:29 -msgid "Are you sure to delete this Connector?" +#: assets/pages/StatisticsPage.tsx:93 +msgid "Success rate" msgstr "" -#: assets/components/tracking/connector/ConnectorsList.tsx:31 -#: assets/components/tracking/watchlist/DeleteWatchlistButton.tsx:15 -msgid "Yes" +#: assets/pages/LoginPage.tsx:33 +msgid "Create an account" msgstr "" -#: assets/components/tracking/connector/ConnectorsList.tsx:32 -#: assets/components/tracking/watchlist/DeleteWatchlistButton.tsx:16 -msgid "No" +#: assets/pages/UserPage.tsx:18 +msgid "Username" msgstr "" -#: assets/components/tracking/watchlist/WatchlistForm.tsx:72 -msgid "Name" +#: assets/pages/UserPage.tsx:21 +msgid "Roles" msgstr "" -#: assets/components/tracking/watchlist/WatchlistForm.tsx:83 -msgid "Watchlist Name" +#: assets/utils/functions/rdapTranslation.ts:7 +msgid "Registrant" msgstr "" -#: assets/components/tracking/watchlist/WatchlistForm.tsx:84 -msgid "Naming the Watchlist makes it easier to find in the list below." +#: assets/utils/functions/rdapTranslation.ts:8 +msgid "Technical" msgstr "" -#: assets/components/tracking/watchlist/WatchlistForm.tsx:95 -msgid "At least one domain name" +#: assets/utils/functions/rdapTranslation.ts:9 +msgid "Administrative" msgstr "" -#: assets/components/tracking/watchlist/WatchlistCard.tsx:29 -#: assets/components/tracking/watchlist/WatchlistForm.tsx:106 -msgid "Domain names" +#: assets/utils/functions/rdapTranslation.ts:10 +msgid "Abuse" msgstr "" -#: assets/components/tracking/watchlist/WatchlistForm.tsx:124 -msgid "Domain name" +#: assets/utils/functions/rdapTranslation.ts:11 +msgid "Billing" msgstr "" -#: assets/components/tracking/watchlist/WatchlistForm.tsx:141 -msgid "Add a Domain name" +#: assets/utils/functions/rdapTranslation.ts:12 +msgid "Registrar" msgstr "" -#: assets/components/tracking/watchlist/WatchlistCard.tsx:33 -#: assets/components/tracking/watchlist/WatchlistForm.tsx:148 -msgid "Tracked events" +#: assets/utils/functions/rdapTranslation.ts:13 +msgid "Reseller" msgstr "" -#: assets/components/tracking/watchlist/WatchlistForm.tsx:150 -msgid "At least one trigger" +#: assets/utils/functions/rdapTranslation.ts:14 +msgid "Sponsor" msgstr "" -#: assets/components/tracking/watchlist/WatchlistForm.tsx:173 -#: assets/components/tracking/watchlist/WatchlistForm.tsx:187 -msgid "Connector" +#: assets/utils/functions/rdapTranslation.ts:15 +msgid "Proxy" msgstr "" -#: assets/components/tracking/watchlist/WatchlistForm.tsx:183 -msgid "" -"Please make sure the connector information is valid to purchase a domain " -"that may be available soon." +#: assets/utils/functions/rdapTranslation.ts:16 +msgid "Notifications" msgstr "" -#: assets/components/tracking/watchlist/WatchlistForm.tsx:203 -msgid "DSN" +#: assets/utils/functions/rdapTranslation.ts:17 +msgid "Noc" msgstr "" -#: assets/components/tracking/watchlist/WatchlistForm.tsx:215 -msgid "This DSN does not appear to be valid" +#: assets/utils/functions/rdapTranslation.ts:25 +msgid "" +"The entity object instance is the registrant of the registration. In some " +"registries, this is known as a maintainer." msgstr "" -#: assets/components/tracking/watchlist/WatchlistForm.tsx:233 -msgid "Check out this link to the Symfony documentation to help you build the DSN" +#: assets/utils/functions/rdapTranslation.ts:26 +msgid "The entity object instance is a technical contact for the registration." msgstr "" -#: assets/components/tracking/watchlist/WatchlistForm.tsx:242 -msgid "Add a Webhook" +#: assets/utils/functions/rdapTranslation.ts:27 +msgid "" +"The entity object instance is an administrative contact for the " +"registration." msgstr "" -#: assets/components/tracking/watchlist/WatchlistForm.tsx:252 -msgid "Update" +#: assets/utils/functions/rdapTranslation.ts:28 +msgid "" +"The entity object instance handles network abuse issues on behalf of the " +"registrant of the registration." msgstr "" -#: assets/components/tracking/watchlist/UpdateWatchlistButton.tsx:31 -msgid "Edit the Watchlist" +#: assets/utils/functions/rdapTranslation.ts:29 +msgid "" +"The entity object instance handles payment and billing issues on behalf of " +"the registrant of the registration." msgstr "" -#: assets/components/tracking/watchlist/UpdateWatchlistButton.tsx:44 -msgid "Update a Watchlist" +#: assets/utils/functions/rdapTranslation.ts:30 +msgid "" +"The entity object instance represents the authority responsible for the " +"registration in the registry." msgstr "" -#: assets/components/tracking/watchlist/UpdateWatchlistButton.tsx:54 -msgid "Cancel" +#: assets/utils/functions/rdapTranslation.ts:31 +msgid "" +"The entity object instance represents a third party through which the " +"registration was conducted (i.e., not the registry or registrar)." msgstr "" -#: assets/components/tracking/watchlist/diagram/ViewDiagramWatchlistButton.tsx:39 -msgid "View the Watchlist Entity Diagram" +#: assets/utils/functions/rdapTranslation.ts:32 +msgid "" +"The entity object instance represents a domain policy sponsor, such as an " +"ICANN-approved sponsor." msgstr "" -#: assets/components/tracking/watchlist/diagram/ViewDiagramWatchlistButton.tsx:44 -msgid "Watchlist Entity Diagram" +#: assets/utils/functions/rdapTranslation.ts:33 +msgid "" +"The entity object instance represents a proxy for another entity object, " +"such as a registrant." msgstr "" -#: assets/components/tracking/watchlist/diagram/watchlistToEdges.tsx:37 -msgid "Registry" +#: assets/utils/functions/rdapTranslation.ts:34 +msgid "" +"An entity object instance designated to receive notifications about " +"association object instances." msgstr "" -#: assets/components/tracking/watchlist/diagram/watchlistToNodes.tsx:30 -#, javascript-format -msgid ".${ tld.tld } Registry" +#: assets/utils/functions/rdapTranslation.ts:35 +msgid "" +"The entity object instance handles communications related to a network " +"operations center (NOC)." msgstr "" -#: assets/components/tracking/watchlist/CalendarWatchlistButton.tsx:14 -msgid "QR Code for iCalendar export" +#: assets/utils/functions/rdapTranslation.ts:44 +msgid "Reregistration" msgstr "" -#: assets/components/tracking/watchlist/CalendarWatchlistButton.tsx:17 -msgid "Export events to iCalendar format" +#: assets/utils/functions/rdapTranslation.ts:45 +msgid "Changed" msgstr "" -#: assets/components/tracking/watchlist/DeleteWatchlistButton.tsx:12 -#: assets/components/tracking/watchlist/DeleteWatchlistButton.tsx:19 -msgid "Delete the Watchlist" +#: assets/utils/functions/rdapTranslation.ts:46 +msgid "Expiration" msgstr "" -#: assets/components/tracking/watchlist/DeleteWatchlistButton.tsx:13 -msgid "Are you sure to delete this Watchlist?" +#: assets/utils/functions/rdapTranslation.ts:47 +msgid "Deletion" msgstr "" -#: assets/components/tracking/watchlist/WatchlistCard.tsx:47 -msgid "This Watchlist is not linked to a Connector." +#: assets/utils/functions/rdapTranslation.ts:48 +msgid "Reinstantiation" msgstr "" -#: assets/components/tracking/watchlist/WatchlistCard.tsx:52 -msgid "Watchlist" +#: assets/utils/functions/rdapTranslation.ts:49 +msgid "Transfer" msgstr "" -#: assets/components/Sider.tsx:28 -msgid "Home" +#: assets/utils/functions/rdapTranslation.ts:50 +msgid "Locked" msgstr "" -#: assets/components/Sider.tsx:34 -msgid "Search" +#: assets/utils/functions/rdapTranslation.ts:51 +msgid "Unlocked" msgstr "" -#: assets/components/Sider.tsx:40 -msgid "Domain" +#: assets/utils/functions/rdapTranslation.ts:52 +msgid "Registrar expiration" msgstr "" -#: assets/components/Sider.tsx:41 -msgid "Domain Finder" +#: assets/utils/functions/rdapTranslation.ts:53 +msgid "ENUM validation expiration" +msgstr "" + +#: assets/utils/functions/rdapTranslation.ts:60 +msgid "The object instance was initially registered." msgstr "" -#: assets/components/Sider.tsx:48 -#: assets/pages/search/TldPage.tsx:65 -msgid "TLD" +#: assets/utils/functions/rdapTranslation.ts:61 +msgid "The object instance was registered subsequently to initial registration." msgstr "" -#: assets/components/Sider.tsx:49 -msgid "TLD list" +#: assets/utils/functions/rdapTranslation.ts:62 +msgid "" +"An action noting when the information in the object instance was last " +"changed." msgstr "" -#: assets/components/Sider.tsx:56 -msgid "Entity" +#: assets/utils/functions/rdapTranslation.ts:63 +msgid "" +"The object instance has been removed or will be removed at a predetermined " +"date and time from the registry." msgstr "" -#: assets/components/Sider.tsx:57 -msgid "Entity Finder" +#: assets/utils/functions/rdapTranslation.ts:64 +msgid "" +"The object instance was removed from the registry at a point in time that " +"was not predetermined." msgstr "" -#: assets/components/Sider.tsx:64 -msgid "Nameserver" +#: assets/utils/functions/rdapTranslation.ts:65 +msgid "" +"The object instance was reregistered after having been removed from the " +"registry." msgstr "" -#: assets/components/Sider.tsx:65 -msgid "Nameserver Finder" +#: assets/utils/functions/rdapTranslation.ts:66 +msgid "The object instance was transferred from one registrar to another." msgstr "" -#: assets/components/Sider.tsx:73 -msgid "Tracking" +#: assets/utils/functions/rdapTranslation.ts:67 +msgid "The object instance was locked." msgstr "" -#: assets/components/Sider.tsx:79 -msgid "My Watchlists" +#: assets/utils/functions/rdapTranslation.ts:68 +msgid "The object instance was unlocked." msgstr "" -#: assets/components/Sider.tsx:86 -msgid "My Connectors" +#: assets/utils/functions/rdapTranslation.ts:69 +msgid "An action noting the expiration date of the object in the registrar system." msgstr "" -#: assets/components/Sider.tsx:95 -msgid "Statistics" +#: assets/utils/functions/rdapTranslation.ts:70 +msgid "" +"Association of phone number represented by this ENUM domain to registrant " +"has expired or will expire at a predetermined date and time." msgstr "" -#: assets/components/Sider.tsx:105 -#: assets/pages/UserPage.tsx:16 -msgid "My Account" +#: assets/utils/functions/rdapTranslation.ts:78 +msgid "" +"Signifies that the data of the object instance has been found to be " +"accurate." msgstr "" -#: assets/components/Sider.tsx:110 -msgid "Log out" +#: assets/utils/functions/rdapTranslation.ts:79 +msgid "Renewal or reregistration of the object instance is forbidden." msgstr "" -#: assets/components/Sider.tsx:118 -#: assets/pages/LoginPage.tsx:25 -#: assets/pages/LoginPage.tsx:33 -msgid "Log in" +#: assets/utils/functions/rdapTranslation.ts:80 +msgid "Updates to the object instance are forbidden." msgstr "" -#: assets/components/RegisterForm.tsx:56 -#: assets/pages/LoginPage.tsx:25 -msgid "Register" +#: assets/utils/functions/rdapTranslation.ts:81 +msgid "Transfers of the registration from one registrar to another are forbidden." msgstr "" -#: assets/pages/search/DomainSearchPage.tsx:18 -msgid "Found !" +#: assets/utils/functions/rdapTranslation.ts:82 +msgid "Deletion of the registration of the object instance is forbidden." msgstr "" -#: assets/pages/search/DomainSearchPage.tsx:26 -msgid "Domain finder" +#: assets/utils/functions/rdapTranslation.ts:83 +msgid "The registration of the object instance has been performed by a third party." msgstr "" -#: assets/pages/search/DomainSearchPage.tsx:35 +#: assets/utils/functions/rdapTranslation.ts:84 msgid "" -"Although the domain exists in my database, it has been deleted from the " -"WHOIS by its registrar." +"The information of the object instance is not designated for public " +"consumption." msgstr "" -#: assets/pages/search/TldPage.tsx:71 -msgid "Flag" +#: assets/utils/functions/rdapTranslation.ts:85 +msgid "" +"Some of the information of the object instance has not been made available " +"and has been removed." msgstr "" -#: assets/pages/search/TldPage.tsx:74 -msgid "Country" +#: assets/utils/functions/rdapTranslation.ts:86 +msgid "" +"Some of the information of the object instance has been altered for the " +"purposes of not readily revealing the actual information of the object " +"instance." msgstr "" -#: assets/pages/search/TldPage.tsx:79 -msgid "Registry Operator" +#: assets/utils/functions/rdapTranslation.ts:87 +msgid "" +"The object instance is associated with other object instances in the " +"registry." msgstr "" -#: assets/pages/search/TldPage.tsx:106 -msgid "This page presents all active TLDs in the root zone database." +#: assets/utils/functions/rdapTranslation.ts:88 +msgid "" +"Changes to the object instance cannot be made, including the association of " +"other object instances." msgstr "" -#: assets/pages/search/TldPage.tsx:109 +#: assets/utils/functions/rdapTranslation.ts:90 +#: assets/utils/functions/rdapTranslation.ts:99 msgid "" -"IANA provides the list of currently active TLDs, regardless of their type, " -"and ICANN provides the list of gTLDs.\n" -"In most cases, the two-letter ccTLD assigned to a country is made in " -"accordance with the ISO 3166-1 standard.\n" -"This data is updated every month. Three HTTP requests are needed for the " -"complete update of TLDs in Domain Watchdog (two requests to IANA and one to " -"ICANN).\n" -"At the same time, the list of root RDAP servers is updated." +"This is the standard status for a domain, meaning it has no pending " +"operations or prohibitions." msgstr "" -#: assets/pages/search/TldPage.tsx:120 -msgid "Sponsored Top-Level-Domains" +#: assets/utils/functions/rdapTranslation.ts:91 +msgid "" +"This status code indicates that delegation information (name servers) has " +"not been associated with your domain. Your domain is not activated in the " +"DNS and will not resolve." msgstr "" -#: assets/pages/search/TldPage.tsx:122 +#: assets/utils/functions/rdapTranslation.ts:92 msgid "" -"Top-level domains sponsored by specific organizations that set rules for " -"registration and use, often related to particular interest groups or " -"industries." +"This status code indicates that a request to create your domain has been " +"received and is being processed." msgstr "" -#: assets/pages/search/TldPage.tsx:129 -msgid "Generic Top-Level-Domains" +#: assets/utils/functions/rdapTranslation.ts:93 +msgid "" +"This status code indicates that a request to renew your domain has been " +"received and is being processed." msgstr "" -#: assets/pages/search/TldPage.tsx:131 +#: assets/utils/functions/rdapTranslation.ts:94 msgid "" -"Generic top-level domains open to everyone, not restricted by specific " -"criteria, representing various themes or industries." +"This status code indicates that a request to transfer your domain to a new " +"registrar has been received and is being processed." msgstr "" -#: assets/pages/search/TldPage.tsx:138 -msgid "Brand Generic Top-Level-Domains" +#: assets/utils/functions/rdapTranslation.ts:95 +msgid "" +"This status code indicates that a request to update your domain has been " +"received and is being processed." msgstr "" -#: assets/pages/search/TldPage.tsx:140 +#: assets/utils/functions/rdapTranslation.ts:96 msgid "" -"Generic top-level domains associated with specific brands, allowing " -"companies to use their own brand names as domains." +"This status code may be mixed with redemptionPeriod or pendingRestore. In " +"such case, depending on the status (i.e. redemptionPeriod or " +"pendingRestore) set in the domain name, the corresponding description " +"presented above applies. If this status is not combined with the " +"redemptionPeriod or pendingRestore status, the pendingDelete status code " +"indicates that your domain has been in redemptionPeriod status for 30 days " +"and you have not restored it within that 30-day period. Your domain will " +"remain in this status for several days, after which time your domain will " +"be purged and dropped from the registry database. Once deletion occurs, the " +"domain is available for re-registration in accordance with the registry's " +"policies." msgstr "" -#: assets/pages/search/TldPage.tsx:147 -msgid "Country-Code Top-Level-Domains" +#: assets/utils/functions/rdapTranslation.ts:97 +msgid "" +"This grace period is provided after the initial registration of a domain " +"name. If the registrar deletes the domain name during this period, the " +"registry may provide credit to the registrar for the cost of the " +"registration." msgstr "" -#: assets/pages/search/TldPage.tsx:149 +#: assets/utils/functions/rdapTranslation.ts:98 msgid "" -"Top-level domains based on country codes, identifying websites according to " -"their country of origin." +"This grace period is provided after a domain name registration period " +"expires and is extended (renewed) automatically by the registry. If the " +"registrar deletes the domain name during this period, the registry provides " +"a credit to the registrar for the cost of the renewal." msgstr "" -#: assets/pages/tracking/ConnectorsPage.tsx:20 -msgid "Connector created !" +#: assets/utils/functions/rdapTranslation.ts:100 +msgid "" +"This status code tells your domain's registry to reject requests to delete " +"the domain." msgstr "" -#: assets/pages/tracking/ConnectorsPage.tsx:39 -msgid "Create a Connector" +#: assets/utils/functions/rdapTranslation.ts:101 +msgid "" +"This status code tells your domain's registry to not activate your domain " +"in the DNS and as a consequence, it will not resolve. It is an uncommon " +"status that is usually enacted during legal disputes, non-payment, or when " +"your domain is subject to deletion." msgstr "" -#: assets/pages/tracking/WatchlistPage.tsx:65 -msgid "Watchlist created !" +#: assets/utils/functions/rdapTranslation.ts:102 +msgid "" +"This status code tells your domain's registry to reject requests to renew " +"your domain. It is an uncommon status that is usually enacted during legal " +"disputes or when your domain is subject to deletion." msgstr "" -#: assets/pages/tracking/WatchlistPage.tsx:77 -msgid "Watchlist updated !" +#: assets/utils/functions/rdapTranslation.ts:103 +msgid "" +"This status code tells your domain's registry to reject requests to " +"transfer the domain from your current registrar to another." msgstr "" -#: assets/pages/tracking/WatchlistPage.tsx:101 -msgid "Create a Watchlist" +#: assets/utils/functions/rdapTranslation.ts:104 +msgid "" +"This status code tells your domain's registry to reject requests to update " +"the domain." msgstr "" -#: assets/pages/NotFoundPage.tsx:10 -msgid "Sorry, the page you visited does not exist." +#: assets/utils/functions/rdapTranslation.ts:105 +msgid "" +"This status code indicates that your registrar has asked the registry to " +"restore your domain that was in redemptionPeriod status. Your registry will " +"hold the domain in this status while waiting for your registrar to provide " +"required restoration documentation. If your registrar fails to provide " +"documentation to the registry operator within a set time period to confirm " +"the restoration request, the domain will revert to redemptionPeriod status." msgstr "" -#: assets/pages/StatisticsPage.tsx:32 -msgid "RDAP queries" +#: assets/utils/functions/rdapTranslation.ts:106 +msgid "" +"This status code indicates that your registrar has asked the registry to " +"delete your domain. Your domain will be held in this status for 30 days. " +"After five calendar days following the end of the redemptionPeriod, your " +"domain is purged from the registry database and becomes available for " +"registration." msgstr "" -#: assets/pages/StatisticsPage.tsx:41 -msgid "Alerts sent" +#: assets/utils/functions/rdapTranslation.ts:107 +msgid "" +"This grace period is provided after a domain name registration period is " +"explicitly extended (renewed) by the registrar. If the registrar deletes " +"the domain name during this period, the registry provides a credit to the " +"registrar for the cost of the renewal." msgstr "" -#: assets/pages/StatisticsPage.tsx:55 -msgid "Domain names in database" +#: assets/utils/functions/rdapTranslation.ts:108 +msgid "" +"This status code prevents your domain from being deleted. It is an uncommon " +"status that is usually enacted during legal disputes, at your request, or " +"when a redemptionPeriod status is in place." msgstr "" -#: assets/pages/StatisticsPage.tsx:66 -msgid "Tracked domain names" +#: assets/utils/functions/rdapTranslation.ts:109 +msgid "" +"This status code indicates your domain's Registry Operator will not allow " +"your registrar to renew your domain. It is an uncommon status that is " +"usually enacted during legal disputes or when your domain is subject to " +"deletion." msgstr "" -#: assets/pages/StatisticsPage.tsx:80 -msgid "Purchased domain names" +#: assets/utils/functions/rdapTranslation.ts:110 +msgid "" +"This status code prevents your domain from being transferred from your " +"current registrar to another. It is an uncommon status that is usually " +"enacted during legal or other disputes, at your request, or when a " +"redemptionPeriod status is in place." msgstr "" -#: assets/pages/StatisticsPage.tsx:90 +#: assets/utils/functions/rdapTranslation.ts:111 msgid "" -"This value is based on the status code of the HTTP response from the " -"providers following the domain order." +"This status code locks your domain preventing it from being updated. It is " +"an uncommon status that is usually enacted during legal disputes, at your " +"request, or when a redemptionPeriod status is in place." msgstr "" -#: assets/pages/StatisticsPage.tsx:93 -msgid "Success rate" +#: assets/utils/functions/rdapTranslation.ts:112 +msgid "" +"This status code is set by your domain's Registry Operator. Your domain is " +"not activated in the DNS." msgstr "" -#: assets/pages/LoginPage.tsx:33 -msgid "Create an account" +#: assets/utils/functions/rdapTranslation.ts:113 +msgid "" +"This grace period is provided after the successful transfer of a domain " +"name from one registrar to another. If the new registrar deletes the domain " +"name during this period, the registry provides a credit to the registrar " +"for the cost of the transfer." msgstr "" -#: assets/pages/UserPage.tsx:18 -msgid "Username" +#: assets/utils/functions/rdapTranslation.ts:115 +msgid "" +"The object instance has been allocated administratively (i.e., not for use " +"by the recipient in their own right in operational networks)." msgstr "" -#: assets/pages/UserPage.tsx:21 -msgid "Roles" +#: assets/utils/functions/rdapTranslation.ts:116 +msgid "" +"The object instance has been allocated to an IANA special-purpose address " +"registry." msgstr "" #: assets/utils/functions/showErrorAPI.tsx:19