mirror of
https://gitlab.com/timvisee/send.git
synced 2025-12-06 14:10:53 +03:00
Compare commits
49 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
03246532e3 | ||
|
|
cff91b2189 | ||
|
|
6ef9b7be92 | ||
|
|
5e4ad28f90 | ||
|
|
bc2a8c6780 | ||
|
|
500b34b666 | ||
|
|
7afe684c3b | ||
|
|
779fe94550 | ||
|
|
95ceff5cc6 | ||
|
|
4cf27030a1 | ||
|
|
f49782c8e3 | ||
|
|
7352e4a1b0 | ||
|
|
d5ce677960 | ||
|
|
7a1de5d651 | ||
|
|
0338de3de7 | ||
|
|
c71bd26789 | ||
|
|
fe3a64941d | ||
|
|
ac9e107094 | ||
|
|
08e0e35041 | ||
|
|
a0e3c7c2ec | ||
|
|
62ffaafeb7 | ||
|
|
236fcc960f | ||
|
|
b7d1d6a632 | ||
|
|
a6c78470ea | ||
|
|
e6f7100bad | ||
|
|
1eba2f09a3 | ||
|
|
1eae5e8e08 | ||
|
|
d3f034c4c3 | ||
|
|
729e0c9f9d | ||
|
|
b6e7fa5496 | ||
|
|
f4b6bab5d7 | ||
|
|
e55b3f828f | ||
|
|
5f8d9cb842 | ||
|
|
81659bce85 | ||
|
|
f761eb92ee | ||
|
|
164f5e7d0e | ||
|
|
7013f5cf80 | ||
|
|
6184a70ba4 | ||
|
|
e264d0da62 | ||
|
|
23a6e338e8 | ||
|
|
2c1dfdbe07 | ||
|
|
994e77a38b | ||
|
|
173ca461a9 | ||
|
|
53426b950a | ||
|
|
9bb36cd827 | ||
|
|
103aa8a0c8 | ||
|
|
62d507120c | ||
|
|
8ccb1c449a | ||
|
|
a07eb1ad1c |
18
Dockerfile
18
Dockerfile
@@ -1,15 +1,17 @@
|
||||
FROM node:8-alpine
|
||||
FROM node:10 AS builder
|
||||
RUN addgroup --gid 10001 app && adduser --disabled-password --gecos '' --gid 10001 --home /app --uid 10001 app
|
||||
COPY package*.json /app/
|
||||
WORKDIR /app
|
||||
RUN npm install --production
|
||||
|
||||
RUN apk add --no-cache git
|
||||
RUN addgroup -S -g 10001 app && adduser -S -D -G app -u 10001 app
|
||||
COPY . /app
|
||||
RUN chown -R app /app
|
||||
FROM node:10-slim
|
||||
RUN addgroup --gid 10001 app && adduser --disabled-password --gecos '' --gid 10001 --home /app --uid 10001 app
|
||||
USER app
|
||||
WORKDIR /app
|
||||
RUN mkdir static
|
||||
RUN npm install --production && npm cache clean --force
|
||||
COPY --chown=app:app --from=builder /app .
|
||||
COPY --chown=app:app . .
|
||||
|
||||
ENV PORT=1443
|
||||
EXPOSE $PORT
|
||||
|
||||
CMD ["npm", "run", "prod"]
|
||||
CMD ["node", "server/prod.js"]
|
||||
|
||||
@@ -162,8 +162,8 @@ function download(id, keychain, onprogress, canceller) {
|
||||
});
|
||||
|
||||
xhr.addEventListener('progress', function(event) {
|
||||
if (event.lengthComputable && event.target.status === 200) {
|
||||
onprogress([event.loaded, event.total]);
|
||||
if (event.target.status === 200) {
|
||||
onprogress(event.loaded);
|
||||
}
|
||||
});
|
||||
const auth = await keychain.authHeader();
|
||||
@@ -171,7 +171,7 @@ function download(id, keychain, onprogress, canceller) {
|
||||
xhr.setRequestHeader('Authorization', auth);
|
||||
xhr.responseType = 'blob';
|
||||
xhr.send();
|
||||
onprogress([0, 1]);
|
||||
onprogress(0);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ export default class FileReceiver extends Nanobus {
|
||||
this.fileInfo.name = meta.name;
|
||||
this.fileInfo.type = meta.type;
|
||||
this.fileInfo.iv = meta.iv;
|
||||
this.fileInfo.size = meta.size;
|
||||
this.fileInfo.size = +meta.size;
|
||||
this.state = 'ready';
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ export default class FileReceiver extends Nanobus {
|
||||
this.fileInfo.id,
|
||||
this.keychain,
|
||||
p => {
|
||||
this.progress = p;
|
||||
this.progress = [p, this.fileInfo.size];
|
||||
this.emit('progress');
|
||||
}
|
||||
);
|
||||
|
||||
@@ -2,7 +2,7 @@ version: 2.0
|
||||
jobs:
|
||||
build:
|
||||
docker:
|
||||
- image: circleci/node:8
|
||||
- image: circleci/node:10
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
@@ -19,7 +19,7 @@ jobs:
|
||||
- ./dist
|
||||
test:
|
||||
docker:
|
||||
- image: circleci/node:8-browsers
|
||||
- image: circleci/node:10-browsers
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
|
||||
10754
package-lock.json
generated
10754
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
25
package.json
25
package.json
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "firefox-send",
|
||||
"description": "File Sharing Experiment",
|
||||
"version": "2.5.5",
|
||||
"version": "2.6.3",
|
||||
"author": "Mozilla (https://mozilla.org)",
|
||||
"repository": "mozilla/send",
|
||||
"homepage": "https://github.com/mozilla/send/",
|
||||
@@ -10,7 +10,7 @@
|
||||
"scripts": {
|
||||
"precommit": "lint-staged",
|
||||
"prepush": "npm test",
|
||||
"check": "nsp check",
|
||||
"check": "npm audit",
|
||||
"clean": "rimraf dist",
|
||||
"build": "npm run clean && webpack -p",
|
||||
"lint": "npm-run-all lint:*",
|
||||
@@ -29,7 +29,7 @@
|
||||
"test:frontend": "cross-env NODE_ENV=development node test/frontend/runner.js && nyc report --reporter=html",
|
||||
"test-integration": "docker-compose up --abort-on-container-exit --exit-code-from integration-tests --build --remove-orphans --quiet-pull && docker-compose down",
|
||||
"test-integration-stage": "cross-env BASE_URL=https://send.stage.mozaws.net npm run test-integration",
|
||||
"start": "npm run clean && cross-env NODE_ENV=development webpack-dev-server",
|
||||
"start": "npm run clean && npm run build && npm run prod",
|
||||
"prod": "node server/prod.js"
|
||||
},
|
||||
"lint-staged": {
|
||||
@@ -85,22 +85,21 @@
|
||||
"mocha": "^5.2.0",
|
||||
"nanobus": "^4.3.4",
|
||||
"nanotiming": "^7.3.1",
|
||||
"npm-run-all": "^4.1.3",
|
||||
"nsp": "^3.2.1",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"nyc": "^11.9.0",
|
||||
"postcss-cssnext": "^3.1.0",
|
||||
"postcss-import": "^11.1.0",
|
||||
"postcss-loader": "^2.1.6",
|
||||
"prettier": "^1.14.3",
|
||||
"prettier": "^1.15.2",
|
||||
"proxyquire": "^1.8.0",
|
||||
"puppeteer": "^1.9.0",
|
||||
"puppeteer": "^1.11.0",
|
||||
"raven-js": "^3.27.0",
|
||||
"redis-mock": "^0.21.0",
|
||||
"require-from-string": "^2.0.2",
|
||||
"rimraf": "^2.6.2",
|
||||
"sinon": "^4.5.0",
|
||||
"string-hash": "^1.1.3",
|
||||
"stylelint": "^9.6.0",
|
||||
"stylelint": "^9.8.0",
|
||||
"stylelint-config-standard": "^18.2.0",
|
||||
"stylelint-no-unsupported-browser-features": "^2.0.0",
|
||||
"svgo": "^1.1.1",
|
||||
@@ -109,21 +108,22 @@
|
||||
"val-loader": "^1.1.1",
|
||||
"webpack": "^3.12.0",
|
||||
"webpack-dev-middleware": "^2.0.6",
|
||||
"webpack-dev-server": "2.9.1",
|
||||
"webpack-manifest-plugin": "^1.3.2",
|
||||
"webpack-unassert-loader": "^1.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"aws-sdk": "^2.329.0",
|
||||
"@google-cloud/storage": "^2.4.2",
|
||||
"aws-sdk": "^2.362.0",
|
||||
"babel-polyfill": "^6.26.0",
|
||||
"choo": "^6.13.0",
|
||||
"cldr-core": "^32.0.0",
|
||||
"connect-busboy": "0.0.2",
|
||||
"convict": "^4.4.0",
|
||||
"express": "^4.16.3",
|
||||
"fast-crc32c": "^1.0.4",
|
||||
"fluent": "^0.6.4",
|
||||
"fluent-langneg": "^0.1.0",
|
||||
"helmet": "^3.13.0",
|
||||
"helmet": "^3.15.0",
|
||||
"mkdirp": "^0.5.1",
|
||||
"mozlog": "^2.2.0",
|
||||
"raven": "^2.6.4",
|
||||
@@ -143,6 +143,8 @@
|
||||
"de",
|
||||
"dsb",
|
||||
"el",
|
||||
"en-CA",
|
||||
"en-GB",
|
||||
"es-AR",
|
||||
"es-CL",
|
||||
"es-ES",
|
||||
@@ -151,6 +153,7 @@
|
||||
"fa",
|
||||
"fr",
|
||||
"fy-NL",
|
||||
"hr",
|
||||
"hsb",
|
||||
"hu",
|
||||
"ia",
|
||||
|
||||
121
public/locales/en-GB/send.ftl
Normal file
121
public/locales/en-GB/send.ftl
Normal file
@@ -0,0 +1,121 @@
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
title = Firefox Send
|
||||
siteSubtitle = web experiment
|
||||
siteFeedback = Feedback
|
||||
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 file here to start uploading
|
||||
uploadPageSizeMessage = For the most reliable operation, it’s 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…
|
||||
verifyingFile = Verifying…
|
||||
encryptingFile = Encrypting…
|
||||
decryptingFile = Decrypting…
|
||||
notifyUploadDone = Your upload has finished.
|
||||
uploadingPageMessage = Once your file uploads you will be able to set expiry options.
|
||||
uploadingPageCancel = Cancel upload
|
||||
uploadCancelNotification = Your upload was cancelled.
|
||||
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 }.
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 download
|
||||
*[other] { $num } downloads
|
||||
}
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 hour
|
||||
*[other] { $num } hours
|
||||
}
|
||||
copyUrlFormLabelWithName = Copy and share the link to send your file: { $filename }
|
||||
copyUrlFormButton = Copy to clipboard
|
||||
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
|
||||
unlockButtonLabel = Unlock
|
||||
downloadFileTitle = Download Encrypted File
|
||||
# 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.
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = Download
|
||||
downloadNotification = Your download has completed.
|
||||
downloadFinish = Download Complete
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = ({ $partialSize } of { $totalSize })
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
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!
|
||||
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 }.
|
||||
linkExpiredAlt = Link expired
|
||||
expiredPageHeader = This link has expired or never existed in the first place!
|
||||
notSupportedHeader = Your browser is not supported.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
notSupportedDetail = Unfortunately this browser does not support the web technology that powers Firefox Send. You’ll need to try another browser. We recommend Firefox!
|
||||
notSupportedLink = Why is my browser not supported?
|
||||
notSupportedOutdatedDetail = Unfortunately this version of Firefox does not support the web technology that powers Firefox Send. You’ll need to update your browser.
|
||||
updateFirefox = Update Firefox
|
||||
downloadFirefoxButtonSub = Free Download
|
||||
uploadedFile = File
|
||||
copyFileList = Copy URL
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = Expires In
|
||||
deleteFileList = Delete
|
||||
nevermindButton = Never mind
|
||||
legalHeader = Terms & Privacy
|
||||
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>.
|
||||
legalNoticeMozilla = Use of the Firefox Send web site is also subject to Mozilla’s <a>Websites Privacy Notice</a> and <a>Websites Terms of Use</a>.
|
||||
deletePopupText = Delete this file?
|
||||
deletePopupYes = Yes
|
||||
deletePopupCancel = Cancel
|
||||
deleteButtonHover = Delete
|
||||
copyUrlHover = Copy URL
|
||||
footerLinkLegal = Legal
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = About Test Pilot
|
||||
footerLinkPrivacy = Privacy
|
||||
footerLinkTerms = Terms
|
||||
footerLinkCookies = Cookies
|
||||
requirePasswordCheckbox = Require a password to download this file
|
||||
addPasswordButton = Add password
|
||||
changePasswordButton = Change
|
||||
passwordTryAgain = Incorrect password. Try again.
|
||||
reportIPInfringement = Report IP Infringement
|
||||
javascriptRequired = Firefox Send requires JavaScript
|
||||
whyJavascript = Why does Firefox Send require JavaScript?
|
||||
enableJavascript = Please enable JavaScript and try again.
|
||||
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
|
||||
expiresHoursMinutes = { $hours }h { $minutes }m
|
||||
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
|
||||
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
|
||||
maxPasswordLength = Maximum password length: { $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = This password could not be set
|
||||
120
public/locales/fi/send.ftl
Normal file
120
public/locales/fi/send.ftl
Normal file
@@ -0,0 +1,120 @@
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
title = Firefox Send
|
||||
siteSubtitle = web-kokeilu
|
||||
siteFeedback = Palaute
|
||||
uploadPageHeader = Yksityinen, salattu tiedostojen jakaminen
|
||||
uploadPageExplainer = Lähetä tiedostoja turvallisen, yksityisen ja salatun linkin kautta. Linkki vanhenee automaattisesti, joten tietosi eivät pysy verkossa ikuisesti.
|
||||
uploadPageLearnMore = Lue lisää
|
||||
uploadPageDropMessage = Aloita lataaminen pudottamalla tiedosto tähän
|
||||
uploadPageSizeMessage = Luotettavin toiminta saadaan pitämällä tiedostokoko alle 1 Gt
|
||||
uploadPageBrowseButton = Valitse tiedosto tietokoneesta
|
||||
uploadPageBrowseButton1 = Valitse ladattava tiedosto
|
||||
uploadPageMultipleFilesAlert = Useiden tiedostojen tai kansion lataamista ei tällä hetkellä tueta.
|
||||
uploadPageBrowseButtonTitle = Lataa tiedosto
|
||||
uploadingPageProgress = Ladataan { $filename } ({ $size })
|
||||
importingFile = Tuodaan…
|
||||
verifyingFile = Tarkistetaan...
|
||||
encryptingFile = Salataan...
|
||||
decryptingFile = Puretaan salausta...
|
||||
notifyUploadDone = Latauksesi on päättynyt.
|
||||
uploadingPageMessage = Kun tiedostojen lataaminen on valmista, voit määrittää vanhentumisvaihtoehdot.
|
||||
uploadingPageCancel = Peruuta lataus
|
||||
uploadCancelNotification = Latauksesi peruutettiin.
|
||||
uploadingPageLargeFileMessage = Tämä tiedosto on suuri ja sen lataaminen saattaa kestää jonkin aikaa. Nyt malttia peliin!
|
||||
uploadingFileNotification = Ilmoita minulle, kun lataus on valmis.
|
||||
uploadSuccessConfirmHeader = Valmis lähettämään
|
||||
uploadSvgAlt = Lataa
|
||||
uploadSuccessTimingHeader = Linkki tiedostoon vanhenee 1 latauksen tai 24 tunnin kuluttua.
|
||||
expireInfo = Linkki tiedostoon vanhenee { $downloadCount } tai { $timespan } kuluttua.
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] yhden latauksen
|
||||
*[other] { $num } latauksen
|
||||
}
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 tunnin
|
||||
*[other] { $num } tunnin
|
||||
}
|
||||
copyUrlFormLabelWithName = Kopioi ja jaa linkki lähettämääsi tiedostoon: { $filename }
|
||||
copyUrlFormButton = Kopioi leikepöydälle
|
||||
copiedUrl = Kopioitu!
|
||||
deleteFileButton = Poista tiedosto
|
||||
sendAnotherFileLink = Lähetä toinen tiedosto
|
||||
# Alternative text used on the download link/button (indicates an action).
|
||||
downloadAltText = Lataa
|
||||
downloadsFileList = Lataukset
|
||||
# Used as header in a column indicating the amount of time left before a
|
||||
# download link expires (e.g. "10h 5m")
|
||||
timeFileList = Aika
|
||||
# Used as header in a column indicating the number of times a file has been
|
||||
# downloaded
|
||||
downloadFileName = { $filename } ladattu
|
||||
downloadFileSize = ({ $size })
|
||||
unlockInputLabel = Syötä salasana
|
||||
unlockInputPlaceholder = Salasana
|
||||
unlockButtonLabel = Avaa
|
||||
downloadFileTitle = Lataa salattu tiedosto
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
downloadMessage = Ystäväsi lähettää sinulle tiedoston Firefox Send -palvelulla, jonka avulla voidaan jakaa tiedostoja turvallisen, yksityisen ja salatun linkin kautta. Linkki vanhenee automaattisesti, joten tiedot eivät säily verkossa ikuisesti.
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = Lataa
|
||||
downloadNotification = Latauksesi on valmis.
|
||||
downloadFinish = Lataus valmis
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = { $partialSize } / { $totalSize }
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
sendYourFilesLink = Kokeile Firefox Sendiä
|
||||
downloadingPageProgress = Ladataan { $filename } ({ $size })
|
||||
downloadingPageMessage = Jätä tämä välilehti auki siksi aikaa kun haemme tiedoston ja puramme sen.
|
||||
errorAltText = Latausvirhe
|
||||
errorPageHeader = Jokin meni pieleen!
|
||||
errorPageMessage = Tiedoston lataamisessa on tapahtunut virhe.
|
||||
errorPageLink = Lähetä toinen tiedosto
|
||||
fileTooBig = Tämä tiedosto on liian suuri ladattavaksi. Sen pitäisi olla pienempi kuin { $size }.
|
||||
linkExpiredAlt = Linkki on vanhentunut
|
||||
expiredPageHeader = Tämä linkki on vanhentunut tai sitä ei ole koskaan ollut olemassa!
|
||||
notSupportedHeader = Selaintasi ei tueta.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
notSupportedDetail = Valitettavasti tämä selain ei tue Firefox Sendiä käyttävää web-tekniikkaa. Sinun on kokeiltava toista selainta. Suosittelemme Firefoxia!
|
||||
notSupportedLink = Miksi selaintani ei tueta?
|
||||
notSupportedOutdatedDetail = Valitettavasti tämä Firefoxin versio ei tue Firefox Sendiä käyttävää web-tekniikkaa. Sinun on päivitettävä selaimesi.
|
||||
updateFirefox = Päivitä Firefox
|
||||
downloadFirefoxButtonSub = Ilmainen lataus
|
||||
uploadedFile = Tiedosto
|
||||
copyFileList = Kopioi osoite
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = Vanhenee
|
||||
deleteFileList = Poista
|
||||
nevermindButton = Unohda koko juttu
|
||||
legalHeader = Ehdot ja yksityisyys
|
||||
legalNoticeTestPilot = Firefox Send on tällä hetkellä Test Pilot -kokeilu, ja siihen sovelletaan Test Pilot <a>käyttöehtoja</a> ja <a>tietosuojakäytäntöjä</a>. Saat lisätietoja tästä kokeilusta ja sen tiedonkeruusta <a>täällä</a>.
|
||||
deletePopupText = Poista tämä tiedosto?
|
||||
deletePopupYes = Kyllä
|
||||
deletePopupCancel = Peruuta
|
||||
deleteButtonHover = Poista
|
||||
copyUrlHover = Kopioi osoite
|
||||
footerLinkLegal = Juridiset asiat
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = Tietoja Test Pilotista
|
||||
footerLinkPrivacy = Tietosuoja
|
||||
footerLinkTerms = Ehdot
|
||||
footerLinkCookies = Evästeet
|
||||
requirePasswordCheckbox = Vaadi salasanaa tämän tiedoston lataamiseen
|
||||
addPasswordButton = Lisää salasana
|
||||
changePasswordButton = Muuta
|
||||
passwordTryAgain = Väärä salasana. Yritä uudelleen.
|
||||
reportIPInfringement = Ilmoita IP-rikkomuksesta
|
||||
javascriptRequired = Firefox-Send vaatii JavaScriptin
|
||||
whyJavascript = Miksi Firefox Send vaatii JavaScriptin?
|
||||
enableJavascript = Ota JavaScript käyttöön ja yritä uudelleen.
|
||||
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
|
||||
expiresHoursMinutes = { $hours }t { $minutes }min
|
||||
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
|
||||
expiresMinutes = { $minutes }min
|
||||
# A short status message shown when a password is successfully set
|
||||
passwordIsSet = Salasana asetettu
|
||||
# A short status message shown when the user enters a long password
|
||||
maxPasswordLength = Salasanan enimmäispituus: { $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = Tätä salasanaa ei voitu asettaa
|
||||
57
public/locales/gor/send.ftl
Normal file
57
public/locales/gor/send.ftl
Normal file
@@ -0,0 +1,57 @@
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
title = Firefox Molawo
|
||||
siteSubtitle = web yimontalo
|
||||
uploadPageLearnMore = Pobalajariya po'olo
|
||||
uploadPageBrowseButton = Tulawota berkas to delomo komputermu
|
||||
uploadPageBrowseButton1 = Tulawota berkas u detohulo
|
||||
uploadPageBrowseButtonTitle = Detohe berkas
|
||||
uploadingPageProgress = Hemodetohu { $filename } ({ $size })
|
||||
notifyUploadDone = Diletohumu ma yilapato
|
||||
uploadingPageMessage = Bataliya modetohu
|
||||
uploadingPageCancel = Bataliya modetohu
|
||||
uploadCancelNotification = Diletohumu ma bilatali
|
||||
uploadingPageLargeFileMessage = Berkas botiya damango wawu paralu wakutu ngope'e mopodetohu. Potihulo'opo!
|
||||
uploadingFileNotification = Poleleya ola'u wonu ma yilapato lodetohu.
|
||||
uploadSuccessConfirmHeader = Siap Molawo
|
||||
uploadSvgAlt = Detohe
|
||||
copiedUrl = Yilami
|
||||
deleteFileButton = Luluta berkas
|
||||
sendAnotherFileLink = Lawola berkas uwewo
|
||||
# Alternative text used on the download link/button (indicates an action).
|
||||
downloadAltText = Mopohuli
|
||||
downloadsFileList = Mopohuli
|
||||
# Used as header in a column indicating the amount of time left before a
|
||||
# download link expires (e.g. "10h 5m")
|
||||
timeFileList = Wakutu
|
||||
# Used as header in a column indicating the number of times a file has been
|
||||
# downloaded
|
||||
downloadFileName = Mopohuli { $filename }
|
||||
downloadFileSize = ({ $size })
|
||||
unlockInputLabel = Tuwota Password
|
||||
unlockInputPlaceholder = Password
|
||||
unlockButtonLabel = Hu'owa
|
||||
downloadFileTitle = Mopohuli Enskripsi Berkas
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = Mopohuli
|
||||
downloadNotification = U pilopohulimu ma yilapato.
|
||||
downloadFinish = Mopohuli Yilapato
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = ({ $partialSize } meyalo { $totalSize })
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
sendYourFilesLink = Yimontali Firefox Molawo
|
||||
downloadFirefoxButtonSub = Pereyi Mopohuli
|
||||
uploadedFile = Berkas
|
||||
copyFileList = Kupe'iya URL
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = Mopulito To
|
||||
deleteFileList = Luluta
|
||||
nevermindButton = Sambelo
|
||||
deletePopupText = Luluta berkas botiya?
|
||||
deletePopupYes = Joo
|
||||
deletePopupCancel = Bataliya
|
||||
deleteButtonHover = Luluta
|
||||
copyUrlHover = Kupe'iya URL
|
||||
footerLinkLegal = Legal
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = Tomimbihu Test Pilot
|
||||
changePasswordButton = Boli'a
|
||||
@@ -21,37 +21,30 @@ uploadCancelNotification = ההעלאה שלך בוטלה.
|
||||
uploadingPageLargeFileMessage = קובץ זה גדול ועלול לקחת זמן להעלות אותו. סבלנות!
|
||||
uploadingFileNotification = נא להודיע לי כשתסתיים ההעלאה.
|
||||
uploadSuccessConfirmHeader = מוכן לשליחה
|
||||
uploadSvgAlt =
|
||||
.alt = להעלות
|
||||
uploadSvgAlt = העלאה
|
||||
uploadSuccessTimingHeader = הקישור לקובץ שלך יפוג אחרי הורדה אחת או בעוד 24 שעות.
|
||||
copyUrlFormLabelWithName = ניתן להעתיק ולשתף את הקישור כדי לשלוח את הקובץ שלך: { $filename }
|
||||
copiedUrl = הועתק!
|
||||
deleteFileButton = מחיקת קובץ
|
||||
.title = מחיקת קובץ
|
||||
sendAnotherFileLink = שליחת קובץ נוסף
|
||||
.title = שליחת קובץ נוסף
|
||||
# Alternative text used on the download link/button (indicates an action).
|
||||
downloadAltText =
|
||||
.alt = הורדה
|
||||
downloadAltText = הורדה
|
||||
# Used as header in a column indicating the number of times a file has been
|
||||
# downloaded
|
||||
downloadFileName = ההורדה נכשלה
|
||||
downloadFileSize = ({ $size })
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = הורדה
|
||||
.title = הורדה
|
||||
downloadNotification = ההורדה הושלמה.
|
||||
downloadFinish = ההורדה הושלמה
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = ({ $partialSize } מתוך { $totalSize })
|
||||
downloadingPageProgress = בהורדה: { $filename } ({ $size })
|
||||
errorAltText =
|
||||
.alt = תקלה בהעלאה
|
||||
errorAltText = תקלה בהעלאה
|
||||
errorPageHeader = משהו השתבש!
|
||||
errorPageLink = שליחת קובץ נוסף
|
||||
fileTooBig = הקובץ הזה גדול מידי להעלאה. עליו להיות קטן מ־{ $size }.
|
||||
linkExpiredAlt =
|
||||
.alt = קישור פג
|
||||
linkExpiredAlt = הקישור פג
|
||||
notSupportedHeader = הדפדפן שלך לא נתמך.
|
||||
notSupportedLink = למה אין תמיכה בדפדפן שלי?
|
||||
downloadFirefoxButtonSub = הורדה בחינם
|
||||
@@ -65,10 +58,8 @@ legalHeader = תנאי שירות ופרטיות
|
||||
deletePopupText = למחוק דף זה?
|
||||
deletePopupYes = כן
|
||||
deletePopupCancel = ביטול
|
||||
deleteButtonHover =
|
||||
.title = מחיקה
|
||||
copyUrlHover =
|
||||
.title = העתקת קישור
|
||||
deleteButtonHover = מחיקה
|
||||
copyUrlHover = העתקת קישור
|
||||
footerLinkLegal = מידע משפטי
|
||||
footerLinkPrivacy = פרטיות
|
||||
footerLinkTerms = תנאי שימוש
|
||||
|
||||
123
public/locales/hr/send.ftl
Normal file
123
public/locales/hr/send.ftl
Normal file
@@ -0,0 +1,123 @@
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
title = Firefox Send
|
||||
siteSubtitle = web eksperiment
|
||||
siteFeedback = Povratne informacije
|
||||
uploadPageHeader = Privatno i šifrirano dijeljenje datoteka
|
||||
uploadPageExplainer = Šaljite datoteke preko sigurne, privatne i šifrirane veze koja samostalno istječe, da vaše stvari ne bi ostale na netu zauvijek.
|
||||
uploadPageLearnMore = Saznajte više
|
||||
uploadPageDropMessage = Prevucite vaše datoteke ovdje da biste krenuli sa otpremanjem
|
||||
uploadPageSizeMessage = Za bolji rad predlažemo da datoteka ne bude veća od 1GB
|
||||
uploadPageBrowseButton = Izaberite datoteku na računalu
|
||||
uploadPageBrowseButton1 = Izaberite datoteku za otpremanje
|
||||
uploadPageMultipleFilesAlert = Otpremanje fascikala ili više datoteka trenutno nije podržano.
|
||||
uploadPageBrowseButtonTitle = Otpremi datoteku
|
||||
uploadingPageProgress = Otpremam { $filename } ({ $size })
|
||||
importingFile = Uvozim...
|
||||
verifyingFile = Potvrđujem...
|
||||
encryptingFile = Šifriram...
|
||||
decryptingFile = Dešifriram...
|
||||
notifyUploadDone = Vaše otpremanje je završeno.
|
||||
uploadingPageMessage = Nakon što se vaša datoteka otpremi, moći ćete podesiti opcije isteka.
|
||||
uploadingPageCancel = Otkaži otpremanje
|
||||
uploadCancelNotification = Vaše otpremanje je otkazano.
|
||||
uploadingPageLargeFileMessage = Ovo je velika datoteka i otpremanje može potrajati. Budite strpljivi!
|
||||
uploadingFileNotification = Obavijesti me kada se otpremanje završi.
|
||||
uploadSuccessConfirmHeader = Spreman za slanje
|
||||
uploadSvgAlt = Otpremi
|
||||
uploadSuccessTimingHeader = Veza prema vašoj datoteci će isteći nakon jednog preuzimanja ili nakon 24 sata.
|
||||
expireInfo = Veza prema vašoj datoteci će isteći nakon { $downloadCount } ili { $timespan }.
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] preuzimanja
|
||||
[few] preuzimanja
|
||||
*[other] preuzimanja
|
||||
}
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] sata
|
||||
[few] sata
|
||||
*[other] sati
|
||||
}
|
||||
copyUrlFormLabelWithName = Iskopirajte i podijelite vezu da biste poslali vašu datoteku: { $filename }
|
||||
copyUrlFormButton = Kopiraj u međuspremnik
|
||||
copiedUrl = Kopirano!
|
||||
deleteFileButton = Obriši datoteku
|
||||
sendAnotherFileLink = Pošalji sljedeću datoteku
|
||||
# Alternative text used on the download link/button (indicates an action).
|
||||
downloadAltText = Preuzmi
|
||||
downloadsFileList = Preuzimanja
|
||||
# Used as header in a column indicating the amount of time left before a
|
||||
# download link expires (e.g. "10h 5m")
|
||||
timeFileList = Vrijeme
|
||||
# Used as header in a column indicating the number of times a file has been
|
||||
# downloaded
|
||||
downloadFileName = Preuzimanje datoteke { $filename }
|
||||
downloadFileSize = ({ $size })
|
||||
unlockInputLabel = Unesite lozinku
|
||||
unlockInputPlaceholder = Lozinka
|
||||
unlockButtonLabel = Otključaj
|
||||
downloadFileTitle = Preuzmi šifriranu datoteku
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
downloadMessage = Vaš prijatelj vam je poslao datoteku preko usluge Firefox Send koja vam omogućava da dijelite datoteke preko sigurne, privatne i šifrirane veze koja samostalno istječe, da vaše stvari ne bi ostale na netu zauvijek.
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = Preuzmi
|
||||
downloadNotification = Vaše preuzimanje je završeno.
|
||||
downloadFinish = Preuzimanje je završeno.
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = ({ $partialSize } od { $totalSize })
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
sendYourFilesLink = Isprobajte Firefox Send
|
||||
downloadingPageProgress = Preuzimam datoteku { $filename } ({ $size })
|
||||
downloadingPageMessage = Ostavite ovaj jezičak otvorenim dok ne dobavimo vašu datoteku i dok je ne dešifriramo.
|
||||
errorAltText = Greška pri otpremanju
|
||||
errorPageHeader = Nešto je pošlo naopako!
|
||||
errorPageMessage = Dogodila se greška prilikom otpremanja datoteke.
|
||||
errorPageLink = Pošalji drugu datoteku
|
||||
fileTooBig = Ta datoteka je prevelika za otpremanje. Treba biti manja od { $size }.
|
||||
linkExpiredAlt = Veza je istekla
|
||||
expiredPageHeader = Veza je ili istekla, ili nikada nije ni postojala!
|
||||
notSupportedHeader = Vaš preglednik nije podržan.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
notSupportedDetail = Nažalost, ovaj preglednik ne podržava web tehnologiju koja omogućava Firefox Send. Morat ćete probati sa drugim preglednikom. Mi predlažemo Firefox!
|
||||
notSupportedLink = Zašto moj preglednik nije podržan?
|
||||
notSupportedOutdatedDetail = Nažalost, ovo izdanje Firefoxa ne podržava web tehnologiju koja omogućava Firefox Send. Morat ćete ažurirati vaš preglednik.
|
||||
updateFirefox = Ažuriraj Firefox
|
||||
downloadFirefoxButtonSub = Besplatno preuzimanje
|
||||
uploadedFile = Datoteka
|
||||
copyFileList = Kopiraj link
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = Istječe za
|
||||
deleteFileList = Obriši
|
||||
nevermindButton = Zanemari
|
||||
legalHeader = Uvjeti i privatnost
|
||||
legalNoticeTestPilot = Firefox Send je trenutno Test Pilot eksperiment i podložan je <a>uvjetima korištenja</a> Test Pilota i <a>obavijesti o privatnosti</a>. O ovom eksperimentu i o njegovom sakupljanju podataka možete saznati više <a>ovdje</a>.
|
||||
legalNoticeMozilla = Korištenje Firefox Send web stranice podliježe Mozillinoj <a>obavijesti o privatnosti na web stranicama</a> i <a>uvjetima korištenja web stranica</a>.
|
||||
deletePopupText = Obrisati ovu datoteku?
|
||||
deletePopupYes = Da
|
||||
deletePopupCancel = Otkaži
|
||||
deleteButtonHover = Obriši
|
||||
copyUrlHover = Kopiraj link
|
||||
footerLinkLegal = Pravni podaci
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = O Test Pilot
|
||||
footerLinkPrivacy = Privatnost
|
||||
footerLinkTerms = Uvjeti
|
||||
footerLinkCookies = Kolačići
|
||||
requirePasswordCheckbox = Zahtjevaj lozinku pri preuzimanju ove datoteke
|
||||
addPasswordButton = Dodaj lozinku
|
||||
changePasswordButton = Promijeni
|
||||
passwordTryAgain = Netočna lozinka. Pokušaj ponovo.
|
||||
reportIPInfringement = Prijavite IP prekršaj
|
||||
javascriptRequired = Za Firefox Send je potreban JavaScript
|
||||
whyJavascript = Zašto je za Firefox Send potreban JavaScript?
|
||||
enableJavascript = Omogućite JavaScript i pokušajte ponovo.
|
||||
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
|
||||
expiresHoursMinutes = { $hours }s { $minutes }m
|
||||
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
|
||||
expiresMinutes = { $minutes }m
|
||||
# A short status message shown when a password is successfully set
|
||||
passwordIsSet = Lozinka je postavljena
|
||||
# A short status message shown when the user enters a long password
|
||||
maxPasswordLength = Najveća dužina lozinke: { $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = Ne možemo postaviti ovu lozinku
|
||||
@@ -88,7 +88,7 @@ expiryFileList = Scade in
|
||||
deleteFileList = Elimina
|
||||
nevermindButton = No, grazie
|
||||
legalHeader = Termini di utilizzo e privacy
|
||||
legalNoticeTestPilot = Firefox Send è attualmente un esperimento di Test Pilot ed è soggetto alle <a>Condizioni di utilizzo</a> e all’<a>Informativa sulla privacy</a> di Test Pilot. Per ulteriori informazioni su questo esperimento e i dati raccolti, consulta <a>questa pagina<a>.
|
||||
legalNoticeTestPilot = Firefox Send è attualmente un esperimento di Test Pilot ed è soggetto alle <a>Condizioni di utilizzo</a> e all’<a>Informativa sulla privacy</a> di Test Pilot. Per ulteriori informazioni su questo esperimento e i dati raccolti, consulta <a>questa pagina</a>.
|
||||
legalNoticeMozilla = L’utilizzo del sito di Firefox Send è soggetto all’<a>Informativa sulla privacy</a> e le <a>Condizioni di utilizzo</a> dei siti web Mozilla.
|
||||
deletePopupText = Eliminare questo file?
|
||||
deletePopupYes = Sì
|
||||
|
||||
@@ -9,7 +9,7 @@ uploadPageDropMessage = გადმოიტანეთ ფაილი აქ
|
||||
uploadPageSizeMessage = ყველაზე საიმედო მომსახურება, შეგიძლიათ ატვირთოთ არაუმეტეს 1GB ზომის ფაილი
|
||||
uploadPageBrowseButton = ფაილის არჩევა კომპიუტერიდან
|
||||
uploadPageBrowseButton1 = ფაილის არჩევა ასატვირთად
|
||||
uploadPageMultipleFilesAlert = ერთდროულად რამდენიმე ფაილის, ან საქაღალდის ატვირთვა, ამჟამად არაა ხელმისაწვდომი.
|
||||
uploadPageMultipleFilesAlert = ერთდროულად რამდენიმე ფაილის ან საქაღალდის ატვირთვა, ამჟამად არაა ხელმისაწვდომი.
|
||||
uploadPageBrowseButtonTitle = ფაილის ატვირთვა
|
||||
uploadingPageProgress = მიმდინარეობს ატვირთვა { $filename } ({ $size })
|
||||
importingFile = გადმოტანა...
|
||||
@@ -24,7 +24,7 @@ uploadingPageLargeFileMessage = ფაილი დიდია და ატვ
|
||||
uploadingFileNotification = შეტყობინება, ატვირთვის დასრულებისას.
|
||||
uploadSuccessConfirmHeader = მზადაა გასაგზავნად
|
||||
uploadSvgAlt = ატვირთვა
|
||||
uploadSuccessTimingHeader = ფაილს ვადა გაუვა 1 ჩამოტვირთვის, ან 24 საათის მერე.
|
||||
uploadSuccessTimingHeader = ფაილს ვადა გაუვა 1 ჩამოტვირთვის ან 24 საათის მერე.
|
||||
expireInfo = ფაილის ბმულს, ვადა გაუვა { $downloadCount }, ან { $timespan } მერე.
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
@@ -36,9 +36,9 @@ timespanHours =
|
||||
[one] 1 საათი
|
||||
*[other] { $num } საათი
|
||||
}
|
||||
copyUrlFormLabelWithName = დააკოპირეთ და გააზიარეთ ბმული, ფაილის გასაგზავნად: { $filename }
|
||||
copyUrlFormButton = დაკოპირება
|
||||
copiedUrl = დაკოპირდა!
|
||||
copyUrlFormLabelWithName = აიღეთ ბმულის ასლი და გააზიარეთ, ფაილის გასაგზავნად: { $filename }
|
||||
copyUrlFormButton = ასლის აღება
|
||||
copiedUrl = ასლი მზადაა!
|
||||
deleteFileButton = ფაილის წაშლა
|
||||
sendAnotherFileLink = სხვა ფაილის გაგზავნა
|
||||
# Alternative text used on the download link/button (indicates an action).
|
||||
@@ -82,7 +82,7 @@ notSupportedOutdatedDetail = სამწუხაროდ, Firefox-ის ა
|
||||
updateFirefox = Firefox-ის განახლება
|
||||
downloadFirefoxButtonSub = უფასო ჩამოტვირთვა
|
||||
uploadedFile = ფაილი
|
||||
copyFileList = URL-ბმულის დაკოპირება
|
||||
copyFileList = URL-ბმულის ასლი
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = ვადის გასვლის დრო
|
||||
deleteFileList = წაშლა
|
||||
@@ -94,8 +94,8 @@ deletePopupText = წაიშალოს ეს ფაილი?
|
||||
deletePopupYes = დიახ
|
||||
deletePopupCancel = გაუქმება
|
||||
deleteButtonHover = წაშლა
|
||||
copyUrlHover = URL-ს დაკოპირება
|
||||
footerLinkLegal = იურიდიული ინფორმაცია
|
||||
copyUrlHover = URL-ს ასლი
|
||||
footerLinkLegal = სამართლებრივი საკითხები
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = Test Pilot-ის შესახებ
|
||||
footerLinkPrivacy = პირადულობა
|
||||
|
||||
@@ -6,7 +6,7 @@ uploadPageHeader = Partilha de ficheiros privada e encriptada
|
||||
uploadPageExplainer = Envie ficheiros através de uma ligação segura, privada e encriptada que expira automaticamente para garantir que as suas coisas não fiquem online para sempre.
|
||||
uploadPageLearnMore = Saber mais
|
||||
uploadPageDropMessage = Largue o seu ficheiro aqui para começar a carregar
|
||||
uploadPageSizeMessage = Para uma operação mais confiável, é melhor manter o seu ficheiro abaixo de 1GB
|
||||
uploadPageSizeMessage = Para uma operação mais fiável, é melhor manter o seu ficheiro abaixo de 1GB
|
||||
uploadPageBrowseButton = Selecionar um ficheiro no seu computador
|
||||
uploadPageBrowseButton1 = Selecionar um ficheiro a carregar
|
||||
uploadPageMultipleFilesAlert = Carregar múltiplos ficheiros ou uma pasta não é atualmente suportado.
|
||||
@@ -91,7 +91,7 @@ deletePopupYes = Sim
|
||||
deletePopupCancel = Cancelar
|
||||
deleteButtonHover = Apagar
|
||||
copyUrlHover = Copiar URL
|
||||
footerLinkLegal = Legal
|
||||
footerLinkLegal = Informação legal
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = Acerca do Test Pilot
|
||||
footerLinkPrivacy = Privacidade
|
||||
|
||||
@@ -16,8 +16,8 @@ importingFile = Se importă…
|
||||
verifyingFile = Se verifică...
|
||||
encryptingFile = Se criptează…
|
||||
decryptingFile = Se decriptează…
|
||||
notifyUploadDone = Încărcarea s-a finalizat.
|
||||
uploadingPageMessage = După ce fișierul tău este încărcat vei putea seta opțiuni de expirare.
|
||||
notifyUploadDone = Încărcarea s-a terminat.
|
||||
uploadingPageMessage = După ce fișierul tău este încărcat, vei putea seta opțiuni de expirare.
|
||||
uploadingPageCancel = Anulează încărcarea
|
||||
uploadCancelNotification = Încărcarea a fost anulată.
|
||||
uploadingPageLargeFileMessage = Stai calm! Acest fișier este mare. S-ar putea să dureze un timp încărcarea.
|
||||
@@ -68,7 +68,7 @@ fileSizeProgress = ({ $partialSize } din { $totalSize })
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
sendYourFilesLink = Încearcă Firefox Send
|
||||
downloadingPageProgress = Se descarcă { $filename } ({ $size })
|
||||
downloadingPageMessage = Te rugăm să păstrezi această file deschisă în timp ce preluăm fișierul și îl decriptăm.
|
||||
downloadingPageMessage = Te rugăm să lași această filă deschisă în timp ce preluăm fișierul și îl decriptăm.
|
||||
errorAltText = Eroare la încărcare
|
||||
errorPageHeader = Ceva a mers prost!
|
||||
errorPageMessage = A apărut o eroare la încărcarea fișierului.
|
||||
@@ -92,7 +92,7 @@ nevermindButton = Uită
|
||||
legalHeader = Termeni de utilizare și politica de confidențialitate
|
||||
legalNoticeTestPilot = Firefox Send este în prezent un experiment Test Pilot și supus <a>Termenilor de utilizare a serviciului</a> și a <a>Politicii de confidențialitate</a> Test Pilot. Poți afla mai multe despre acest experiment și colectarea sa de date <a>aici</a>.
|
||||
legalNoticeMozilla = Folosirea site-ului Firefox Send mai este supusă <a>Politicii de confidențialitate pentru site-uri web</a> și a <a>Termenilor de utilizare a site-urilor web</a>.
|
||||
deletePopupText = Ștergi aceast fișier?
|
||||
deletePopupText = Ștergi acest fișier?
|
||||
deletePopupYes = Da
|
||||
deletePopupCancel = Renunță
|
||||
deleteButtonHover = Șterge
|
||||
@@ -109,12 +109,12 @@ changePasswordButton = Modifică
|
||||
passwordTryAgain = Parola este incorectă. Încearcă din nou.
|
||||
reportIPInfringement = Raportează încălcarea proprietății intelectuale
|
||||
javascriptRequired = Firefox Send are nevoie de JavaScript
|
||||
whyJavascript = De ce are nevoie Firefox Send de JavaScript?
|
||||
whyJavascript = De ce Firefox Send are nevoie de JavaScript?
|
||||
enableJavascript = Te rugăm să reactivezi JavaScript și să încerci din nou.
|
||||
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
|
||||
expiresHoursMinutes = { $hours }h { $minutes }m
|
||||
# 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 = Parola a fost setată
|
||||
# A short status message shown when the user enters a long password
|
||||
|
||||
20
public/locales/sn/send.ftl
Normal file
20
public/locales/sn/send.ftl
Normal file
@@ -0,0 +1,20 @@
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
title = Firefox Send
|
||||
siteFeedback = Zvirikutaurwa
|
||||
uploadPageLearnMore = Dzidza zvimwe
|
||||
# Used as header in a column indicating the amount of time left before a
|
||||
# download link expires (e.g. "10h 5m")
|
||||
timeFileList = Nguva
|
||||
deletePopupYes = Hongu
|
||||
changePasswordButton = Shandura
|
||||
enableJavascript = Ndinokumbira mubvumidze JavaScript moedza zvekare
|
||||
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
|
||||
expiresHoursMinutes = { $hours }maawa { $minutes }mineti
|
||||
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
|
||||
expiresMinutes = { $minutes }mineti
|
||||
# A short status message shown when a password is successfully set
|
||||
passwordIsSet = Pasiwedhi yaita
|
||||
# A short status message shown when the user enters a long password
|
||||
maxPasswordLength = Pasiwedhi haipfuuri mavara:{ $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = Pasiwedhi haina kuita
|
||||
@@ -90,8 +90,8 @@ expiryFileList = Термін дії закінчується
|
||||
deleteFileList = Видалити
|
||||
nevermindButton = Не важливо
|
||||
legalHeader = Умови та конфіденційність
|
||||
legalNoticeTestPilot = Firefox Send в даний час є експериментом Test Pilot, і тому підпадає під <a>умови служби</ a> і <a>повідомлення про приватність</a> Test Pilot. Ви можете дізнатись більше про цей експеримент і його збір даних <a>тут</a>.
|
||||
legalNoticeMozilla = Використання сайту Firefox Send також підпадає під <a>повідомлення про конфіденційність веб-сайтів</ a> та <a>правила використання веб-сайтів</a> Mozilla.
|
||||
legalNoticeTestPilot = Firefox Send в даний час є експериментом Test Pilot, і тому підпадає під <a>умови служби</a> і <a>повідомлення про приватність</a> Test Pilot. Ви можете дізнатись більше про цей експеримент і його збір даних <a>тут</a>.
|
||||
legalNoticeMozilla = Використання сайту Firefox Send також підпадає під <a>повідомлення про конфіденційність веб-сайтів</a> та <a>правила використання веб-сайтів</a> Mozilla.
|
||||
deletePopupText = Видалити цей файл?
|
||||
deletePopupYes = Так
|
||||
deletePopupCancel = Скасувати
|
||||
|
||||
@@ -22,24 +22,26 @@ uploadingPageCancel = Hủy tải lên
|
||||
uploadCancelNotification = Quá trình tải lên đã bị hủy.
|
||||
uploadingPageLargeFileMessage = Tập tin này khá nặng và sẽ tốn một chút thời gian để tải lên. Chờ chút nhé!
|
||||
uploadingFileNotification = Thông báo cho tôi khi tải lên hoàn tất.
|
||||
uploadSuccessConfirmHeader = Đã sẵn sàng để Gửi
|
||||
uploadSuccessConfirmHeader = Đã sẵn sàng để gửi
|
||||
uploadSvgAlt = Tải lên
|
||||
uploadSuccessTimingHeader = Liên kết đến tập tin của bạn sẽ hết hạn sau 1 lượt tải về hoặc trong 24 giờ.
|
||||
uploadSuccessTimingHeader = Liên kết đến tập tin của bạn sẽ hết hạn sau 1 lượt tải hoặc trong 24 giờ.
|
||||
expireInfo = Liên kết đến tập tin của bạn sẽ hết hạn sau { $downloadCount } hoặc { $timespan }.
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
*[other] lượt tải
|
||||
*[other] { $num } lượt tải
|
||||
}
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
*[other] giờ
|
||||
*[other] { $num } giờ
|
||||
}
|
||||
copyUrlFormLabelWithName = Sao chép và chia sẻ liên kết để gửi tập tin của bạn: { $filename }
|
||||
copyUrlFormButton = Sao chép vào vùng nhớ tạm
|
||||
copyUrlFormButton = Sao chép vào bộ nhớ tạm
|
||||
copiedUrl = Đã sao chép!
|
||||
deleteFileButton = Xóa tập tin
|
||||
sendAnotherFileLink = Gửi tập tin khác
|
||||
# Alternative text used on the download link/button (indicates an action).
|
||||
downloadAltText = Tải về
|
||||
downloadAltText = Tải xuống
|
||||
downloadsFileList = Tải xuống
|
||||
# Used as header in a column indicating the amount of time left before a
|
||||
# download link expires (e.g. "10h 5m")
|
||||
timeFileList = Thời gian
|
||||
@@ -96,9 +98,10 @@ footerLinkLegal = Pháp lý
|
||||
footerLinkAbout = Về Test Pilot
|
||||
footerLinkPrivacy = Quyền riêng tư
|
||||
footerLinkTerms = Điều khoản
|
||||
footerLinkCookies = Cookies
|
||||
footerLinkCookies = Cookie
|
||||
requirePasswordCheckbox = Yêu cầu mật khẩu khi tải về tập tin này
|
||||
addPasswordButton = Thêm mật khẩu
|
||||
changePasswordButton = Thay đổi
|
||||
passwordTryAgain = Sai mật khẩu. Vui lòng thử lại.
|
||||
reportIPInfringement = Báo cáo vi phạm
|
||||
javascriptRequired = Firefox Send cần JavaScript
|
||||
@@ -112,3 +115,5 @@ expiresMinutes = { $minutes } phút
|
||||
passwordIsSet = Đã đặt mật khẩu
|
||||
# A short status message shown when the user enters a long password
|
||||
maxPasswordLength = Độ dài mật khẩu tối đa: { $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = Không thể đặt mật khẩu này
|
||||
|
||||
@@ -97,7 +97,7 @@ footerLinkLegal = 法律
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = 关于 Test Pilot
|
||||
footerLinkPrivacy = 隐私
|
||||
footerLinkTerms = 条款
|
||||
footerLinkTerms = 使用条款
|
||||
footerLinkCookies = Cookie
|
||||
requirePasswordCheckbox = 持有密码才能下载此文件
|
||||
addPasswordButton = 添加密码
|
||||
|
||||
@@ -9,6 +9,11 @@ const conf = convict({
|
||||
default: '',
|
||||
env: 'S3_BUCKET'
|
||||
},
|
||||
gcs_bucket: {
|
||||
format: String,
|
||||
default: '',
|
||||
env: 'GCS_BUCKET'
|
||||
},
|
||||
redis_host: {
|
||||
format: String,
|
||||
default: 'localhost',
|
||||
|
||||
@@ -6,13 +6,6 @@ module.exports = async function(req, res) {
|
||||
const id = req.params.id;
|
||||
try {
|
||||
const meta = req.meta;
|
||||
const contentLength = await storage.length(id);
|
||||
res.writeHead(200, {
|
||||
'Content-Disposition': 'attachment',
|
||||
'Content-Type': 'application/octet-stream',
|
||||
'Content-Length': contentLength,
|
||||
'WWW-Authenticate': `send-v1 ${req.nonce}`
|
||||
});
|
||||
const file_stream = storage.get(id);
|
||||
let cancelled = false;
|
||||
|
||||
@@ -21,7 +14,7 @@ module.exports = async function(req, res) {
|
||||
file_stream.destroy();
|
||||
});
|
||||
|
||||
file_stream.on('end', async () => {
|
||||
file_stream.pipe(res).on('finish', async () => {
|
||||
if (cancelled) {
|
||||
return;
|
||||
}
|
||||
@@ -38,8 +31,6 @@ module.exports = async function(req, res) {
|
||||
log.info('StorageError:', id);
|
||||
}
|
||||
});
|
||||
|
||||
file_stream.pipe(res);
|
||||
} catch (e) {
|
||||
res.sendStatus(404);
|
||||
}
|
||||
|
||||
37
server/storage/gcs.js
Normal file
37
server/storage/gcs.js
Normal file
@@ -0,0 +1,37 @@
|
||||
const { Storage } = require('@google-cloud/storage');
|
||||
const storage = new Storage();
|
||||
|
||||
class GCSStorage {
|
||||
constructor(config, log) {
|
||||
this.bucket = storage.bucket(config.gcs_bucket);
|
||||
this.log = log;
|
||||
}
|
||||
|
||||
async length(id) {
|
||||
const data = await this.bucket.file(id).getMetadata();
|
||||
return data[0].size;
|
||||
}
|
||||
|
||||
getStream(id) {
|
||||
return this.bucket.file(id).createReadStream({ validation: false });
|
||||
}
|
||||
|
||||
set(id, file) {
|
||||
return new Promise((resolve, reject) => {
|
||||
file
|
||||
.pipe(this.bucket.file(id).createWriteStream())
|
||||
.on('error', reject)
|
||||
.on('finish', resolve);
|
||||
});
|
||||
}
|
||||
|
||||
del(id) {
|
||||
return this.bucket.file(id).delete();
|
||||
}
|
||||
|
||||
ping() {
|
||||
return this.bucket.exists();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = GCSStorage;
|
||||
@@ -5,7 +5,14 @@ const createRedisClient = require('./redis');
|
||||
|
||||
class DB {
|
||||
constructor(config) {
|
||||
const Storage = config.s3_bucket ? require('./s3') : require('./fs');
|
||||
let Storage = null;
|
||||
if (config.s3_bucket) {
|
||||
Storage = require('./s3');
|
||||
} else if (config.gcs_bucket) {
|
||||
Storage = require('./gcs');
|
||||
} else {
|
||||
Storage = require('./fs');
|
||||
}
|
||||
this.log = mozlog('send.storage');
|
||||
this.expireSeconds = config.expire_seconds;
|
||||
this.storage = new Storage(config, this.log);
|
||||
|
||||
@@ -23,7 +23,12 @@ function onConsole(msg) {
|
||||
|
||||
const server = app.listen(async function() {
|
||||
let exitCode = -1;
|
||||
const browser = await puppeteer.launch();
|
||||
const browser = await puppeteer.launch({
|
||||
args: [
|
||||
// puppeteer >= 1.10.0 crashes on Circle CI without this flag set
|
||||
'--no-sandbox'
|
||||
]
|
||||
});
|
||||
try {
|
||||
const page = await browser.newPage();
|
||||
page.on('console', onConsole);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
selenium==3.14.0
|
||||
flake8==3.5.0
|
||||
flake8-isort==2.5
|
||||
PyPOM==2.1.0
|
||||
pytest==3.8.0
|
||||
pytest-html==1.19.0
|
||||
pytest-selenium==1.14.0
|
||||
pytest-xdist==1.23.0
|
||||
selenium==3.141.0
|
||||
flake8==3.6.0
|
||||
flake8-isort==2.6.0
|
||||
PyPOM==2.2.0
|
||||
pytest==4.1.1
|
||||
pytest-html==1.20.0
|
||||
pytest-selenium==1.15.1
|
||||
pytest-xdist==1.26.0
|
||||
|
||||
Reference in New Issue
Block a user