finished localizations except for download.js
This commit is contained in:
parent
45eccc1cad
commit
7ed30f497b
@ -17,7 +17,7 @@ $(document).ready(function() {
|
||||
const $copyBtn = $('#copy-btn');
|
||||
$copyBtn.attr('disabled', false);
|
||||
$('#link').attr('disabled', false);
|
||||
$copyBtn.html('Copy to Clipboard');
|
||||
$copyBtn.attr('data-l10n-id', 'copyUrlFormButton');
|
||||
|
||||
$('#upload-progress').hide();
|
||||
$('#share-link').hide();
|
||||
@ -51,7 +51,7 @@ $(document).ready(function() {
|
||||
window.setTimeout(() => {
|
||||
$copyBtn.attr('disabled', false);
|
||||
$('#link').attr('disabled', false);
|
||||
$copyBtn.html('Copy to Clipboard');
|
||||
$copyBtn.attr('data-l10n-id', 'copyUrlFormButton');
|
||||
}, 3000);
|
||||
});
|
||||
|
||||
@ -75,7 +75,7 @@ $(document).ready(function() {
|
||||
$('#upload-error').hide();
|
||||
$copyBtn.attr('disabled', false);
|
||||
$('#link').attr('disabled', false);
|
||||
$copyBtn.html('Copy to Clipboard');
|
||||
$copyBtn.attr('data-l10n-id', 'copyUrlFormButton');
|
||||
$('.upload-window').removeClass('ondrag');
|
||||
$('#page-one').show();
|
||||
});
|
||||
@ -164,7 +164,7 @@ $(document).ready(function() {
|
||||
expiry: expiration
|
||||
};
|
||||
localStorage.setItem(info.fileId, JSON.stringify(fileData));
|
||||
$('#upload-filename').html('Ready to Send');
|
||||
$('#upload-filename').attr('data-l10n-id', 'uploadSuccessConfirmHeader');
|
||||
t = window.setTimeout(() => {
|
||||
$('#page-one').hide();
|
||||
$('#upload-progress').hide();
|
||||
@ -173,7 +173,9 @@ $(document).ready(function() {
|
||||
}, 2000);
|
||||
|
||||
populateFileList(JSON.stringify(fileData));
|
||||
notify('Your upload has finished.');
|
||||
document.l10n.formatValue('notifyUploadDone').then(str => {
|
||||
notify(str);
|
||||
});
|
||||
})
|
||||
.catch(err => {
|
||||
Raven.captureException(err);
|
||||
@ -225,17 +227,30 @@ $(document).ready(function() {
|
||||
|
||||
const url = file.url.trim() + `#${file.secretKey}`.trim();
|
||||
$('#link').attr('value', url);
|
||||
$('#copy-text').html(
|
||||
'Copy and share the link to send your file: ' + file.name
|
||||
$('#copy-text').attr(
|
||||
'data-l10n-args',
|
||||
'{"filename": "' + file.name + '"}'
|
||||
);
|
||||
$('#copy-text').attr(
|
||||
'data-l10n-id',
|
||||
'copyUrlFormLabelWithName'
|
||||
);
|
||||
$popupText.attr('tabindex', '-1');
|
||||
|
||||
name.appendChild(cellText);
|
||||
|
||||
// create delete button
|
||||
del.innerHTML = '<span class="icon-cancel-1" title="Delete"></span>';
|
||||
|
||||
link.innerHTML = '<span class="icon-docs" title="Copy URL"></span>';
|
||||
const delSpan = document.createElement('span');
|
||||
$(delSpan).addClass('icon-cancel-1');
|
||||
$(delSpan).attr('data-l10n-id', 'deleteButtonHover');
|
||||
del.appendChild(delSpan);
|
||||
|
||||
const linkSpan = document.createElement('span');
|
||||
$(linkSpan).addClass('icon-docs');
|
||||
$(linkSpan).attr('data-l10n-id', 'copyUrlHover');
|
||||
link.appendChild(linkSpan);
|
||||
|
||||
link.style.color = '#0A8DFF';
|
||||
//copy link to clipboard when icon clicked
|
||||
$(link).click(function() {
|
||||
@ -245,9 +260,15 @@ $(document).ready(function() {
|
||||
aux.select();
|
||||
document.execCommand('copy');
|
||||
document.body.removeChild(aux);
|
||||
link.innerHTML = 'Copied!';
|
||||
document.l10n.formatValue('copiedUrl')
|
||||
.then(translated => {
|
||||
link.innerHTML = translated;
|
||||
})
|
||||
window.setTimeout(() => {
|
||||
link.innerHTML = '<span class="icon-docs" title="Copy URL"></span>';
|
||||
const linkSpan = document.createElement('span');
|
||||
$(linkSpan).addClass('icon-docs');
|
||||
$(linkSpan).attr('data-l10n-id', 'copyUrlHover');
|
||||
$(link).html(linkSpan);
|
||||
}, 500);
|
||||
});
|
||||
|
||||
@ -293,9 +314,19 @@ $(document).ready(function() {
|
||||
|
||||
// create popup
|
||||
popupDiv.classList.add('popup');
|
||||
$popupText.html(
|
||||
'<span class="del-file">Delete</span><span class="nvm" > Nevermind</span>'
|
||||
);
|
||||
const popupDelSpan = document.createElement('span');
|
||||
$(popupDelSpan).addClass('del-file');
|
||||
$(popupDelSpan).attr('data-l10n-id', 'sentFilesTitle4');
|
||||
|
||||
const popupNvmSpan = document.createElement('span');
|
||||
$(popupNvmSpan).addClass('nvm');
|
||||
$(popupNvmSpan).attr('data-l10n-id', 'nevermindButton');
|
||||
|
||||
$popupText.html([
|
||||
popupDelSpan,
|
||||
' ',
|
||||
popupNvmSpan
|
||||
]);
|
||||
|
||||
// delete file
|
||||
$popupText.find('.del-file').click(e => {
|
||||
|
2738
package-lock.json
generated
2738
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -15,6 +15,7 @@
|
||||
"helmet": "^3.6.1",
|
||||
"jquery": "^3.2.1",
|
||||
"jquery-circle-progress": "^1.2.2",
|
||||
"l20n": "^5.0.0",
|
||||
"mozlog": "^2.1.1",
|
||||
"raven": "^2.1.0",
|
||||
"raven-js": "^3.16.0",
|
||||
|
77
public/locales/send.en-US.ftl
Normal file
77
public/locales/send.en-US.ftl
Normal file
@ -0,0 +1,77 @@
|
||||
title = Firefox Send
|
||||
|
||||
uploadPageHeader = Private, Encrypted File Sharing
|
||||
uploadPageExplainer = Send files through a safe, private, and encrypted link that automatically expires to ensure your stuff does not remain online forever.
|
||||
|
||||
uploadPageLearnMore = Learn more
|
||||
uploadPageDropMessage = Drop your files here to start uploading
|
||||
uploadPageBrowseButton = Select a file on your computer
|
||||
.title = {uploadPageBrowseButtonTitle}
|
||||
|
||||
uploadPageBrowseButtonTitle = Upload file
|
||||
|
||||
uploadingPageHeader = Uploading Your File
|
||||
|
||||
notifyUploadDone = Your upload has finished.
|
||||
|
||||
|
||||
uploadingPageMessage = Once your file uploads you will be able to set expiry options.
|
||||
uploadingPageCancel = Cancel upload
|
||||
.title = {uploadingPageCancel}
|
||||
|
||||
uploadingPageLargeFileMessage = This file is large and may take awhile to upload. Sit tight!
|
||||
uploadingFileNotification = Notify me when the upload is complete.
|
||||
uploadSuccessConfirmHeader = Ready to Send
|
||||
|
||||
|
||||
//Notethe spec suggests that this string is editable. That feature will not appear at Launch
|
||||
uploadSuccessTimingHeader = The link to your file will expire after 1 download or in 24 hours.
|
||||
copyUrlFormLabel = Copy and share the link to send your file:
|
||||
copyUrlFormLabelWithName = Copy and share the link to send your file: { $filename }
|
||||
// Note: Title text for button should be the same
|
||||
copyUrlFormButton = Copy to clipboard
|
||||
.title = {copyUrlFormButton}
|
||||
|
||||
copiedUrl = Copied!
|
||||
|
||||
deleteFileButton = Delete file
|
||||
.title = {deleteFileButton}
|
||||
sendAnotherFileLink = Send another file
|
||||
.title = {sendAnotherFileLink}
|
||||
|
||||
|
||||
downloadFileName = Download { $filename }
|
||||
downloadFileSize = ({ $size })
|
||||
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.
|
||||
downloadButtonLabel = Download
|
||||
.title = {downloadButtonLabel}
|
||||
|
||||
sendYourFilesLink = Try Firefox Send
|
||||
.title = {sendYourFilesLink}
|
||||
downloadingPageProgress = Downloading { $filename } ({ $size })
|
||||
downloadingPageMessage = Please leave this tab open while we fetch your file and decrypt it.
|
||||
|
||||
errorPageHeader = Something went wrong!
|
||||
errorPageMessage = There has been an error uploading the file.
|
||||
errorPageLink = Send another file
|
||||
|
||||
expiredPageHeader = This link has expired or never existed in the first place!
|
||||
notSupportedHeader = Your browser is not supported.
|
||||
notSupportedDetail = Unfortunately this browser does not support the web technology that powers Firefox Send. You'll need to try another browser. We recommend Firefox!
|
||||
downloadFirefoxButtonSub = Free Download
|
||||
|
||||
|
||||
sentFilesTitle1 = File
|
||||
sentFilesTitle2 = Copy URL
|
||||
sentFilesTitle3 = Expires In
|
||||
sentFilesTitle4 = Delete
|
||||
|
||||
nevermindButton = Nevermind
|
||||
deleteButtonHover.title = {sentFilesTitle4}
|
||||
copyUrlHover.title = {sentFilesTitle2}
|
||||
|
||||
footerLinkLegal = Legal
|
||||
footerLinkAbout = About Test Pilot
|
||||
footerLinkPrivacy = Privacy
|
||||
footerLinkTerms = Terms
|
||||
footerLinkCookies = Cookies
|
@ -19,6 +19,8 @@ const mozlog = require('./log.js');
|
||||
const log = mozlog('send.server');
|
||||
|
||||
const STATIC_PATH = path.join(__dirname, '../public');
|
||||
const L20N = path.join(__dirname, '../node_modules/l20n');
|
||||
const LOCALES = path.join(__dirname, '../public/locales');
|
||||
|
||||
const app = express();
|
||||
|
||||
@ -63,6 +65,9 @@ app.use(
|
||||
app.use(busboy());
|
||||
app.use(bodyParser.json());
|
||||
app.use(express.static(STATIC_PATH));
|
||||
app.use('/l20n', express.static(L20N));
|
||||
app.use('/download/*/l20n', express.static(L20N));
|
||||
app.use('/download/*/locales', express.static(LOCALES));
|
||||
|
||||
app.get('/', (req, res) => {
|
||||
res.render('index', {
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
<div class="send-logo">
|
||||
<img src="/resources/send_logo.svg"/>
|
||||
<img src="/resources/send_logo_type.svg"/>
|
||||
@ -8,24 +7,25 @@
|
||||
{{#if filename}}
|
||||
<div id="download-page-one">
|
||||
<div class="title">
|
||||
Download <span id="dl-filename">{{{filename}}}</span> ({{{filesize}}})
|
||||
</div>
|
||||
<div class="description">
|
||||
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.
|
||||
<span id="dl-filename"
|
||||
data-l10n-id="downloadFileName"
|
||||
data-l10n-args='{"filename": "{{{filename}}}"}'></span>
|
||||
<span data-l10n-id="downloadFileSize"
|
||||
data-l10n-args='{"size": "{{{filesize}}}"}'></span>
|
||||
</div>
|
||||
<div class="description" data-l10n-id="downloadMessage"></div>
|
||||
<img src="/resources/illustration_download.svg" id="download-img" alt="Download"/>
|
||||
<div>
|
||||
<button id="download-btn" title="Download">Download</button>
|
||||
<button id="download-btn" data-l10n-id="downloadButtonLabel"></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="download-progress">
|
||||
<div class="title">
|
||||
Downloading {{{filename}}} ({{{filesize}}})
|
||||
</div>
|
||||
<div class="description">
|
||||
Please leave this tab open while we fetch your file and decrypt it.
|
||||
<div class="title"
|
||||
data-l10n-id="downloadingPageProgress"
|
||||
data-l10n-args='{"filename": "{{{filename}}}", "size": "{{{filesize}}}"}'>
|
||||
</div>
|
||||
<div class="description" data-l10n-id="downloadingPageMessage"></div>
|
||||
<!-- progress bar here -->
|
||||
<div class="progress-bar" id="dl-progress">
|
||||
<div class="percentage">
|
||||
@ -38,23 +38,15 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="send-new" title="Try Firefox Send">
|
||||
Try Firefox Send
|
||||
</div>
|
||||
<div class="send-new" data-l10n-id="sendYourFilesLink"></div>
|
||||
{{else}}
|
||||
<div class="title">
|
||||
This link has expired or never existed in the first place.
|
||||
</div>
|
||||
<div class="title" data-l10n-id="expiredPageHeader"></div>
|
||||
|
||||
<div class="share-window">
|
||||
<img src="/resources/illustration_expired.svg" id="expired-img" alt="Link expired" />
|
||||
</div>
|
||||
<div class="expired-description">
|
||||
Send files through a safe, private, and encrypted link that automatically expires to ensure your stuff does not remain online forever.
|
||||
</div>
|
||||
<div class="send-new" title="Try Firefox Send">
|
||||
Try Firefox Send
|
||||
</div>
|
||||
<div class="expired-description" data-l10n-id="uploadPageExplainer"></div>
|
||||
<div class="send-new" data-l10n-id="sendYourFilesLink"></div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -4,20 +4,18 @@
|
||||
</div>
|
||||
<div class="all">
|
||||
<div id="page-one">
|
||||
<div class="title">
|
||||
Private, Encrypted File Sharing
|
||||
</div>
|
||||
<div class="title" data-l10n-id="uploadPageHeader"></div>
|
||||
<div class="description">
|
||||
Send files through a safe, private, and encrypted link that automatically expires to ensure your stuff does not remain online forever.<br> <a href="https://testpilot.firefox.com/experiments/send" class="link">Learn more</a>
|
||||
<div data-l10n-id="uploadPageExplainer"></div>
|
||||
<a href="https://testpilot.firefox.com/experiments/send" class="link" data-l10n-id="uploadPageLearnMore"></a>
|
||||
</div>
|
||||
<div class="upload-window" >
|
||||
<div id="upload-img"><img src="/resources/upload.svg" alt="Upload"/></div>
|
||||
<div id="upload-text">
|
||||
Drop your files here to start uploading
|
||||
</div>
|
||||
<div id="upload-text" data-l10n-id="uploadPageDropMessage"></div>
|
||||
|
||||
<form method="post" action="upload" enctype="multipart/form-data">
|
||||
<label for="file-upload" id="browse" title="Upload file">Select a file on your computer</label>
|
||||
<label for="file-upload" id="browse"
|
||||
data-l10n-id="uploadPageBrowseButton"></label>
|
||||
<input id="file-upload" type="file" name="fileUploaded" />
|
||||
</form>
|
||||
</div>
|
||||
@ -27,10 +25,10 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<!-- htmllint attr-bans="false" -->
|
||||
<th width="35%">File</th>
|
||||
<th width="25%">Copy URL</th>
|
||||
<th width="21%">Expires in</th>
|
||||
<th width="12%">Delete</th>
|
||||
<th width="35%" data-l10n-id="sentFilesTitle1"></th>
|
||||
<th width="25%" data-l10n-id="sentFilesTitle2"></th>
|
||||
<th width="21%" data-l10n-id="sentFilesTitle3"></th>
|
||||
<th width="12%" data-l10n-id="sentFilesTitle4"></th>
|
||||
<!-- htmllint tag-bans="$previous" -->
|
||||
</tr>
|
||||
</thead>
|
||||
@ -42,9 +40,7 @@
|
||||
</div>
|
||||
|
||||
<div id="upload-progress">
|
||||
<div class="title" id="upload-filename">
|
||||
Uploading Your File
|
||||
</div>
|
||||
<div class="title" id="upload-filename" data-l10n-id="uploadingPageHeader"></div>
|
||||
<div class="description">
|
||||
|
||||
</div>
|
||||
@ -57,57 +53,41 @@
|
||||
</div>
|
||||
<div class="upload">
|
||||
<div class="progress-text"></div>
|
||||
<div id="cancel-upload" title="Cancel Upload">Cancel Upload</div>
|
||||
<div id="cancel-upload"
|
||||
data-l10n-id="uploadingPageCancel"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="share-link">
|
||||
<div class="title">
|
||||
This encrypted link will expire after 1 download or in 24 hours
|
||||
</div>
|
||||
<div class="title" data-l10n-id="uploadSuccessTimingHeader"></div>
|
||||
<div id="share-window">
|
||||
<div id="copy-text">
|
||||
Copy and share the link to send your file:
|
||||
</div>
|
||||
<div id="copy-text" data-l10n-id="copyUrlFormLabel"></div>
|
||||
<div id="copy">
|
||||
<input id="link" type="url" value="" readonly/>
|
||||
<button id="copy-btn" title="Copy to Clipboard">Copy to Clipboard</button>
|
||||
</div>
|
||||
<button id="delete-file" title="Delete file">Delete file</button>
|
||||
<div class="send-new" title="Send another file">
|
||||
Send another file
|
||||
<button id="copy-btn" data-l10n-id="copyUrlFormButton"></button>
|
||||
</div>
|
||||
<button id="delete-file" data-l10n-id="deleteFileButton"></button>
|
||||
<div class="send-new" data-l10n-id="sendAnotherFileLink"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="upload-error">
|
||||
<div class="title">
|
||||
Something went wrong!
|
||||
</div>
|
||||
<div class="expired-description">
|
||||
There has been an error uploading the file.
|
||||
</div>
|
||||
<div class="title" data-l10n-id="errorPageHeader"></div>
|
||||
<div class="expired-description" data-l10n-id="errorPageMessage"></div>
|
||||
<img id="upload-error-img" src="/resources/illustration_error.svg" alt="Upload error" />
|
||||
<div class="send-new" title="Send another file">
|
||||
Send another file
|
||||
</div>
|
||||
<div class="send-new" data-l10n-id="sendAnotherFileLink"></div>
|
||||
</div>
|
||||
|
||||
<div id="unsupported-browser">
|
||||
<div class="title">
|
||||
Your browser is not supported.
|
||||
</div>
|
||||
<div class="description">
|
||||
Unfortunately this browser does not support the web technology that powers Firefox Send. You'll need to try another browser. We recommend Firefox!
|
||||
</div>
|
||||
<div class="title" data-l10n-id="notSupportedHeader"></div>
|
||||
<div class="description" data-l10n-id="notSupportedDetail"></div>
|
||||
<a id="dl-firefox" href="https://www.mozilla.org/firefox/new/?scene=2" target="_blank">
|
||||
<img src="/resources/firefox_logo-only.svg" id="firefox-logo" alt="Firefox"/>
|
||||
<div id="dl-firefox-text">Firefox<br><span>Free Download</span></div>
|
||||
<div id="dl-firefox-text">Firefox<br>
|
||||
<span data-l10n-id="downloadFirefoxButtonSub"></span>
|
||||
</div>
|
||||
</a>
|
||||
<div class="unsupported-description">
|
||||
Send files through a safe, private, and encrypted link that automatically expires to ensure your stuff does not remain online forever.
|
||||
</div>
|
||||
<div class="unsupported-description" data-l10n-id="uploadPageExplainer"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
@ -12,17 +12,22 @@
|
||||
{{#if trackerId}}
|
||||
{{> analytics trackerId=trackerId}}
|
||||
{{/if}}
|
||||
|
||||
<meta name="defaultLanguage" content="en-US">
|
||||
<meta name="availableLanguages" content="en-US">
|
||||
<link rel="localization" href="locales/send.{locale}.ftl">
|
||||
<script defer src="/l20n/dist/web/l20n.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
{{{body}}}
|
||||
<div class="footer">
|
||||
<div class="legal-links">
|
||||
<a href="https://www.mozilla.org"><img class="mozilla-logo" src="/resources/mozilla-logo.svg"/></a>
|
||||
<a href="https://www.mozilla.org/about/legal/">Legal</a>
|
||||
<a href="https://testpilot.firefox.com/about">About Test Pilot</a>
|
||||
<a href="https://testpilot.firefox.com/privacy">Privacy</a>
|
||||
<a href="https://testpilot.firefox.com/terms">Terms</a>
|
||||
<a href="https://www.mozilla.org/en-US/privacy/websites/#cookies">Cookies</a>
|
||||
<a href="https://www.mozilla.org/about/legal/" data-l10n-id="footerLinkLegal"></a>
|
||||
<a href="https://testpilot.firefox.com/about" data-l10n-id="footerLinkAbout"></a>
|
||||
<a href="https://testpilot.firefox.com/privacy" data-l10n-id="footerLinkPrivacy"></a>
|
||||
<a href="https://testpilot.firefox.com/terms" data-l10n-id="footerLinkTerms"></a>
|
||||
<a href="https://www.mozilla.org/en-US/privacy/websites/#cookies" data-l10n-id="footerLinkCookies"></a>
|
||||
</div>
|
||||
<div class="social-links">
|
||||
<a href="https://github.com/mozilla/send" target="_blank"><img class="github" src="/resources/github-icon.svg"/></a>
|
||||
|
Loading…
Reference in New Issue
Block a user