Add legal and final strings (#1185)

* add legal and final strings

* removed unneeded suffixes from string ids

* removed unused strings and simplified string ids for vnext-only strings

* reword nostreams option
This commit is contained in:
John Gruen 2019-03-04 23:13:18 +01:00 committed by Danny Coates
parent 6ab006de61
commit 7197cc3bea
16 changed files with 3307 additions and 3326 deletions

View File

@ -64,9 +64,9 @@ class Account extends Component {
<button <button
class="p-2 md:p-4 border rounded-lg text-blue-dark border-blue-dark hover:text-white hover:bg-blue-dark focus:outline" class="p-2 md:p-4 border rounded-lg text-blue-dark border-blue-dark hover:text-white hover:bg-blue-dark focus:outline"
onclick="${e => this.login(e)}" onclick="${e => this.login(e)}"
title="${translate('signInMenuOption')}" title="${translate('signInButton')}"
> >
${translate('signInMenuOption')} ${translate('signInButton')}
</button> </button>
</send-account> </send-account>
`; `;
@ -90,9 +90,9 @@ class Account extends Component {
<button <button
class="block w-full text-left px-4 py-2 text-grey-darkest hover:bg-blue hover:text-white cursor-pointer focus:outline" class="block w-full text-left px-4 py-2 text-grey-darkest hover:bg-blue hover:text-white cursor-pointer focus:outline"
onclick="${e => this.logout(e)}" onclick="${e => this.logout(e)}"
title="${translate('logOut')}" title="${translate('signOut')}"
> >
${translate('logOut')} ${translate('signOut')}
</button> </button>
</li> </li>
</ul> </ul>

View File

@ -16,7 +16,7 @@ const expiryOptions = require('./expiryOptions');
function expiryInfo(translate, archive) { function expiryInfo(translate, archive) {
const l10n = timeLeft(archive.expiresAt - Date.now()); const l10n = timeLeft(archive.expiresAt - Date.now());
return raw( return raw(
translate('frontPageExpireInfo', { translate('archiveExpiryInfo', {
downloadCount: translate('downloadCount', { downloadCount: translate('downloadCount', {
num: archive.dlimit - archive.dtotal num: archive.dlimit - archive.dtotal
}), }),
@ -39,7 +39,7 @@ function password(state) {
onchange="${togglePasswordInput}" onchange="${togglePasswordInput}"
/> />
<label for="add-password"> <label for="add-password">
${state.translate('addPasswordMessage')} ${state.translate('addPassword')}
</label> </label>
</div> </div>
<input <input
@ -172,10 +172,10 @@ module.exports = function(state, emit, archive) {
<button <button
class="text-blue-dark hover:text-blue-darker focus:text-blue-darker focus:outline self-end flex items-center" class="text-blue-dark hover:text-blue-darker focus:text-blue-darker focus:outline self-end flex items-center"
onclick=${copy} onclick=${copy}
title="${state.translate('copyUrlHover')}" title="${state.translate('copyLinkButton')}"
> >
<img src="${assets.get('copy-16.svg')}" class="mr-2" /> <img src="${assets.get('copy-16.svg')}" class="mr-2" />
${state.translate('copyUrlHover')} ${state.translate('copyLinkButton')}
</button> </button>
` `
: html` : html`
@ -238,7 +238,7 @@ module.exports = function(state, emit, archive) {
const text = event.target.lastChild; const text = event.target.lastChild;
text.textContent = state.translate('copiedUrl'); text.textContent = state.translate('copiedUrl');
setTimeout( setTimeout(
() => (text.textContent = state.translate('copyUrlHover')), () => (text.textContent = state.translate('copyLinkButton')),
1000 1000
); );
} }
@ -301,10 +301,10 @@ module.exports.wip = function(state, emit) {
<button <button
id="upload-btn" id="upload-btn"
class="btn rounded-lg flex-no-shrink focus:outline" class="btn rounded-lg flex-no-shrink focus:outline"
title="${state.translate('uploadFilesButton')}" title="${state.translate('uploadButton')}"
onclick="${upload}" onclick="${upload}"
> >
${state.translate('uploadFilesButton')} ${state.translate('uploadButton')}
</button> </button>
</send-upload-area> </send-upload-area>
`; `;
@ -425,10 +425,12 @@ module.exports.empty = function(state, emit) {
<div <div
class="pt-6 pb-2 text-center text-lg font-bold capitalize tracking-wide" class="pt-6 pb-2 text-center text-lg font-bold capitalize tracking-wide"
> >
${state.translate('uploadDropDragMessage')} ${state.translate('dragAndDropFiles')}
</div> </div>
<div class="pb-6 text-center text-base italic"> <div class="pb-6 text-center text-base">
${state.translate('uploadDropButtonMessage')} ${state.translate('orClickWithSize', {
size: bytes(state.user.maxSize)
})}
</div> </div>
<input <input
id="file-upload" id="file-upload"
@ -444,13 +446,11 @@ module.exports.empty = function(state, emit) {
for="file-upload" for="file-upload"
role="button" role="button"
class="btn rounded-lg flex items-center mt-4" class="btn rounded-lg flex items-center mt-4"
title="${state.translate('addFilesButtonWithSize', { title="${state.translate('addFilesButtonWithSizeUpdate', {
size: bytes(state.user.maxSize) size: bytes(state.user.maxSize)
})}" })}"
> >
${state.translate('addFilesButtonWithSize', { ${state.translate('addFilesButton')}
size: bytes(state.user.maxSize)
})}
</label> </label>
${upsell} ${upsell}
</send-upload-area> </send-upload-area>

View File

@ -11,7 +11,7 @@ module.exports = function(name, url) {
${state.translate('notifyUploadEncryptDone')} ${state.translate('notifyUploadEncryptDone')}
</h1> </h1>
<p class="font-normal leading-normal text-grey-darkest word-break-all"> <p class="font-normal leading-normal text-grey-darkest word-break-all">
${state.translate('copyUrlFormLabel')} <br /> ${state.translate('copyLinkDescription')} <br />
${name} ${name}
</p> </p>
<input <input
@ -24,9 +24,9 @@ module.exports = function(name, url) {
<button <button
class="btn rounded-lg w-full flex-no-shrink focus:outline" class="btn rounded-lg w-full flex-no-shrink focus:outline"
onclick="${copy}" onclick="${copy}"
title="${state.translate('copyUrlFormButtonText')}" title="${state.translate('copyLinkButton')}"
> >
${state.translate('copyUrlFormButtonText')} ${state.translate('copyLinkButton')}
</button> </button>
<button <button
class="text-blue-dark hover:text-blue-darker focus:text-blue-darker my-4 font-medium cursor-pointer focus:outline" class="text-blue-dark hover:text-blue-darker focus:text-blue-darker my-4 font-medium cursor-pointer focus:outline"

View File

@ -36,9 +36,9 @@ function preview(state, emit) {
<div <div
class="flex flex-col w-full max-w-md h-full mx-auto items-center justify-center" class="flex flex-col w-full max-w-md h-full mx-auto items-center justify-center"
> >
<h1 class="mb-4">${state.translate('downloadFilesTitle')}</h1> <h1 class="mb-4">${state.translate('downloadTitle')}</h1>
<p class="w-full text-grey-darkest text-center leading-normal"> <p class="w-full text-grey-darkest text-center leading-normal">
${state.translate('downloadMessage')} ${state.translate('downloadDescription')}
</p> </p>
${archiveTile.preview(state, emit)} ${archiveTile.preview(state, emit)}
</div> </div>

View File

@ -12,7 +12,7 @@ module.exports = function(state) {
</h1> </h1>
<img src="${assets.get('completed.svg')}" class="my-12 h-48" /> <img src="${assets.get('completed.svg')}" class="my-12 h-48" />
<p class="text-grey-darkest leading-normal"> <p class="text-grey-darkest leading-normal">
${state.translate('downloadFinishText')} ${state.translate('trySendDescription')}
</p> </p>
<p class="my-5"> <p class="my-5">
<a href="/" class="btn rounded-lg flex items-center mt-4" role="button" <a href="/" class="btn rounded-lg flex items-center mt-4" role="button"

View File

@ -8,9 +8,9 @@ module.exports = function(state, emit) {
<div <div
class="h-full w-full flex flex-col items-center justify-center bg-white py-8 max-w-md mx-auto" class="h-full w-full flex flex-col items-center justify-center bg-white py-8 max-w-md mx-auto"
> >
<h1 class="mb-4">${state.translate('downloadFilesTitle')}</h1> <h1 class="mb-4">${state.translate('downloadTitle')}</h1>
<p class="w-full mb-4 text-center text-grey-darkest leading-normal"> <p class="w-full mb-4 text-center text-grey-darkest leading-normal">
${state.translate('downloadMessage')} ${state.translate('downloadDescription')}
</p> </p>
<form <form
class="flex flex-row flex-no-wrap w-full md:w-4/5" class="flex flex-row flex-no-wrap w-full md:w-4/5"

View File

@ -14,7 +14,7 @@ module.exports = function(state, emit) {
</h1> </h1>
<img class="my-12 h-48" src="${assets.get('error.svg')}" /> <img class="my-12 h-48" src="${assets.get('error.svg')}" />
<p class="max-w-md text-center text-grey-darkest leading-normal"> <p class="max-w-md text-center text-grey-darkest leading-normal">
${state.translate('downloadFinishText')} ${state.translate('trySendDescription')}
</p> </p>
<p class="my-5"> <p class="my-5">
<a href="/" class="btn rounded-lg flex items-center" role="button" <a href="/" class="btn rounded-lg flex items-center" role="button"

View File

@ -7,7 +7,7 @@ module.exports = function(state, emit) {
const el = html` const el = html`
<div class="px-1"> <div class="px-1">
${raw( ${raw(
state.translate('frontPageExpireInfo', { state.translate('archiveExpiryInfo', {
downloadCount: downloadCount:
'<span class="lg:inline-block md:block sm:inline-block block"></span><select id="dlCount"></select>', '<span class="lg:inline-block md:block sm:inline-block block"></span><select id="dlCount"></select>',
timespan: '<select id="timespan"></select>' timespan: '<select id="timespan"></select>'

View File

@ -8,10 +8,10 @@ module.exports = function intro(state) {
> >
<div class="flex flex-col justify-end h-full"> <div class="flex flex-col justify-end h-full">
<h1 class="font-bold"> <h1 class="font-bold">
${state.translate('uploadPageHeader')} ${state.translate('introTitle')}
</h1> </h1>
<p class="max-w-sm mt-2 pr-16 font-light leading-normal"> <p class="max-w-sm mt-2 pr-16 font-light leading-normal">
${state.translate('uploadPageExplainer')} ${state.translate('introDescription')}
</p> </p>
<img class="intro" src="${assets.get('intro.svg')}" /> <img class="intro" src="${assets.get('intro.svg')}" />
</div> </div>

View File

@ -7,22 +7,60 @@ module.exports = function(state, emit) {
<main class="main"> <main class="main">
${state.modal && modal(state, emit)} ${state.modal && modal(state, emit)}
<div <div
class="flex flex-col items-center bg-white m-6 px-6 py-8 border border-grey-light md:border-none md:px-12 md:py-16 shadow w-full md:h-full" class="flex flex-col items-center bg-white m-4 px-6 py-8 border border-grey-light md:border-none md:px-12 md:py-16 shadow w-full md:h-full"
> >
<h1 class="text-center">${state.translate('legalHeader')}</h1> <h1 class="text-center">${state.translate('legalTitle')}</h1>
<p class="mt-2">${state.translate('legalDateStamp')}</p>
<div class="overflow-scroll px-4">
${raw( ${raw(
replaceLinks(state.translate('legalNoticeTestPilot'), [ replaceLinks(state.translate('legalNoticeSend'), [
'https://testpilot.firefox.com/terms', 'https://www.mozilla.org/privacy/',
'https://testpilot.firefox.com/privacy', 'https://github.com/mozilla/send/blob/master/docs/metrics.md'
'https://testpilot.firefox.com/experiments/send'
])
)}
${raw(
replaceLinks(state.translate('legalNoticeMozilla'), [
'https://www.mozilla.org/privacy/websites/',
'https://www.mozilla.org/about/legal/terms/mozilla/'
]) ])
)} )}
<ul class="mt-10 max-w-md leading-normal">
<li class="mb-4">
<b>${state.translate('legalNoticeSendContentHeader')}:</b>
${state.translate('legalNoticeSendContent')}
</li>
<li class="mb-4">
<b>${state.translate('legalNoticeSendDataHeader')}:</b>
${state.translate('legalNoticeSendData')}
</li>
<li class="mb-4">
<b>${state.translate('legalNoticeSendPersonalHeader')}:</b>
${state.translate('legalNoticeSendPersonal')}:
<ul class="leading-normal">
<li class="my-4">
<u>${state.translate('legalNoticeSendIPHeader')}:</u>
${state.translate('legalNoticeSendIP')}
</li>
<li class="mb-4">
<u>${state.translate('legalNoticeSendFXAHeader')}:</u>
${state.translate('legalNoticeSendFXA')}
</li>
</ul>
</li>
<li class="mb-4">
<b>${state.translate('legalNoticeSendNonPersonalHeader')}:</b>
${state.translate('legalNoticeSendNonPersonal')}:
<ul class="leading-normal">
<li class="my-4">
<u>${state.translate('legalNoticeSendInteractionHeader')}:</u>
${state.translate('legalNoticeSendInteraction')}
</li>
<li class="mb-4">
<u>${state.translate('legalNoticeSendTechnicalHeader')}:</u>
${state.translate('legalNoticeSendTechnical')}
</li>
</ul>
</li>
<li class="mb-4">
<b>${state.translate('legalNoticeSendThirdPartyHeader')}:</b>
${state.translate('legalNoticeSendThirdParty')}
</li>
</ul>
</div>
</div> </div>
</main> </main>
`; `;

View File

@ -8,7 +8,7 @@ module.exports = function(state, emit) {
<div <div
class="flex flex-col w-full max-w-md h-full mx-auto items-center justify-center" class="flex flex-col w-full max-w-md h-full mx-auto items-center justify-center"
> >
<h1 class="mb-4">${state.translate('downloadFilesTitle')}</h1> <h1 class="mb-4">${state.translate('downloadTitle')}</h1>
<p <p
class="w-full p-2 border border-yellow-light rounded md:w-4/5 text-orange-dark bg-yellow-lighter text-center leading-normal" class="w-full p-2 border border-yellow-light rounded md:w-4/5 text-orange-dark bg-yellow-lighter text-center leading-normal"
> >
@ -50,8 +50,8 @@ module.exports = function(state, emit) {
</fieldset> </fieldset>
<input <input
class="btn rounded-lg w-full flex flex-no-shrink items-center justify-center" class="btn rounded-lg w-full flex flex-no-shrink items-center justify-center"
value="${state.translate('copyUrlFormButtonText')}" value="${state.translate('copyLinkButton')}"
title="${state.translate('copyUrlFormButtonText')}" title="${state.translate('copyLinkButton')}"
type="submit" /> type="submit" />
</form> </form>
</div> </div>
@ -64,7 +64,7 @@ module.exports = function(state, emit) {
let title = button.title; let title = button.title;
switch (choice) { switch (choice) {
case 'copy': case 'copy':
title = state.translate('copyUrlFormButtonText'); title = state.translate('copyLinkButton');
break; break;
case 'firefox': case 'firefox':
title = state.translate('downloadFirefox'); title = state.translate('downloadFirefox');

View File

@ -10,11 +10,11 @@ module.exports = function(state, emit) {
class="flex flex-col items-center justify-center h-full w-full p-6 z-10 overflow-hidden md:rounded-lg md:shadow-big" class="flex flex-col items-center justify-center h-full w-full p-6 z-10 overflow-hidden md:rounded-lg md:shadow-big"
> >
<h1 class="text-center font-bold my-2"> <h1 class="text-center font-bold my-2">
${state.translate('expiredPageHeaderUpdate')} ${state.translate('expiredTitle')}
</h1> </h1>
<img src="${assets.get('notFound.svg')}" class="my-12" /> <img src="${assets.get('notFound.svg')}" class="my-12" />
<p class="max-w-md text-center text-grey-darkest leading-normal"> <p class="max-w-md text-center text-grey-darkest leading-normal">
${state.translate('downloadFinishText')} ${state.translate('trySendDescription')}
</p> </p>
<p class="my-5"> <p class="my-5">
<a href="/" class="btn rounded-lg flex items-center" role="button" <a href="/" class="btn rounded-lg flex items-center" role="button"

View File

@ -30,11 +30,12 @@ module.exports = function(trigger) {
size: bytes(state.LIMITS.MAX_FILE_SIZE) size: bytes(state.LIMITS.MAX_FILE_SIZE)
})} })}
</li> </li>
<li>${state.translate('accountBenefitExpiry')}</li> <li>${state.translate('accountBenefitDownloadCount')}</li>
<li> <li>
${state.translate('accountBenefitExpiryTwo', { count: DAYS })} ${state.translate('accountBenefitTimeLimit', { count: DAYS })}
</li> </li>
<li>${state.translate('accountBenefitSync')}</li> <li>${state.translate('accountBenefitSync')}</li>
<li>${state.translate('accountBenefitMoz')}</li>
</ul> </ul>
</section> </section>
<section <section
@ -45,12 +46,12 @@ module.exports = function(trigger) {
id="email-input" id="email-input"
type="email" type="email"
class="${hidden} border rounded-lg w-full px-2 py-1 h-12 mb-3 text-lg text-grey-darker leading-loose" class="${hidden} border rounded-lg w-full px-2 py-1 h-12 mb-3 text-lg text-grey-darker leading-loose"
placeholder=${state.translate('emailEntryPlaceholder')} placeholder=${state.translate('emailPlaceholder')}
/> />
<input <input
class="btn rounded-lg w-full flex flex-no-shrink items-center justify-center" class="btn rounded-lg w-full flex flex-no-shrink items-center justify-center"
value="${state.translate('signInMenuOption')}" value="${state.translate('signInButton')}"
title="${state.translate('signInMenuOption')}" title="${state.translate('signInButton')}"
id="email-submit" id="email-submit"
type="submit" type="submit"
/> />

View File

@ -51,7 +51,7 @@ function outdatedStrings(state) {
function unsupportedStrings(state) { function unsupportedStrings(state) {
return { return {
header: state.translate('notSupportedHeader'), header: state.translate('notSupportedHeader'),
description: state.translate('notSupportedDetailUpdate'), description: state.translate('notSupportedDescription'),
button: state.translate('downloadFirefox') button: state.translate('downloadFirefox')
}; };
} }

6334
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,32 +1,13 @@
# Firefox Send is a brand name and should not be localized. # Firefox Send is a brand name and should not be localized.
title = Firefox Send title = Firefox Send
siteFeedback = Feedback siteFeedback = Feedback
uploadPageHeader = Private, Encrypted File Sharing introTitle = Simple, private file sharing
uploadPageExplainer = Send files through a safe, private, and encrypted link that automatically expires to ensure your stuff does not remain online forever. introDescription = Firefox Send lets you share files with end-to-end encryption and a link that automatically expires. So you can keep what you share private and make sure your stuff doesn't stay online forever.
uploadPageLearnMore = Learn more
uploadPageDropMessage = Drop your file here to start uploading
uploadPageSizeMessage = For the most reliable operation, its best to keep your file under 1GB
uploadPageBrowseButton = Select a file on your computer
uploadPageBrowseButton1 = Select a file to upload
uploadPageMultipleFilesAlert = Uploading multiple files or a folder is currently not supported.
uploadPageBrowseButtonTitle = Upload file
uploadingPageProgress = Uploading { $filename } ({ $size })
importingFile = Importing… importingFile = Importing…
verifyingFile = Verifying…
encryptingFile = Encrypting… encryptingFile = Encrypting…
decryptingFile = Decrypting… decryptingFile = Decrypting…
notifyUploadEncryptDone = Your file is encrypted and ready to share. notifyUploadEncryptDone = Your file is encrypted and ready to send
uploadingPageMessage = Once your file uploads you will be able to set expiry options. archiveExpiryInfo = Expires after { $downloadCount } or { $timespan }
uploadingPageCancel = Cancel
uploadCancelNotification = Your upload was cancelled.
downloadCancel = Cancel download
uploadingPageLargeFileMessage = This file is large and may take a while to upload. Sit tight!
uploadingFileNotification = Notify me when the upload is complete.
uploadSuccessConfirmHeader = Ready to Send
uploadSvgAlt = Upload
uploadSuccessTimingHeader = The link to your file will expire after 1 download or in 24 hours.
expireInfo = The link to your file will expire after { $downloadCount } or { $timespan }.
frontPageExpireInfo = Expires after { $downloadCount } or { $timespan }
downloadCount = { $num -> downloadCount = { $num ->
[one] 1 download [one] 1 download
*[other] { $num } downloads *[other] { $num } downloads
@ -52,42 +33,23 @@ fileCount = { $num ->
*[other] { $num } files *[other] { $num } files
} }
totalSize = Total size: { $size } totalSize = Total size: { $size }
copyUrlFormLabel = Copy the link to share your file: copyLinkDescription = Copy the link to share your file:
copyUrlFormButtonText = Copy link copyLinkButton = Copy link
copiedUrl = Copied! copiedUrl = Copied!
deleteFileButton = Delete file
sendAnotherFileLink = Send another file
# Alternative text used on the download link/button (indicates an action).
downloadAltText = Download
downloadsFileList = Downloads
# Used as header in a column indicating the amount of time left before a
# download link expires (e.g. "10h 5m")
timeFileList = Time
# Used as header in a column indicating the number of times a file has been
# downloaded
downloadFileName = Download { $filename }
downloadFileSize = ({ $size })
unlockInputLabel = Enter Password
unlockInputPlaceholder = Password unlockInputPlaceholder = Password
unlockButtonLabel = Unlock unlockButtonLabel = Unlock
downloadFilesTitle = Download Files downloadTitle = Download files
# Firefox Send is a brand name and should not be localized. # Firefox Send is a brand name and should not be localized.
downloadMessage = Your friend is sending you a file with Firefox Send, a service that allows you to share files with a safe, private, and encrypted link that automatically expires to ensure your stuff does not remain online forever. downloadDescription = This file was shared via Firefox Send with end-to-end encryption and a link that automatically expires.
# Text and title used on the download link/button (indicates an action). # Text and title used on the download link/button (indicates an action).
downloadButtonLabel = Download downloadButtonLabel = Download
downloadNotification = Your download has completed. downloadFinish = Download complete
downloadFinish = Download Complete trySendDescription = Try Firefox Send for simple, safe file sharing.
downloadFinishText = Try Firefox Send for simple, safe file sharing.
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)". # This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
fileSizeProgress = ({ $partialSize } of { $totalSize }) fileSizeProgress = ({ $partialSize } of { $totalSize })
# Firefox Send is a brand name and should not be localized. # Firefox Send is a brand name and should not be localized.
sendYourFilesLink = Try Firefox Send sendYourFilesLink = Try Firefox Send
downloadingPageProgress = Downloading { $filename } ({ $size })
downloadingPageMessage = Please leave this tab open while we fetch your file and decrypt it.
errorAltText = Upload error
errorPageHeader = Something went wrong! errorPageHeader = Something went wrong!
errorPageMessage = There has been an error uploading the file.
errorPageLink = Send another file
fileTooBig = That file is too big to upload. It should be less than { $size }. fileTooBig = That file is too big to upload. It should be less than { $size }.
# count will always be > 10 # count will always be > 10
tooManyFiles = { $count -> tooManyFiles = { $count ->
@ -98,39 +60,41 @@ tooManyArchives = { $count ->
*[other] Only { $count } archives are allowed. *[other] Only { $count } archives are allowed.
} }
linkExpiredAlt = Link expired linkExpiredAlt = Link expired
expiredPageHeaderUpdate = This link has expired. expiredTitle = This link has expired.
notSupportedHeader = Your browser is not supported. notSupportedHeader = Your browser is not supported.
# Firefox Send is a brand name and should not be localized. # Firefox Send is a brand name and should not be localized.
notSupportedDetailUpdate = Firefox Send will not work with this browser. Send works best with the latest version of Firefox, and will work with the current version of most browsers. notSupportedDescription = Firefox Send will not work with this browser. Send works best with the latest version of Firefox, and will work with the current version of most browsers.
notSupportedLink = Why is my browser not supported? notSupportedLink = Why is my browser not supported?
notSupportedOutdatedDetail = Unfortunately this version of Firefox does not support the web technology that powers Firefox Send. Youll need to update your browser. notSupportedOutdatedDetail = Unfortunately this version of Firefox does not support the web technology that powers Firefox Send. Youll need to update your browser.
updateFirefox = Update Firefox updateFirefox = Update Firefox
downloadFirefox = Download Firefox downloadFirefox = Download Firefox
downloadFirefoxButtonSub = Free Download legalTitle = Send Privacy Notice
uploadedFile = File legalDateStamp = Version 1.0, dated March 12, 2019
copyFileList = Copy URL legalNoticeSend = When Mozilla receives information from you, our <a>Mozilla Privacy Policy</a> describes how we handle that information. Below are the top things you should know about Firefox Send. You can also view the code <a>here</a>.
# expiryFileList is used as a column header legalNoticeSendContentHeader = Content
expiryFileList = Expires In legalNoticeSendContent = Mozilla receives an encrypted copy of the file you upload but we cannot access the content or name of your encrypted file. Depending on how you use Send, files are stored for a maximum of either 24 hours or 7 days. If you choose a download cap, the file may be deleted sooner.
deleteFileList = Delete legalNoticeSendDataHeader = Data on your device
nevermindButton = Never mind legalNoticeSendData = So that you can check status or delete files, basic information about your uploaded files is stored on your local device. This includes our identifier for the file, the filename, and the files download URL. This is cleared if you delete your uploaded file or upon visiting Send after the file expires.
legalHeader = Terms & Privacy legalNoticeSendPersonalHeader = Personal data
legalNoticeTestPilot = Firefox Send is currently a Test Pilot experiment, and subject to the Test Pilot <a>Terms of Service</a> and <a>Privacy Notice</a>. You can learn more about this experiment and its data collection <a>here</a>. legalNoticeSendPersonal = The following is necessary to provide the service
legalNoticeMozilla = Use of the Firefox Send website is also subject to Mozillas <a>Websites Privacy Notice</a> and <a>Websites Terms of Use</a>. legalNoticeSendNonPersonalHeader = Non-personal data
deletePopupText = Delete this file? legalNoticeSendNonPersonal = We receive the following to improve our service and performance
deletePopupYes = Yes legalNoticeSendThirdPartyHeader = Third Party Services
legalNoticeSendThirdParty = We use Google Cloud Platform
legalNoticeSendIPHeader = IP addresses
legalNoticeSendIP = We receive IP addresses of downloaders and uploaders as part of our standard server logs. These are retained for 90 days, and for that period, may be connected to activity of a files download URL. Although we develop our services in ways that minimize identification, you should know that it may be possible to correlate the IP address of a Send user to the IP address of other Mozilla services with accounts; and if there is a match, this could identify the account email address.
legalNoticeSendFXAHeader = Firefox Account
legalNoticeSendFXA = This is required for authentication only if you wish to upload larger file sizes. Your Firefox Account record will retain aggregate data on your usage of Send: for example, if you created a Firefox Account in connection with Send, number of files sent and approximate file sizes, and how many times youve used the service.
legalNoticeSendInteractionHeader = Interaction data
legalNoticeSendInteraction = This includes information such as number of people sending and receiving files, number of files uploaded and approximate file sizes, percentage of file downloaders who become uploaders, how people engage with the website (time spent, clicks, referrer information, site exit path, use of passwords)
legalNoticeSendTechnicalHeader = Technical data
legalNoticeSendTechnical = This includes information such as operating system, browser, language preference, country, timestamps, duration for file transfer, reasons for errors, reasons for file expiration.
deletePopupCancel = Cancel deletePopupCancel = Cancel
deleteButtonHover = Delete deleteButtonHover = Delete
copyUrlHover = Copy URL
footerLinkLegal = Legal footerLinkLegal = Legal
footerLinkPrivacy = Privacy footerLinkPrivacy = Privacy
footerLinkTerms = Terms
footerLinkPrivacyAndTerms = Privacy & Terms
footerLinkCookies = Cookies footerLinkCookies = Cookies
requirePasswordCheckbox = Require a password to download this file
addPasswordButton = Add password
changePasswordButton = Change
passwordTryAgain = Incorrect password. Try again. passwordTryAgain = Incorrect password. Try again.
reportIPInfringement = Report IP Infringement
javascriptRequired = Firefox Send requires JavaScript javascriptRequired = Firefox Send requires JavaScript
whyJavascript = Why does Firefox Send require JavaScript? whyJavascript = Why does Firefox Send require JavaScript?
enableJavascript = Please enable JavaScript and try again. enableJavascript = Please enable JavaScript and try again.
@ -140,48 +104,30 @@ expiresDaysHoursMinutes = { $days }d { $hours }h { $minutes }m
expiresHoursMinutes = { $hours }h { $minutes }m expiresHoursMinutes = { $hours }h { $minutes }m
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m" # A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
expiresMinutes = { $minutes }m expiresMinutes = { $minutes }m
# A short status message shown when a password is successfully set
passwordIsSet = Password set
# A short status message shown when the user enters a long password # A short status message shown when the user enters a long password
maxPasswordLength = Maximum password length: { $length } maxPasswordLength = Maximum password length: { $length }
# A short status message shown when there was an error setting the password # A short status message shown when there was an error setting the password
passwordSetError = This password could not be set passwordSetError = This password could not be set
pageHeaderCredits = from the makers of Firefox addFilesButton = Select files to upload
addFilesButton = Add file(s) uploadButton = Upload
addFilesButtonWithSize = Add file(s) up to { $size } dragAndDropFiles = Drag and drop files
uploadFilesButton = Upload orClickWithSize = or click to to send up to { $size }
uploadDropDragMessage = Drop files here addPassword = Protect with password
uploadDropButtonMessage = or click to select files emailPlaceholder = Enter your email
addPasswordMessage = Protect with password
addPasswordLabel = Password:
copyUrlLabel = Copy and share this link:
passwordReminder = don't forget the password too
signInPromoText = Sign In/Up
signInExplanation = It's free and you can send bigger files.
signInLearnMore = Learn more!
downloadProgressButton = Downloading... { $progress }
downloadMessage2 = Firefox Send lets you share files with a safe, private, and encrypted link that automatically expires to ensure your stuff does not remain online forever.
signInEmailEnter = Enter your Email
emailEntryPlaceholder = Enter your email
signInSizeBump = Sign in to send up to { $size } signInSizeBump = Sign in to send up to { $size }
signInContinueMessage = to continue to Firefox Send signInButton = Sign in/up
signInContinueButton = Continue
signInMenuOption = Sign in/up
signInNextOption = Continue
accountMenuOption = Firefox Account
accountBenefitTitle = Create a Firefox Account or sign in accountBenefitTitle = Create a Firefox Account or sign in
accountBenefitLargeFiles = Share files up to { $size } accountBenefitLargeFiles = Share files up to { $size }
accountBenefitExpiry = Share files with more people accountBenefitDownloadCount = Share files with more people
accountBenefitExpiryTwo = { $count -> accountBenefitTimeLimit = { $count ->
*[other] Keep links active for up to { $count } days *[other] Keep links active for up to { $count } days
} }
accountBenefitSync = Manage shared files from any device accountBenefitSync = Manage shared files from any device
manageAccount = Manage Account accountBenefitMoz = Learn about other Mozilla services
logOut = Sign Out signOut = Sign Out
okButton = Ok okButton = OK
myUploads = My Uploads
downloadingTitle = Downloading downloadingTitle = Downloading
noStreamsWarning = This browser might not be able to decrypt a file this big. noStreamsWarning = This browser might not be able to decrypt a file this big.
noStreamsOptionCopy = Copy the link to open in another browser noStreamsOptionCopy = Copy the link to open in another browser
noStreamsOptionFirefox = Try our favorite browser noStreamsOptionFirefox = Try our favorite browser
noStreamsOptionDownload = Use this browser noStreamsOptionDownload = Continue with this browser