Merge branch 'main' into MNTOR-1356

This commit is contained in:
Joey Zhou 2023-04-06 13:49:25 -07:00
Родитель 2576974366 ce5d82068f
Коммит ec781761f2
86 изменённых файлов: 2496 добавлений и 491 удалений

Просмотреть файл

@ -48,6 +48,7 @@ jobs:
- checkout
- node/install-packages
- run: npm run lint:js
- run: npm run lint:ts
lint-css:
executor: node
steps:

Просмотреть файл

@ -7,15 +7,18 @@
},
"extends": [
"standard",
"plugin:jsdoc/recommended"
"plugin:jsdoc/recommended",
"plugin:@typescript-eslint/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": [
"header",
"jsdoc"
"jsdoc",
"@typescript-eslint"
],
"rules": {
"no-prototype-builtins": "warn",
@ -37,6 +40,12 @@
"argsIgnorePattern": "^_",
"varsIgnorePattern": "^_"
}
],
"@typescript-eslint/ban-ts-comment": [
"error",
{
"ts-ignore": "allow-with-description"
}
]
}
}

Просмотреть файл

@ -600,7 +600,7 @@ menu-item-logout = Titz'apïx molojri'ïl
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Taq Ojqanem chuqa' Ichinanem
github = { -brand-github }

Просмотреть файл

@ -801,7 +801,7 @@ menu-item-logout = Odhlásit se
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Podmínky a ochrana soukromí
github = { -brand-github }

Просмотреть файл

@ -15,8 +15,6 @@
-brand-lockwise = Firefox Lockwise
-brand-send = Firefox Send
-brand-fpn = Rhwydwaith Preifat Firefox
-brand-mozilla-vpn = Mozilla VPN
-brand-relay = Firefox Relay
##
@ -37,6 +35,9 @@ user-add-invalid-email = E-bost Annilys
user-add-too-many-emails = Rydych yn monitro'r nifer mwyaf o gyfeiriadau e-byst.
user-add-email-verify-subject = Dilysu eich tanysgrifiad i { -product-name }.
user-add-duplicate-email = Mae'r e-bost hwn eisoes wedi'i ychwanegu at { -product-name }.
# Variables:
# $preferencesLink (String) - Link to preferences
# $userEmail (String) - User email address
user-add-duplicate-email-part-2 = Ewch i'ch { $preferencesLink } i wirio statws { $userEmail }.
error-headline = Gwall
user-verify-token-error = Mae angen tocyn dilysu.
@ -50,11 +51,11 @@ scan-placeholder = Rhowch eich Cyfeiriad E-bost
scan-submit = Chwilio am eich E-bost
scan-error = Rhaid ei fod yn e-bost dilys.
download-firefox-banner-button = Llwytho { -brand-name } i Lawr
# Appears after Firefox Monitor has sent a verification email to a new user.
# Appears after Firefox Monitor has sent a verification email to a new user.
signup-modal-sent = Anfonwyd!
sign-up = Ymuno
form-signup-error = Rhaid ei fod yn e-bost dilys
# breach-date = the calendar date a particular data theft occurred.
# breach-date = the calendar date a particular data theft occurred.
breach-date = Dyddiad tor-data:
# compromised accounts = the total number of user accounts exposed in data breach
compromised-accounts = Cyfrifon wedi eu cyfaddawdu:
@ -64,6 +65,8 @@ unsub-headline = Dad-danysgrifio o { -product-name-nowrap }
unsub-blurb = Bydd hyn yn dileu'ch e-bost o'r rhestr { -product-name-nowrap } ac ni fyddwch yn derbyn rhybuddion pan fydd achosion o tor-data'n cael eu cyhoeddi.
unsub-button = Dad-danysgrifio
# Breach data provided by Have I Been Pwned.
# Variables:
# $hibp-link (String) - Link to Have I Been Pwned
hibp-attribution = Mae data tor-data wedi ei ddarparu gan { $hibp-link }
share-twitter = Mae gan y rhan fwyaf o bobl tua 100 o gyfrifon ar-lein. A oes unrhyw un o'ch rhai chi wedi dioddef tor-data? Dewch i ni gael gweld.
share-facebook-headline = Dewch i weld a ydych chi wedi bod yn rhan o dor-data
@ -108,8 +111,6 @@ preferences = Dewisiadau
# Link title
home = Cartref
# Link title
breaches = Tor-data
# Link title
security-tips = Awgrymiadau Diogelwch
fxa-account = { -brand-fxa }
# Aria button message to open menu. "Open Firefox Account Navigation"
@ -190,7 +191,9 @@ feat-security-tips = Awgrymiadau diogelwch i ddiogelu eich cyfrifon
feat-sensitive = Chwilio uwch mewn tor-data sensitif
feat-enroll-multiple = Cofrestru nifer o e-byst ar gyfer monitro tor-data
# This string is shown beneath each of the users email addresses to indicate
# how many known breaches that email address was found in.
# how many known breaches that email address was found in.
# Variables:
# $breachCount (Integer) - Number of breaches
appears-in-x-breaches =
{ $breachCount ->
[zero] Nid yw'n ymddangos mewn unrhyw dor-data.
@ -206,6 +209,8 @@ get-email-alerts = Cadwch yn ddiogel: Sicrhewch rybuddion e-bost pan fydd eich m
search-for-your-email = Chwiliwch am eich cyfeiriad e-bost mewn tor-data cyhoeddus sy'n mynd yn ôl i 2007.
back-to-top = Nôl i'r Brig
comm-opt-0 = E-bostiwch fi os yw un o'm cyfeiriadau e-bost isod yn ymddangos mewn achos o dor-data.
# Variables:
# $primaryEmail (String) - User primary email address
comm-opt-1 = Anfonwch yr holl rybuddion tor-data i { $primaryEmail }.
stop-monitoring-this = Peidio monitro'r e-bost hwn.
resend-verification = Ail-anfon yr e-bost dilysu
@ -214,7 +219,7 @@ send-verification = Anfon Dolen Dilysu
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-summary = Crynodeb o'r Tor-data
show-breaches-for-this-email = Dangos bob achos o dor-data'r e-bost hwn.
@ -225,8 +230,15 @@ remove-fxm-blurb = Diffodd rybuddion { -product-name }. Bydd eich { -brand-fxa }
manage-email-addresses = Rheoli Cyfeiriadau E-bost
# Link title
latest-breach-link = Gweld os oeddech yn rhan o'r tor-data hyn
## Variables:
## $userName (String) - Username
welcome-back = Croeso nôl, { $userName }!
welcome-user = Croeso, { $userName }!
##
breach-alert-subject = Mae { -product-name } wedi canfod eich e-bost mewn tor-data newydd.
your-info-was-discovered-headline = Cafodd eich manylion eu darganfod mewn tor-data newydd.
your-info-was-discovered-blurb =
@ -248,6 +260,8 @@ ba-next-step-blurb-3 = Defnyddiwch reolwr cyfrinair i greu cyfrineiriau cryf ac
faq1 = Dw i ddim yn adnabod y cwmni neu'r wefan hon. Pam ydw i yn y tor-data hwn?
faq2 = Pam y cymerodd gymaint o amser i mi gael gwybod am y tor-data hwn?
faq3 = Sut ydw i'n gwybod bod hwn yn e-bost dilys o { -product-name }?
# Variables:
# $breachCount (Integer) - Number of breaches
new-breaches-found =
{ $breachCount ->
[zero] HEB GANFOD UNRHYW DOR-DATA
@ -259,9 +273,14 @@ new-breaches-found =
}
sign-up-headline-1 = Derbyn rhybuddion parhaus gyda { -brand-fxa }.
account-not-required = Nid oes angen porwr { -brand-name } ar gyfer { -brand-fxa }. Efallai y cewch wybodaeth am wasanaethau { -brand-Mozilla }.
## Variables:
## $breachName (String) - Number of the breach
was-your-info-exposed = A oedd eich manylion wedi'i datgelu yn y tor-data { $breachName }
find-out-if = Gweld a oedd eich data wedi'i ddatgelu yn y tor-data hwn.
fb-not-comp = Nid yw'r e-bost hwn wedi ymddangos yn y tor-data { $breachName }
# Variables:
# $breachCount (Integer) - Number of breaches
other-breaches-found =
{ $breachCount ->
[zero] Nid yw wedi ymddangos mewn unrhyw dor-data.
@ -272,6 +291,8 @@ other-breaches-found =
*[other] Er hynny, mae wedi ymddangos mewn { $breachCount } tor-data arall.
}
fb-comp-only = Ymddangosodd yr e-bost hwn yn y tor-data { $breachName }
# Variables:
# $breachCount (Integer) - Number of breaches
fb-comp-and-others =
{ $breachCount ->
[zero] Nid yw'r e-bost wedi ymddangos mewn unrhyw dor-data.
@ -281,10 +302,11 @@ fb-comp-and-others =
[many] Ymddangosodd yr e-bost mewn { $breachCount } tor-data hysbys, gan gynnwys { $breachName }.
*[other] Ymddangosodd yr e-bost mewn { $breachCount } tor-data hysbys, gan gynnwys { $breachName }.
}
##
no-other-breaches-found = Heb ddarganfod unrhyw dor-data arall o'r chwilio cychwynnol.
no-results-blurb = Ymddiheuriadau, nid yw'r tor-data hwnnw yn ein cronfa ddata.
all-breaches-headline = Pob tor-data yn { -product-name }
search-breaches = Chwilio am Dor-data
# This string contains nested markup that is later used to style and link the text inside of it.
# Please do not modify or remove "<a>", "</a>", "<span>" and "</span>".
facebook-breach-note =
@ -359,6 +381,8 @@ known-data-breaches-exposed =
}
# Button
see-additional-breaches = Gweld Tor-data Ychwanegol
# Variables:
# $breachCount (Integer) - Number of breaches
scan-results-known-breaches =
{ $breachCount ->
[zero] Nid yw'r e-bost wedi ymddangos mewn tor-data.
@ -371,6 +395,8 @@ scan-results-known-breaches =
# This string is shown at the top of the scan results page and is followed
# by the email address that the user searched.
# In page, it reads "Results for: searchedEmail@monitor.com"
# Variables:
# $userEmail (String) - User email address
results-for = Canlyniadau ar gyfer:{ $userEmail }
other-monitored-emails = E-byst eraill sy'n Cael eu Monitro
email-verification-required = Mae Angen Dilysu
@ -386,6 +412,8 @@ get-ongoing-breach-monitoring = Derbyn monitro tor-data parhaus ar gyfeiriadau e
# This is a button and follows a headline reading "Was your info exposed in the ___ breach?"
find-out = Canfod
new-unsub-error = Bydd angen i chi ddad-danysgrifio o un o'r e-byst { -product-name } a anfonwyd.
# Variables:
# $breachCount (Integer) - Number of breaches
other-known-breaches-found =
{ $breachCount ->
[zero] Nid yw wedi ymddangos mewn unrhyw dor-data hysbys.
@ -407,10 +435,12 @@ breach-overview-title = Trosolwg
# $breachTitle is the name of the breached company or website.
# $breachDate and $addedDate are calendar dates.
breach-overview-new = Ar { $breachDate }, profodd { $breachTitle } dor-data. Unwaith y cafodd y tor-data ei ddarganfod a'i ddilysu, cafodd ei ychwanegu at ein cronfa ddata ar { $addedDate }.
# Title appearing on the Preferences dashboard.
# Title appearing on the Preferences dashboard.
monitor-preferences = Dewisiadau { -product-short-name }
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# Variables:
# $userEmail (String) - User email address
signed-in-as = Mewngofnodwyd fel: { $userEmail }
# Appears on the All Breaches page and is followed by a list of filter options
# that a user can filter the visible breaches by.
@ -427,12 +457,16 @@ email-sent = E-bost wedi ei Anfon!
want-to-add = Eisiau ychwanegu e-bost arall?
# This is part of a confirmation message that appears after a user has submitted
# the form to add an additional email to Firefox Monitor.
# Variables:
# $userEmail (String) - User email address
verify-the-link = Gwiriwch y ddolen a anfonwyd at { $userEmail } i'w hychwanegu at { -product-name }.
## These are part of a confirmation page that appears after a user has verified
## an additional email to Firefox Monitor.
email-verified = E-bost Wedi'i Wirio'n Llwyddiannus!
# Variables:
# $email (String) - User email address
email-added-to-subscription = Byddwn yn eich hysbysu os yw { $email } yn ymddangos mewn tor-data newydd.
# This message is displayed after the user has verified their email address.
# { $nestedSignInLink } is replaced by a link, using sign-in-nested as text ("sign in" for English).
@ -446,15 +480,17 @@ sign-in-nested = mewngofnodi
# form to add an additional email to Firefox Monitor. { $preferencesLink } is a link
# to the Preferences page. The code and text for the link is generated elsewhere
# using the { preferences } string.
# Variables:
# $preferencesLink (String) - Link to preferences
manage-all-emails = Rheoli pob cyfeiriad e-bost yn { $preferencesLink }.
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-alert-notifications = Hysbysiadau Rhybudd Tor-data
# This string is a label for the calendar date a breach is added to the database
# and is followed by that date.
# and is followed by that date.
breach-added-label = Ychwanegwyd y tor-data:
how-hackers-work-desc = Diogelwch eich cyfrineiriau gan seiber droseddwyr, gan mai dyna beth maen nhw'n poeni amdano fwyaf.
what-to-do-after-breach-desc = Clowch eich cyfrifon i gadw'ch manylion allan o'r dwylo anghywir.
@ -476,7 +512,11 @@ see-additional-recs = Gweler yr Argymhellion Ychwanegol
## This string contains nested markup that becomes a link later in the code.
## Please do not modify or remove "<a>" and "</a>".
# Variables:
# $affectedEmail (String) - User email address
resolve-top-notification = Ymddangosodd { $affectedEmail } yn y tor-data hwn. <a>Beth i'w wneud nesaf</a>
# Variables:
# $numAffectedEmails (Integer) - Number of affected email address
resolve-top-notification-plural =
{ $numAffectedEmails ->
[zero] Ymddangosodd { $numAffectedEmails } o'ch cyfeiriadau e-bost yn y tor-data hwn. <a>Beth i'w wneud nesaf</a>
@ -508,6 +548,8 @@ confirmation-3-subhead = Un arall wedi mynd. Gwaith da!
# Please do not modify or remove "<a>" and "</a>".
confirmation-3-body = A yw'ch cyfrinair newydd yn unigryw, yn gryf, ac yn anodd ei ddyfalu? <a>Gweld</a>
generic-confirmation-subhead = Mae'r tor-data hwn wedi'i nodi fel wedi'i ddatrys
# Variables:
# $numUnresolvedBreaches (Integer) - Number of resolved breaches
generic-confirmation-message =
{ $numUnresolvedBreaches ->
[zero] I weld yr holl dor-data sy'n weddill, ewch i'ch bwrdd gwaith.
@ -521,9 +563,13 @@ return-to-breach-details-link = Nol i fanylion y tor-data
go-to-dashboard-link = Mynd i'r Bwrdd Gwaith
# This string appears above a breach resolution progress bar and indicates
# the percentage of breaches a user has resolved. For instance, "27% complete".
# Variables:
# $percentComplete (String) - Completion percentage
progress-percent-complete = { $percentComplete }% wedi'i gwblhau
# This string appears in the purple callouts at the top of the user dashboard and shows
# the total number of breaches a user has resolved. For instance, "5 Resolved".
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
num-resolved =
{ $numResolvedBreaches ->
[zero] { $numResolvedBreaches } Wedi'u Datrys
@ -537,6 +583,9 @@ progress-intro-subhead = Newydd yn { -product-name }: Nodi datrys tor-data
progress-intro-message =
Ar ôl adolygu'r manylion am dor-data a chymryd camau i ddiogelu
eich manylion personol, gallwch nodi eich bod wedi datrys y tor-data.
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
# $numTotalBreaches (Integer) - Total number of breaches
progress-status =
{ $numTotalBreaches ->
[zero] { $numResolvedBreaches } allan o { $numTotalBreaches } wedi'u nodi eu bod wedi'u datrys
@ -567,11 +616,13 @@ progress-complete-message =
##
resolve-this-breach-link = Datrys y tor-data hwn
# This string appears in resolved breach cards and is followed by
# This string appears in resolved breach cards and is followed by
# the date the user marked the breach as resolved.
marked-resolved = Nodi wedi'u Datrys:
hide-resolved-button = Cuddio wedi'u Datrys
show-resolved-button = Dangos wedi'u Datrys
# Variables:
# $numPasswords (Integer) - Number of exposed passwords
unresolved-passwords-exposed =
{ $numPasswords ->
[zero] Cyfrineiriau wedi'u hamlygu mewn tor-data heb eu datrys
@ -581,6 +632,8 @@ unresolved-passwords-exposed =
[many] Cyfrineiriau wedi'u hamlygu mewn tor-data heb eu datrys
*[other] Cyfrineiriau wedi'u hamlygu mewn tor-data heb eu datrys
}
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
known-data-breaches-resolved =
{ $numResolvedBreaches ->
[zero] Tor-data hysbys wedi'u nodi fel wedi'u datrys
@ -615,7 +668,10 @@ vpn-promo-copy-new = Diogelwch eich data ar-lein - a dewis cynllun tanysgrifio V
## VPN promotional banner. HTML tags should not be translated, e.g. `<em>`
# user's IP location is determined dynamically by 3rd-party, eg: "Your location: Los Angeles, CA". The 3rd-party service provides its own localization.
# Variables:
# $ip-location (String) - User's IP location is determined dynamically by 3rd-party,
# eg: "Your location: Los Angeles, CA". The 3rd-party service
# provides its own localization.
vpn-banner-location = Eich lleoliad: { $ip-location }
vpn-banner-protect-yourself-with-vpn = <em>Diogelwch eich hun</em> gyda { -brand-mozilla-vpn }.
vpn-banner-protected-with-vpn = <em>Diogelwyd</em> gan { -brand-mozilla-vpn }.
@ -624,7 +680,8 @@ vpn-banner-title-2 = Mae modd olrhain eich lleoliad os nad ydych yn defnyddio VP
vpn-banner-subtitle-2 = Diogelwch eich lleoliad a phori'n ddiogel mewn 3 cham
vpn-banner-status-protected = Statws cyfredol: <em>Diogelwyd ✓</em>
vpn-banner-status-not-protected = Statws cyfredol: <em>Heb ei ddiogelu ⚠</em>
# user's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
# Variables:
# $ip-address (String) - User's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
vpn-banner-ip-address = Cyfeiriad IP: { $ip-address }
vpn-banner-step-1 = Tanysgrifiwch i { -brand-mozilla-vpn }
vpn-banner-step-2 = Dewiswch leoliad i'r VPN
@ -683,6 +740,8 @@ ad-unit-6-before-you-complete = Cyn i chi gwblhau'r cofrestriad nesaf hwnnw, def
-brand-mozilla = Mozilla
-brand-mozilla-foundation = Mozilla Foundation
-brand-github = GitHub
-brand-mozilla-vpn = Mozilla VPN
-brand-relay = Firefox Relay
##
@ -704,6 +763,10 @@ sign-in = Mewngofnodi
site-nav-breaches-link = Datrys Tor-data
site-nav-settings-link = Gosodiadau
site-nav-help-link = Cymorth a Chefnogaeth
# This call-out is above 2 image links for Firefox Relay and Mozilla VPN
site-nav-ad-callout = Rhowch gynnig ar ein hoffer diogelwch eraill:
brand-relay = { -brand-relay }
brand-mozilla-vpn = { -brand-mozilla-vpn }
## User menu
@ -717,9 +780,10 @@ menu-item-logout = Allgofnodi
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Telerau a Phreifatrwydd
github = { -brand-github }
footer-nav-all-breaches = Pob Tor-data
## Error page
@ -732,3 +796,17 @@ error-page-error-404-cta-button = Nôl
# $errorCode (number) - the status code of the error, e.g. 403
error-page-error-other-title = { $errorCode } Aeth rhywbeth o'i le
error-page-error-other-copy = Ceisiwch eto neu dewch yn ôl yn nes ymlaen
## Breach overview page
all-breaches-headline-2 = Pob tor-data canfuwyd gan { -brand-fx-monitor }
all-breaches-lead = Rydym yn monitro'r holl achosion hysbys o dor-data i ganfod a gafodd eich manylion personol eu peryglu. Dyma restr lawn or holl dor-data sydd wediu hadrodd ers 2007.
search-breaches = Chwilio am Dor-data
# the kind of user data exposed to hackers in data breach.
exposed-data = Data datgeledig:
## Public breach detail page
find-out-if-2 = Darganfyddwch a oeddech yn gysylltiedig â'r tor-data hwn
find-out-if-description = Byddwn yn eich helpu i weld yn gyflym a oedd eich cyfeiriad e-bost wedi'i ddatgelu drwy'r tor-data hwn, a gwybod beth i'w wneud nesaf.
breach-detail-cta-signup = Gwiriwch am dor-data

Просмотреть файл

@ -10,10 +10,10 @@ rec-ssn =
rec-pw-1-subhead = Newidiwch eich cyfrinair
# Link title
rec-pw-1-cta = Newid cyfrinair y wefan hon
rec-pw-1 =
rec-pw-1-2 =
Gwnewch y cyfrinair hwn yn unigryw ac yn wahanol i unrhyw rai eraill rydych chi'n eu defnyddio.
Strategaeth dda i'w dilyn yw cyfuno dau neu fwy o eiriau
digyswllt er mwyn creu cyfrinymadrodd cyfan.
Syniad dda yw cyfuno dau neu fwy o eiriau digyswllt er mwyn
creu cyfrinymadrodd cyfan a chynnwys rhifau a symbolau.
# Recommendation subhead
rec-pw-2-subhead = Diweddarwch fewngofnodion eraill sy'n defnyddio'r un cyfrinair
# Link title
@ -54,22 +54,13 @@ rec-email =
Mae rhoi eich cyfeiriad e-bost go iawn yn ei gwneud hi'n haws i hacwyr neu dracwyr ddod o hyd i'ch cyfrineiriau neu eich targedu ar-lein. Mae gwasanaeth fel { -brand-relay }
yn cuddio'ch cyfeiriad e-bost go iawn wrth anfon e-byst i'ch mewnflwch go iawn.
# Recommendation subhead
rec-ip-subhead = Defnyddiwch wasanaeth sy'n cuddio'ch cyfeiriad IP
# Link title
rec-ip-us-cta = Rhowch gynnig ar { -brand-fpn }
rec-ip-us =
Mae eich cyfeiriad Protocol Rhyngrwyd (cyfeiriad IP) yn nodi'ch lleoliad
a'ch darparwr gwasanaeth rhyngrwyd. Mae gwasanaeth fel { -brand-fpn }
yn cuddio'ch cyfeiriad IP er mwyn cuddio'ch lleoliad.
rec-ip-non-us =
Mae eich cyfeiriad Protocol Rhyngrwyd (cyfeiriad IP) yn nodi'ch lleoliad
a'ch darparwr gwasanaeth rhyngrwyd. Gyda rhwydwaith preifat rhithwir (VPN), gallwch guddio'ch lleoliad
a chuddio'ch cyfeiriad IP.
rec-ip-subhead-2 = Defnyddiwch VPN i guddio'ch cyfeiriad IP
# Recommendation subhead
rec-moz-vpn-cta = Rhowch gynnig ar { -brand-mozilla-vpn }
rec-moz-vpn-update =
Gall eich cyfeiriad Protocol Rhyngrwyd (cyfeiriad IP) yn nodi'ch lleoliad
a'ch darparwr gwasanaeth rhyngrwyd. Mae gwasanaeth fel { -brand-mozilla-vpn } yn cuddio cyfeiriad IP a lleoliad eich dyfais.
rec-moz-vpn-update-2 =
Mae eich cyfeiriad Protocol Rhyngrwyd (cyfeiriad IP) yn amlygu'ch
lleoliad a'ch darparwr gwasanaeth rhyngrwyd. Mae gwasanaeth
fel { -brand-mozilla-vpn } yn cuddio'ch cyfeiriad IP er mwyn cuddio'ch lleoliad.
rec-hist-pw-subhead = Peidio ailddefnyddio cyfrineiriau
# Link title
rec-hist-pw-cta-fx = Gweld mewngofnodi yn { -brand-name }

Просмотреть файл

@ -692,7 +692,7 @@ menu-item-logout = Log ud
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Vilkår og beskyttelse af personlige oplysninger
github = { -brand-github }

Просмотреть файл

@ -701,7 +701,7 @@ menu-item-logout = Abmelden
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Nutzungsbedingungen und Datenschutzerklärung
github = { -brand-github }
footer-nav-all-breaches = Alle Datenlecks

Просмотреть файл

@ -32,8 +32,6 @@
-brand-lockwise = Firefox Lockwise
-brand-send = Firefox Send
-brand-fpn = Firefox Private Network
-brand-mozilla-vpn = Mozilla VPN
-brand-relay = Firefox Relay
##
@ -54,6 +52,9 @@ user-add-invalid-email = Άκυρο email
user-add-too-many-emails = Παρακολουθείτε τον μέγιστο αριθμό διευθύνσεων email.
user-add-email-verify-subject = Επαληθεύστε τη συνδρομή σας στο { -product-name }.
user-add-duplicate-email = Αυτό το email έχει ήδη προστεθεί στο { -product-name }.
# Variables:
# $preferencesLink (String) - Link to preferences
# $userEmail (String) - User email address
user-add-duplicate-email-part-2 = Επισκεφθείτε τις { $preferencesLink } σας για να ελέγξετε την κατάσταση του { $userEmail }.
error-headline = Σφάλμα
user-verify-token-error = Απαιτείται διακριτικό επαλήθευσης.
@ -67,11 +68,11 @@ scan-placeholder = Εισαγάγετε διεύθυνση email
scan-submit = Αναζήτηση email
scan-error = Πρέπει να είναι ένα έγκυρο email.
download-firefox-banner-button = Λήψη του { -brand-name }
# Appears after Firefox Monitor has sent a verification email to a new user.
# Appears after Firefox Monitor has sent a verification email to a new user.
signup-modal-sent = Απεστάλη!
sign-up = Εγγραφή
form-signup-error = Πρέπει να είναι ένα έγκυρο email
# breach-date = the calendar date a particular data theft occurred.
# breach-date = the calendar date a particular data theft occurred.
breach-date = Ημερομηνία παραβίασης:
# compromised accounts = the total number of user accounts exposed in data breach
compromised-accounts = Παραβιασμένοι λογαριασμοί:
@ -81,6 +82,8 @@ unsub-headline = Κατάργησης εγγραφής από το { -product-na
unsub-blurb = Το email σας θα αφαιρεθεί από τη λίστα του { -product-name-nowrap } και δεν θα λαμβάνετε πλέον ειδοποιήσεις όταν ανακοινώνονται νέες παραβιάσεις.
unsub-button = Κατάργηση εγγραφής
# Breach data provided by Have I Been Pwned.
# Variables:
# $hibp-link (String) - Link to Have I Been Pwned
hibp-attribution = Τα δεδομένα παραβιάσεων παρέχονται από το { $hibp-link }
share-twitter = Οι περισσότεροι άνθρωποι έχουν περίπου 100 διαδικτυακούς λογαριασμούς. Έχει εκτεθεί κάποιος από τους δικούς σας σε παραβίαση δεδομένων; Μάθετε.
share-facebook-headline = Μάθετε αν υπήρξατε θύμα της παραβίασης δεδομένων
@ -130,8 +133,6 @@ preferences = Προτιμήσεις
# Link title
home = Αρχική
# Link title
breaches = Παραβιάσεις
# Link title
security-tips = Συμβουλές ασφαλείας
fxa-account = { -brand-fxa }
# Aria button message to open menu. "Open Firefox Account Navigation"
@ -230,7 +231,9 @@ feat-security-tips = Συμβουλές ασφάλειας για την προ
feat-sensitive = Σύνθετη αναζήτηση σε ευαίσθητες διαρροές
feat-enroll-multiple = Καταχωρήστε πολλαπλά email για εποπτεία παραβιάσεων
# This string is shown beneath each of the users email addresses to indicate
# how many known breaches that email address was found in.
# how many known breaches that email address was found in.
# Variables:
# $breachCount (Integer) - Number of breaches
appears-in-x-breaches =
{ $breachCount ->
[one] Εμφανίζεται σε { $breachCount } γνωστή παραβίαση.
@ -242,6 +245,8 @@ get-email-alerts = Μείνετε ασφαλείς: Λάβετε ειδοποι
search-for-your-email = Αναζητήστε τη διεύθυνση email σας σε παραβιάσεις δημόσιων δεδομένων από το 2007.
back-to-top = Πίσω στην κορυφή
comm-opt-0 = Να ειδοποιηθώ σε περίπτωση που κάποια από τις εξής διευθύνσεις email εμφανιστεί σε παραβίαση δεδομένων.
# Variables:
# $primaryEmail (String) - User primary email address
comm-opt-1 = Αποστολή όλων των ειδοποιήσεων παραβιάσεων στο { $primaryEmail }.
stop-monitoring-this = Διακοπή εποπτείας αυτού του email.
resend-verification = Εκ νέου αποστολή email επαλήθευσης
@ -250,7 +255,7 @@ send-verification = Αποστολή συνδέσμου επαλήθευσης
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-summary = Περίληψη παραβίασης
show-breaches-for-this-email = Εμφάνιση όλων των παραβιάσεων για αυτό το email.
@ -263,8 +268,15 @@ remove-fxm-blurb =
manage-email-addresses = Διαχείριση διευθύνσεων email
# Link title
latest-breach-link = Δείτε αν επηρεαστήκατε από αυτήν την παραβίαση
## Variables:
## $userName (String) - Username
welcome-back = Καλώς ορίσατε και πάλι, { $userName }!
welcome-user = Καλώς ορίσατε, { $userName }!
##
breach-alert-subject = Το { -product-name } βρήκε το email σας σε νέα παραβίαση δεδομένων
your-info-was-discovered-headline = Οι πληροφορίες σας ανακαλύφθηκαν σε μια νέα παραβίαση δεδομένων.
your-info-was-discovered-blurb =
@ -288,6 +300,8 @@ ba-next-step-blurb-3 =
faq1 = Δεν αναγνωρίζω αυτήν την εταιρεία ή τον ιστότοπο. Γιατί είμαι σε αυτήν την παραβίαση;
faq2 = Γιατί πέρασε τόσος καιρός μέχρι να ενημερωθώ για αυτή την παραβίαση;
faq3 = Πώς ξέρω αν αυτό είναι ένα γνήσιο email από το { -product-name };
# Variables:
# $breachCount (Integer) - Number of breaches
new-breaches-found =
{ $breachCount ->
[one] ΒΡΕΘΗΚΕ { $breachCount } ΝΕΑ ΠΑΡΑΒΙΑΣΗ
@ -295,24 +309,32 @@ new-breaches-found =
}
sign-up-headline-1 = Λάβετε συνεχείς ειδοποιήσεις με έναν { -brand-fxa(case: "acc", capitalization: "lower") }.
account-not-required = Δεν απαιτείται το { -brand-name } για ένα { -brand-fxa }. Μπορείτε να λάβετε πληροφορίες σχετικά με τις υπηρεσίες { -brand-Mozilla }.
## Variables:
## $breachName (String) - Number of the breach
was-your-info-exposed = Εκτέθηκαν οι πληροοφορίες σας στην παραβίαση δεδομένων { $breachName };
find-out-if = Μάθετε αν τα δεδομένα σας εκτέθηκαν σε αυτή την παραβίαση.
fb-not-comp = Αυτό το email δεν εμφανίστηκε στην παραβίαση { $breachName }.
# Variables:
# $breachCount (Integer) - Number of breaches
other-breaches-found =
{ $breachCount ->
[one] Ωστόσο, εμφανίστηκε σε άλλη { $breachCount } παραβίαση.
*[other] Ωστόσο, εμφανίστηκε σε άλλες { $breachCount } παραβιάσεις.
}
fb-comp-only = Αυτό το email εμφανίστηκε στην παραβίαση { $breachName }.
# Variables:
# $breachCount (Integer) - Number of breaches
fb-comp-and-others =
{ $breachCount ->
[one] Αυτό το email εμφανίστηκε σε { $breachCount } γνωστές παραβιάσεις δεδομένων, όπως το { $breachName }.
*[other] Αυτά τα email εμφανίστηκαν σε { $breachCount } γνωστές παραβιάσεις δεδομένων, όπως το { $breachName }.
}
##
no-other-breaches-found = Δεν βρέθηκαν άλλες παραβιάσεις με τη βασική αναζήτηση.
no-results-blurb = Λυπούμαστε, αυτή η παραβίαση δεν είναι στη βάση δεδομένων μας.
all-breaches-headline = Όλες οι παραβιάσεις στο { -product-name }
search-breaches = Αναζήτηση παραβιάσεων
# This string contains nested markup that is later used to style and link the text inside of it.
# Please do not modify or remove "<a>", "</a>", "<span>" and "</span>".
facebook-breach-note =
@ -383,6 +405,8 @@ known-data-breaches-exposed =
}
# Button
see-additional-breaches = Προβολή επιπρόσθετων παραβιάσεων
# Variables:
# $breachCount (Integer) - Number of breaches
scan-results-known-breaches =
{ $breachCount ->
[one] Αυτό το email εμφανίστηκε σε 1 γνωστή παραβίαση δεδομένων.
@ -391,6 +415,8 @@ scan-results-known-breaches =
# This string is shown at the top of the scan results page and is followed
# by the email address that the user searched.
# In page, it reads "Results for: searchedEmail@monitor.com"
# Variables:
# $userEmail (String) - User email address
results-for = Αποτελέσματα για: { $userEmail }
other-monitored-emails = Άλλα εποπτευμένα email
email-verification-required = Απαιτείται επαλήθευση email
@ -406,6 +432,8 @@ get-ongoing-breach-monitoring = Λάβετε συνεχή εποπτεία πα
# This is a button and follows a headline reading "Was your info exposed in the ___ breach?"
find-out = Μάθετε
new-unsub-error = Θα πρέπει να καταργήσετε την εγγραφή σας από ένα από τα email που έστειλε το { -product-name }.
# Variables:
# $breachCount (Integer) - Number of breaches
other-known-breaches-found =
{ $breachCount ->
[one] Ωστόσο, εμφανίστηκε σε άλλη { $breachCount } γνωστή παραβίαση.
@ -423,10 +451,12 @@ breach-overview-title = Επισκόπηση
# $breachTitle is the name of the breached company or website.
# $breachDate and $addedDate are calendar dates.
breach-overview-new = Στις { $breachDate }, το { $breachTitle } παραβιάστηκε. Μόλις ανακαλύφθηκε και επαληθεύτηκε η παραβίαση, προστέθηκε στη βάση δεδομένων μας στις { $addedDate }.
# Title appearing on the Preferences dashboard.
# Title appearing on the Preferences dashboard.
monitor-preferences = Προτιμήσεις { -product-short-name }
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# Variables:
# $userEmail (String) - User email address
signed-in-as = Σε σύνδεση ως: { $userEmail }
# Appears on the All Breaches page and is followed by a list of filter options
# that a user can filter the visible breaches by.
@ -443,12 +473,16 @@ email-sent = Απεστάλη email!
want-to-add = Θέλετε να προσθέσετε ένα άλλο email;
# This is part of a confirmation message that appears after a user has submitted
# the form to add an additional email to Firefox Monitor.
# Variables:
# $userEmail (String) - User email address
verify-the-link = Επαληθεύστε το σύνδεσμο που απεστάλη στο { $userEmail } για να το προσθέσετε στο { -product-name }.
## These are part of a confirmation page that appears after a user has verified
## an additional email to Firefox Monitor.
email-verified = Επιτυχής επαλήθευση email!
# Variables:
# $email (String) - User email address
email-added-to-subscription = Θα σας ειδοποιήσουμε αν το { $email } εμφανιστεί σε νέα διαρροή δεδομένων.
# This message is displayed after the user has verified their email address.
# { $nestedSignInLink } is replaced by a link, using sign-in-nested as text ("sign in" for English).
@ -462,15 +496,17 @@ sign-in-nested = σύνδεση
# form to add an additional email to Firefox Monitor. { $preferencesLink } is a link
# to the Preferences page. The code and text for the link is generated elsewhere
# using the { preferences } string.
# Variables:
# $preferencesLink (String) - Link to preferences
manage-all-emails = Διαχείριση όλων των διευθύνσεων email στις { $preferencesLink }.
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-alert-notifications = Ειδοποιήσεις παραβιάσεων
# This string is a label for the calendar date a breach is added to the database
# and is followed by that date.
# and is followed by that date.
breach-added-label = Ημερομηνία προσθήκης:
how-hackers-work-desc = Προστατέψτε τους κωδικούς πρόσβασής σας από κυβερνοεγκληματίες, καθώς αυτοί τους ενδιαφέρουν περισσότερο.
what-to-do-after-breach-desc = Κλειδώστε τους λογαριασμούς σας για να μην πέσουν τα στοιχεία σας σε λάθος χέρια.
@ -492,7 +528,11 @@ see-additional-recs = Προβολή επιπρόσθετων προτάσεων
## This string contains nested markup that becomes a link later in the code.
## Please do not modify or remove "<a>" and "</a>".
# Variables:
# $affectedEmail (String) - User email address
resolve-top-notification = Το { $affectedEmail } εμφανίστηκε σε αυτή την παραβίαση. <a>Τι να κάνετε στη συνέχεια</a>
# Variables:
# $numAffectedEmails (Integer) - Number of affected email address
resolve-top-notification-plural =
{ $numAffectedEmails ->
*[other] { $numAffectedEmails } από τις διευθύνσεις email σας εμφανίστηκαν σε αυτή την παραβίαση. <a>Τι να κάνετε στη συνέχεια</a>
@ -519,6 +559,8 @@ confirmation-3-subhead = Αντιμετωπίστηκε ακόμη ένα. Κα
# Please do not modify or remove "<a>" and "</a>".
confirmation-3-body = Είναι ο νέος σας κωδικός πρόσβασης μοναδικός, ισχυρός και δύσκολος; <a>Μάθετε εδώ</a>
generic-confirmation-subhead = Αυτή η παραβίαση έχει επισημανθεί ως επιλυμένη
# Variables:
# $numUnresolvedBreaches (Integer) - Number of resolved breaches
generic-confirmation-message =
{ $numUnresolvedBreaches ->
[one] Για να δείτε την εναπομείνουσα διαρροή, μεταβείτε στον πίνακα ελέγχου.
@ -528,9 +570,13 @@ return-to-breach-details-link = Επιστροφή στις λεπτομέρει
go-to-dashboard-link = Μετάβαση στον πίνακα
# This string appears above a breach resolution progress bar and indicates
# the percentage of breaches a user has resolved. For instance, "27% complete".
# Variables:
# $percentComplete (String) - Completion percentage
progress-percent-complete = { $percentComplete }% ολοκλήρωση
# This string appears in the purple callouts at the top of the user dashboard and shows
# the total number of breaches a user has resolved. For instance, "5 Resolved".
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
num-resolved =
{ $numResolvedBreaches ->
*[other] Επιλύθηκαν { $numResolvedBreaches }
@ -539,6 +585,9 @@ progress-intro-subhead = Νέο στο { -product-name }: Επισήμανση
progress-intro-message =
Αφού ελέγξετε τα στοιχεία μιας παραβίασης και λάβετε μέτρα για την προστασία
των δεδομένων σας, μπορείτε να επισημάνετε τις παραβιάσεις ως επιλυμένες.
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
# $numTotalBreaches (Integer) - Total number of breaches
progress-status =
{ $numTotalBreaches ->
*[other] { $numResolvedBreaches } από { $numTotalBreaches } παραβιάσεις έχουν επισημανθεί ως επιλυμένες
@ -563,16 +612,20 @@ progress-complete-message =
##
resolve-this-breach-link = Επίλυση παραβίασης
# This string appears in resolved breach cards and is followed by
# This string appears in resolved breach cards and is followed by
# the date the user marked the breach as resolved.
marked-resolved = Επισημασμένα ως επιλυμένα:
hide-resolved-button = Απόκρυψη επιλυμένων
show-resolved-button = Εμφάνιση επιλυμένων
# Variables:
# $numPasswords (Integer) - Number of exposed passwords
unresolved-passwords-exposed =
{ $numPasswords ->
[one] Εκτεθειμένος κωδικός πρόσβασης σε μη επιλυμένες παραβιάσεις
*[other] Εκτεθειμένοι κωδικοί πρόσβασης σε μη επιλυμένες παραβιάσεις
}
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
known-data-breaches-resolved =
{ $numResolvedBreaches ->
[one] Γνωστή παραβίαση δεδομένων επισημάνθηκε ως επιλυμένη
@ -603,7 +656,10 @@ vpn-promo-copy-new = Προστατέψτε τα διαδικτυακά σας
## VPN promotional banner. HTML tags should not be translated, e.g. `<em>`
# user's IP location is determined dynamically by 3rd-party, eg: "Your location: Los Angeles, CA". The 3rd-party service provides its own localization.
# Variables:
# $ip-location (String) - User's IP location is determined dynamically by 3rd-party,
# eg: "Your location: Los Angeles, CA". The 3rd-party service
# provides its own localization.
vpn-banner-location = Η τοποθεσία σας: { $ip-location }
vpn-banner-protect-yourself-with-vpn = <em>Προστατευτείτε</em> με το { -brand-mozilla-vpn }.
vpn-banner-protected-with-vpn = <em>Προστατεύεστε</em> με το { -brand-mozilla-vpn }.
@ -612,7 +668,8 @@ vpn-banner-title-2 = Η τοποθεσία σας μπορεί να καταγρ
vpn-banner-subtitle-2 = Προστατεύστε την τοποθεσία σας και περιηγηθείτε με ασφάλεια σε 3 βήματα.
vpn-banner-status-protected = Τρέχουσα κατάσταση: <em>Υπό προστασία ✓</em>
vpn-banner-status-not-protected = Τρέχουσα κατάσταση: <em>Χωρίς προστασία ⚠</em>
# user's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
# Variables:
# $ip-address (String) - User's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
vpn-banner-ip-address = Διεύθυνση IP: { $ip-address }
vpn-banner-step-1 = Εγγραφείτε στο { -brand-mozilla-vpn }
vpn-banner-step-2 = Επιλέξτε μια τοποθεσία VPN
@ -671,6 +728,8 @@ ad-unit-6-before-you-complete = Πριν ολοκληρώσετε την επό
-brand-mozilla = Mozilla
-brand-mozilla-foundation = Mozilla Foundation
-brand-github = GitHub
-brand-mozilla-vpn = Mozilla VPN
-brand-relay = Firefox Relay
##
@ -709,6 +768,8 @@ sign-in = Σύνδεση
site-nav-breaches-link = Επίλυση παραβιάσεων δεδομένων
site-nav-settings-link = Ρυθμίσεις
site-nav-help-link = Βοήθεια και υποστήριξη
brand-relay = { -brand-relay }
brand-mozilla-vpn = { -brand-mozilla-vpn }
## User menu
@ -722,9 +783,10 @@ menu-item-logout = Αποσύνδεση
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Όροι και απόρρητο
github = { -brand-github }
footer-nav-all-breaches = Όλες οι παραβιάσεις
## Error page
@ -737,3 +799,10 @@ error-page-error-404-cta-button = Επιστροφή
# $errorCode (number) - the status code of the error, e.g. 403
error-page-error-other-title = { $errorCode }: Κάτι πήγε στραβά
error-page-error-other-copy = Παρακαλούμε δοκιμάστε ξανά ή επιστρέψτε αργότερα
## Breach overview page
search-breaches = Αναζήτηση παραβιάσεων
## Public breach detail page

Просмотреть файл

@ -667,6 +667,6 @@ sign-in = Sign In
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Terms and Privacy
github = { -brand-github }

Просмотреть файл

@ -15,8 +15,6 @@
-brand-lockwise = Firefox Lockwise
-brand-send = Firefox Send
-brand-fpn = Firefox Private Network
-brand-mozilla-vpn = Mozilla VPN
-brand-relay = Firefox Relay
##
@ -37,6 +35,9 @@ user-add-invalid-email = Invalid Email
user-add-too-many-emails = You are monitoring the maximum number of email addresses.
user-add-email-verify-subject = Verify your subscription to { -product-name }.
user-add-duplicate-email = This email has already been added to { -product-name }.
# Variables:
# $preferencesLink (String) - Link to preferences
# $userEmail (String) - User email address
user-add-duplicate-email-part-2 = Visit your { $preferencesLink } to check the status of { $userEmail }.
error-headline = Error
user-verify-token-error = Verification token is required.
@ -50,11 +51,11 @@ scan-placeholder = Enter Email Address
scan-submit = Search Your Email
scan-error = Must be a valid email.
download-firefox-banner-button = Download { -brand-name }
# Appears after Firefox Monitor has sent a verification email to a new user.
# Appears after Firefox Monitor has sent a verification email to a new user.
signup-modal-sent = Sent!
sign-up = Sign Up
form-signup-error = Must be a valid email
# breach-date = the calendar date a particular data theft occurred.
# breach-date = the calendar date a particular data theft occurred.
breach-date = Breach date:
# compromised accounts = the total number of user accounts exposed in data breach
compromised-accounts = Compromised accounts:
@ -64,6 +65,8 @@ unsub-headline = Unsubscribe from { -product-name-nowrap }
unsub-blurb = This will remove your email from the { -product-name-nowrap } list and you will no longer receive alerts when new breaches are announced.
unsub-button = Unsubscribe
# Breach data provided by Have I Been Pwned.
# Variables:
# $hibp-link (String) - Link to Have I Been Pwned
hibp-attribution = Breach data provided by { $hibp-link }
share-twitter = Most people have about 100 online accounts. Have any of yours been exposed in a data breach? Find out.
share-facebook-headline = Find out if youve been part of a data breach
@ -113,8 +116,6 @@ preferences = Preferences
# Link title
home = Home
# Link title
breaches = Breaches
# Link title
security-tips = Security Tips
fxa-account = { -brand-fxa }
# Aria button message to open menu. "Open Firefox Account Navigation"
@ -213,7 +214,9 @@ feat-security-tips = Security tips to protect your accounts
feat-sensitive = Advanced search in sensitive breaches
feat-enroll-multiple = Enroll multiple emails in breach monitoring
# This string is shown beneath each of the users email addresses to indicate
# how many known breaches that email address was found in.
# how many known breaches that email address was found in.
# Variables:
# $breachCount (Integer) - Number of breaches
appears-in-x-breaches =
{ $breachCount ->
[one] Appears in { $breachCount } known breach.
@ -225,6 +228,8 @@ get-email-alerts = Stay safe: Get email alerts when your information appears in
search-for-your-email = Search for your email address in public data breaches going back to 2007.
back-to-top = Back to Top
comm-opt-0 = Email me if one of my email addresses below appears in a data breach.
# Variables:
# $primaryEmail (String) - User primary email address
comm-opt-1 = Send all breach alerts to { $primaryEmail }.
stop-monitoring-this = Stop monitoring this email.
resend-verification = Resend verification email
@ -233,7 +238,7 @@ send-verification = Send Verification Link
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-summary = Breach Summary
show-breaches-for-this-email = Show all breaches for this email.
@ -246,8 +251,15 @@ remove-fxm-blurb =
manage-email-addresses = Manage Email Addresses
# Link title
latest-breach-link = See if you were in this breach
## Variables:
## $userName (String) - Username
welcome-back = Welcome back, { $userName }!
welcome-user = Welcome, { $userName }!
##
breach-alert-subject = { -product-name } found your email in a new data breach.
your-info-was-discovered-headline = Your information was discovered in a new data breach.
your-info-was-discovered-blurb =
@ -271,6 +283,8 @@ ba-next-step-blurb-3 =
faq1 = I dont recognise this company or web site. Why am I in this breach?
faq2 = Why did it take so long to notify me of this breach?
faq3 = How do I know this is a legitimate email from { -product-name }?
# Variables:
# $breachCount (Integer) - Number of breaches
new-breaches-found =
{ $breachCount ->
[one] { $breachCount } NEW BREACH FOUND
@ -278,24 +292,32 @@ new-breaches-found =
}
sign-up-headline-1 = Get ongoing alerts with a { -brand-fxa }.
account-not-required = { -brand-name } browser not required for a { -brand-fxa }. You may receive info about { -brand-Mozilla } services.
## Variables:
## $breachName (String) - Number of the breach
was-your-info-exposed = Was your info exposed in the { $breachName } data breach?
find-out-if = Find out if your data was exposed in this breach.
fb-not-comp = This email did not appear in the { $breachName } breach.
# Variables:
# $breachCount (Integer) - Number of breaches
other-breaches-found =
{ $breachCount ->
[one] However, it did appear in { $breachCount } other breach.
*[other] However, it did appear in { $breachCount } other breaches.
}
fb-comp-only = This email appeared in the { $breachName } breach.
# Variables:
# $breachCount (Integer) - Number of breaches
fb-comp-and-others =
{ $breachCount ->
[one] This email appeared in { $breachCount } known data breach, including { $breachName }.
*[other] This email appeared in { $breachCount } known data breaches, including { $breachName }.
}
##
no-other-breaches-found = No other breaches found from a basic search.
no-results-blurb = Sorry, that breach is not in our database.
all-breaches-headline = All breaches in { -product-name }
search-breaches = Search Breaches
# This string contains nested markup that is later used to style and link the text inside of it.
# Please do not modify or remove "<a>", "</a>", "<span>" and "</span>".
facebook-breach-note =
@ -366,6 +388,8 @@ known-data-breaches-exposed =
}
# Button
see-additional-breaches = See Additional Breaches
# Variables:
# $breachCount (Integer) - Number of breaches
scan-results-known-breaches =
{ $breachCount ->
[one] This email appeared in 1 known data breach.
@ -374,6 +398,8 @@ scan-results-known-breaches =
# This string is shown at the top of the scan results page and is followed
# by the email address that the user searched.
# In page, it reads "Results for: searchedEmail@monitor.com"
# Variables:
# $userEmail (String) - User email address
results-for = Results for: { $userEmail }
other-monitored-emails = Other Monitored Emails
email-verification-required = Email Verification Required
@ -389,6 +415,8 @@ get-ongoing-breach-monitoring = Get ongoing breach monitoring for multiple email
# This is a button and follows a headline reading "Was your info exposed in the ___ breach?"
find-out = Find Out
new-unsub-error = Youll need to unsubscribe from one of the emails { -product-name } sent.
# Variables:
# $breachCount (Integer) - Number of breaches
other-known-breaches-found =
{ $breachCount ->
[one] However, it did appear in { $breachCount } other known breach.
@ -406,10 +434,12 @@ breach-overview-title = Overview
# $breachTitle is the name of the breached company or website.
# $breachDate and $addedDate are calendar dates.
breach-overview-new = On { $breachDate }, { $breachTitle } was breached. Once the breach was discovered and verified, it was added to our database on { $addedDate }.
# Title appearing on the Preferences dashboard.
# Title appearing on the Preferences dashboard.
monitor-preferences = { -product-short-name } Preferences
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# Variables:
# $userEmail (String) - User email address
signed-in-as = Signed in as: { $userEmail }
# Appears on the All Breaches page and is followed by a list of filter options
# that a user can filter the visible breaches by.
@ -426,12 +456,16 @@ email-sent = Email Sent!
want-to-add = Want to add another email?
# This is part of a confirmation message that appears after a user has submitted
# the form to add an additional email to Firefox Monitor.
# Variables:
# $userEmail (String) - User email address
verify-the-link = Verify the link sent to { $userEmail } to add it to { -product-name }.
## These are part of a confirmation page that appears after a user has verified
## an additional email to Firefox Monitor.
email-verified = Email Successfully Verified!
# Variables:
# $email (String) - User email address
email-added-to-subscription = Well alert you if { $email } appears in a data breach.
# This message is displayed after the user has verified their email address.
# { $nestedSignInLink } is replaced by a link, using sign-in-nested as text ("sign in" for English).
@ -445,15 +479,17 @@ sign-in-nested = sign in
# form to add an additional email to Firefox Monitor. { $preferencesLink } is a link
# to the Preferences page. The code and text for the link is generated elsewhere
# using the { preferences } string.
# Variables:
# $preferencesLink (String) - Link to preferences
manage-all-emails = Manage all email addresses in { $preferencesLink }.
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-alert-notifications = Breach Alert Notifications
# This string is a label for the calendar date a breach is added to the database
# and is followed by that date.
# and is followed by that date.
breach-added-label = Breach added:
how-hackers-work-desc = Protect your passwords from cyber criminals, since thats what they care about most.
what-to-do-after-breach-desc = Lock down your accounts to keep your information out of the wrong hands.
@ -475,7 +511,11 @@ see-additional-recs = See Additional Recommendations
## This string contains nested markup that becomes a link later in the code.
## Please do not modify or remove "<a>" and "</a>".
# Variables:
# $affectedEmail (String) - User email address
resolve-top-notification = { $affectedEmail } appeared in this breach. <a>What to do next</a>
# Variables:
# $numAffectedEmails (Integer) - Number of affected email address
resolve-top-notification-plural =
{ $numAffectedEmails ->
*[other] { $numAffectedEmails } of your email addresses appeared in this breach. <a>What to do next</a>
@ -502,6 +542,8 @@ confirmation-3-subhead = Another one down. Nice work!
# Please do not modify or remove "<a>" and "</a>".
confirmation-3-body = Is your new password unique, strong, and hard to guess? <a>Find out</a>
generic-confirmation-subhead = This breach has been marked as resolved
# Variables:
# $numUnresolvedBreaches (Integer) - Number of resolved breaches
generic-confirmation-message =
{ $numUnresolvedBreaches ->
[one] To see the remaining breach, go to your dashboard.
@ -511,9 +553,13 @@ return-to-breach-details-link = Return to breach details
go-to-dashboard-link = Go to Dashboard
# This string appears above a breach resolution progress bar and indicates
# the percentage of breaches a user has resolved. For instance, "27% complete".
# Variables:
# $percentComplete (String) - Completion percentage
progress-percent-complete = { $percentComplete }% complete
# This string appears in the purple callouts at the top of the user dashboard and shows
# the total number of breaches a user has resolved. For instance, "5 Resolved".
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
num-resolved =
{ $numResolvedBreaches ->
*[other] { $numResolvedBreaches } Resolved
@ -522,6 +568,9 @@ progress-intro-subhead = New in { -product-name }: Mark breaches as resolved
progress-intro-message =
After reviewing the details about a breach and taking steps to protect
your personal info, you can mark breaches as resolved.
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
# $numTotalBreaches (Integer) - Total number of breaches
progress-status =
{ $numTotalBreaches ->
*[other] { $numResolvedBreaches } out of { $numTotalBreaches } breaches marked as resolved
@ -546,16 +595,20 @@ progress-complete-message =
##
resolve-this-breach-link = Resolve this breach
# This string appears in resolved breach cards and is followed by
# This string appears in resolved breach cards and is followed by
# the date the user marked the breach as resolved.
marked-resolved = Marked resolved:
hide-resolved-button = Hide Resolved
show-resolved-button = Show Resolved
# Variables:
# $numPasswords (Integer) - Number of exposed passwords
unresolved-passwords-exposed =
{ $numPasswords ->
[one] Password exposed in unresolved breaches
*[other] Passwords exposed in unresolved breaches
}
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
known-data-breaches-resolved =
{ $numResolvedBreaches ->
[one] Known data breach marked as resolved
@ -586,7 +639,10 @@ vpn-promo-copy-new = Protect your online data—and choose a VPN subscription pl
## VPN promotional banner. HTML tags should not be translated, e.g. `<em>`
# user's IP location is determined dynamically by 3rd-party, eg: "Your location: Los Angeles, CA". The 3rd-party service provides its own localization.
# Variables:
# $ip-location (String) - User's IP location is determined dynamically by 3rd-party,
# eg: "Your location: Los Angeles, CA". The 3rd-party service
# provides its own localization.
vpn-banner-location = Your location: { $ip-location }
vpn-banner-protect-yourself-with-vpn = <em>Protect yourself</em> with { -brand-mozilla-vpn }.
vpn-banner-protected-with-vpn = <em>Protected</em> with { -brand-mozilla-vpn }.
@ -595,7 +651,8 @@ vpn-banner-title-2 = Your location can be tracked if you dont use a VPN.
vpn-banner-subtitle-2 = Protect your location and browse securely in 3 steps
vpn-banner-status-protected = Current status: <em>Protected ✓</em>
vpn-banner-status-not-protected = Current status: <em>Not protected ⚠</em>
# user's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
# Variables:
# $ip-address (String) - User's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
vpn-banner-ip-address = IP address: { $ip-address }
vpn-banner-step-1 = Subscribe to { -brand-mozilla-vpn }
vpn-banner-step-2 = Select a VPN location
@ -654,6 +711,8 @@ ad-unit-6-before-you-complete = Before you complete that next signup, use an ema
-brand-mozilla = Mozilla
-brand-mozilla-foundation = Mozilla Foundation
-brand-github = GitHub
-brand-mozilla-vpn = Mozilla VPN
-brand-relay = Firefox Relay
##
@ -675,6 +734,10 @@ sign-in = Sign In
site-nav-breaches-link = Resolve Data Breaches
site-nav-settings-link = Settings
site-nav-help-link = Help and Support
# This call-out is above 2 image links for Firefox Relay and Mozilla VPN
site-nav-ad-callout = Try our other security tools:
brand-relay = { -brand-relay }
brand-mozilla-vpn = { -brand-mozilla-vpn }
## User menu
@ -688,9 +751,10 @@ menu-item-logout = Sign out
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Terms and Privacy
github = { -brand-github }
footer-nav-all-breaches = All Breaches
## Error page
@ -703,3 +767,17 @@ error-page-error-404-cta-button = Go back
# $errorCode (number) - the status code of the error, e.g. 403
error-page-error-other-title = { $errorCode } Something went wrong
error-page-error-other-copy = Please try again or come back later
## Breach overview page
all-breaches-headline-2 = All breaches detected by { -brand-fx-monitor }
all-breaches-lead = We monitor all known data breaches to find out if your personal information was compromised. Heres a complete list of all of the breaches that have been reported since 2007.
search-breaches = Search Breaches
# the kind of user data exposed to hackers in data breach.
exposed-data = Exposed data:
## Public breach detail page
find-out-if-2 = Find out if you were involved in this breach
find-out-if-description = Well help you quickly see if your email address was exposed in this breach, and understand what to do next.
breach-detail-cta-signup = Check for breaches

Просмотреть файл

@ -10,10 +10,10 @@ rec-ssn =
rec-pw-1-subhead = Change your password
# Link title
rec-pw-1-cta = Change password for this site
rec-pw-1 =
Make this password unique and different from any others you use.
A good strategy to follow is to combine two or more unrelated
words to create an entire passphrase.
rec-pw-1-2 =
Make this password unique and different from any others you use.
A good strategy to follow is to combine two or more unrelated
words to create an entire passphrase, and include numbers and symbols.
# Recommendation subhead
rec-pw-2-subhead = Update other logins using the same password
# Link title
@ -57,22 +57,13 @@ rec-email =
find your passwords or target you online. A service like { -brand-relay }
hides your real email address while forwarding emails to your real inbox.
# Recommendation subhead
rec-ip-subhead = Use a service that masks your IP address
# Link title
rec-ip-us-cta = Try { -brand-fpn }
rec-ip-us =
Your Internet Protocol address (IP address) pinpoints your location
and internet service provider. A service like { -brand-fpn }
masks your IP address to hide your location.
rec-ip-non-us =
Your Internet Protocol address (IP address) pinpoints your location
and internet service provider. With a virtual private network (VPN), you can hide your location
and mask your IP address.
rec-ip-subhead-2 = Use a VPN to mask your IP address
# Recommendation subhead
rec-moz-vpn-cta = Try { -brand-mozilla-vpn }
rec-moz-vpn-update =
Your Internet Protocol address (IP address) can reveal your location and internet service provider. A service
like { -brand-mozilla-vpn } hides your IP address and location for your entire device.
rec-moz-vpn-update-2 =
Your Internet Protocol address (IP address) pinpoints your location
and internet service provider. A service like { -brand-mozilla-vpn }
masks your IP address to hide your location.
rec-hist-pw-subhead = Avoid reusing passwords
# Link title
rec-hist-pw-cta-fx = View logins in { -brand-name }

Просмотреть файл

@ -15,8 +15,6 @@
-brand-lockwise = Firefox Lockwise
-brand-send = Firefox Send
-brand-fpn = Red privada de Firefox
-brand-mozilla-vpn = VPN de Mozilla
-brand-relay = Firefox Relay
##
@ -37,6 +35,9 @@ user-add-invalid-email = Dirección de correo electrónico inválida
user-add-too-many-emails = Estás monitoreando el número máximo de correos electrónicos posible.
user-add-email-verify-subject = Verificá tu suscripción a { -product-name }.
user-add-duplicate-email = Este correo electrónico ya se agregó a { -product-name }.
# Variables:
# $preferencesLink (String) - Link to preferences
# $userEmail (String) - User email address
user-add-duplicate-email-part-2 = Andá a tu { $preferencesLink } para verificar el estado de { $userEmail }.
error-headline = Error
user-verify-token-error = Se requiere identificador de verificación.
@ -50,11 +51,11 @@ scan-placeholder = Ingresá la dirección de correo electrónico
scan-submit = Buscá tu dirección de correo electrónico
scan-error = Debe ser una dirección de correo electrónico válida.
download-firefox-banner-button = Descargar { -brand-name }
# Appears after Firefox Monitor has sent a verification email to a new user.
# Appears after Firefox Monitor has sent a verification email to a new user.
signup-modal-sent = ¡Enviado!
sign-up = Registrate
form-signup-error = Debe ser una dirección de correo electrónico válida
# breach-date = the calendar date a particular data theft occurred.
# breach-date = the calendar date a particular data theft occurred.
breach-date = Fecha de filtración:
# compromised accounts = the total number of user accounts exposed in data breach
compromised-accounts = Cuentas comprometidas:
@ -64,6 +65,8 @@ unsub-headline = Cancelar la suscripción de { -product-name-nowrap }
unsub-blurb = Esto eliminará tu dirección de correo electrónico de la lista { -product-name-nowrap } y ya no recibirás alertas cuando se anuncien nuevas filtraciones.
unsub-button = Cancelar suscripción
# Breach data provided by Have I Been Pwned.
# Variables:
# $hibp-link (String) - Link to Have I Been Pwned
hibp-attribution = Datos de filtración proporcionados por { $hibp-link }
share-twitter = La mayoría de las personas tienen alrededor de 100 cuentas en línea. ¿Alguna de los tuyas tuvo una filtración de datos? Descubrilo.
share-facebook-headline = Averiguá si fusite parte de una filtración de datos.
@ -99,8 +102,6 @@ preferences = Preferencias
# Link title
home = Inicio
# Link title
breaches = Violaciones
# Link title
security-tips = Consejos de seguridad
fxa-account = { -brand-fxa }
# Aria button message to open menu. "Open Firefox Account Navigation"
@ -182,7 +183,9 @@ feat-security-tips = Consejos de seguridad para proteger tus cuentas
feat-sensitive = Búsqueda avanzada de violaciones privadas
feat-enroll-multiple = Inscribí múltiples correos electrónicos en el control de violaciones
# This string is shown beneath each of the users email addresses to indicate
# how many known breaches that email address was found in.
# how many known breaches that email address was found in.
# Variables:
# $breachCount (Integer) - Number of breaches
appears-in-x-breaches =
{ $breachCount ->
[one] Aparece en { $breachCount } violación conocida.
@ -194,6 +197,8 @@ get-email-alerts = Mantenete seguro: recibí alertas por correo electrónico cua
search-for-your-email = Buscá tu dirección de correo en violaciones de datos públicos yendo hasta 2007.
back-to-top = Volver al inicio
comm-opt-0 = Enviame un correo electrónico si alguna de mis direcciones de correo electrónico de las que están a continuación aparece en una violación de datos.
# Variables:
# $primaryEmail (String) - User primary email address
comm-opt-1 = Enviar todas las alertas de violaciones a { $primaryEmail }.
stop-monitoring-this = Dejar de controlar esta dirección correo electrónico.
resend-verification = Reenviar correo electrónico de verificación
@ -202,7 +207,7 @@ send-verification = Enviar enlace de verificación
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-summary = Resumen de filtraciones
show-breaches-for-this-email = Mostrar todas las filtraciones de este correo electrónico.
@ -213,8 +218,15 @@ remove-fxm-blurb = Desactivar alertas de { -product-name }. { -brand-fxa } segui
manage-email-addresses = Administrar direcciones de correo electrónico
# Link title
latest-breach-link = Ver si estás en esta filtración
## Variables:
## $userName (String) - Username
welcome-back = ¡Bienvenido de nuevo, { $userName }!
welcome-user = ¡Bienvenido, { $userName }!
##
breach-alert-subject = { -product-name } encontró tu correo electrónico en una nueva filtración de datos.
your-info-was-discovered-headline = Tu información fue descubierta en una nueva filtración de datos.
your-info-was-discovered-blurb =
@ -239,6 +251,8 @@ ba-next-step-blurb-3 =
faq1 = No reconozco esta empresa o sitio web. ¿Por qué estoy en esta filtración?
faq2 = ¿Por qué tomó tanto tiempo notificarme esta filtración?
faq3 = ¿Cómo sé que este es un correo electrónico legítimo de { -product-name }?
# Variables:
# $breachCount (Integer) - Number of breaches
new-breaches-found =
{ $breachCount ->
[one] { $breachCount } NUEVA FILTRACIÓN ENCONTRADA
@ -246,23 +260,31 @@ new-breaches-found =
}
sign-up-headline-1 = Obtener alertas continuas con { -brand-fxa }.
account-not-required = El navegador { -brand-name } no es necesario para { -brand-fxa }. Podés recibir información sobre los servicios de { -brand-Mozilla }.
## Variables:
## $breachName (String) - Number of the breach
was-your-info-exposed = ¿Estuvo tu información expuesta en la filtración de datos { $breachName }?
find-out-if = Averiguar si tus datos fueron expuestos en esta filtración.
fb-not-comp = Este correo electrónico no apareció en la filtración { $breachName }..
# Variables:
# $breachCount (Integer) - Number of breaches
other-breaches-found =
{ $breachCount ->
[one] Sin embargo, apareció en { $breachCount } filtración.
*[other] Sin embargo, apareció en { $breachCount } otras filtraciones.
}
fb-comp-only = Este correo electrónico apareció en la filtración { $breachName }.
# Variables:
# $breachCount (Integer) - Number of breaches
fb-comp-and-others =
{ $breachCount ->
*[other] Este correo electrónico aparece en { $breachCount } filtraciones de datos conocidas, incluyendo { $breachName }.
}
##
no-other-breaches-found = No se han encontrado otras filtraciones en una búsqueda básica.
no-results-blurb = Lo sentimos, ese filtración no está en nuestra base de datos.
all-breaches-headline = Todas las filtraciones en { -product-name }
search-breaches = Buscar filtraciones
# This string contains nested markup that is later used to style and link the text inside of it.
# Please do not modify or remove "<a>", "</a>", "<span>" and "</span>".
facebook-breach-note =
@ -330,6 +352,8 @@ known-data-breaches-exposed =
}
# Button
see-additional-breaches = Ver filtraciones adicionales
# Variables:
# $breachCount (Integer) - Number of breaches
scan-results-known-breaches =
{ $breachCount ->
[one] El correo electrónico apareció en 1 filtración de datos conocida.
@ -338,6 +362,8 @@ scan-results-known-breaches =
# This string is shown at the top of the scan results page and is followed
# by the email address that the user searched.
# In page, it reads "Results for: searchedEmail@monitor.com"
# Variables:
# $userEmail (String) - User email address
results-for = Resultados para: { $userEmail }
other-monitored-emails = Otros correos electrónicos monitoreados
email-verification-required = Verificación de correo electrónico requerida
@ -353,6 +379,8 @@ get-ongoing-breach-monitoring = Obtené el monitoreo contínuo de las violacione
# This is a button and follows a headline reading "Was your info exposed in the ___ breach?"
find-out = Averiguar
new-unsub-error = Necesitás darte de baja de uno de los correos electrónicos enviados por { -product-name }.
# Variables:
# $breachCount (Integer) - Number of breaches
other-known-breaches-found =
{ $breachCount ->
[one] Sin embargo, apareció en { $breachCount } filtración conocida.
@ -370,10 +398,12 @@ breach-overview-title = Visión general
# $breachTitle is the name of the breached company or website.
# $breachDate and $addedDate are calendar dates.
breach-overview-new = El { $breachDate }, { $breachTitle } sufrió una filtración. Una vez que se descubrió y verificó la filtración, se agregó a nuestra base de datos el { $addedDate }.
# Title appearing on the Preferences dashboard.
# Title appearing on the Preferences dashboard.
monitor-preferences = Preferencias de { -product-short-name }
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# Variables:
# $userEmail (String) - User email address
signed-in-as = Conectado como: { $userEmail }
# Appears on the All Breaches page and is followed by a list of filter options
# that a user can filter the visible breaches by.
@ -390,12 +420,16 @@ email-sent = Correo electrónico enviado
want-to-add = ¿Quieres añadir otro correo electrónico?
# This is part of a confirmation message that appears after a user has submitted
# the form to add an additional email to Firefox Monitor.
# Variables:
# $userEmail (String) - User email address
verify-the-link = Verificar el enlace enviado a { $userEmail } para agregarlo a { -product-name }.
## These are part of a confirmation page that appears after a user has verified
## an additional email to Firefox Monitor.
email-verified = ¡Correo electrónico verificado correctamente!
# Variables:
# $email (String) - User email address
email-added-to-subscription = Te vamos a avisar si { $email } aparece en una violación de datos.
# This message is displayed after the user has verified their email address.
# { $nestedSignInLink } is replaced by a link, using sign-in-nested as text ("sign in" for English).
@ -409,15 +443,17 @@ sign-in-nested = iniciar sesión
# form to add an additional email to Firefox Monitor. { $preferencesLink } is a link
# to the Preferences page. The code and text for the link is generated elsewhere
# using the { preferences } string.
# Variables:
# $preferencesLink (String) - Link to preferences
manage-all-emails = Administra todas las direcciones de correo electrónico en { $preferencesLink }.
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-alert-notifications = Notificaciones de alerta de incumplimiento
# This string is a label for the calendar date a breach is added to the database
# and is followed by that date.
# and is followed by that date.
breach-added-label = Incumplimiento añadido:
how-hackers-work-desc = Protejé tus contraseñas de los delincuentes cibernéticos, ya que eso es lo que más les importa.
what-to-do-after-breach-desc = Bloqueá tus cuentas para mantener tu información fuera de las manos equivocadas.
@ -439,7 +475,11 @@ see-additional-recs = Ver recomendaciones adicionales
## This string contains nested markup that becomes a link later in the code.
## Please do not modify or remove "<a>" and "</a>".
# Variables:
# $affectedEmail (String) - User email address
resolve-top-notification = { $affectedEmail } apareció en esta violación. <a>Qué hacer a continuación</a>
# Variables:
# $numAffectedEmails (Integer) - Number of affected email address
resolve-top-notification-plural =
{ $numAffectedEmails ->
[one] { $numAffectedEmails } apareció en esta violación. <a>Qué hacer a continuación</a>
@ -467,6 +507,8 @@ confirmation-3-subhead = Otra más. ¡Muy bien!
# Please do not modify or remove "<a>" and "</a>".
confirmation-3-body = ¿Tu nueva contraseña es única, segura y difícil de adivinar? <a>Descubrilo</a>
generic-confirmation-subhead = Esta violación fue marcada como resuelta
# Variables:
# $numUnresolvedBreaches (Integer) - Number of resolved breaches
generic-confirmation-message =
{ $numUnresolvedBreaches ->
[one] Para ver la violación que queda, mirá tu panel de control.
@ -476,9 +518,13 @@ return-to-breach-details-link = Volver a los detalles de la violación
go-to-dashboard-link = Ir al panel de control
# This string appears above a breach resolution progress bar and indicates
# the percentage of breaches a user has resolved. For instance, "27% complete".
# Variables:
# $percentComplete (String) - Completion percentage
progress-percent-complete = { $percentComplete }% completo
# This string appears in the purple callouts at the top of the user dashboard and shows
# the total number of breaches a user has resolved. For instance, "5 Resolved".
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
num-resolved =
{ $numResolvedBreaches ->
[one] { $numResolvedBreaches } Resuelta
@ -488,6 +534,9 @@ progress-intro-subhead = Nuevo en { -product-name }: marcar violaciones como res
progress-intro-message =
Después de revisar los detalles sobre una violación y tomar medidas para proteger
tu información personal, podés marcarla como resueltas.
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
# $numTotalBreaches (Integer) - Total number of breaches
progress-status =
{ $numTotalBreaches ->
[one] { $numResolvedBreaches } de { $numTotalBreaches } violación marcada como resuelta
@ -513,16 +562,20 @@ progress-complete-message =
##
resolve-this-breach-link = Resolver esta violación
# This string appears in resolved breach cards and is followed by
# This string appears in resolved breach cards and is followed by
# the date the user marked the breach as resolved.
marked-resolved = Marcado como resuelto:
hide-resolved-button = Ocultar resueltos
show-resolved-button = Mostrar resueltos
# Variables:
# $numPasswords (Integer) - Number of exposed passwords
unresolved-passwords-exposed =
{ $numPasswords ->
[one] Contraseña expuesta en violaciones no resueltas
*[other] Contraseñas expuestas en violaciones no resueltas
}
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
known-data-breaches-resolved =
{ $numResolvedBreaches ->
[one] Violación de datos conocida marcada como resuelta
@ -553,7 +606,10 @@ vpn-promo-copy-new = Protegé tus datos en línea y elegí un plan de suscripci
## VPN promotional banner. HTML tags should not be translated, e.g. `<em>`
# user's IP location is determined dynamically by 3rd-party, eg: "Your location: Los Angeles, CA". The 3rd-party service provides its own localization.
# Variables:
# $ip-location (String) - User's IP location is determined dynamically by 3rd-party,
# eg: "Your location: Los Angeles, CA". The 3rd-party service
# provides its own localization.
vpn-banner-location = Tu ubicación: { $ip-location }
vpn-banner-protect-yourself-with-vpn = <em>Protegete</em> con { -brand-mozilla-vpn }.
vpn-banner-protected-with-vpn = <em>Protegido</em> con { -brand-mozilla-vpn }.
@ -562,7 +618,8 @@ vpn-banner-title-2 = Tu ubicación puede ser rastreada si no usás una VPN.
vpn-banner-subtitle-2 = Protegé tu ubicación y navegá de forma segura en tres pasos.
vpn-banner-status-protected = Estado actual: <em>Protegido ✓</em>
vpn-banner-status-not-protected = Estado actual: <em>No protegido ⚠</em>
# user's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
# Variables:
# $ip-address (String) - User's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
vpn-banner-ip-address = Dirección IP: { $ip-address }
vpn-banner-step-1 = Suscribite a { -brand-mozilla-vpn }
vpn-banner-step-2 = Seleccioná una ubicación de VPN
@ -621,6 +678,8 @@ ad-unit-6-before-you-complete = Antes de completar el próximo registro, usá un
-brand-mozilla = Mozilla
-brand-mozilla-foundation = Fundación Mozilla
-brand-github = GitHub
-brand-mozilla-vpn = VPN de Mozilla
-brand-relay = Firefox Relay
##
@ -642,6 +701,10 @@ sign-in = Iniciar la sesión
site-nav-breaches-link = Resolver filtraciones de datos
site-nav-settings-link = Opciones
site-nav-help-link = Ayuda y soporte
# This call-out is above 2 image links for Firefox Relay and Mozilla VPN
site-nav-ad-callout = Probá nuestras otras herramientas de seguridad:
brand-relay = { -brand-relay }
brand-mozilla-vpn = { -brand-mozilla-vpn }
## User menu
@ -655,9 +718,10 @@ menu-item-logout = Cerrar sesión
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Términos y privacidad
github = { -brand-github }
footer-nav-all-breaches = Todas las filtraciones
## Error page
@ -670,3 +734,17 @@ error-page-error-404-cta-button = Atrás
# $errorCode (number) - the status code of the error, e.g. 403
error-page-error-other-title = { $errorCode } Algo salió mal
error-page-error-other-copy = Probá de nuevo o volvé más tarde
## Breach overview page
all-breaches-headline-2 = Todas las filtraciones detectadas por { -brand-fx-monitor }
all-breaches-lead = Monitoreamos todas las filtraciones de datos para encontrar si tu información personal se vio comprometida. Acá hay una lista completa de todas las filtraciones que se informaron desde 2007.
search-breaches = Buscar filtraciones
# the kind of user data exposed to hackers in data breach.
exposed-data = Datos expuestos:
## Public breach detail page
find-out-if-2 = Fijate si estuviste involucrado en esta filtración
find-out-if-description = Te vamos a ayudar a ver rápidamente si tu dirección de correo electrónico estuvo expuesta en esta filtración para entender qué hacer a continuación.
breach-detail-cta-signup = Verificá si hay filtraciones

Просмотреть файл

@ -10,10 +10,10 @@ rec-ssn =
rec-pw-1-subhead = Cambiá la contraseña
# Link title
rec-pw-1-cta = Cambiá contraseña para este sitio
rec-pw-1 =
rec-pw-1-2 =
Hacé que esta contraseña sea única y diferente de cualquier otra que uses.
Una buena estrategia a seguir es combinar dos o más
palabras no relacionadas para crear una frase de contraseña completa.
palabras no relacionadas para crear una frase de contraseña completa e incluir números y símbolos.
# Recommendation subhead
rec-pw-2-subhead = Actualizá otros inicios de sesión con la misma contraseña
# Link title
@ -55,23 +55,13 @@ rec-email =
encuentren tus contraseñas o te encuentren en línea. Un servicio como { -brand-relay }
oculta tu dirección de correo electrónico real mientras reenvía correos a tu bandeja de entrada real.
# Recommendation subhead
rec-ip-subhead = Usá un servicio que oculte tu dirección IP
# Link title
rec-ip-us-cta = Probá { -brand-fpn }
rec-ip-us =
Tu dirección de protocolo de Internet (dirección IP) señala tu ubicación
y tu proveedor de servicios de internet. Un servicio como { -brand-fpn }
enmascara tu dirección IP para ocultar tu ubicación.
rec-ip-non-us =
Tu dirección de protocolo de Internet (dirección IP) señala tu ubicación
y tu proveedor de servicios de internet. Con una red privada virtual (VPN), podés ocultar tu ubicación
y enmascarar tu dirección IP.
rec-ip-subhead-2 = Usá una VPN para enmascarar tu dirección IP
# Recommendation subhead
rec-moz-vpn-cta = Pruobá { -brand-mozilla-vpn }
rec-moz-vpn-update =
Tu dirección de protocolo de Internet (dirección IP) puede revelar tu ubicación
rec-moz-vpn-update-2 =
Tu dirección de protocolo de Internet (dirección IP) señala tu ubicación
y tu proveedor de servicios de internet. Un servicio como { -brand-mozilla-vpn }
oculta tu dirección IP y tu ubicación en tu dispositivo.
enmascara tu dirección IP para ocultar tu ubicación.
rec-hist-pw-subhead = Evitá reutilizar contraseñas
# Link title
rec-hist-pw-cta-fx = Ver inicios de sesión en { -brand-name }

Просмотреть файл

@ -15,8 +15,6 @@
-brand-lockwise = Firefox Lockwise
-brand-send = Firefox Send
-brand-fpn = Red privada de Firefox
-brand-mozilla-vpn = Mozilla VPN
-brand-relay = Firefox Relay
##
@ -37,6 +35,9 @@ user-add-invalid-email = Correo inválido
user-add-too-many-emails = Estás monitorizando el número máximo de correos posible.
user-add-email-verify-subject = Verifica tu suscripción a { -product-name }.
user-add-duplicate-email = Este correo ya ha sido añadido a { -product-name }.
# Variables:
# $preferencesLink (String) - Link to preferences
# $userEmail (String) - User email address
user-add-duplicate-email-part-2 = Visita tus { $preferencesLink } para revisar el estado de { $userEmail }.
error-headline = Error
user-verify-token-error = Toquen de verificación requerido.
@ -50,11 +51,11 @@ scan-placeholder = Ingresa tu dirección de correo
scan-submit = Busca tu correo electrónico
scan-error = Debe ser un correo electrónico válido.
download-firefox-banner-button = Bajar { -brand-name }
# Appears after Firefox Monitor has sent a verification email to a new user.
# Appears after Firefox Monitor has sent a verification email to a new user.
signup-modal-sent = ¡Enviado!
sign-up = Registrarse
form-signup-error = Debe ser una dirección de correo electrónico válida
# breach-date = the calendar date a particular data theft occurred.
# breach-date = the calendar date a particular data theft occurred.
breach-date = Fecha de la filtración de datos:
# compromised accounts = the total number of user accounts exposed in data breach
compromised-accounts = Cuentas comprometidas:
@ -64,6 +65,8 @@ unsub-headline = Cancelar la suscripción de { -product-name-nowrap }
unsub-blurb = Esto eliminará tu correo de la lista de { -product-name-nowrap } y ya no recibirás alertas cuando se anuncien nuevas filtraciones.
unsub-button = Cancelar suscripción
# Breach data provided by Have I Been Pwned.
# Variables:
# $hibp-link (String) - Link to Have I Been Pwned
hibp-attribution = Datos de la filtración proporcionados por { $hibp-link }
share-twitter = La mayoría de la gente tiene más de 100 cuentas en línea. ¿Ha sido alguna de las tuyas expuesta en una filtración de datos? Averígualo.
share-facebook-headline = Averigua si has sido parte de una filtración de datos
@ -99,8 +102,6 @@ preferences = Preferencias
# Link title
home = Inicio
# Link title
breaches = Filtraciones
# Link title
security-tips = Consejos de seguridad
fxa-account = { -brand-fxa }
# Aria button message to open menu. "Open Firefox Account Navigation"
@ -191,7 +192,9 @@ feat-security-tips = Consejos de seguridad para proteger tus cuentas
feat-sensitive = Búsqueda avanzada de filtraciones sensibles
feat-enroll-multiple = Agrega varias direcciones de correo al control de filtraciones
# This string is shown beneath each of the users email addresses to indicate
# how many known breaches that email address was found in.
# how many known breaches that email address was found in.
# Variables:
# $breachCount (Integer) - Number of breaches
appears-in-x-breaches =
{ $breachCount ->
[one] Aparece en { $breachCount } filtración conocida.
@ -203,6 +206,8 @@ get-email-alerts = Mantente seguro: recibe alertas por correo cuando tu informac
search-for-your-email = Busca tu dirección de correo en filtraciones de datos públicas yendo hasta 2007.
back-to-top = Volver arriba
comm-opt-0 = Envíame un correo electrónico si alguna de mis direcciones de correo electrónico de las que están a continuación aparece en una filtración de datos.
# Variables:
# $primaryEmail (String) - User primary email address
comm-opt-1 = Enviar todas las alertas de filtraciones a { $primaryEmail }.
stop-monitoring-this = Dejar de monitorear este correo.
resend-verification = Reenviar correo de verificación
@ -211,7 +216,7 @@ send-verification = Enviar enlace de verificación
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-summary = Resumen de filtraciones
show-breaches-for-this-email = Mostrar todas las filtraciones para este correo.
@ -222,8 +227,15 @@ remove-fxm-blurb = Desactivar alertas de { -product-name }. Tu { -brand-fxa } pe
manage-email-addresses = Gestionar direcciones de correo
# Link title
latest-breach-link = Revisa si estás en esta filtración
## Variables:
## $userName (String) - Username
welcome-back = ¡Bienvenido nuevamente { $userName }!
welcome-user = ¡Bienvenido { $userName }!
##
breach-alert-subject = { -product-name } encontró tu correo en una nueva filtración de datos.
your-info-was-discovered-headline = Tu información fue descubierta en una nueva filtración de datos.
your-info-was-discovered-blurb =
@ -248,6 +260,8 @@ ba-next-step-blurb-3 =
faq1 = No reconozco esta empresa o sitio web. ¿Por qué aparezco en la filtración?
faq2 = ¿Por qué tomó tanto tiempo notificarme sobre esta filtración?
faq3 = ¿Cómo sé que este es un correo electrónico legítimo de { -product-name }?
# Variables:
# $breachCount (Integer) - Number of breaches
new-breaches-found =
{ $breachCount ->
[one] { $breachCount } NUEVA FILTRACIÓN ENCONTRADA
@ -255,24 +269,32 @@ new-breaches-found =
}
sign-up-headline-1 = Recibe alertas con { -brand-fxa }.
account-not-required = No se necesita el navegador { -brand-name } para { -brand-fxa }. Puedes recibir información sobre los servicios de { -brand-Mozilla }.
## Variables:
## $breachName (String) - Number of the breach
was-your-info-exposed = ¿Se expuso tu información en la filtración de datos de { $breachName }?
find-out-if = Averiguar si tus datos fueron expuestos en esta filtración.
fb-not-comp = Este correo electrónico no apareció en la filtración { $breachName }.
# Variables:
# $breachCount (Integer) - Number of breaches
other-breaches-found =
{ $breachCount ->
[one] Sin embargo, apareció en { $breachCount } filtración.
*[other] Sin embargo, apareció en { $breachCount } otras filtraciones.
}
fb-comp-only = Este correo electrónico apareció en la filtración { $breachName }.
# Variables:
# $breachCount (Integer) - Number of breaches
fb-comp-and-others =
{ $breachCount ->
[one] Este correo apareció en { $breachCount } filtración conocida, incluyendo { $breachName }.
*[other] Este correo apareció en { $breachCount } filtraciones conocidas, incluyendo { $breachName }.
}
##
no-other-breaches-found = No se encontraron otras filtraciones en la búsqueda básica.
no-results-blurb = Lo sentimos, esa filtración no está en nuestra base de datos.
all-breaches-headline = Todas las filtraciones en { -product-name }
search-breaches = Buscar filtraciones
# This string contains nested markup that is later used to style and link the text inside of it.
# Please do not modify or remove "<a>", "</a>", "<span>" and "</span>".
facebook-breach-note =
@ -341,6 +363,8 @@ known-data-breaches-exposed =
}
# Button
see-additional-breaches = Ver filtraciones adicionales
# Variables:
# $breachCount (Integer) - Number of breaches
scan-results-known-breaches =
{ $breachCount ->
[one] Este correo apareció en 1 filtración de datos conocida.
@ -349,6 +373,8 @@ scan-results-known-breaches =
# This string is shown at the top of the scan results page and is followed
# by the email address that the user searched.
# In page, it reads "Results for: searchedEmail@monitor.com"
# Variables:
# $userEmail (String) - User email address
results-for = Resultados para: { $userEmail }
other-monitored-emails = Otros correos monitorizados
email-verification-required = Verificación de correo requerida
@ -364,6 +390,8 @@ get-ongoing-breach-monitoring = Obtén monitoreo de filtraciones para varias dir
# This is a button and follows a headline reading "Was your info exposed in the ___ breach?"
find-out = Averiguar
new-unsub-error = Tendrás que cancelar la suscripción desde uno de los correos que te envió { -product-name }.
# Variables:
# $breachCount (Integer) - Number of breaches
other-known-breaches-found =
{ $breachCount ->
[one] Sin embargo, apareció en { $breachCount } filtración conocida.
@ -381,10 +409,12 @@ breach-overview-title = General
# $breachTitle is the name of the breached company or website.
# $breachDate and $addedDate are calendar dates.
breach-overview-new = El { $breachDate }, { $breachTitle } fue vulnerado. Una vez que la filtración fue descubierta y verificada, ésta fue añadida a nuestra base de datos el { $addedDate }.
# Title appearing on the Preferences dashboard.
# Title appearing on the Preferences dashboard.
monitor-preferences = Preferencias de { -product-short-name }
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# Variables:
# $userEmail (String) - User email address
signed-in-as = Conectado cómo: { $userEmail }
# Appears on the All Breaches page and is followed by a list of filter options
# that a user can filter the visible breaches by.
@ -401,12 +431,16 @@ email-sent = ¡Correo enviado!
want-to-add = ¿Quieres añadir otro correo?
# This is part of a confirmation message that appears after a user has submitted
# the form to add an additional email to Firefox Monitor.
# Variables:
# $userEmail (String) - User email address
verify-the-link = Verifica el enlace enviado a { $userEmail } para añadirlo a { -product-name }.
## These are part of a confirmation page that appears after a user has verified
## an additional email to Firefox Monitor.
email-verified = ¡Correo verificado exitosamente!
# Variables:
# $email (String) - User email address
email-added-to-subscription = Te avisaremos si { $email } aparece en una filtración de datos.
# This message is displayed after the user has verified their email address.
# { $nestedSignInLink } is replaced by a link, using sign-in-nested as text ("sign in" for English).
@ -420,15 +454,17 @@ sign-in-nested = conéctate
# form to add an additional email to Firefox Monitor. { $preferencesLink } is a link
# to the Preferences page. The code and text for the link is generated elsewhere
# using the { preferences } string.
# Variables:
# $preferencesLink (String) - Link to preferences
manage-all-emails = Gestiona todas las direcciones de correo en { $preferencesLink }.
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-alert-notifications = Notificaciones de alerta de filtraciones
# This string is a label for the calendar date a breach is added to the database
# and is followed by that date.
# and is followed by that date.
breach-added-label = Filtración añadida:
how-hackers-work-desc = Protege tus contraseñas de los cibercriminales, ya que es lo que más les importa.
what-to-do-after-breach-desc = Protege tus cuentas para mantener tu información lejos de las manos equivocadas.
@ -450,7 +486,11 @@ see-additional-recs = Ver recomendaciones adicionales
## This string contains nested markup that becomes a link later in the code.
## Please do not modify or remove "<a>" and "</a>".
# Variables:
# $affectedEmail (String) - User email address
resolve-top-notification = { $affectedEmail } apareció en esta filtración. <a>Qué hacer a continuación</a>
# Variables:
# $numAffectedEmails (Integer) - Number of affected email address
resolve-top-notification-plural =
{ $numAffectedEmails ->
*[other] { $numAffectedEmails } de tus cuentas de correo aparecieron en esta filtración. <a>Qué hacer a continuación</a>
@ -477,6 +517,8 @@ confirmation-3-subhead = Otro menos. ¡Buen trabajo!
# Please do not modify or remove "<a>" and "</a>".
confirmation-3-body = ¿Es tu nueva contraseña única, fuerte y difícil de adivinar? <a>Averígualo</a>
generic-confirmation-subhead = Esta filtración ha sido marcada como resuelta
# Variables:
# $numUnresolvedBreaches (Integer) - Number of resolved breaches
generic-confirmation-message =
{ $numUnresolvedBreaches ->
[one] Para ver la filtración pendiente, ve a tu panel de control.
@ -486,9 +528,13 @@ return-to-breach-details-link = Regresar a los detalles de la filtración
go-to-dashboard-link = Ir al panel de control
# This string appears above a breach resolution progress bar and indicates
# the percentage of breaches a user has resolved. For instance, "27% complete".
# Variables:
# $percentComplete (String) - Completion percentage
progress-percent-complete = { $percentComplete }% completo
# This string appears in the purple callouts at the top of the user dashboard and shows
# the total number of breaches a user has resolved. For instance, "5 Resolved".
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
num-resolved =
{ $numResolvedBreaches ->
[one] { $numResolvedBreaches } resuelta
@ -496,6 +542,9 @@ num-resolved =
}
progress-intro-subhead = Nuevo en { -product-name }: marcar filtraciones como resueltas
progress-intro-message = Después de revisar los detalles acerca de una filtración y tomar los pasos para proteger tu información personal, puedes marcar las filtraciones como resueltas.
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
# $numTotalBreaches (Integer) - Total number of breaches
progress-status =
{ $numTotalBreaches ->
[one] { $numResolvedBreaches } de { $numTotalBreaches } filtración marcada como resuelta
@ -517,16 +566,20 @@ progress-complete-message =
##
resolve-this-breach-link = Resolver esta filtración
# This string appears in resolved breach cards and is followed by
# This string appears in resolved breach cards and is followed by
# the date the user marked the breach as resolved.
marked-resolved = Marcada como resuelta:
hide-resolved-button = Ocultar resueltas
show-resolved-button = Mostrar resueltas
# Variables:
# $numPasswords (Integer) - Number of exposed passwords
unresolved-passwords-exposed =
{ $numPasswords ->
[one] Contraseña expuesta en filtraciones no resueltas
*[other] Contraseñas expuestas en filtraciones no resueltas
}
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
known-data-breaches-resolved =
{ $numResolvedBreaches ->
[one] Filtración de datos conocida marcada como resuelta
@ -557,7 +610,10 @@ vpn-promo-copy-new = Protege tus datos en línea—y elige un plan de suscripci
## VPN promotional banner. HTML tags should not be translated, e.g. `<em>`
# user's IP location is determined dynamically by 3rd-party, eg: "Your location: Los Angeles, CA". The 3rd-party service provides its own localization.
# Variables:
# $ip-location (String) - User's IP location is determined dynamically by 3rd-party,
# eg: "Your location: Los Angeles, CA". The 3rd-party service
# provides its own localization.
vpn-banner-location = Tu ubicación: { $ip-location }
vpn-banner-protect-yourself-with-vpn = <em>Protégete</em> con { -brand-mozilla-vpn }.
vpn-banner-protected-with-vpn = <em>Protegido</em> con { -brand-mozilla-vpn }.
@ -566,7 +622,8 @@ vpn-banner-title-2 = Tu ubicación puede ser rastreada si no usas un VPN.
vpn-banner-subtitle-2 = Protege tu ubicación y navega de forma segura en 3 pasos
vpn-banner-status-protected = Estado actual: <em>Bajo protección</em>
vpn-banner-status-not-protected = Estado actual: <em>Sin protección ⚠</em>
# user's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
# Variables:
# $ip-address (String) - User's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
vpn-banner-ip-address = Dirección IP: { $ip-address }
vpn-banner-step-1 = Suscríbete a { -brand-mozilla-vpn }
vpn-banner-step-2 = Selecciona una ubicación de VPN
@ -625,6 +682,8 @@ ad-unit-6-before-you-complete = Antes de completar el próximo registro, usa una
-brand-mozilla = Mozilla
-brand-mozilla-foundation = Fundación Mozilla
-brand-github = GitHub
-brand-mozilla-vpn = Mozilla VPN
-brand-relay = Firefox Relay
##
@ -646,6 +705,10 @@ sign-in = Conectarse
site-nav-breaches-link = Resolver filtraciones de datos
site-nav-settings-link = Ajustes
site-nav-help-link = Ayuda y soporte
# This call-out is above 2 image links for Firefox Relay and Mozilla VPN
site-nav-ad-callout = Prueba nuestras otras herramientas de seguridad:
brand-relay = { -brand-relay }
brand-mozilla-vpn = { -brand-mozilla-vpn }
## User menu
@ -659,9 +722,10 @@ menu-item-logout = Salir
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Términos y privacidad
github = { -brand-github }
footer-nav-all-breaches = Todas las filtraciones
## Error page
@ -674,3 +738,17 @@ error-page-error-404-cta-button = Retroceder
# $errorCode (number) - the status code of the error, e.g. 403
error-page-error-other-title = { $errorCode } Algo salió mal
error-page-error-other-copy = Por favor, vuelve a intentarlo o regresa más tarde
## Breach overview page
all-breaches-headline-2 = Todas las filtraciones detectadas por { -brand-fx-monitor }
all-breaches-lead = Supervisamos todas las filtraciones de datos conocidas para averiguar si tu información personal se vio comprometida. Aquí hay una lista completa de todas las filtraciones que se han informado desde 2007.
search-breaches = Buscar filtraciones
# the kind of user data exposed to hackers in data breach.
exposed-data = Datos expuestos:
## Public breach detail page
find-out-if-2 = Averigua si te viste involucrado en esta filtración
find-out-if-description = Te ayudaremos a comprobar rápidamente si tu dirección de correo electrónico se vio expuesta en esta filtración y saber qué hacer a continuación.
breach-detail-cta-signup = Busca filtraciones

Просмотреть файл

@ -10,10 +10,10 @@ rec-ssn =
rec-pw-1-subhead = Cambia tu contraseña
# Link title
rec-pw-1-cta = Cambia tu contraseña para este sitio
rec-pw-1 =
rec-pw-1-2 =
Haz que esta contraseña sea única y diferente a otras que usas
Una buena estrategia a seguir es combinar dos o más palabras
no relacionadas para crear una contraseña entera.
no relacionadas para crear una contraseña entera, e incluir números y símbolos.
# Recommendation subhead
rec-pw-2-subhead = Actualiza otras credenciales en las que usas la misma contraseña
# Link title
@ -54,23 +54,13 @@ rec-email =
encontrar tus contraseñas o tenerte en la mira mientras estás en línea. Un servicio como { -brand-relay }
oculta tu dirección de correo electrónico real mientras reenvía correos a tu bandeja de entrada real.
# Recommendation subhead
rec-ip-subhead = Usa un servicio que enmascare tu dirección IP
# Link title
rec-ip-us-cta = Prueba { -brand-fpn }
rec-ip-us =
Tu dirección de protocolo de Internet (dirección IP) señala tu ubicación
y tu proveedor de servicios de internet. Un servicio como { -brand-fpn }
enmascara tu dirección IP para ocultar tu ubicación.
rec-ip-non-us =
Tu dirección de protocolo de Internet (dirección IP) señala tu ubicación
y tu proveedor de servicios de internet. Con una red privada virtual (VPN), puedes ocultar tu ubicación
y enmascarar tu dirección IP.
rec-ip-subhead-2 = Usa un VPN para enmascarar tu dirección IP
# Recommendation subhead
rec-moz-vpn-cta = Prueba { -brand-mozilla-vpn }
rec-moz-vpn-update =
Tu dirección de protocolo de Internet (dirección IP) puede revelar tu ubicación
y tu proveedor de servicios de internet. Un servicio como { -brand-mozilla-vpn }
oculta tu dirección IP y ubicación para todo tu dispositivo.
rec-moz-vpn-update-2 =
Tu dirección de protocolo de Internet (dirección IP) señala tu ubicación
y tu proveedor de servicios de internet. Un servicio como{ -brand-mozilla-vpn }
enmascara tu dirección IP para ocultar tu ubicación.
rec-hist-pw-subhead = Evita reutilizar contraseñas
# Link title
rec-hist-pw-cta-fx = Ver credenciales en { -brand-name }

Просмотреть файл

@ -639,6 +639,6 @@ sign-in = Iniciar sesión
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Términos y privacidad
github = { -brand-github }

Просмотреть файл

@ -649,7 +649,7 @@ menu-item-logout = Cerrar sesión
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Términos y Privacidad
github = { -brand-github }

Просмотреть файл

@ -693,7 +693,7 @@ menu-item-logout = Kirjaudu ulos
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Ehdot ja tietosuoja
github = { -brand-github }

Просмотреть файл

@ -675,6 +675,8 @@ sign-in = Se connecter
site-nav-breaches-link = Régler vos fuites de données
site-nav-settings-link = Paramètres
site-nav-help-link = Aide et assistance
# This call-out is above 2 image links for Firefox Relay and Mozilla VPN
site-nav-ad-callout = Essayez nos autres outils de sécurité :
brand-relay = { -brand-relay }
brand-mozilla-vpn = { -brand-mozilla-vpn }
@ -690,7 +692,7 @@ menu-item-logout = Déconnexion
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Confidentialité et conditions dutilisation
github = { -brand-github }
footer-nav-all-breaches = Toutes les fuites de données
@ -710,8 +712,13 @@ error-page-error-other-copy = Veuillez réessayer ou revenir plus tard
## Breach overview page
all-breaches-headline-2 = Toutes les fuites de données détectées par { -brand-fx-monitor }
all-breaches-lead = Nous surveillons toutes les fuites de données connues pour savoir si vos informations personnelles ont été compromises. Voici une liste complète de toutes les fuites de données qui ont été signalées depuis 2007.
search-breaches = Rechercher des fuites de données
# the kind of user data exposed to hackers in data breach.
exposed-data = Données ayant fuité :
## Public breach detail page
find-out-if-2 = Vérifiez si cette fuite de données vous concerne
find-out-if-description = Nous vous aiderons à vérifier rapidement si votre adresse e-mail a été compromise dans cette fuite de données et à comprendre ce quil faut faire ensuite.
breach-detail-cta-signup = Vérifier les fuites de données

Просмотреть файл

@ -7,6 +7,9 @@ rec-ssn = Vous obtenez trois rapports de crédit gratuits par an selon la loi. L
rec-pw-1-subhead = Modifiez votre mot de passe
# Link title
rec-pw-1-cta = Modifier votre mot de passe pour ce site
rec-pw-1-2 =
Rendez ce mot de passe unique et différent de tous vos autres mots de passe.
Une bonne stratégie consiste à combiner deux ou plusieurs mots sans rapport entre eux, ainsi que des chiffres et des symboles, afin de créer une phrase de passe plus sécurisée.
# Recommendation subhead
rec-pw-2-subhead = Modifiez les identifiants qui utilisent le même mot de passe
# Link title
@ -36,6 +39,8 @@ rec-email-mask-subhead = Utilisez un alias de messagerie
rec-email-cta = Essayer { -brand-relay }
rec-email = Fournir votre adresse e-mail réelle permet aux pirates informatiques ou aux traqueurs de trouver vos mots de passe ou de vous cibler en ligne plus facilement. Un service comme { -brand-relay } masque votre adresse e-mail réelle tout en transmettant les messages à votre boîte de réception réelle.
# Recommendation subhead
rec-ip-subhead-2 = Utilisez un VPN pour masquer votre adresse IP
# Recommendation subhead
rec-moz-vpn-cta = Essayer { -brand-mozilla-vpn }
rec-moz-vpn-update-2 = Votre adresse de protocole Internet (adresse IP) identifie votre emplacement et votre fournisseur de services internet. Un service comme { -brand-mozilla-vpn } masque votre adresse IP pour cacher votre emplacement.
rec-hist-pw-subhead = Évitez de réutiliser vos mots de passe

Просмотреть файл

@ -749,7 +749,7 @@ menu-item-logout = Ofmelde
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Betingsten en privacy
github = { -brand-github }
footer-nav-all-breaches = Alle datalekken

Просмотреть файл

@ -672,7 +672,7 @@ menu-item-logout = Emboty tembiapo
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Mboguatarã ha ñemigua
github = { -brand-github }

Просмотреть файл

@ -15,8 +15,6 @@
-brand-lockwise = Firefox Lockwise
-brand-send = Firefox Send
-brand-fpn = Firefox Private Network
-brand-mozilla-vpn = Mozilla VPN
-brand-relay = Firefox Relay
##
@ -37,6 +35,9 @@ user-add-invalid-email = Érvénytelen e-mail-cím
user-add-too-many-emails = A lehető legnagyobb számú e-mail-címet figyeli.
user-add-email-verify-subject = A { -product-name } feliratkozásának megerősítése.
user-add-duplicate-email = Ez az e-mail-cím már hozzáadásra került a { -product-name }hoz.
# Variables:
# $preferencesLink (String) - Link to preferences
# $userEmail (String) - User email address
user-add-duplicate-email-part-2 = Keresse fel a { $preferencesLink } oldalt, és ellenőrizze a(z) { $userEmail } állapotát.
error-headline = Hiba
user-verify-token-error = Az ellenőrzési token lejárt.
@ -50,11 +51,11 @@ scan-placeholder = Adja meg az e-mail-címét
scan-submit = Az e-mail-címének keresése
scan-error = Érvényes e-mail-címnek kell lennie.
download-firefox-banner-button = A { -brand-name } letöltése
# Appears after Firefox Monitor has sent a verification email to a new user.
# Appears after Firefox Monitor has sent a verification email to a new user.
signup-modal-sent = Elküldve
sign-up = Regisztráció
form-signup-error = Érvényes e-mail-címnek kell lennie
# breach-date = the calendar date a particular data theft occurred.
# breach-date = the calendar date a particular data theft occurred.
breach-date = Az adatvédelmi incidens dátuma:
# compromised accounts = the total number of user accounts exposed in data breach
compromised-accounts = Veszélyeztetett fiókok:
@ -64,6 +65,8 @@ unsub-headline = Leiratkozás a { -product-name-nowrap }ról
unsub-blurb = Ez eltávolítja az e-mail-címét a { -product-name-nowrap } listáról, és nem fog több figyelmeztetést kapni, ha új adatvédelmi incidenseket jelentenek be.
unsub-button = Leiratkozás
# Breach data provided by Have I Been Pwned.
# Variables:
# $hibp-link (String) - Link to Have I Been Pwned
hibp-attribution = Az adatvédelmi incidensek adatait a { $hibp-link } biztosítja
share-twitter = A legtöbb embernek körülbelül 100 online fiókja van. Vannak olyanok, amelyek kikerültek egy adatvédelmi incidens során? Tudja meg.
share-facebook-headline = Tudja meg, hogy része volt-e adatvédelmi incidensnek
@ -113,8 +116,6 @@ preferences = Beállítások
# Link title
home = Kezdőlap
# Link title
breaches = Adatvédelmi incidensek
# Link title
security-tips = Biztonsági tippek
fxa-account = { -brand-fxa }
# Aria button message to open menu. "Open Firefox Account Navigation"
@ -213,7 +214,9 @@ feat-security-tips = Biztonsági tippek a fiókjai védelméhez
feat-sensitive = Speciális keresés a bizalmas adatvédelmi incidensekben
feat-enroll-multiple = Több e-mail-cím beállítása az adatvédelmi incidensek figyelésénél
# This string is shown beneath each of the users email addresses to indicate
# how many known breaches that email address was found in.
# how many known breaches that email address was found in.
# Variables:
# $breachCount (Integer) - Number of breaches
appears-in-x-breaches =
{ $breachCount ->
[one] { $breachCount } ismert adatvédelmi incidensben szerepel.
@ -225,6 +228,8 @@ get-email-alerts = Maradjon biztonságban: e-mail értesítéseket kap, ha adata
search-for-your-email = Keresse meg az e-mail-címét a nyilvánosságra került adatvédelmi incidensekben, egészen 2007-ig.
back-to-top = Vissza a tetejére
comm-opt-0 = Küldjenek nekem e-mailt, ha az e-mail-címem megjelenik egy adatvédelmi incidensben.
# Variables:
# $primaryEmail (String) - User primary email address
comm-opt-1 = Az összes adatvédelmi incidens figyelmeztetésének elküldései erre a címre: { $primaryEmail }.
stop-monitoring-this = Az e-mail-cím figyelésének leállítása.
resend-verification = Ellenőrző e-mail újraküldése
@ -233,7 +238,7 @@ send-verification = Ellenőrző e-mail küldése
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-summary = Adatvédelmi incidens összefoglalója
show-breaches-for-this-email = Az e-mail-címhez tartozó összes adatvédelmi incidens megjelenítése.
@ -246,8 +251,15 @@ remove-fxm-blurb =
manage-email-addresses = E-mail-címek kezelése
# Link title
latest-breach-link = Nézze meg, hogy szerepel-e ebben az adatvédelmi incidensben
## Variables:
## $userName (String) - Username
welcome-back = Üdvözöljük újra, { $userName }!
welcome-user = Üdvözöljük, { $userName }!
##
breach-alert-subject = A { -product-name } megtalálta az e-mail-címét egy új adatvédelmi incidensben.
your-info-was-discovered-headline = Felfedezték az Ön adatait egy új adatvédelmi incidens során.
your-info-was-discovered-blurb =
@ -271,6 +283,8 @@ ba-next-step-blurb-3 =
faq1 = Nem ismerem ezt a céget vagy weboldalt? Miért szerepelek ebben az adatvédelmi incidensben?
faq2 = Miért tartott ilyen sokáig, hogy értesüljek erről az adatvédelmi incidensről?
faq3 = Honnan tudom, hogy ez az e-mail valóban a { -product-name }tól érkezett?
# Variables:
# $breachCount (Integer) - Number of breaches
new-breaches-found =
{ $breachCount ->
[one] { $breachCount } ÚJ ADATVÉDELMI INCIDENS TALÁLHATÓ
@ -278,24 +292,32 @@ new-breaches-found =
}
sign-up-headline-1 = Kapjon folyamatos figyelmeztetéseket a { -brand-fxa }jával.
account-not-required = A { -brand-name } böngésző sem szükséges a { -brand-fxa }hoz. Információkat kaphat a { -brand-Mozilla } szolgáltatásokról.
## Variables:
## $breachName (String) - Number of the breach
was-your-info-exposed = Kikerültek-e az adatai a(z) { $breachName } adatvédelmi incidensben?
find-out-if = Tudja meg, hogy kikerültek-e az adatai ebben az adatvédelmi incidensben.
fb-not-comp = Ez az e-mail-cím nem szerepelt a(z) { $breachName } adatvédelmi incidensben.
# Variables:
# $breachCount (Integer) - Number of breaches
other-breaches-found =
{ $breachCount ->
[one] Azonban { $breachCount } másik adatvédelmi incidensben szerepelt.
*[other] Azonban { $breachCount } másik adatvédelmi incidensben szerepelt.
}
fb-comp-only = Ez az e-mail-cím megjelent a(z) { $breachName } adatvédelmi incidensben.
# Variables:
# $breachCount (Integer) - Number of breaches
fb-comp-and-others =
{ $breachCount ->
[one] Ez az e-mail-cím { $breachCount } adatvédelmi incidensben jelent meg, köztük ebben is: { $breachName }.
*[other] Ez az e-mail-cím { $breachCount } adatvédelmi incidensben jelent meg, köztük ebben is: { $breachName }.
}
##
no-other-breaches-found = Az alapvető keresés nem talált más adatvédelmi incidenst.
no-results-blurb = Sajnáljuk, ez az adatvédelmi incidens nem szerepel az adatbázisunkban.
all-breaches-headline = Az összes adatvédelmi incidens a { -product-name }ban
search-breaches = Adatvédelmi incidensek keresése
# This string contains nested markup that is later used to style and link the text inside of it.
# Please do not modify or remove "<a>", "</a>", "<span>" and "</span>".
facebook-breach-note =
@ -366,6 +388,8 @@ known-data-breaches-exposed =
}
# Button
see-additional-breaches = További adatvédelmi incidensek megtekintése
# Variables:
# $breachCount (Integer) - Number of breaches
scan-results-known-breaches =
{ $breachCount ->
[one] Ez az e-mail cím 1 ismert adatvédelmi incidensben jelent meg.
@ -374,6 +398,8 @@ scan-results-known-breaches =
# This string is shown at the top of the scan results page and is followed
# by the email address that the user searched.
# In page, it reads "Results for: searchedEmail@monitor.com"
# Variables:
# $userEmail (String) - User email address
results-for = Találatok erre: { $userEmail }
other-monitored-emails = Egyéb megfigyelt e-mail-címek
email-verification-required = E-mail ellenőrzés szükséges
@ -389,6 +415,8 @@ get-ongoing-breach-monitoring = Kapjon rendszeres adatvédelmi incidensjelentés
# This is a button and follows a headline reading "Was your info exposed in the ___ breach?"
find-out = Tudja meg
new-unsub-error = Le kell iratkoznia egy a { -product-name }tól érkezett e-mailen.
# Variables:
# $breachCount (Integer) - Number of breaches
other-known-breaches-found =
{ $breachCount ->
[one] Azonban { $breachCount } egyéb ismert adatvédelmi incidensben is megjelent.
@ -406,10 +434,12 @@ breach-overview-title = Áttekintés
# $breachTitle is the name of the breached company or website.
# $breachDate and $addedDate are calendar dates.
breach-overview-new = A(z) { $breachTitle } adatvédelmi incidens áldozata lett ekkor: { $breachDate }. Amint az adatvédelmi incidens felfedezésre és megerősítésre került, hozzáadásra került az adatbázisunkhoz, ekkor: { $addedDate }.
# Title appearing on the Preferences dashboard.
# Title appearing on the Preferences dashboard.
monitor-preferences = { -product-short-name } beállítások
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# Variables:
# $userEmail (String) - User email address
signed-in-as = Bejelentkezett, mint { $userEmail }
# Appears on the All Breaches page and is followed by a list of filter options
# that a user can filter the visible breaches by.
@ -426,12 +456,16 @@ email-sent = E-mail elküldve!
want-to-add = Hozzáad egy másik e-mail-címet?
# This is part of a confirmation message that appears after a user has submitted
# the form to add an additional email to Firefox Monitor.
# Variables:
# $userEmail (String) - User email address
verify-the-link = Erősítse meg a(z) { $userEmail } címre küldött hivatkozást, hogy hozzáadja a { -product-name }hoz.
## These are part of a confirmation page that appears after a user has verified
## an additional email to Firefox Monitor.
email-verified = E-mail-cím sikeresen megerősítve.
# Variables:
# $email (String) - User email address
email-added-to-subscription = Értesítjük, ha a(z) { $email } megjelenik egy adatvédelmi incidensben.
# This message is displayed after the user has verified their email address.
# { $nestedSignInLink } is replaced by a link, using sign-in-nested as text ("sign in" for English).
@ -445,15 +479,17 @@ sign-in-nested = jelentkezzen be
# form to add an additional email to Firefox Monitor. { $preferencesLink } is a link
# to the Preferences page. The code and text for the link is generated elsewhere
# using the { preferences } string.
# Variables:
# $preferencesLink (String) - Link to preferences
manage-all-emails = Az e-mail-címeit a { $preferencesLink }ban kezelheti.
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-alert-notifications = Adatvédelmi incidensek riasztási értesítései
# This string is a label for the calendar date a breach is added to the database
# and is followed by that date.
# and is followed by that date.
breach-added-label = Adatvédelmi incidens hozzáadva:
how-hackers-work-desc = Védje a jelszavakat a számítógépes bűnözőktől, mert ez az, ami a legjobban érdekli őket.
what-to-do-after-breach-desc = Zárolja a fiókjait, hogy ne kerüljenek rossz kezekbe az adatai.
@ -475,7 +511,11 @@ see-additional-recs = További javaslatok megtekintése
## This string contains nested markup that becomes a link later in the code.
## Please do not modify or remove "<a>" and "</a>".
# Variables:
# $affectedEmail (String) - User email address
resolve-top-notification = A(z) { $affectedEmail } megjelent ebben az adatvédelmi incidensben. <a>Mik a további teendők?</a>
# Variables:
# $numAffectedEmails (Integer) - Number of affected email address
resolve-top-notification-plural =
{ $numAffectedEmails ->
[one] { $numAffectedEmails } e-mail-címe jelent meg ebben az adatvédelmi incidensben. <a>Mik a további teendők?</a>
@ -503,6 +543,8 @@ confirmation-3-subhead = Még egy lecsapva. Szép munka!
# Please do not modify or remove "<a>" and "</a>".
confirmation-3-body = Az új jelszava egyedi, erős és nehezen kitalálható? <a>Tudja meg</a>
generic-confirmation-subhead = Ez az adatvédelmi incidens megoldottként lett megjelölve
# Variables:
# $numUnresolvedBreaches (Integer) - Number of resolved breaches
generic-confirmation-message =
{ $numUnresolvedBreaches ->
[one] A fennmaradt adatvédelmi incidens megtekintéséhez ugorjon az irányítópulthoz.
@ -512,9 +554,13 @@ return-to-breach-details-link = Vissza az adatvédelmi incidens részleteihez
go-to-dashboard-link = Ugrás a vezérlőpultra
# This string appears above a breach resolution progress bar and indicates
# the percentage of breaches a user has resolved. For instance, "27% complete".
# Variables:
# $percentComplete (String) - Completion percentage
progress-percent-complete = { $percentComplete }% kész
# This string appears in the purple callouts at the top of the user dashboard and shows
# the total number of breaches a user has resolved. For instance, "5 Resolved".
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
num-resolved =
{ $numResolvedBreaches ->
[one] { $numResolvedBreaches } megoldva
@ -524,6 +570,9 @@ progress-intro-subhead = Új a { -product-name }ban: Adatvédelmi incidensek meg
progress-intro-message =
Az adatvédelmi incidens részleteinek áttekintése és a személyes információi érdekében
tett védelmi lépések megtétele után, megjelölheti az adatvédelmi incidenseket megoldottként.
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
# $numTotalBreaches (Integer) - Total number of breaches
progress-status =
{ $numTotalBreaches ->
[one] { $numResolvedBreaches } / { $numTotalBreaches } adatvédelmi incidens megjelölve megoldottként
@ -549,16 +598,20 @@ progress-complete-message =
##
resolve-this-breach-link = Ezen adatvédelmi incidens megoldása
# This string appears in resolved breach cards and is followed by
# This string appears in resolved breach cards and is followed by
# the date the user marked the breach as resolved.
marked-resolved = Megjelölve megoldottként:
hide-resolved-button = Megoldottak elrejtése
show-resolved-button = Megoldottak megjelenítése
# Variables:
# $numPasswords (Integer) - Number of exposed passwords
unresolved-passwords-exposed =
{ $numPasswords ->
[one] Megoldatlan adatvédelmi incidensekben kikerült jelszó
*[other] Megoldatlan adatvédelmi incidensekben kikerült jelszó
}
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
known-data-breaches-resolved =
{ $numResolvedBreaches ->
[one] Megoldottként megjelölt adatvédelmi incidens
@ -589,7 +642,10 @@ vpn-promo-copy-new = Védje meg online adatait – és válasszon egy Önnek meg
## VPN promotional banner. HTML tags should not be translated, e.g. `<em>`
# user's IP location is determined dynamically by 3rd-party, eg: "Your location: Los Angeles, CA". The 3rd-party service provides its own localization.
# Variables:
# $ip-location (String) - User's IP location is determined dynamically by 3rd-party,
# eg: "Your location: Los Angeles, CA". The 3rd-party service
# provides its own localization.
vpn-banner-location = Az Ön tartózkodási helye: { $ip-location }
vpn-banner-protect-yourself-with-vpn = <em>Védje meg magát</em> a { -brand-mozilla-vpn } segítségével.
vpn-banner-protected-with-vpn = A { -brand-mozilla-vpn } által <em>védve</em>.
@ -598,7 +654,8 @@ vpn-banner-title-2 = A tartózkodási helye nyomon követhető, ha nem használ
vpn-banner-subtitle-2 = Védje meg tartózkodási helyét és böngésszen biztonságosan 3 lépésben
vpn-banner-status-protected = Jelenlegi állapot: <em>Védett ✓</em>
vpn-banner-status-not-protected = Jelenlegi állapot: <em>Nem védett ⚠</em>
# user's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
# Variables:
# $ip-address (String) - User's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
vpn-banner-ip-address = IP-cím: { $ip-address }
vpn-banner-step-1 = Feliratkozás a { -brand-mozilla-vpn }-re
vpn-banner-step-2 = Válasszon egy VPN helyet
@ -657,6 +714,8 @@ ad-unit-6-before-you-complete = Mielőtt befejezné a következő regisztráció
-brand-mozilla = Mozilla
-brand-mozilla-foundation = Mozilla Foundation
-brand-github = GitHub
-brand-mozilla-vpn = Mozilla VPN
-brand-relay = Firefox Relay
##
@ -678,6 +737,10 @@ sign-in = Bejelentkezés
site-nav-breaches-link = Adatvédelmi incidensek megoldása
site-nav-settings-link = Beállítások
site-nav-help-link = Súgó és támogatás
# This call-out is above 2 image links for Firefox Relay and Mozilla VPN
site-nav-ad-callout = Próbálja ki többi biztonsági eszközünket:
brand-relay = { -brand-relay }
brand-mozilla-vpn = { -brand-mozilla-vpn }
## User menu
@ -691,9 +754,10 @@ menu-item-logout = Kijelentkezés
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Feltételek és adatvédelem
github = { -brand-github }
footer-nav-all-breaches = Összes adatvédelmi incidens
## Error page
@ -706,3 +770,17 @@ error-page-error-404-cta-button = Ugrás vissza
# $errorCode (number) - the status code of the error, e.g. 403
error-page-error-other-title = { $errorCode } Hiba történt
error-page-error-other-copy = Próbálja újra, vagy térjen vissza később
## Breach overview page
all-breaches-headline-2 = Az összes { -brand-fx-monitor } által észlelt adatvédelmi incidens
all-breaches-lead = Minden ismert adatvédelmi incidenst monitorozunk, hogy megtudjuk, hogy kikerültek-e személyes adatai. Itt van a 2007 óta jelentett adatvédelmi incidensek teljes listája.
search-breaches = Adatvédelmi incidensek keresése
# the kind of user data exposed to hackers in data breach.
exposed-data = Kikerült adatok:
## Public breach detail page
find-out-if-2 = Tudja meg, hogy érintett-e ebben az adatvédelmi incidensben
find-out-if-description = Segítünk gyorsan megnézni, hogy kikerült-e az e-mail-címe ebben az adatvédelmi incidensben, és hogy mi legyen a következő teendője.
breach-detail-cta-signup = Adatvédelmi incidensek keresése

Просмотреть файл

@ -10,10 +10,10 @@ rec-ssn =
rec-pw-1-subhead = Változtassa meg a jelszavát
# Link title
rec-pw-1-cta = Cserélje le a jelszavát ennél az oldalnál
rec-pw-1 =
rec-pw-1-2 =
Ez a jelszó legyen egyedi és különbözzön az összes Ön által használt jelszótól.
Jó stratégia kettő vagy több egymással nem kapcsolatos szó használata,
amelyből egy teljes jelmondatot tud létrehozni.
amelyből egy teljes jelmondatot tud létrehozni, és használjon számokat és jeleket.
# Recommendation subhead
rec-pw-2-subhead = Frissítse a többi bejelentkezését, amelyek ugyanazt a jelszót használják
# Link title
@ -57,22 +57,13 @@ rec-email =
megtalálják a jelszavát vagy Önt célozzák az interneten. Egy olyan szolgáltatás, mint a { -brand-relay },
elrejti a valódi e-mail-címét, miközben továbbítja azokat a valódi postaládájába.
# Recommendation subhead
rec-ip-subhead = Használjon olyan szolgáltatást, amely elfedi az IP-címét
# Link title
rec-ip-us-cta = Próbálja ki a { -brand-fpn }öt
rec-ip-us =
Az Internet Protocol címe (IP-címe) pontosan meghatározza a helyét
és internetszolgáltatóját. Egy olyan szolgáltatás, mint a { -brand-fpn }
elrejtik az IP-címét, hogy elrejtse a helyét.
rec-ip-non-us =
Az Internet Protocol címe (IP-címe) pontosan meghatározza a helyét
és internetszolgáltatóját. Egy virtuális magánhálózattal (VPN-nel) elrejtheti
a tartózkodási helyét és az IP-címét.
rec-ip-subhead-2 = Használjon VPN-t az IP-címe elrejtéséhez
# Recommendation subhead
rec-moz-vpn-cta = Próbálja ki a { -brand-mozilla-vpn }-t
rec-moz-vpn-update =
Az Internet Protocol címe (IP-címe) felfedheti a helyét és internetszolgáltatóját. Egy olyan szolgáltatás, mint a { -brand-mozilla-vpn }
elrejti az eszköze IP-címét és tartózkodási helyét.
rec-moz-vpn-update-2 =
Az Internet Protocol címe (IP-címe) pontosan meghatározza a helyét
és internetszolgáltatóját. Az olyan szolgáltatások, mint a { -brand-mozilla-vpn },
elrejtik az IP-címét, hogy elrejtsék a tartózkodási helyét.
rec-hist-pw-subhead = Kerülje a jelszavak újbóli felhasználását
# Link title
rec-hist-pw-cta-fx = Bejelentkezések megtekintése a { -brand-name }ban

Просмотреть файл

@ -15,8 +15,6 @@
-brand-lockwise = Firefox Lockwise
-brand-send = Firefox Send
-brand-fpn = Firefox Private Network
-brand-mozilla-vpn = VPN Mozilla
-brand-relay = Firefox Relay
##
@ -37,6 +35,9 @@ user-add-invalid-email = Email non valide
user-add-too-many-emails = Tu jam survelia le maxime numero de adresses email.
user-add-email-verify-subject = Verifica tu subscription a { -product-name }.
user-add-duplicate-email = Iste email ha jam essite addite a { -product-name }.
# Variables:
# $preferencesLink (String) - Link to preferences
# $userEmail (String) - User email address
user-add-duplicate-email-part-2 = Vade sur { $preferencesLink } pro controlar le stato de { $userEmail }.
error-headline = Error
user-verify-token-error = Un token de verification es necessari.
@ -50,11 +51,11 @@ scan-placeholder = Insere le adresse de e-mail
scan-submit = Cerca tu adresse de e-mail
scan-error = Debe esser un adresse de e-mail valide.
download-firefox-banner-button = Discarga { -brand-name }
# Appears after Firefox Monitor has sent a verification email to a new user.
# Appears after Firefox Monitor has sent a verification email to a new user.
signup-modal-sent = Inviate!
sign-up = Inscriber se
form-signup-error = Debe esser un adresse de email valide
# breach-date = the calendar date a particular data theft occurred.
# breach-date = the calendar date a particular data theft occurred.
breach-date = Data del violation de securitate:
# compromised accounts = the total number of user accounts exposed in data breach
compromised-accounts = Contos compromittite:
@ -64,6 +65,8 @@ unsub-headline = Remover le subscription de { -product-name-nowrap }
unsub-blurb = Isto removera tu email ab le lista de { -product-name-nowrap } e tu non recipera plus alertas quando nove violationes es annunciate.
unsub-button = Remover le subscription
# Breach data provided by Have I Been Pwned.
# Variables:
# $hibp-link (String) - Link to Have I Been Pwned
hibp-attribution = Datos sur le violation fornite per { $hibp-link }
share-twitter = Le major parte del gente ha circa 100 contos in linea. Ha un del tues essite exponite in un violation de datos? Verifica lo.
share-facebook-headline = Discoperi si tu ha essite parte de un violation de datos
@ -94,8 +97,6 @@ preferences = Preferentias
# Link title
home = Initio
# Link title
breaches = Violationes
# Link title
security-tips = Consilios de securitate
fxa-account = { -brand-fxa }
# Aria button message to open menu. "Open Firefox Account Navigation"
@ -166,7 +167,9 @@ feat-security-tips = Consilios de securitate pro proteger tu contos
feat-sensitive = Recerca avantiate in le violationes de datos sensibile
feat-enroll-multiple = Inscribe plure emails in le controlo del violationes
# This string is shown beneath each of the users email addresses to indicate
# how many known breaches that email address was found in.
# how many known breaches that email address was found in.
# Variables:
# $breachCount (Integer) - Number of breaches
appears-in-x-breaches =
{ $breachCount ->
[one] Appare in { $breachCount } violation cognoscite.
@ -178,6 +181,8 @@ get-email-alerts = Sta secur: recipe avisos email quando tu informationes appare
search-for-your-email = Cerca tu adresse email in violationes public de datos a partir de 2007.
back-to-top = Receder al apice
comm-opt-0 = Adverti me per email si un de mi adresses listate hic infra appare in un violation de datos.
# Variables:
# $primaryEmail (String) - User primary email address
comm-opt-1 = Invia tote le avisos de violation a { $primaryEmail }.
stop-monitoring-this = Cessa de controlar iste email.
resend-verification = Reinviar email de verification
@ -186,7 +191,7 @@ send-verification = Inviar ligamine de verification
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-summary = Summario del violationes
show-breaches-for-this-email = Monstrar tote le violationes pro iste email.
@ -197,8 +202,15 @@ remove-fxm-blurb = Disactivar le avisos de { -product-name }. Tu { -brand-fxa }
manage-email-addresses = Gerer adresses email
# Link title
latest-breach-link = Vide si tu era in iste violation
## Variables:
## $userName (String) - Username
welcome-back = Benvenite retro, { $userName }!
welcome-user = Benvenite, { $userName }!
##
breach-alert-subject = { -product-name } ha trovate tu email in un nove violation de datos.
your-info-was-discovered-headline = Tu informationes ha essite discoperite in un nove violation de datos.
your-info-was-discovered-blurb = Tu te ha inscribite pro reciper avisos de { -product-name } quando tu adresse de e-mail appare in un violation de datos. Ecce lo que nos sape sur iste violation.
@ -212,6 +224,8 @@ ba-next-step-blurb-3 = Usa un gestor de contrasignos pro crear contrasignos fort
faq1 = Io non recognosce iste compania o sito web. Proque me concerne iste violation?
faq2 = Proque ha il prendite tante tempore notificar me de iste violation?
faq3 = Como sape io si isto es un email legitime de { -product-name }?
# Variables:
# $breachCount (Integer) - Number of breaches
new-breaches-found =
{ $breachCount ->
[one] { $breachCount } NOVE VIOLATION TROVATE
@ -219,24 +233,32 @@ new-breaches-found =
}
sign-up-headline-1 = Recipe avisos in corso con un { -brand-fxa }.
account-not-required = { -brand-name } navigator non necessari a un { -brand-fxa }. Tu pote reciper information re le servicios de { -brand-Mozilla }.
## Variables:
## $breachName (String) - Number of the breach
was-your-info-exposed = Ha tu information essite exponite in le violation de datos de { $breachName }?
find-out-if = Discoperi si tu datos era exponite in iste violation.
fb-not-comp = Iste email non appareva in le violation { $breachName }.
# Variables:
# $breachCount (Integer) - Number of breaches
other-breaches-found =
{ $breachCount ->
[one] Comocunque, illo appareva in { $breachCount } altere violation.
*[other] Comocunque, illo appareva in { $breachCount } altere violationes.
}
fb-comp-only = Iste email appareva in le violation de datos { $breachName }.Iste email appareva in le violation { $breachName }.
# Variables:
# $breachCount (Integer) - Number of breaches
fb-comp-and-others =
{ $breachCount ->
[one] Iste e-mail appareva in { $breachCount } violation cognoscite de datos, includite { $breachName }.
*[other] Iste e-mail appareva in { $breachCount } violationes cognoscite de datos, includite { $breachName }.
}
##
no-other-breaches-found = Nulle altere violation ha essite trovate in un recerca basic.
no-results-blurb = Nos lo regretta, ille violation non es in nostre base de datos.
all-breaches-headline = Tote le violationes in { -product-name }
search-breaches = Cercar violationes
# This string contains nested markup that is later used to style and link the text inside of it.
# Please do not modify or remove "<a>", "</a>", "<span>" and "</span>".
facebook-breach-note = <span>Tu e-mail non appare in iste fuga, ma tu numero de telephono pote ancora esser vulnerabile.</span> Parte del contos ha essite compromittite in le fuga de Facebook, includite numeros de telephono e altere informationes personal, ma non adresses email.
@ -289,6 +311,8 @@ known-data-breaches-exposed =
}
# Button
see-additional-breaches = Vider altere violationes
# Variables:
# $breachCount (Integer) - Number of breaches
scan-results-known-breaches =
{ $breachCount ->
[one] Iste e-mail appareva in 1 violation cognoscite de datos.
@ -297,6 +321,8 @@ scan-results-known-breaches =
# This string is shown at the top of the scan results page and is followed
# by the email address that the user searched.
# In page, it reads "Results for: searchedEmail@monitor.com"
# Variables:
# $userEmail (String) - User email address
results-for = Resultatos pro: { $userEmail }
other-monitored-emails = Altere emails spiate
email-verification-required = Verification del email obligatori.
@ -312,6 +338,8 @@ get-ongoing-breach-monitoring = Survelia continuemente le violationes de datos p
# This is a button and follows a headline reading "Was your info exposed in the ___ breach?"
find-out = Discoperir.
new-unsub-error = Tu debera remover te del inscription per un del emails inviate ab { -product-name }.
# Variables:
# $breachCount (Integer) - Number of breaches
other-known-breaches-found =
{ $breachCount ->
[one] Nonobstante, illo appareva in { $breachCount } altere violation cognoscite.
@ -329,10 +357,12 @@ breach-overview-title = Vision general
# $breachTitle is the name of the breached company or website.
# $breachDate and $addedDate are calendar dates.
breach-overview-new = Le { $breachDate }, { $breachTitle } ha essite violate. Post le discoperta e verification de iste violation, nos lo ha addite a nostre base de datos le { $addedDate }.
# Title appearing on the Preferences dashboard.
# Title appearing on the Preferences dashboard.
monitor-preferences = { -product-short-name } Preferentias
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# Variables:
# $userEmail (String) - User email address
signed-in-as = In session como: { $userEmail }
# Appears on the All Breaches page and is followed by a list of filter options
# that a user can filter the visible breaches by.
@ -349,12 +379,16 @@ email-sent = Message inviate!
want-to-add = Vole adder un altere adresse de e-mail?
# This is part of a confirmation message that appears after a user has submitted
# the form to add an additional email to Firefox Monitor.
# Variables:
# $userEmail (String) - User email address
verify-the-link = Verifica le ligamine inviate a { $userEmail } pro adder lo a { -product-name }.
## These are part of a confirmation page that appears after a user has verified
## an additional email to Firefox Monitor.
email-verified = Email verificate con successo!
# Variables:
# $email (String) - User email address
email-added-to-subscription = Nos te avisara si tu { $email } essera involvite in un nove violation de datos.
# This message is displayed after the user has verified their email address.
# { $nestedSignInLink } is replaced by a link, using sign-in-nested as text ("sign in" for English).
@ -368,15 +402,17 @@ sign-in-nested = aperir session
# form to add an additional email to Firefox Monitor. { $preferencesLink } is a link
# to the Preferences page. The code and text for the link is generated elsewhere
# using the { preferences } string.
# Variables:
# $preferencesLink (String) - Link to preferences
manage-all-emails = Gere tote le adresses email in { $preferencesLink }.
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-alert-notifications = Notificationes de alerta de violation
# This string is a label for the calendar date a breach is added to the database
# and is followed by that date.
# and is followed by that date.
breach-added-label = Violation addite:
how-hackers-work-desc = Protege tu contrasignos ab cybercriminales, pois que es illos que illes desira plus.
what-to-do-after-breach-desc = Bloca tu contos pro evitar que tu informationes cade in manos improprie.
@ -398,7 +434,11 @@ see-additional-recs = Vide altere recommendationes
## This string contains nested markup that becomes a link later in the code.
## Please do not modify or remove "<a>" and "</a>".
# Variables:
# $affectedEmail (String) - User email address
resolve-top-notification = { $affectedEmail } appareva in iste violation. <a>Que facer?</a>
# Variables:
# $numAffectedEmails (Integer) - Number of affected email address
resolve-top-notification-plural =
{ $numAffectedEmails ->
[one] { $numAffectedEmails } de tu adresses email appareva in iste violation. <a>Que facer?</a>
@ -423,6 +463,8 @@ confirmation-3-subhead = Un altere resolvite. Optimo!
# Please do not modify or remove "<a>" and "</a>".
confirmation-3-body = Es tu nove contrasigno unic, forte e difficile a divinar? <a>Discoperi lo</a>
generic-confirmation-subhead = Isto violation ha essite marcate como resolvite
# Variables:
# $numUnresolvedBreaches (Integer) - Number of resolved breaches
generic-confirmation-message =
{ $numUnresolvedBreaches ->
[one] Pro vider le violation restante, va a tu pannello de controlo.
@ -432,9 +474,13 @@ return-to-breach-details-link = Retornar al detalios del violation
go-to-dashboard-link = Ir al pannello de controlo
# This string appears above a breach resolution progress bar and indicates
# the percentage of breaches a user has resolved. For instance, "27% complete".
# Variables:
# $percentComplete (String) - Completion percentage
progress-percent-complete = { $percentComplete }% complete
# This string appears in the purple callouts at the top of the user dashboard and shows
# the total number of breaches a user has resolved. For instance, "5 Resolved".
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
num-resolved =
{ $numResolvedBreaches ->
[one] { $numResolvedBreaches } resolvite
@ -442,6 +488,9 @@ num-resolved =
}
progress-intro-subhead = Nova in { -product-name }: marcar violationes como resolvite
progress-intro-message = Post revider le detalios re un violation e prender mesuras pro proteger tu informationes personal, tu pote marcar violationes como resolvite
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
# $numTotalBreaches (Integer) - Total number of breaches
progress-status =
{ $numTotalBreaches ->
[one] { $numResolvedBreaches } de { $numTotalBreaches } violationes marcate como resolvite
@ -461,16 +510,20 @@ progress-complete-message = <span>Prende gusto, justo?</span> Si tu desira facer
##
resolve-this-breach-link = Resolver iste violation
# This string appears in resolved breach cards and is followed by
# This string appears in resolved breach cards and is followed by
# the date the user marked the breach as resolved.
marked-resolved = Marcate le resolvite:
hide-resolved-button = Celar le resolvite
show-resolved-button = Monstrar resolvites
# Variables:
# $numPasswords (Integer) - Number of exposed passwords
unresolved-passwords-exposed =
{ $numPasswords ->
[one] Contrasigno exponite in violationes non resolvite
*[other] Contrasignos exponite in violationes non resolvite
}
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
known-data-breaches-resolved =
{ $numResolvedBreaches ->
[one] Violation de datos cognoscite marcate como resolvite
@ -501,7 +554,10 @@ vpn-promo-copy-new = Protege tu datos in linea – e selige un plano de subscrip
## VPN promotional banner. HTML tags should not be translated, e.g. `<em>`
# user's IP location is determined dynamically by 3rd-party, eg: "Your location: Los Angeles, CA". The 3rd-party service provides its own localization.
# Variables:
# $ip-location (String) - User's IP location is determined dynamically by 3rd-party,
# eg: "Your location: Los Angeles, CA". The 3rd-party service
# provides its own localization.
vpn-banner-location = Tu ubication: { $ip-location }
vpn-banner-protect-yourself-with-vpn = <em>Protege te</em> con { -brand-mozilla-vpn }.
vpn-banner-protected-with-vpn = <em>Protegite</em> con { -brand-mozilla-vpn }.
@ -510,7 +566,8 @@ vpn-banner-title-2 = Tu ubication pote esser traciate si tu non usa un VPN.
vpn-banner-subtitle-2 = Protege tu position e naviga con securitate in 3 passos
vpn-banner-status-protected = Stato actual: <em>Protegite ✓</em>
vpn-banner-status-not-protected = Stato actual: <em>Non protegite ⚠</em>
# user's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
# Variables:
# $ip-address (String) - User's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
vpn-banner-ip-address = Adresse IP: { $ip-address }
vpn-banner-step-1 = Abona te a { -brand-mozilla-vpn }
vpn-banner-step-2 = Eliger le position del VPN
@ -569,6 +626,8 @@ ad-unit-6-before-you-complete = Ante que tu completa tu proxime registration, us
-brand-mozilla = Mozilla
-brand-mozilla-foundation = Le fundation Mozilla
-brand-github = GitHub
-brand-mozilla-vpn = VPN Mozilla
-brand-relay = Firefox Relay
##
@ -590,6 +649,8 @@ sign-in = Aperir session
site-nav-breaches-link = Resolver violationes de datos
site-nav-settings-link = Parametros
site-nav-help-link = Adjuta e assistentia
brand-relay = { -brand-relay }
brand-mozilla-vpn = { -brand-mozilla-vpn }
## User menu
@ -603,9 +664,10 @@ menu-item-logout = Clauder session
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Conditiones de uso e confidentialitate
github = { -brand-github }
footer-nav-all-breaches = Tote le violationes
## Error page
@ -618,3 +680,11 @@ error-page-error-404-cta-button = Retornar
# $errorCode (number) - the status code of the error, e.g. 403
error-page-error-other-title = Alco errate eveniva { $errorCode }
error-page-error-other-copy = Retenta o reveni plus tarde
## Breach overview page
search-breaches = Cercar violationes
## Public breach detail page
breach-detail-cta-signup = Verificar si il ha violationes

Просмотреть файл

@ -10,9 +10,10 @@ rec-ssn =
rec-pw-1-subhead = Cambia tu contrasigno
# Link title
rec-pw-1-cta = Modifica contrasigno pro iste sito
rec-pw-1 =
Face le contrasigno unic e differente de tote le alteres que tu usa.
Un bon strategia a sequer es de combinar duo o plus parolas sin relation inter se pro crear un phrase-clave complete.
rec-pw-1-2 =
Rende iste contrasigno unic e differente de tote le alteros que tu usa.
Un bon strategia a sequer es de combinar duo o plus parolas sin relation
pro crear un phrase-clave complete, e includer numeros e symbolos.
# Recommendation subhead
rec-pw-2-subhead = Renova le altere credentiales que usa le mesme contrasigno
# Link title
@ -40,16 +41,11 @@ rec-email-mask-subhead = Usa un masca email
rec-email-cta = Prova { -brand-relay }
rec-email = Divulgar tu adresse de e-mail real rende plus facile pro piratas informatic o traciatores trovar tu contrasignos o attaccar te in linea. Un servicio como { -brand-relay } cela tu adresse de e-mail real e reexpedi le messages a tu cassa de entrata real.
# Recommendation subhead
rec-ip-subhead = Usa un servicio que masca tu adresse IP
# Link title
rec-ip-us-cta = Prova { -brand-fpn }
rec-ip-us = Tu adresse de protocollo internet (IP) indica tu position geographic e fornitor de servicio internet. Un servicio como { -brand-fpn } masca tu adresse IP e cela tu position.
rec-ip-non-us = Tu adresse de protocollo internet (IP) indica tu position geographic e fornitor de servicio internet. Con un rete virtual private (VPN), tu pote celar tu position e mascar tu adresse IP.
# Recommendation subhead
rec-moz-vpn-cta = Prova { -brand-mozilla-vpn }
rec-moz-vpn-update =
Tu adresse del protocollo Internet (IP) identifica tu position geographic e tu fornitor de servicio internet. Un servicio
como { -brand-mozilla-vpn } cela tu adresse IP e tu position pro tu integre apparato.
rec-moz-vpn-update-2 =
Tu adresse de Protocollo Internet (IP) identifica tu position geographic
e fornitor de servicio internet. Un servicio como { -brand-mozilla-vpn }
masca tu adresse IP e cela tu position.
rec-hist-pw-subhead = Non reusa contrasignos
# Link title
rec-hist-pw-cta-fx = Vide le credentiales in { -brand-name }

Просмотреть файл

@ -680,7 +680,7 @@ menu-item-logout = Disconnetti
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Termini di utilizzo e privacy
github = { -brand-github }
footer-nav-all-breaches = Tutte le violazioni

Просмотреть файл

@ -48,7 +48,7 @@ rec-email =
rec-ip-subhead-2 = Usa una VPN per nascondere il tuo indirizzo IP
# Recommendation subhead
rec-moz-vpn-cta = Prova { -brand-mozilla-vpn }
rec-moz-vpn-update-2 = Il tuo indirizzo IP (Internet Protocolo) permette di risalire alla tua posizione e al tuo fornitore di servizi internet. Un servizio come { -brand-mozilla-vpn } maschera il tuo indirizzo IP per nascondere la tua posizione.
rec-moz-vpn-update-2 = Il tuo indirizzo IP (Internet Protocol) permette di risalire alla tua posizione e al tuo fornitore di servizi internet. Un servizio come { -brand-mozilla-vpn } maschera il tuo indirizzo IP per nascondere la tua posizione.
rec-hist-pw-subhead = Evita di riutilizzare le password
# Link title
rec-hist-pw-cta-fx = Visualizza le credenziali in { -brand-name }

Просмотреть файл

@ -749,7 +749,7 @@ menu-item-logout = Afmelden
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Voorwaarden en Privacy
github = { -brand-github }
footer-nav-all-breaches = Alle datalekken

Просмотреть файл

@ -673,7 +673,7 @@ menu-item-logout = Logg ut
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Vilkår og personvern
github = { -brand-github }

Просмотреть файл

@ -720,7 +720,7 @@ menu-item-logout = Sair
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Termos e Privacidade
github = { -brand-github }
footer-nav-all-breaches = Todos os vazamentos

Просмотреть файл

@ -686,7 +686,7 @@ menu-item-logout = Terminar sessão
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Termos e privacidade
github = { -brand-github }

Просмотреть файл

@ -737,7 +737,7 @@ menu-item-logout = Выйти
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Условия и конфиденциальность
github = { -brand-github }
footer-nav-all-breaches = Все утечки

Просмотреть файл

@ -780,7 +780,7 @@ menu-item-logout = Odhlásiť sa
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Podmienky a ochrana súkromia
github = { -brand-github }

Просмотреть файл

@ -708,7 +708,7 @@ menu-item-settings = Nastavitve
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Pogoji in zasebnost
github = { -brand-github }

Просмотреть файл

@ -6,5 +6,13 @@
### Dialog window that allows a user to add a new email address to be monitored
add-email-add-another-heading = Shtoni adresë tjetër email
# $total is the number of emails a user is allowed to add
add-email-your-account-includes =
{ $total ->
[one] Llogaria juaj përfshin mbikëqyrjen e { $total } adrese email. Shtoni një adresë të re email, që të shihni nëse është përfshirë në një cenim.
*[other] Llogaria juaj përfshin mbikëqyrjen e { $total } adresash email. Shtoni një adresë të re email, që të shihni nëse është përfshirë në një cenim.
}
add-email-address-input-label = Adresë email
add-email-send-verification-button = Dërgo lidhje verifikimi
# $email is the newly added email address. $settings-href is the URL for the Settings page. HTML tags should not be translated, e.g. `<a>`
add-email-verify-the-link = Verifikoni lidhjen e dërguar te { $email } për ta shtuar te { -brand-fx-monitor }. Administroni krejt adresat email, që nga <a { $settings-href }>Rregullimet</a>.

Просмотреть файл

@ -677,6 +677,7 @@ sign-in = Hyni
## Site navigation
site-nav-breaches-link = Zgjidhni Cenime të Dhënash
site-nav-settings-link = Rregullime
site-nav-help-link = Ndihmë dhe Asistencë
# This call-out is above 2 image links for Firefox Relay and Mozilla VPN
@ -696,7 +697,7 @@ menu-item-logout = Dilni
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Kushte & Privatësi
github = { -brand-github }
footer-nav-all-breaches = Krejt Cenimet
@ -716,7 +717,13 @@ error-page-error-other-copy = Ju lutemi, riprovoni, ose rikthehuni më vonë
## Breach overview page
all-breaches-headline-2 = Krejt cenimet të pikasura nga { -brand-fx-monitor }
all-breaches-lead = Mbikëqyrim krejt cenimet e ditura të të dhënave, për të parë nëse hollësitë tuaja personale qenë komprometuar. Ja një listë e plotë e krejt cenimeve që janë njoftuar që nga 2007-a.
search-breaches = Kërkoni Te Shkeljet
# the kind of user data exposed to hackers in data breach.
exposed-data = Të dhëna të ekspozuara:
## Public breach detail page
find-out-if-2 = Shihni nëse jeni përfshirë në këtë cenim
find-out-if-description = Do tju ndihmojmë të shihni shpejt e shpejt nëse adresa juaj email qe ekspozuar në këtë cenim dhe të kuptoni çtë bëhet më pas.
breach-detail-cta-signup = Kontrolloni për cenime

Просмотреть файл

@ -5,6 +5,8 @@
## Breaches header
# Data classes pie chart title
breach-chart-title = Të dhëna cenimesh
# $email-select is an interactive <select> element displaying the current email address
breach-heading-email = Cenime të dhënash për { $email-select }
# $count is the number of emails a user has added out of $total allowed
@ -13,7 +15,8 @@ emails-monitored =
[one] { $count } nga { $total } email i mbikëqyrur
*[other] { $count } nga { $total } email-e të mbikëqyrur
}
add-email-link = Shtoni adresë email
# link to Settings page where user can add/remove emails and set message preferences
manage-emails-link = Administroni email
## Breaches resolved filter
@ -25,29 +28,64 @@ filter-label-resolved = Cenime të zgjidhura
column-company = SHOQËRI
column-breached-data = TË DHËNA TË CENUARA
column-detected = TË PIKASURA
# “Resolved” is shown next to a breach if all recommended actions in response to the breach have been taken.
column-status-badge-resolved = I zgjidhur
# “Active” is shown next to a breach if the user still has at least one recommended action to perform in response to the breach.
column-status-badge-active = Aktiv
breaches-resolve-heading = Zgjidheni këtë cenim:
breaches-none-headline = Su gjetën cenime
# Variables:
# $email (String) - An email address that we did not find breaches for, e.g. `someone@example.com`
breaches-none-copy = Lajme të mbara! Për { $email } su raportuan cenime. Do të vazhdojmë ta mbikëqyrim këtë email dhe tju bëjmë të ditur, nëse ndodhin cenime të reja.
breaches-none-cta-blurb = Do të donit të mbikëqyret tjetër email?
breaches-none-cta-button = Shtoni adresë email
breaches-all-resolved-headline = Krejt cenimet janë zgjidhur
# Variables:
# $email (String) - An email address for which all breaches have been resolved, e.g. `someone@example.com`
breaches-all-resolved-copy = Punë e paqme! Keni zgjidhur krejt cenimet për { $email }. Do të vazhdojmë ta mbikëqyrim këtë email dhe tju bëjmë të ditur, nëse ndodhin cenime të reja.
breaches-all-resolved-cta-blurb = Do të donit të mbikëqyret tjetër email?
breaches-all-resolved-cta-button = Shtoni adresë email
# $breachDate and $addedDate are dates that should be localized via JS DateTimeFormat(). $dataClasses is a list of strings from data-classes.ftl that should be localized via JS ListFormat()
# Variables:
# $breachDate (String) - Date of the breach
# $companyName (String) - Name of the company where the breach occurred
breach-description = Më { $breachDate } u cenua { $companyName }. Pasi u zbulua dhe u verifikua cenimi, u shtua te baza jonë e të dhënave më { $addedDate }. Ky cenim përfshinte: { $dataClasses }
## Links that we might refer to when prompting the user to make changes after a breach
breach-checklist-link-firefox-relay = { -brand-relay }
breach-checklist-link-password-manager = Përgjegjës Fjalëkalimesh { -brand-firefox }
breach-checklist-link-mozilla-vpn = { -brand-mozilla-vpn }
## Prompts the user for changes when there is a breach detected of password
# NOTE: { $breachedCompanyUrl } is a placeholder for the URL to the website of the company where the breach occurred
breach-checklist-pw-header = Që të ndryshoni fjalëkalimin tuaj dhe të aktivizoni mirëfilltësimin dyfaktorësh, kaloni te <a>{ $breachedCompanyUrl }</a>.
breach-checklist-pw-body = Sigurohuni që fjalëkalimi juaj të jetë unik dhe i zorshëm të hamendësohet. Nëse ky fjalëkalim është përdorur në çfarëdo llogarie tjetër, sigurohuni se e ndryshoni edhe atje. <a>{ -brand-firefox } Përgjegjësi i Fjalëkalimeve</a> mund tju ndihmojë të ndiqni në mënyrë të sigurt krejt fjalëkalimet tuaja.
# { $breachedCompanyLink } will link to the website of the company where the breach occurred
breach-checklist-pw-header-2 = Që të ndryshoni fjalëkalimin tuaj dhe të aktivizoni mirëfilltësimin dyfaktorësh (2FA), kaloni te sajti i shoqërisë.
# Variables:
# $passwordManagerLink (string) - a link to the password manager documentation, with { -breach-checklist-link-password-manager } as the label
breach-checklist-pw-body-2 = Sigurohuni që fjalëkalimi juaj të jetë unik dhe i zorshëm të hamendësohet. Nëse ky fjalëkalim është përdorur në çfarëdo llogarie tjetër, sigurohuni se e ndryshoni edhe atje. { $passwordManagerLink } mund tju ndihmojë të ndiqni në mënyrë të sigurt krejt fjalëkalimet tuaja.
## Prompts the user for changes when there is a breach detected of email
breach-checklist-email-header = Mbrojeni email-in tuaj me një shërbim maskimi email-sh, bie fjala <a>{ -brand-relay }</a>.
# Variables:
# $firefoxRelayLink (string) - a link to Firefox Relay, with { -breach-checklist-link-firefox-relay } as the label
breach-checklist-email-header-2 = Mbrojeni email-in tuaj me një shërbim maskimi email-sh, bie fjala, { $firefoxRelayLink }.
breach-checklist-email-body = Ky mund të fshehë adresën tuaj të vërtetë email, teksa ju sjell email-et te posta juaj e njëmendtë.
## Prompts the user for changes when there is a breach detected of social security number
# Credit reports list your bill payment history, loans, current debt, and other financial information.
# Credit reports list your bill payment history, loans, current debt, and other financial information.
# They show where you work and live and whether you've been sued, arrested, or filed for bankruptcy.
breach-checklist-ssn-header = Mbikëqyrni raportin tuaj të kreditit për llogari, hua apo karta krediti që nuk i njihni.
# A security freeze prevents prospective creditors from accessing your credit file.
# Creditors typically won't offer you credit if they can't access your credit reporting file,
# A security freeze prevents prospective creditors from accessing your credit file.
# Creditors typically won't offer you credit if they can't access your credit reporting file,
# so a security freeze, also called a credit freeze, prevents you or others from opening accounts in your name.
breach-checklist-ssn-body = Mund të shihni edhe mundësinë e ngrirjes së kreditit tuaj në <a>Equifax</a>, <a>Experian</a> dhe <a>TransUnion</a>, për tu ndaluar mashtruesve të hapin llogari të reja në emrin tuaj. Është falas dhe sdo të prekë vlerësimin e kreditit tuaj.
# This will only be shown to users in the US.
# Variables:
# $equifaxLink (string) - a link to the Equifax website
# $experianLink (string) - a link to the Experian website
# $transUnionLink (string) - a link to the TransUnion website
breach-checklist-ssn-body-2 = Mund të shihni edhe mundësinë e ngrirjes së kreditit tuaj në { $equifaxLink }, { $experianLink } dhe { $transUnionLink }, për tu ndaluar mashtruesve të hapin llogari të reja në emrin tuaj. Është falas dhe sdo të prekë vlerësimin e kreditit tuaj.
## Prompts the user for changes when there is a breach detected of credit card
@ -66,7 +104,9 @@ breach-checklist-pin-body = Sigurohuni se PIN-i juaj i ri, ose çfarëdo PIN-i t
## Prompts the user for changes when there is a breach detected of IP address
breach-checklist-ip-header = Përdoreni internetin privatisht, me një VPN, bie fjala, <a>{ -brand-mozilla-vpn }</a>.
# Variables:
# $mozillaVpnLink (string) - a link to the Mozilla VPN website, with { -breach-checklist-link-mozilla-vpn } as the label
breach-checklist-ip-header-2 = Përdoreni internetin privatisht, me një VPN, bie fjala, { $mozillaVpnLink }.
breach-checklist-ip-body = Adresa juaj IP (adresë Protokolli Internet) tregon me përpikëri vendndodhjen tuaj dhe shërbimin internet. Një VPN mund ta fshehë adresën tuaj të njëmendtë IP, që kështu të mund ta përdorni internetin privatisht.
## Prompts the user for changes when there is a breach detected of physical address
@ -81,20 +121,26 @@ breach-checklist-dob-body = Datëlindjen është e lehtë të gjenden në regjis
## Prompts the user for changes when there is a breach detected of phone number
breach-checklist-phone-header = Mbrojeni numrin tuaj të telefonit me një shërbim maskimi, të tillë si <a>{ -brand-relay }</a>, i cili fsheh numrin tuaj të vërtetë të telefonit.
# Variables:
# $firefoxRelayLink (string) - a link to Firefox Relay, with { -breach-checklist-link-firefox-relay } as the label
breach-checklist-phone-header-2 = Mbrojeni numrin tuaj të telefonit me një shërbim maskimi, të tillë si { $firefoxRelayLink }, i cili fsheh numrin tuaj të vërtetë të telefonit.
## Prompts the user for changes when there is a breach detected of security questions
# NOTE: { $breachedCompanyUrl } is a placeholder for the URL to the website of the company where the breach occurred
breach-checklist-sq-header = Përditësoni pyetjen tuaj të sigurisë te <a>{ $breachedCompanyUrl }</a>.
# { $breachedCompanyLink } will link to the website of the company where the breach occurred
breach-checklist-sq-header-2 = Përditësoni pyetjet tuaja të sigurisë te sajti i shoqërisë.
breach-checklist-sq-body = Përdorni përgjigje të gjata, të zgjedhura kuturu dhe depozitojini diku në një vend të parrezik. Bëjeni këtë kudo tjetër ku keni përdorur të njëjtat pyetje sigurie.
## Prompts the user for changes when there is a breach detected of historical password
breach-checklist-hp-header = Krijoni fjalëkalime unikë, të fortë, për çdo llogari ku keni ripërdorur fjalëkalime.
breach-checklist-hp-body = Një përgjegjës fjalëkalimesh, bie fjala, <a>Përgjegjës Fjalëkalimesh { -brand-firefox }</a> (i cili është i lirë dhe i brendshëm në shfletuesin { -brand-firefox }) mund tju ndihmojë të ndiqni krejt fjalëkalimet tuaj ti përdorni pa rrezik që nga krejt pajisjet tuaja.
# Variables:
# $passwordManagerLink (string) - a link to the password manager documentation, with { -breach-checklist-link-password-manager } as the label
breach-checklist-hp-body-2 = Një përgjegjës fjalëkalimesh, bie fjala, { $passwordManagerLink } (i cili është i lirë dhe i brendshëm në shfletuesin { -brand-firefox }) mund tju ndihmojë të ndiqni krejt fjalëkalimet tuaj dhe ti përdorni pa rrezik që nga krejt pajisjet tuaja.
## Prompts the user for changes when there is a breach detected of other types
# NOTE: { $companyName } is a placeholder for the name of the company where the breach occurred
# Variables:
# $breachDate (String) - Date of the breach
# $companyName (String) - Name of the company where the breach occurred
breach-checklist-general-header = Lidhuni me { $companyName } për tu bërë të ditur këtë cenim dhe kërkojuni për hapa specifikë që mund të ndërmerrni.

Просмотреть файл

@ -33,6 +33,9 @@ customer-interactions = Ndërveprime klienti
dates-of-birth = Data lindjesh
deceased-date = Data vdekjesh
deceased-statuses = Gjendje vdekjeje
# Instructions that you can set up in online shopping services to get your orders
# delivered (e.g. deliver to a specific neighbor, entrance location, etc.).
delivery-instructions = Udhëzime dorëzimi
device-information = Të dhëna pajisjeje
device-serial-numbers = Numra serialë pajisjesh
device-usage-tracking-data = Të dhëna gjurmimi përdorimi pajisjeje
@ -52,11 +55,13 @@ family-plans = Plane familjare
family-structure = Strukturë familjare
financial-investments = Investime financiare
financial-transactions = Transaksione financiare
flights-taken = Fluturime të bëra
genders = Gjini
geographic-locations = Vendndodhje gjeografike
government-issued-ids = ID të lëshuara nga qeveri
health-insurance-information = Të dhëna sigurimesh shëndetësore
historical-passwords = Fjalëkalime të dikurshëm
hiv-statuses = Gjendje HIV
home-loan-information = Të dhëna kredie për shtëpi
home-ownership-statuses = Gjendje pronësie shtëpish
homepage-urls = URL faqesh hyrëse
@ -70,6 +75,8 @@ job-titles = Emërtesa vendi pune
# This string refers to vehicle license plates.
licence-plates = Targa
living-costs = Kosto jetese
# This string refers to financial loans.
loan-information = Hollësi kredie
login-histories = Kronologji hyrjesh
mac-addresses = Adresa MAC
marital-statuses = Gjendje martesore
@ -80,7 +87,11 @@ names = Emra
nationalities = Shtetësi
net-worths = Pasuri neto
nicknames = Nofka
# no data classes found
none-data-class = Asnjë
occupations = Punësime
# various data classes grouped together
other-data-class = Të tjera
partial-credit-card-data = Të dhëna të pjesshme karte krediti
partial-dates-of-birth = Datëlindje të pjesshme
partial-phone-numbers = Numra telefoni të pjesshëm
@ -132,6 +143,7 @@ user-website-urls = URL sajtesh përdoruesi
usernames = Emra përdoruesish
utility-bills = Fatura
vehicle-details = Hollësi automjeti
vehicle-identification-numbers-vins = Numra identifikimi automjetesh (VIN-e)
website-activity = Veprimtari në sajt
work-habits = Zakone pune
years-of-birth = Vite lindjesh

Просмотреть файл

@ -10,9 +10,10 @@ rec-ssn =
rec-pw-1-subhead = Ndryshoni fjalëkalimin tuaj
# Link title
rec-pw-1-cta = Ndryshoni fjalëkalim për këtë sajt
rec-pw-1 =
Bëjeni këtë fjalëkalim unik dhe të ndryshëm nga cilido tjetër që përdorni.
Një strategji për tu ndjekur është të ndërthuren dy ose më tepër fjalë që skanë lidhje, për të krijuar një togfjalësh të tërë.
rec-pw-1-2 =
Bëjeni këtë fjalëkalim unik dhe të ndryshëm nga cilido tjetër që përdorni.
Një strategji e mirë për tu ndjekur është të ndërthuren dy ose më tepër
fjalë që skanë lidhje, për të krijuar një togfjalësh të tërë dhe të përfshihen numra dhe simbole.
# Recommendation subhead
rec-pw-2-subhead = Përditësoni kredenciale të tjerë hyrjesh duke përdorur të njëjtin fjalëkalim
# Link title
@ -44,20 +45,13 @@ rec-email =
Dhënia e adresës tuaj reale email e bën më të lehtë për hacker-a apo gjurmues të gjejnë fjalëkalimet tuaja ose tju bëjnë objektiv në internet. Një shërbim si { -brand-relay }
e fsheh adresën tuaj reale email teksa përcjell email-et te kutia juaj reale.
# Recommendation subhead
rec-ip-subhead = Përdorni një shërbim që maskon adresën tuaj IP
# Link title
rec-ip-us-cta = Provoni { -brand-fpn }
rec-ip-us =
Adresa juaj e Protokollit Internet (adresë IP) lejon të përcaktohet me saktësi vendndodhja juaj dhe furnizuesi i shërbimit internet për ju. Një shërbim si { -brand-fpn }
e maskon adresën tuaj IP për të fshehur vendndodhjen tuaj.
rec-ip-non-us =
Adresa juaj e Protokollit Internet (adresë IP) lejon të përcaktohet me saktësi vendndodhja juaj dhe furnizuesi i shërbimit internet për ju. Me një rrjet virtual privat (VPN), mund të fshihni vendndodhjen tuaj
dhe të maskoni adresën tuaj IP.
rec-ip-subhead-2 = Përdorni një VPN që të maskoni adresën tuaj IP
# Recommendation subhead
rec-moz-vpn-cta = Provoni { -brand-mozilla-vpn }
rec-moz-vpn-update =
Adresa juaj e Protokollit Internet (adresë IP) mund të lërë të zbulohet vendndodhja juaj dhe furnizuesi i shërbimit internet. Një shërbim
si { -brand-mozilla-vpn } e fsheh adresën IP dhe vendndodhjen për krejt pajisjen tuaj.
rec-moz-vpn-update-2 =
Adresa juaj e Protokollit Internet (adresë IP) lejon të përcaktohet me saktësi vendndodhja juaj
dhe furnizuesi i shërbimit internet për ju. Një shërbim si { -brand-mozilla-vpn }
e maskon adresën tuaj IP, për fshehje të vendndodhjes tuaj.
rec-hist-pw-subhead = Shmangni ripërdorim fjalëkalimesh
# Link title
rec-hist-pw-cta-fx = Shihni kredenciale hyrjesh te { -brand-name }

53
locales/sq/settings.ftl Normal file
Просмотреть файл

@ -0,0 +1,53 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# Settings page
settings-page-title = Rregullime { -product-short-name }-i
## Breach alert preferences
settings-alert-preferences-title = Parapëlqime mbi sinjalizim cenimesh
settings-alert-preferences-option-one = Dërgo sinjalizime shkeljesh te adresa email e prekur
settings-alert-preferences-option-two = Dërgoji krejt sinjalizimet mbi cenime te adresa parësore email
## Monitored email addresses
# Variables:
# $email (string) - Email address
settings-email-label-primary = { $email } (parësor)
settings-email-list-title = Adresë email e mbikëqyrur
# Variables:
# $limit (number) - Number of email addresses included in the plan
settings-email-limit-info =
{ $limit ->
[one] Llogaria juaj përfshin mbikëqyrjen e deri { $limit } email-i.
*[other] Llogaria juaj përfshin mbikëqyrjen e deri { $limit } email-eve.
}
settings-email-verification-callout = Lypset verifikim email-i
settings-resend-email-verification-link = Ridërgo email verifikimi
settings-add-email-button = Shtoni adresë email
# This string is shown beneath each of the users email addresses to indicate
# how many known breaches that email address was found in.
# Variables:
# $breachCount (numer) - Number of breaches
settings-email-number-of-breaches-info =
{ $breachCount ->
[one] Shfaqet në { $breachCount } cenim të ditur.
*[other] Shfaqet në { $breachCount } cenime të ditura.
}
## Deactivate account
settings-deactivate-account-title = Çaktivizoje llogarinë
settings-deactivate-account-info = { -product-short-name } mund ta çaktivizoni duke fshirë { -brand-fx-account } tuaj.
settings-fxa-link-label = Kaloni te Rregullime { -brand-firefox }-i
## Add email dialog
settings-email-dialog-title = Shtoni adresë tjetër email
settings-add-email-text = Shtoni një adresë të re email, që të shihni nëse është përfshirë në ndonjë cenim.
settings-email-input-label = Adresë email
settings-send-email-verification-button = Dërgo lidhje verifikimi

Просмотреть файл

@ -754,7 +754,7 @@ menu-item-logout = Logga ut
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Villkor och sekretess
github = { -brand-github }
footer-nav-all-breaches = Alla intrång

Просмотреть файл

@ -15,8 +15,6 @@
-brand-lockwise = Firefox Lockwise
-brand-send = Firefox Send
-brand-fpn = Firefox Private Network
-brand-mozilla-vpn = Mozilla VPN
-brand-relay = Firefox Relay
##
@ -37,6 +35,9 @@ user-add-invalid-email = Geçersiz e-posta
user-add-too-many-emails = Azami sayıda e-posta adresini gözlemliyorsunuz.
user-add-email-verify-subject = { -product-name } aboneliğinizi doğrulayın.
user-add-duplicate-email = Bu e-posta zaten { -product-name }'e eklenmiş.
# Variables:
# $preferencesLink (String) - Link to preferences
# $userEmail (String) - User email address
user-add-duplicate-email-part-2 = { $userEmail } adresinin durumunu kontrol etmek için { $preferencesLink }inizi ziyaret edin.
error-headline = Hata
user-verify-token-error = Doğrulama jetonu gerekli.
@ -50,11 +51,11 @@ scan-placeholder = E-posta adresinizi yazın
scan-submit = E-postamı ara
scan-error = Geçerli bir e-posta adresi olmalı.
download-firefox-banner-button = { -brand-name }u indir
# Appears after Firefox Monitor has sent a verification email to a new user.
# Appears after Firefox Monitor has sent a verification email to a new user.
signup-modal-sent = Gönderildi!
sign-up = Kaydol
form-signup-error = Geçerli bir e-posta adresi olmalı
# breach-date = the calendar date a particular data theft occurred.
# breach-date = the calendar date a particular data theft occurred.
breach-date = İhlal tarihi:
# compromised accounts = the total number of user accounts exposed in data breach
compromised-accounts = Ele geçirilen hesap sayısı:
@ -64,6 +65,8 @@ unsub-headline = { -product-name-nowrap } aboneliğinden çık
unsub-blurb = E-posta adresiniz { -product-name-nowrap } listesinden kaldırılacak ve bundan sonraki ihlallerle ilgili uyarı almayacaksınız.
unsub-button = Abonelikten çık
# Breach data provided by Have I Been Pwned.
# Variables:
# $hibp-link (String) - Link to Have I Been Pwned
hibp-attribution = İhlal verileri { $hibp-link } tarafından sağlanmaktadır
share-twitter = Çoğu kişinin yaklaşık 100 çevrimiçi hesabı var. Hesaplarınızdan birisi veri ihlaline maruz kalmış olabilir mi? Hemen öğrenin.
share-facebook-headline = Verilerinizin çalınıp çalınmadığını öğrenin
@ -106,8 +109,6 @@ preferences = Tercihler
# Link title
home = Ana sayfa
# Link title
breaches = İhlaller
# Link title
security-tips = Güvenlik ipuçları
fxa-account = { -brand-fxa }
# Aria button message to open menu. "Open Firefox Account Navigation"
@ -184,7 +185,9 @@ feat-security-tips = Hesaplarınızı korumanız için güvenlik ipuçları
feat-sensitive = Hassas veri ihlalerinde gelişmiş arama
feat-enroll-multiple = İhlal izlemesine birden fazla e-posta ekleyin
# This string is shown beneath each of the users email addresses to indicate
# how many known breaches that email address was found in.
# how many known breaches that email address was found in.
# Variables:
# $breachCount (Integer) - Number of breaches
appears-in-x-breaches =
{ $breachCount ->
[one] Bilinen { $breachCount } ihlalde yer alıyor.
@ -196,6 +199,8 @@ get-email-alerts = Güvende kalın: Bilgileriniz yeni bir ihlalde yer alırsa e-
search-for-your-email = 2007ye uzanan bilindik veri ihlallerinde e-posta adresinizi arayın.
back-to-top = Başa dön
comm-opt-0 = Aşağıdaki e-posta adreslerimden birisi bir veri ihlalinde tespit edilirse bana e-posta gönder.
# Variables:
# $primaryEmail (String) - User primary email address
comm-opt-1 = Tüm ihlal uyarılarını { $primaryEmail } adresine gönder.
stop-monitoring-this = Bu e-postayı izlemeyi durdur.
resend-verification = Doğrulama e-postasını yeniden gönder
@ -204,7 +209,7 @@ send-verification = Doğrulama bağlantısını gönder
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-summary = İhlal özeti
show-breaches-for-this-email = Bu e-postayı içeren tüm ihlalleri göster.
@ -215,8 +220,15 @@ remove-fxm-blurb = { -product-name } bildirimlerini kapatın. { -brand-fxa } etk
manage-email-addresses = E-posta adreslerini yönet
# Link title
latest-breach-link = Bu ihlale dahil olup olmadığınızı öğrenin
## Variables:
## $userName (String) - Username
welcome-back = Yeniden hoş geldin { $userName }!
welcome-user = Hoş geldin { $userName }!
##
breach-alert-subject = { -product-name } yeni bir veri ihlalinde e-posta adresinizi buldu
your-info-was-discovered-headline = Bilgileriniz yeni bir veri ihlalinde tespit edildi.
your-info-was-discovered-blurb = E-posta adresiniz bir veri ihlalinde karşımıza çıkarsa size haber vermemiz için { -product-name }e kaydolmuştunuz. İşte bu ihlal hakkında öğrendiklerimiz…
@ -230,6 +242,8 @@ ba-next-step-blurb-3 = Güçlü ve benzersiz parolalar oluşturmak için bir par
faq1 = Bu şirketi veya web sitesini tanımıyorum. Neden bu ihlalde yer alıyorum?
faq2 = Bu ihlali bana bildirmeniz neden bu kadar uzun sürdü?
faq3 = Bu e-postanın gerçekten { -product-name } tarafından gönderildiğini nasıl anlayabilirim?
# Variables:
# $breachCount (Integer) - Number of breaches
new-breaches-found =
{ $breachCount ->
[one] { $breachCount } YENİ İHLAL BULUNDU
@ -237,24 +251,32 @@ new-breaches-found =
}
sign-up-headline-1 = { -brand-fxa } ile düzenli uyarılar alabilirsiniz.
account-not-required = { -brand-fxa } için { -brand-name } tarayıcısı gerekmez. Size { -brand-Mozilla } hizmetleri hakkında bilgi gönderebiliriz.
## Variables:
## $breachName (String) - Number of the breach
was-your-info-exposed = Bilgileriniz { $breachName } ihlalinde açığa çıktı mı?
find-out-if = Bilgilerinizin bu veri ihlalinde açığa çıkıp çıkmadığını öğrenin.
fb-not-comp = Bu e-posta { $breachName } ihlalinde yer almıyor.
# Variables:
# $breachCount (Integer) - Number of breaches
other-breaches-found =
{ $breachCount ->
[one] Ancak başka { $breachCount } ihlalde yer alıyor.
*[other] Ancak başka { $breachCount } ihlalde yer alıyor.
}
fb-comp-only = Bu e-posta adresi { $breachName } ihlalinde yer alıyor.
# Variables:
# $breachCount (Integer) - Number of breaches
fb-comp-and-others =
{ $breachCount ->
[one] Bu e-posta adresi { $breachName } dahil { $breachCount } başka bilinen ihlalde bulundu.
*[other] Bu e-posta adresi { $breachName } dahil { $breachCount } başka bilinen ihlalde bulundu.
}
##
no-other-breaches-found = Temel aramada başka bir ihlal bulunamadı.
no-results-blurb = Üzgünüz, bu ihlal veritabanımızda yok.
all-breaches-headline = { -product-name }deki tüm ihlaller
search-breaches = İhlallerde ara
# This string contains nested markup that is later used to style and link the text inside of it.
# Please do not modify or remove "<a>", "</a>", "<span>" and "</span>".
facebook-breach-note = <span>E-posta adresiniz bu sızıntıda yer almıyor ama telefon numaranız yine de ele geçirilmiş olabilir.</span> Facebook sızıntısında ele geçirilen bazı hesaplarda e-posta adresleri yer almamasına rağmen telefon numaraları ve başka kişisel bilgiler yer alıyordu. Daha önce Facebook hesabı açtıysanız -şu anda kullanmıyor olsanız bile- kendini korumak için şu adımları atmanızı öneririz
@ -304,6 +326,8 @@ known-data-breaches-exposed =
}
# Button
see-additional-breaches = Diğer ihlallere bakın
# Variables:
# $breachCount (Integer) - Number of breaches
scan-results-known-breaches =
{ $breachCount ->
[one] Bu e-posta, bilinen 1 veri ihlalinde yer alıyor.
@ -312,6 +336,8 @@ scan-results-known-breaches =
# This string is shown at the top of the scan results page and is followed
# by the email address that the user searched.
# In page, it reads "Results for: searchedEmail@monitor.com"
# Variables:
# $userEmail (String) - User email address
results-for = Sonuçlar: { $userEmail }
other-monitored-emails = İzlenen diğer e-postalar
email-verification-required = E-posta doğrulaması gerekiyor
@ -327,6 +353,8 @@ get-ongoing-breach-monitoring = İstediğiniz sayıda e-posta adresinin ihlaller
# This is a button and follows a headline reading "Was your info exposed in the ___ breach?"
find-out = Öğrenin
new-unsub-error = { -product-name } tarafından gönderilen e-postalardaki linkleri kullanarak üyelikten çıkabilirsiniz.
# Variables:
# $breachCount (Integer) - Number of breaches
other-known-breaches-found =
{ $breachCount ->
[one] Ancak başka { $breachCount } ihlalde yer alıyor.
@ -344,10 +372,12 @@ breach-overview-title = Genel Bakış
# $breachTitle is the name of the breached company or website.
# $breachDate and $addedDate are calendar dates.
breach-overview-new = { $breachDate } tarihinde { $breachTitle } bir veri ihlaline uğradı. İhlal keşfedildikten ve doğrulandıktan sonra { $addedDate } tarihinde veritabanımıza eklendi.
# Title appearing on the Preferences dashboard.
# Title appearing on the Preferences dashboard.
monitor-preferences = { -product-short-name } tercihleri
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# Variables:
# $userEmail (String) - User email address
signed-in-as = { $userEmail } olarak giriş yapıldı
# Appears on the All Breaches page and is followed by a list of filter options
# that a user can filter the visible breaches by.
@ -364,12 +394,16 @@ email-sent = E-posta gönderildi!
want-to-add = Başka bir e-posta eklemek ister misiniz?
# This is part of a confirmation message that appears after a user has submitted
# the form to add an additional email to Firefox Monitor.
# Variables:
# $userEmail (String) - User email address
verify-the-link = { $userEmail } adresine gönderilen bağlantıyı onaylarak adresinizi { -product-name }'e ekleyin.
## These are part of a confirmation page that appears after a user has verified
## an additional email to Firefox Monitor.
email-verified = E-posta başarıyla doğrulandı!
# Variables:
# $email (String) - User email address
email-added-to-subscription = Bir veri ihlalinde { $email } adresine rastlarsak sizi uyaracağız.
# This message is displayed after the user has verified their email address.
# { $nestedSignInLink } is replaced by a link, using sign-in-nested as text ("sign in" for English).
@ -383,15 +417,17 @@ sign-in-nested = giriş yapın
# form to add an additional email to Firefox Monitor. { $preferencesLink } is a link
# to the Preferences page. The code and text for the link is generated elsewhere
# using the { preferences } string.
# Variables:
# $preferencesLink (String) - Link to preferences
manage-all-emails = { $preferencesLink } üzerinden tüm e-postalarınızı yönetebilirsiniz.
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-alert-notifications = İhlal uyarısı bildirimleri
# This string is a label for the calendar date a breach is added to the database
# and is followed by that date.
# and is followed by that date.
breach-added-label = Eklenme tarihi:
how-hackers-work-desc = Parolalarınızı siber suçlulardan koruyun çünkü bu onların en çok umursadığı şey.
what-to-do-after-breach-desc = Hesaplarınızı kilitleyerek bilgilerinizin yanlış kişilerin eline geçmesini önleyin.
@ -413,7 +449,11 @@ see-additional-recs = Ek tavsiyelere bakın
## This string contains nested markup that becomes a link later in the code.
## Please do not modify or remove "<a>" and "</a>".
# Variables:
# $affectedEmail (String) - User email address
resolve-top-notification = { $affectedEmail } bu ihlalde yer alıyor. <a>Şimdi ne yapmalıyım?</a>
# Variables:
# $numAffectedEmails (Integer) - Number of affected email address
resolve-top-notification-plural =
{ $numAffectedEmails ->
[one] { $numAffectedEmails } e-posta adresiniz bu ihlalde yer alıyor. <a>Şimdi ne yapmalıyım?</a>
@ -440,6 +480,8 @@ confirmation-3-subhead = Biri daha gitti. İyi iş!
# Please do not modify or remove "<a>" and "</a>".
confirmation-3-body = Yeni parolanız benzersiz, güçlü ve tahmin edilmesi zor mu? <a>Öğrenin</a>
generic-confirmation-subhead = Bu ihlal çözüldü olarak işaretlendi
# Variables:
# $numUnresolvedBreaches (Integer) - Number of resolved breaches
generic-confirmation-message =
{ $numUnresolvedBreaches ->
[one] Kalan ihlali görmek için kontrol panelinize gidin.
@ -449,9 +491,13 @@ return-to-breach-details-link = İhlal ayrıntılarına dön
go-to-dashboard-link = Panoya git
# This string appears above a breach resolution progress bar and indicates
# the percentage of breaches a user has resolved. For instance, "27% complete".
# Variables:
# $percentComplete (String) - Completion percentage
progress-percent-complete = %{ $percentComplete } tamamlandı
# This string appears in the purple callouts at the top of the user dashboard and shows
# the total number of breaches a user has resolved. For instance, "5 Resolved".
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
num-resolved =
{ $numResolvedBreaches ->
[one] { $numResolvedBreaches } çözüldü
@ -461,6 +507,9 @@ progress-intro-subhead = Yeni { -product-name } özelliği: İhlalleri "çözül
progress-intro-message =
Bir ihlalle ilgili ayrıntıları inceleyip kişisel bilgilerinizi korumak için gereken adımları attıktan sonra
o ihlali “çözüldü” olarak işaretleyebilirsiniz.
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
# $numTotalBreaches (Integer) - Total number of breaches
progress-status =
{ $numTotalBreaches ->
[one] { $numTotalBreaches } ihlalden { $numResolvedBreaches } tanesi çözüldü olarak işaretlendi
@ -484,16 +533,20 @@ progress-complete-message = <span>Hoşunuza gitti mi?</span> Vaktiniz varsa şim
##
resolve-this-breach-link = Bu ihlali çöz
# This string appears in resolved breach cards and is followed by
# This string appears in resolved breach cards and is followed by
# the date the user marked the breach as resolved.
marked-resolved = Çözüldü olarak işaretlendi:
hide-resolved-button = Çözülenleri gizle
show-resolved-button = Çözülenleri göster
# Variables:
# $numPasswords (Integer) - Number of exposed passwords
unresolved-passwords-exposed =
{ $numPasswords ->
[one] parola çözülmemiş ihlallerde ele geçirildi
*[other] parola çözülmemiş ihlallerde ele geçirildi
}
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
known-data-breaches-resolved =
{ $numResolvedBreaches ->
[one] veri ihlali “çözüldü” olarak işaretlendi
@ -524,7 +577,10 @@ vpn-promo-copy-new = Çevrimiçi verilerinizi koruyun. Size en uygun VPN aboneli
## VPN promotional banner. HTML tags should not be translated, e.g. `<em>`
# user's IP location is determined dynamically by 3rd-party, eg: "Your location: Los Angeles, CA". The 3rd-party service provides its own localization.
# Variables:
# $ip-location (String) - User's IP location is determined dynamically by 3rd-party,
# eg: "Your location: Los Angeles, CA". The 3rd-party service
# provides its own localization.
vpn-banner-location = Konumunuz: { $ip-location }
vpn-banner-protect-yourself-with-vpn = { -brand-mozilla-vpn } ile <em>kendinizi koruyun</em>.
vpn-banner-protected-with-vpn = { -brand-mozilla-vpn } ile <em>korunuyorsunuz</em>.
@ -533,7 +589,8 @@ vpn-banner-title-2 = VPN kullanmıyorsanız konumunuz takip edilebilir.
vpn-banner-subtitle-2 = 3 adımda konumunuzu gizleyin ve güvenle gezinin
vpn-banner-status-protected = Mevcut durum: <em>Korunuyor ✓</em>
vpn-banner-status-not-protected = Mevcut durum: <em>Korunmuyor ⚠</em>
# user's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
# Variables:
# $ip-address (String) - User's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
vpn-banner-ip-address = IP adresi: { $ip-address }
vpn-banner-step-1 = { -brand-mozilla-vpn }e abone olun
vpn-banner-step-2 = VPN konumunu seçin
@ -592,6 +649,8 @@ ad-unit-6-before-you-complete = Siteye kaydolurken bilgilerinizi korumak ve gele
-brand-mozilla = Mozilla
-brand-mozilla-foundation = Mozilla Vakfı
-brand-github = GitHub
-brand-mozilla-vpn = Mozilla VPN
-brand-relay = Firefox Relay
##
@ -613,6 +672,10 @@ sign-in = Giriş yap
site-nav-breaches-link = Veri ihlallerini çöz
site-nav-settings-link = Ayarlar
site-nav-help-link = Yardım ve destek
# This call-out is above 2 image links for Firefox Relay and Mozilla VPN
site-nav-ad-callout = Diğer güvenlik araçlarımızı deneyin:
brand-relay = { -brand-relay }
brand-mozilla-vpn = { -brand-mozilla-vpn }
## User menu
@ -626,9 +689,10 @@ menu-item-logout = Çıkış yap
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Şartlar ve gizlilik
github = { -brand-github }
footer-nav-all-breaches = Tüm ihlaller
## Error page
@ -641,3 +705,15 @@ error-page-error-404-cta-button = Geri dön
# $errorCode (number) - the status code of the error, e.g. 403
error-page-error-other-title = { $errorCode } Bir hata oluştu
error-page-error-other-copy = Lütfen daha sonra tekrar deneyin
## Breach overview page
all-breaches-headline-2 = { -brand-fx-monitor } tarafından tespit edilen tüm ihlaller
search-breaches = İhlallerde ara
# the kind of user data exposed to hackers in data breach.
exposed-data = Ele geçirilen veriler:
## Public breach detail page
find-out-if-2 = Bu ihlale karışıp karışmadığınızı öğrenin
breach-detail-cta-signup = İhlalleri kontrol et

Просмотреть файл

@ -12,9 +12,6 @@ rec-ssn =
rec-pw-1-subhead = Parolanızı değiştirin
# Link title
rec-pw-1-cta = Bu sitedeki parolanızı değiştirin
rec-pw-1 =
Benzersiz ve başka yerlerde kullanmadığınız bir parola seçin.
Birbiriyle ilgisiz iki veya daha fazla kelimeyi birleştirerek iyi bir parola oluşturabilirsiniz.
# Recommendation subhead
rec-pw-2-subhead = Aynı parolayı kullanan diğer hesaplarınızı güncelleyin
# Link title
@ -51,21 +48,9 @@ rec-email-mask-subhead = Bir e-posta maskesi kullanın
rec-email-cta = { -brand-relay }i deneyin
rec-email = Gerçek e-posta adresinizi vermek, hackerların ve botların parolalarınızı bulmasını ve sizi hedef almasını kolaylaştırır { -brand-relay } gerçek e-posta adresinizi gizler ve gelen e-postaları gerçek gelen kutunuza iletir.
# Recommendation subhead
rec-ip-subhead = IP adresinizi gizleyen bir servis kullanın
# Link title
rec-ip-us-cta = { -brand-fpn }'i deneyin
rec-ip-us =
IP adresiniz konumunuzu ve internet servis sağlayıcısınızıığa çıkarır. { -brand-fpn } gibi bir hizmeti kullanarak
IP adresinizi maskeleyip konumunuzu gizleyebilirsiniz.
rec-ip-non-us =
İnternet Protokolü adresiniz (IP adresi) konumunuzu ve internet servis
sağlayıcınızı belirler. Sanal özel ağ (VPN) ile konumunuzu gizleyebilir ve
IP adresinizi maskeleyebilirsiniz.
rec-ip-subhead-2 = VPN kullanarak IP adresinizi gizleyin
# Recommendation subhead
rec-moz-vpn-cta = { -brand-mozilla-vpn }i deneyin
rec-moz-vpn-update =
IP adresiniz konumunuzu ve internet servis sağlayıcısınızıığa çıkarabilir. { -brand-mozilla-vpn } gibi bir hizmeti kullanarak
IP adresinizi ve cihazınızın konumunu gizleyebilirsiniz.
rec-hist-pw-subhead = Aynı parolayı başka yerlerde kullanmayın
# Link title
rec-hist-pw-cta-fx = { -brand-name } hesaplarınızı görüntüleyin

Просмотреть файл

@ -793,7 +793,7 @@ menu-item-logout = Вийти
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Умови та приватність
github = { -brand-github }
footer-nav-all-breaches = Усі витоки
@ -813,6 +813,7 @@ error-page-error-other-copy = Спробуйте ще раз або поверн
## Breach overview page
all-breaches-headline-2 = Усі витоки, виявлені { -brand-fx-monitor }
all-breaches-lead = Ми відстежуємо всі відомі витоки даних, щоб з’ясувати, чи була скомпрометована ваша особиста інформація. Ось повний список усіх витоків, про які було повідомлено з 2007 року.
search-breaches = Пошук витоків
# the kind of user data exposed to hackers in data breach.
exposed-data = Дата витоку:

Просмотреть файл

@ -678,7 +678,7 @@ menu-item-logout = Đăng xuất
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = Điều khoản & quyền riêng tư
github = { -brand-github }

Просмотреть файл

@ -589,7 +589,7 @@ menu-item-logout = 退出
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = 使用条款和隐私
github = { -brand-github }

Просмотреть файл

@ -15,8 +15,6 @@
-brand-lockwise = Firefox Lockwise
-brand-send = Firefox Send
-brand-fpn = Firefox Private Network
-brand-mozilla-vpn = Mozilla VPN
-brand-relay = Firefox Relay
##
@ -37,6 +35,9 @@ user-add-invalid-email = 無效的電子郵件地址
user-add-too-many-emails = 已達可監控的 E-Mail 信箱最大數量。
user-add-email-verify-subject = { -product-name } 訂閱確認
user-add-duplicate-email = 此帳號已經加入 { -product-name }。
# Variables:
# $preferencesLink (String) - Link to preferences
# $userEmail (String) - User email address
user-add-duplicate-email-part-2 = 請到您的 { $preferencesLink } 檢查 { $userEmail } 的目前狀態。
error-headline = 錯誤
user-verify-token-error = 缺少驗證 token。
@ -50,11 +51,11 @@ scan-placeholder = 輸入電子郵件地址
scan-submit = 搜尋您的電子郵件地址
scan-error = 必須是有效的電子郵件地址。
download-firefox-banner-button = 下載 { -brand-name }
# Appears after Firefox Monitor has sent a verification email to a new user.
# Appears after Firefox Monitor has sent a verification email to a new user.
signup-modal-sent = 已送出!
sign-up = 訂閱
form-signup-error = 必須是有效的電子郵件地址
# breach-date = the calendar date a particular data theft occurred.
# breach-date = the calendar date a particular data theft occurred.
breach-date = 發生日期:
# compromised accounts = the total number of user accounts exposed in data breach
compromised-accounts = 洩漏帳號數量:
@ -64,6 +65,8 @@ unsub-headline = 取消訂閱 { -product-name-nowrap }
unsub-blurb = 將會從 { -product-name-nowrap } 郵寄清單把您的信箱移除,您不會再於有新的資料外洩事件發生時收到警報。
unsub-button = 取消訂閱
# Breach data provided by Have I Been Pwned.
# Variables:
# $hibp-link (String) - Link to Have I Been Pwned
hibp-attribution = 資料外洩情況由 { $hibp-link } 提供
share-twitter = 一般人大約有 100 組線上帳號,您有任何帳號遭到資料外洩事故影響嗎?快來檢查看看。
share-facebook-headline = 看看您的帳號是否也在資料外洩事件當中
@ -94,8 +97,6 @@ preferences = 偏好設定
# Link title
home = 首頁
# Link title
breaches = 外洩事件
# Link title
security-tips = 安全小秘訣
fxa-account = { -brand-fxa }
# Aria button message to open menu. "Open Firefox Account Navigation"
@ -166,7 +167,9 @@ feat-security-tips = 保護資料的安全小秘訣
feat-sensitive = 進階搜尋敏感資料外洩事件
feat-enroll-multiple = 註冊多組 E-Mail 信箱,來監控外洩事件
# This string is shown beneath each of the users email addresses to indicate
# how many known breaches that email address was found in.
# how many known breaches that email address was found in.
# Variables:
# $breachCount (Integer) - Number of breaches
appears-in-x-breaches =
{ $breachCount ->
*[other] 出現在 { $breachCount } 場已知的外洩事件中。
@ -177,6 +180,8 @@ get-email-alerts = 確保安全: 當您的資訊出現在已知的資料外洩
search-for-your-email = 搜尋自 2007 年起的公開資料外洩事故當中,是否包含您的電子郵件帳號。
back-to-top = 回到頁面頂端
comm-opt-0 = 當下列我的任一個電子郵件信箱地址出現在資料外洩事故時,發信通知我。
# Variables:
# $primaryEmail (String) - User primary email address
comm-opt-1 = 將所有外洩警報發送到 { $primaryEmail }。
stop-monitoring-this = 停止監控此信箱。
resend-verification = 重寄驗證信
@ -185,7 +190,7 @@ send-verification = 寄送驗證鏈結
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-summary = 外洩事件摘要
show-breaches-for-this-email = 顯示所有與這個信箱相關的資料外洩事件。
@ -196,8 +201,15 @@ remove-fxm-blurb = 關閉 { -product-name } 的警報。您的 { -brand-fxa }
manage-email-addresses = 管理電子郵件地址
# Link title
latest-breach-link = 看看您是不是也在這場資料外洩事件當中
## Variables:
## $userName (String) - Username
welcome-back = { $userName },歡迎回來!
welcome-user = { $userName },歡迎!
##
breach-alert-subject = { -product-name } 發現您的信箱出現在新的資料外洩事件中。
your-info-was-discovered-headline = 在新的資料外洩事件中發現了您的資訊。
your-info-was-discovered-blurb = 您註冊過當 E-Mail 出現在新的資料外洩事件時,要接收 { -product-name } 警報。以下是我們關於這場事件所了解的資訊。
@ -211,28 +223,38 @@ ba-next-step-blurb-3 = 使用密碼管理員來建立強而獨特的密碼,並
faq1 = 我不認識這家公司或網站,為什麼我跟這個外洩事件有關係?
faq2 = 為什麼花了這麼久才通知我有資料外洩事件?
faq3 = 我怎麼知道這封信是真的來自 { -product-name }
# Variables:
# $breachCount (Integer) - Number of breaches
new-breaches-found =
{ $breachCount ->
*[other] 找到 { $breachCount } 場新的資料外洩事件
}
sign-up-headline-1 = 註冊 { -brand-fxa },取得資料外洩警報。
account-not-required = 不需要註冊 { -brand-fxa } 也能使用 { -brand-name } 瀏覽器。您可能會收到有關 { -brand-Mozilla } 相關服務的資訊。
## Variables:
## $breachName (String) - Number of the breach
was-your-info-exposed = 您的資訊是否出現在 { $breachName } 的資料外洩事件?
find-out-if = 看看您的資料是否出現在這場外洩事件中。
fb-not-comp = 這個信箱沒有出現在 { $breachName } 外洩事件。
# Variables:
# $breachCount (Integer) - Number of breaches
other-breaches-found =
{ $breachCount ->
*[other] 但出現在其他 { $breachCount } 場外洩事件中。
}
fb-comp-only = 這個信箱出現在 { $breachName } 外洩事件。
# Variables:
# $breachCount (Integer) - Number of breaches
fb-comp-and-others =
{ $breachCount ->
*[other] 這個信箱出現在 { $breachCount } 場外洩事件中,包含 { $breachName } 事件。
}
##
no-other-breaches-found = 在基礎搜尋中沒有找到其他外洩事件。
no-results-blurb = 很抱歉,我們的資料庫中沒有該外洩事件相關資料。
all-breaches-headline = { -product-name } 的所有資料外洩事件
search-breaches = 搜尋資料外洩事件
# This string contains nested markup that is later used to style and link the text inside of it.
# Please do not modify or remove "<a>", "</a>", "<span>" and "</span>".
facebook-breach-note = <span>您的電子郵件地址看起來不在這次資料外洩事件當中,但您的手機號碼還是可能已遭洩漏。</span>Facebook 資料外洩事件當中某些遭外洩的帳號資料包含了手機號碼、部分個人資料,但沒有電子郵件地址。只要您曾經註冊過 Facebook 帳號,就算現在沒在使用,我們還是建議採取下列步驟來保護自己
@ -279,6 +301,8 @@ known-data-breaches-exposed =
}
# Button
see-additional-breaches = 看其它外洩事件
# Variables:
# $breachCount (Integer) - Number of breaches
scan-results-known-breaches =
{ $breachCount ->
*[other] 此信箱出現於 { $breachCount } 場已知的資料外洩事件中。
@ -286,6 +310,8 @@ scan-results-known-breaches =
# This string is shown at the top of the scan results page and is followed
# by the email address that the user searched.
# In page, it reads "Results for: searchedEmail@monitor.com"
# Variables:
# $userEmail (String) - User email address
results-for = { $userEmail } 的搜尋結果:
other-monitored-emails = 其他監控的信箱
email-verification-required = 需要驗證信箱
@ -301,6 +327,8 @@ get-ongoing-breach-monitoring = 持續針對多組電子郵件信箱監控資料
# This is a button and follows a headline reading "Was your info exposed in the ___ breach?"
find-out = 找找看
new-unsub-error = 您可以從任何一封 { -product-name } 寄出的郵件取消訂閱。
# Variables:
# $breachCount (Integer) - Number of breaches
other-known-breaches-found =
{ $breachCount ->
*[other] 但它還出現於其他 { $breachCount } 場已知的外洩事件。
@ -317,10 +345,12 @@ breach-overview-title = 概觀
# $breachTitle is the name of the breached company or website.
# $breachDate and $addedDate are calendar dates.
breach-overview-new = { $breachTitle } 於 { $breachDate } 發生了資料外洩事件。事件發生並經過驗證後,已於 { $addedDate } 列入我們的資料庫。
# Title appearing on the Preferences dashboard.
# Title appearing on the Preferences dashboard.
monitor-preferences = { -product-short-name } 偏好設定
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# When a user is signed in, this appears in the drop down menu
# and is followed by the user's primary Firefox Account email.
# Variables:
# $userEmail (String) - User email address
signed-in-as = 已登入為: { $userEmail }
# Appears on the All Breaches page and is followed by a list of filter options
# that a user can filter the visible breaches by.
@ -337,12 +367,16 @@ email-sent = 郵件已寄出!
want-to-add = 想加入另一個信箱嗎?
# This is part of a confirmation message that appears after a user has submitted
# the form to add an additional email to Firefox Monitor.
# Variables:
# $userEmail (String) - User email address
verify-the-link = 請到 { $userEmail } 收信,點擊當中的驗證連結,即可加入 { -product-name }。
## These are part of a confirmation page that appears after a user has verified
## an additional email to Firefox Monitor.
email-verified = 成功驗證 E-Mail
# Variables:
# $email (String) - User email address
email-added-to-subscription = 若 { $email } 未來出現在資料外洩事件中,我們會通知您。
# This message is displayed after the user has verified their email address.
# { $nestedSignInLink } is replaced by a link, using sign-in-nested as text ("sign in" for English).
@ -356,15 +390,17 @@ sign-in-nested = 請登入
# form to add an additional email to Firefox Monitor. { $preferencesLink } is a link
# to the Preferences page. The code and text for the link is generated elsewhere
# using the { preferences } string.
# Variables:
# $preferencesLink (String) - Link to preferences
manage-all-emails = 於 { $preferencesLink } 管理所有電子郵件地址。
# This string is a header on the user preferences page and
# appears above a check-box list of user options which allow
# the user to choose whether or not they want to receive breach
# alerts for all of their monitored email addresses to a single
# alerts for all of their monitored email addresses to a single
# email address.
breach-alert-notifications = 資料外洩警報通知
# This string is a label for the calendar date a breach is added to the database
# and is followed by that date.
# and is followed by that date.
breach-added-label = 事件紀錄時間:
how-hackers-work-desc = 保護您的密碼不受網路犯罪侵害,這是他們最關心的議題。
what-to-do-after-breach-desc = 鎖定帳號,讓您的個人資料不落入他人之手。
@ -386,7 +422,11 @@ see-additional-recs = 看其他建議
## This string contains nested markup that becomes a link later in the code.
## Please do not modify or remove "<a>" and "</a>".
# Variables:
# $affectedEmail (String) - User email address
resolve-top-notification = { $affectedEmail } 出現在這場資料外洩事件中。<a>接下來該怎麼辦</a>
# Variables:
# $numAffectedEmails (Integer) - Number of affected email address
resolve-top-notification-plural =
{ $numAffectedEmails ->
*[other] 您有 { $numAffectedEmails } 組信箱出現在這場資料外洩事件中。<a>接下來該怎麼辦</a>
@ -410,6 +450,8 @@ confirmation-3-subhead = 又搞定一個了,幹得好!
# Please do not modify or remove "<a>" and "</a>".
confirmation-3-body = 您的新密碼獨特、強大、又很難被猜到嗎?<a>了解更多</a>
generic-confirmation-subhead = 已將此事件標示為已處理
# Variables:
# $numUnresolvedBreaches (Integer) - Number of resolved breaches
generic-confirmation-message =
{ $numUnresolvedBreaches ->
*[other] 請到儀錶板確認還剩下哪些資料外洩事件。
@ -418,15 +460,22 @@ return-to-breach-details-link = 回到事件詳情
go-to-dashboard-link = 前往儀錶板
# This string appears above a breach resolution progress bar and indicates
# the percentage of breaches a user has resolved. For instance, "27% complete".
# Variables:
# $percentComplete (String) - Completion percentage
progress-percent-complete = 完成 { $percentComplete }%
# This string appears in the purple callouts at the top of the user dashboard and shows
# the total number of breaches a user has resolved. For instance, "5 Resolved".
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
num-resolved =
{ $numResolvedBreaches ->
*[other] 已處理 { $numResolvedBreaches } 筆事件
}
progress-intro-subhead = { -product-name } 新功能: 將資料外洩事件標示為已處理
progress-intro-message = 確認事件詳細資訊並採取行動保護自己的資料後,就可以將事件標示為「已處理」。
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
# $numTotalBreaches (Integer) - Total number of breaches
progress-status =
{ $numTotalBreaches ->
*[other] 已處理 { $numResolvedBreaches } 場事件,共 { $numTotalBreaches } 場
@ -445,15 +494,19 @@ progress-complete-message = <span>覺得很棒對不對?</span>若您想要繼
##
resolve-this-breach-link = 處理過此次事件了
# This string appears in resolved breach cards and is followed by
# This string appears in resolved breach cards and is followed by
# the date the user marked the breach as resolved.
marked-resolved = 已標示為處理完成:
hide-resolved-button = 隱藏處理過的事件
show-resolved-button = 顯示處理過的事件
# Variables:
# $numPasswords (Integer) - Number of exposed passwords
unresolved-passwords-exposed =
{ $numPasswords ->
*[other] 尚未處理的事件中,洩漏出的密碼組數
}
# Variables:
# $numResolvedBreaches (Integer) - Number of resolved breaches
known-data-breaches-resolved =
{ $numResolvedBreaches ->
*[other] 標示為已解決的資料外洩事件數
@ -483,7 +536,10 @@ vpn-promo-copy-new = 保護您的線上資料 — 選擇適合您的 VPN 訂閱
## VPN promotional banner. HTML tags should not be translated, e.g. `<em>`
# user's IP location is determined dynamically by 3rd-party, eg: "Your location: Los Angeles, CA". The 3rd-party service provides its own localization.
# Variables:
# $ip-location (String) - User's IP location is determined dynamically by 3rd-party,
# eg: "Your location: Los Angeles, CA". The 3rd-party service
# provides its own localization.
vpn-banner-location = 您的所在地點:{ $ip-location }
vpn-banner-protect-yourself-with-vpn = 使用 { -brand-mozilla-vpn } <em>保護自己</em>。
vpn-banner-protected-with-vpn = 使用 { -brand-mozilla-vpn } <em>保護</em>。
@ -492,7 +548,8 @@ vpn-banner-title-2 = 若不使用 VPN可能會被其他人追蹤到您的所
vpn-banner-subtitle-2 = 只要三個步驟,快速保護您的位置資訊並安全上網
vpn-banner-status-protected = 目前狀態:<em>保護中 ✓</em>
vpn-banner-status-not-protected = 目前狀態:<em>未受保護 ⚠</em>
# user's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
# Variables:
# $ip-address (String) - User's IP address is determined dynamically, eg: "IP address: 192.168.1.1"
vpn-banner-ip-address = IP 位置:{ $ip-address }
vpn-banner-step-1 = 訂閱 { -brand-mozilla-vpn }
vpn-banner-step-2 = 選擇 VPN 地點
@ -551,6 +608,8 @@ ad-unit-6-before-you-complete = 您下次註冊帳號時,可使用轉寄信箱
-brand-mozilla = Mozilla
-brand-mozilla-foundation = Mozilla Foundation
-brand-github = GitHub
-brand-mozilla-vpn = Mozilla VPN
-brand-relay = Firefox Relay
##
@ -572,6 +631,10 @@ sign-in = 登入
site-nav-breaches-link = 處理資料外洩事件
site-nav-settings-link = 設定
site-nav-help-link = 說明與技術支援
# This call-out is above 2 image links for Firefox Relay and Mozilla VPN
site-nav-ad-callout = 歡迎試用我們其他的安全工具:
brand-relay = { -brand-relay }
brand-mozilla-vpn = { -brand-mozilla-vpn }
## User menu
@ -585,9 +648,10 @@ menu-item-logout = 登出
## Footer
mozilla = { -brand-mozilla }
mozilla = { -brand-Mozilla }
terms-and-privacy = 使用條款及隱私權
github = { -brand-github }
footer-nav-all-breaches = 所有資料外洩事件
## Error page
@ -600,3 +664,17 @@ error-page-error-404-cta-button = 回上一頁
# $errorCode (number) - the status code of the error, e.g. 403
error-page-error-other-title = { $errorCode } 有些東西不對勁!
error-page-error-other-copy = 請再試一次或稍後再回來
## Breach overview page
all-breaches-headline-2 = { -brand-fx-monitor } 偵測到的所有資料外洩事件
all-breaches-lead = 我們會監控所有已知的資料外洩事件,檢查您的個人資訊是否已遭外流。以下是自 2007 年起,所有通報過的資料外洩事件的完整清單。
search-breaches = 搜尋資料外洩事件
# the kind of user data exposed to hackers in data breach.
exposed-data = 外洩資料:
## Public breach detail page
find-out-if-2 = 看看是否您也遭此資料外洩事件影響
find-out-if-description = 我們會幫助您快速確認電子郵件信箱是否也在此事件中外洩,並且了解接下來該做什麼。
breach-detail-cta-signup = 檢查是否有外洩事件

Просмотреть файл

@ -10,7 +10,7 @@ rec-ssn =
rec-pw-1-subhead = 更改密碼
# Link title
rec-pw-1-cta = 更改此網站的密碼
rec-pw-1 = 使用獨特而不重複的密碼。一個好方式是結合多組不相關的文字成為密碼詞組。
rec-pw-1-2 = 使用獨特而不重複的密碼。一個好方式是結合多組不相關的字母、英詞彙、數、特殊符號,成為密碼詞組。
# Recommendation subhead
rec-pw-2-subhead = 更新其他使用相同密碼的網站的登入資訊
# Link title
@ -38,14 +38,10 @@ rec-email-mask-subhead = 使用轉寄信箱
rec-email-cta = 試用 { -brand-relay }
rec-email = 給出您的實際電子郵件地址,會讓駭客或追蹤器更容易在網路上找到您或追蹤您。諸如 { -brand-relay } 的服務,可先代收電子郵件,再轉寄到您實際的信箱。
# Recommendation subhead
rec-ip-subhead = 使用可隱藏您的 IP 位置的服務
# Link title
rec-ip-us-cta = 試用 { -brand-fpn }
rec-ip-us = 您的 IP 地址可以對映到所在位置與網路公司。使用類似 { -brand-fpn } 的服務則可以將 IP 位置隱藏起來,藉以隱藏您的所在位置。
rec-ip-non-us = 您的 IP 地址可以對映到所在位置與網路公司。使用 VPN 服務則可以將 IP 位置隱藏起來,藉以隱藏您的所在位置。
rec-ip-subhead-2 = 使用 VPN 來隱藏您的實際 IP 位置
# Recommendation subhead
rec-moz-vpn-cta = 試用 { -brand-mozilla-vpn }
rec-moz-vpn-update = 您的 IP 地址可以對映到所在位置與網路公司。使用類似 { -brand-mozilla-vpn } 的服務則可以將 IP 位置隱藏起來,藉以隱藏您的所在位置。
rec-moz-vpn-update-2 = 您的 IP 地址可以對映到所在位置與使用的網路業者。使用類似 { -brand-mozilla-vpn } 的服務則可以將 IP 位置隱藏起來,藉以隱藏您的實際所在位置。
rec-hist-pw-subhead = 避免重複使用密碼
# Link title
rec-hist-pw-cta-fx = 到 { -brand-name } 檢視登入資訊

808
package-lock.json сгенерированный
Просмотреть файл

@ -33,7 +33,7 @@
"git-rev-sync": "^3.0.2",
"got": "11.8.5",
"helmet": "4.2.0",
"intl-pluralrules": "1.2.1",
"intl-pluralrules": "1.3.1",
"isemail": "3.2.0",
"knex": "^2.2.0",
"mozlog": "3.0.2",
@ -45,6 +45,9 @@
"uuid": "3.4.0"
},
"devDependencies": {
"@types/gtag.js": "^0.0.12",
"@typescript-eslint/eslint-plugin": "^5.57.0",
"@typescript-eslint/parser": "^5.57.0",
"coveralls": "3.1.1",
"eslint": "^8.15.0",
"eslint-config-standard": "^17.0.0",
@ -56,7 +59,8 @@
"nodemon": "^2.0.20",
"redis-mock": "^0.56.3",
"stylelint": "^14.9.1",
"stylelint-config-standard": "^26.0.0"
"stylelint-config-standard": "^26.0.0",
"typescript": "^5.0.2"
},
"engines": {
"node": "18.12.x",
@ -726,6 +730,30 @@
"node": ">=12"
}
},
"node_modules/@eslint-community/eslint-utils": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
"integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
"dev": true,
"dependencies": {
"eslint-visitor-keys": "^3.3.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"peerDependencies": {
"eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
"node_modules/@eslint-community/regexpp": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz",
"integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==",
"dev": true,
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
"node_modules/@eslint/eslintrc": {
"version": "1.4.1",
"dev": true,
@ -1579,6 +1607,12 @@
"@types/node": "*"
}
},
"node_modules/@types/gtag.js": {
"version": "0.0.12",
"resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz",
"integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==",
"dev": true
},
"node_modules/@types/http-cache-semantics": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz",
@ -1607,6 +1641,12 @@
"@types/istanbul-lib-report": "*"
}
},
"node_modules/@types/json-schema": {
"version": "7.0.11",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
"integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
"dev": true
},
"node_modules/@types/json5": {
"version": "0.0.29",
"dev": true,
@ -1656,6 +1696,12 @@
"@types/node": "*"
}
},
"node_modules/@types/semver": {
"version": "7.3.13",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
"integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==",
"dev": true
},
"node_modules/@types/stack-utils": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
@ -1681,6 +1727,407 @@
"integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "5.57.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz",
"integrity": "sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==",
"dev": true,
"dependencies": {
"@eslint-community/regexpp": "^4.4.0",
"@typescript-eslint/scope-manager": "5.57.0",
"@typescript-eslint/type-utils": "5.57.0",
"@typescript-eslint/utils": "5.57.0",
"debug": "^4.3.4",
"grapheme-splitter": "^1.0.4",
"ignore": "^5.2.0",
"natural-compare-lite": "^1.4.0",
"semver": "^7.3.7",
"tsutils": "^3.21.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"@typescript-eslint/parser": "^5.0.0",
"eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
"version": "7.3.8",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
},
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
"node_modules/@typescript-eslint/parser": {
"version": "5.57.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz",
"integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==",
"dev": true,
"dependencies": {
"@typescript-eslint/scope-manager": "5.57.0",
"@typescript-eslint/types": "5.57.0",
"@typescript-eslint/typescript-estree": "5.57.0",
"debug": "^4.3.4"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/@typescript-eslint/parser/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/@typescript-eslint/parser/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"node_modules/@typescript-eslint/scope-manager": {
"version": "5.57.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz",
"integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "5.57.0",
"@typescript-eslint/visitor-keys": "5.57.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
}
},
"node_modules/@typescript-eslint/type-utils": {
"version": "5.57.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz",
"integrity": "sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==",
"dev": true,
"dependencies": {
"@typescript-eslint/typescript-estree": "5.57.0",
"@typescript-eslint/utils": "5.57.0",
"debug": "^4.3.4",
"tsutils": "^3.21.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"eslint": "*"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/@typescript-eslint/type-utils/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/@typescript-eslint/type-utils/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"node_modules/@typescript-eslint/types": {
"version": "5.57.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz",
"integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
}
},
"node_modules/@typescript-eslint/typescript-estree": {
"version": "5.57.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz",
"integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "5.57.0",
"@typescript-eslint/visitor-keys": "5.57.0",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
"semver": "^7.3.7",
"tsutils": "^3.21.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
"version": "7.3.8",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
},
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
"node_modules/@typescript-eslint/utils": {
"version": "5.57.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.0.tgz",
"integrity": "sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@types/json-schema": "^7.0.9",
"@types/semver": "^7.3.12",
"@typescript-eslint/scope-manager": "5.57.0",
"@typescript-eslint/types": "5.57.0",
"@typescript-eslint/typescript-estree": "5.57.0",
"eslint-scope": "^5.1.1",
"semver": "^7.3.7"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
"node_modules/@typescript-eslint/utils/node_modules/eslint-scope": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"dev": true,
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
},
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/@typescript-eslint/utils/node_modules/estraverse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"dev": true,
"engines": {
"node": ">=4.0"
}
},
"node_modules/@typescript-eslint/utils/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@typescript-eslint/utils/node_modules/semver": {
"version": "7.3.8",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
},
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@typescript-eslint/utils/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
"node_modules/@typescript-eslint/visitor-keys": {
"version": "5.57.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz",
"integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "5.57.0",
"eslint-visitor-keys": "^3.3.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
}
},
"node_modules/abab": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
@ -6016,9 +6463,9 @@
}
},
"node_modules/intl-pluralrules": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/intl-pluralrules/-/intl-pluralrules-1.2.1.tgz",
"integrity": "sha512-Wx7Pm3aQ5ME/PoDnkEaKAsLEuVNLbjN9cAiX8TUqvpob6WbExxA2x6kU/GJ403ptGMWOfcNGZKQTlg8q4fsInw=="
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/intl-pluralrules/-/intl-pluralrules-1.3.1.tgz",
"integrity": "sha512-sNYPls1Q4fyN0EGLFVJ7TIuaMWln01LupLozfIBt69rHK0DHehghMSz6ejfnSklgRddnyQSEaQPIU6d9TCKH3w=="
},
"node_modules/ip-regex": {
"version": "2.1.0",
@ -7935,6 +8382,12 @@
"dev": true,
"license": "MIT"
},
"node_modules/natural-compare-lite": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
"integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
"dev": true
},
"node_modules/negotiator": {
"version": "0.6.3",
"license": "MIT",
@ -10646,6 +11099,21 @@
"node": ">=0.6.x"
}
},
"node_modules/tsutils": {
"version": "3.21.0",
"resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
"integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
"dev": true,
"dependencies": {
"tslib": "^1.8.1"
},
"engines": {
"node": ">= 6"
},
"peerDependencies": {
"typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
}
},
"node_modules/tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@ -10728,6 +11196,19 @@
"is-typedarray": "^1.0.0"
}
},
"node_modules/typescript": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz",
"integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=12.20"
}
},
"node_modules/uglify-js": {
"version": "3.17.4",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
@ -11803,6 +12284,21 @@
"version": "0.17.8",
"optional": true
},
"@eslint-community/eslint-utils": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
"integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
"dev": true,
"requires": {
"eslint-visitor-keys": "^3.3.0"
}
},
"@eslint-community/regexpp": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz",
"integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==",
"dev": true
},
"@eslint/eslintrc": {
"version": "1.4.1",
"dev": true,
@ -12435,6 +12931,12 @@
"@types/node": "*"
}
},
"@types/gtag.js": {
"version": "0.0.12",
"resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz",
"integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==",
"dev": true
},
"@types/http-cache-semantics": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz",
@ -12462,6 +12964,12 @@
"@types/istanbul-lib-report": "*"
}
},
"@types/json-schema": {
"version": "7.0.11",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
"integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
"dev": true
},
"@types/json5": {
"version": "0.0.29",
"dev": true
@ -12509,6 +13017,12 @@
"@types/node": "*"
}
},
"@types/semver": {
"version": "7.3.13",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
"integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==",
"dev": true
},
"@types/stack-utils": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
@ -12533,6 +13047,263 @@
"integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
"dev": true
},
"@typescript-eslint/eslint-plugin": {
"version": "5.57.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz",
"integrity": "sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==",
"dev": true,
"requires": {
"@eslint-community/regexpp": "^4.4.0",
"@typescript-eslint/scope-manager": "5.57.0",
"@typescript-eslint/type-utils": "5.57.0",
"@typescript-eslint/utils": "5.57.0",
"debug": "^4.3.4",
"grapheme-splitter": "^1.0.4",
"ignore": "^5.2.0",
"natural-compare-lite": "^1.4.0",
"semver": "^7.3.7",
"tsutils": "^3.21.0"
},
"dependencies": {
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"requires": {
"ms": "2.1.2"
}
},
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"requires": {
"yallist": "^4.0.0"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"semver": {
"version": "7.3.8",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
"dev": true,
"requires": {
"lru-cache": "^6.0.0"
}
},
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
}
}
},
"@typescript-eslint/parser": {
"version": "5.57.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz",
"integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==",
"dev": true,
"requires": {
"@typescript-eslint/scope-manager": "5.57.0",
"@typescript-eslint/types": "5.57.0",
"@typescript-eslint/typescript-estree": "5.57.0",
"debug": "^4.3.4"
},
"dependencies": {
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
}
}
},
"@typescript-eslint/scope-manager": {
"version": "5.57.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz",
"integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==",
"dev": true,
"requires": {
"@typescript-eslint/types": "5.57.0",
"@typescript-eslint/visitor-keys": "5.57.0"
}
},
"@typescript-eslint/type-utils": {
"version": "5.57.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz",
"integrity": "sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==",
"dev": true,
"requires": {
"@typescript-eslint/typescript-estree": "5.57.0",
"@typescript-eslint/utils": "5.57.0",
"debug": "^4.3.4",
"tsutils": "^3.21.0"
},
"dependencies": {
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
}
}
},
"@typescript-eslint/types": {
"version": "5.57.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz",
"integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==",
"dev": true
},
"@typescript-eslint/typescript-estree": {
"version": "5.57.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz",
"integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==",
"dev": true,
"requires": {
"@typescript-eslint/types": "5.57.0",
"@typescript-eslint/visitor-keys": "5.57.0",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
"semver": "^7.3.7",
"tsutils": "^3.21.0"
},
"dependencies": {
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"requires": {
"ms": "2.1.2"
}
},
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"requires": {
"yallist": "^4.0.0"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"semver": {
"version": "7.3.8",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
"dev": true,
"requires": {
"lru-cache": "^6.0.0"
}
},
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
}
}
},
"@typescript-eslint/utils": {
"version": "5.57.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.0.tgz",
"integrity": "sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==",
"dev": true,
"requires": {
"@eslint-community/eslint-utils": "^4.2.0",
"@types/json-schema": "^7.0.9",
"@types/semver": "^7.3.12",
"@typescript-eslint/scope-manager": "5.57.0",
"@typescript-eslint/types": "5.57.0",
"@typescript-eslint/typescript-estree": "5.57.0",
"eslint-scope": "^5.1.1",
"semver": "^7.3.7"
},
"dependencies": {
"eslint-scope": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"dev": true,
"requires": {
"esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
}
},
"estraverse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"dev": true
},
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"requires": {
"yallist": "^4.0.0"
}
},
"semver": {
"version": "7.3.8",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
"dev": true,
"requires": {
"lru-cache": "^6.0.0"
}
},
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
}
}
},
"@typescript-eslint/visitor-keys": {
"version": "5.57.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz",
"integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==",
"dev": true,
"requires": {
"@typescript-eslint/types": "5.57.0",
"eslint-visitor-keys": "^3.3.0"
}
},
"abab": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
@ -15422,9 +16193,9 @@
"version": "2.2.0"
},
"intl-pluralrules": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/intl-pluralrules/-/intl-pluralrules-1.2.1.tgz",
"integrity": "sha512-Wx7Pm3aQ5ME/PoDnkEaKAsLEuVNLbjN9cAiX8TUqvpob6WbExxA2x6kU/GJ403ptGMWOfcNGZKQTlg8q4fsInw=="
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/intl-pluralrules/-/intl-pluralrules-1.3.1.tgz",
"integrity": "sha512-sNYPls1Q4fyN0EGLFVJ7TIuaMWln01LupLozfIBt69rHK0DHehghMSz6ejfnSklgRddnyQSEaQPIU6d9TCKH3w=="
},
"ip-regex": {
"version": "2.1.0"
@ -16847,6 +17618,12 @@
"version": "1.4.0",
"dev": true
},
"natural-compare-lite": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
"integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
"dev": true
},
"negotiator": {
"version": "0.6.3"
},
@ -18645,6 +19422,15 @@
"resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
"integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA=="
},
"tsutils": {
"version": "3.21.0",
"resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
"integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
"dev": true,
"requires": {
"tslib": "^1.8.1"
}
},
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@ -18703,6 +19489,12 @@
"is-typedarray": "^1.0.0"
}
},
"typescript": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz",
"integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==",
"dev": true
},
"uglify-js": {
"version": "3.17.4",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",

Просмотреть файл

@ -27,7 +27,7 @@
"git-rev-sync": "^3.0.2",
"got": "11.8.5",
"helmet": "4.2.0",
"intl-pluralrules": "1.2.1",
"intl-pluralrules": "1.3.1",
"isemail": "3.2.0",
"knex": "^2.2.0",
"mozlog": "3.0.2",
@ -39,6 +39,9 @@
"uuid": "3.4.0"
},
"devDependencies": {
"@types/gtag.js": "^0.0.12",
"@typescript-eslint/eslint-plugin": "^5.57.0",
"@typescript-eslint/parser": "^5.57.0",
"coveralls": "3.1.1",
"eslint": "^8.15.0",
"eslint-config-standard": "^17.0.0",
@ -50,7 +53,8 @@
"nodemon": "^2.0.20",
"redis-mock": "^0.56.3",
"stylelint": "^14.9.1",
"stylelint-config-standard": "^26.0.0"
"stylelint-config-standard": "^26.0.0",
"typescript": "^5.0.2"
},
"engines": {
"node": "18.12.x",
@ -89,7 +93,8 @@
"docker:build": "docker build -t blurts-server .",
"docker:run": "docker run -p 6060:6060 blurts-server",
"lint": "npm run lint:css && npm run lint:js",
"lint:js": "eslint .",
"lint:js": "eslint src",
"lint:ts": "tsc --noEmit",
"lint:css": "stylelint public/css/",
"lint:fluent": "moz-fluent-lint ./locales/en --config .github/linter_config.yml",
"fix": "npm run fix:css && npm run fix:js",

Просмотреть файл

@ -53,6 +53,7 @@ const optionalEnvVars = [
'SENTRY_DSN_LEGACY'
]
/** @type {Record<string, string>} */
const AppConstants = { }
if (!process.env.SERVER_URL && process.env.NODE_ENV === 'heroku') {
@ -60,14 +61,16 @@ if (!process.env.SERVER_URL && process.env.NODE_ENV === 'heroku') {
}
for (const v of requiredEnvVars) {
if (process.env[v] === undefined) {
const value = process.env[v]
if (value === undefined) {
throw new Error(`Required environment variable was not set: ${v}`)
}
AppConstants[v] = process.env[v]
AppConstants[v] = value
}
optionalEnvVars.forEach(key => {
if (key in process.env) AppConstants[key] = process.env[key]
const value = process.env[key]
if (value) AppConstants[key] = value
})
export default Object.freeze(AppConstants)

Просмотреть файл

@ -18,7 +18,6 @@ import '@sentry/tracing'
import AppConstants from './app-constants.js'
import { localStorage } from './utils/local-storage.js'
import { errorHandler } from './middleware/error.js'
import { doubleCsrfProtection } from './utils/csrf.js'
import { initFluentBundles, updateLocale, getMessageWithLocale, getMessage } from './utils/fluent.js'
import { loadBreachesIntoApp } from './utils/hibp.js'
import { RateLimitError } from './utils/error.js'
@ -175,7 +174,6 @@ app.use(noSearchEngineIndex)
app.use(express.static(staticPath))
app.use(express.json())
app.use(cookieParser(AppConstants.COOKIE_SECRET))
app.use(doubleCsrfProtection)
const apiLimiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes

Просмотреть файл

@ -13,8 +13,25 @@
gap: var(--padding-md);
}
.breach-detail-meta h2 {
font: var(--h2-font);
.breach-detail-meta h1 {
display: flex;
align-items: center;
gap: var(--padding-md);
}
.breach-detail-meta .breach-logo {
height: 32px;
display: inline-block;
}
.breach-detail-meta span.breach-logo {
line-height: 32px;
width: 32px;
border-radius: 32px;
font-size: 24px;
font-weight: bold;
text-transform: uppercase;
text-align: center;
}
.breach-detail-meta-domain {

Просмотреть файл

@ -126,12 +126,17 @@ const styles = `
</style>
`
/**
* @param {number} total
* @param {number} value
* @returns number
*/
const calcPercentage = (total, value) => {
if (!total) {
return 0
}
return parseFloat((value / total).toFixed(3, 10))
return parseFloat((value / total).toFixed(3))
}
const html = () => `
@ -140,6 +145,17 @@ const html = () => `
`
customElements.define('circle-chart', class extends HTMLElement {
/** @type {Array<{ key: string; name: string; color: string; count: number; }> | null} */
data
/** @type {Element | null | undefined} */
chartElement
/** @type {string} */
showPercentFor
/** @type {string} */
title
/** @type {SVGSVGElement | null} */
svg
static get observedAttributes () {
return [
'data',
@ -164,6 +180,11 @@ customElements.define('circle-chart', class extends HTMLElement {
this.render()
}
/**
* @param {string} name
* @param {string} oldValue
* @param {string} newValue
*/
attributeChangedCallback (name, oldValue, newValue) {
if (newValue === 'undefined' || newValue === oldValue) {
return
@ -181,14 +202,16 @@ customElements.define('circle-chart', class extends HTMLElement {
this.title = newValue
break
default:
console.warning(`Unhandled attribute: ${name}`)
console.warn(`Unhandled attribute: ${name}`)
}
}
composeCircles () {
let sliceOffset = 0
/** @type {string[]} */
const init = []
return `
${this.data.reduce((acc, curr) => {
${this.data?.reduce((acc, curr) => {
const percentage = calcPercentage(this.total, curr.count)
const innerRadius = this.showPercentFor !== '' ? 0.85 : 0
const strokeLength = CHART_CIRCUMFERENCE * percentage
@ -205,7 +228,7 @@ customElements.define('circle-chart', class extends HTMLElement {
sliceOffset += percentage
return acc
}, []).join('')}
}, init).join('')}
`
}
@ -214,14 +237,14 @@ customElements.define('circle-chart', class extends HTMLElement {
${this.title !== ''
? `<strong class='circle-chart-title'>${this.title}</strong>`
: ''}
${this.data.map(({ name, color }) => (
${this.data?.map(({ name, color }) => (
`<label class='circle-chart-label' style='--color: ${color}'>${name}</label>`
)).join('')}
`
}
createCircleLabel () {
const relevantItem = this.data.find(d => d.key === this.showPercentFor)
const relevantItem = this.data?.find(d => d.key === this.showPercentFor)
if (!relevantItem) {
return ''
}
@ -255,11 +278,15 @@ customElements.define('circle-chart', class extends HTMLElement {
this.labels.innerHTML = this.createChartLabels()
// Add chart elements to DOM
this.chartElement.append(this.svg)
this.chartElement.append(this.labels)
this.chartElement?.append(this.svg)
this.chartElement?.append(this.labels)
}
updateChart () {
if (!this.svg || !this.labels) {
return
}
this.svg.innerHTML = `
${this.composeCircles()}
${this.createCircleLabel()}
@ -278,7 +305,7 @@ customElements.define('circle-chart', class extends HTMLElement {
this.total = this.data.reduce((acc, curr) => acc + curr.count, 0)
this.chartElement.classList.add('updating')
this.chartElement?.classList.add('updating')
this.updateTimeout = setTimeout(() => {
if (!this.svg) {
this.createChart()
@ -286,12 +313,14 @@ customElements.define('circle-chart', class extends HTMLElement {
this.updateChart()
}
this.chartElement.classList.remove('updating')
this.chartElement?.classList.remove('updating')
}, this.svg ? CHART_UPDATE_DURATION : 0)
}
render () {
this.shadowRoot.innerHTML = html()
if (this.shadowRoot) {
this.shadowRoot.innerHTML = html()
}
this.chartElement = this.shadowRoot.querySelector('.circle-chart')
}
})

Просмотреть файл

@ -56,17 +56,21 @@ const html = `
`
customElements.define('custom-select', class extends HTMLElement {
/** @type {HTMLSelectElement} */
select
constructor () {
super()
this.attachShadow({ mode: 'open' })
this.shadowRoot.innerHTML = html
// @ts-ignore: We know that this will not return null
this.select = this.shadowRoot.querySelector('select')
this.options = this.querySelectorAll('option')
// move <option> elements into <select> (<slot> not permitted as <select> child)
this.select.append(...this.options)
this.setAttribute('value', this.select.value)
this.setAttribute('selected-index', this.select.selectedIndex)
this.setAttribute('selected-index', this.select.selectedIndex.toString())
}
get value () {
@ -79,15 +83,18 @@ customElements.define('custom-select', class extends HTMLElement {
connectedCallback () {
this.matchOptionWidth()
this.select.addEventListener('change', this)
this.select?.addEventListener('change', this)
}
/**
* @param {InputEvent & { target: HTMLSelectElement }} e
*/
handleEvent (e) {
switch (e.type) {
case 'change':
this.matchOptionWidth()
this.setAttribute('value', e.target.value)
this.setAttribute('selected-index', e.target.selectedIndex)
this.setAttribute('selected-index', e.target.selectedIndex.toString())
this.dispatchEvent(new Event('change'))
break
}
@ -95,6 +102,7 @@ customElements.define('custom-select', class extends HTMLElement {
matchOptionWidth () {
// update <select> width based on selected <option> (override fixed width based on largest <option>)
/** @type {HTMLSelectElement & { w?: number }} */
const temp = document.createElement('select')
const selectedOption = this.options[this.select.selectedIndex]

Просмотреть файл

@ -117,7 +117,7 @@ const html = `
</output>
`
const ToastTypes = {
const ToastTypes = /** @type {const} */ {
Error: 'error',
Success: 'success'
}
@ -133,8 +133,9 @@ customElements.define('toast-alert', class extends HTMLElement {
return this.getAttribute('ttl')
}
/** @param {string | null} value */
set ttl (value) {
this.setAttribute('ttl', value)
this.setAttribute('ttl', value ?? '')
this.style.setProperty('--ttl', `${value}s`) // seconds before fade-out starts
}
@ -142,17 +143,19 @@ customElements.define('toast-alert', class extends HTMLElement {
return this.getAttribute('type')
}
/** @param {string | null} value */
set type (value) {
const isValidType = Object.values(ToastTypes).includes(value)
const isValidType = typeof value === 'string' && Object.values(ToastTypes).includes(value)
if (!isValidType) {
console.warning(`Unknown toast type ${value}.`)
console.warn(`Unknown toast type ${value}.`)
return
}
this.setAttribute('type', value)
}
connectedCallback () {
const toasts = Array.from(document.querySelectorAll('toast-alert')).reverse()
const toasts = /** @type {HTMLElement[]} */ (Array.from(document.querySelectorAll('toast-alert')).reverse())
for (let i = 1, y = 0; i < toasts.length; i++) {
// start at index 1 to push old toasts down with aggregated toast heights plus 10px gap
@ -174,13 +177,14 @@ customElements.define('toast-alert', class extends HTMLElement {
this.addEventListener('animationend', this)
}
/** @param {Event} e */
handleEvent (e) {
switch (true) {
case e.target.matches('button'):
case e.target instanceof HTMLElement && e.target.matches('button'):
this.remove()
window.gtag('event', 'toast_alert', { action: 'dismiss' })
break
case e.animationName === 'fade-out':
case e instanceof AnimationEvent && e.animationName === 'fade-out':
this.remove()
window.gtag('event', 'toast_alert', { action: 'faded' })
break

Просмотреть файл

@ -112,6 +112,7 @@ async function confirmed (req, res, next, client = FxAOAuthClient) {
const data = {
breachedEmail: email,
breachLogos: req.app.locals.breachLogoMap,
ctaHref: getEmailCtaHref(utmCampaignId, 'dashboard-cta'),
heading: getMessage('email-breach-summary'),
recipientEmail: email,

Просмотреть файл

@ -31,6 +31,7 @@ async function breachDetailsPage (req, res) {
const data = {
partial: breachDetails,
breach: featuredBreach,
breachLogos: req.app.locals.breachLogoMap,
nonce: res.locals.nonce
}

Просмотреть файл

@ -20,7 +20,7 @@ import { getMessage } from '../utils/fluent.js'
import { generateToken } from '../utils/csrf.js'
import {
EmailTemplateType,
getNotifictionDummyData,
getNotificationDummyData,
getVerificationDummyData,
getMonthlyDummyData,
getSignupReportDummyData,
@ -41,7 +41,7 @@ function getTemplatesData () {
[EmailTemplateType.Notification]: {
label: 'Breach notification',
template: getPreviewTemplate(
getNotifictionDummyData(EMAIL_TEST_RECIPIENT),
getNotificationDummyData(EMAIL_TEST_RECIPIENT),
breachAlertEmailPartial
)
},

Просмотреть файл

@ -151,6 +151,7 @@ async function notify (req, res) {
if (!notifiedRecipients.includes(breachedEmail)) {
const data = {
breachData: breachAlert,
breachLogos: req.app.locals.breachLogoMap,
breachedEmail,
ctaHref: getEmailCtaHref(utmCampaignId, 'dashboard-cta'),
heading: getMessage('email-spotted-new-breach'),

Просмотреть файл

@ -11,6 +11,12 @@ function landingPage (req, res) {
nonce: res.locals.nonce
}
// Backward-compatibility with Monitor V1, for SEO.
if (req.query.breach) {
const breach = encodeURIComponent(req.query.breach)
return res.redirect(`/breach-details/${breach}`)
}
res.send(guestLayout(data))
}

Просмотреть файл

@ -29,6 +29,7 @@ import { getTemplate } from '../views/emails/email-2022.js'
import { verifyPartial } from '../views/emails/email-verify.js'
async function settingsPage (req, res) {
/** @type {Array<import('../db/tables/email_addresses.js').EmailRow>} */
const emails = await getUserEmails(req.session.user.id)
// Add primary subscriber email to the list
emails.push({

12
src/custom-types.d.ts поставляемый Normal file
Просмотреть файл

@ -0,0 +1,12 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
interface HTMLElement {
// We access this.shadowRoot in custom elements often, and we've almost always
// already called this.attachShadow({ mode: 'open' }). So, the default type
// that indicates that it might also be `null` generates a lot of noise for an
// error that we haven't run into yet. Thus, we override the default type to
// pretend that shadowRoot is always set.
shadowRoot: ShadowRoot;
}

Просмотреть файл

@ -198,6 +198,17 @@ async function _verifyNewEmail (emailHash) {
return verifiedEmail
}
/**
* @typedef {object} EmailRow Email data, as returned from the database table `email_addresses`
* @property {string} email
* @property {string} sha1
* @property {boolean} verified
*/
/**
* @param {number} userId
* @returns {Promise<EmailRow[]>}
*/
async function getUserEmails (userId) {
const userEmails = await knex('email_addresses')
.where('subscriber_id', '=', userId)

Просмотреть файл

@ -231,11 +231,12 @@ async function deleteResolutionsWithEmail (id, email) {
})
const { breach_resolution: breachResolution } = subscriber
// if email exists in breach resolution, remove it
if (breachResolution[email]) {
if (breachResolution && breachResolution[email]) {
delete breachResolution[email]
console.info(`Deleting resolution with email: ${email}`)
return await setBreachResolution(subscriber, breachResolution)
}
return await setBreachResolution(subscriber, breachResolution)
console.info(`No resolution with ${email} found, skip`)
}
async function updateBreachStats (id, stats) {

Просмотреть файл

@ -19,20 +19,21 @@ import { dialog } from '../controllers/dialog.js'
import { landingPage } from '../controllers/landing.js'
import { notFoundPage } from '../controllers/notFound.js'
import { notFound } from '../middleware/error.js'
import { doubleCsrfProtection } from '../utils/csrf.js'
const router = express.Router()
router.get('/', landingPage)
router.get('*/dialog/:name', dialog)
router.use('/', dockerFlowRoutes)
router.use('/admin', adminRoutes)
router.use('/admin', doubleCsrfProtection, adminRoutes)
router.use('/api/v1/hibp/', hibpApiRoutes)
router.use('/api/v1/user/', userApiRoutes)
router.use('/oauth', authRoutes)
router.use('/user', userRoutes)
router.use('/breaches', breachesRoutes)
router.use('/breach-details', breachDetailsRoutes)
router.use('/api/v1/user/', doubleCsrfProtection, userApiRoutes)
router.use('/oauth', doubleCsrfProtection, authRoutes)
router.use('/user', doubleCsrfProtection, userRoutes)
router.use('/breaches', doubleCsrfProtection, breachesRoutes)
router.use('/breach-details', doubleCsrfProtection, breachDetailsRoutes)
router.use('/', doubleCsrfProtection, dockerFlowRoutes)
// Do not make the non-auth previews available on prod
if (AppConstants.NODE_ENV !== 'production') {

Просмотреть файл

@ -0,0 +1,91 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/**
* Executes once
* The purpose of the script is to clean up some of the failed records during db migration on 3/28/23
*/
import Knex from 'knex'
import knexConfig from '../db/knexfile.js'
import { getAllBreachesFromDb } from '../utils/hibp.js'
import { getAllEmailsAndBreaches } from '../utils/breaches.js'
import { setBreachResolution } from '../db/tables/subscribers.js'
import mozlog from '../utils/log.js'
const log = mozlog('script.migrationCleanup')
const knex = Knex(knexConfig)
const LIMIT = 3000
let subscribersArr = []
// load all breaches for ref
const allBreaches = await getAllBreachesFromDb()
if (allBreaches && allBreaches.length > 0) log.info('breach_count', 'breaches loaded successfully! ', allBreaches.length)
const count = await knex
.from('subscribers')
.whereRaw('NOT ((breach_resolution)::jsonb \\? \'useBreachId\')')
.count('*')
log.info('total_to_be_executed', count[0])
// find all subscribers who resolved any breaches in the past,
// replace recency index with breach id
for (let i = 0; i < 10; i++) {
subscribersArr = await knex
.select('id', 'primary_email', 'breach_resolution')
.from('subscribers')
.orderBy('updated_at', 'desc')
.whereRaw('NOT ((breach_resolution)::jsonb \\? \'useBreachId\')')
.limit(LIMIT)
log.info('job', `Loaded # of subscribers: ${subscribersArr.length}`)
for (const subscriber of subscribersArr) {
const { breach_resolution: v2 } = subscriber
// console.debug({ v2 })
// if useBreachId is set, skip because this breach_resolution has already been worked on
if (v2.useBreachId) {
log.warn('job', 'Skipping since `useBreachId` is set already, this breach resolution is already converted')
continue
}
const newResolutions = {}
// fetch subscriber all breaches / email
const subscriberBreachesEmail = await getAllEmailsAndBreaches(subscriber, allBreaches)
// console.debug(JSON.stringify(subscriberBreachesEmail.verifiedEmails))
for (const email in v2) {
// console.debug({ email })
const resolutions = v2[email]
// console.debug({ resolutions })
newResolutions[email] = {}
for (const recencyIndex in resolutions) {
console.debug({ recencyIndex })
// find subscriber's relevant recency index breach information
const ve = subscriberBreachesEmail.verifiedEmails?.filter(ve => ve.email === email)[0] || {}
const subBreach = ve.breaches?.filter(b => Number(b.recencyIndex) === Number(recencyIndex))[0] || null
const breachName = subBreach?.Name
console.debug({ breachName })
// find breach id for the breach
const breachId = allBreaches.find(b => b.Name === breachName)?.Id
log.info('job', { breachId })
newResolutions[email][breachId] = v2[email][recencyIndex]
}
}
// check if v2 is changed, if so, upsert the new v2
newResolutions.useBreachId = true
await setBreachResolution(subscriber, newResolutions)
}
}
// breaking out of do..while loop
log.info('job', 'Reaching the end of the table')
process.exit()

Просмотреть файл

@ -2,33 +2,67 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
import AppConstants from '../app-constants.js'
/**
* @param {object} breach
* @param {Map<string, string>} logos Map of URLs to logos indexed by the domain name of the respective company
* @returns {string} HTML for a breach logo (either an `img`, or a `span.breach-logo` containing the breached company's first letter)
*/
export function getBreachLogo (breach, logos) {
const logo = logos.has(breach.Domain)
? `<img src='${logos.get(breach.Domain)}' alt='' loading="lazy" class='breach-logo' height='32' />`
: `<span role="img" aria-hidden='true' class='breach-logo' style='background-color: var(${getColorForName(breach.Name)});'>${breach.Name.substring(0, 1)}</span>`
const logoIsAvailable = logos?.has(breach.Domain)
return logo
if (logoIsAvailable) {
return `<img src='${AppConstants.SERVER_URL}${logos.get(breach.Domain)}' alt='' loading="lazy" class='breach-logo' height='32' />`
}
// Add CSS variable and a dedicated class for the logo placeholder
// as fallback for emails
const { className, variableName } = getColorForName(breach.Name)
const classNames = `breach-logo breach-logo-email ${className}`
const backgroundStyle = `background-color: var(${variableName});`
return `<span role="img" aria-hidden='true' class='${classNames}' style='${backgroundStyle}'>${breach.Name.substring(0, 1)}</span>`
}
/**
* @param {string} name
* @returns string CSS variable for a string-specific color
* @returns {string} CSS variable for a string-specific color
*/
function getColorForName (name) {
const logoColors = [
'--blue-5',
'--purple-5',
'--green-05',
'--violet-5',
'--orange-5',
'--yellow-5',
'--red-5',
'--pink-5'
{
className: 'bg-blue-5',
variableName: '--blue-5'
},
{
className: 'bg-purple-5',
variableName: '--purple-5'
},
{
className: 'bg-green-05',
variableName: '--green-05'
},
{
className: 'bg-violet-5',
variableName: '--violet-5'
},
{
className: 'bg-orange-5',
variableName: '--orange-5'
},
{
className: 'bg-yellow-5',
variableName: '--yellow-5'
},
{
className: 'bg-red-5',
variableName: '--red-5'
},
{
className: 'bg-pink-5',
variableName: '--pink-5'
}
]
const charValue = name

Просмотреть файл

@ -210,13 +210,17 @@ async function unsubscribeFromMonthlyReport (req) {
await updateMonthlyEmailOptout(urlQuery.token)
}
const breachDummyLogo = new Map([
['adobe.com', '/images/logo_cache/adobe.com.ico']
])
/**
* Dummy data for populating the breach notification email preview.
*
* @param {string} recipient
* @returns {object} Breach dummy data
*/
const getNotifictionDummyData = (recipient) => ({
const getNotificationDummyData = (recipient) => ({
breachData: {
Id: 1,
Name: 'Adobe',
@ -227,7 +231,6 @@ const getNotifictionDummyData = (recipient) => ({
ModifiedDate: '2023-01-01T00:00:00.000Z',
PwnCount: 123,
Description: 'Example description',
LogoPath: '/images/favicon-144.webp',
DataClasses: [
'email-addresses',
'password-hints',
@ -242,6 +245,7 @@ const getNotifictionDummyData = (recipient) => ({
IsMalware: false
},
breachedEmail: recipient,
breachLogos: breachDummyLogo,
ctaHref: getEmailCtaHref('email-test-notification', 'dashboard-cta'),
heading: getMessage('email-spotted-new-breach'),
recipientEmail: recipient,
@ -270,6 +274,7 @@ const getVerificationDummyData = (recipient) => ({
*/
const getMonthlyDummyData = (recipient) => ({
breachedEmail: 'breached@email.com',
breachLogos: breachDummyLogo,
ctaHref: `${SERVER_URL}/user/breaches`,
heading: getMessage('email-unresolved-heading'),
monitoredEmails: {
@ -294,7 +299,7 @@ const getMonthlyDummyData = (recipient) => ({
const getSignupReportDummyData = (recipient) => {
const unsafeBreachesForEmail = [
getNotifictionDummyData(recipient).breachData
getNotificationDummyData(recipient).breachData
]
const breachesCount = unsafeBreachesForEmail.length
const numPasswordsExposed = 1
@ -316,6 +321,7 @@ const getSignupReportDummyData = (recipient) => {
return {
breachedEmail: recipient,
breachLogos: breachDummyLogo,
ctaHref: getEmailCtaHref('email-test-notification', 'dashboard-cta'),
heading: unsafeBreachesForEmail.length
? getMessage('email-subject-found-breaches')
@ -331,7 +337,7 @@ export {
EmailTemplateType,
getEmailCtaHref,
getMonthlyDummyData,
getNotifictionDummyData,
getNotificationDummyData,
getSignupReportDummyData,
getUnsubscribeCtaHref,
getVerificationDummyData,

Просмотреть файл

@ -47,6 +47,8 @@ test.serial('EmailUtils.init with SMTP URL invokes nodemailer.createTransport',
const testSmtpUrl = 'smtps://test:test@test:1'
const createTransport = {
verify: td.func(),
// A mocked function can be empty:
// eslint-disable-next-line @typescript-eslint/no-empty-function
sendMail: (mailoptions, callback) => {}
}
@ -77,6 +79,8 @@ test.serial('EmailUtils.sendEmail with recipient, subject, template, context cal
const createTransport = {
verify: td.func(),
// A mocked function can be empty:
// eslint-disable-next-line @typescript-eslint/no-empty-function
use: () => {},
sendMail: (_options, cb) => cb(null, 'sent'),
transporter: { name: 'MockTransporter' }
@ -111,6 +115,8 @@ test.serial('EmailUtils.sendEmail rejects with error', async t => {
const createTransport = {
verify: td.func(),
// A mocked function can be empty:
// eslint-disable-next-line @typescript-eslint/no-empty-function
use: () => {},
// eslint-disable-next-line n/no-callback-literal
sendMail: (_options, cb) => cb('error', 'null'),

Просмотреть файл

@ -3,6 +3,9 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
class UserInputError extends Error {
/**
* @param {[string?]} params
*/
constructor (...params) {
super(...params)
this.statusCode = 400
@ -10,6 +13,9 @@ class UserInputError extends Error {
}
class UnauthorizedError extends Error {
/**
* @param {[string?]} params
*/
constructor (...params) {
super(...params)
this.statusCode = 403
@ -17,6 +23,9 @@ class UnauthorizedError extends Error {
}
class MethodNotAllowedError extends Error {
/**
* @param {[string?]} params
*/
constructor (...params) {
super(...params)
this.statusCode = 405
@ -24,6 +33,9 @@ class MethodNotAllowedError extends Error {
}
class RateLimitError extends Error {
/**
* @param {[string?]} params
*/
constructor (...params) {
super(...params)
this.statusCode = 429

Просмотреть файл

@ -11,6 +11,7 @@ import AppConstants from '../app-constants.js'
import { localStorage } from './local-storage.js'
const supportedLocales = AppConstants.SUPPORTED_LOCALES?.split(',')
/** @type {Record<string, FluentBundle>} */
const fluentBundles = {}
/**
@ -30,7 +31,7 @@ async function initFluentBundles () {
bundle.addResource(new FluentResource(str))
}))
} catch (e) {
} catch (/** @type {any} */ e) {
console.error('Could not read Fluent file:', e)
throw new Error(e)
}
@ -46,7 +47,7 @@ async function initFluentBundles () {
/**
* Set the locale used for translations negotiated between requested and available
*
* @param {Array} requestedLocales - Locales requested by client.
* @param {string[]} requestedLocales - Locales requested by client.
*/
function updateLocale (requestedLocales) {
return negotiateLanguages(
@ -75,7 +76,7 @@ function getRawMessage (id) {
if (!bundle.hasMessage(id)) bundle = fluentBundles.en
if (bundle.hasMessage(id)) return bundle.getMessage(id).value
if (bundle.hasMessage(id)) return bundle.getMessage(id)?.value
return id
}
@ -85,7 +86,7 @@ function getRawMessage (id) {
* Defaults to en if message id not found in requested locale
*
* @param {string} id - The Fluent message id.
* @param {object} args - key/value pairs corresponding to pattern in Fluent resource.
* @param {Record<string, import('@fluent/bundle').FluentVariable>} [args] - key/value pairs corresponding to pattern in Fluent resource.
* @example
* // Given FluentResource("hello = Hello, {$name}!")
* getMessage (hello, {name: "Jane"})
@ -101,8 +102,9 @@ function getMessage (id, args) {
* Defaults to en if message id not found in requested locale
*
* @param {string} id - The Fluent message id.
* @param {string{}} localePreferences
* @param {object} args - key/value pairs corresponding to pattern in Fluent resource.
* @param {string[]} localePreferences
* @param {Record<string, import('@fluent/bundle').FluentVariable>} [args] - key/value pairs corresponding to pattern in Fluent resource.
* @returns {string}
* @example
* // Given FluentResource("hello = Hello, {$name}!")
* getMessage (hello, {name: "Jane"})
@ -113,11 +115,16 @@ function getMessageWithLocale (id, localePreferences, args) {
if (!bundle.hasMessage(id)) bundle = fluentBundles.en
if (bundle.hasMessage(id)) return bundle.formatPattern(bundle.getMessage(id).value, args)
if (!bundle.hasMessage(id)) {
return id
}
return id
return bundle.formatPattern(bundle.getMessage(id)?.value ?? '', args)
}
/**
* @param {string} id
*/
function fluentError (id) {
return new Error(getMessage(id))
}

Просмотреть файл

@ -202,6 +202,51 @@ const getStyles = () => `
background-image: url('${images.logoDark}')
}
}
.bg-blue-5 {
background-color: #aaf2ff;
}
.bg-purple-5 {
background-color: #e7dfff;
}
.bg-green-05 {
background-color: #e3fff3;
}
.bg-violet-5 {
background-color: #f7e2ff;
}
.bg-orange-5 {
background-color: #fff4de;
}
.bg-yellow-5 {
background-color: #ffc;
}
.bg-red-5 {
background-color: #ffdfe7;
}
.bg-pink-5 {
background-color: #ffdef0;
}
.breach-logo {
display: block;
height: 100%;
width: 100%;
}
.breach-logo-email {
border-radius: 50%;
display: block;
height: 100%;
width: 100%;
}
</style>
`

Просмотреть файл

@ -22,7 +22,7 @@ const breachAlertCtaStyle = `
`
const breachAlertEmailPartial = data => {
const { breachData, breachedEmail, ctaHref } = data
const { breachData, breachedEmail, breachLogos, ctaHref } = data
return `
<tr>
@ -32,7 +32,7 @@ const breachAlertEmailPartial = data => {
'email-address': `<strong>${breachedEmail}</strong>`
})}
</p>
${breachCardPartial(breachData)}
${breachCardPartial(breachData, breachLogos)}
<a
href='${ctaHref}'
style='${breachAlertCtaStyle}'

Просмотреть файл

@ -4,6 +4,7 @@
import { getLocale, getMessage } from '../../utils/fluent.js'
import { formatDate } from '../../utils/format-date.js'
import { getBreachLogo } from '../../utils/breach-logo.js'
const breachAlertTableStyle = `
margin: auto
@ -29,7 +30,14 @@ const breachAlertCardsTitleStyle = `
`
const breachAlertCardsTitleImageStyle = `
vertical-align: bottom;
display: inline-block;
font-weight: bold;
line-height: 2rem;
overflow: hidden;
margin-right: 0.5rem;
text-align: center;
vertical-align: middle;
width: 2rem;
`
const breachAlertLabelStyle = `
@ -50,9 +58,8 @@ const breachAlertValueStyle = `
padding-bottom: 15px;
`
const breachCardPartial = breachData => {
const breachCardPartial = (breachData, breachLogos) => {
const {
LogoPath,
AddedDate,
DataClasses,
Title
@ -64,15 +71,15 @@ const breachCardPartial = breachData => {
<td>
<table style='${breachAlertCardsContainerStyle}'>
<tr>
<td style='${breachAlertCardsTitleStyle}'>
<img
height='25'
src='${LogoPath}'
style='${breachAlertCardsTitleImageStyle}'
width='25'
>
${Title}
</td>
<td style='${breachAlertCardsTitleStyle}'>
<span
class='breachLogoWrapper'
style='${breachAlertCardsTitleImageStyle}'
>
${getBreachLogo(breachData, breachLogos)}
</span>
${Title}
</td>
</tr>
<tr>
<td style='padding: 24px;'>

Просмотреть файл

@ -47,6 +47,7 @@ const ctaStyle = `
const signupReportEmailPartial = data => {
const {
breachedEmail,
breachLogos,
emailBreachStats,
unsafeBreachesForEmail
} = data
@ -90,7 +91,7 @@ const signupReportEmailPartial = data => {
${
unsafeBreachesForEmail?.length
? unsafeBreachesForEmail.map(unsafeBreach => (
breachCardPartial(unsafeBreach)
breachCardPartial(unsafeBreach, breachLogos)
)).join('')
: ''
}

Просмотреть файл

@ -41,26 +41,24 @@ const guestLayout = data => `
<script src='/js/index.js' type='module'></script>
<!-- Google tag (gtag.js) -->
<script nonce='${data.nonce}' type='module'>
if (navigator.doNotTrack !== '1') {
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtag/js?id='+i+dl;var n=d.querySelector('[nonce]');
n&&j.setAttribute('nonce',n.nonce||n.getAttribute('nonce'));f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','${AppConstants.GA4_MEASUREMENT_ID}');
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date()); gtag('config', '${AppConstants.GA4_MEASUREMENT_ID}');
${AppConstants.GA4_DEBUG_MODE
? `gtag('config', '${AppConstants.GA4_MEASUREMENT_ID}', { 'debug_mode': true })`
: ''}
window.gtag = gtag
} else {
function gtag() {
console.debug("Google Analytics disbled by DNT")
}
window.gtag = gtag
}
<script nonce='${data.nonce}'>
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtag/js?id='+i+dl;var n=d.querySelector('[nonce]');
n&&j.setAttribute('nonce',n.nonce||n.getAttribute('nonce'));f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','${AppConstants.GA4_MEASUREMENT_ID}');
function gtag(){dataLayer.push(arguments);}
${AppConstants.GA4_DEBUG_MODE
? `gtag('config', '${AppConstants.GA4_MEASUREMENT_ID}', { 'debug_mode': true })`
: ''}
gtag('js', new Date());
gtag('config', '${AppConstants.GA4_MEASUREMENT_ID}',
{ cookie_domain: window.location.hostname, cookie_flags: "SameSite=None;Secure" }
);
window.gtag = gtag
// Detect CTA clicks on public pages.
document.querySelectorAll('[data-cta-id]').forEach(a =>
a.addEventListener('click', e => {
gtag('event', 'clicked_cta', { cta_id: a.dataset.ctaId })
@ -68,6 +66,7 @@ const guestLayout = data => `
)
</script>
<!-- End Google tag (gtag.js) -->
</head>
<body>
<header>

Просмотреть файл

@ -41,27 +41,23 @@ const mainLayout = data => `
<script src='/js/index.js' type='module'></script>
<!-- Google tag (gtag.js) -->
<script nonce='${data.nonce}' type='module'>
if (navigator.doNotTrack !== '1') {
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtag/js?id='+i+dl;var n=d.querySelector('[nonce]');
n&&j.setAttribute('nonce',n.nonce||n.getAttribute('nonce'));f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','${AppConstants.GA4_MEASUREMENT_ID}');
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date()); gtag('config', '${AppConstants.GA4_MEASUREMENT_ID}');
${AppConstants.GA4_DEBUG_MODE
? `gtag('config', '${AppConstants.GA4_MEASUREMENT_ID}', { 'debug_mode': true })`
: ''}
window.gtag = gtag
} else {
function gtag() {
console.debug("Google Analytics disbled by DNT")
}
window.gtag = gtag
}
</script>
<script nonce='${data.nonce}'>
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtag/js?id='+i+dl;var n=d.querySelector('[nonce]');
n&&j.setAttribute('nonce',n.nonce||n.getAttribute('nonce'));f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','${AppConstants.GA4_MEASUREMENT_ID}');
function gtag(){dataLayer.push(arguments);}
${AppConstants.GA4_DEBUG_MODE
? `gtag('config', '${AppConstants.GA4_MEASUREMENT_ID}', { 'debug_mode': true })`
: ''}
gtag('js', new Date());
gtag('config', '${AppConstants.GA4_MEASUREMENT_ID}',
{ cookie_domain: window.location.hostname, cookie_flags: "SameSite=None;Secure" }
);
window.gtag = gtag
</script>
<!-- End Google tag (gtag.js) -->
</head>
<body>

Просмотреть файл

@ -4,6 +4,16 @@
import { getMessage } from '../../utils/fluent.js'
/**
* @typedef {object} PartialData
* @property {string} csrfToken
* @property {number} emailLimit
*/
/**
* @param {PartialData} data
* @returns string
*/
export const addEmail = data => `
<header>
<button class='close'></button>

Просмотреть файл

@ -2,7 +2,11 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
export const admin = data => `
/**
* @param {unknown} _data
* @returns string
*/
export const admin = _data => `
<section>
<h1>Admin</h1>

Просмотреть файл

@ -2,6 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
import { getBreachLogo } from '../../utils/breach-logo.js'
import { getLocale, getMessage } from '../../utils/fluent.js'
import { getAllPriorityDataClasses, getAllGenericRecommendations } from '../../utils/recommendations.js'
@ -129,9 +130,11 @@ function makeBreachDetails (breach) {
export const breachDetails = data => `
<header class="breach-detail-header">
<img class="breach-detail-logo breach-logo" alt="" src="https://monitor.cdn.mozilla.net/img/logos/${data.breach.LogoPath}" />
<div class="breach-detail-meta">
<h1>${data.breach.Title}</h1>
<h1>
${getBreachLogo(data.breach, data.breachLogos)}
${data.breach.Title}
</h1>
${getBreachCategory(data.breach) === 'website-breach'
? `<a href="https://${data.breach.Domain}" class="breach-detail-meta-domain" rel="nofollow noopener noreferrer" data-event-label="${data.breach.Domain}" data-event-action="Engage" data-event-category="Breach Detail: Website URL Link" target="_blank">${data.breach.Domain}</a>`
: ''}

Просмотреть файл

@ -63,6 +63,11 @@ const createEmailList = (emails, breachCounts) => `
</ul>
`
/**
* @param {string} csrfToken
* @param {{ isChecked: boolean; option: unknown; }} options
* @returns string
*/
const optionInput = (csrfToken, { isChecked, option }) => `
<input
${isChecked ? 'checked' : ''}
@ -74,6 +79,10 @@ const optionInput = (csrfToken, { isChecked, option }) => `
>
`
/**
* @param {{ csrfToken: string; allEmailsToPrimary: boolean }} options
* @returns string
*/
const alertOptions = ({ csrfToken, allEmailsToPrimary }) => `
<div class='settings-alert-options'>
<label class='settings-radio-input'>
@ -98,6 +107,16 @@ const alertOptions = ({ csrfToken, allEmailsToPrimary }) => `
</div>
`
/**
* @typedef {object} PartialData
* @property {string} csrfToken
* @property {boolean} allEmailsToPrimary
*/
/**
* @param {PartialData} data
* @returns string
*/
export const settings = data => {
const { allEmailsToPrimary, breachCounts, csrfToken, emails, limit } = data

Просмотреть файл

@ -4,6 +4,15 @@
import { getMessage } from '../../utils/fluent.js'
/**
* @typedef {object} PartialData
* @property {string} csrfToken
*/
/**
* @param {PartialData} data
* @returns string
*/
const unsubscribe = data => `
<section class="unsubscribe">
<h1>${getMessage('unsub-headline')}</h1>

109
tsconfig.json Normal file
Просмотреть файл

@ -0,0 +1,109 @@
{
"include": [
"src/custom-types.d.ts",
"src/client/js/components/**/*",
"src/views/partials/add-email.js",
"src/views/partials/admin.js",
// Replace the above with the following when our entire codebase has type annotations:
// "src/**/*",
],
"compilerOptions": {
/* Visit https://aka.ms/tsconfig to read more about this file */
/* Projects */
// "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
// "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
// "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
// "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
// "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
// "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
/* Language and Environment */
"target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
// "jsx": "preserve", /* Specify what JSX code is generated. */
// "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
// "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
// "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
// "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
"moduleDetection": "force", /* Control what method is used to detect module-format JS files. */
/* Modules */
"module": "commonjs", /* Specify what module code is generated. */
"rootDir": "./src/", /* Specify the root folder within your source files. */
// "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
// "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
// "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
// "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */
// "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */
// "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */
// "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
// "resolveJsonModule": true, /* Enable importing .json files. */
// "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
// "noResolve": true, /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */
/* JavaScript Support */
"allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
"checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
/* Emit */
// "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
// "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
// "outDir": "./", /* Specify an output folder for all emitted files. */
// "removeComments": true, /* Disable emitting comments. */
// "noEmit": true, /* Disable emitting files from a compilation. */
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
// "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */
// "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
// "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
// "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
// "newLine": "crlf", /* Set the newline character for emitting files. */
// "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
// "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
// "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
// "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
// "declarationDir": "./", /* Specify the output directory for generated declaration files. */
// "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
/* Interop Constraints */
// "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
// "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */
// "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
"esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
"forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
/* Type Checking */
"strict": true, /* Enable all strict type-checking options. */
// "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
// "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
// "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
// "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
// "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
// "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
// "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
// "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
// "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
// "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
// "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
// "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
// "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
// "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
// "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
// "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
/* Completeness */
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
"skipLibCheck": true /* Skip type checking all .d.ts files. */
}
}