Compare commits

...

479 Commits

Author SHA1 Message Date
timvisee
e4950f6c68 Bump version to 3.3.1 2020-10-21 18:10:51 +02:00
timvisee
9f2d248e8f Update dependencies 2020-10-21 18:04:10 +02:00
timvisee
5d1ede5f63 Fix password field not being inline with password checkbox 2020-10-21 17:51:19 +02:00
timvisee
47666c153a Update dependencies to mitigate some vulnerabilities reported by npm 2020-10-21 17:23:04 +02:00
timvisee
cadf039c55 Fix release tag badge link in README 2020-10-20 20:56:23 +02:00
timvisee
dbe374bdc6 Bump version to 3.3.0 2020-10-18 15:57:36 +02:00
timvisee
48ab1cdd4e Add latest release version badge to README 2020-10-18 15:55:37 +02:00
timvisee
54150702da Update dependencies 2020-10-18 15:51:58 +02:00
Tim Visée
981f86946b Merge branch 'password-preview' into 'master'
Add password preview

See merge request timvisee/send!6
2020-10-18 13:50:17 +00:00
George Raptis
b5865f00e9 toggle preview image src instead of havingtwo images
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:42:32 +02:00
George Raptis
7797f485f2 make color dimmer
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:42:22 +02:00
George Raptis
db169cb9f0 Add password preview
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:42:14 +02:00
Tim Visée
f999c4c44f Merge branch 'favicon-progress' into 'master'
Show upload progress in favicon

See merge request timvisee/send!5
2020-10-18 13:38:37 +00:00
Ashesh Vidyut
e9b50b7682 query selector fix + revert favicon in case of cancel and complete
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:21 +02:00
Ashesh Vidyut
a3e8646ea7 constants at the top
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:18 +02:00
Ashesh Vidyut
a6a3cae5e9 pr comment changes and progress line starts from top instead of right
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:15 +02:00
Ashesh Vidyut
8d80ba1f69 fix var name
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:13 +02:00
Ashesh Vidyut
e5f76a7b1f converted division to multiplication and calculating radius inside func
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:10 +02:00
Ashesh Vidyut
acf82a4e3e varaible name changed to more meaningful
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:07 +02:00
Ashesh Vidyut
0acdf3a720 changed 100/100 to 1
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:04 +02:00
Ashesh Vidyut
305dd2f5ef color changed to #0090ed
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:02 +02:00
Ashesh Vidyut
e53571e219 removed unwanted comment
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:00 +02:00
Ashesh Vidyut
0eda8d2082 removed unsed code
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:30:57 +02:00
Ashesh Vidyut
1cd4adfc2a made variable name more relevant
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:30:54 +02:00
Ashesh Vidyut
0460bd2e97 favicon progress bar
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:30:43 +02:00
okyanusoz
60146541f2 Fixed a typo in encryption documentation
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:20:34 +02:00
timvisee
79d314146b Improve README fork header 2020-10-16 18:54:19 +02:00
timvisee
72d12c3d80 Add fork description and goals to top of README 2020-10-16 18:49:33 +02:00
timvisee
1469464c43 Bump version to 3.2.1 2020-10-16 18:18:19 +02:00
Danny Coates
7cdef4bbfc added qr code to copyDialog
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 18:16:14 +02:00
timvisee
24aa1f2e17 Add badges to README 2020-10-16 16:42:40 +02:00
timvisee
7a4a4fc849 Bump version to 3.2.0 2020-10-16 16:37:39 +02:00
timvisee
97be1737cb Remove siteFeedback key as removed in Mozilla's commits 2020-10-16 16:36:00 +02:00
Tim Visée
ba33e022b0 Merge branch 'apply-mozilla-patches' into 'master'
Apply Mozilla patches

See merge request timvisee/send!3
2020-10-16 14:17:59 +00:00
timvisee
0d6b3731ef Update dependencies 2020-10-16 16:14:01 +02:00
timvisee
0be4a65904 Merge branch 'master' into apply-mozilla-patches 2020-10-16 16:11:57 +02:00
Tim Visée
54c182ab0d Merge branch '2-fix-puppeteer-timeouts-on-ci' into 'master'
Resolve "Fix puppeteer timeouts on CI"

Closes #2

See merge request timvisee/send!4
2020-10-16 14:10:56 +00:00
timvisee
b2e9907551 Increase default puppeteer timeout to 60 seconds
Fixes https://gitlab.com/timvisee/send/-/issues/2
2020-10-16 16:05:51 +02:00
Victor Ibragimov
3b4a4d82e8 Pontoon: Update Russian (ru) localization of Firefox Send
Co-authored-by: Victor Ibragimov <victor.ibragimov@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:53:02 +02:00
వీవెన్
5747f55876 Pontoon: Update Telugu (te) localization of Firefox Send
Co-authored-by: వీవెన్ <veeven@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:59 +02:00
robbp
636a239e86 Pontoon: Update Romanian (ro) localization of Firefox Send
Co-authored-by: robbp <robbpaun@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:56 +02:00
Jim Spentzos
f9a1583078 Pontoon: Update Greek (el) localization of Firefox Send
Co-authored-by: Jim Spentzos <jimspentzos2000@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:52 +02:00
Mark Heijl
0dfbe3566a Pontoon: Update Dutch (nl) localization of Firefox Send
Co-authored-by: Mark Heijl <markh@babelzilla.org>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:48 +02:00
వీవెన్
98b84ba05f Pontoon: Update Telugu (te) localization of Firefox Send
Co-authored-by: వీవెన్ <veeven@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:45 +02:00
Abdulrasheed Idris
4ad4a65924 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: Abdulrasheed Idris <Abdulrash6211@gmail.com>
Co-authored-by: biobell2000 <biobell2000@gmail.com>
Co-authored-by: Umegbewe <nwebedujunior55@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:41 +02:00
Adaobi
6e07ecf643 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: Adaobi <ada_okeke60@ymail.com>
Co-authored-by: Umegbewe <nwebedujunior55@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:37 +02:00
Danny Coates
a39cfaf3d3 remove signin modal from privacy page. fixes #1508
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:34 +02:00
Kim YoungCheon
97e3d78ba8 Pontoon: Update Korean (ko) localization of Firefox Send
Co-authored-by: Kim YoungCheon <circcc@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:31 +02:00
Danny Coates
28c48f51d1 set downloadMetadata.status to 404 on unfound downloads. fixes #1501
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:28 +02:00
Danny Coates
239fba452a fixed dark-theme password input style. fixes #1504
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:25 +02:00
Danny Coates
3631bc8f39 restrict "share" to mobile, fixes #1505
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:22 +02:00
Danny Coates
189f4cfb9b fix main section height. fixes #1499
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:18 +02:00
Abelardo Ayala Rodríguez
deb2d41de8 Pontoon: Update Guarani (gn) localization of Firefox Send
Co-authored-by: Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:14 +02:00
Danny Coates
ab53f9cf3e give 404 and error pages the loggedin/ok treatment
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:12 +02:00
Danny Coates
facb61a9b5 updated @google-cloud/storage
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:09 +02:00
Danny Coates
d8ac413064 handle unknown errors in getMetadata
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:06 +02:00
Danny Coates
e0f51c7fde exlude puppeteer from docker build
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:02 +02:00
Danny Coates
c44c4ba41c support edge 18 maybe
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:59 +02:00
Danny Coates
4e9625ef36 added downloadConfirm string to noStream page
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:56 +02:00
Danny Coates
4413fc75a3 show "OK" button on complete page when logged in instead of "Try Firefox Send"
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:52 +02:00
Danny Coates
d13fda1419 🤷
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:48 +02:00
Gery Escalier
7f7ba0e33f Pontoon: Update Spanish (Spain) (es-ES) localization of Firefox Send
Co-authored-by: Gery Escalier <geryescalier@yahoo.com>
Co-authored-by: jlG <jlg.l10n.es@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:45 +02:00
timvisee
86c5553f58 Update package-lock.json 2020-10-16 15:51:43 +02:00
jlG
7e173ec23d Pontoon: Update Spanish (Spain) (es-ES) localization of Firefox Send
Co-authored-by: Paulina Rodriguez <pauli.rodriguez.c@gmail.com>
Co-authored-by: Gery Escalier <geryescalier@yahoo.com>
Co-authored-by: jlG <jlg.l10n.es@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:39 +02:00
వీవెన్
3ae6f9bd5a Pontoon: Update Telugu (te) localization of Firefox Send
Co-authored-by: వీవెన్ <veeven@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:33 +02:00
Danny Coates
b5ef1785ab replaced fxa-geodb with load balancer header
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:28 +02:00
Abelardo Ayala Rodríguez
4b1b7cb821 Pontoon: Update Guarani (gn) localization of Firefox Send
Co-authored-by: Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:07 +02:00
ZiriSut
b0b75f5daa Pontoon: Update Kabyle (kab) localization of Firefox Send
Co-authored-by: ZiriSut <rgebbid@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:50:56 +02:00
Enol
e2562aec17 Pontoon: Update Asturian (ast) localization of Firefox Send
Co-authored-by: Enol <enolp@softastur.org>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:50:46 +02:00
Danny Coates
f64e772145 added hmac auth to report route
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:50:36 +02:00
Enol
bc0ccc8e5d Pontoon: Update Asturian (ast) localization of Firefox Send
Co-authored-by: Enol <enolp@softastur.org>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:48:02 +02:00
Danny Coates
e909a3bae8 refactored storage, style tweaks
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:47:56 +02:00
Danny Coates
abc58518ea minor style tweaks and refresh token fixes
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:47:46 +02:00
Danny Coates
4f273eca03 added oauth refresh token support
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:46:24 +02:00
timvisee
b15c017dcd Bump version to 3.1.1 2020-10-15 21:02:25 +02:00
timvisee
bfaac8f66d Update dependencies 2020-10-15 21:00:06 +02:00
timvisee
4ffc65274b Merge branch 'dependabot/npm_and_yarn/lodash-4.17.20' 2020-10-15 20:57:47 +02:00
timvisee
1d492cd0df Merge branch 'master' into dependabot/npm_and_yarn/lodash-4.17.20 2020-10-15 20:57:09 +02:00
timvisee
b4594c5280 Merge branch 'dependabot/npm_and_yarn/elliptic-6.5.3' 2020-10-15 20:54:44 +02:00
dependabot[bot]
aa47df79f9 Bump lodash from 4.17.15 to 4.17.20
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.20.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.20)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-15 18:51:55 +00:00
dependabot[bot]
7533ab1930 Bump elliptic from 6.5.2 to 6.5.3
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.2...v6.5.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-15 18:49:21 +00:00
timvisee
f10b2d5064 Bump version to 3.1.0 2020-10-15 20:06:52 +02:00
timvisee
7463aeccf5 Update package.json configuration with new fork details 2020-10-15 20:05:07 +02:00
timvisee
2d35cd33c9 Add Docker instructions to use new registry for production images 2020-10-15 20:03:15 +02:00
timvisee
beb194f3e0 Update Docker documentation to use our image registry 2020-10-15 20:00:36 +02:00
timvisee
175040acec Release Docker image for each version tag 2020-10-15 19:54:03 +02:00
timvisee
9e5da3270c Do not run before_script in Docker release job on GitLab CI 2020-10-15 19:24:44 +02:00
timvisee
c6cab13e6a Publish Docker image for each master commit on local registry 2020-10-15 19:16:49 +02:00
timvisee
dd9d6c1660 Do not cache node modules on GitLab CI 2020-10-15 19:01:37 +02:00
Tim Visée
0dd4f8d2cc Merge branch 'remove-mozilla-branding' into 'master'
Remove Mozilla branding

See merge request timvisee/send!2
2020-10-15 17:00:32 +00:00
timvisee
f035132b95 Add based on Mozilla's Firefox Send notice in README 2020-10-15 18:54:57 +02:00
timvisee
561ed3994e Remove Firefox branding from app name in documentation and other files 2020-10-15 18:52:41 +02:00
timvisee
e77d2b3722 Remove Firefox branding from app name in locale files 2020-10-15 18:49:59 +02:00
timvisee
45d5f41731 Remove Firefox branding from app name in front-end 2020-10-15 18:48:54 +02:00
timvisee
505eb8c585 Remove Firefox branding from wordmark logo 2020-10-15 18:26:07 +02:00
timvisee
ce04f162a4 Remove promo banner 2020-10-15 18:26:07 +02:00
timvisee
47cf99140a Update footer links, remove Mozilla links, update source URL 2020-10-15 18:26:06 +02:00
timvisee
c6fc1483f6 Remove Mozilla logo from footer 2020-10-15 18:25:52 +02:00
timvisee
2c8ea3ecc8 Enable node module caching on GitLab CI 2020-10-15 17:34:08 +02:00
Tim Visée
24172a4665 Merge branch 'gitlab-ci' into 'master'
Add GitLab CI configuration

See merge request timvisee/send!1
2020-10-15 15:31:39 +00:00
timvisee
daa5a3c5f1 Add GitLab CI configuration with single test job 2020-10-15 17:23:17 +02:00
timvisee
806ebbe160 Update dependencies 2020-10-15 16:42:39 +02:00
Abelardo Ayala Rodríguez
3e9be67641 Pontoon: Update Guarani (gn) localization of Firefox Send
Co-authored-by: Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2020-07-16 18:41:42 +00:00
వీవెన్
402c8351bd Pontoon: Update Telugu (te) localization of Firefox Send
Co-authored-by: వీవెన్ <veeven@gmail.com>
2020-07-15 18:54:42 +00:00
Danny Coates
ccbcb69666 Merge pull request #1434 from MichaelPeter-Shockoe/master
modify connect-src of Content Security Policy to include dynamic wss URL based on configured base URL
2020-07-09 19:37:02 -07:00
Danny Coates
e6ff9e486b Merge pull request #1063 from hbakhtiyor/patch-1
Convert ContentLength of storage to number
2020-07-09 19:34:33 -07:00
Danny Coates
17afd6ad58 Merge pull request #1416 from factorysh/s3_endpoint
Choose your endpoint.
2020-07-09 19:33:21 -07:00
Danny Coates
7dd1fcca9b Merge pull request #1480 from jackyzy823/fxa-csp
Handle Content-Security-Policy for self hosting FxA
2020-07-09 19:31:06 -07:00
Danny Coates
d5319f4fcf Merge pull request #1471 from edibopp/patch-1
Mention updated Node version 12.x in README
2020-07-09 19:20:04 -07:00
Danny Coates
a3d880fc4f Merge pull request #1475 from 2br-2b/patch-1
Fixed a few minor formatting issues
2020-07-09 19:19:22 -07:00
Danny Coates
8a9a823842 Merge pull request #1486 from rlr/fix-vpn-url
Update URL for the VPN
2020-07-09 19:17:52 -07:00
Danny Coates
3195ee7d16 Merge pull request #1465 from minvs1/redis-retry-configs
Allow to set custom retry parameters
2020-07-09 19:17:28 -07:00
Francesco Lodolo
f565954a54 Pontoon: Update Interlingua (ia) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:57:32 +00:00
Francesco Lodolo
4abfd7dd6e Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:57:28 +00:00
Francesco Lodolo
e930275042 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:57:25 +00:00
Francesco Lodolo
960e29f800 Pontoon: Update Asturian (ast) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:57:21 +00:00
Francesco Lodolo
7e637ae453 Pontoon: Update Aragonese (an) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:57:18 +00:00
Pontoon
cca6b470b0 Pontoon: Update Tagalog (tl) localization of Firefox Send 2020-07-09 13:52:21 +00:00
Francesco Lodolo
829d10f77f Pontoon: Update Serbian (sr) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:52:17 +00:00
Francesco Lodolo
b7d7bb885d Pontoon: Update Portuguese (Portugal) (pt-PT) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:52:13 +00:00
Francesco Lodolo
31e2e00b24 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:52:10 +00:00
Francesco Lodolo
0ab2ec6a5c Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:52:06 +00:00
Francesco Lodolo
369b0b2614 Pontoon: Update Tagalog (tl) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:45:29 +00:00
Abelardo Ayala Rodríguez
b064152955 Pontoon: Update Guarani (gn) localization of Firefox Send
Co-authored-by: Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2020-07-08 17:50:17 +00:00
Abelardo Ayala Rodríguez
438b36dd28 Pontoon: Update Guarani (gn) localization of Firefox Send
Co-authored-by: Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2020-07-08 16:13:57 +00:00
Abelardo Ayala Rodríguez
a429b89322 Pontoon: Update Guarani (gn) localization of Firefox Send
Co-authored-by: Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2020-06-30 16:34:13 +00:00
Marcelo Ghelman
bd0117628f Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Co-authored-by: Marcelo Ghelman <marcelo.ghelman@gmail.com>
2020-06-27 23:07:05 +00:00
Marcelo Ghelman
c4299d05a1 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Co-authored-by: Marcelo Ghelman <marcelo.ghelman@gmail.com>
2020-06-27 22:53:15 +00:00
ali.malek.71
e3027d2c59 Pontoon: Update Persian (fa) localization of Firefox Send
Co-authored-by: ali.malek.71 <ali.malek.71@gmail.com>
2020-06-25 14:23:20 +00:00
Ricky Rosario
be055ff7ba Update URL for the VPN 2020-06-24 19:29:30 -04:00
jnunezf96
5a53eb85fb Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-21 05:29:25 +00:00
jnunezf96
c249f26b4a Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-21 05:14:44 +00:00
jnunezf96
b229547057 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-21 05:06:59 +00:00
jnunezf96
334f225f3d Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-21 04:53:56 +00:00
Selyan Slimane Amiri
e8f3379ddb Pontoon: Update Kabyle (kab) localization of Firefox Send
Co-authored-by: Selyan Slimane Amiri <selyan.kab@gmail.com>
2020-06-20 17:13:32 +00:00
zankomhamad
3dd3fa9808 Pontoon: Update Central Kurdish (ckb) localization of Firefox Send
Co-authored-by: Jwtiyar <jwtiyar@gmail.com>
Co-authored-by: zankomhamad <zankomhamad@outlook.com>
2020-06-19 09:14:38 +00:00
Frederick Villaluna
9459e4bca8 Pontoon: Update Tagalog (tl) localization of Firefox Send
Co-authored-by: Frederick Villaluna <fv_comscie@yahoo.com>
2020-06-16 11:53:07 +00:00
jnunezf96
888e99841e Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-16 07:25:18 +00:00
biobell2000
949dcce5d7 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-15 11:25:17 +00:00
biobell2000
0c47991de6 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: Abdulrasheed Idris <Abdulrash6211@gmail.com>
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-15 11:10:30 +00:00
biobell2000
63b96310d3 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-15 10:57:41 +00:00
biobell2000
da37b9d96f Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-15 10:41:46 +00:00
biobell2000
931cfd108d Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-15 10:32:08 +00:00
Garysqo
cc7ea99ca9 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
Co-authored-by: Garysqo <garyspleen@gmail.com>
2020-06-15 06:12:51 +00:00
jnunezf96
996a7e4184 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 06:05:33 +00:00
jnunezf96
e5627698c4 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 05:42:41 +00:00
jnunezf96
1fdccd4dde Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 05:33:38 +00:00
jnunezf96
b8c26aee06 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 04:23:55 +00:00
jnunezf96
b7d65517b3 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 04:05:57 +00:00
jnunezf96
4f5b804b5d Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 03:35:11 +00:00
jnunezf96
a74491af40 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 03:15:25 +00:00
jnunezf96
09955a0231 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 03:07:08 +00:00
jnunezf96
301f6e87f6 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 02:52:39 +00:00
jnunezf96
8c0f1fbe3b Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 02:06:49 +00:00
jnunezf96
b81535c820 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 01:54:38 +00:00
jnunezf96
f5f0a430eb Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 01:44:55 +00:00
jnunezf96
ca55dedad4 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 01:35:53 +00:00
jnunezf96
76a3d6fc03 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 00:54:04 +00:00
jnunezf96
f9b5cadf17 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 00:43:32 +00:00
jnunezf96
458ef649f3 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 00:35:40 +00:00
jnunezf96
de063f75e5 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 00:23:14 +00:00
jackyzy823
e2876b119d add configs to handle content-security-policy correctly for custom fxa urls 2020-06-11 21:57:48 +08:00
CLASSIFIED
25d41073b7 Fixed a few minor formatting issues
Added a few commas, deleted an extra period
2020-06-08 21:47:39 -05:00
ada_okeke60
5fb9e395d5 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
2020-06-09 00:15:04 +00:00
ada_okeke60
c73ddcd464 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
2020-06-09 00:06:19 +00:00
biobell2000
3a98c295e0 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-08 10:44:46 +00:00
biobell2000
899f921da3 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-08 10:33:55 +00:00
biobell2000
97b9d24134 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-08 10:25:09 +00:00
biobell2000
ab9dbecbd6 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-08 10:16:31 +00:00
biobell2000
0cf77d94cb Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-08 10:07:24 +00:00
biobell2000
bfe3a4067d Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-07 17:06:23 +00:00
ada_okeke60
0226483c30 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
Co-authored-by: Umegbewe <nwebedujunior55@gmail.com>
2020-06-07 10:15:04 +00:00
Sara Todaro
a6dbb9a58f Pontoon: Update Italian (it) localization of Firefox Send
Co-authored-by: Sara Todaro <sara.todaro@mozillaitalia.org>
2020-06-06 09:33:44 +00:00
Mozilla Pontoon
c9e691bdc2 Pontoon: Update Italian (it) localization of Firefox Send 2020-06-06 07:57:15 +00:00
biobell2000
e88bfb597c Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-06 06:05:57 +00:00
ada_okeke60
190ded1ba7 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
2020-06-05 17:44:48 +00:00
Ayobamiadebayo375
7b7f1f3223 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: babalolaoreoluwa4 <babalolaoreoluwa4@gmail.com>
Co-authored-by: Ayobamiadebayo375 <Ayobamiadebayo375@gmail.com>
2020-06-05 16:23:29 +00:00
ada_okeke60
1f4473c278 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
Co-authored-by: Ebukaabazie <Ebukaabazie@gmail.com>
Co-authored-by: sugabelly <sugabelly@gmail.com>
2020-06-05 10:35:15 +00:00
ada_okeke60
27e86640be Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
Co-authored-by: Umegbewe <nwebedujunior55@gmail.com>
Co-authored-by: sugabelly <sugabelly@gmail.com>
2020-06-05 10:22:46 +00:00
Gisela Solis
74d151d12c Pontoon: Update Pai pai (pai) localization of Firefox Send
Co-authored-by: Gisela Solis <gisela.solis.roman@gmail.com>
2020-06-04 02:23:35 +00:00
Abdulrash6211
a370f01908 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: Abdulrash6211 <Abdulrash6211@gmail.com>
Co-authored-by: Umegbewe <nwebedujunior55@gmail.com>
2020-06-03 23:53:50 +00:00
Umegbewe
3078e1f90c Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: Umegbewe <nwebedujunior55@gmail.com>
2020-06-03 23:44:27 +00:00
John Zonunmawi Vankal
d90830b285 Pontoon: Update Mizo (lus) localization of Firefox Send
Co-authored-by: John Zonunmawi Vankal <zonunmawia@gmail.com>
2020-06-03 18:43:33 +00:00
Umegbewe
74288cdba6 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
Co-authored-by: Umegbewe <nwebedujunior55@gmail.com>
2020-06-03 12:14:46 +00:00
Ayobamiadebayo375
a37e59cdb3 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: Ayobamiadebayo375 <Ayobamiadebayo375@gmail.com>
2020-06-03 11:11:24 +00:00
ada_okeke60
ee5f63e11c Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
2020-06-03 10:45:14 +00:00
ada_okeke60
b02f2768d3 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
2020-06-03 10:23:56 +00:00
Jwtiyar
da3a7c1e98 Pontoon: Update Central Kurdish (ckb) localization of Firefox Send
Co-authored-by: Jwtiyar <jwtiyar@gmail.com>
2020-06-02 19:35:42 +00:00
Jwtiyar
8180406467 Pontoon: Update Central Kurdish (ckb) localization of Firefox Send
Co-authored-by: Jwtiyar <jwtiyar@gmail.com>
2020-06-02 19:25:53 +00:00
Jwtiyar
be595de148 Pontoon: Update Central Kurdish (ckb) localization of Firefox Send
Co-authored-by: Jwtiyar <jwtiyar@gmail.com>
2020-06-02 19:14:50 +00:00
sugabelly
395b6518ee Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: sugabelly <sugabelly@gmail.com>
2020-06-02 18:37:06 +00:00
sugabelly
49243506cb Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: sugabelly <sugabelly@gmail.com>
2020-06-02 18:23:38 +00:00
sugabelly
69948f4a4a Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: sugabelly <sugabelly@gmail.com>
2020-06-02 18:16:25 +00:00
sugabelly
85aaeb9892 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: sugabelly <sugabelly@gmail.com>
2020-06-02 17:53:02 +00:00
Umegbewe
95098d5828 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: Umegbewe <nwebedujunior55@gmail.com>
2020-06-02 17:45:03 +00:00
Victor Davila
eb4aa04f7e Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Co-authored-by: Victor Davila <victorhdd@gmail.com>
2020-06-01 19:34:06 +00:00
Victor Davila
5afb940718 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Co-authored-by: Victor Davila <victorhdd@gmail.com>
2020-06-01 18:53:34 +00:00
Gisela Solis
b6e956e086 Pontoon: Update Ixil (ixl) localization of Firefox Send
Co-authored-by: Gisela Solis <gisela.solis.roman@gmail.com>
2020-06-01 00:53:57 +00:00
dskmori
681ca8197c Pontoon: Update Japanese (ja) localization of Firefox Send
Co-authored-by: dskmori <ghoti.fish.dsk@gmail.com>
2020-05-30 12:21:43 +00:00
ali.malek.71
21e312dac3 Pontoon: Update Persian (fa) localization of Firefox Send
Co-authored-by: ali.malek.71 <ali.malek.71@gmail.com>
2020-05-27 04:13:04 +00:00
Eduard Bopp
5a02e32aec Mention updated Node version 12.x in README
Just passing by I noticed that it seems like it was overlooked to update the README in 89469e3c9c
2020-05-15 15:53:56 +02:00
fcortess
dfe3631bcd Pontoon: Update Spanish (Chile) (es-CL) localization of Firefox Send
Co-authored-by: fcortess <fcortess@pm.me>
2020-05-12 00:05:24 +00:00
Marcelo Ghelman
b7c53bf8e2 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Co-authored-by: Marcelo Ghelman <marcelo.ghelman@gmail.com>
2020-05-11 16:04:31 +00:00
Marcelo Ghelman
9bdf9c4416 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Co-authored-by: Marcelo Ghelman <marcelo.ghelman@gmail.com>
2020-05-11 15:51:20 +00:00
Gisela Solis
7116c1c06e Pontoon: Update Ixil (ixl) localization of Firefox Send
Co-authored-by: Gisela Solis <gisela.solis.roman@gmail.com>
2020-05-04 15:13:21 +00:00
Gisela Solis
f210394d84 Pontoon: Update Ixil (ixl) localization of Firefox Send
Co-authored-by: Gisela Solis <gisela.solis.roman@gmail.com>
2020-04-30 15:41:56 +00:00
Gisela Solis
0679a29cdc Pontoon: Update Ixil (ixl) localization of Firefox Send
Co-authored-by: Gisela Solis <gisela.solis.roman@gmail.com>
2020-04-30 15:32:10 +00:00
Danny Coates
7a9a75794e v3.0.22 2020-04-29 21:40:53 -07:00
Danny Coates
89469e3c9c updated node to 12 2020-04-29 17:38:55 -07:00
Danny Coates
01110b4ec1 Merge pull request #1467 from flodolo/locales_20200423
Add new locales to prod (azz, fa, hus, hy-AM)
2020-04-29 16:53:52 -07:00
Milo
b54cd58602 Pontoon: Update Croatian (hr) localization of Firefox Send
Co-authored-by: Milo <mail@milotype.de>
2020-04-26 11:22:26 +00:00
Quentí
6cc00be4b5 Pontoon: Update Occitan (oc) localization of Firefox Send
Co-authored-by: Quentí <quentinantonin@free.fr>
2020-04-25 09:53:06 +00:00
ali.malek.71
b40594f0ee Pontoon: Update Persian (fa) localization of Firefox Send
Co-authored-by: ali.malek.71 <ali.malek.71@gmail.com>
Co-authored-by: abtin <abtin@riseup.net>
2020-04-23 17:12:52 +00:00
Francesco Lodolo [:flod]
01f4ceca23 Add new locales to prod (azz, fa, hus, hy-AM) 2020-04-23 07:33:37 +02:00
minvs1
7aead375d8 Allow to set custom retry parameters 2020-04-21 23:30:39 +03:00
Fjoerfoks
471c9e8559 Pontoon: Update Frisian (fy-NL) localization of Firefox Send
Co-authored-by: Fjoerfoks <fryskefirefox@gmail.com>
2020-04-21 12:23:03 +00:00
Manuela Silva
f45960263f Pontoon: Update Portuguese (Portugal) (pt-PT) localization of Firefox Send
Co-authored-by: Manuela Silva <manuelarodsilva@gmail.com>
2020-04-05 21:14:41 +00:00
Danny Coates
0ee9cc69a8 Merge pull request #1455 from mozilla/update-promo-to-vpn
update promo to be for the vpn
2020-03-31 13:12:14 -07:00
johngruen
2a3db78f97 update promo to be for the vpn 2020-03-31 22:03:08 +02:00
Muhend Belkacem
e5f9265979 Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Muhend Belkacem <taqbaylitassa@gmail.com>
2020-03-29 09:53:25 +00:00
bulut
00416b5063 Pontoon: Update Turkish (tr) localization of Firefox Send
Localization authors:
- bulut <bulut@tokmak.org>
2020-03-27 21:43:57 +00:00
Mathieu Lecarme
5a70362b79 Fix: AWS.config is a stub. 2020-03-23 15:48:07 +01:00
Mathieu Lecarme
97deb78de6 Use the config object. 2020-03-23 15:48:07 +01:00
Mathieu Lecarme
2d22573588 Choose your endpoint.
See https://github.com/mozilla/send/issues/1239
2020-03-23 15:48:07 +01:00
Enol
deec85be14 Pontoon: Update Asturian (ast) localization of Firefox Send
Localization authors:
- Enol <enolp@softastur.org>
2020-03-21 14:23:33 +00:00
abtin
6342203256 Pontoon: Update Persian (fa) localization of Firefox Send
Localization authors:
- ali.malek.71 <ali.malek.71@gmail.com>
- abtin <abtin@riseup.net>
2020-03-15 20:23:35 +00:00
abtin
949fbb68c3 Pontoon: Update Persian (fa) localization of Firefox Send
Localization authors:
- abtin <abtin@riseup.net>
2020-03-15 20:12:56 +00:00
abtin
222c21ddf9 Pontoon: Update Persian (fa) localization of Firefox Send
Localization authors:
- abtin <abtin@riseup.net>
2020-03-15 19:33:08 +00:00
abtin
ae20e55c50 Pontoon: Update Persian (fa) localization of Firefox Send
Localization authors:
- abtin <abtin@riseup.net>
2020-03-15 19:23:23 +00:00
Milo
765da48b0c Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
2020-03-07 16:13:48 +00:00
Milo
3769a17300 Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
2020-03-07 16:04:11 +00:00
Milo
cad853b196 Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
2020-03-07 15:52:28 +00:00
Milo
804128b7c8 Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
2020-03-07 15:41:31 +00:00
Milo
e136b9dc63 Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
2020-03-07 15:22:01 +00:00
Milo
b4ffb8cf01 Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
2020-03-07 15:04:40 +00:00
Milo
e24c1103b3 Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
2020-03-07 14:52:59 +00:00
Bald3mar
07202e684a Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2020-03-06 22:04:23 +00:00
manuel padilla sanchez
ca774258d6 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-03-03 18:33:07 +00:00
manuel padilla sanchez
93d48c5787 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-03-03 18:23:04 +00:00
passionforlife
aa65f20afa Pontoon: Update Chinese (China) (zh-CN) localization of Firefox Send
Localization authors:
- passionforlife <eloli@foxmail.com>
2020-02-29 00:52:29 +00:00
Milo
f3caa9841c Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
- Mikeyy <mihovil@miho.im>
2020-02-28 18:41:32 +00:00
Mozilla Pontoon
4c6663948b Pontoon: Update Croatian (hr) localization of Firefox Send 2020-02-26 21:33:38 +00:00
manuel padilla sanchez
c5a4f920c4 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 16:13:10 +00:00
manuel padilla sanchez
c6cbb727da Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 16:03:40 +00:00
manuel padilla sanchez
830337b403 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 15:52:34 +00:00
manuel padilla sanchez
c11f8a059e Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 15:43:28 +00:00
manuel padilla sanchez
6fd1ed18a1 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 15:32:04 +00:00
manuel padilla sanchez
0338382fdf Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 15:22:42 +00:00
manuel padilla sanchez
aac2b8e6f4 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 09:22:11 +00:00
manuel padilla sanchez
40a111a2e9 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 09:12:13 +00:00
manuel padilla sanchez
cbb0b86712 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 09:04:37 +00:00
manuel padilla sanchez
51465a2797 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 08:52:05 +00:00
xcffl
fa99c75313 Pontoon: Update Chinese (China) (zh-CN) localization of Firefox Send
Localization authors:
- xcffl <xcffl@outlook.com>
2020-02-22 08:23:32 +00:00
manuel padilla sanchez
0b4bd40b32 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-18 20:06:38 +00:00
manuel padilla sanchez
c5b2dc826b Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-18 19:53:35 +00:00
manuel padilla sanchez
1f7a58ea41 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-18 19:43:05 +00:00
manuel padilla sanchez
ca6e2963e3 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-18 19:33:26 +00:00
manuel padilla sanchez
9f019f100d Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-18 19:14:53 +00:00
manuel padilla sanchez
5e91a72cd9 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-18 19:05:52 +00:00
manuel padilla sanchez
01d7383ae0 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-18 18:53:33 +00:00
manuel padilla sanchez
74234fa03c Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-18 18:43:16 +00:00
manuel padilla sanchez
49b24294b1 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-17 19:22:28 +00:00
manuel padilla sanchez
5feb07a251 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-17 19:12:50 +00:00
manuel padilla sanchez
28b69c4f14 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-17 19:04:24 +00:00
manuel padilla sanchez
19e5fd269e Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-17 18:51:47 +00:00
manuel padilla sanchez
52d708bf3f Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 14:04:34 +00:00
manuel padilla sanchez
bb66a1bfa5 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 13:33:18 +00:00
manuel padilla sanchez
d31b1ebfcd Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 13:23:20 +00:00
manuel padilla sanchez
4385d29aa0 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 13:13:44 +00:00
manuel padilla sanchez
111e1d5ed3 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 13:05:13 +00:00
manuel padilla sanchez
27d48f2ec3 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 11:41:09 +00:00
manuel padilla sanchez
1a6ddf7e75 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 11:33:05 +00:00
manuel padilla sanchez
cd8d01db29 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 11:12:26 +00:00
manuel padilla sanchez
dc8f56bc57 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 11:05:09 +00:00
manuel padilla sanchez
efb04397f7 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 10:52:59 +00:00
manuel padilla sanchez
19b34e8d39 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 10:41:38 +00:00
manuel padilla sanchez
b7c7e0ef27 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 10:33:50 +00:00
manuel padilla sanchez
b02c5ed4a9 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 10:13:55 +00:00
manuel padilla sanchez
59fb485ba6 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 10:05:08 +00:00
manuel padilla sanchez
71b22458ba Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 09:52:38 +00:00
manuel padilla sanchez
ecb9391439 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 09:32:57 +00:00
manuel padilla sanchez
aaf341bd81 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 09:23:44 +00:00
manuel padilla sanchez
35ef24a40f Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 07:51:53 +00:00
manuel padilla sanchez
3973f0552c Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-15 14:14:07 +00:00
manuel padilla sanchez
767cc166b1 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-15 14:04:04 +00:00
Hrant
f24ad20ffe Pontoon: Update Armenian (hy-AM) localization of Firefox Send
Localization authors:
- Hrant <hrant.mozilla@gmail.com>
2020-02-14 18:04:13 +00:00
Hrant
a1f915806a Pontoon: Update Armenian (hy-AM) localization of Firefox Send
Localization authors:
- Hrant <hrant.mozilla@gmail.com>
2020-02-14 17:51:53 +00:00
Hrant
669212a9b7 Pontoon: Update Armenian (hy-AM) localization of Firefox Send
Localization authors:
- Hrant <hrant.mozilla@gmail.com>
2020-02-14 17:42:24 +00:00
Kim YoungCheon
59f6e51636 Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Kim YoungCheon <circcc@gmail.com>
2020-01-31 23:34:09 +00:00
Kim YoungCheon
2515ba274d Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Kim YoungCheon <circcc@gmail.com>
2020-01-31 23:22:01 +00:00
Kim YoungCheon
6c2fbfe6ff Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Kim YoungCheon <circcc@gmail.com>
2020-01-31 23:13:59 +00:00
Kim YoungCheon
26fdb271dd Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Kim YoungCheon <circcc@gmail.com>
2020-01-31 23:05:53 +00:00
Mikeyy
4504c5cd74 Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
- Mikeyy <mihovil@miho.im>
2020-01-29 14:29:19 +00:00
Milo
2746556dfa Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
2020-01-29 14:12:58 +00:00
Michael Peter
5ff6266a5e modify connect-src of Content Security Policy to include dynamic wss URL based on configured base URL 2020-01-17 17:47:09 -05:00
Quentí
e57fc1c2d8 Pontoon: Update Occitan (oc) localization of Firefox Send
Localization authors:
- Quentí <quentinantonin@free.fr>
2020-01-17 12:12:36 +00:00
Danny Coates
097d3c8377 make geoip lookup optional 2020-01-11 14:06:17 -08:00
Luis Flores Martínez
43c728d5d4 Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Luis Flores Martínez <lufom90@gmail.com>
2020-01-07 17:12:42 +00:00
Luis Flores Martínez
3dffb8da15 Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Luis Flores Martínez <lufom90@gmail.com>
2020-01-07 16:52:21 +00:00
Luis Flores Martínez
c49dbd6d6d Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Luis Flores Martínez <lufom90@gmail.com>
2020-01-07 16:32:17 +00:00
Luis Flores Martínez
356112e8cc Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Luis Flores Martínez <lufom90@gmail.com>
2020-01-07 16:13:19 +00:00
Luis Flores Martínez
ad0d862d92 Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Luis Flores Martínez <lufom90@gmail.com>
2020-01-07 03:33:08 +00:00
Luis Flores Martínez
2ca007af1a Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Luis Flores Martínez <lufom90@gmail.com>
2020-01-07 03:12:30 +00:00
Misael Hernández
0a42c887d2 Pontoon: Update Triqui (trs) localization of Firefox Send
Localization authors:
- Misael Hernández <yumatajnga@gmail.com>
2020-01-06 03:32:50 +00:00
Joseph.maza
f54a95c965 Pontoon: Update Tagalog (tl) localization of Firefox Send
Localization authors:
- Joseph.maza <Joseph.maza@Gmail.com>
2020-01-06 02:12:15 +00:00
Danny Coates
eec8da890a Merge pull request #1431 from flodolo/locales_20200102
Add new locales (an, gn, mix)
2020-01-02 17:30:24 -08:00
Francesco Lodolo [:flod]
32a58d85a3 Add new locales (an, gn, mix) 2020-01-02 08:29:52 +01:00
Björn I
1252aaed30 Pontoon: Update Norwegian Nynorsk (nn-NO) localization of Firefox Send
Localization authors:
- Björn I. <bjorni.svindseth@yahoo.com>
2019-12-27 17:33:13 +00:00
Jirka Soukeník
060ff1cae4 Pontoon: Update Czech (cs) localization of Firefox Send
Localization authors:
- Jirka Soukeník <soucet@centrum.cz>
- Michal Stanke <mstanke@mozilla.cz>
2019-12-25 08:51:41 +00:00
Juan Pablo
1c2955ed9e Pontoon: Update Aragonese (an) localization of Firefox Send
Localization authors:
- Juan Pablo <juanpabl@gmail.com>
2019-12-18 00:37:51 +00:00
Juan Pablo
5e5bce8745 Pontoon: Update Aragonese (an) localization of Firefox Send
Localization authors:
- Juan Pablo <juanpabl@gmail.com>
2019-12-18 00:12:36 +00:00
Juan Pablo
e43ba60792 Pontoon: Update Aragonese (an) localization of Firefox Send
Localization authors:
- Juan Pablo <juanpabl@gmail.com>
2019-12-17 23:51:47 +00:00
Juan Pablo
e94fe58965 Pontoon: Update Aragonese (an) localization of Firefox Send
Localization authors:
- Juan Pablo <juanpabl@gmail.com>
2019-12-17 23:32:52 +00:00
Frederick Villaluna
a21412844a Pontoon: Update Tagalog (tl) localization of Firefox Send
Localization authors:
- Frederick Villaluna <fv_comscie@yahoo.com>
2019-12-16 07:13:30 +00:00
Luis Flores Martínez
666ca8e87b Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Luis Flores Martínez <lufom90@gmail.com>
2019-12-13 17:13:50 +00:00
Luis Flores Martínez
71ceffd9b4 Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Luis Flores Martínez <lufom90@gmail.com>
2019-12-13 16:52:01 +00:00
Bald3mar
cdbd669af2 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-12-12 22:33:46 +00:00
Bald3mar
027043edb7 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-12-12 22:14:07 +00:00
Bald3mar
e4a1f8e86b Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-12-12 21:51:52 +00:00
Hmxhmx
dfd5eb9b1e Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Hmxhmx <hmxhmx.at.wiki@gmail.com>
2019-12-11 08:33:24 +00:00
Bald3mar
e3ee840b64 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-12-10 23:53:16 +00:00
Danny Coates
b8bd13c704 Merge pull request #1424 from checkr/cjford/optional-git-build-dependency
Allow successful npm build without .git
2019-12-10 09:38:24 -08:00
صفا الفليج
6238299a0a Pontoon: Update Arabic (ar) localization of Firefox Send
Localization authors:
- صفا الفليج <safa1996alfulaij@gmail.com>
2019-12-09 20:32:11 +00:00
Connor Ford
d40ddc3d3b Fix npm build with missing .git 2019-12-09 10:51:51 -07:00
Sav22999
d2746db969 Pontoon: Update Italian (it) localization of Firefox Send
Localization authors:
- Sav22999 <saverio.morelli@outlook.it>
2019-12-08 14:53:17 +00:00
Martijn Dekker
95057ef503 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-12-06 05:54:39 +00:00
Martijn Dekker
aec2ec30d5 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-12-06 00:32:14 +00:00
Martijn Dekker
4d36b3d6e9 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-12-03 23:35:21 +00:00
Julio Gomez
6b89197cfd Pontoon: Update Yucatec Maya (yua) localization of Firefox Send
Localization authors:
- Julio Gomez <jegs87@gmail.com>
2019-12-03 16:52:39 +00:00
Julio Gomez
dd2ebdd2de Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Julio Gomez <jegs87@gmail.com>
2019-12-03 16:52:37 +00:00
Bald3mar
c479d326ed Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-11-29 21:31:58 +00:00
Bald3mar
8434d91891 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-11-29 20:33:50 +00:00
Martijn Dekker
f9c761ea99 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-11-25 03:54:20 +00:00
Martijn Dekker
b14f5f16d0 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-11-24 22:54:28 +00:00
Selyan Slimane Amiri
4fbc8e0c89 Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Selyan Slimane Amiri <selyan.kab@gmail.com>
2019-11-22 21:32:21 +00:00
Bald3mar
ad2a1715b5 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-11-18 23:51:36 +00:00
Bald3mar
ac8f826612 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-11-18 23:31:36 +00:00
Martijn Dekker
c1aaa9d6e5 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-11-14 15:34:18 +00:00
Enol
eac95ffff7 Pontoon: Update Asturian (ast) localization of Firefox Send
Localization authors:
- Enol <enolp@softastur.org>
2019-11-13 23:13:07 +00:00
Enol
8121761cc8 Pontoon: Update Asturian (ast) localization of Firefox Send
Localization authors:
- Enol <enolp@softastur.org>
2019-11-13 22:52:12 +00:00
Danny Coates
7c720cd7cc Merge pull request #1418 from janschloss/routes-link
Fixes link to routes file
2019-11-13 09:25:55 -08:00
Abelardo Ayala Rodríguez
4c2f809502 Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-13 11:36:00 +00:00
Abelardo Ayala Rodríguez
d42523651c Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-13 10:51:36 +00:00
Martijn Dekker
b9775e0471 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-11-13 09:13:05 +00:00
jnunezf96
d2f37204e0 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-11-12 19:33:02 +00:00
jnunezf96
846dad6662 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-11-12 19:12:47 +00:00
jnunezf96
c966010ed3 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-11-12 18:13:42 +00:00
Jan Schloß
e77fea09bc Fixes link to routes file 2019-11-12 19:09:07 +01:00
jnunezf96
b63291c7d3 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-11-12 17:53:52 +00:00
Danny Coates
2ccc044a27 v3.0.21 2019-11-11 08:48:26 -08:00
Danny Coates
4144850f9d updated deps 2019-11-11 08:44:25 -08:00
Danny Coates
18630aadf9 Merge pull request #1417 from flodolo/prodlocales_20191111
Add new complete locales to production
2019-11-11 08:34:48 -08:00
Francesco Lodolo [:flod]
605fff519e Add new complete locales to production 2019-11-11 09:40:52 +01:00
Frederick Villaluna
0b7ff9551d Pontoon: Update Tagalog (tl) localization of Firefox Send
Localization authors:
- Frederick Villaluna <fv_comscie@yahoo.com>
- Ricky Villar <rvillar313@gmail.com>
2019-11-09 07:12:36 +00:00
Abelardo Ayala Rodríguez
2c9716e01e Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-08 14:33:28 +00:00
Abelardo Ayala Rodríguez
cdde3fe654 Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-08 14:14:11 +00:00
shamanchic2011
3537667187 Pontoon: Update Belarusian (be) localization of Firefox Send
Localization authors:
- shamanchic2011 <shamanchic2011@ya.ru>
- Mikalai Udodau <crom-a@tut.by>
2019-11-07 17:12:28 +00:00
Zhenya Tikhonov
66086c460d Pontoon: Update Belarusian (be) localization of Firefox Send
Localization authors:
- shamanchic2011 <shamanchic2011@ya.ru>
- Mikalai Udodau <crom-a@tut.by>
- Zhenya Tikhonov <masontikhonov@gmail.com>
2019-11-07 16:51:21 +00:00
Zhenya Tikhonov
a203a8de67 Pontoon: Update Belarusian (be) localization of Firefox Send
Localization authors:
- Mikalai Udodau <crom-a@tut.by>
- Zhenya Tikhonov <masontikhonov@gmail.com>
2019-11-07 16:32:04 +00:00
Francesco Lodolo
2bba9c53ed Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Francesco Lodolo <flod+pontoon@mozilla.com>
2019-11-07 15:12:48 +00:00
Abelardo Ayala Rodríguez
37af4d33fc Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-07 13:31:54 +00:00
Abelardo Ayala Rodríguez
107f40c8c9 Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-07 13:12:10 +00:00
Zhenya Tikhonov
cb325022dc Pontoon: Update Belarusian (be) localization of Firefox Send
Localization authors:
- Mikalai Udodau <crom-a@tut.by>
- Zhenya Tikhonov <masontikhonov@gmail.com>
2019-11-06 19:53:20 +00:00
Danny Coates
b62b439218 fixed circleci oops 2019-11-05 21:06:19 -08:00
Danny Coates
47972fe2a1 fixed mysterious npm build problem by updating npm 🤷‍♂️ 2019-11-05 21:01:29 -08:00
Danny Coates
7ad937266f trimmed circleci config 2019-11-05 20:53:59 -08:00
Danny Coates
2f34dffab4 fixed sw initialization error 2019-11-05 20:37:44 -08:00
Danny Coates
4a956c0247 updated deps 2019-11-05 20:19:07 -08:00
Alexander Parada
23ce7a1f84 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Alexander Parada <alessaux@outlook.es>
2019-11-05 15:33:35 +00:00
Alexander Parada
66a8ad2e4f Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Alexander Parada <alessaux@outlook.es>
2019-11-05 13:57:38 +00:00
Abelardo Ayala Rodríguez
e8e2e31b59 Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-05 13:57:35 +00:00
Abelardo Ayala Rodríguez
7259c46d1c Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-05 13:31:45 +00:00
Abelardo Ayala Rodríguez
9d3c3d1924 Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-05 13:14:02 +00:00
jnunezf96
a0d6317747 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
- Garysqo <garyspleen@gmail.com>
2019-11-05 04:12:46 +00:00
Julio Gomez
3810e09509 Pontoon: Update Yucatec Maya (yua) localization of Firefox Send
Localization authors:
- Julio Gomez <jegs87@gmail.com>
2019-11-05 02:31:57 +00:00
José Manuel
bb7678e7e4 Pontoon: Update Triqui (trs) localization of Firefox Send
Localization authors:
- José Manuel <triki2014jm@gmail.com>
2019-11-05 01:33:00 +00:00
Alexander Parada
3dcf01dd1f Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Alexander Parada <alessaux@outlook.es>
2019-11-05 01:32:57 +00:00
José Manuel
3b8f19b4c9 Pontoon: Update Triqui (trs) localization of Firefox Send
Localization authors:
- José Manuel <triki2014jm@gmail.com>
2019-11-05 00:52:28 +00:00
Alexander Parada
ab957c26a0 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Alexander Parada <alessaux@outlook.es>
2019-11-05 00:52:25 +00:00
Alexander Parada
e835c82c27 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Alexander Parada <alessaux@outlook.es>
2019-11-05 00:31:58 +00:00
Alexander Parada
d69a9e8537 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Garysqo <garyspleen@gmail.com>
- Alexander Parada <alessaux@outlook.es>
2019-11-05 00:11:44 +00:00
Netza López
1b286d664b Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-11-04 18:32:25 +00:00
Netza López
f8c8a6c2cd Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-11-04 18:19:43 +00:00
Netza López
b71234fc83 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-11-04 18:01:40 +00:00
Netza López
2eb35733da Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-11-04 03:32:20 +00:00
Netza López
df276d5942 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-11-04 03:11:15 +00:00
Netza López
e1a6fb9569 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-11-04 02:51:56 +00:00
marsf
99b2d636a1 Pontoon: Update Japanese (ja) localization of Firefox Send
Localization authors:
- marsf <chimantaea_mirabilis@yahoo.co.jp>
2019-11-03 14:11:21 +00:00
jnunezf96
78be59adac Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-31 20:12:42 +00:00
jnunezf96
720ab6ae3a Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-31 19:52:57 +00:00
elenatambriz
5e0dcc948c Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-31 17:51:49 +00:00
elenatambriz
90400d72b1 Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-31 17:31:40 +00:00
elenatambriz
8f1fd6cbf5 Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-31 17:14:47 +00:00
elenatambriz
fef8788d55 Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-31 16:53:52 +00:00
José Manuel
d2f8156bde Pontoon: Update Triqui (trs) localization of Firefox Send
Localization authors:
- José Manuel <triki2014jm@gmail.com>
2019-10-31 15:32:30 +00:00
Garysqo
d4fbd48f1c Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Garysqo <garyspleen@gmail.com>
2019-10-31 14:11:32 +00:00
jnunezf96
a6d3948fbc Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-31 06:31:28 +00:00
jnunezf96
005bbb1792 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-31 06:12:10 +00:00
jnunezf96
186230d211 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-31 05:12:32 +00:00
jnunezf96
ee1e8bc204 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-31 04:12:29 +00:00
jnunezf96
d1366fb764 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-30 23:51:28 +00:00
jnunezf96
d81dba6407 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-30 23:31:57 +00:00
Garysqo
f35ddd8e9a Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Garysqo <garyspleen@gmail.com>
2019-10-30 19:12:24 +00:00
Garysqo
ff798463e8 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
- Garysqo <garyspleen@gmail.com>
2019-10-30 18:52:42 +00:00
Bald3mar
6308c386a3 Pontoon: Update Spanish (Mexico) (es-MX) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-30 18:11:55 +00:00
jnunezf96
5a6c338ab9 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
- Garysqo <garyspleen@gmail.com>
2019-10-30 16:32:20 +00:00
jnunezf96
bc6401e7dd Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-30 16:11:28 +00:00
jnunezf96
0667f22ddd Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-29 23:12:26 +00:00
jnunezf96
594cd339b5 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-29 22:42:38 +00:00
José Manuel
762497b867 Pontoon: Update Triqui (trs) localization of Firefox Send
Localization authors:
- José Manuel <triki2014jm@gmail.com>
2019-10-29 22:13:19 +00:00
Garysqo
9199a985d8 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Garysqo <garyspleen@gmail.com>
- Alexander Parada <alessaux@outlook.es>
2019-10-29 22:13:17 +00:00
Bald3mar
624e1234d9 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-29 22:13:14 +00:00
Netza López
a3d153db66 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-10-29 22:13:11 +00:00
elenatambriz
dc25bc5727 Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-29 22:13:08 +00:00
Julio Gomez
6a1670b550 Pontoon: Update Kaqchikel (cak) localization of Firefox Send
Localization authors:
- Julio Gomez <jegs87@gmail.com>
2019-10-29 22:13:05 +00:00
Miguel
8cd3a720fe Pontoon: Update Ixil (ixl) localization of Firefox Send
Localization authors:
- Gerardo <gerardoterraza2013@gmail.com>
- Miguel <mickyforever.dc@gmail.com>
2019-10-29 22:13:02 +00:00
Abelardo Ayala Rodríguez
9aa7da68be Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-10-29 22:12:59 +00:00
José Manuel
063042cd76 Pontoon: Update Triqui (trs) localization of Firefox Send
Localization authors:
- José Manuel <triki2014jm@gmail.com>
2019-10-29 21:42:00 +00:00
Alexander Parada
8ce3a5d236 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Garysqo <garyspleen@gmail.com>
- Alexander Parada <alessaux@outlook.es>
2019-10-29 21:41:58 +00:00
Netza López
0c58c84625 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-10-29 21:41:55 +00:00
elenatambriz
68ddcf3b56 Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-29 21:41:52 +00:00
Miguel
a0648d7d91 Pontoon: Update Ixil (ixl) localization of Firefox Send
Localization authors:
- Miguel <mickyforever.dc@gmail.com>
2019-10-29 21:41:49 +00:00
Abelardo Ayala Rodríguez
5e674973db Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-10-29 21:41:46 +00:00
Garysqo
4f2b634825 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Garysqo <garyspleen@gmail.com>
- Alexander Parada <alessaux@outlook.es>
2019-10-29 21:33:43 +00:00
Bald3mar
48bbf07392 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-29 21:33:40 +00:00
Netza López
357f6da3b0 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-10-29 21:33:37 +00:00
Miguel
def21041d8 Pontoon: Update Ixil (ixl) localization of Firefox Send
Localization authors:
- Miguel <mickyforever.dc@gmail.com>
2019-10-29 21:33:35 +00:00
Abelardo Ayala Rodríguez
c44728865a Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-10-29 21:33:32 +00:00
Bald3mar
f271140c5f Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-29 21:13:57 +00:00
Netza López
3593aaf61f Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-10-29 21:13:54 +00:00
Abelardo Ayala Rodríguez
8b433a008d Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-10-29 21:13:51 +00:00
Bald3mar
1ab1bf1b00 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-29 20:43:02 +00:00
Abelardo Ayala Rodríguez
c04d15f806 Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-10-29 20:42:59 +00:00
Bald3mar
977e8bdc21 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-29 20:32:12 +00:00
Bald3mar
454d1d03f5 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-29 19:15:17 +00:00
Netza López
f73ff7fa26 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-10-29 19:15:14 +00:00
elenatambriz
98317c94aa Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-29 19:15:12 +00:00
Netza López
aa91d762af Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-10-29 18:44:30 +00:00
elenatambriz
5cddd0842b Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-29 18:44:27 +00:00
elenatambriz
4dee3d2283 Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-29 18:33:37 +00:00
Netza López
2d20cb3819 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-10-29 18:14:20 +00:00
Bald3mar
c28beb3bc1 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-29 16:32:21 +00:00
Netza López
216a7a6ff8 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-10-29 16:32:19 +00:00
José Manuel
a48d2bad4f Pontoon: Update Triqui (trs) localization of Firefox Send
Localization authors:
- José Manuel <triki2014jm@gmail.com>
2019-10-28 23:12:15 +00:00
Bald3mar
04c60414e1 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-28 22:32:40 +00:00
Bald3mar
92c3f67020 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-28 22:13:07 +00:00
Martijn Dekker
49e6c064ac Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-10-27 22:32:42 +00:00
Martijn Dekker
8551139a8a Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-10-27 20:13:25 +00:00
Emin Mastizada
96461692ee Pontoon: Update Azerbaijani (az) localization of Firefox Send
Localization authors:
- Emin Mastizada <emin@mastizada.com>
2019-10-23 23:35:20 +00:00
Martijn Dekker
a217ad4be5 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-10-22 15:12:17 +00:00
Danny Coates
18216ce430 v3.0.20 2019-10-21 11:33:54 -07:00
Danny Coates
1711a2d1d7 added "te" to production languages 2019-10-21 10:36:34 -07:00
Danny Coates
8b2080a2f0 updated deps 2019-10-21 10:24:07 -07:00
Danny Coates
006ee1d2e6 Merge pull request #1408 from drakkein/master
Strip tracking URL params
2019-10-21 10:13:56 -07:00
Danny Coates
0a7c473965 Merge pull request #1405 from mozilla/dark-mode
Dark theme
2019-10-21 10:07:42 -07:00
Hampus
4e124d174c Pontoon: Update Swedish (sv-SE) localization of Firefox Send
Localization authors:
- Hampus <hampus.bengtsson@gmail.com>
2019-10-19 00:33:34 +00:00
Artem Polivanchuk
524b2a5668 Pontoon: Update Ukrainian (uk) localization of Firefox Send
Localization authors:
- Artem Polivanchuk <artem@mozilla.org.ua>
2019-10-17 08:52:12 +00:00
Marcelo Ghelman
844f036a27 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Localization authors:
- Marcelo Ghelman <marcelo.ghelman@gmail.com>
2019-10-16 14:33:03 +00:00
Marcelo Ghelman
7d6c781ea5 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Localization authors:
- Marcelo Ghelman <marcelo.ghelman@gmail.com>
2019-10-16 14:12:33 +00:00
Wiktor Furman
ad9577daaf Update package-lock 2019-10-15 15:50:09 +02:00
Wiktor Furman
114068c531 Strip tracking url parameters 2019-10-15 15:29:48 +02:00
Niksend Mizuhara
0daa03e04c Pontoon: Update Chinese (China) (zh-CN) localization of Firefox Send
Localization authors:
- Niksend Mizuhara <i@rhinecho.com>
2019-10-07 01:53:05 +00:00
Danny Coates
63348fd36a updated deps 2019-10-03 23:32:49 -07:00
Danny Coates
c71c246959 Dark theme 2019-10-03 23:10:11 -07:00
Sander Lepik
2b7504e969 Pontoon: Update Estonian (et) localization of Firefox Send
Localization authors:
- Sander Lepik <sander.lepik@eesti.ee>
2019-10-01 05:14:31 +00:00
Selyan Sliman Amiri
b942554c80 Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Selyan Sliman Amiri <selyan.kab@gmail.com>
2019-09-30 09:32:51 +00:00
Juan Sián
1ae227fddd Pontoon: Update Kaqchikel (cak) localization of Firefox Send
Localization authors:
- Juan Sián <ajtzibsyan@yahoo.com>
2019-09-26 23:32:48 +00:00
Jordi Serratosa
a63fe18d15 Pontoon: Update Catalan (ca) localization of Firefox Send
Localization authors:
- Jordi Serratosa <jordis@softcatala.cat>
2019-09-25 09:56:59 +00:00
Danny Coates
ea1ea2aa68 v3.0.19 2019-09-23 09:24:10 -07:00
Danny Coates
90d06d71d3 updated deps 2019-09-23 09:22:22 -07:00
Kim Younggeon
11f2deb7a6 Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Kim Younggeon <mail@kyg.kr>
2019-09-23 03:52:14 +00:00
Danny Coates
0f5edf023a Merge pull request #1400 from mozilla/task/update-engines
task: update engines in package.json and README to clarify that node 10x is expected.
2019-09-19 11:02:42 -07:00
Rachel Tublitz
3be0621647 task: update engines in package.json and README to clarify that node 10.x is expected 2019-09-19 13:37:05 -04:00
Marcelo Ghelman
fc07bfdb85 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Localization authors:
- Marcelo Ghelman <marcelo.ghelman@gmail.com>
2019-09-15 05:17:20 +00:00
صفا الفليج
581a989304 Pontoon: Update Arabic (ar) localization of Firefox Send
Localization authors:
- صفا الفليج <safa1996alfulaij@gmail.com>
2019-09-11 18:34:38 +00:00
ItielMaN
047d6a85ab Pontoon: Update Hebrew (he) localization of Firefox Send
Localization authors:
- ItielMaN <itiel_yn8@walla.com>
2019-09-08 21:12:53 +00:00
Luiz Felipe F M Costa
90f6a07d4a refactored Dockerfile 2019-09-06 20:04:45 -07:00
Arash Mousavi
8f4a53db64 Pontoon: Update Persian (fa) localization of Firefox Send
Localization authors:
- Arash Mousavi <mousavi.arash@gmail.com>
2019-09-06 21:53:28 +00:00
Abd ar-Rahman Hamidi
30d7ec50f3 Convert ContentLength of storage to number 2019-01-02 22:16:03 +05:00
184 changed files with 13515 additions and 7831 deletions

View File

@@ -1,77 +1,48 @@
version: 2.0 version: 2.0
jobs: jobs:
build:
docker:
- image: circleci/node:10
steps:
- checkout
- restore_cache:
key: send-build-{{ checksum "package-lock.json" }}
- run: npm install
- save_cache:
key: send-build-{{ checksum "package-lock.json" }}
paths:
- node_modules
- run: npm run build
- persist_to_workspace:
root: .
paths:
- ./dist
test: test:
docker: docker:
- image: circleci/node:10-browsers - image: circleci/node:12-browsers
steps: steps:
- checkout - checkout
- restore_cache: - run: npm ci
key: send-test-{{ checksum "package-lock.json" }}
- run: npm install
- save_cache:
key: send-test-{{ checksum "package-lock.json" }}
paths:
- node_modules
- run: npm run lint - run: npm run lint
- run: npm run test - run: npm test
- store_artifacts: - store_artifacts:
path: coverage path: coverage
integration_tests: integration_tests:
docker: docker:
- image: circleci/node:10-browsers - image: circleci/node:12-browsers
steps: steps:
- checkout - checkout
- restore_cache: - run: npm ci
key: send-int-{{ checksum "package-lock.json" }} - run:
- run: npm install
- save_cache:
key: send-int-{{ checksum "package-lock.json" }}
paths:
- node_modules
- run:
name: Run integration test name: Run integration test
command: ./scripts/bin/run-integration-test-circleci.sh command: ./scripts/bin/run-integration-test-circleci.sh
deploy_dev: deploy_dev:
machine: true docker:
- image: circleci/node:12
steps: steps:
- checkout - checkout
- attach_workspace: - setup_remote_docker
at: .
- run: docker login -u $DOCKER_USER -p $DOCKER_PASS - run: docker login -u $DOCKER_USER -p $DOCKER_PASS
- run: docker build -t mozilla/send:latest . - run: docker build -t mozilla/send:latest .
- run: docker push mozilla/send:latest - run: docker push mozilla/send:latest
deploy_vnext: deploy_vnext:
machine: true docker:
- image: circleci/node:12
steps: steps:
- checkout - checkout
- attach_workspace: - setup_remote_docker
at: .
- run: docker login -u $DOCKER_USER -p $DOCKER_PASS - run: docker login -u $DOCKER_USER -p $DOCKER_PASS
- run: docker build -t mozilla/send:vnext . - run: docker build -t mozilla/send:vnext .
- run: docker push mozilla/send:vnext - run: docker push mozilla/send:vnext
deploy_stage: deploy_stage:
machine: true docker:
- image: circleci/node:12
steps: steps:
- checkout - checkout
- attach_workspace: - setup_remote_docker
at: .
- run: docker login -u $DOCKER_USER -p $DOCKER_PASS - run: docker login -u $DOCKER_USER -p $DOCKER_PASS
- run: docker build -t mozilla/send:$CIRCLE_TAG . - run: docker build -t mozilla/send:$CIRCLE_TAG .
- run: docker push mozilla/send:$CIRCLE_TAG - run: docker push mozilla/send:$CIRCLE_TAG
@@ -79,12 +50,6 @@ workflows:
version: 2 version: 2
test_pr: test_pr:
jobs: jobs:
- build:
filters:
branches:
ignore:
- master
- vnext
- test: - test:
filters: filters:
branches: branches:
@@ -97,25 +62,13 @@ workflows:
ignore: master ignore: master
build_and_deploy_dev: build_and_deploy_dev:
jobs: jobs:
- build:
filters:
branches:
only:
- master
- vnext
tags:
ignore: /^v.*/
- deploy_dev: - deploy_dev:
requires:
- build
filters: filters:
branches: branches:
only: master only: master
tags: tags:
ignore: /^v.*/ ignore: /^v.*/
- deploy_vnext: - deploy_vnext:
requires:
- build
filters: filters:
branches: branches:
only: vnext only: vnext
@@ -123,12 +76,6 @@ workflows:
ignore: /^v.*/ ignore: /^v.*/
build_and_deploy_stage: build_and_deploy_stage:
jobs: jobs:
- build:
filters:
branches:
ignore: /.*/
tags:
only: /^v.*/
- test: - test:
filters: filters:
branches: branches:
@@ -143,7 +90,6 @@ workflows:
only: /^v.*/ only: /^v.*/
- deploy_stage: - deploy_stage:
requires: requires:
- build
- test - test
- integration_tests - integration_tests
filters: filters:

View File

@@ -1,10 +1,8 @@
node_modules .circleci
.git
.tox
.DS_Store
firefox
assets
docs
test
coverage
.nyc_output .nyc_output
.vscode
.DS_Store
coverage
docs
firefox
node_modules

View File

@@ -4,4 +4,5 @@ firefox
coverage coverage
android/app/build android/app/build
app/locale.js app/locale.js
app/capabilities.js app/capabilities.js
app/qrcode.js

View File

@@ -19,6 +19,7 @@ rules:
node/no-unsupported-features/es-syntax: off node/no-unsupported-features/es-syntax: off
node/no-unsupported-features/node-builtins: off node/no-unsupported-features/node-builtins: off
node/no-unpublished-require: off node/no-unpublished-require: off
node/no-unpublished-import: off
security/detect-non-literal-fs-filename: off security/detect-non-literal-fs-filename: off
security/detect-object-injection: off security/detect-object-injection: off

71
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,71 @@
image: "node:12-slim"
stages:
- test
- artifact
- release
before_script:
# Install dependencies
- apt-get update
- apt-get install -y git python3 build-essential libxtst6
# Prepare Chrome for puppeteer
- apt-get install -y wget gnupg
- wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
- sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
- apt-get update
- apt-get install -y google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 --no-install-recommends
test:
stage: test
script:
- npm ci
- npm run lint
- npm test
# Release Docker image artifact for easy testing
artifact-docker:
stage: artifact
image: docker:latest
services:
- docker:dind
only:
- master
before_script: []
script:
- export IMG_NAME=registry.gitlab.com/timvisee/send:master-$CI_COMMIT_SHA
# Login in to registry
- 'docker login registry.gitlab.com -u $DOCKER_USER -p $DOCKER_PASS'
# Build and push image, report image name
- docker build -t $IMG_NAME .
- docker push $IMG_NAME
- 'echo Docker image artifact published, available as:'
- 'echo " docker pull $IMG_NAME"'
# Release public Docker image
release-docker:
stage: release
image: docker:latest
services:
- docker:dind
only:
- /^v(\d+\.)*\d+$/
before_script: []
script:
- export IMG_NAME=registry.gitlab.com/timvisee/send:$CI_COMMIT_REF_NAME
- export IMG_NAME_LATEST=registry.gitlab.com/timvisee/send:latest
# Login in to registry
- 'docker login registry.gitlab.com -u $DOCKER_USER -p $DOCKER_PASS'
# Build and push image, report image name
- docker build -t $IMG_NAME .
- docker tag $IMG_NAME $IMG_NAME_LATEST
- docker push $IMG_NAME
- docker push $IMG_NAME_LATEST
- 'echo Docker image artifact published, available as:'
- 'echo " docker pull $IMG_NAME_LATEST"'
- 'echo " docker pull $IMG_NAME"'

View File

@@ -1,6 +1,7 @@
Abdalrahman Hwoij Abdalrahman Hwoij
Abhinav Adduri Abhinav Adduri
Adnan Kičin Adnan Kičin
Adolfo Jayme Barrientos
Alberto Castro Alberto Castro
Alexander Slovesnik Alexander Slovesnik
Alfredos-Panagiotis Damkalis Alfredos-Panagiotis Damkalis
@@ -63,6 +64,7 @@ George Raptis
Georgianizator Georgianizator
Gonçalo Matos Gonçalo Matos
Gwenn Gwenn
Hampus
Hugo Hugo
Hugo Abreu Hugo Abreu
Hyeonseok Shin Hyeonseok Shin
@@ -93,6 +95,7 @@ Juraj Cigáň
Kerim Kalamujić Kerim Kalamujić
Khaled Hosny Khaled Hosny
Kim Ludvigsen Kim Ludvigsen
Kim Younggeon
Kohei Yoshino Kohei Yoshino
Lan Glad Lan Glad
Lasse Liehu Lasse Liehu
@@ -101,6 +104,7 @@ Lobodzets
LuFlo LuFlo
Luis A. Sánchez Luis A. Sánchez
Luiz Carlos de Morais Luiz Carlos de Morais
Luiz Felipe F M Costa
Luna Jernberg Luna Jernberg
Mahay Alam Khan Mahay Alam Khan
Marcelo Ghelman Marcelo Ghelman
@@ -110,6 +114,7 @@ Mark Heijl
Mark Liang Mark Liang
Mark Liang (You-Wen) Mark Liang (You-Wen)
Marko Andrejić Marko Andrejić
Martijn Dekker
Marwan Mohamad Marwan Mohamad
Matjaž Horvat Matjaž Horvat
Maykon Chagas Maykon Chagas
@@ -131,6 +136,7 @@ Myungjae Won
Nicholas Skinsacos Nicholas Skinsacos
Nihad Nihad
Nihad Suljić Nihad Suljić
Niksend Mizuhara
Oscar Oscar
Paulius Paulius
Pedro Burlamaqui Bendahan Pedro Burlamaqui Bendahan
@@ -138,7 +144,9 @@ Peter deHaan
Pierre Neter Pierre Neter
Pin-guang Chen Pin-guang Chen
Piotr Drąg Piotr Drąg
Quentí
Quế Tùng Quế Tùng
Rachel Tublitz
Radu Popescu Radu Popescu
Rhoslyn Prys Rhoslyn Prys
RickieES RickieES
@@ -161,6 +169,7 @@ Sara Todaro
Sav22999 Sav22999
Schieck :) Schieck :)
Selim Şumlu Selim Şumlu
Selyan Sliman Amiri
Sidak Singh Aulakh Sidak Singh Aulakh
Slimane Amiri Slimane Amiri
Slimane Selyan AMIRI Slimane Selyan AMIRI
@@ -183,6 +192,7 @@ Victor Bychek
Vimal Raghubir Vimal Raghubir
Vitaliy Krutko Vitaliy Krutko
Weihang Lo Weihang Lo
Wiktor Furman
Wil Clouser Wil Clouser
YFdyh000 YFdyh000
Yassine Aït-El-Mouden Yassine Aït-El-Mouden
@@ -213,9 +223,11 @@ jesferman1993
jlG jlG
josotrix josotrix
jspam jspam
julen
julenx julenx
kenrick95 kenrick95
kumincir kumincir
leo.toneff
m4hdi.pdroid m4hdi.pdroid
mail mail
manxmensch manxmensch

View File

@@ -1,19 +1,59 @@
FROM node:10 AS builder ##
RUN addgroup --gid 10001 app && adduser --disabled-password --gecos '' --gid 10001 --home /app --uid 10001 app # Send
COPY package*.json /app/ #
WORKDIR /app # License https://gitlab.com/timvisee/send/blob/master/LICENSE
RUN npm install --production ##
FROM node:10-slim
RUN addgroup --gid 10001 app && adduser --disabled-password --gecos '' --gid 10001 --home /app --uid 10001 app # Build project
FROM node:12 AS builder
RUN set -x \
# Add user
&& addgroup --gid 10001 app \
&& adduser --disabled-password \
--gecos '' \
--gid 10001 \
--home /app \
--uid 10001 \
app
COPY --chown=app:app . /app
USER app USER app
WORKDIR /app WORKDIR /app
COPY --chown=app:app --from=builder /app . RUN set -x \
COPY --chown=app:app . . # Build
&& PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm ci \
&& npm run build
# Main image
FROM node:12-slim
RUN set -x \
# Add user
&& addgroup --gid 10001 app \
&& adduser --disabled-password \
--gecos '' \
--gid 10001 \
--home /app \
--uid 10001 \
app
RUN apt-get update && apt-get -y install \
git-core \
&& rm -rf /var/lib/apt/lists/*
USER app
WORKDIR /app
COPY --chown=app:app package*.json ./
COPY --chown=app:app app app
COPY --chown=app:app common common
COPY --chown=app:app public/locales public/locales
COPY --chown=app:app server server
COPY --chown=app:app --from=builder /app/dist dist
RUN npm ci --production && npm cache clean --force
RUN mkdir -p /app/.config/configstore RUN mkdir -p /app/.config/configstore
RUN ln -s dist/version.json version.json RUN ln -s dist/version.json version.json
ENV PORT=1443 ENV PORT=1443
EXPOSE $PORT
EXPOSE ${PORT}
CMD ["node", "server/bin/prod.js"] CMD ["node", "server/bin/prod.js"]

View File

@@ -1,6 +1,57 @@
# [![Firefox Send](./assets/logo.svg)](https://send.firefox.com/) # [![Send](./assets/icon.svg)](https://gitlab.com/timvisee/send/) Send
[![CircleCI](https://img.shields.io/circleci/project/github/mozilla/send.svg)](https://circleci.com/gh/mozilla/send) [![Build status on GitLab CI][gitlab-ci-master-badge]][gitlab-ci-link]
[![Latest release][release-badge]][release-link]
[![Docker image][docker-image-badge]][docker-image-link]
[![Project license][repo-license-badge]](LICENSE)
[docker-image-badge]: https://img.shields.io/badge/docker-latest-blue.svg
[docker-image-link]: https://gitlab.com/timvisee/send/container_registry/eyJuYW1lIjoidGltdmlzZWUvc2VuZCIsInRhZ3NfcGF0aCI6Ii90aW12aXNlZS9zZW5kL3JlZ2lzdHJ5L3JlcG9zaXRvcnkvMTQxODUwNC90YWdzP2Zvcm1hdD1qc29uIiwiaWQiOjE0MTg1MDQsImNsZWFudXBfcG9saWN5X3N0YXJ0ZWRfYXQiOm51bGx9
[gitlab-ci-link]: https://gitlab.com/timvisee/send/pipelines
[gitlab-ci-master-badge]: https://gitlab.com/timvisee/send/badges/master/pipeline.svg
[release-badge]: https://img.shields.io/github/v/tag/timvisee/send
[release-link]: https://gitlab.com/timvisee/send/-/tags
[repo-license-badge]: https://img.shields.io/github/license/timvisee/send.svg
A fork of Mozilla's [Firefox Send][mozilla-send].
Mozilla discontinued Send, this fork is a community effort to keep the project
up-to-date and alive.
- Forked [at][fork-commit] Mozilla's last publicly hosted version
- _Mozilla_ & _Firefox_ branding [is][remove-branding-pr] removed so you can legally self-host
- Kept compatible with [`ffsend`][ffsend] (CLI for Send)
- Dependencies have been updated
- Mozilla's [changes][mozilla-patches] since the fork have been selectively [merged][mozilla-patches-pr]
- Mozilla's experimental report feature, download tokens, trust warnings and FxA changes are not included
Find an up-to-date Docker image here: [docs/docker.md](docs/docker.md)
The original project by Mozilla can be found [here][mozilla-send].
The [`mozilla-master`][branch-mozilla-master] branch holds the `master` branch
as left by Mozilla.
The [`send-v3`][branch-send-v3] branch holds the commit tree of Mozilla's last
publicly hosted version, which this fork is based on.
The [`send-v4`][branch-send-v4] branch holds the commit tree of Mozilla's last
experimental version which was still a work in progress (featuring file
reporting, download tokens, trust warnings and FxA changes), this has
selectively been merged into this fork.
Please consider to [donate][donate] to allow me to keep working on this.
Thanks [Mozilla][mozilla] for building this amazing tool!
[branch-mozilla-master]: https://gitlab.com/timvisee/send/-/tree/mozilla-master
[branch-send-v3]: https://gitlab.com/timvisee/send/-/tree/send-v3
[branch-send-v4]: https://gitlab.com/timvisee/send/-/tree/send-v4
[donate]: https://timvisee.com/donate
[ffsend]: https://github.com/timvisee/ffsend
[fork-commit]: https://gitlab.com/timvisee/send/-/commit/3e9be676413a6e1baaf6a354c180e91899d10bec
[mozilla-patches-pr]: https://gitlab.com/timvisee/send/-/merge_requests/3
[mozilla-patches]: https://gitlab.com/timvisee/send/-/compare/3e9be676413a6e1baaf6a354c180e91899d10bec...mozilla-master
[mozilla-send]: https://github.com/mozilla/send
[mozilla]: https://mozilla.org/
[remove-branding-pr]: https://gitlab.com/timvisee/send/-/merge_requests/2
---
**Docs:** [FAQ](docs/faq.md), [Encryption](docs/encryption.md), [Build](docs/build.md), [Docker](docs/docker.md), [Metrics](docs/metrics.md), [More](docs/) **Docs:** [FAQ](docs/faq.md), [Encryption](docs/encryption.md), [Build](docs/build.md), [Docker](docs/docker.md), [Metrics](docs/metrics.md), [More](docs/)
@@ -30,22 +81,22 @@ A file sharing experiment which allows you to send encrypted files to other user
## Requirements ## Requirements
- [Node.js 10.0+](https://nodejs.org/) - [Node.js 12.x](https://nodejs.org/)
- [Redis server](https://redis.io/) (optional for development) - [Redis server](https://redis.io/) (optional for development)
- [AWS S3](https://aws.amazon.com/s3/) or compatible service. (optional) - [AWS S3](https://aws.amazon.com/s3/) or compatible service (optional)
--- ---
## Development ## Development
To start an ephemeral development server run: To start an ephemeral development server, run:
```sh ```sh
npm install npm install
npm start npm start
``` ```
Then browse to http://localhost:8080 Then, browse to http://localhost:8080
--- ---
@@ -70,7 +121,7 @@ The server is configured with environment variables. See [server/config.js](serv
## Localization ## Localization
Firefox Send localization is managed via [Pontoon](https://pontoon.mozilla.org/projects/test-pilot-firefox-send/), not direct pull requests to the repository. If you want to fix a typo, add a new language, or simply know more about localization, please get in touch with the [existing localization team](https://pontoon.mozilla.org/teams/) for your language or Mozillas [l10n-drivers](https://wiki.mozilla.org/L10n:Mozilla_Team#Mozilla_Corporation) for guidance. Send localization is managed via [Pontoon](https://pontoon.mozilla.org/projects/test-pilot-firefox-send/), not direct pull requests to the repository. If you want to fix a typo, add a new language, or simply know more about localization, please get in touch with the [existing localization team](https://pontoon.mozilla.org/teams/) for your language or Mozillas [l10n-drivers](https://wiki.mozilla.org/L10n:Mozilla_Team#Mozilla_Corporation) for guidance.
see also [docs/localization.md](docs/localization.md) see also [docs/localization.md](docs/localization.md)
@@ -108,4 +159,6 @@ The android implementation is contained in the `android` directory, and can be v
[Mozilla Public License Version 2.0](LICENSE) [Mozilla Public License Version 2.0](LICENSE)
[qrcode.js](https://github.com/kazuhikoarase/qrcode-generator) licensed under MIT
--- ---

View File

@@ -60,9 +60,7 @@ function body(main) {
</a>`; </a>`;
*/ */
return html` return html`
<body <body class="flex flex-col items-center font-sans bg-grey-10 h-screen">
class="flex flex-col items-center font-sans bg-grey-lightest h-screen"
>
${state.cache(Header, 'header').render()} ${main(state, emit)} ${state.cache(Header, 'header').render()} ${main(state, emit)}
</body> </body>
`; `;

View File

@@ -25,7 +25,7 @@ module.exports = function(state, emit) {
let content = ''; let content = '';
let button = html` let button = html`
<div <div
class="bg-blue rounded-full m-4 flex items-center justify-center shadow-lg" class="bg-blue-50 rounded-full m-4 flex items-center justify-center shadow-lg"
style="width: 56px; height: 56px" style="width: 56px; height: 56px"
onclick="${onclick}" onclick="${onclick}"
> >

View File

@@ -61,7 +61,10 @@ async function fetchWithAuth(url, params, keychain) {
const result = {}; const result = {};
params = params || {}; params = params || {};
const h = await keychain.authHeader(); const h = await keychain.authHeader();
params.headers = new Headers({ Authorization: h }); params.headers = new Headers({
Authorization: h,
'Content-Type': 'application/json'
});
const response = await fetch(url, params); const response = await fetch(url, params);
result.response = response; result.response = response;
result.ok = response.ok; result.ok = response.ok;

View File

@@ -77,6 +77,7 @@ async function polyfillStreams() {
export default async function getCapabilities() { export default async function getCapabilities() {
const browser = browserName(); const browser = browserName();
const isMobile = /mobi|android/i.test(navigator.userAgent);
const serviceWorker = 'serviceWorker' in navigator && browser !== 'edge'; const serviceWorker = 'serviceWorker' in navigator && browser !== 'edge';
let crypto = await checkCrypto(); let crypto = await checkCrypto();
const nativeStreams = checkStreams(); const nativeStreams = checkStreams();
@@ -91,14 +92,15 @@ export default async function getCapabilities() {
account = false; account = false;
} }
const share = const share =
typeof navigator.share === 'function' && locale().startsWith('en'); // en until strings merge isMobile &&
typeof navigator.share === 'function' &&
locale().startsWith('en'); // en until strings merge
const standalone = const standalone =
window.matchMedia('(display-mode: standalone)').matches || window.matchMedia('(display-mode: standalone)').matches ||
navigator.standalone; navigator.standalone;
const mobileFirefox = const mobileFirefox = browser === 'firefox' && isMobile;
browser === 'firefox' && /mobile/i.test(navigator.userAgent);
return { return {
account, account,

View File

@@ -1,13 +1,14 @@
import FileSender from './fileSender';
import FileReceiver from './fileReceiver';
import { copyToClipboard, delay, openLinksInNewTab, percent } from './utils';
import * as metrics from './metrics'; import * as metrics from './metrics';
import { bytes, locale } from './utils'; import FileReceiver from './fileReceiver';
import okDialog from './ui/okDialog'; import FileSender from './fileSender';
import copyDialog from './ui/copyDialog'; import copyDialog from './ui/copyDialog';
import faviconProgressbar from './ui/faviconProgressbar';
import okDialog from './ui/okDialog';
import shareDialog from './ui/shareDialog'; import shareDialog from './ui/shareDialog';
import signupDialog from './ui/signupDialog'; import signupDialog from './ui/signupDialog';
import surveyDialog from './ui/surveyDialog'; import surveyDialog from './ui/surveyDialog';
import { bytes, locale } from './utils';
import { copyToClipboard, delay, openLinksInNewTab, percent } from './utils';
export default function(state, emitter) { export default function(state, emitter) {
let lastRender = 0; let lastRender = 0;
@@ -29,6 +30,7 @@ export default function(state, emitter) {
if (updateTitle) { if (updateTitle) {
emitter.emit('DOMTitleChange', percent(state.transfer.progressRatio)); emitter.emit('DOMTitleChange', percent(state.transfer.progressRatio));
} }
faviconProgressbar.updateFavicon(state.transfer.progressRatio);
render(); render();
} }
@@ -36,7 +38,8 @@ export default function(state, emitter) {
document.addEventListener('blur', () => (updateTitle = true)); document.addEventListener('blur', () => (updateTitle = true));
document.addEventListener('focus', () => { document.addEventListener('focus', () => {
updateTitle = false; updateTitle = false;
emitter.emit('DOMTitleChange', 'Firefox Send'); emitter.emit('DOMTitleChange', 'Send');
faviconProgressbar.updateFavicon(0);
}); });
checkFiles(); checkFiles();
}); });
@@ -49,8 +52,8 @@ export default function(state, emitter) {
state.user.login(email); state.user.login(email);
}); });
emitter.on('logout', () => { emitter.on('logout', async () => {
state.user.logout(); await state.user.logout();
metrics.loggedOut({ trigger: 'button' }); metrics.loggedOut({ trigger: 'button' });
emitter.emit('pushState', '/'); emitter.emit('pushState', '/');
}); });
@@ -83,6 +86,7 @@ export default function(state, emitter) {
emitter.on('cancel', () => { emitter.on('cancel', () => {
state.transfer.cancel(); state.transfer.cancel();
faviconProgressbar.updateFavicon(0);
}); });
emitter.on('addFiles', async ({ files }) => { emitter.on('addFiles', async ({ files }) => {
@@ -161,6 +165,7 @@ export default function(state, emitter) {
state.storage.totalUploads += 1; state.storage.totalUploads += 1;
const duration = Date.now() - start; const duration = Date.now() - start;
metrics.completedUpload(archive, duration); metrics.completedUpload(archive, duration);
faviconProgressbar.updateFavicon(0);
state.storage.addFile(ownedFile); state.storage.addFile(ownedFile);
// TODO integrate password into /upload request // TODO integrate password into /upload request
@@ -178,6 +183,12 @@ export default function(state, emitter) {
//cancelled. do nothing //cancelled. do nothing
metrics.cancelledUpload(archive, err.duration); metrics.cancelledUpload(archive, err.duration);
render(); render();
} else if (err.message === '401') {
const refreshed = await state.user.refresh();
if (refreshed) {
return emitter.emit('upload');
}
emitter.emit('pushState', '/error');
} else { } else {
// eslint-disable-next-line no-console // eslint-disable-next-line no-console
console.error(err); console.error(err);
@@ -229,6 +240,9 @@ export default function(state, emitter) {
if (!file.requiresPassword) { if (!file.requiresPassword) {
return emitter.emit('pushState', '/404'); return emitter.emit('pushState', '/404');
} }
} else {
console.error(e);
return emitter.emit('pushState', '/error');
} }
} }
@@ -255,6 +269,7 @@ export default function(state, emitter) {
duration, duration,
password_protected: file.requiresPassword password_protected: file.requiresPassword
}); });
faviconProgressbar.updateFavicon(0);
} catch (err) { } catch (err) {
if (err.message === '0') { if (err.message === '0') {
// download cancelled // download cancelled

View File

@@ -1,7 +1,7 @@
import Nanobus from 'nanobus'; import Nanobus from 'nanobus';
import Keychain from './keychain'; import Keychain from './keychain';
import { delay, bytes, streamToArrayBuffer } from './utils'; import { delay, bytes, streamToArrayBuffer } from './utils';
import { downloadFile, metadata, getApiUrl } from './api'; import { downloadFile, metadata, getApiUrl, reportLink } from './api';
import { blobStream } from './streams'; import { blobStream } from './streams';
import Zip from './zip'; import Zip from './zip';
@@ -53,6 +53,10 @@ export default class FileReceiver extends Nanobus {
this.state = 'ready'; this.state = 'ready';
} }
async reportLink(reason) {
await reportLink(this.fileInfo.id, this.keychain, reason);
}
sendMessageToSw(msg) { sendMessageToSw(msg) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const channel = new MessageChannel(); const channel = new MessageChannel();

View File

@@ -39,7 +39,7 @@ body {
} }
.btn { .btn {
@apply bg-blue-dark; @apply bg-blue-60;
@apply text-white; @apply text-white;
@apply cursor-pointer; @apply cursor-pointer;
@apply py-4; @apply py-4;
@@ -48,11 +48,11 @@ body {
} }
.btn:hover { .btn:hover {
@apply bg-blue-darker; @apply bg-blue-70;
} }
.btn:focus { .btn:focus {
@apply bg-blue-darker; @apply bg-blue-70;
} }
.checkbox { .checkbox {
@@ -70,7 +70,7 @@ body {
} }
.checkbox > label::before { .checkbox > label::before {
/* @apply bg-grey-lightest; */ /* @apply bg-grey-10; */
@apply border; @apply border;
@apply rounded-sm; @apply rounded-sm;
@@ -82,16 +82,16 @@ body {
} }
.checkbox > label:hover::before { .checkbox > label:hover::before {
@apply border-blue-dark; @apply border-blue-50;
} }
.checkbox > input:focus + label::before { .checkbox > input:focus + label::before {
@apply border-blue-dark; @apply border-blue-50;
} }
.checkbox > input:checked + label::before { .checkbox > input:checked + label::before {
@apply bg-blue-dark; @apply bg-blue-50;
@apply border-blue-dark; @apply border-blue-50;
background-image: url('../assets/lock.svg'); background-image: url('../assets/lock.svg');
background-position: center; background-position: center;
@@ -104,8 +104,8 @@ body {
} }
.checkbox > input:disabled + label::before { .checkbox > input:disabled + label::before {
@apply bg-blue-dark; @apply bg-blue-50;
@apply border-blue-dark; @apply border-blue-50;
background-image: url('../assets/lock.svg'); background-image: url('../assets/lock.svg');
background-position: center; background-position: center;
@@ -153,9 +153,21 @@ footer li:hover {
white-space: nowrap; white-space: nowrap;
} }
.link-blue {
@apply text-blue-60;
}
.link-blue:hover {
@apply text-blue-70;
}
.link-blue:focus {
@apply text-blue-70;
}
.main-header img { .main-header img {
height: 32px; height: 32px;
width: 170px; width: auto;
} }
.intro { .intro {
@@ -175,32 +187,19 @@ footer li:hover {
@apply bg-white; @apply bg-white;
} }
.mozilla-logo {
background-image: url('../assets/mozilla-logo.svg');
background-repeat: no-repeat;
background-size: 100px, 48px;
overflow: hidden;
text-indent: 120%;
white-space: nowrap;
display: inline-block;
height: 32px;
width: 100px;
flex-shrink: 0;
}
#password-msg::after { #password-msg::after {
content: '\200b'; content: '\200b';
} }
progress { progress {
@apply bg-grey-light; @apply bg-grey-30;
@apply rounded-sm; @apply rounded-sm;
@apply w-full; @apply w-full;
@apply h-1; @apply h-1;
} }
progress::-webkit-progress-bar { progress::-webkit-progress-bar {
@apply bg-grey-light; @apply bg-grey-30;
@apply rounded-sm; @apply rounded-sm;
@apply w-full; @apply w-full;
@apply h-1; @apply h-1;
@@ -284,12 +283,56 @@ select {
@apply m-auto; @apply m-auto;
@apply py-8; @apply py-8;
min-height: 36rem; min-height: 42rem;
max-height: 42rem; max-height: 42rem;
width: calc(100% - 3rem); width: calc(100% - 3rem);
} }
} }
@screen dark {
body {
@apply text-grey-10;
background-image: unset;
}
.btn {
@apply bg-blue-40;
@apply text-white;
}
.btn:hover {
@apply bg-blue-50;
}
.btn:focus {
@apply bg-blue-50;
}
.link-blue {
@apply text-blue-40;
}
.link-blue:hover {
@apply text-blue-50;
}
.link-blue:focus {
@apply text-blue-50;
}
.main > section {
@apply bg-grey-90;
}
@screen md {
.main > section {
@apply border;
@apply border-grey-80;
}
}
}
@tailwind utilities; @tailwind utilities;
@responsive { @responsive {
@@ -325,8 +368,6 @@ select {
.signin:hover, .signin:hover,
.signin:focus { .signin:focus {
@apply shadow-btn;
transform: scale(1.0625); transform: scale(1.0625);
} }
@@ -337,19 +378,19 @@ select {
/* begin signin button color experiment */ /* begin signin button color experiment */
.white-blue { .white-blue {
@apply border-blue-dark; @apply border-blue-60;
@apply border-2; @apply border-2;
@apply text-blue-dark; @apply text-blue-60;
} }
.white-blue:hover, .white-blue:hover,
.white-blue:focus { .white-blue:focus {
@apply bg-blue-dark; @apply bg-blue-60;
@apply text-white; @apply text-white;
} }
.blue { .blue {
@apply bg-blue-dark; @apply bg-blue-60;
@apply text-white; @apply text-white;
} }

View File

@@ -59,7 +59,8 @@ if (process.env.NODE_ENV === 'production') {
sentry: Sentry, sentry: Sentry,
user: new User(storage, LIMITS, window.AUTH_CONFIG), user: new User(storage, LIMITS, window.AUTH_CONFIG),
transfer: null, transfer: null,
fileInfo: null fileInfo: null,
locale: locale()
}; };
const app = routes(choo({ hash: true })); const app = routes(choo({ hash: true }));

1076
app/qrcode.js Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
`app/` contains the browser code that gets bundled into `app.[hash].js`. It's got all the logic, crypto, and UI. All of it gets used in the browser, and some of it by the server for server side rendering. `app/` contains the browser code that gets bundled into `app.[hash].js`. It's got all the logic, crypto, and UI. All of it gets used in the browser, and some of it by the server for server side rendering.
The main entrypoint for the browser is [main.js](./main.js) and on the server [routes/index.js](./routes/index.js) gets imported by [/server/routes/pages.js](../server/routes/pages.js) The main entrypoint for the browser is [main.js](./main.js) and on the server [routes.js](./routes.js) is imported by [/server/routes/pages.js](../server/routes/pages.js)
- `pages` contains display logic an markup for pages - `pages` contains display logic an markup for pages
- `routes` contains route definitions and logic - `routes` contains route definitions and logic

View File

@@ -13,7 +13,10 @@ module.exports = function(app = choo({ hash: true })) {
app.route('/oauth', function(state, emit) { app.route('/oauth', function(state, emit) {
emit('authenticate', state.query.code, state.query.state); emit('authenticate', state.query.code, state.query.state);
}); });
app.route('/login', body(require('./ui/home'))); app.route('/login', function(state, emit) {
emit('replaceState', '/');
setTimeout(() => emit('render'));
});
app.route('*', body(require('./ui/notFound'))); app.route('*', body(require('./ui/notFound')));
return app; return app;
}; };

View File

@@ -9,7 +9,7 @@ import contentDisposition from 'content-disposition';
let noSave = false; let noSave = false;
const map = new Map(); const map = new Map();
const IMAGES = /.*\.(png|svg|jpg)$/; const IMAGES = /.*\.(png|svg|jpg)$/;
const VERSIONED_ASSET = /\.[A-Fa-f0-9]{8}\.(js|css|png|svg|jpg)$/; const VERSIONED_ASSET = /\.[A-Fa-f0-9]{8}\.(js|css|png|svg|jpg)(#\w+)?$/;
const DOWNLOAD_URL = /\/api\/download\/([A-Fa-f0-9]{4,})/; const DOWNLOAD_URL = /\/api\/download\/([A-Fa-f0-9]{4,})/;
const FONT = /\.woff2?$/; const FONT = /\.woff2?$/;

View File

@@ -54,18 +54,22 @@ class Account extends Component {
createElement() { createElement() {
if (!this.enabled) { if (!this.enabled) {
return html` return html`
<div></div> <send-account></send-account>
`; `;
} }
const user = this.state.user; const user = this.state.user;
const translate = this.state.translate; const translate = this.state.translate;
this.setLocal(); this.setLocal();
if (user.loginRequired && !this.local.loggedIn) {
return html`
<send-account></send-account>
`;
}
if (!this.local.loggedIn) { if (!this.local.loggedIn) {
return html` return html`
<send-account> <send-account>
<button <button
class="px-4 py-2 md:px-8 md:py-4 focus:outline signin ${this class="px-4 py-2 md:px-8 md:py-4 focus:outline signin border-2 link-blue border-blue-60 hover:border-blue-70 dark:border-blue-40 dark:hover:border-blue-50"
.buttonClass}"
onclick="${e => this.login(e)}" onclick="${e => this.login(e)}"
title="${translate('signInOnlyButton')}" title="${translate('signInOnlyButton')}"
> >
@@ -79,19 +83,19 @@ class Account extends Component {
<input <input
type="image" type="image"
alt="${user.email}" alt="${user.email}"
class="w-8 h-8 rounded-full border text-blue md:text-white focus:outline" class="w-8 h-8 rounded-full border text-blue-50 md:text-white focus:outline"
src="${user.avatar}" src="${user.avatar}"
onclick="${e => this.avatarClick(e)}" onclick="${e => this.avatarClick(e)}"
/> />
<ul <ul
id="accountMenu" id="accountMenu"
class="invisible absolute top-0 right-0 mt-10 pt-2 pb-2 bg-white shadow-md whitespace-no-wrap outline-none z-50" class="invisible absolute top-0 right-0 mt-10 pt-2 pb-2 bg-white shadow-md whitespace-no-wrap outline-none z-50 dark:bg-grey-80"
onblur="${e => this.hideMenu(e)}" onblur="${e => this.hideMenu(e)}"
> >
<li class="p-2 text-grey-dark">${user.email}</li> <li class="p-2 text-grey-60 dark:text-grey-50">${user.email}</li>
<li> <li>
<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-80 dark:text-grey-30 hover:bg-blue-50 hover:text-white cursor-pointer focus:outline"
onclick="${e => this.logout(e)}" onclick="${e => this.logout(e)}"
title="${translate('signOut')}" title="${translate('signOut')}"
> >

View File

@@ -30,6 +30,12 @@ function password(state) {
return html` return html`
<div class="mb-2 px-1"> <div class="mb-2 px-1">
<input
id="autocomplete-decoy"
class="hidden"
type="password"
value="lol"
/>
<div class="checkbox inline-block mr-3"> <div class="checkbox inline-block mr-3">
<input <input
id="add-password" id="add-password"
@@ -42,36 +48,74 @@ function password(state) {
${state.translate('addPassword')} ${state.translate('addPassword')}
</label> </label>
</div> </div>
<input <div class="relative inline-block my-1">
id="password-input" <input
class="${state.archive.password id="password-input"
? '' class="${state.archive.password
: 'invisible'} border rounded focus:border-blue-dark leading-normal my-1 py-1 px-2 h-8" ? ''
autocomplete="off" : 'invisible'} border rounded focus:border-blue-60 leading-normal my-1 py-1 px-2 h-8 dark:bg-grey-80"
maxlength="${MAX_LENGTH}" autocomplete="off"
type="password" maxlength="${MAX_LENGTH}"
oninput="${inputChanged}" type="password"
onfocus="${focused}" oninput="${inputChanged}"
placeholder="${state.translate('unlockInputPlaceholder')}" onfocus="${focused}"
value="${state.archive.password || ''}" placeholder="${state.translate('unlockInputPlaceholder')}"
/> value="${state.archive.password || ''}"
/>
<button
id="password-preview-button"
type="button"
class="${state.archive.password
? ''
: 'invisible'} absolute top-0 right-0 w-8 h-8"
onclick="${onPasswordPreviewButtonclicked}"
>
<img
src="${assets.get('eye.svg')}"
width="22"
height="22"
class="m-auto mt-2"
/>
</button>
</div>
<label <label
id="password-msg" id="password-msg"
for="password-input" for="password-input"
class="block text-xs text-grey-darker" class="block text-xs text-grey-70"
></label> ></label>
</div> </div>
`; `;
function onPasswordPreviewButtonclicked(event) {
event.preventDefault();
const input = document.getElementById('password-input');
const eyeIcon = event.currentTarget.querySelector('img');
if (input.type === 'password') {
input.type = 'text';
eyeIcon.src = assets.get('eye-off.svg');
} else {
input.type = 'password';
eyeIcon.src = assets.get('eye.svg');
}
input.focus();
}
function togglePasswordInput(event) { function togglePasswordInput(event) {
event.stopPropagation(); event.stopPropagation();
const checked = event.target.checked; const checked = event.target.checked;
const input = document.getElementById('password-input'); const input = document.getElementById('password-input');
const passwordPreviewButton = document.getElementById(
'password-preview-button'
);
if (checked) { if (checked) {
input.classList.remove('invisible'); input.classList.remove('invisible');
passwordPreviewButton.classList.remove('invisible');
input.focus(); input.focus();
} else { } else {
input.classList.add('invisible'); input.classList.add('invisible');
passwordPreviewButton.classList.add('invisible');
input.value = ''; input.value = '';
document.getElementById('password-msg').textContent = ''; document.getElementById('password-msg').textContent = '';
state.archive.password = null; state.archive.password = null;
@@ -106,7 +150,9 @@ function password(state) {
function fileInfo(file, action) { function fileInfo(file, action) {
return html` return html`
<send-file class="flex flex-row items-center p-3 w-full"> <send-file class="flex flex-row items-center p-3 w-full">
<img class="h-8" src="${assets.get('blue_file.svg')}"/> <svg class="h-8 w-8 text-white dark:text-grey-90">
<use xlink:href="${assets.get('blue_file.svg')}#icon"/>
</svg>
<p class="ml-4 w-full"> <p class="ml-4 w-full">
<h1 class="text-base font-medium word-break-all">${file.name}</h1> <h1 class="text-base font-medium word-break-all">${file.name}</h1>
<div class="text-sm font-normal opacity-75 pt-1">${bytes( <div class="text-sm font-normal opacity-75 pt-1">${bytes(
@@ -120,7 +166,9 @@ function fileInfo(file, action) {
function archiveInfo(archive, action) { function archiveInfo(archive, action) {
return html` return html`
<p class="w-full flex items-center"> <p class="w-full flex items-center">
<img class="mr-3 flex-shrink-0" src="${assets.get('blue_file.svg')}"/> <svg class="h-8 w-6 mr-3 flex-shrink-0 text-white dark:text-grey-90">
<use xlink:href="${assets.get('blue_file.svg')}#icon"/>
</svg>
<p class="flex-grow"> <p class="flex-grow">
<h1 class="text-base font-medium word-break-all">${archive.name}</h1> <h1 class="text-base font-medium word-break-all">${archive.name}</h1>
<div class="text-sm font-normal opacity-75 pt-1">${bytes( <div class="text-sm font-normal opacity-75 pt-1">${bytes(
@@ -140,7 +188,7 @@ function archiveDetails(translate, archive) {
ontoggle="${toggled}" ontoggle="${toggled}"
> >
<summary <summary
class="flex items-center text-blue-dark text-sm cursor-pointer outline-none" class="flex items-center link-blue text-sm cursor-pointer outline-none"
> >
<svg <svg
class="fill-current w-4 h-4 mr-1" class="fill-current w-4 h-4 mr-1"
@@ -170,20 +218,25 @@ module.exports = function(state, emit, archive) {
state.capabilities.share || platform() === 'android' state.capabilities.share || platform() === 'android'
? html` ? html`
<button <button
class="text-blue-dark hover:text-blue-darker focus:text-blue-darker self-end flex items-end" class="link-blue self-end flex items-start"
onclick=${share} onclick=${share}
title="Share link" title="Share link"
> >
<img src="${assets.get('share-24.svg')}" class="mr-2" />Share link <svg class="h-4 w-4 mr-2">
<use xlink:href="${assets.get('share-24.svg')}#icon" />
</svg>
Share link
</button> </button>
` `
: html` : html`
<button <button
class="text-blue-dark hover:text-blue-darker focus:text-blue-darker focus:outline self-end flex items-center" class="link-blue focus:outline self-end flex items-center"
onclick=${copy} onclick=${copy}
title="${state.translate('copyLinkButton')}" title="${state.translate('copyLinkButton')}"
> >
<img src="${assets.get('copy-16.svg')}" class="mr-2" /> <svg class="h-4 w-4 mr-2">
<use xlink:href="${assets.get('copy-16.svg')}#icon" />
</svg>
${state.translate('copyLinkButton')} ${state.translate('copyLinkButton')}
</button> </button>
`; `;
@@ -191,12 +244,14 @@ module.exports = function(state, emit, archive) {
platform() === 'web' platform() === 'web'
? html` ? html`
<a <a
class="flex items-baseline text-blue-dark hover:text-blue-darker focus:text-blue-darker" class="flex items-baseline link-blue"
href="${archive.url}" href="${archive.url}"
title="${state.translate('downloadButtonLabel')}" title="${state.translate('downloadButtonLabel')}"
tabindex="0" tabindex="0"
> >
<img src="${assets.get('dl.svg')}" class="mr-2" /> <svg class="h-4 w-3 mr-2">
<use xlink:href="${assets.get('dl.svg')}#icon" />
</svg>
${state.translate('downloadButtonLabel')} ${state.translate('downloadButtonLabel')}
</a> </a>
` `
@@ -206,7 +261,7 @@ module.exports = function(state, emit, archive) {
return html` return html`
<send-archive <send-archive
id="archive-${archive.id}" id="archive-${archive.id}"
class="flex flex-col items-start rounded shadow-light bg-white p-4 w-full" class="flex flex-col items-start rounded shadow-light bg-white p-4 w-full dark:bg-grey-90 dark:border dark:border-grey-70"
> >
${archiveInfo( ${archiveInfo(
archive, archive,
@@ -225,7 +280,7 @@ module.exports = function(state, emit, archive) {
${expiryInfo(state.translate, archive)} ${expiryInfo(state.translate, archive)}
</div> </div>
${archiveDetails(state.translate, archive)} ${archiveDetails(state.translate, archive)}
<hr class="w-full border-t my-4" /> <hr class="w-full border-t my-4 dark:border-grey-70" />
<div class="flex justify-between w-full"> <div class="flex justify-between w-full">
${dl} ${copyOrShare} ${dl} ${copyOrShare}
</div> </div>
@@ -256,7 +311,7 @@ module.exports = function(state, emit, archive) {
try { try {
await navigator.share({ await navigator.share({
title: state.translate('-send-brand'), title: state.translate('-send-brand'),
text: `Download "${archive.name}" with Firefox Send: simple, safe file sharing`, text: `Download "${archive.name}" with Send: simple, safe file sharing`,
//state.translate('shareMessage', { name }), //state.translate('shareMessage', { name }),
url: archive.url url: archive.url
}); });
@@ -269,18 +324,21 @@ module.exports = function(state, emit, archive) {
module.exports.wip = function(state, emit) { module.exports.wip = function(state, emit) {
return html` return html`
<send-upload-area class="flex flex-col bg-white h-full w-full" id="wip"> <send-upload-area
class="flex flex-col bg-white h-full w-full dark:bg-grey-90"
id="wip"
>
${list( ${list(
Array.from(state.archive.files) Array.from(state.archive.files)
.reverse() .reverse()
.map(f => .map(f =>
fileInfo(f, remove(f, state.translate('deleteButtonHover'))) fileInfo(f, remove(f, state.translate('deleteButtonHover')))
), ),
'flex-shrink bg-grey-lightest rounded-t overflow-y-auto px-6 py-4 md:h-full md:max-h-half-screen', 'flex-shrink bg-grey-10 rounded-t overflow-y-auto px-6 py-4 md:h-full md:max-h-half-screen dark:bg-black',
'bg-white px-2 my-2 shadow-light rounded' 'bg-white px-2 my-2 shadow-light rounded dark:bg-grey-90 dark:border dark:border-grey-80'
)} )}
<div <div
class="flex-shrink-0 flex-grow flex items-end p-4 bg-grey-lightest rounded-b mb-1 font-medium" class="flex-shrink-0 flex-grow flex items-end p-4 bg-grey-10 rounded-b mb-1 font-medium dark:bg-grey-90"
> >
<input <input
id="file-upload" id="file-upload"
@@ -300,10 +358,12 @@ module.exports.wip = function(state, emit) {
class="flex items-center cursor-pointer" class="flex items-center cursor-pointer"
title="${state.translate('addFilesButton')}" title="${state.translate('addFilesButton')}"
> >
<img src="${assets.get('addfiles.svg')}" class="w-6 h-6 mr-2" /> <svg class="w-6 h-6 mr-2 link-blue">
<use xlink:href="${assets.get('addfiles.svg')}#plus" />
</svg>
${state.translate('addFilesButton')} ${state.translate('addFilesButton')}
</label> </label>
<div class="font-normal text-sm text-grey-darker"> <div class="font-normal text-sm text-grey-70 dark:text-grey-40">
${state.translate('totalSize', { ${state.translate('totalSize', {
size: bytes(state.archive.size) size: bytes(state.archive.size)
})} })}
@@ -378,22 +438,22 @@ module.exports.uploading = function(state, emit) {
return html` return html`
<send-upload-area <send-upload-area
id="${archive.id}" id="${archive.id}"
class="flex flex-col items-start rounded shadow-light bg-white p-4 w-full" class="flex flex-col items-start rounded shadow-light bg-white p-4 w-full dark:bg-grey-90"
> >
${archiveInfo(archive)} ${archiveInfo(archive)}
<div class="text-xs text-grey-dark w-full mt-2 mb-2"> <div class="text-xs opacity-75 w-full mt-2 mb-2">
${expiryInfo(state.translate, { ${expiryInfo(state.translate, {
dlimit: state.archive.dlimit, dlimit: state.archive.dlimit,
dtotal: 0, dtotal: 0,
expiresAt: Date.now() + 500 + state.archive.timeLimit * 1000 expiresAt: Date.now() + 500 + state.archive.timeLimit * 1000
})} })}
</div> </div>
<div class="text-blue-dark text-sm font-medium mt-2"> <div class="link-blue text-sm font-medium mt-2">
${progressPercent} ${progressPercent}
</div> </div>
<progress class="my-3" value="${progress}">${progressPercent}</progress> <progress class="my-3" value="${progress}">${progressPercent}</progress>
<button <button
class="text-blue-dark hover:text-blue-darker focus:text-blue-darker self-end font-medium" class="link-blue self-end font-medium"
onclick=${cancel} onclick=${cancel}
title="${state.translate('deletePopupCancel')}" title="${state.translate('deletePopupCancel')}"
> >
@@ -415,7 +475,7 @@ module.exports.empty = function(state, emit) {
? '' ? ''
: html` : html`
<button <button
class="center font-medium text-sm text-blue-dark hover:text-blue-darker focus:text-blue-darker mt-4 mb-2" class="center font-medium text-sm link-blue mt-4 mb-2"
onclick="${event => { onclick="${event => {
event.stopPropagation(); event.stopPropagation();
emit('signup-cta', 'drop'); emit('signup-cta', 'drop');
@@ -428,14 +488,16 @@ module.exports.empty = function(state, emit) {
`; `;
return html` return html`
<send-upload-area <send-upload-area
class="flex flex-col items-center justify-center border-2 border-dashed border-grey-transparent rounded px-6 py-16 h-full w-full" class="flex flex-col items-center justify-center border-2 border-dashed border-grey-transparent rounded px-6 py-16 h-full w-full dark:border-grey-60"
onclick="${e => { onclick="${e => {
if (e.target.tagName !== 'LABEL') { if (e.target.tagName !== 'LABEL') {
document.getElementById('file-upload').click(); document.getElementById('file-upload').click();
} }
}}" }}"
> >
<img src="${assets.get('addfiles.svg')}" width="48" height="48" /> <svg class="w-10 h-10 link-blue">
<use xlink:href="/${assets.get('addfiles.svg')}#plus" />
</svg>
<div class="pt-6 pb-2 text-center text-lg font-bold tracking-wide"> <div class="pt-6 pb-2 text-center text-lg font-bold tracking-wide">
${state.translate('dragAndDropFiles')} ${state.translate('dragAndDropFiles')}
</div> </div>
@@ -469,14 +531,11 @@ module.exports.empty = function(state, emit) {
`; `;
function focus(event) { function focus(event) {
event.target.nextElementSibling.classList.add('bg-blue-darker', 'outline'); event.target.nextElementSibling.classList.add('bg-blue-70', 'outline');
} }
function blur(event) { function blur(event) {
event.target.nextElementSibling.classList.remove( event.target.nextElementSibling.classList.remove('bg-blue-70', 'outline');
'bg-blue-darker',
'outline'
);
} }
function add(event) { function add(event) {
@@ -501,8 +560,10 @@ module.exports.preview = function(state, emit) {
</div> </div>
`; `;
return html` return html`
<send-archive class="flex flex-col max-h-full bg-white p-4 w-full md:w-128"> <send-archive
<div class="border rounded py-3 px-6"> class="flex flex-col max-h-full bg-white p-4 w-full md:w-128 dark:bg-grey-90"
>
<div class="border rounded py-3 px-6 dark:border-grey-70">
${archiveInfo(archive)} ${details} ${archiveInfo(archive)} ${details}
</div> </div>
<button <button
@@ -529,10 +590,10 @@ module.exports.downloading = function(state) {
const progressPercent = percent(progress); const progressPercent = percent(progress);
return html` return html`
<send-archive <send-archive
class="flex flex-col bg-white rounded shadow-light p-4 w-full max-w-sm md:w-128" class="flex flex-col bg-white rounded shadow-light p-4 w-full max-w-sm md:w-128 dark:bg-grey-90"
> >
${archiveInfo(archive)} ${archiveInfo(archive)}
<div class="text-blue-dark text-sm font-medium mt-2"> <div class="link-blue text-sm font-medium mt-2">
${progressPercent} ${progressPercent}
</div> </div>
<progress class="my-3" value="${progress}">${progressPercent}</progress> <progress class="my-3" value="${progress}">${progressPercent}</progress>

View File

@@ -1,27 +1,15 @@
const html = require('choo/html'); const html = require('choo/html');
const Promo = require('./promo');
const Header = require('./header'); const Header = require('./header');
const Footer = require('./footer'); const Footer = require('./footer');
function banner(state) {
if (state.layout) {
return; // server side
}
const show =
!state.capabilities.standalone && !state.route.startsWith('/unsupported/');
if (show) {
return state.cache(Promo, 'promo').render();
}
}
module.exports = function body(main) { module.exports = function body(main) {
return function(state, emit) { return function(state, emit) {
const b = html` const b = html`
<body <body
class="flex flex-col items-center font-sans md:h-screen md:bg-grey-lightest" class="flex flex-col items-center font-sans md:h-screen md:bg-grey-10 dark:bg-black"
> >
${banner(state, emit)} ${state.cache(Header, 'header').render()} ${state.cache(Header, 'header').render()} ${main(state, emit)}
${main(state, emit)} ${state.cache(Footer, 'footer').render()} ${state.cache(Footer, 'footer').render()}
</body> </body>
`; `;
if (state.layout) { if (state.layout) {

View File

@@ -1,5 +1,6 @@
const html = require('choo/html'); const html = require('choo/html');
const { copyToClipboard } = require('../utils'); const { copyToClipboard } = require('../utils');
const qr = require('./qr');
module.exports = function(name, url) { module.exports = function(name, url) {
const dialog = function(state, emit, close) { const dialog = function(state, emit, close) {
@@ -10,17 +11,29 @@ module.exports = function(name, url) {
<h1 class="text-3xl font-bold my-4"> <h1 class="text-3xl font-bold my-4">
${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-80 word-break-all dark:text-grey-40"
>
${state.translate('copyLinkDescription')} <br /> ${state.translate('copyLinkDescription')} <br />
${name} ${name}
</p> </p>
<input <div class="flex flex-row items-center justify-center w-full">
type="text" <input
id="share-url" type="text"
class="w-full my-4 border rounded-lg leading-loose h-12 px-2 py-1" id="share-url"
value="${url}" class="block w-full my-4 border rounded-lg leading-loose h-12 px-2 py-1 dark:bg-grey-80"
readonly="true" value="${url}"
/> readonly="true"
/>
<button
id="qr-btn"
class="w-16 m-1 p-1"
onclick="${toggleQR}"
title="QR code"
>
${qr(url)}
</button>
</div>
<button <button
class="btn rounded-lg w-full flex-shrink-0 focus:outline" class="btn rounded-lg w-full flex-shrink-0 focus:outline"
onclick="${copy}" onclick="${copy}"
@@ -29,7 +42,7 @@ module.exports = function(name, url) {
${state.translate('copyLinkButton')} ${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="link-blue my-4 font-medium cursor-pointer focus:outline"
onclick="${close}" onclick="${close}"
title="${state.translate('okButton')}" title="${state.translate('okButton')}"
> >
@@ -38,6 +51,19 @@ module.exports = function(name, url) {
</send-copy-dialog> </send-copy-dialog>
`; `;
function toggleQR(event) {
event.stopPropagation();
const shareUrl = document.getElementById('share-url');
const qrBtn = document.getElementById('qr-btn');
if (shareUrl.classList.contains('hidden')) {
shareUrl.classList.replace('hidden', 'block');
qrBtn.classList.replace('w-48', 'w-16');
} else {
shareUrl.classList.replace('block', 'hidden');
qrBtn.classList.replace('w-16', 'w-48');
}
}
function copy(event) { function copy(event) {
event.stopPropagation(); event.stopPropagation();
copyToClipboard(url); copyToClipboard(url);

View File

@@ -41,7 +41,9 @@ function preview(state, emit) {
<h1 class="text-3xl font-bold mb-4"> <h1 class="text-3xl font-bold mb-4">
${state.translate('downloadTitle')} ${state.translate('downloadTitle')}
</h1> </h1>
<p class="w-full text-grey-darkest text-center leading-normal"> <p
class="w-full text-grey-80 text-center leading-normal dark:text-grey-40"
>
${state.translate('downloadDescription')} ${state.translate('downloadDescription')}
</p> </p>
${archiveTile.preview(state, emit)} ${archiveTile.preview(state, emit)}
@@ -53,9 +55,13 @@ module.exports = function(state, emit) {
let content = ''; let content = '';
if (!state.fileInfo) { if (!state.fileInfo) {
state.fileInfo = createFileInfo(state); state.fileInfo = createFileInfo(state);
if (!state.fileInfo.nonce) { if (downloadMetadata.status === 404) {
return notFound(state); return notFound(state);
} }
if (!state.fileInfo.nonce) {
// coming from something like the browser back button
return location.reload();
}
} }
if (!state.transfer && !state.fileInfo.requiresPassword) { if (!state.transfer && !state.fileInfo.requiresPassword) {

View File

@@ -2,21 +2,27 @@ const html = require('choo/html');
const assets = require('../../common/assets'); const assets = require('../../common/assets');
module.exports = function(state) { module.exports = function(state) {
const btnText = state.user.loggedIn ? 'okButton' : 'sendYourFilesLink';
return html` return html`
<div <div
id="download-complete" id="download-complete"
class="flex flex-col items-center justify-center h-full w-full bg-white p-2" class="flex flex-col items-center justify-center h-full w-full bg-white p-2 dark:bg-grey-90"
> >
<h1 class="text-center text-3xl font-bold my-2"> <h1 class="text-center text-3xl font-bold my-2">
${state.translate('downloadFinish')} ${state.translate('downloadFinish')}
</h1> </h1>
<img src="${assets.get('completed.svg')}" class="my-12 h-48" /> <img src="${assets.get('completed.svg')}" class="my-8 h-48" />
<p class="text-grey-darkest leading-normal"> <p
class="text-grey-80 leading-normal dark:text-grey-40 ${state.user
.loggedIn
? 'hidden'
: ''}"
>
${state.translate('trySendDescription')} ${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"
>${state.translate('sendYourFilesLink')}</a >${state.translate(btnText)}</a
> >
</p> </p>
</div> </div>

View File

@@ -6,12 +6,14 @@ module.exports = function(state, emit) {
const div = html` const div = html`
<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 dark:bg-grey-90"
> >
<h1 class="text-3xl font-bold mb-4"> <h1 class="text-3xl font-bold mb-4">
${state.translate('downloadTitle')} ${state.translate('downloadTitle')}
</h1> </h1>
<p class="w-full mb-4 text-center text-grey-darkest leading-normal"> <p
class="w-full mb-4 text-center text-grey-80 dark:text-grey-40 leading-normal"
>
${state.translate('downloadDescription')} ${state.translate('downloadDescription')}
</p> </p>
<form <form
@@ -19,11 +21,17 @@ module.exports = function(state, emit) {
onsubmit="${checkPassword}" onsubmit="${checkPassword}"
data-no-csrf data-no-csrf
> >
<input
id="autocomplete-decoy"
class="hidden"
type="password"
value="lol"
/>
<input <input
id="password-input" id="password-input"
class="w-full border-l border-t border-b rounded-l-lg rounded-r-none ${invalid class="w-full border-l border-t border-b rounded-l-lg rounded-r-none ${invalid
? 'border-red' ? 'border-red dark:border-red-40'
: 'border-grey'} leading-loose px-2 py-1" : 'border-grey'} leading-loose px-2 py-1 dark:bg-grey-80"
maxlength="32" maxlength="32"
autocomplete="off" autocomplete="off"
placeholder="${state.translate('unlockInputPlaceholder')}" placeholder="${state.translate('unlockInputPlaceholder')}"
@@ -34,7 +42,7 @@ module.exports = function(state, emit) {
type="submit" type="submit"
id="password-btn" id="password-btn"
class="btn rounded-r-lg rounded-l-none ${invalid class="btn rounded-r-lg rounded-l-none ${invalid
? 'bg-red hover:bg-red focus:bg-red' ? 'bg-red hover:bg-red focus:bg-red dark:bg-red-40'
: ''}" : ''}"
value="${state.translate('unlockButtonLabel')}" value="${state.translate('unlockButtonLabel')}"
title="${state.translate('unlockButtonLabel')}" title="${state.translate('unlockButtonLabel')}"
@@ -42,7 +50,7 @@ module.exports = function(state, emit) {
</form> </form>
<label <label
id="password-error" id="password-error"
class="${invalid ? '' : 'invisible'} text-red my-4" class="${invalid ? '' : 'invisible'} text-red dark:text-red-40 my-4"
for="password-input" for="password-input"
> >
${state.translate('passwordTryAgain')} ${state.translate('passwordTryAgain')}
@@ -61,8 +69,13 @@ module.exports = function(state, emit) {
const input = document.getElementById('password-input'); const input = document.getElementById('password-input');
const btn = document.getElementById('password-btn'); const btn = document.getElementById('password-btn');
label.classList.add('invisible'); label.classList.add('invisible');
input.classList.remove('border-red'); input.classList.remove('border-red', 'dark:border-red-40');
btn.classList.remove('bg-red', 'hover:bg-red', 'focus:bg-red'); btn.classList.remove(
'bg-red',
'hover:bg-red',
'focus:bg-red',
'dark:bg-red-40'
);
} }
function checkPassword(event) { function checkPassword(event) {
@@ -72,7 +85,9 @@ module.exports = function(state, emit) {
const password = el.value; const password = el.value;
if (password.length > 0) { if (password.length > 0) {
document.getElementById('password-btn').disabled = true; document.getElementById('password-btn').disabled = true;
state.fileInfo.url = window.location.href; // Strip any url parameters between fileId and secretKey
const fileInfoUrl = window.location.href.replace(/\?.+#/, '#');
state.fileInfo.url = fileInfoUrl;
state.fileInfo.password = password; state.fileInfo.password = password;
emit('getMetadata'); emit('getMetadata');
} }

View File

@@ -3,6 +3,7 @@ const assets = require('../../common/assets');
const modal = require('./modal'); const modal = require('./modal');
module.exports = function(state, emit) { module.exports = function(state, emit) {
const btnText = state.user.loggedIn ? 'okButton' : 'sendYourFilesLink';
return html` return html`
<main class="main"> <main class="main">
${state.modal && modal(state, emit)} ${state.modal && modal(state, emit)}
@@ -13,12 +14,17 @@ module.exports = function(state, emit) {
${state.translate('errorPageHeader')} ${state.translate('errorPageHeader')}
</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-80 leading-normal dark:text-grey-40 ${state
.user.loggedIn
? 'hidden'
: ''}"
>
${state.translate('trySendDescription')} ${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"
>${state.translate('sendYourFilesLink')}</a >${state.translate(btnText)}</a
> >
</p> </p>
</section> </section>

View File

@@ -0,0 +1,41 @@
const { platform } = require('../utils');
const assets = require('../../common/assets');
const size = 32;
const loaderWidth = 5;
const loaderColor = '#0090ed';
function drawCircle(canvas, context, color, lineWidth, outerWidth, percent) {
canvas.width = canvas.height = outerWidth;
context.translate(outerWidth * 0.5, outerWidth * 0.5);
context.rotate(-Math.PI * 0.5);
const radius = (outerWidth - lineWidth) * 0.5;
context.beginPath();
context.arc(0, 0, radius, 0, Math.PI * 2 * percent, false);
context.strokeStyle = color;
context.lineCap = 'square';
context.lineWidth = lineWidth;
context.stroke();
}
function drawNewFavicon(progressRatio) {
const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
drawCircle(canvas, context, '#efefef', loaderWidth, size, 1);
drawCircle(canvas, context, loaderColor, loaderWidth, size, progressRatio);
return canvas.toDataURL();
}
module.exports.updateFavicon = function(progressRatio) {
if (platform() === 'web') {
const link = document.querySelector("link[rel='icon'][sizes='32x32']");
const progress = progressRatio * 100;
if (progress === 0 || progress === 100) {
link.type = 'image/png';
link.href = assets.get('favicon-32x32.png');
return;
}
link.href = drawNewFavicon(progressRatio);
}
};

View File

@@ -1,7 +1,5 @@
const html = require('choo/html'); const html = require('choo/html');
const Component = require('choo/component'); const Component = require('choo/component');
const version = require('../../package.json').version;
const { browserName } = require('../utils');
class Footer extends Component { class Footer extends Component {
constructor(name, state) { constructor(name, state) {
@@ -15,47 +13,19 @@ class Footer extends Component {
createElement() { createElement() {
const translate = this.state.translate; const translate = this.state.translate;
const browser = browserName();
const feedbackUrl = `https://qsurvey.mozilla.com/s3/Firefox-Send-Product-Feedback?ver=${version}&browser=${browser}`;
return html` return html`
<footer <footer
class="flex flex-col md:flex-row items-start w-full flex-none self-start p-6 md:p-8 font-medium text-xs text-grey-dark md:items-center justify-between" class="flex flex-col md:flex-row items-start w-full flex-none self-start p-6 md:p-8 font-medium text-xs text-grey-60 dark:text-grey-40 md:items-center justify-between"
> >
<a <div></div>
class="mozilla-logo pb-10 md:pb-0 m-2"
href="https://www.mozilla.org/"
>
Mozilla
</a>
<ul <ul
class="flex flex-col md:flex-row items-start md:items-center md:justify-end" class="flex flex-col md:flex-row items-start md:items-center md:justify-end"
> >
<li class="m-2">
<a href="https://www.mozilla.org/about/legal/terms/services/#send">
${translate('footerLinkLegal')}
</a>
</li>
<li class="m-2"> <li class="m-2">
<a href="/legal"> ${translate('footerLinkPrivacy')} </a> <a href="/legal"> ${translate('footerLinkPrivacy')} </a>
</li> </li>
<li class="m-2"> <li class="m-2">
<a href="https://www.mozilla.org/privacy/websites/#cookies"> <a href="https://gitlab.com/timvisee/send">Source</a>
${translate('footerLinkCookies')}
</a>
</li>
<li class="m-2">
<a href="https://github.com/mozilla/send">GitHub </a>
</li>
<li class="m-2">
<a
href="${feedbackUrl}"
rel="noreferrer noopener"
class="feedback-link"
alt="Feedback"
target="_blank"
>
${translate('siteFeedback')}
</a>
</li> </li>
</ul> </ul>
</footer> </footer>

View File

@@ -16,15 +16,27 @@ class Header extends Component {
this.account.render(); this.account.render();
return false; return false;
} }
createElement() { createElement() {
const title = const title =
platform() === 'android' platform() === 'android'
? html` ? html`
<a class=""><img src="${assets.get('logo.svg')}"/></a> <a class="flex flex-row items-center">
<img src="${assets.get('icon.svg')}" />
<svg class="w-48">
<use xlink:href="${assets.get('wordmark.svg')}#logo" />
</svg>
</a>
` `
: html` : html`
<a class="" href="/"><img src="${assets.get('logo.svg')}"/></a> <a class="flex flex-row items-center" href="/">
<img
alt="${this.state.translate('title')}"
src="${assets.get('icon.svg')}"
/>
<svg viewBox="66 0 340 64" class="w-48 md:w-64">
<use xlink:href="${assets.get('wordmark.svg')}#logo" />
</svg>
</a>
`; `;
return html` return html`
<header <header

View File

@@ -4,7 +4,7 @@ const assets = require('../../common/assets');
module.exports = function intro(state) { module.exports = function intro(state) {
return html` return html`
<send-intro <send-intro
class="flex flex-col items-center justify-center bg-white px-6 md:py-0 py-6 mb-0 h-full w-full" class="flex flex-col items-center justify-center bg-white px-6 md:py-0 py-6 mb-0 h-full w-full dark:bg-grey-90"
> >
<div class="mt-12 flex flex-col h-full"> <div class="mt-12 flex flex-col h-full">
<h1 class="text-3xl font-bold md:pb-2"> <h1 class="text-3xl font-bold md:pb-2">

View File

@@ -2,11 +2,12 @@ const html = require('choo/html');
const modal = require('./modal'); const modal = require('./modal');
module.exports = function(state, emit) { module.exports = function(state, emit) {
state.modal = null;
return html` return html`
<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-4 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-30 md:border-none md:px-12 md:py-16 shadow w-full md:h-full dark:bg-grey-90"
> >
<h1 class="text-center text-3xl font-bold"> <h1 class="text-center text-3xl font-bold">
${state.translate('legalTitle')} ${state.translate('legalTitle')}
@@ -19,19 +20,19 @@ module.exports = function(state, emit) {
href="https://www.mozilla.org/privacy/" href="https://www.mozilla.org/privacy/"
target="__blank" target="__blank"
rel="noopener noreferrer" rel="noopener noreferrer"
class="text-blue-dark hover:underline" class="link-blue hover:underline"
>Mozilla Privacy Policy</a >Mozilla Privacy Policy</a
> >
<span <span
>describes how we handle that information. Below are the top >describes how we handle that information. Below are the top
things you should know about Firefox Send. You can also view the things you should know about Send. You can also view the
code</span code</span
> >
<a <a
href="https://github.com/mozilla/send/blob/master/docs/metrics.md" href="https://github.com/mozilla/send/blob/master/docs/metrics.md"
target="__blank" target="__blank"
rel="noopener noreferrer" rel="noopener noreferrer"
class="text-blue-dark hover:underline" class="link-blue hover:underline"
>here</a >here</a
>. >.
</p> </p>

View File

@@ -3,13 +3,12 @@ const html = require('choo/html');
module.exports = function(state, emit) { module.exports = function(state, emit) {
return html` return html`
<send-modal <send-modal
class="absolute inset-0 flex items-center justify-center overflow-hidden z-40 bg-white md:rounded-xl md:my-8" class="absolute inset-0 flex items-center justify-center overflow-hidden z-40 bg-white md:rounded-xl md:my-8 dark:bg-grey-90"
onclick="${close}"
> >
<div <div
class="h-full w-full max-h-screen absolute top-0 flex items-center justify-center" class="h-full w-full max-h-screen absolute top-0 flex justify-center md:items-center"
> >
<div class="w-full" onclick="${e => e.stopPropagation()}"> <div class="w-full">
${state.modal(state, emit, close)} ${state.modal(state, emit, close)}
</div> </div>
</div> </div>

View File

@@ -12,16 +12,16 @@ module.exports = function(state, emit) {
'downloadTitle' 'downloadTitle'
)}</h1> )}</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-50 rounded md:w-4/5 text-orange-60 bg-yellow-40 text-center leading-normal"
> >
⚠️ ${state.translate('noStreamsWarning')} ⚠️ ⚠️ ${state.translate('noStreamsWarning')} ⚠️
</p> </p>
<form class="md:w-128" onsubmit=${submit}> <form class="md:w-128" onsubmit=${submit}>
<fieldset class="border rounded p-4 my-4" onchange=${optionChanged}> <fieldset class="border rounded p-4 my-4" onchange=${optionChanged}>
<div class="flex items-center mb-2"> <div class="flex items-center mb-2">
<img class="mr-3 flex-shrink-0" src="${assets.get( <svg class="h-8 w-6 mr-3 flex-shrink-0 text-white dark:text-grey-90">
'blue_file.svg' <use xlink:href="${assets.get('blue_file.svg')}#icon"/>
)}"/> </svg>
<p class="flex-grow"> <p class="flex-grow">
<h1 class="text-base font-medium word-break-all">${ <h1 class="text-base font-medium word-break-all">${
archive.name archive.name
@@ -55,6 +55,11 @@ module.exports = function(state, emit) {
value="${state.translate('copyLinkButton')}" value="${state.translate('copyLinkButton')}"
title="${state.translate('copyLinkButton')}" title="${state.translate('copyLinkButton')}"
type="submit" /> type="submit" />
<p
class="text-grey-80 leading-normal dark:text-grey-40 font-semibold text-center md:my-8 md:text-left"
>
${state.translate('downloadConfirmDescription')}
</p>
</form> </form>
</div> </div>
`; `;
@@ -64,6 +69,7 @@ module.exports = function(state, emit) {
const choice = event.target.value; const choice = event.target.value;
const button = event.currentTarget.nextElementSibling; const button = event.currentTarget.nextElementSibling;
let title = button.title; let title = button.title;
console.error(choice, title);
switch (choice) { switch (choice) {
case 'copy': case 'copy':
title = state.translate('copyLinkButton'); title = state.translate('copyLinkButton');

View File

@@ -3,6 +3,7 @@ const assets = require('../../common/assets');
const modal = require('./modal'); const modal = require('./modal');
module.exports = function(state, emit) { module.exports = function(state, emit) {
const btnText = state.user.loggedIn ? 'okButton' : 'sendYourFilesLink';
return html` return html`
<main class="main"> <main class="main">
${state.modal && modal(state, emit)} ${state.modal && modal(state, emit)}
@@ -13,12 +14,17 @@ module.exports = function(state, emit) {
${state.translate('expiredTitle')} ${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-80 leading-normal dark:text-grey-40 ${state
.user.loggedIn
? 'hidden'
: ''}"
>
${state.translate('trySendDescription')} ${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"
>${state.translate('sendYourFilesLink')}</a >${state.translate(btnText)}</a
> >
</p> </p>
</section> </section>

View File

@@ -1,40 +0,0 @@
const html = require('choo/html');
const Component = require('choo/component');
const assets = require('../../common/assets');
class Promo extends Component {
constructor(name, state) {
super(name);
this.state = state;
}
update() {
return false;
}
createElement() {
return html`
<send-promo
class="w-full flex-row items-center content-center justify-center bg-white text-grey-darkest px-4 py-3 flex border-b border-grey-banner leading-normal"
>
<div class="flex items-center mx-auto">
<img
src="${assets.get('master-logo.svg')}"
class="w-6 h-6"
alt="Firefox"
/>
<span class="ml-2 sm:ml-4 text-xs sm:text-base">
${this.state.translate('trailheadPromo')}${' '}
<a
class="underline text-blue-dark"
href="http://www.mozilla.org/firefox/accounts/?utm_source=send.firefox.com&utm_medium=banner&utm_campaign=trailhead&utm_content=protect-your-privacy"
>${this.state.translate('learnMore')}</a
>
</span>
</div>
</send-promo>
`;
}
}
module.exports = Promo;

10
app/ui/qr.js Normal file
View File

@@ -0,0 +1,10 @@
const raw = require('choo/html/raw');
const qrcode = require('../qrcode');
module.exports = function(url) {
const gen = qrcode(5, 'L');
gen.addData(url);
gen.make();
const qr = gen.createSvgTag({ scalable: true });
return raw(qr);
};

View File

@@ -6,7 +6,7 @@ module.exports = function(selected, options, translate, changed, htmlId) {
return html` return html`
<select <select
id="${htmlId}" id="${htmlId}"
class="appearance-none cursor-pointer border rounded bg-grey-lightest hover:border-blue-dark focus:border-blue-dark pl-1 pr-8 py-1 my-1 h-8" class="appearance-none cursor-pointer border rounded bg-grey-10 hover:border-blue-50 focus:border-blue-50 pl-1 pr-8 py-1 my-1 h-8 dark:bg-grey-80"
onchange="${choose}" onchange="${choose}"
> >
${options.map( ${options.map(

View File

@@ -9,14 +9,16 @@ module.exports = function(name, url) {
<h1 class="text-3xl font-bold my-4"> <h1 class="text-3xl font-bold my-4">
${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-80 word-break-all dark:text-grey-40"
>
${state.translate('shareLinkDescription')}<br /> ${state.translate('shareLinkDescription')}<br />
${name} ${name}
</p> </p>
<input <input
type="text" type="text"
id="share-url" id="share-url"
class="w-full my-4 border rounded-lg leading-loose h-12 px-2 py-1" class="w-full my-4 border rounded-lg leading-loose h-12 px-2 py-1 dark:bg-grey-80"
value="${url}" value="${url}"
readonly="true" readonly="true"
/> />
@@ -28,7 +30,7 @@ module.exports = function(name, url) {
${state.translate('shareLinkButton')} ${state.translate('shareLinkButton')}
</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="link-blue my-4 font-medium cursor-pointer focus:outline"
onclick="${close}" onclick="${close}"
title="${state.translate('okButton')}" title="${state.translate('okButton')}"
> >

View File

@@ -1,26 +1,23 @@
const html = require('choo/html'); const html = require('choo/html');
const assets = require('../../common/assets'); const assets = require('../../common/assets');
const { bytes, platform } = require('../utils'); const { bytes } = require('../utils');
const { canceledSignup, submittedSignup } = require('../metrics'); const { canceledSignup, submittedSignup } = require('../metrics');
module.exports = function(trigger) { module.exports = function(trigger) {
return function(state, emit, close) { return function(state, emit, close) {
const DAYS = Math.floor(state.LIMITS.MAX_EXPIRE_SECONDS / 86400); const DAYS = Math.floor(state.LIMITS.MAX_EXPIRE_SECONDS / 86400);
const hidden = platform() === 'android' ? 'hidden' : '';
let submitting = false; let submitting = false;
return html` return html`
<send-signup-dialog <send-signup-dialog
class="flex flex-col lg:flex-row justify-center px-8 md:px-24 w-full h-full" class="flex flex-col justify-center my-16 md:my-0 px-8 md:px-24 w-full h-full"
> >
<img src="${assets.get('master-logo.svg')}" class="h-16 mt-1 mb-4" /> <img src="${assets.get('master-logo.svg')}" class="h-16 mt-1 mb-4" />
<section <section class="flex flex-col flex-shrink-0 self-center">
class="flex flex-col flex-shrink-0 self-center lg:mx-6 lg:max-w-xs" <h1 class="text-3xl font-bold text-center">
>
<h1 class="text-3xl font-bold text-center lg:text-left">
${state.translate('accountBenefitTitle')} ${state.translate('accountBenefitTitle')}
</h1> </h1>
<ul <ul
class="leading-normal text-grey-darkest my-2 mt-4 pl-4 md:self-center" class="leading-normal list-disc text-grey-80 my-2 mt-4 pl-4 md:self-center dark:text-grey-40"
> >
<li> <li>
${state.translate('accountBenefitLargeFiles', { ${state.translate('accountBenefitLargeFiles', {
@@ -32,17 +29,14 @@ module.exports = function(trigger) {
${state.translate('accountBenefitTimeLimit', { 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 class="flex flex-col flex-grow m-4 md:self-center md:w-128">
class="flex flex-col flex-grow m-4 md:self-center md:w-128 lg:max-w-xs"
>
<form onsubmit=${submitEmail} data-no-csrf> <form onsubmit=${submitEmail} data-no-csrf>
<input <input
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-70 leading-loose dark:bg-grey-80 dark:text-white"
placeholder=${state.translate('emailPlaceholder')} placeholder=${state.translate('emailPlaceholder')}
/> />
<input <input
@@ -53,13 +47,17 @@ module.exports = function(trigger) {
type="submit" type="submit"
/> />
</form> </form>
<button ${state.user.loginRequired
class="my-3 text-blue-dark hover:text-blue-darker focus:text-blue-darker font-medium" ? ''
title="${state.translate('deletePopupCancel')}" : html`
onclick=${cancel} <button
> class="my-3 link-blue font-medium"
${state.translate('deletePopupCancel')} title="${state.translate('deletePopupCancel')}"
</button> onclick=${cancel}
>
${state.translate('deletePopupCancel')}
</button>
`}
</section> </section>
</send-signup-dialog> </send-signup-dialog>
`; `;

View File

@@ -16,9 +16,9 @@ module.exports = function() {
<h1 class="text-3xl font-bold my-4"> <h1 class="text-3xl font-bold my-4">
Tell us what you think. Tell us what you think.
</h1> </h1>
<p class="font-normal leading-normal text-grey-darkest px-4"> <p class="font-normal leading-normal text-grey-80 px-4">
Love Firefox Send? Take a quick survey to let us know how we can make Love Send? Take a quick survey to let us know how we can make it
it better. better.
</p> </p>
<a <a
class="btn rounded-lg w-full flex-shrink-0 focus:outline my-5" class="btn rounded-lg w-full flex-shrink-0 focus:outline my-5"
@@ -30,7 +30,7 @@ module.exports = function() {
Give feedback Give feedback
</a> </a>
<button <button
class="text-blue-dark hover:text-blue-darker focus:text-blue-darker font-medium cursor-pointer focus:outline" class="link-blue font-medium cursor-pointer focus:outline"
onclick="${close}" onclick="${close}"
title="Skip" title="Skip"
> >

View File

@@ -27,7 +27,7 @@ module.exports = function(state, emit) {
<main class="main"> <main class="main">
${state.modal && modal(state, emit)} ${state.modal && modal(state, emit)}
<section <section
class="flex flex-col items-center justify-center text-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 justify-center text-center bg-white m-6 px-6 py-8 border border-grey-30 md:border-none md:px-12 md:py-16 shadow w-full md:h-full dark:bg-grey-90"
> >
<h1 class="text-3xl font-bold">${strings.header}</h1> <h1 class="text-3xl font-bold">${strings.header}</h1>
<p class="mt-4 mb-8 max-w-md leading-normal">${strings.description}</p> <p class="mt-4 mb-8 max-w-md leading-normal">${strings.description}</p>

View File

@@ -76,6 +76,10 @@ export default class User {
return this.info.access_token; return this.info.access_token;
} }
get refreshToken() {
return this.info.refresh_token;
}
get maxSize() { get maxSize() {
return this.loggedIn return this.loggedIn
? this.limits.MAX_FILE_SIZE ? this.limits.MAX_FILE_SIZE
@@ -135,6 +139,7 @@ export default class User {
const code_challenge = await preparePkce(this.storage); const code_challenge = await preparePkce(this.storage);
const options = { const options = {
action: 'email', action: 'email',
access_type: 'offline',
client_id: this.authConfig.client_id, client_id: this.authConfig.client_id,
code_challenge, code_challenge,
code_challenge_method: 'S256', code_challenge_method: 'S256',
@@ -192,12 +197,69 @@ export default class User {
}); });
const userInfo = await infoResponse.json(); const userInfo = await infoResponse.json();
userInfo.access_token = auth.access_token; userInfo.access_token = auth.access_token;
userInfo.refresh_token = auth.refresh_token;
userInfo.fileListKey = await getFileListKey(this.storage, auth.keys_jwe); userInfo.fileListKey = await getFileListKey(this.storage, auth.keys_jwe);
this.info = userInfo; this.info = userInfo;
this.storage.remove('pkceVerifier'); this.storage.remove('pkceVerifier');
} }
logout() { async refresh() {
if (!this.refreshToken) {
return false;
}
try {
const tokenResponse = await fetch(this.authConfig.token_endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
client_id: this.authConfig.client_id,
grant_type: 'refresh_token',
refresh_token: this.refreshToken
})
});
if (tokenResponse.ok) {
const auth = await tokenResponse.json();
const info = { ...this.info, access_token: auth.access_token };
this.info = info;
return true;
}
} catch (e) {
console.error(e);
}
await this.logout();
return false;
}
async logout() {
try {
if (this.refreshToken) {
await fetch(this.authConfig.revocation_endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
refresh_token: this.refreshToken
})
});
}
if (this.bearerToken) {
await fetch(this.authConfig.revocation_endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
token: this.bearerToken
})
});
}
} catch (e) {
console.error(e);
// oh well, we tried
}
this.storage.clearLocalFiles(); this.storage.clearLocalFiles();
this.info = {}; this.info = {};
} }
@@ -211,6 +273,14 @@ export default class User {
const key = b64ToArray(this.info.fileListKey); const key = b64ToArray(this.info.fileListKey);
const sha = await crypto.subtle.digest('SHA-256', key); const sha = await crypto.subtle.digest('SHA-256', key);
const kid = arrayToB64(new Uint8Array(sha)).substring(0, 16); const kid = arrayToB64(new Uint8Array(sha)).substring(0, 16);
const retry = async () => {
const refreshed = await this.refresh();
if (refreshed) {
return await this.syncFileList();
} else {
return { incoming: true };
}
};
try { try {
const encrypted = await getFileList(this.bearerToken, kid); const encrypted = await getFileList(this.bearerToken, kid);
const decrypted = await streamToArrayBuffer( const decrypted = await streamToArrayBuffer(
@@ -219,8 +289,7 @@ export default class User {
list = JSON.parse(textDecoder.decode(decrypted)); list = JSON.parse(textDecoder.decode(decrypted));
} catch (e) { } catch (e) {
if (e.message === '401') { if (e.message === '401') {
this.logout(); return retry(e);
return { incoming: true };
} }
} }
changes = await this.storage.merge(list); changes = await this.storage.merge(list);
@@ -236,7 +305,9 @@ export default class User {
); );
await setFileList(this.bearerToken, kid, encrypted); await setFileList(this.bearerToken, kid, encrypted);
} catch (e) { } catch (e) {
// if (e.message === '401') {
return retry(e);
}
} }
return changes; return changes;
} }

View File

@@ -1,5 +1,10 @@
/* global Android */ /* global Android */
const html = require('choo/html'); let html;
try {
html = require('choo/html');
} catch (e) {
// running in the service worker
}
const b64 = require('base64-js'); const b64 = require('base64-js');
function arrayToB64(array) { function arrayToB64(array) {
@@ -137,12 +142,16 @@ function openLinksInNewTab(links, should = true) {
function browserName() { function browserName() {
try { try {
// order of these matters
if (/firefox/i.test(navigator.userAgent)) { if (/firefox/i.test(navigator.userAgent)) {
return 'firefox'; return 'firefox';
} }
if (/edge/i.test(navigator.userAgent)) { if (/edge/i.test(navigator.userAgent)) {
return 'edge'; return 'edge';
} }
if (/edg/i.test(navigator.userAgent)) {
return 'edgium';
}
if (/trident/i.test(navigator.userAgent)) { if (/trident/i.test(navigator.userAgent)) {
return 'ie'; return 'ie';
} }

View File

@@ -1,9 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs> <symbol id="plus" viewBox="0 0 24 24">
<polygon id="addfiles-a" points="11.143 6 11.143 11.143 6 11.143 6 12.857 11.143 12.857 11.143 18 12.857 18 12.857 12.857 18 12.857 18 11.143 12.857 11.143 12.857 6"/>
</defs>
<g fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd">
<path fill="#0060df" fill-rule="nonzero" d="M12,22.6666667 C17.8910373,22.6666667 22.6666667,17.8910373 22.6666667,12 C22.6666667,6.10896267 17.8910373,1.33333333 12,1.33333333 C6.10896267,1.33333333 1.33333333,6.10896267 1.33333333,12 C1.33333333,17.8910373 6.10896267,22.6666667 12,22.6666667 Z M12,24 C5.372583,24 0,18.627417 0,12 C0,5.372583 5.372583,0 12,0 C18.627417,0 24,5.372583 24,12 C24,18.627417 18.627417,24 12,24 Z"/> <path fill="currentColor" fill-rule="nonzero" d="M12,22.6666667 C17.8910373,22.6666667 22.6666667,17.8910373 22.6666667,12 C22.6666667,6.10896267 17.8910373,1.33333333 12,1.33333333 C6.10896267,1.33333333 1.33333333,6.10896267 1.33333333,12 C1.33333333,17.8910373 6.10896267,22.6666667 12,22.6666667 Z M12,24 C5.372583,24 0,18.627417 0,12 C0,5.372583 5.372583,0 12,0 C18.627417,0 24,5.372583 24,12 C24,18.627417 18.627417,24 12,24 Z"/>
<use fill="#0060df" xlink:href="#addfiles-a"/> <polygon fill="currentColor" points="11.143 6 11.143 11.143 6 11.143 6 12.857 11.143 12.857 11.143 18 12.857 18 12.857 12.857 18 12.857 18 11.143 12.857 11.143 12.857 6"/>
</g> </g>
</symbol>
<use xlink:href="#plus"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 856 B

After

Width:  |  Height:  |  Size: 831 B

View File

@@ -1,8 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="26px" height="32px" viewBox="0 0 26 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 53 (72520) - https://sketchapp.com --> <symbol id="icon" viewBox="0 0 26 32">
<title>6AF7DAB4-6456-44F2-AABE-F001D910B641</title>
<desc>Created with sketchtool.</desc>
<defs> <defs>
<path d="M21.848475,31.6653183 L2.89005487,31.6653183 C1.32717435,31.6653183 0.104050469,30.3742431 0.104050469,28.8793139 L0.104050469,2.7860044 C0.104050469,1.22312388 1.39512568,0 2.89005487,0 L14.7135857,0 C15.4610503,0 16.2085149,0.271805307 16.6841742,0.815415921 L23.8190635,7.95030523 C24.3626741,8.49391584 24.6344794,9.17342911 24.6344794,9.9208937 L24.6344794,28.8793139 C24.6344794,30.3742431 23.4113555,31.6653183 21.848475,31.6653183 Z" id="path-1"></path> <path d="M21.848475,31.6653183 L2.89005487,31.6653183 C1.32717435,31.6653183 0.104050469,30.3742431 0.104050469,28.8793139 L0.104050469,2.7860044 C0.104050469,1.22312388 1.39512568,0 2.89005487,0 L14.7135857,0 C15.4610503,0 16.2085149,0.271805307 16.6841742,0.815415921 L23.8190635,7.95030523 C24.3626741,8.49391584 24.6344794,9.17342911 24.6344794,9.9208937 L24.6344794,28.8793139 C24.6344794,30.3742431 23.4113555,31.6653183 21.848475,31.6653183 Z" id="path-1"></path>
</defs> </defs>
@@ -14,14 +12,15 @@
<mask id="mask-2" fill="white"> <mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use> <use xlink:href="#path-1"></use>
</mask> </mask>
<use id="Mask" fill="#45A1FF" opacity="0.6" xlink:href="#path-1"></use> <use id="Mask" fill="#45a1ff" xlink:href="#path-1"></use>
<path d="M24.3031318,10.6474633 L16.7826187,10.6474633 C15.2742552,10.6474633 14.051485,9.42469306 14.051485,7.91632957 L14.051485,0.395816478" id="Path" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" mask="url(#mask-2)"></path> <path d="M24.3031318,10.6474633 L16.7826187,10.6474633 C15.2742552,10.6474633 14.051485,9.42469306 14.051485,7.91632957 L14.051485,0.395816478" id="Path" stroke="currentColor" stroke-width="2" stroke-linecap="round" mask="url(#mask-2)"></path>
<path d="M7.2830232,8.93885547 L8.91906464,8.93885547" id="Path" stroke="#0060DF" stroke-width="2" stroke-linecap="round" mask="url(#mask-2)"></path> <path d="M7.2830232,8.93885547 L8.91906464,8.93885547" id="Path" stroke="currentColor" stroke-width="2" stroke-linecap="round" mask="url(#mask-2)"></path>
<path d="M7.2830232,15.7798836 L17.5412669,15.7798836" id="Path" stroke="#0060DF" stroke-width="2" stroke-linecap="round" mask="url(#mask-2)"></path> <path d="M7.2830232,15.7798836 L17.5412669,15.7798836" id="Path" stroke="currentColor" stroke-width="2" stroke-linecap="round" mask="url(#mask-2)"></path>
<path d="M7.2830232,22.6209117 L17.5412669,22.6209117" id="Path" stroke="#0060DF" stroke-width="2" stroke-linecap="round" mask="url(#mask-2)"></path> <path d="M7.2830232,22.6209117 L17.5412669,22.6209117" id="Path" stroke="currentColor" stroke-width="2" stroke-linecap="round" mask="url(#mask-2)"></path>
</g> </g>
</g> </g>
</g> </g>
</g> </g>
</g> </g>
</symbol>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 16 16"><path fill="#4A4A4A" d="M9.414 8l5.293-5.293a1 1 0 0 0-1.414-1.414L8 6.586 2.707 1.293a1 1 0 0 0-1.414 1.414L6.586 8l-5.293 5.293a1 1 0 1 0 1.414 1.414L8 9.414l5.293 5.293a1 1 0 0 0 1.414-1.414z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 16 16"><path fill="#737373" d="M9.414 8l5.293-5.293a1 1 0 0 0-1.414-1.414L8 6.586 2.707 1.293a1 1 0 0 0-1.414 1.414L6.586 8l-5.293 5.293a1 1 0 1 0 1.414 1.414L8 9.414l5.293 5.293a1 1 0 0 0 1.414-1.414z"/></svg>

Before

Width:  |  Height:  |  Size: 287 B

After

Width:  |  Height:  |  Size: 287 B

View File

@@ -1 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="#0060df" d="M14.707 8.293l-3-3A1 1 0 0 0 11 5h-1V4a1 1 0 0 0-.293-.707l-3-3A1 1 0 0 0 6 0H3a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h3v3a2 2 0 0 0 2 2h5a2 2 0 0 0 2-2V9a1 1 0 0 0-.293-.707zM12.586 9H11V7.414zm-5-5H6V2.414zM6 7v2H3V2h2v2.5a.5.5 0 0 0 .5.5H8a2 2 0 0 0-2 2zm2 7V7h2v2.5a.5.5 0 0 0 .5.5H13v4z"/></svg> <svg xmlns="http://www.w3.org/2000/svg">
<symbol id="icon" viewBox="0 0 16 16">
<path fill="currentColor" d="M14.707 8.293l-3-3A1 1 0 0 0 11 5h-1V4a1 1 0 0 0-.293-.707l-3-3A1 1 0 0 0 6 0H3a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h3v3a2 2 0 0 0 2 2h5a2 2 0 0 0 2-2V9a1 1 0 0 0-.293-.707zM12.586 9H11V7.414zm-5-5H6V2.414zM6 7v2H3V2h2v2.5a.5.5 0 0 0 .5.5H8a2 2 0 0 0-2 2zm2 7V7h2v2.5a.5.5 0 0 0 .5.5H13v4z"/>
</symbol>
</svg>

Before

Width:  |  Height:  |  Size: 398 B

After

Width:  |  Height:  |  Size: 411 B

View File

@@ -1,15 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="12px" height="16px" viewBox="0 0 12 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="12px" height="16px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 53 (72520) - https://sketchapp.com --> <symbol id="icon" viewBox="0 0 12 16">
<title>728D143F-562C-4AE5-80DA-9DBBD9D647D8</title> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<desc>Created with sketchtool.</desc> <g transform="translate(-770.000000, -481.000000)" fill="currentColor">
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g transform="translate(744.000000, 350.000000)">
<g id="Send_Sending" transform="translate(-770.000000, -481.000000)" fill="#0060DF"> <g transform="translate(26.000000, 131.000000)">
<g id="List-Item-3" transform="translate(744.000000, 350.000000)"> <path d="M5.293,12.707 C5.6835,13.097382 6.316501,13.097383 6.707001,12.707 L11.707,7.707 C12.08597,7.31462 12.08054,6.69092 11.69481,6.305189 C11.30908,5.91946 10.68538,5.91403 10.293,6.293 L7,9.586 L7,1 C7,0.44772 6.552285,0 6,0 C5.447715,0 5,0.44772 5,1 L5,9.586 L1.707,6.293 C1.314621,5.91403 0.690915,5.91945 0.305181,6.305182 C-0.080553,6.690915 -0.085973,7.314622 0.293,7.707001 L5.293,12.707 Z M11,14 L1,14 C0.447715,14 0,14.447715 0,15 C0,15.5522852 0.447715,16 1,16 L11,16 C11.55228,16 12,15.5522852 12,15 C12,14.447715 11.55229,14 11,14 Z"></path>
<g id="Download-Icon" transform="translate(26.000000, 131.000000)">
<path d="M5.293,12.707 C5.6835,13.097382 6.316501,13.097383 6.707001,12.707 L11.707,7.707 C12.08597,7.31462 12.08054,6.69092 11.69481,6.305189 C11.30908,5.91946 10.68538,5.91403 10.293,6.293 L7,9.586 L7,1 C7,0.44772 6.552285,0 6,0 C5.447715,0 5,0.44772 5,1 L5,9.586 L1.707,6.293 C1.314621,5.91403 0.690915,5.91945 0.305181,6.305182 C-0.080553,6.690915 -0.085973,7.314622 0.293,7.707001 L5.293,12.707 Z M11,14 L1,14 C0.447715,14 0,14.447715 0,15 C0,15.5522852 0.447715,16 1,16 L11,16 C11.55228,16 12,15.5522852 12,15 C12,14.447715 11.55229,14 11,14 Z" id="Fill-1"></path>
</g> </g>
</g> </g>
</g> </g>
</g> </g>
</symbol>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

1
assets/eye-off.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#8795a1" d="M256.1 144.8c56.2 0 101.9 45.3 101.9 101.1 0 13.1-2.6 25.5-7.3 37l59.5 59c30.8-25.5 55-58.4 69.9-96-35.3-88.7-122.3-151.6-224.2-151.6-28.5 0-55.8 5.1-81.1 14.1l44 43.7c11.6-4.6 24.1-7.3 37.3-7.3zM52.4 89.7l46.5 46.1 9.4 9.3c-33.9 26-60.4 60.8-76.3 100.8 35.2 88.7 122.2 151.6 224.1 151.6 31.6 0 61.7-6.1 89.2-17l8.6 8.5 59.7 59 25.9-25.7L78.2 64 52.4 89.7zM165 201.4l31.6 31.3c-1 4.2-1.6 8.7-1.6 13.1 0 33.5 27.3 60.6 61.1 60.6 4.5 0 9-.6 13.2-1.6l31.6 31.3c-13.6 6.7-28.7 10.7-44.8 10.7-56.2 0-101.9-45.3-101.9-101.1 0-15.8 4.1-30.7 10.8-44.3zm87.8-15.7l64.2 63.7.4-3.2c0-33.5-27.3-60.6-61.1-60.6l-3.5.1z"/></svg>

After

Width:  |  Height:  |  Size: 701 B

1
assets/eye.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#8795a1" d="M256 105c-101.8 0-188.4 62.4-224 151 35.6 88.6 122.2 151 224 151s188.4-62.4 224-151c-35.6-88.6-122.2-151-224-151zm0 251.7c-56 0-101.8-45.3-101.8-100.7S200 155.3 256 155.3 357.8 200.6 357.8 256 312 356.7 256 356.7zm0-161.1c-33.6 0-61.1 27.2-61.1 60.4s27.5 60.4 61.1 60.4 61.1-27.2 61.1-60.4-27.5-60.4-61.1-60.4z"/></svg>

After

Width:  |  Height:  |  Size: 406 B

41
assets/icon.svg Normal file
View File

@@ -0,0 +1,41 @@
<svg viewBox="0 0 65 64" height="64" width="65" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient id="linear-gradient" x1="46.37" y1="59.71" x2="15.42" y2="6.11" gradientTransform="matrix(1, 0, 0, -1, 0, 64)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ff980e"/>
<stop offset="0.21" stop-color="#ff7139"/>
<stop offset="0.36" stop-color="#ff5854"/>
<stop offset="0.46" stop-color="#ff4f5e"/>
<stop offset="0.69" stop-color="#ff3750"/>
<stop offset="0.86" stop-color="#f92261"/>
<stop offset="1" stop-color="#f5156c"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="46.37" y1="59.71" x2="15.42" y2="6.11" gradientTransform="matrix(1, 0, 0, -1, 0, 64)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fff44f" stop-opacity="0.8"/>
<stop offset="0.09" stop-color="#fff44f" stop-opacity="0.7"/>
<stop offset="0.75" stop-color="#fff44f" stop-opacity="0"/>
</linearGradient>
<linearGradient id="linear-gradient-3" x1="40.19" y1="26.08" x2="54.32" y2="50.55" gradientTransform="matrix(1, 0, 0, -1, 0, 64)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#3a8ee6"/>
<stop offset="0.24" stop-color="#5c79f0"/>
<stop offset="0.63" stop-color="#9059ff"/>
<stop offset="1" stop-color="#c139e6"/>
</linearGradient>
<linearGradient id="linear-gradient-4" x1="54.32" y1="50.58" x2="48.39" y2="40.31" gradientTransform="matrix(1, 0, 0, -1, 0, 64)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#6e008b" stop-opacity="0.5"/>
<stop offset="0.5" stop-color="#c846cb" stop-opacity="0"/>
</linearGradient>
<linearGradient id="linear-gradient-5" x1="56.96" y1="22.5" x2="41.98" y2="37.46" gradientTransform="matrix(1, 0, 0, -1, 0, 64)" gradientUnits="userSpaceOnUse">
<stop offset="0.14" stop-color="#6a2bea" stop-opacity="0"/>
<stop offset="0.34" stop-color="#642de4" stop-opacity="0.03"/>
<stop offset="0.55" stop-color="#5131d3" stop-opacity="0.12"/>
<stop offset="0.76" stop-color="#3139b7" stop-opacity="0.27"/>
<stop offset="0.98" stop-color="#054490" stop-opacity="0.48"/>
<stop offset="1" stop-color="#00458b" stop-opacity="0.5"/>
</linearGradient>
</defs>
<path d="M32.56,0C14.61,0,0,14.33,0,31.94a3.42,3.42,0,0,0,3.42,3.42H29.14V52.3l-8-8a3.42,3.42,0,1,0-4.84,4.84L30.14,63a2.73,2.73,0,0,0,.25.23l.23.17h.05l.24.14.27.13.28.1.29.07L32,64h1.27l.29-.07.29-.1.27-.13.24-.14.24-.17L35,63,48.8,49.18A3.43,3.43,0,0,0,44,44.34l-8,8v-17H61.7a3.42,3.42,0,0,0,3.42-3.42h0C65.12,14.33,50.51,0,32.56,0ZM7.09,28.51A25.54,25.54,0,0,1,32.56,6.85,25.55,25.55,0,0,1,58,28.51Z" fill="url(#linear-gradient)"/>
<path d="M32.56,0C14.61,0,0,14.33,0,31.94a3.42,3.42,0,0,0,3.42,3.42H29.14V52.3l-8-8a3.42,3.42,0,1,0-4.84,4.84L30.14,63a2.73,2.73,0,0,0,.25.23l.23.17h.05l.24.14.27.13.28.1.29.07L32,64h1.27l.29-.07.29-.1.27-.13.24-.14.24-.17L35,63,48.8,49.18A3.43,3.43,0,0,0,44,44.34l-8,8v-17H61.7a3.42,3.42,0,0,0,3.42-3.42h0C65.12,14.33,50.51,0,32.56,0ZM7.09,28.51A25.54,25.54,0,0,1,32.56,6.85,25.55,25.55,0,0,1,58,28.51Z" fill="url(#linear-gradient-2)"/>
<path d="M36,7.08A25.45,25.45,0,0,1,58,28.51H42.85A6.85,6.85,0,0,0,36,35.36H61.7a3.43,3.43,0,0,0,3.42-3.43c0-12.2-8.63-18.13-16-21.59A35.75,35.75,0,0,0,36,7.08Z" fill="url(#linear-gradient-3)"/>
<path d="M57.89,27.76c2.31,1.86,4.63,3.71,6.9,5.61a3.27,3.27,0,0,0,.33-1.44c0-12.2-8.63-18.13-16-21.59A35.75,35.75,0,0,0,36,7.08,25.47,25.47,0,0,1,57.89,27.76Z" fill="url(#linear-gradient-4)"/>
<path d="M57.5,28.51H42.85A6.85,6.85,0,0,0,36,35.36H61.7a3.36,3.36,0,0,0,2.64-1.28C62.09,32.19,59.79,30.36,57.5,28.51Z" opacity=".9" fill="url(#linear-gradient-5)"/>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 8.1 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 578.55 185.54"><path d="M503.5 117.21c0 4.92 2.37 8.82 9 8.82 7.8 0 16.11-5.6 16.61-18.31a80.86 80.86 0 0 0-11-1c-7.83-.01-14.61 2.19-14.61 10.49z"/><path d="M0 0v185.54h578.55V0zm163.78 139.93h-32V96.87c0-13.22-4.41-18.31-13.05-18.31-10.51 0-14.75 7.46-14.75 18.14v26.64h10.12v16.61h-32V96.87c0-13.22-4.4-18.31-13.05-18.31-10.51 0-14.75 7.46-14.75 18.14v26.64h14.54v16.61H22.22v-16.61h10.17V80.09h-11V63.48h32.87V75c4.58-8.13 12.55-13.05 23.22-13.05 11 0 21.19 5.26 24.92 16.45 4.24-10.17 12.88-16.45 24.92-16.45 13.73 0 26.28 8.31 26.28 26.45v34.94h10.17zm48.65 1.69c-23.56 0-39.84-14.41-39.84-38.82 0-22.38 13.56-40.86 41-40.86s40.86 18.48 40.86 39.84c.02 24.42-17.61 39.85-42.02 39.85zm121.72-1.69h-66.8l-2.2-11.53 42-48.32h-23.9l-3.39 11.87-15.77-1.69 2.71-26.79H334L335.69 75l-42.4 48.34H318l3.56-11.87 17.29 1.69zm41.36 0h-22.89v-27.46h22.89zm0-49h-22.89V63.48h22.89zm12 49L420.6 23.34h21.53l-33.06 116.59zm44.42 0L465 23.34h21.53l-33.04 116.59zm113.92 1.69c-10.17 0-15.76-5.94-16.78-15.26-4.41 7.8-12.21 15.26-24.58 15.26-11 0-23.56-5.94-23.56-21.87 0-18.82 18.14-23.22 35.6-23.22a100.23 100.23 0 0 1 12.55.68v-2.54c0-7.8-.17-17.12-12.55-17.12-4.58 0-8.14.34-11.7 2.2L502 90.6l-17.46-1.87 3.39-19.83c13.39-5.43 20.17-7 32.72-7 16.45 0 30.35 8.48 30.35 25.94v33.23c0 4.41 1.69 5.94 5.26 5.94a11.5 11.5 0 0 0 3.22-.51l.17 11.53a29.57 29.57 0 0 1-13.77 3.6z"/><path d="M213.27 78.73c-11.19 0-18.14 8.3-18.14 22.72 0 13.22 6.1 23.39 18 23.39 11.36 0 18.82-9.15 18.82-23.73-.03-15.43-8.33-22.38-18.68-22.38z"/></svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -1,8 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="8px" height="6px" viewBox="0 0 8 6" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="8px" height="6px" viewBox="0 0 8 6" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 53 (72520) - https://sketchapp.com -->
<title>37845F0A-2932-4C2D-98E1-89BE1B168092</title>
<desc>Created with sketchtool.</desc>
<defs> <defs>
<path d="M6,8.48771202 C5.73480519,8.48765538 5.48049273,8.3822614 5.293,8.19471202 L2.293,5.19471202 C1.91402779,4.80233313 1.91944763,4.17862724 2.30518142,3.79289345 C2.69091522,3.40715965 3.31462111,3.40173981 3.707,3.78071202 L6,6.07371202 L8.293,3.78071202 C8.68537889,3.40173981 9.30908478,3.40715965 9.69481858,3.79289345 C10.0805524,4.17862724 10.0859722,4.80233313 9.707,5.19471202 L6.707,8.19471202 C6.51950727,8.3822614 6.26519481,8.48765538 6,8.48771202 Z" id="path-1"></path> <path d="M6,8.48771202 C5.73480519,8.48765538 5.48049273,8.3822614 5.293,8.19471202 L2.293,5.19471202 C1.91402779,4.80233313 1.91944763,4.17862724 2.30518142,3.79289345 C2.69091522,3.40715965 3.31462111,3.40173981 3.707,3.78071202 L6,6.07371202 L8.293,3.78071202 C8.68537889,3.40173981 9.30908478,3.40715965 9.69481858,3.79289345 C10.0805524,4.17862724 10.0859722,4.80233313 9.707,5.19471202 L6.707,8.19471202 C6.51950727,8.3822614 6.26519481,8.48765538 6,8.48771202 Z" id="path-1"></path>
</defs> </defs>
@@ -14,7 +11,7 @@
<mask id="mask-2" fill="white"> <mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use> <use xlink:href="#path-1"></use>
</mask> </mask>
<use id="Shape" fill="#0C0C0D" fill-rule="nonzero" opacity="0.599283854" xlink:href="#path-1"></use> <use id="Shape" fill="#b1b1b3" fill-rule="nonzero" opacity="0.599283854" xlink:href="#path-1"></use>
</g> </g>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -1,4 +1,5 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public <!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this - License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M18 9a3 3 0 1 0-2.977-2.63l-6.94 3.47a3 3 0 1 0 0 4.319l6.94 3.47a3 3 0 1 0 .895-1.789l-6.94-3.47a3.03 3.03 0 0 0 0-.74l6.94-3.47C16.456 8.68 17.19 9 18 9z" fill="#0060df" fill-opacity=".8"></path></svg> <svg xmlns="http://www.w3.org/2000/svg">
<symbol id="icon" viewBox="0 0 24 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M18 9a3 3 0 1 0-2.977-2.63l-6.94 3.47a3 3 0 1 0 0 4.319l6.94 3.47a3 3 0 1 0 .895-1.789l-6.94-3.47a3.03 3.03 0 0 0 0-.74l6.94-3.47C16.456 8.68 17.19 9 18 9z" fill="currentColor"></path></symbol></svg>

Before

Width:  |  Height:  |  Size: 559 B

After

Width:  |  Height:  |  Size: 539 B

6
assets/wordmark.svg Normal file
View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<symbol id="logo">
<path d="m 105.17,33.27 c -1.04895,-0.638175 -2.18377,-1.123082 -3.37,-1.44 -1.25,-0.34 -2.46,-0.63 -3.63,-0.88 l -3.08,-0.7 C 94.22073,30.069182 93.37751,29.78027 92.58,29.39 91.90449,29.074134 91.31719,28.596738 90.87,28 c -0.43741,-0.644047 -0.65489,-1.412243 -0.62,-2.19 -0.0406,-1.405196 0.53693,-2.75754 1.58,-3.7 1.06,-1 2.73,-1.44 5,-1.44 1.76437,-0.07198 3.51559,0.332147 5.07,1.17 1.35935,0.80694 2.51833,1.911219 3.39,3.23 l 2.79,-2.18 c -1.26761,-1.5933 -2.84201,-2.916072 -4.63,-3.89 -2.04373,-1.017745 -4.30804,-1.512526 -6.59,-1.44 -1.40785,-0.02195 -2.80876,0.201387 -4.14,0.66 -1.16063,0.399115 -2.24085,1.001871 -3.19,1.78 -0.8713,0.712445 -1.5718,1.611145 -2.05,2.63 -0.4819,1.011666 -0.72807,2.119452 -0.72,3.24 -0.05,1.231532 0.24064,2.452997 0.84,3.53 0.55827,0.895068 1.31002,1.653654 2.2,2.22 0.94422,0.612326 1.97599,1.077636 3.06,1.38 1.13,0.32 2.29,0.6 3.47,0.84 l 3.26,0.74 c 0.96945,0.22193 1.90929,0.557589 2.8,1 0.77256,0.367753 1.45522,0.900225 2,1.56 0.51019,0.701297 0.77072,1.553301 0.74,2.42 0.0438,1.566414 -0.62122,3.069031 -1.81,4.09 -1.52512,1.147855 -3.41702,1.699065 -5.32,1.55 -4.03416,0.15747 -7.83041,-1.90763 -9.89,-5.38 l -3,2.34 c 1.3876,1.880136 3.1735,3.430427 5.23,4.54 2.3855,1.197767 5.03194,1.782045 7.7,1.7 1.49114,0.02151 2.97422,-0.222285 4.38,-0.72 1.21788,-0.44929 2.33816,-1.128248 3.3,-2 0.88604,-0.797749 1.60053,-1.767412 2.1,-2.85 0.48895,-1.06318 0.74142,-2.219779 0.74,-3.39 0.0397,-1.336553 -0.30755,-2.656119 -1,-3.8 -0.62101,-0.95962 -1.44763,-1.769154 -2.42,-2.37 z m 27.51,-4.72 c -1.0207,-1.016684 -2.23916,-1.813109 -3.58,-2.34 -1.42831,-0.567565 -2.95311,-0.852828 -4.49,-0.84 -1.58532,-0.01887 -3.15769,0.287432 -4.62,0.9 -1.3691,0.572827 -2.61257,1.408599 -3.66,2.46 -2.1451,2.217513 -3.33989,5.184759 -3.33,8.27 -0.0138,1.54162 0.26439,3.071916 0.82,4.51 0.5255,1.363982 1.32922,2.603618 2.36,3.64 1.06096,1.043663 2.31862,1.866239 3.7,2.42 1.53222,0.610739 3.17082,0.909903 4.82,0.88 2.13421,0.08534 4.25095,-0.416179 6.12,-1.45 1.69947,-1.049265 3.13073,-2.480527 4.18,-4.18 l -2.88,-1.69 c -1.41279,2.768876 -4.32635,4.443291 -7.43,4.27 -1.09666,0.02103 -2.18793,-0.158593 -3.22,-0.53 -0.93382,-0.341463 -1.79784,-0.849713 -2.55,-1.5 -0.72694,-0.645531 -1.33013,-1.418157 -1.78,-2.28 -0.47812,-0.903522 -0.77374,-1.892313 -0.87,-2.91 h 19.59 v -1.52 c 0.0166,-1.555338 -0.27566,-3.098506 -0.86,-4.54 -0.54053,-1.333176 -1.33916,-2.54641 -2.35,-3.57 z m -16.28,6.67 c 0.18109,-0.958759 0.51895,-1.881119 1,-2.73 0.47186,-0.820757 1.07675,-1.557447 1.79,-2.18 0.72195,-0.61779 1.5482,-1.102022 2.44,-1.43 0.95944,-0.356614 1.97651,-0.532906 3,-0.52 4.04346,-0.224227 7.5255,2.82256 7.84,6.86 z M 158.82,28 c -0.83726,-0.883328 -1.8626,-1.566885 -3,-2 -1.25447,-0.462049 -2.58329,-0.689169 -3.92,-0.67 -1.60057,-0.03131 -3.18086,0.362037 -4.58,1.14 -1.28188,0.720594 -2.36173,1.752297 -3.14,3 v -3.65 h -3.29 V 48 h 3.37 V 35.67 c -0.0102,-1.001391 0.16968,-1.995625 0.53,-2.93 0.3373,-0.856524 0.84023,-1.638106 1.48,-2.3 0.62704,-0.649648 1.38331,-1.160636 2.22,-1.5 0.87089,-0.363534 1.8063,-0.547214 2.75,-0.54 1.87023,-0.128793 3.70135,0.578019 5,1.93 1.22147,1.441484 1.85048,3.292756 1.76,5.18 V 48 h 3.41 V 35.34 c 0.0211,-1.424123 -0.20214,-2.84132 -0.66,-4.19 -0.40985,-1.176324 -1.06809,-2.250653 -1.93,-3.15 z m 27,-12.42 v 14.1 c -0.43264,-0.685249 -0.96517,-1.302051 -1.58,-1.83 -0.60967,-0.53196 -1.28117,-0.98858 -2,-1.36 -0.73088,-0.369676 -1.5029,-0.651634 -2.3,-0.84 -0.78611,-0.187908 -1.59174,-0.281898 -2.4,-0.28 -1.50724,-0.0078 -3.00162,0.277523 -4.4,0.84 -1.34071,0.551089 -2.56038,1.35967 -3.59,2.38 -1.03697,1.047216 -1.85907,2.287165 -2.42,3.65 -1.17023,2.996466 -1.17023,6.323534 0,9.32 0.55964,1.361695 1.37424,2.603955 2.4,3.66 1.02081,1.031107 2.2428,1.841226 3.59,2.38 1.40561,0.561607 2.90636,0.846817 4.42,0.84 0.80981,-0.0026 1.6161,-0.106786 2.4,-0.31 0.79636,-0.199929 1.56783,-0.488392 2.3,-0.86 0.72123,-0.371416 1.39312,-0.831661 2,-1.37 0.61025,-0.540083 1.14205,-1.162767 1.58,-1.85 v 4 h 3.33 V 15.59 Z m -0.37,24.58 c -1.76276,4.229524 -6.6195,6.23041 -10.85,4.47 v 0 c -0.97862,-0.401365 -1.86378,-1.000551 -2.6,-1.76 -0.7522,-0.76312 -1.34086,-1.671634 -1.73,-2.67 -0.41974,-1.066531 -0.63023,-2.203893 -0.62,-3.35 -0.0103,-1.129892 0.20027,-2.250911 0.62,-3.3 0.39328,-0.993283 0.98151,-1.897738 1.73,-2.66 0.74207,-0.76001 1.62521,-1.368023 2.6,-1.79 2.07874,-0.890012 4.43126,-0.890012 6.51,0 0.98149,0.434716 1.87338,1.048526 2.63,1.81 0.74927,0.763509 1.33458,1.672102 1.72,2.67 0.41464,1.036611 0.62516,2.14355 0.62,3.26 -1.3e-4,1.141508 -0.22084,2.272237 -0.65,3.33 z" fill="currentColor"/>
</symbol>
<use xlink:href="#logo"/>
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -2,4 +2,5 @@ last 2 chrome versions
last 2 firefox versions last 2 firefox versions
last 2 safari versions last 2 safari versions
last 2 edge versions last 2 edge versions
edge 18
firefox esr firefox esr

View File

@@ -20,7 +20,7 @@ class AndroidIndexPlugin {
const page = html` const page = html`
<html lang="en-US"> <html lang="en-US">
<head> <head>
<title>Firefox Send</title> <title>Send</title>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta <meta
name="viewport" name="viewport"

View File

@@ -1,8 +1,8 @@
# Custom Loaders # Custom Loaders
## Generate Asset Map ## Android Index Plugin
This loader enumerates all the files in `assets/` so that `common/assets.js` can provide mappings from the source filename to the hashed filename used on the site. Generates the `index.html` page for the native android client
## Version Plugin ## Version Plugin

View File

@@ -1,6 +1,14 @@
const commit = require('git-rev-sync').short(); const gitRevSync = require('git-rev-sync');
const pkg = require('../package.json'); const pkg = require('../package.json');
let commit = 'unknown';
try {
commit = gitRevSync.short();
} catch (e) {
console.warn('Error fetching current git commit: ' + e);
}
const version = JSON.stringify({ const version = JSON.stringify({
commit, commit,
source: pkg.homepage, source: pkg.homepage,

View File

@@ -1,4 +1,4 @@
const genmap = require('../build/generate_asset_map'); const genmap = require('./generate_asset_map');
const isServer = typeof genmap === 'function'; const isServer = typeof genmap === 'function';
let prefix = ''; let prefix = '';
let manifest = {}; let manifest = {};

View File

@@ -1,3 +1,7 @@
# Common Code # Common Code
This directory contains code loaded by both the frontend `app` and backend `server`. The code here can be challenging to understand at first because the contexts for the two (three counting the dev server) environments that include them are quite different, but the purpose of these modules are quite simple, to provide mappings from the source assets (`copy-16.png`) to the concrete production assets (`copy-16.db66e0bf.svg`). This directory contains code loaded by both the frontend `app` and backend `server`. The code here can be challenging to understand at first because the contexts for the two (three counting the dev server) environments that include them are quite different, but the purpose of these modules are quite simple, to provide mappings from the source assets (`copy-16.png`) to the concrete production assets (`copy-16.db66e0bf.svg`).
## Generate Asset Map
This loader enumerates all the files in `assets/` so that `common/assets.js` can provide mappings from the source filename to the hashed filename used on the site.

View File

@@ -7,7 +7,7 @@
Adapted from [this spreadsheet](https://airtable.com/shrkcBPOLkvNFOrpp) Adapted from [this spreadsheet](https://airtable.com/shrkcBPOLkvNFOrpp)
- [ ] It should look and feel of an Android App - [ ] It should look and feel of an Android App
- [ ] It should look and feel like the Firefox Send Web Client - [ ] It should look and feel like the Send Web Client
### Main Screen ### Main Screen
- [ ] It should clearly Indicate the name of the product - [ ] It should clearly Indicate the name of the product
@@ -59,7 +59,7 @@ Adapted from [this spreadsheet](https://airtable.com/shrkcBPOLkvNFOrpp)
- [ ] It should allow users to opt into notifications when their link is downloaded - [ ] It should allow users to opt into notifications when their link is downloaded
## Annotations on Mobile Spec ## Annotations on Mobile Spec
This document tracks differences between the UX spec for Firefox Send and the intended MVP. This document tracks differences between the UX spec for Send and the intended MVP.
[Spec Link](https://mozilla.invisionapp.com/share/GNN6KKOQ5XS) [Spec Link](https://mozilla.invisionapp.com/share/GNN6KKOQ5XS)

View File

@@ -1,5 +1,5 @@
## Requirements ## Requirements
This document describes how to do a full deployment of Firefox Send on your own Linux server. You will need: This document describes how to do a full deployment of Send on your own Linux server. You will need:
* A working (and ideally somewhat recent) installation of NodeJS and NPM * A working (and ideally somewhat recent) installation of NodeJS and NPM
* GIT * GIT
@@ -12,14 +12,14 @@ For Debian/Ubuntu systems this probably just means something like this:
## Building ## Building
* We assume an already configured virtual-host on your webserver with an existing empty htdocs folder * We assume an already configured virtual-host on your webserver with an existing empty htdocs folder
* First, remove that htdocs folder - we will replace it with Firefox Send's version now * First, remove that htdocs folder - we will replace it with Send's version now
* git clone https://github.com/mozilla/send.git htdocs * git clone https://github.com/mozilla/send.git htdocs
* Make now sure you are NOT root but rather the user your webserver is serving files under (e.g. "su www-data" or whoever the owner of your htdocs folder is) * Make now sure you are NOT root but rather the user your webserver is serving files under (e.g. "su www-data" or whoever the owner of your htdocs folder is)
* npm install * npm install
* npm run build * npm run build
## Running ## Running
To have a permanently running version of Firefox Send as a background process: To have a permanently running version of Send as a background process:
* Create a file "run.sh" with: * Create a file "run.sh" with:
``` ```
@@ -29,11 +29,11 @@ nohup su www-data -c "npm run prod" 2>/dev/null &
* chmod +x run.sh * chmod +x run.sh
* ./run.sh * ./run.sh
Now the Firefox Send backend should be running on port 1443. You can check with: Now the Send backend should be running on port 1443. You can check with:
* telnet localhost 1443 * telnet localhost 1443
## Reverse Proxy ## Reverse Proxy
Of course, we don't want to expose the service on port 1443. Instead we want our normal webserver to forward all requests to Firefox send ("Reverse proxy"). Of course, we don't want to expose the service on port 1443. Instead we want our normal webserver to forward all requests to Send ("Reverse proxy").
# Apache webserver # Apache webserver

View File

@@ -1,13 +1,12 @@
## Setup ## Setup
Before building the Docker image, you must build the production assets: Use `registry.gitlab.com/timvisee/send:latest` from [`timvisee/send`'s registry](https://gitlab.com/timvisee/send/container_registry) for the latest Docker image.
```sh ```bash
npm run build docker pull registry.gitlab.com/timvisee/send:latest
``` ```
Then you can run either `docker build` or `docker-compose up`. Or run `docker build -t send:latest .` to create an image locally or `docker-compose up` to run a full testable stack. *We don't recommend using docker-compose for production.*
## Environment variables: ## Environment variables:
@@ -20,6 +19,7 @@ Then you can run either `docker build` or `docker-compose up`.
| `SENTRY_DSN` | Sentry DSN | `SENTRY_DSN` | Sentry DSN
| `MAX_FILE_SIZE` | in bytes (defaults to 2147483648) | `MAX_FILE_SIZE` | in bytes (defaults to 2147483648)
| `NODE_ENV` | "production" | `NODE_ENV` | "production"
| `BASE_URL` | The HTTPS URL where traffic will be served (e.g. `https://send.firefox.com`)
## Example: ## Example:
@@ -29,5 +29,6 @@ $ docker run --net=host -e 'NODE_ENV=production' \
-e 'REDIS_HOST=dyf9s2r4vo3.bolxr4.0001.usw2.cache.amazonaws.com' \ -e 'REDIS_HOST=dyf9s2r4vo3.bolxr4.0001.usw2.cache.amazonaws.com' \
-e 'SENTRY_CLIENT=https://51e23d7263e348a7a3b90a5357c61cb2@sentry.prod.mozaws.net/168' \ -e 'SENTRY_CLIENT=https://51e23d7263e348a7a3b90a5357c61cb2@sentry.prod.mozaws.net/168' \
-e 'SENTRY_DSN=https://51e23d7263e348a7a3b90a5357c61cb2:65e23d7263e348a7a3b90a5357c61c44@sentry.prod.mozaws.net/168' \ -e 'SENTRY_DSN=https://51e23d7263e348a7a3b90a5357c61cb2:65e23d7263e348a7a3b90a5357c61c44@sentry.prod.mozaws.net/168' \
mozilla/send:latest -e 'BASE_URL=https://send.firefox.com' \
registry.gitlab.com/timvisee/send:latest
``` ```

View File

@@ -1,6 +1,6 @@
# File Encryption # File Encryption
Send use 128-bit AES-GCM encryption via the [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) to encrypt files in the browser before uploading them to the server. The code is in [app/keychain.js](../app/keychain.js). Send uses 128-bit AES-GCM encryption via the [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) to encrypt files in the browser before uploading them to the server. The code is in [app/keychain.js](../app/keychain.js).
## Steps ## Steps

View File

@@ -1,4 +1,4 @@
## How big of a file can I transfer with Firefox Send? ## How big of a file can I transfer with Send?
There is a 2.5GB file size limit built in to Send(1GB for non-signed in users), however, in practice you may There is a 2.5GB file size limit built in to Send(1GB for non-signed in users), however, in practice you may
be unable to send files that large. Send encrypts and decrypts the files in be unable to send files that large. Send encrypts and decrypts the files in
@@ -17,9 +17,9 @@ Many browsers support this standard and should work fine, but some have not
implemented it yet (mobile browsers lag behind on this, in implemented it yet (mobile browsers lag behind on this, in
particular). particular).
## Why does Firefox Send require JavaScript? ## Why does Send require JavaScript?
Firefox Send uses JavaScript to: Send uses JavaScript to:
- Encrypt and decrypt files locally on the client instead of the server. - Encrypt and decrypt files locally on the client instead of the server.
- Render the user interface. - Render the user interface.

View File

@@ -2,7 +2,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en-US"> <html lang="en-US">
<head> <head>
<title>Firefox Send</title> <title>Send</title>
<link href="index.css" rel="stylesheet"> <link href="index.css" rel="stylesheet">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
</head> </head>
@@ -14,4 +14,4 @@
<script src="ios.js"></script> <script src="ios.js"></script>
</body> </body>
</html> </html>

14614
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +1,13 @@
{ {
"name": "firefox-send", "name": "send",
"description": "File Sharing Experiment", "description": "File Sharing Experiment",
"version": "3.0.18", "version": "3.3.1",
"author": "Mozilla (https://mozilla.org)", "author": "Mozilla (https://mozilla.org)",
"repository": "mozilla/send", "contributors": [
"homepage": "https://github.com/mozilla/send/", "Tim Visee <3a4fb3964f@sinenomine.email> (https://timvisee.com)"
],
"repository": "gitlab:timvisee/send",
"homepage": "https://gitlab.com/timvisee/send/",
"license": "MPL-2.0", "license": "MPL-2.0",
"private": true, "private": true,
"scripts": { "scripts": {
@@ -26,7 +29,7 @@
"test:frontend": "cross-env NODE_ENV=development node test/frontend/runner.js", "test:frontend": "cross-env NODE_ENV=development node test/frontend/runner.js",
"test:report": "nyc report --reporter=html", "test:report": "nyc report --reporter=html",
"test-integration": "cross-env NODE_ENV=development wdio test/wdio.docker.conf.js", "test-integration": "cross-env NODE_ENV=development wdio test/wdio.docker.conf.js",
"circleci-test-integration": "cross-env NODE_ENV=development wdio test/wdio.circleci.conf.js", "circleci-test-integration": "echo 'webdriverio tests need to be updated to node 12'",
"start": "npm run clean && cross-env NODE_ENV=development L10N_DEV=true FXA_CLIENT_ID=fced6b5e3f4c66b9 BASE_URL=http://localhost:8080 webpack-dev-server --mode=development", "start": "npm run clean && cross-env NODE_ENV=development L10N_DEV=true FXA_CLIENT_ID=fced6b5e3f4c66b9 BASE_URL=http://localhost:8080 webpack-dev-server --mode=development",
"android": "cross-env ANDROID=1 npm start", "android": "cross-env ANDROID=1 npm start",
"prod": "node server/bin/prod.js" "prod": "node server/bin/prod.js"
@@ -58,111 +61,105 @@
"cache": true "cache": true
}, },
"engines": { "engines": {
"node": ">=10.0.0" "node": "^12.16.3"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.6.0", "@babel/core": "^7.12.3",
"@babel/plugin-proposal-class-properties": "^7.5.5", "@babel/plugin-proposal-class-properties": "^7.12.1",
"@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/preset-env": "^7.6.0", "@babel/preset-env": "^7.12.1",
"@dannycoates/webcrypto-liner": "^0.1.37", "@dannycoates/webcrypto-liner": "^0.1.37",
"@fullhuman/postcss-purgecss": "^1.2.0", "@fullhuman/postcss-purgecss": "^1.3.0",
"@mattiasbuelens/web-streams-polyfill": "0.2.1", "@mattiasbuelens/web-streams-polyfill": "0.2.1",
"@sentry/browser": "^5.6.3", "@sentry/browser": "^5.27.0",
"asmcrypto.js": "^0.22.0", "asmcrypto.js": "^0.22.0",
"babel-loader": "^8.0.6", "babel-loader": "^8.0.6",
"babel-plugin-istanbul": "^5.2.0", "babel-plugin-istanbul": "^5.2.0",
"base64-js": "^1.3.1", "base64-js": "^1.3.1",
"content-disposition": "^0.5.3", "content-disposition": "^0.5.3",
"copy-webpack-plugin": "^5.0.4", "copy-webpack-plugin": "^5.1.2",
"core-js": "^3.2.1", "core-js": "^3.4.0",
"crc": "^3.8.0", "crc": "^3.8.0",
"cross-env": "^5.2.1", "cross-env": "^6.0.3",
"css-loader": "^3.2.0", "css-loader": "^3.6.0",
"css-mqpacker": "^7.0.0", "css-mqpacker": "^7.0.0",
"cssnano": "^4.1.10", "cssnano": "^4.1.10",
"eslint": "^6.3.0", "eslint": "^6.6.0",
"eslint-config-prettier": "^6.2.0", "eslint-config-prettier": "^6.14.0",
"eslint-plugin-mocha": "^6.1.0", "eslint-plugin-mocha": "^6.2.1",
"eslint-plugin-node": "^9.2.0", "eslint-plugin-node": "^10.0.0",
"eslint-plugin-security": "^1.4.0", "eslint-plugin-security": "^1.4.0",
"expose-loader": "^0.7.5", "expose-loader": "^0.7.5",
"extract-loader": "^3.1.0", "extract-loader": "^3.2.0",
"extract-text-webpack-plugin": "^4.0.0-beta.0", "extract-text-webpack-plugin": "^4.0.0-beta.0",
"fast-text-encoding": "^1.0.0", "fast-text-encoding": "^1.0.3",
"file-loader": "^4.2.0", "file-loader": "^4.2.0",
"git-rev-sync": "^1.12.0", "git-rev-sync": "^1.12.0",
"html-loader": "^0.5.5", "html-loader": "^0.5.5",
"http_ece": "^1.1.0", "http_ece": "^1.1.0",
"husky": "^3.0.5", "husky": "^3.0.9",
"intl-pluralrules": "^1.0.3", "intl-pluralrules": "^1.2.2",
"lint-staged": "^9.2.5", "lint-staged": "^9.4.2",
"mocha": "^6.2.0", "mocha": "^6.2.2",
"morgan": "^1.9.1", "morgan": "^1.9.1",
"nanobus": "^4.4.0", "nanobus": "^4.4.0",
"nanohtml": "^1.8.1", "nanohtml": "^1.9.0",
"nanotiming": "^7.3.1", "nanotiming": "^7.3.1",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"nyc": "^14.1.1", "nyc": "^14.1.1",
"postcss-loader": "^3.0.0", "postcss-loader": "^3.0.0",
"postcss-preset-env": "^6.7.0", "postcss-preset-env": "^6.7.0",
"prettier": "^1.18.2", "prettier": "^1.19.1",
"proxyquire": "^2.1.3", "proxyquire": "^2.1.3",
"puppeteer": "^1.19.0", "puppeteer": "^2.0.0",
"raw-loader": "^3.1.0", "raw-loader": "^3.1.0",
"redis-mock": "^0.46.0", "redis-mock": "^0.47.0",
"rimraf": "^3.0.0", "rimraf": "^3.0.0",
"script-loader": "^0.7.2", "script-loader": "^0.7.2",
"sinon": "^7.4.2", "sinon": "^7.5.0",
"string-hash": "^1.1.3", "string-hash": "^1.1.3",
"stylelint": "^10.1.0", "stylelint": "^13.7.2",
"stylelint-config-standard": "^18.3.0", "stylelint-config-standard": "^19.0.0",
"stylelint-no-unsupported-browser-features": "^3.0.2", "stylelint-no-unsupported-browser-features": "^4.0.0",
"svgo": "^1.3.0", "svgo": "^1.3.2",
"svgo-loader": "^2.2.1", "svgo-loader": "^2.2.1",
"tailwindcss": "^1.1.2", "tailwindcss": "^1.9.5",
"val-loader": "^1.1.1", "val-loader": "^1.1.1",
"wdio-docker-service": "^1.4.2",
"wdio-dot-reporter": "0.0.10",
"wdio-firefox-profile-service": "^0.1.3",
"wdio-mocha-framework": "^0.6.3",
"wdio-sauce-service": "^0.4.14",
"wdio-selenium-standalone-service": "0.0.12",
"wdio-spec-reporter": "^0.1.5",
"webdriverio": "^4.14.4",
"webpack": "4.38.0", "webpack": "4.38.0",
"webpack-cli": "^3.3.8", "webpack-cli": "^3.3.12",
"webpack-dev-middleware": "^3.7.1", "webpack-dev-middleware": "^3.7.2",
"webpack-dev-server": "^3.8.0", "webpack-dev-server": "^3.11.0",
"webpack-manifest-plugin": "^2.0.4", "webpack-manifest-plugin": "^2.2.0",
"webpack-unassert-loader": "^1.2.0" "webpack-unassert-loader": "^1.2.0"
}, },
"dependencies": { "dependencies": {
"@dannycoates/express-ws": "^5.0.3", "@dannycoates/express-ws": "^5.0.3",
"@fluent/bundle": "^0.13.0", "@fluent/bundle": "^0.13.0",
"@fluent/langneg": "^0.3.0", "@fluent/langneg": "^0.3.0",
"@google-cloud/storage": "^3.2.1", "@google-cloud/storage": "^5.1.2",
"@sentry/node": "^5.6.2", "@sentry/node": "^5.27.0",
"aws-sdk": "^2.524.0", "aws-sdk": "^2.775.0",
"body-parser": "^1.19.0", "body-parser": "^1.19.0",
"choo": "^7.0.0", "choo": "^7.0.0",
"cldr-core": "^35.1.0", "cldr-core": "^35.1.0",
"configstore": "github:dannycoates/configstore#master", "configstore": "github:dannycoates/configstore#master",
"convict": "^5.1.0", "convict": "^5.2.0",
"express": "^4.17.1", "express": "^4.17.1",
"fxa-geodb": "^1.0.4", "helmet": "^3.23.3",
"helmet": "^3.21.0",
"mkdirp": "^0.5.1", "mkdirp": "^0.5.1",
"mozlog": "^2.2.0", "mozlog": "^2.2.0",
"node-fetch": "^2.6.0", "node-fetch": "^2.6.1",
"redis": "^2.8.0", "redis": "^2.8.0",
"selenium-standalone": "^6.15.6", "selenium-standalone": "^6.20.1",
"ua-parser-js": "^0.7.20" "ua-parser-js": "^0.7.22"
}, },
"availableLanguages": [ "availableLanguages": [
"en-US", "en-US",
"an",
"ar", "ar",
"ast", "ast",
"azz",
"be",
"bn", "bn",
"br", "br",
"ca", "ca",
@@ -181,13 +178,17 @@
"es-MX", "es-MX",
"et", "et",
"eu", "eu",
"fa",
"fi", "fi",
"fr", "fr",
"fy-NL", "fy-NL",
"gn",
"he", "he",
"hr", "hr",
"hsb", "hsb",
"hu", "hu",
"hus",
"hy-AM",
"ia", "ia",
"id", "id",
"it", "it",
@@ -196,6 +197,8 @@
"kab", "kab",
"ko", "ko",
"lt", "lt",
"meh",
"mix",
"ml", "ml",
"nb-NO", "nb-NO",
"nl", "nl",
@@ -203,8 +206,10 @@
"oc", "oc",
"pa-IN", "pa-IN",
"pl", "pl",
"ppl",
"pt-BR", "pt-BR",
"pt-PT", "pt-PT",
"quc",
"ro", "ro",
"ru", "ru",
"sk", "sk",
@@ -213,6 +218,7 @@
"sr", "sr",
"su", "su",
"sv-SE", "sv-SE",
"te",
"th", "th",
"tr", "tr",
"uk", "uk",

152
public/locales/an/send.ftl Normal file
View File

@@ -0,0 +1,152 @@
title = Send
importingFile = Se ye importando…
encryptingFile = Se ye cifrando…
decryptingFile = Se ye descifrando…
downloadCount =
{ $num ->
[one] 1 descarga
*[other] { $num } descargas
}
timespanHours =
{ $num ->
[one] hora
*[other] { $num } horas
}
copiedUrl = Copiau!
unlockInputPlaceholder = Clau
unlockButtonLabel = Desblocar
downloadButtonLabel = Descargar
downloadFinish = Descarga completa
fileSizeProgress = ({ $partialSize } de { $totalSize })
sendYourFilesLink = Preba Send
errorPageHeader = I ha habiu bell problema!
fileTooBig = Ixe fichero ye masiau gran pa cargar-lo. Ha de tener menos de { $size }
linkExpiredAlt = Lo vinclo ye caducau
notSupportedHeader = Lo suyo navegador no ye compatible
notSupportedLink = Per qué no ye compatible lo mío navegador?
notSupportedOutdatedDetail = Esta versión de Firefox no admite la tecnolochía web con que funciona lo Send. Habrás d'esviellar lo navegador.
updateFirefox = Esviellar Firefox
deletePopupCancel = Cancelar
deleteButtonHover = Borrar
footerLinkLegal = Aviso legal
footerLinkPrivacy = Privacidat
footerLinkCookies = Cookies
passwordTryAgain = La contrasenya ye incorrecta. Torne-lo a intentar.
javascriptRequired = Send necesita JavaScript
whyJavascript = Per qué Send necesita JavaScript?
enableJavascript = Activa JavaScript y torna-lo a intentar.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
expiresHoursMinutes = { $hours } h { $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 the user enters a long password
maxPasswordLength = Maxima lonchitut d'a clau: { $length }
# A short status message shown when there was an error setting the password
passwordSetError = No s'ha puesto definir la clau
## Send version 2 strings
-send-brand = Send
-send-short-brand = Send
-firefox = Firefox
-mozilla = Mozilla
introTitle = Compartición de fichers simpla y privada
introDescription = { -send-brand } te permite de compartir fichers cifraus de cabo a cabo, y tamién un vinclo que expira automaticament. Asinas, puetz mantener en privau lo que compartes y asegurar-te de que los tuyos contenius no se quedan pa cutio en linia.
notifyUploadEncryptDone = Lo fichero s'ha cifrau y ye presto pa ninviar-se
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
archiveExpiryInfo = Caduca dimpués de { $downloadCount } u { $timespan }
timespanMinutes =
{ $num ->
[one] 1 minuto
*[other] { $num } minutos
}
timespanDays =
{ $num ->
[one] 1 día
*[other] { $num } días
}
timespanWeeks =
{ $num ->
[one] 1 semana
*[other] { $num } semanas
}
fileCount =
{ $num ->
[one] 1 fichero
*[other] { $num } fichers
}
# byte abbreviation
bytes = B
# kibibyte abbreviation
kb = KB
# mebibyte abbreviation
mb = MB
# gibibyte abbreviation
gb = GB
# localized number and byte abbreviation. example "2.5MB"
fileSize = { $num }{ $units }
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
totalSize = Mida total: { $size }
# the next line after the colon contains a file name
copyLinkDescription = Copiar lo vinclo que quiers compartir
copyLinkButton = Copiar lo vinclo
downloadTitle = Descargar los fichers
downloadDescription = Este fichero s'ha compartiu per medio de { -send-brand } con cifrau de cabo a cabo y un vinclo que caduca automaticament.
trySendDescription = Preba { -send-brand } pa una compartición de fichers simpla y segura.
# count will always be > 10
tooManyFiles =
{ $count ->
[one] Nomás se puet puyar 1 fitxer de vez.
*[other] Nomás se pueden puyar { $count } fichers de vez.
}
# count will always be > 10
tooManyArchives =
{ $count ->
[one] Nomás se permite 1 ficher.
*[other] Nomás se permiten { $count } fichers.
}
expiredTitle = Este vinclo ye caducau.
notSupportedDescription = { -send-brand } no funcionará con este navegador. { -send-short-brand } funciona millor con a zaguera versión de { -firefox } y funcionará con a versión mas recient d'a mayor parte de navegadors.
downloadFirefox = Descargar { -firefox }
legalTitle = Aviso de privacidat de { -send-short-brand }
legalDateStamp = Versió 1.0, con data d'o 12 de marzo de 2019
# A short representation of a countdown timer containing the number of days, hours, and minutes remaining as digits, example "2d 11h 56m"
expiresDaysHoursMinutes = { $days } d { $hours } h { $minutes } min
addFilesButton = Triar los fichers a cargar
uploadButton = Cargar
# the first part of the string 'Drag and drop files or click to send up to 1GB'
dragAndDropFiles = Arrociega y suelta los fichers
# the second part of the string 'Drag and drop files or click to send up to 1GB'
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
orClickWithSize = u fes clic aquí pa ninviar dica { $size }
addPassword = Protecher con una clau
emailPlaceholder = Escribe la tuya adreza de correu
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
signInSizeBump = Inicia una sesión pa ninviar dica { $size }
signInOnlyButton = Iniciar la sesión
accountBenefitTitle = Crea una cuenta de { -firefox } u dentra-ie
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
accountBenefitLargeFiles = Compartir fichers dica { $size }
accountBenefitDownloadCount = Compartir fichers con mas chent
accountBenefitTimeLimit =
{ $count ->
[one] Mantiene los vinclos activos dica 1 dia
*[other] Mantiene los vinclos activos dica { $count } días
}
accountBenefitSync = Chestiona los fichers compartius dende qualsequier dispositivo
accountBenefitMoz = Descubre mas cosas sobre los atros servicios de { -mozilla }
signOut = Zarrar la sesión
okButton = Vale
downloadingTitle = Se ye descargando
noStreamsWarning = Este navegador talment no pueda descifrar un fichero tant gran.
noStreamsOptionCopy = Copia lo vinclo pa ubrir-lo en belatro navegador
noStreamsOptionFirefox = Preba lo nuestro navegador favorito
noStreamsOptionDownload = Continar con este navegador
downloadFirefoxPromo = Lo nuevo { -firefox } t'ofreix { -send-short-brand }.
# the next line after the colon contains a file name
shareLinkDescription = Comparte lo vinclo enta lo tuyo fichero:
shareLinkButton = Compartir lo vinclo
# $name is the name of the file
shareMessage = Baixa-te «{ $name }» con { -send-brand }: compartición de fiches simpla y segura
trailheadPromo = I hai una manera de protecher la tuya privacidat. Une-te a Firefox.
learnMore = Mas información

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized.
title = فَيَرفُكس سِنْد title = فَيَرفُكس سِنْد
siteFeedback = الانطباعات
importingFile = يستورد… importingFile = يستورد…
encryptingFile = يعمّي… encryptingFile = يعمّي…
decryptingFile = يفك التعمية… decryptingFile = يفك التعمية…
@@ -56,6 +54,10 @@ passwordSetError = يجب ألا تُضبط كلمة السر هذه
## Send version 2 strings ## Send version 2 strings
-send-brand = Send
-send-short-brand = Send
-firefox = Firefox
-mozilla = Mozilla
introTitle = شارِك ملفاتك بلا عناء وبخصوصية تامة introTitle = شارِك ملفاتك بلا عناء وبخصوصية تامة
introDescription = يتيح لك { -send-brand } مشاركة الملفات عبر تعميتها من الطرفين وإتاحتها في رابط ينقضي أجله تلقائيا. هكذا يمكنك إبقاء ما شاركته خاصًا فتضمن بأن ملفاتك لن تبقى في الوِب أبد الدهر. introDescription = يتيح لك { -send-brand } مشاركة الملفات عبر تعميتها من الطرفين وإتاحتها في رابط ينقضي أجله تلقائيا. هكذا يمكنك إبقاء ما شاركته خاصًا فتضمن بأن ملفاتك لن تبقى في الوِب أبد الدهر.
notifyUploadEncryptDone = اكتملت تعمية الملف وأصبح جاهزًا لإرساله notifyUploadEncryptDone = اكتملت تعمية الملف وأصبح جاهزًا لإرساله
@@ -182,4 +184,5 @@ shareLinkDescription = شارِك الرابط الذي يصل إلى الملف
shareLinkButton = شارِك الرابط shareLinkButton = شارِك الرابط
# $name is the name of the file # $name is the name of the file
shareMessage = نزِّل ”{ $name }“ عبر { -send-brand }: خدمة لمشاركة الملفات بلا عناء وبخصوصية تامة shareMessage = نزِّل ”{ $name }“ عبر { -send-brand }: خدمة لمشاركة الملفات بلا عناء وبخصوصية تامة
trailheadPromo = يمكنك حماية خصوصيتك، طبعا. انضم إلى فَيَرفُكس.
learnMore = اطّلع على المزيد. learnMore = اطّلع على المزيد.

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Comentarios
importingFile = Importando... importingFile = Importando...
encryptingFile = Cifrando... encryptingFile = Cifrando...
decryptingFile = Descifrando... decryptingFile = Descifrando...
@@ -20,13 +18,13 @@ unlockButtonLabel = Desbloquiar
downloadButtonLabel = Baxar downloadButtonLabel = Baxar
downloadFinish = Completóse la descarga downloadFinish = Completóse la descarga
fileSizeProgress = ({ $partialSize } de { $totalSize }) fileSizeProgress = ({ $partialSize } de { $totalSize })
sendYourFilesLink = Probar Firefox Send sendYourFilesLink = Probar Send
errorPageHeader = ¡Daqué foi mal! errorPageHeader = ¡Asocedió daqué malo!
fileTooBig = Esti ficheru ye mui grande como pa xubilu. Debería tener menos de { $size }. fileTooBig = Esti ficheru ye mui grande como pa xubilu. Debería tener menos de { $size }.
linkExpiredAlt = Caducó l'enllaz linkExpiredAlt = Caducó l'enllaz
notSupportedHeader = El to restolador nun ta sofitáu. notSupportedHeader = El to restolador nun ta sofitáu.
notSupportedLink = ¿Por qué'l mio restolador nun ta sofitáu? notSupportedLink = ¿Por qué'l mio restolador nun ta sofitáu?
notSupportedOutdatedDetail = Desafortunadamente esta versión de Firefox nun sofita la teunoloxía web qu'usa Firefox Send. Vas precisar anovar Firefox. notSupportedOutdatedDetail = Desafortunadamente esta versión de Firefox nun sofita la teunoloxía web qu'usa Send. Vas precisar anovar el restolador.
updateFirefox = Anovar Firefox updateFirefox = Anovar Firefox
deletePopupCancel = Encaboxar deletePopupCancel = Encaboxar
deleteButtonHover = Desaniciar deleteButtonHover = Desaniciar
@@ -34,8 +32,8 @@ footerLinkLegal = Llegal
footerLinkPrivacy = Privacidá footerLinkPrivacy = Privacidá
footerLinkCookies = Cookies footerLinkCookies = Cookies
passwordTryAgain = La contraseña ye incorreuta. Volvi tentalo. passwordTryAgain = La contraseña ye incorreuta. Volvi tentalo.
javascriptRequired = Firefox Send rique JavaScript javascriptRequired = Send rique JavaScript
whyJavascript = ¿Por qué Firefox Send rique JavaScript? whyJavascript = ¿Por qué Send rique JavaScript?
enableJavascript = Activa JavaScript y volvi tentalo, por favor. enableJavascript = Activa JavaScript y volvi tentalo, por favor.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # 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 expiresHoursMinutes = { $hours }h { $minutes }m
@@ -48,15 +46,15 @@ passwordSetError = Nun pudo afitase esta contraseña
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = Send -send-short-brand = Send
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla
introTitle = Compartición de ficheros privada y cenciella introTitle = Compartición de ficheros privada y cenciella
introDescription = { -send-brand } déxate compartir ficheros con cifráu puntu a puntu y un enllaz que caduca automáticamente. D'esti mou, asegúreste de que lo que compartes ye privao y nun va tar siempres en llinia.
notifyUploadEncryptDone = El ficheru ta cifráu y preparáu pa unviase notifyUploadEncryptDone = El ficheru ta cifráu y preparáu pa unviase
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes' # downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
archiveExpiryInfo = Caduca tres { $downloadCount } ó { $timespan } archiveExpiryInfo = Caduca dempués de { $downloadCount } ó { $timespan }
timespanMinutes = timespanMinutes =
{ $num -> { $num ->
[one] 1 minutu [one] 1 minutu
@@ -108,8 +106,10 @@ tooManyArchives =
*[other] Namái se permiten { $count } archivos *[other] Namái se permiten { $count } archivos
} }
expiredTitle = Esti enllaz caducó. expiredTitle = Esti enllaz caducó.
notSupportedDescription = { -send-brand } nun va funcionar con esti restolador. { -send-short-brand } funciona meyor cola versión última de { -firefox } y cola versión actual de la mayoría de restoladores. notSupportedDescription = { -send-brand } nun va funcionar con esti restolador. { -send-short-brand } funciona meyor cola última versión de { -firefox } y l'actual de la mayoría de restoladores.
legalTitle = Noticia de privacidá de { -send-short-brand } downloadFirefox = Baxar { -firefox }
legalTitle = Avisu de privacidá de { -send-short-brand }
legalDateStamp = Versión 1.0, con data del 12 de marzu de 2019
# A short representation of a countdown timer containing the number of days, hours, and minutes remaining as digits, example "2d 11h 56m" # A short representation of a countdown timer containing the number of days, hours, and minutes remaining as digits, example "2d 11h 56m"
expiresDaysHoursMinutes = { $days }d { $hours }h { $minutes }m expiresDaysHoursMinutes = { $days }d { $hours }h { $minutes }m
addFilesButton = Esbillar los ficheros a unviar addFilesButton = Esbillar los ficheros a unviar
@@ -123,15 +123,15 @@ addPassword = Protexer con una contraseña
emailPlaceholder = Introduz el to corréu emailPlaceholder = Introduz el to corréu
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB") # $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
signInSizeBump = Anicia sesión pa unviar hasta { $size } signInSizeBump = Anicia sesión pa unviar hasta { $size }
signInButton = Rexistrase/aniciar sesión signInOnlyButton = Aniciar sesión
accountBenefitTitle = Creación d'una cuenta { -firefox } o aniciu de sesión nella accountBenefitTitle = Creación d'una cuenta de { -firefox } o aniciu de sesión nella
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB") # $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
accountBenefitLargeFiles = Comparti ficheros d'hasta { $size } accountBenefitLargeFiles = Comparti ficheros d'hasta { $size }
accountBenefitDownloadCount = Comparti ficheros con más xente accountBenefitDownloadCount = Comparti ficheros con más xente
accountBenefitTimeLimit = accountBenefitTimeLimit =
{ $count -> { $count ->
[one] Caltén activos los enllaces demientres 1 día [one] Caltién activos los enllaces demientres 1 día
*[other] Caltén activos los enllaces demientres 1 díes *[other] Caltién activos los enllaces demientres { $count } díes
} }
accountBenefitSync = Xestiona los ficheros compartíos dende cualesquier preséu accountBenefitSync = Xestiona los ficheros compartíos dende cualesquier preséu
accountBenefitMoz = Deprendi más tocante a otros servicios de { -mozilla } accountBenefitMoz = Deprendi más tocante a otros servicios de { -mozilla }
@@ -139,3 +139,5 @@ signOut = Zarrar sesión
okButton = Aceutar okButton = Aceutar
downloadingTitle = Baxando downloadingTitle = Baxando
noStreamsWarning = Esti restolador quiciabes nun seya a descifrar un ficheru d'esti tamañu. noStreamsWarning = Esti restolador quiciabes nun seya a descifrar un ficheru d'esti tamañu.
trailheadPromo = Hai un mou de protexer la to privacidá. Xúnite a Firefox.
learnMore = Deprender más.

View File

@@ -1,31 +1,7 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteSubtitle = web eksperiment
siteFeedback = Geri dönüş
uploadPageHeader = Məxfi, Şifrələnmiş Fayl Paylaşma
uploadPageExplainer = Fayllarınızı təhlükəsiz, məxfi, şifrələnmiş və daima onlayn qalmaması üçün avtomatik silinən keçidlə göndərin.
uploadPageLearnMore = Ətraflı öyrən
uploadPageDropMessage = Yükləmək üçün faylınızı buraya daşıyın
uploadPageSizeMessage = Xidmətin daha yaxşı işləməsi üçün faylınız 1 GB-dan az olmalıdır
uploadPageBrowseButton = Kompüterinizdən fayl seçin
uploadPageBrowseButton1 = Yüklənəcək faylı seçin
uploadPageMultipleFilesAlert = Birdən çox fayl və ya qovluq yükləmə hələlik dəstəklənmir.
uploadPageBrowseButtonTitle = Fayl yüklə
uploadingPageProgress = { $filename } ({ $size }) yüklənir
importingFile = İdxal edilir… importingFile = İdxal edilir…
verifyingFile = Təsdiqlənir…
encryptingFile = Şifrələnir... encryptingFile = Şifrələnir...
decryptingFile = Şifrə açılır... decryptingFile = Şifrə açılır...
notifyUploadDone = Yükləməniz hazırdır.
uploadingPageMessage = Faylınız yükləndikdən sonra vaxtı çıxma seçimlərini qura biləcəksiz.
uploadingPageCancel = Yükləməni ləğv et
uploadCancelNotification = Yükləməniz ləğv edildi.
uploadingPageLargeFileMessage = Fayl böyükdür və yükləmək çox vaxt ala bilər. Səbirli olun!
uploadingFileNotification = Yükləmə bitdiyində xəbər ver.
uploadSuccessConfirmHeader = Göndərməyə hazır
uploadSvgAlt = Yüklə
uploadSuccessTimingHeader = Faylınızın keçidinin 1 endirmədən və ya 24 saatdan sonra vaxtı çıxacaq.
expireInfo = Faylınız üçün keçidin vaxtı { $downloadCount } sonra və ya { $timespan } tarixində keçəcək.
downloadCount = downloadCount =
{ $num -> { $num ->
[one] 1 endirmə [one] 1 endirmə
@@ -36,86 +12,58 @@ timespanHours =
[one] 1 saat [one] 1 saat
*[other] { $num } saat *[other] { $num } saat
} }
copyUrlFormLabelWithName = Faylınızı göndərmək üçün keçidi köçürün: { $filename }
copyUrlFormButton = Buferə köçür
copiedUrl = Köçürüldü! copiedUrl = Köçürüldü!
deleteFileButton = Faylı sil
sendAnotherFileLink = Başqa fayl göndər
# Alternative text used on the download link/button (indicates an action).
downloadAltText = Endir
downloadsFileList = Endirmələr
# Used as header in a column indicating the amount of time left before a
# download link expires (e.g. "10h 5m")
timeFileList = Vaxt
# Used as header in a column indicating the number of times a file has been
# downloaded
downloadFileName = { $filename } faylını endir
downloadFileSize = ({ $size })
unlockInputLabel = Parol daxil edin
unlockInputPlaceholder = Parol unlockInputPlaceholder = Parol
unlockButtonLabel = Aç unlockButtonLabel = Aç
downloadFileTitle = Şifrələnmiş Faylı Endir
# Firefox Send is a brand name and should not be localized.
downloadMessage = Yoldaşınız Firefox Send ilə sizə fayl göndərir, fayllarınızı təhlükəsiz, məxfi, şifrələnmiş və daima onlayn qalmaması üçün avtomatik silən fayl göndərmə xidməti.
# Text and title used on the download link/button (indicates an action).
downloadButtonLabel = Endir downloadButtonLabel = Endir
downloadNotification = Endirməniz tamamlandı.
downloadFinish = Endirmə Tamamlandı downloadFinish = Endirmə Tamamlandı
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
fileSizeProgress = ({ $partialSize } / { $totalSize }) fileSizeProgress = ({ $partialSize } / { $totalSize })
# Firefox Send is a brand name and should not be localized. sendYourFilesLink = Send Yoxla
sendYourFilesLink = Firefox Send Yoxla
downloadingPageProgress = { $filename } faylı ({ $size }) endirilir
downloadingPageMessage = Lütfən faylı endirib şifrəsini açarkən vərəqi açıq buraxın.
errorAltText = Yükləmə xətası
errorPageHeader = Nəsə səhv getdi! errorPageHeader = Nəsə səhv getdi!
errorPageMessage = Faylı yüklərkən xəta baş verdi.
errorPageLink = Başqa fayl göndər
fileTooBig = Fayl yükləmək üçün çox böyükdür. Fayl { $size }-dan az olmalıdır. fileTooBig = Fayl yükləmək üçün çox böyükdür. Fayl { $size }-dan az olmalıdır.
linkExpiredAlt = Keçidin vaxtı çıxıb linkExpiredAlt = Keçidin vaxtı çıxıb
expiredPageHeader = Keçidin vaxtı çıxıb və ya heç vaxt olmayıb!
notSupportedHeader = Səyyahınız dəstəklənmir. notSupportedHeader = Səyyahınız dəstəklənmir.
# Firefox Send is a brand name and should not be localized.
notSupportedDetail = Heyf ki, bu səyyah Firefox Send-ə güc verən web texnologiyalarını dəstəkləmir. Fərqli bir səyyah yoxlamalısınız. Biz Firefox məsləhət görürük!
notSupportedLink = Səyyahım niyə dəstəklənmir? notSupportedLink = Səyyahım niyə dəstəklənmir?
notSupportedOutdatedDetail = Heyf ki, Firefox səyyahının bu versiyası Firefox Send-ə güc verən web texnologiyalarını dəstəkləmir. Səyyahınızı yeniləməlisiniz. notSupportedOutdatedDetail = Heyf ki, Firefox səyyahının bu versiyası Send-ə güc verən web texnologiyalarını dəstəkləmir. Səyyahınızı yeniləməlisiniz.
updateFirefox = Firefox-u Yenilə updateFirefox = Firefox-u Yenilə
downloadFirefoxButtonSub = Pulsuz Endir
uploadedFile = Fayl
copyFileList = Keçidi Köçürt
# expiryFileList is used as a column header
expiryFileList = Vaxtı çıxma tarixi
deleteFileList = Sil
nevermindButton = Vacib deyil
legalHeader = Şərtlər və Məxfilik
legalNoticeTestPilot = Firefox Send Test Pilot eksperimentidir, Test Pilot <a>Xidmət Şərtləri</a> və <a>Məxfilik Bildirişi</a>-nə tabedir. Bu eksperiment və məlumat yığma haqqında <a>buradan</a> öyrənə bilərsiz.
legalNoticeMozilla = Firefox Send saytının istifadəsi həmçinin Mozilla-nın <a>Saytlar üçün Məxfilik Bildirişi</a> və <a>Sayt İstifadə Şərtləri</a>-nə tabedir.
deletePopupText = Fayl silinsin?
deletePopupYes = Bəli
deletePopupCancel = Ləğv et deletePopupCancel = Ləğv et
deleteButtonHover = Sil deleteButtonHover = Sil
copyUrlHover = Keçidi Köçürt
footerLinkLegal = Hüquqi footerLinkLegal = Hüquqi
# Test Pilot is a proper name and should not be localized.
footerLinkAbout = Test Pilot Haqqında
footerLinkPrivacy = Məxfilik footerLinkPrivacy = Məxfilik
footerLinkTerms = Şərtlər
footerLinkCookies = Çərəzlər footerLinkCookies = Çərəzlər
requirePasswordCheckbox = Bu faylı endirmək üçün parol tələb et
addPasswordButton = Parol əlavə et
changePasswordButton = Dəyişdir
passwordTryAgain = Səhv parol. Təkrar yoxlayın. passwordTryAgain = Səhv parol. Təkrar yoxlayın.
reportIPInfringement = Əqli-mülkiyyət pozuntusu bildir javascriptRequired = Send üçün JavaScript lazımdır
javascriptRequired = Firefox Send üçün JavaScript lazımdır whyJavascript = Send niyə JavaScript tələb edir?
whyJavascript = Firefox Send niyə JavaScript tələb edir?
enableJavascript = Lütfən JavaScript-i aktiv edib təkrar yoxlayın. enableJavascript = Lütfən JavaScript-i aktiv edib təkrar yoxlayın.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
expiresHoursMinutes = { $hours } saat { $minutes } dəq expiresHoursMinutes = { $hours } saat { $minutes } dəq
# 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 } dəq expiresMinutes = { $minutes } dəq
# A short status message shown when a password is successfully set
passwordIsSet = Parol quruldu
# 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 = Maksimum parol uzunluğu: { $length } maxPasswordLength = Maksimum parol uzunluğu: { $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 = Parol qurula bilmədi passwordSetError = Parol qurula bilmədi
## Send version 2 strings
-send-brand = Send
-send-short-brand = Send
-firefox = Firefox
-mozilla = Mozilla
# byte abbreviation
bytes = B
# kibibyte abbreviation
kb = KB
# mebibyte abbreviation
mb = MB
# gibibyte abbreviation
gb = GB
# localized number and byte abbreviation. example "2.5MB"
fileSize = { $num }{ $units }
copyLinkButton = Keçidi köçür
uploadButton = Yüklə
signInOnlyButton = Daxil ol
signOut = Çıx
okButton = Tamam
downloadingTitle = Endirilir
shareLinkButton = Keçidi paylaş

143
public/locales/azz/send.ftl Normal file
View File

@@ -0,0 +1,143 @@
title = Send
importingFile = Mokalakijtok…
encryptingFile = Motatijtok…
decryptingFile = Kichiujtok se uelis kiixtajtoltis ya…
downloadCount =
{ $num ->
*[undefined] 1 kitemouijtok / { $num } kintemouijtok
}
timespanHours =
{ $num ->
*[undefined] 1 hora / { $num } hora
}
copiedUrl = ¡Moixkopinak!
unlockInputPlaceholder = Ichtakatajtol
unlockButtonLabel = Xikajchiua tein amo kikaua maj tekiti
downloadButtonLabel = Xiktemoui
downloadFinish = Nochi motemouij ya
fileSizeProgress = ({ $partialSize } itech { $totalSize })
sendYourFilesLink = Xikejeko Send
errorPageHeader = ¡Tensa amo kuali kisak!
fileTooBig = Nejin tajkuilol semi ueyi. Moneki amo panos { $size }
linkExpiredAlt = Nejin tein tikpatskilij amo tekititok ya
notSupportedHeader = Monavegador amo kualtia.
notSupportedLink = ¿Keyej nonavegador amo kualtia?
notSupportedOutdatedDetail = Tetayokoltij, Firefox tein tikuitok amo kiselia tepostekitilis tecnología web tein ika tekiti Send. Moneki tikyankuilis monavegador.
updateFirefox = Maj Firefox moyankuili
deletePopupCancel = Maj motsakuili uan amo tami tein kichiujtok
deleteButtonHover = Maj majchiua
footerLinkLegal = Keniuj motekitiltis
footerLinkPrivacy = Keniuj tikyekpiaj tein tikseliaj
footerLinkCookies = Cookies
passwordTryAgain = Amo yektik ichtakatajtol. Oksepa xikijkuilo.
javascriptRequired = Send kineki maj moajsi JavaScript
whyJavascript = ¿Keyej Send kineki maj moajsi JavaScript?
enableJavascript = Se kualtakayot, xikaua maj peua tekiti JavaScript uan oksepa xikejeko.
# 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 the user enters a long password
maxPasswordLength = Keniuj ueyak ichtakatajtol, maj amo pano: { $length }
# A short status message shown when there was an error setting the password
passwordSetError = Nejin ichtakatajtol amo uel kiixtaliani
## Send version 2 strings
-send-brand = Send
-send-short-brand = Xiktitani
-firefox = Firefox
-mozilla = Mozilla
introTitle = Amo ouij uan ichtaka xikinpanoltili oksekin motajkuiloluan archivos
introDescription = { -send-brand } mitspaleuia uan ijkon tikinpanoltilis oksekin motajkuiloluan archivos ika tapoualmej tein amo aksa uelis kiajsikamatis, uan no kitemaka kampa se kipatskilis tein niman ixpoliui. Ijkuin uelis tikichtakaeuas tein tikintitanilis oksekin uan tikyekmatis tein moaxka amo nochipaya mokauas itech Internet.
notifyUploadEncryptDone = Moarchivo moijkuiloj ya kemej amo akin uelis kiixtajtoltis uan se uelis kititanis ya
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
archiveExpiryInfo = Poliui ijkuak tiajsis { $downloadCount } oso { $timespan }
timespanMinutes =
{ $num ->
*[undefined] 1 minuto / { $num } minuto
}
timespanDays =
{ $num ->
*[undefined] 1 tonal / { $num } tonalmej
}
timespanWeeks =
{ $num ->
*[undefined] 1 semana / { $num } semana
}
fileCount =
{ $num ->
*[undefined] 1 archivo / { $num } archivos
}
# byte abbreviation
bytes = B
# kibibyte abbreviation
kb = KB
# mebibyte abbreviation
mb = MB
# gibibyte abbreviation
gb = GB
# localized number and byte abbreviation. example "2.5MB"
fileSize = { $num }{ $units }
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
totalSize = Nochi tamachiua: { $size }
# the next line after the colon contains a file name
copyLinkDescription = Xikixkopina tein se kipatskilis uan xikinpanoltili oksekin moarchivo:
copyLinkButton = Xikixkopina tein se kipatskilis
downloadTitle = Xiktemoui tajkuilolmej archivos
downloadDescription = Nejin archivo mopanoltij itechkopa { -send-brand } ika tapoualmej tein amo aksa uelis kiajsikamatis, uan no tein ika se kipatskilis tein niman ixpoliui.
trySendDescription = Xikejeko { -send-brand } ijkon amo ouij uelis tikinpanoltilis oksekin motajkuiloluan archivos uan tikyekmatis ke amo tej kipanos.
# count will always be > 10
tooManyFiles =
{ $count ->
*[other] Sayoj { $count } tajkuilolmej archivos uelis tikolochtejkoltis saj.
}
# count will always be > 10
tooManyArchives =
{ $count ->
*[other] Sayoj { $count } tajkuilolmej archivos uelis moajsiskej saj.
}
expiredTitle = Nejin tein tikpatskilij amo tekititos ok.
notSupportedDescription = { -send-brand } amo tekiti ika nejin navegador. { -send-short-brand } okachi kuali tekiti tein ika okachi yankuik { -firefox }, uan no tekitis tein ika okachi yankuikej tel miak navegadores.
downloadFirefox = Xiktemoui { -firefox }
legalTitle = { -send-short-brand } tanauatia ika yekpialis tein moaxka itech tepos
legalDateStamp = Versión 1.0 tein kikixtijkej 12 tonal metsti marzo 2019
# A short representation of a countdown timer containing the number of days, hours, and minutes remaining as digits, example "2d 11h 56m"
expiresDaysHoursMinutes = { $days }t { $hours }h { $minutes }m
addFilesButton = Xikinixpejpena tajkuilolmej archivos tein tikintejkoltis
uploadButton = Xiktejkolti
# the first part of the string 'Drag and drop files or click to send up to 1GB'
dragAndDropFiles = Xikintilana uan xikinkajkaua tajkuilolmej archivos
# the second part of the string 'Drag and drop files or click to send up to 1GB'
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
orClickWithSize = oso xikpatskili uan tiktitanis, sayoj tein amo panoua { $size }
addPassword = Xikyekpia ika se ichtakatajtol
emailPlaceholder = Xikijkuilo mocorreo itech tepos
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
signInSizeBump = Xikalakteua uan uelis tiktitanis tein amo panos { $size }
signInOnlyButton = Kampa se kalakteua
accountBenefitTitle = Ximochiuili se cuenta itech { -firefox } oso xikalakteua
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
accountBenefitLargeFiles = Xikintitani tajkuilolmej archivos tein amo panouaj { $size }
accountBenefitDownloadCount = Xikintitanili tajkuilolmej archivos oksekin
accountBenefitTimeLimit =
{ $count ->
*[undefined] Kampa se kipatskilis maj kisentokakan kualtiakan se tonal ok / { $count } tonalmej ok
}
accountBenefitSync = Itech tein yeski tepos xikixyekana motajkuiloluan archivos tein tikinpanoltilij oksekin
accountBenefitMoz = Okachi tikmatis okseki tapaleuilmej tein kitemaka { -mozilla }
signOut = Kampa se kisa
okButton = Kuali yetok
downloadingTitle = Kitemouijtok
noStreamsWarning = Xa navegador amo uelis kitalij nejin tajkuilol archivo tein tel ueyi kemej se uelis kiyekixtajtoltis ya.
noStreamsOptionCopy = Xikixkopina tein se kipatskilis uan ijkon se uelis kitatapos itech okse navegador
noStreamsOptionFirefox = Xikejeko navegador tein semi techuelita
noStreamsOptionDownload = Maj niksentoka niktatekiujti nejin navegador
downloadFirefoxPromo = Yankuik { -firefox } mitsixpantilia { -send-short-brand }.
# the next line after the colon contains a file name
shareLinkDescription = Xikinpanoltili oksekin tein se kipatskilis uan teuika motajkuilol archivo:
shareLinkButton = Kampa se kipatskilis tein uelis tikinpanoltilis oksekin
# $name is the name of the file
shareMessage = Xiktemoui “{ $name }” ika { -send-brand }: amo ouij uelis tikinpanoltilis oksekin motajkuiloluan archivos uan tikyekmatis ke amo tej kipanos
trailheadPromo = Kemaj, uelis tikyekpias tein moaxka itech tepos. Xipoui Firefox.
learnMore = Xiktemoui tajkuilolmej archivos.

161
public/locales/be/send.ftl Normal file
View File

@@ -0,0 +1,161 @@
title = Send
importingFile = Імпартаванне...
encryptingFile = Зашыфроўка...
decryptingFile = Расшыфроўка...
downloadCount =
{ $num ->
[one] { $num } сцягванне
[few] { $num } сцягванні
*[many] { $num } сцягванняў
}
timespanHours =
{ $num ->
[one] { $num } гадзіна
[few] { $num } гадзіны
*[many] { $num } гадзін
}
copiedUrl = Скапіявана!
unlockInputPlaceholder = Пароль
unlockButtonLabel = Разблакаваць
downloadButtonLabel = Сцягнуць
downloadFinish = Сцягванне скончана
fileSizeProgress = ({ $partialSize } з { $totalSize })
sendYourFilesLink = Паспрабуйце Send
errorPageHeader = Нешта пайшло не так!
fileTooBig = Гэты файл надта вялікі. Ён мусіць быць меншым за { $size }
linkExpiredAlt = Тэрмін дзеяння спасылкі сышоў
notSupportedHeader = Ваш браўзер не падтрымліваецца.
notSupportedLink = Чаму мой браўзер не падтрымліваецца?
notSupportedOutdatedDetail = На жаль, гэтая версія Firefox не падтрымлівае вэб-тэхналогію, што забяспечвае працу Send. Вам трэба абнавіць свой браўзер.
updateFirefox = Абнавіць Firefox
deletePopupCancel = Скасаваць
deleteButtonHover = Выдаліць
footerLinkLegal = Прававыя звесткі
footerLinkPrivacy = Прыватнасць
footerLinkCookies = Кукі
passwordTryAgain = Некарэктны пароль. Паспрабуйце зноў.
javascriptRequired = Для Send неабходны JavaScript
whyJavascript = Чаму для Send неабходны JavaScript?
enableJavascript = Калі ласка, уключыце JavaScript і паспрабуйце зноў.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
expiresHoursMinutes = { $hours } г. { $minutes } хв.
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
expiresMinutes = { $minutes } хв.
# A short status message shown when the user enters a long password
maxPasswordLength = Максімальная даўжыня пароля: { $length }
# A short status message shown when there was an error setting the password
passwordSetError = Гэты пароль немагчыма паставіць
## Send version 2 strings
-send-brand = Send
-send-short-brand = Send
-firefox = Firefox
-mozilla = Mozilla
introTitle = Просты і прыватны абмен файламі
introDescription = { -send-brand } дазваляе вам абменьвацца файламі са скразным шыфраваннем і спасылкамі з абмежаваным тэрмінам дзеяння. Такім чынам, вы можаце дзяліцца файламі прыватна і быць упэўненым, што яны не застануцца ў сеціве назаўжды.
notifyUploadEncryptDone = Ваш файл зашыфраваны і гатовы да адпраўкі
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
archiveExpiryInfo = Тэрмін дзеяння сыдзе праз { $downloadCount } або { $timespan }
timespanMinutes =
{ $num ->
[one] { $num } хвіліна
[few] { $num } хвіліны
*[many] { $num } хвілін
}
timespanDays =
{ $num ->
[one] { $num } дзень
[few] { $num } дні
*[many] { $num } дзён
}
timespanWeeks =
{ $num ->
[one] { $num } тыдзень
[few] { $num } тыдні
*[many] { $num } тыдняў
}
fileCount =
{ $num ->
[one] { $num } файл
[few] { $num } файлы
*[many] { $num } файлаў
}
# byte abbreviation
bytes = Б
# kibibyte abbreviation
kb = КБ
# mebibyte abbreviation
mb = МБ
# gibibyte abbreviation
gb = ГБ
# localized number and byte abbreviation. example "2.5MB"
fileSize = { $num } { $units }
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
totalSize = Агульны памер: { $size }
# the next line after the colon contains a file name
copyLinkDescription = Скапіруйце спасылку, каб падзяліцца сваім файлам:
copyLinkButton = Скапіраваць спасылку
downloadTitle = Сцягнуць файлы
downloadDescription = Гэтым файлам падзяліліся праз { -send-brand } са скразным шыфраваннем і спасылкай з абмежаваным тэрмінам дзеяння.
trySendDescription = Паспрабуйце { -send-brand } для простага і бяспечнага абмену файламі.
# count will always be > 10
tooManyFiles =
{ $count ->
[one] Толькі { $count } файл можна загрузіць за раз.
[few] Толькі { $count } файлы можна загрузіць за раз.
*[many] Толькі { $count } файлаў можна загрузіць за раз.
}
# count will always be > 10
tooManyArchives =
{ $count ->
[one] Толькі { $count } архіў дазволены.
[few] Толькі { $count } архівы дазволены.
*[many] Толькі { $count } архіваў дазволена.
}
expiredTitle = Тэрмін дзеяння гэтай спасылкі сышоў.
notSupportedDescription = { -send-brand } не будзе працаваць у гэтым браўзеры. Лепей за ўсё { -send-short-brand } працуе з апошняй версіяй { -firefox } і будзе працаваць з бягучай версіяй большасці браўзераў.
downloadFirefox = Сцягнуць { -firefox }
legalTitle = Палітыка прыватнасці { -send-short-brand }
legalDateStamp = Версія 1.0 ад 12 сакавіка 2019
# A short representation of a countdown timer containing the number of days, hours, and minutes remaining as digits, example "2d 11h 56m"
expiresDaysHoursMinutes = { $days } д. { $hours } г. { $minutes } хв.
addFilesButton = Выберыце файлы для загрузкі
uploadButton = Загрузіць
# the first part of the string 'Drag and drop files or click to send up to 1GB'
dragAndDropFiles = Перацягніце файлы сюды
# the second part of the string 'Drag and drop files or click to send up to 1GB'
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
orClickWithSize = або клікніце, каб адправіць да { $size }:
addPassword = Абараніць паролем
emailPlaceholder = Увядзіце сваю электронную пошту
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
signInSizeBump = Увайдзіце, каб адпраўляць да { $size }
signInOnlyButton = Увайсці
accountBenefitTitle = Стварыце ўліковы запіс { -firefox } або ўвайдзіце
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
accountBenefitLargeFiles = Дзяліцеся файламі да { $size }
accountBenefitDownloadCount = Дзяліцеся файламі з большай колькасцю людзей
accountBenefitTimeLimit =
{ $count ->
[one] Трымайце спасылкі актыўнымі да { $count } дня
[few] Трымайце спасылкі актыўнымі да { $count } дзён
*[many] Трымайце спасылкі актыўнымі да { $count } дзён
}
accountBenefitSync = Кіруйце адпраўленымі файламі з любой прылады
accountBenefitMoz = Даведайцеся пра іншыя сэрвісы { -mozilla }
signOut = Выйсці
okButton = ОК
downloadingTitle = Сцягваецца
noStreamsWarning = Гэты браўзер не мае магчымасці расшыфраваць такі вялікі файл.
noStreamsOptionCopy = Скапіруйце спасылку, каб адкрыць у іншым браўзеры
noStreamsOptionFirefox = Паспрабуйце наш любімы браўзер
noStreamsOptionDownload = Працягнуць з гэтым браўзерам
downloadFirefoxPromo = { -send-short-brand } прыйшоў да вас з цалкам новага { -firefox }.
# the next line after the colon contains a file name
shareLinkDescription = Падзяліцеся спасылкай на свой файл:
shareLinkButton = Падзяліцца спасылкай
# $name is the name of the file
shareMessage = Сцягніце «{ $name }» з { -send-brand }: простага і бяспечнага файлаабменніка
trailheadPromo = Ёсць спосаб абараніць вашу прыватнасць. Далучайцеся да Firefox.
learnMore = Падрабязней.

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = প্রতিক্রিয়া
importingFile = ইম্পোর্ট হচ্ছে... importingFile = ইম্পোর্ট হচ্ছে...
encryptingFile = ইনক্রিপট হচ্ছে... encryptingFile = ইনক্রিপট হচ্ছে...
decryptingFile = ডিক্রিপট হচ্ছে... decryptingFile = ডিক্রিপট হচ্ছে...
@@ -20,13 +18,13 @@ unlockButtonLabel = আনলক করুন
downloadButtonLabel = ডাউনলোড downloadButtonLabel = ডাউনলোড
downloadFinish = ডাউনলোড সম্পন্ন downloadFinish = ডাউনলোড সম্পন্ন
fileSizeProgress = ({ $totalSize } এর { $partialSize }) fileSizeProgress = ({ $totalSize } এর { $partialSize })
sendYourFilesLink = Firefox Send পরখ করে দেখুন sendYourFilesLink = Send পরখ করে দেখুন
errorPageHeader = কোন সমস্যা হয়েছে! errorPageHeader = কোন সমস্যা হয়েছে!
fileTooBig = ফাইলটি আপলোড করার জন্যে খুব বড়। এটি { $size } এর চেয়ে কম হওয়া উচিত। fileTooBig = ফাইলটি আপলোড করার জন্যে খুব বড়। এটি { $size } এর চেয়ে কম হওয়া উচিত।
linkExpiredAlt = লিঙ্ক মেয়াদউত্তীর্ণ হয়েছে linkExpiredAlt = লিঙ্ক মেয়াদউত্তীর্ণ হয়েছে
notSupportedHeader = আপনার ব্রাউজার সমর্থিত নয়। notSupportedHeader = আপনার ব্রাউজার সমর্থিত নয়।
notSupportedLink = আমার ব্রাউজার কেন সমর্থিত নয়? notSupportedLink = আমার ব্রাউজার কেন সমর্থিত নয়?
notSupportedOutdatedDetail = দুর্ভাগ্যবশত Firefox এই সংস্করণটি ওয়েব প্রযুক্তিকে সমর্থন করে না যা Firefox Send কে সমর্থন করে। আপনাকে আপনার ব্রাউজারটি আপডেট করতে হবে। notSupportedOutdatedDetail = দুর্ভাগ্যবশত Firefox এই সংস্করণটি ওয়েব প্রযুক্তিকে সমর্থন করে না যা Send কে সমর্থন করে। আপনাকে আপনার ব্রাউজারটি আপডেট করতে হবে।
updateFirefox = Firefox হালনাগাদ করুন updateFirefox = Firefox হালনাগাদ করুন
deletePopupCancel = বাতিল deletePopupCancel = বাতিল
deleteButtonHover = মুছে ফেলুন deleteButtonHover = মুছে ফেলুন
@@ -34,8 +32,8 @@ footerLinkLegal = আইনগত
footerLinkPrivacy = গোপনীয়তা footerLinkPrivacy = গোপনীয়তা
footerLinkCookies = কুকি footerLinkCookies = কুকি
passwordTryAgain = ভুল পাসওয়ার্ড। আবার চেষ্টা করুন। passwordTryAgain = ভুল পাসওয়ার্ড। আবার চেষ্টা করুন।
javascriptRequired = Firefox Send এর জাভাস্ক্রিপ্ট প্রয়োজন। javascriptRequired = Send এর জাভাস্ক্রিপ্ট প্রয়োজন।
whyJavascript = কেন Firefox Send এর জাভাস্ক্রিপ্ট প্রয়োজন? whyJavascript = কেন Send এর জাভাস্ক্রিপ্ট প্রয়োজন?
enableJavascript = জাভাস্ক্রিপ্ট সক্রিয় করুন এবং আবার চেষ্টা করুন। enableJavascript = জাভাস্ক্রিপ্ট সক্রিয় করুন এবং আবার চেষ্টা করুন।
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
expiresHoursMinutes = { $hours }ঘ { $minutes }মি expiresHoursMinutes = { $hours }ঘ { $minutes }মি
@@ -48,8 +46,7 @@ passwordSetError = এই পাসওয়ার্ড সেট করা য
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = প্রেরণ -send-short-brand = প্রেরণ
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Roit hoc'h ali
importingFile = Oc'h enporzhiañ … importingFile = Oc'h enporzhiañ …
encryptingFile = Oc'h enrinegañ.. encryptingFile = Oc'h enrinegañ..
decryptingFile = Oc'h ezrinegañ... decryptingFile = Oc'h ezrinegañ...
@@ -26,13 +24,13 @@ unlockButtonLabel = Dibrennañ
downloadButtonLabel = Pellgargañ downloadButtonLabel = Pellgargañ
downloadFinish = Pellgargadur echu downloadFinish = Pellgargadur echu
fileSizeProgress = ({ $partialSize } war { $totalSize }) fileSizeProgress = ({ $partialSize } war { $totalSize })
sendYourFilesLink = Esaeit Firefox Send sendYourFilesLink = Esaeit Send
errorPageHeader = Degouezhet ez eus bet ur fazi! errorPageHeader = Degouezhet ez eus bet ur fazi!
fileTooBig = Re vras eo ar restr-mañ evit e pellgas. Rankout a ra bezañ nebeutoc'h eget { $size } fileTooBig = Re vras eo ar restr-mañ evit e pellgas. Rankout a ra bezañ nebeutoc'h eget { $size }
linkExpiredAlt = Ere diamzeret linkExpiredAlt = Ere diamzeret
notSupportedHeader = N'eo ket skoret ho merdeer. notSupportedHeader = N'eo ket skoret ho merdeer.
notSupportedLink = Perak n'eo ket skoret ma merdeer? notSupportedLink = Perak n'eo ket skoret ma merdeer?
notSupportedOutdatedDetail = Siwazh n'eo ket skoret ar c'halvezerezhioù implijet evit Firefox Send gant an handelv-mañ eus Firefox. Ret e vo deoc'h hizivaat ho merdeer. notSupportedOutdatedDetail = Siwazh n'eo ket skoret ar c'halvezerezhioù implijet evit Send gant an handelv-mañ eus Firefox. Ret e vo deoc'h hizivaat ho merdeer.
updateFirefox = Hizivaat Firefox updateFirefox = Hizivaat Firefox
deletePopupCancel = Nullañ deletePopupCancel = Nullañ
deleteButtonHover = Dilemel deleteButtonHover = Dilemel
@@ -40,8 +38,8 @@ footerLinkLegal = Lezennel
footerLinkPrivacy = Buhez prevez footerLinkPrivacy = Buhez prevez
footerLinkCookies = Toupinoù footerLinkCookies = Toupinoù
passwordTryAgain = Ger-tremen direizh. Klaskit en-dro. passwordTryAgain = Ger-tremen direizh. Klaskit en-dro.
javascriptRequired = Firefox Send a azgoulenn Javascript javascriptRequired = Send a azgoulenn Javascript
whyJavascript = Perak e azgoulenn Firefox Send Javascript? whyJavascript = Perak e azgoulenn Send Javascript?
enableJavascript = Gweredekait Javascript ha klaskit en-dro. enableJavascript = Gweredekait Javascript ha klaskit en-dro.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
expiresHoursMinutes = { $hours }e { $minutes }m expiresHoursMinutes = { $hours }e { $minutes }m
@@ -54,8 +52,7 @@ passwordSetError = N'haller ket despizañ ar ger-tremen
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = Send -send-short-brand = Send
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla

View File

@@ -1,7 +1,5 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteSubtitle = web eksperiment siteSubtitle = web eksperiment
siteFeedback = Povratne informacije
uploadPageHeader = Privatno, šifrovano dijeljenje datoteka uploadPageHeader = Privatno, šifrovano dijeljenje datoteka
uploadPageExplainer = Pošaljite datoteke putem sigurne, privatne i šifrovane veze koja automatski ističe kako bi se osiguralo da vaše stvari ne ostaju na mreži zauvijek. uploadPageExplainer = Pošaljite datoteke putem sigurne, privatne i šifrovane veze koja automatski ističe kako bi se osiguralo da vaše stvari ne ostaju na mreži zauvijek.
uploadPageLearnMore = Saznajte više uploadPageLearnMore = Saznajte više
@@ -57,16 +55,14 @@ unlockInputLabel = Unesite lozinku
unlockInputPlaceholder = Lozinka unlockInputPlaceholder = Lozinka
unlockButtonLabel = Otključaj unlockButtonLabel = Otključaj
downloadFileTitle = Preuzmi šifrovanu datoteku downloadFileTitle = Preuzmi šifrovanu datoteku
# Firefox Send is a brand name and should not be localized. downloadMessage = Vaš prijatelj vam je poslao datoteku preko usluge Send koja vam omogućava da dijelite datoteke preko sigurne, privatne i šifrovane veze koja samostalno ističe da vaše stvari ne ostanu zauvijek na internetu.
downloadMessage = Vaš prijatelj vam je poslao datoteku preko usluge Firefox Send koja vam omogućava da dijelite datoteke preko sigurne, privatne i šifrovane veze koja samostalno ističe da vaše stvari ne ostanu zauvijek na internetu.
# 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 = Preuzmi downloadButtonLabel = Preuzmi
downloadNotification = Vaše preuzimanje je završeno. downloadNotification = Vaše preuzimanje je završeno.
downloadFinish = Preuzimanje završeno downloadFinish = Preuzimanje završeno
# 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 } od { $totalSize }) fileSizeProgress = ({ $partialSize } od { $totalSize })
# Firefox Send is a brand name and should not be localized. sendYourFilesLink = Probajte Send
sendYourFilesLink = Probajte Firefox Send
downloadingPageProgress = Preuzimanje { $filename } ({ $size }) downloadingPageProgress = Preuzimanje { $filename } ({ $size })
downloadingPageMessage = Ostavite ovaj tab otvorenim dok ne dobavimo vašu datoteku i dok je ne dešifrujemo. downloadingPageMessage = Ostavite ovaj tab otvorenim dok ne dobavimo vašu datoteku i dok je ne dešifrujemo.
errorAltText = Greška pri otpremanju errorAltText = Greška pri otpremanju
@@ -77,10 +73,9 @@ fileTooBig = Ta datoteka je prevelika za otpremanje. Treba biti manja od { $size
linkExpiredAlt = Veza istekla linkExpiredAlt = Veza istekla
expiredPageHeader = Veza je istekla ili nikad nije postojala! expiredPageHeader = Veza je istekla ili nikad nije postojala!
notSupportedHeader = Vaš pretraživač nije podržan. notSupportedHeader = Vaš pretraživač nije podržan.
# Firefox Send is a brand name and should not be localized. notSupportedDetail = Ovaj pretraživač nažalost ne podržava web tehnologiju koja omogućava Send. Trebate probati drugi pretraživač. Preporučujemo Firefox!
notSupportedDetail = Ovaj pretraživač nažalost ne podržava web tehnologiju koja omogućava Firefox Send. Trebate probati drugi pretraživač. Preporučujemo Firefox!
notSupportedLink = Zašto moj pretraživač nije podržan? notSupportedLink = Zašto moj pretraživač nije podržan?
notSupportedOutdatedDetail = Nažalost ova verzija Firefoxa ne podržava web tehnologiju koja omogućava Firefox Send. Morate ažurirati vaš pretraživač. notSupportedOutdatedDetail = Nažalost ova verzija Firefoxa ne podržava web tehnologiju koja omogućava Send. Morate ažurirati vaš pretraživač.
updateFirefox = Ažuriraj Firefox updateFirefox = Ažuriraj Firefox
downloadFirefoxButtonSub = Besplatno preuzimanje downloadFirefoxButtonSub = Besplatno preuzimanje
uploadedFile = Datoteka uploadedFile = Datoteka
@@ -90,8 +85,8 @@ expiryFileList = Ističe za
deleteFileList = Izbriši deleteFileList = Izbriši
nevermindButton = Zanemari nevermindButton = Zanemari
legalHeader = Uslovi i privatnost legalHeader = Uslovi i privatnost
legalNoticeTestPilot = Firefox Send je trenutno Test Pilot eksperiment i podržan je <a>uslovima korištenja</a> i <a>obavještenjem o privatnosti</a>. Možete saznati više o ovom eksperimentu i o njegovom sakupljanju podataka <a>ovdje</a>. legalNoticeTestPilot = Send je trenutno Test Pilot eksperiment i podržan je <a>uslovima korištenja</a> i <a>obavještenjem o privatnosti</a>. Možete saznati više o ovom eksperimentu i o njegovom sakupljanju podataka <a>ovdje</a>.
legalNoticeMozilla = Korištenje Firefox Send web stranice podlaže Mozillinom <a>obavještenju o privatnosti na web stranicama</a> i <a>uslovima korištenja web stranica</a>. legalNoticeMozilla = Korištenje Send web stranice podlaže Mozillinom <a>obavještenju o privatnosti na web stranicama</a> i <a>uslovima korištenja web stranica</a>.
deletePopupText = Izbrisati ovu datoteku? deletePopupText = Izbrisati ovu datoteku?
deletePopupYes = Da deletePopupYes = Da
deletePopupCancel = Otkaži deletePopupCancel = Otkaži
@@ -108,8 +103,8 @@ addPasswordButton = Dodaj lozinku
changePasswordButton = Promijeni changePasswordButton = Promijeni
passwordTryAgain = Netačna lozinka. Pokušajte ponovo. passwordTryAgain = Netačna lozinka. Pokušajte ponovo.
reportIPInfringement = Prijavite IP prekršaj reportIPInfringement = Prijavite IP prekršaj
javascriptRequired = Firefox Send zahtjeva JavaScript javascriptRequired = Send zahtjeva JavaScript
whyJavascript = Zašto Firefox Send zahtjeva JavaScript? whyJavascript = Zašto Send zahtjeva JavaScript?
enableJavascript = Molimo omogućite JavaScript i pokušajte ponovo. enableJavascript = Molimo 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" # 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 expiresHoursMinutes = { $hours }h { $minutes }m

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Comentaris
importingFile = S'està important… importingFile = S'està important…
encryptingFile = S'està xifrant… encryptingFile = S'està xifrant…
decryptingFile = S'està desxifrant… decryptingFile = S'està desxifrant…
@@ -20,13 +18,13 @@ unlockButtonLabel = Desbloca
downloadButtonLabel = Baixa downloadButtonLabel = Baixa
downloadFinish = Ha acabat la baixada downloadFinish = Ha acabat la baixada
fileSizeProgress = ({ $partialSize } de { $totalSize }) fileSizeProgress = ({ $partialSize } de { $totalSize })
sendYourFilesLink = Proveu el Firefox Send sendYourFilesLink = Proveu el Send
errorPageHeader = Hi ha hagut un problema errorPageHeader = Hi ha hagut un problema
fileTooBig = Aquest fitxer és massa gros per pujar-lo. Ha de tenir menys de { $size }. fileTooBig = Aquest fitxer és massa gros per pujar-lo. Ha de tenir menys de { $size }.
linkExpiredAlt = L'enllaç ha caducat linkExpiredAlt = L'enllaç ha caducat
notSupportedHeader = El vostre navegador no és compatible. notSupportedHeader = El vostre navegador no és compatible.
notSupportedLink = Per què el meu navegador no és compatible? notSupportedLink = Per què el meu navegador no és compatible?
notSupportedOutdatedDetail = Aquesta versió del Firefox no admet la tecnologia web amb què funciona el Firefox Send. Haureu d'actualitzar el navegador. notSupportedOutdatedDetail = Aquesta versió del Firefox no admet la tecnologia web amb què funciona el Send. Haureu d'actualitzar el navegador.
updateFirefox = Actualitza el Firefox updateFirefox = Actualitza el Firefox
deletePopupCancel = Cancel·la deletePopupCancel = Cancel·la
deleteButtonHover = Suprimeix deleteButtonHover = Suprimeix
@@ -34,8 +32,8 @@ footerLinkLegal = Avís legal
footerLinkPrivacy = Privadesa footerLinkPrivacy = Privadesa
footerLinkCookies = Galetes footerLinkCookies = Galetes
passwordTryAgain = La contrasenya és incorrecta. Torneu-ho a provar. passwordTryAgain = La contrasenya és incorrecta. Torneu-ho a provar.
javascriptRequired = El Firefox Send necessita JavaScript javascriptRequired = El Send necessita JavaScript
whyJavascript = Per què el Firefox Send necessita JavaScript? whyJavascript = Per què el Send necessita JavaScript?
enableJavascript = Activeu el JavaScript i torneu-ho a provar. enableJavascript = Activeu el JavaScript i torneu-ho a provar.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
expiresHoursMinutes = { $hours } h { $minutes } min expiresHoursMinutes = { $hours } h { $minutes } min
@@ -48,9 +46,8 @@ passwordSetError = No s'ha pogut definir la contrasenya
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send -send-short-brand = Send
-send-short-brand = Firefox Send
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla
introTitle = Compartició de fitxers senzilla i privada introTitle = Compartició de fitxers senzilla i privada
@@ -151,3 +148,5 @@ shareLinkDescription = Compartiu l'enllaç al vostre fitxer:
shareLinkButton = Comparteix l'enllaç shareLinkButton = Comparteix l'enllaç
# $name is the name of the file # $name is the name of the file
shareMessage = Baixeu «{ $name }» amb el { -send-brand }: compartició de fitxers senzilla i segura shareMessage = Baixeu «{ $name }» amb el { -send-brand }: compartició de fitxers senzilla i segura
trailheadPromo = Hi ha una manera de protegir la vostra privadesa. Uniu-vos al Firefox.
learnMore = Més informació.

View File

@@ -1,8 +1,6 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Rutzijol
importingFile = Tajin nijik… importingFile = Tajin nijik…
encryptingFile = Tajin newäx rusik'ixik... encryptingFile = Tajin newäx rusik'ixik
decryptingFile = Tajin netamäx rusik'ixik... decryptingFile = Tajin netamäx rusik'ixik...
downloadCount = downloadCount =
{ $num -> { $num ->
@@ -20,13 +18,13 @@ unlockButtonLabel = Titzij chik
downloadButtonLabel = Tiqasäx downloadButtonLabel = Tiqasäx
downloadFinish = Xtz'aqät qasanïk downloadFinish = Xtz'aqät qasanïk
fileSizeProgress = ({ $partialSize } richin { $totalSize }) fileSizeProgress = ({ $partialSize } richin { $totalSize })
sendYourFilesLink = Titojtob'ëx Firefox Send sendYourFilesLink = Titojtob'ëx Send
errorPageHeader = ¡K'o ri man ütz ta xub'än! errorPageHeader = ¡K'o ri man ütz ta xub'än!
fileTooBig = Yalan nïm re yakb'äl re' richin nijotob'äx. K'o ta chi man nik'o ta chi re ri { $size }. fileTooBig = Yalan nïm re yakb'äl re' richin nijotob'äx. K'o ta chi man nik'o ta chi re ri { $size }.
linkExpiredAlt = Xk'is ruq'ijul ri ximonel linkExpiredAlt = Xk'is ruq'ijul ri ximonel
notSupportedHeader = Man koch'el ta ri awokik'amaya'l. notSupportedHeader = Man koch'el ta ri awokik'amaya'l.
notSupportedLink = ¿Achike ruma man nikoch' taq ri wokik'amaya'l? notSupportedLink = ¿Achike ruma man nikoch' taq ri wokik'amaya'l?
notSupportedOutdatedDetail = K'ayew ruma re ruwäch Firefox re' man nuköch' ta ri ajk'amaya'l na'ob'äl nrajo' ri Firefox Send. Rajowaxik nak'ëx ri awokik'amaya'l. notSupportedOutdatedDetail = K'ayew ruma re ruwäch Firefox re' man nuköch' ta ri ajk'amaya'l na'ob'äl nrajo' ri Send. Rajowaxik nak'ëx ri awokik'amaya'l.
updateFirefox = Tik'ex ri Firefox updateFirefox = Tik'ex ri Firefox
deletePopupCancel = Tiq'at deletePopupCancel = Tiq'at
deleteButtonHover = Tiyuj deleteButtonHover = Tiyuj
@@ -34,8 +32,8 @@ footerLinkLegal = Taqanel tzijol
footerLinkPrivacy = Ichinanem footerLinkPrivacy = Ichinanem
footerLinkCookies = Taq kaxlanwey footerLinkCookies = Taq kaxlanwey
passwordTryAgain = Itzel ri ewan tzij. Tatojtob'ej chik. passwordTryAgain = Itzel ri ewan tzij. Tatojtob'ej chik.
javascriptRequired = K'atzinel JavaScript chi re ri Firefox Send javascriptRequired = K'atzinel JavaScript chi re ri Send
whyJavascript = ¿Achike ruma toq ri Firefox Send nrajo' JavaScript? whyJavascript = ¿Achike ruma toq ri Send nrajo' JavaScript?
enableJavascript = Titz'ij JavaScript richin nitojtob'ëx chik. enableJavascript = Titz'ij JavaScript richin nitojtob'ëx chik.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
expiresHoursMinutes = { $hours }r { $minutes }ch expiresHoursMinutes = { $hours }r { $minutes }ch
@@ -48,8 +46,7 @@ passwordSetError = Man tikirel ta ninuk' re ewan tzij re'
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = Titaq -send-short-brand = Titaq
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla
@@ -151,3 +148,5 @@ shareLinkDescription = Nakomonij ri ximonel rik'in ri awokisab'al:
shareLinkButton = Tikomonïx ximonel shareLinkButton = Tikomonïx ximonel
# $name is the name of the file # $name is the name of the file
shareMessage = Tiqasäx "{ $name }" rik'in { -send-brand }: man k'ayew ta chuqa' ütz kikomonik ri yakb'äl shareMessage = Tiqasäx "{ $name }" rik'in { -send-brand }: man k'ayew ta chuqa' ütz kikomonik ri yakb'äl
trailheadPromo = K'o jun rub'anikil richin nachajij ri awichinanem. Tatunu' awi' rik'in ri Firefox.
learnMore = Tetamäx ch'aqa' chik.

152
public/locales/ckb/send.ftl Normal file
View File

@@ -0,0 +1,152 @@
title = Send
importingFile = هاوردەکردن...
encryptingFile = بەهێماکردن...
decryptingFile = هێمالابردن...
downloadCount =
{ $num ->
[one] 1 داگرتن
*[other] { $num } داگرتن
}
timespanHours =
{ $num ->
[one] 1 کاژێر
*[other] { $num } کاژێر
}
copiedUrl = لەبەرگیرا!
unlockInputPlaceholder = وشەی تێپەڕبوون
unlockButtonLabel = کردنەوە
downloadButtonLabel = داگرتن
downloadFinish = داگرتن تەواو بوو
fileSizeProgress = ({ $partialSize } لە { $totalSize })
sendYourFilesLink = Firefox ناردن تاقیبکەرەوە
errorPageHeader = هەڵەیەک ڕوویدا
fileTooBig = ئەم پەڕگەیە زۆر گەورەیە بۆ بارکردن. پێویستە لە { $size } بچووک تر بێت
linkExpiredAlt = بەستەر بەسەرچووە
notSupportedHeader = وێبگەڕەکەت پشتگیری ناکرێت
notSupportedLink = بۆ وێبگەڕەکەم پشتگیری ناکرێت؟
notSupportedOutdatedDetail = بەداخەوە ئەم وەشانەی Firefox پشتگیری ئەو جۆرە تەکنەلۆژییە ناکات کە پێویستە بۆ Send. پێویستە وێبگەڕەکەت نوێبکەیتەوە.
updateFirefox = فاەرفۆکس نوێبکەرەوە
deletePopupCancel = پاشگەزبوونەوە
deleteButtonHover = سڕینەوە
footerLinkLegal = یاسایی
footerLinkPrivacy = تایبەتیی
footerLinkCookies = شەکرۆکە
passwordTryAgain = وشەی تێپەڕبوون هەڵەیە. هەوڵ بدەرەوە.
javascriptRequired = فارفۆکسی ناردن پێویستە بە JavaScript هەیە
whyJavascript = بۆچی پێویستی بە JavaScript هەیە؟
enableJavascript = تکایە JavaScript چالاک بکە وهەوڵ بدەرەوە.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
expiresHoursMinutes = { $hours }ک { $minutes }خ
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
expiresMinutes = { $minutes }خ
# A short status message shown when the user enters a long password
maxPasswordLength = زۆرترین درێژی وشەی تێپەڕی ڕێگەپێدراو: { $length }
# A short status message shown when there was an error setting the password
passwordSetError = ناتوانرێت وشەی تێپەڕ دابنرێت
## Send version 2 strings
-send-brand = Send
-send-short-brand = Send
-firefox = Firefox
-mozilla = Mozilla
introTitle = سانا، بڵاوکەرەوەی پەڕگەی تایبەتیی
introDescription = { -send-brand } ڕێگەت دەدات پەڕگەکان بڵاوبکەیتەوە بە شێوەی هێما کردنی کۆتا-بۆ-کۆتا و بەستەرێک کە خۆکارانە بەسەردەچێت. بۆیە دەتوانیت ئاگاداری ئەوە بیت کە چ پەڕگەیەک بە تایبەتی بڵاودەکەیتەوە و دڵنیادەبیتەوە کە شتەکانت بە سەرهێڵی نامێننەوە هەتا کۆتایی.
notifyUploadEncryptDone = پەڕگەیە بەهێماکراوە ئێستا ئامادەیە بۆ ناردن
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
archiveExpiryInfo = بەسەردەچێت دووای { $downloadCount } یان { $timespan }
timespanMinutes =
{ $num ->
[one] 1 خولەک
*[other] { $num } خولەک
}
timespanDays =
{ $num ->
[one] 1 ڕؤژ
*[other] { $num } ڕۆژ
}
timespanWeeks =
{ $num ->
[one] 1 هەفتە
*[other] { $num } هەفتە
}
fileCount =
{ $num ->
[one] 1 پەڕگە
*[other] { $num } پەڕگە
}
# byte abbreviation
bytes = بایت
# kibibyte abbreviation
kb = ک.بایت
# mebibyte abbreviation
mb = م.بایت
# gibibyte abbreviation
gb = گ.بایت
# localized number and byte abbreviation. example "2.5MB"
fileSize = { $num }{ $units }
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
totalSize = قەبارەی گشتی: { $size }
# the next line after the colon contains a file name
copyLinkDescription = بەستەر لەبەربگرەوە بۆ بڵاوکردنەوەی پەڕگە:
copyLinkButton = بەستەر لەبەربگرەوە
downloadTitle = پەڕگەکان دابگرە
downloadDescription = ئەم پەڕگەیە لە لایەن { -send-brand } بلاوکراوەتەوە کە بەهێماکراوە بە شێوەی کۆتا-بۆ-کۆتا بە بەستەرێک کە خۆکارانە بەسەردەچێت.
trySendDescription = { -send-brand } تاقیبکەرەوە بۆ سانایی، پارێزراو لە بڵاوکردنەوەی پەڕگە.
# count will always be > 10
tooManyFiles =
{ $count ->
[one] تەنها 1 پەڕگە دەتوانیت باربکەیت لەم کاتەدا.
*[other] تەنها { $count } پەڕگە دەتوانی باربکەیت لەم کاتەدا.
}
# count will always be > 10
tooManyArchives =
{ $count ->
[one] تەنها 1 ئەرشیف ڕێپێدراوە.
*[other] تەنها { $count } ئەرشیف ڕێپێدراوە.
}
expiredTitle = بەستەر بەسەرچووە.
notSupportedDescription = { -send-brand } کارنکات لەگەڵ ئەم وێبگەڕە. { -send-short-brand } باش کاردەکات لەگەڵ کۆتا وەشانی { -firefox }، وکاردەکات لەگەڵ زۆربەی وەشانی ئێستای وێبگەڕەکان.
downloadFirefox = { -firefox } دابگرە
legalTitle = تێبینی تایبەتیی { -send-short-brand }
legalDateStamp = وەشان 1.0، بەروار کراو لە 12 ئازار، 2019
# A short representation of a countdown timer containing the number of days, hours, and minutes remaining as digits, example "2d 11h 56m"
expiresDaysHoursMinutes = { $days } ڕ { $hours } ک{ $minutes } خ
addFilesButton = پەڕگەکان هەڵبژێرە بۆ بارکردن
uploadButton = بارکردن
# the first part of the string 'Drag and drop files or click to send up to 1GB'
dragAndDropFiles = ڕاکێشان و دانانی پەڕگەکان
# the second part of the string 'Drag and drop files or click to send up to 1GB'
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
orClickWithSize = یان کرتە بکە بۆ ناردنی قەبارەی تاوەکوو { $size }
addPassword = بپارێزە لەگەڵ وشەی تێپەڕ
emailPlaceholder = پۆستی ئەلکترۆنی بنووسە
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
signInSizeBump = بچۆژوورەوە بۆ ناردنی قەبارەی تاوەکوو { $size }
signInOnlyButton = بچۆژوورەوە
accountBenefitTitle = هەژماری { -firefox } درووست بکە یان بچۆژوورەوە
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
accountBenefitLargeFiles = پەڕگە بڵاوبکەرەوە تاوەکوو قەبارەی { $size }
accountBenefitDownloadCount = پەڕگەکان لەگەڵ خەڵکی زیاتر بڵاوبکەرەوە
accountBenefitTimeLimit =
{ $count ->
[one] بەستەرەکان بەکارایی بهێڵەوە تا 1 ڕۆژ
*[other] بەستەرەکان بەکارایی بهێڵەوە تا { $count } ڕۆژ
}
accountBenefitSync = پەڕگە بڵآوکراوەکان بەڕێوەبەرە لەهەر ئامێرێکەوە
accountBenefitMoz = زیاتر بزانە دەربارەی خزمەتگوزارییەکانی تری { -mozilla }
signOut = بچۆ دەرەوە
okButton = باشە
downloadingTitle = دادەگیرێت...
noStreamsWarning = لەوانەیە ئەم وێبگەڕە نەتوانێت پەڕگەی وا گەورە بە هێما بکات.
noStreamsOptionCopy = بەستەر لەبەربگرەوە بۆ کردنەوەی لە وێبگەڕێکی تر
noStreamsOptionFirefox = وێبگەڕی دڵخوازی ئێمە تاقیبکەرەوە
noStreamsOptionDownload = بەردەوام بە لەگەڵ ئەم وێبگەڕە
downloadFirefoxPromo = { -send-short-brand } پیشکەش کراوە بە تۆ لە لایەن { -firefox }.
# the next line after the colon contains a file name
shareLinkDescription = بەستەر بڵاوبکەرەوە بۆ پەڕگەکەت:
shareLinkButton = بەستەر بڵاوبکەرەوە
# $name is the name of the file
shareMessage = “{ $name }” دابگرە لەگەڵ { -send-brand }: سانا، پاریزراو لە بڵاوکردنەوەی پەڕگە
trailheadPromo = ڕێگەیەک هەیە بۆ پارێزگاریکردنی تایبەتێتی خۆت. بەشدار بە لە فایەرفۆکس.
learnMore = زیاتر بزانە

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Zpětná vazba
importingFile = Probíhá import… importingFile = Probíhá import…
encryptingFile = Probíhá šifrování… encryptingFile = Probíhá šifrování…
decryptingFile = Probíhá dešifrování… decryptingFile = Probíhá dešifrování…
@@ -22,13 +20,13 @@ unlockButtonLabel = Odemknout
downloadButtonLabel = Stáhnout downloadButtonLabel = Stáhnout
downloadFinish = Stahování dokončeno downloadFinish = Stahování dokončeno
fileSizeProgress = ({ $partialSize } z { $totalSize }) fileSizeProgress = ({ $partialSize } z { $totalSize })
sendYourFilesLink = Vyzkoušejte Firefox Send sendYourFilesLink = Vyzkoušet Send
errorPageHeader = Nastala chyba! errorPageHeader = Nastala chyba!
fileTooBig = Tento soubor je příliš veliký. Velikost nahrávaných souborů by neměla překročit { $size }. fileTooBig = Tento soubor je příliš veliký. Velikost nahrávaných souborů by neměla překročit { $size }.
linkExpiredAlt = Platnost odkazu vypršela linkExpiredAlt = Platnost odkazu vypršela
notSupportedHeader = Váš prohlížeč není podporován. notSupportedHeader = Váš prohlížeč není podporován.
notSupportedLink = Proč není můj prohlížeč podporovaný? notSupportedLink = Proč není můj prohlížeč podporovaný?
notSupportedOutdatedDetail = Tato verze Firefoxu bohužel nepodporuje webovou technologii, která pohání Firefox Send. Musíte aktualizovat svůj prohlížeč. notSupportedOutdatedDetail = Tato verze Firefoxu bohužel nepodporuje webovou technologii, která pohání Send. Musíte aktualizovat svůj prohlížeč.
updateFirefox = Aktualizovat Firefox updateFirefox = Aktualizovat Firefox
deletePopupCancel = Zrušit deletePopupCancel = Zrušit
deleteButtonHover = Smazat deleteButtonHover = Smazat
@@ -36,8 +34,8 @@ footerLinkLegal = Právní informace
footerLinkPrivacy = Soukromí footerLinkPrivacy = Soukromí
footerLinkCookies = Cookies footerLinkCookies = Cookies
passwordTryAgain = Špatné heslo. Zkuste to znovu. passwordTryAgain = Špatné heslo. Zkuste to znovu.
javascriptRequired = Firefox Send vyžaduje povolený JavaScript javascriptRequired = Send vyžaduje povolený JavaScript
whyJavascript = Proč Firefox Send vyžaduje povolený JavaScript? whyJavascript = Proč Send vyžaduje povolený JavaScript?
enableJavascript = Povolte JavaScript a zkuste to znovu. enableJavascript = Povolte JavaScript a zkuste to znovu.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # 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 expiresHoursMinutes = { $hours } h { $minutes } m
@@ -50,16 +48,15 @@ passwordSetError = Toto heslo nemohlo být nastaveno
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
-send-brand = -send-brand =
{ $case -> { $case ->
*[nom] Firefox Send *[nom] Send
[gen] Firefoxu Send [gen] Send
[dat] Firefoxu Send [dat] Send
[acc] Firefox Send [acc] Send
[voc] Firefoxe Send [voc] Send
[loc] Firefoxu Send [loc] Send
[ins] Firefoxem Send [ins] Send
} }
-send-short-brand = -send-short-brand =
{ $case -> { $case ->
@@ -137,7 +134,7 @@ copyLinkDescription = Soubor můžete sdílet tímto odkazem:
copyLinkButton = Zkopírovat odkaz copyLinkButton = Zkopírovat odkaz
downloadTitle = Stáhnout soubory downloadTitle = Stáhnout soubory
downloadDescription = Tento soubor byl sdílen přes { -send-brand(case: "acc") } s end-to-end šifrováním a odkazem s omezenou platností. downloadDescription = Tento soubor byl sdílen přes { -send-brand(case: "acc") } s end-to-end šifrováním a odkazem s omezenou platností.
trySendDescription = Zkuste { -send-brand(case: "acc") } pro jednoduché a bezpečné sdílení souborů trySendDescription = Vyzkoušejte jednoduché a bezpečné sdílení souborů s { -send-brand(case: "ins") }
# count will always be > 10 # count will always be > 10
tooManyFiles = tooManyFiles =
{ $count -> { $count ->

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Adborth
importingFile = Mewnforio… importingFile = Mewnforio…
encryptingFile = Wrthi'n amgryptio… encryptingFile = Wrthi'n amgryptio…
decryptingFile = Wrthi'n dadgryptio… decryptingFile = Wrthi'n dadgryptio…
@@ -28,13 +26,13 @@ unlockButtonLabel = Datgloi
downloadButtonLabel = Llwytho i Lawr downloadButtonLabel = Llwytho i Lawr
downloadFinish = Llwytho wedi Gorffen downloadFinish = Llwytho wedi Gorffen
fileSizeProgress = ({ $partialSize } o { $totalSize }) fileSizeProgress = ({ $partialSize } o { $totalSize })
sendYourFilesLink = Rhowch gynnig ar Firefox Send sendYourFilesLink = Rhowch gynnig ar Send
errorPageHeader = Aeth rhywbeth o'i le! errorPageHeader = Aeth rhywbeth o'i le!
fileTooBig = Mae'r ffeil yn rhy fawr i'w llwytho. Dylai fod yn llai na { $size }. fileTooBig = Mae'r ffeil yn rhy fawr i'w llwytho. Dylai fod yn llai na { $size }.
linkExpiredAlt = Mae'r ddolen wedi dod i ben linkExpiredAlt = Mae'r ddolen wedi dod i ben
notSupportedHeader = Nid yw eich porwr yn cael ei gynnal. notSupportedHeader = Nid yw eich porwr yn cael ei gynnal.
notSupportedLink = Pam nad yw fy mhorwr yn cael ei gynnal? notSupportedLink = Pam nad yw fy mhorwr yn cael ei gynnal?
notSupportedOutdatedDetail = Yn anffodus, nid yw'r fersiwn yma o Firefox yn cynnal y technoleg gwe sy'n gyrru Firefox Send. Bydd angen i chi ddiweddaru eich porwr. notSupportedOutdatedDetail = Yn anffodus, nid yw'r fersiwn yma o Firefox yn cynnal y technoleg gwe sy'n gyrru Send. Bydd angen i chi ddiweddaru eich porwr.
updateFirefox = Diweddaru Firefox updateFirefox = Diweddaru Firefox
deletePopupCancel = Diddymu deletePopupCancel = Diddymu
deleteButtonHover = Dileu deleteButtonHover = Dileu
@@ -42,8 +40,8 @@ footerLinkLegal = Cyfreithiol
footerLinkPrivacy = Preifatrwydd footerLinkPrivacy = Preifatrwydd
footerLinkCookies = Cwcis footerLinkCookies = Cwcis
passwordTryAgain = Cyfrinair anghywir. Ceisiwch eto. passwordTryAgain = Cyfrinair anghywir. Ceisiwch eto.
javascriptRequired = Mae Firefox Send angen JavaScript javascriptRequired = Mae Send angen JavaScript
whyJavascript = Pam fod Firefox Send angen JavaScript? whyJavascript = Pam fod Send angen JavaScript?
enableJavascript = Galluogwch JavaScript a cheisio eto. enableJavascript = Galluogwch JavaScript a cheisio eto.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
expiresHoursMinutes = { $hours }a { $minutes }m expiresHoursMinutes = { $hours }a { $minutes }m
@@ -56,8 +54,7 @@ passwordSetError = Nid oedd modd gosod y cyfrinair hwn
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = Anfon -send-short-brand = Anfon
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Feedback
importingFile = Importerer… importingFile = Importerer…
encryptingFile = Krypterer… encryptingFile = Krypterer…
decryptingFile = Dekrypterer… decryptingFile = Dekrypterer…
@@ -20,13 +18,13 @@ unlockButtonLabel = Lås op
downloadButtonLabel = Hent downloadButtonLabel = Hent
downloadFinish = Hentning fuldført downloadFinish = Hentning fuldført
fileSizeProgress = ({ $partialSize } af { $totalSize }) fileSizeProgress = ({ $partialSize } af { $totalSize })
sendYourFilesLink = Prøv Firefox Send sendYourFilesLink = Prøv Send
errorPageHeader = Der gik noget galt! errorPageHeader = Der gik noget galt!
fileTooBig = Den fil er for stor at uploade. Den skal være mindre end { $size }. fileTooBig = Den fil er for stor at uploade. Den skal være mindre end { $size }.
linkExpiredAlt = Link er udløbet linkExpiredAlt = Link er udløbet
notSupportedHeader = Din browser understøttes ikke. notSupportedHeader = Din browser understøttes ikke.
notSupportedLink = Hvorfor understøttes min browser ikke? notSupportedLink = Hvorfor understøttes min browser ikke?
notSupportedOutdatedDetail = Desværre understøtter denne version af Firefox ikke den webteknologi, som driver Firefox Send. Du skal opdatere din browser. notSupportedOutdatedDetail = Desværre understøtter denne version af Firefox ikke den webteknologi, som driver Send. Du skal opdatere din browser.
updateFirefox = Opdater Firefox updateFirefox = Opdater Firefox
deletePopupCancel = Annuller deletePopupCancel = Annuller
deleteButtonHover = Slet deleteButtonHover = Slet
@@ -34,8 +32,8 @@ footerLinkLegal = Juridisk
footerLinkPrivacy = Privatliv footerLinkPrivacy = Privatliv
footerLinkCookies = Cookies footerLinkCookies = Cookies
passwordTryAgain = Forkert adgangskode. Prøv igen. passwordTryAgain = Forkert adgangskode. Prøv igen.
javascriptRequired = Firefox Send kræver JavaScript javascriptRequired = Send kræver JavaScript
whyJavascript = Hvorfor kræver Firefox Send JavaScript? whyJavascript = Hvorfor kræver Send JavaScript?
enableJavascript = Aktiver JavaScript og prøv igen. enableJavascript = Aktiver JavaScript og prøv igen.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
expiresHoursMinutes = { $hours } t { $minutes } m expiresHoursMinutes = { $hours } t { $minutes } m
@@ -48,8 +46,7 @@ passwordSetError = Adgangskoden kunne ikke sættes
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = Send -send-short-brand = Send
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Feedback
importingFile = Wird importiert… importingFile = Wird importiert…
encryptingFile = Wird verschlüsselt… encryptingFile = Wird verschlüsselt…
decryptingFile = Wird entschlüsselt… decryptingFile = Wird entschlüsselt…
@@ -20,13 +18,13 @@ unlockButtonLabel = Entsperren
downloadButtonLabel = Herunterladen downloadButtonLabel = Herunterladen
downloadFinish = Download abgeschlossen downloadFinish = Download abgeschlossen
fileSizeProgress = ({ $partialSize } von { $totalSize }) fileSizeProgress = ({ $partialSize } von { $totalSize })
sendYourFilesLink = Firefox Send ausprobieren sendYourFilesLink = Send ausprobieren
errorPageHeader = Ein Fehler ist aufgetreten! errorPageHeader = Ein Fehler ist aufgetreten!
fileTooBig = Die Datei ist zu groß zum Hochladen. Sie sollte maximal { $size } groß sein. fileTooBig = Die Datei ist zu groß zum Hochladen. Sie sollte maximal { $size } groß sein.
linkExpiredAlt = Link abgelaufen linkExpiredAlt = Link abgelaufen
notSupportedHeader = Dein Browser wird nicht unterstützt. notSupportedHeader = Dein Browser wird nicht unterstützt.
notSupportedLink = Warum wird mein Browser nicht unterstützt? notSupportedLink = Warum wird mein Browser nicht unterstützt?
notSupportedOutdatedDetail = Leider unterstützt diese Firefox-Version die Web-Technologie nicht, auf der Firefox Send basiert. Du musst deinen Browser aktualisieren. notSupportedOutdatedDetail = Leider unterstützt diese Firefox-Version die Web-Technologie nicht, auf der Send basiert. Du musst deinen Browser aktualisieren.
updateFirefox = Firefox aktualisieren updateFirefox = Firefox aktualisieren
deletePopupCancel = Abbrechen deletePopupCancel = Abbrechen
deleteButtonHover = Löschen deleteButtonHover = Löschen
@@ -34,8 +32,8 @@ footerLinkLegal = Rechtliches
footerLinkPrivacy = Datenschutz footerLinkPrivacy = Datenschutz
footerLinkCookies = Cookies footerLinkCookies = Cookies
passwordTryAgain = Falsches Passwort. Versuche es nochmal. passwordTryAgain = Falsches Passwort. Versuche es nochmal.
javascriptRequired = Firefox Send benötigt JavaScript javascriptRequired = Send benötigt JavaScript
whyJavascript = Warum benötigt Firefox Send JavaScript? whyJavascript = Warum benötigt Send JavaScript?
enableJavascript = Bitte aktiviere JavaScript und versuche es erneut. enableJavascript = Bitte aktiviere JavaScript und versuche es erneut.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # 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 expiresHoursMinutes = { $hours }h { $minutes }m
@@ -48,8 +46,7 @@ passwordSetError = Dieses Passwort konnte nicht eingerichtet werden
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = Send -send-short-brand = Send
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Komentar
importingFile = Importěrujo se... importingFile = Importěrujo se...
encryptingFile = Koděrujo se... encryptingFile = Koděrujo se...
decryptingFile = Dešifrěrujo se... decryptingFile = Dešifrěrujo se...
@@ -24,13 +22,13 @@ unlockButtonLabel = Wótwóriś
downloadButtonLabel = Ześěgnuś downloadButtonLabel = Ześěgnuś
downloadFinish = Ześěgnjenje dokóńcone downloadFinish = Ześěgnjenje dokóńcone
fileSizeProgress = ({ $partialSize } z { $totalSize }) fileSizeProgress = ({ $partialSize } z { $totalSize })
sendYourFilesLink = Firefox Send wopytaś sendYourFilesLink = Send wopytaś
errorPageHeader = Něco njejo se raźiło! errorPageHeader = Něco njejo se raźiło!
fileTooBig = Toś ta dataja jo pśewjelika za nagraśe. Měła mjeńša ako { $size } byś. fileTooBig = Toś ta dataja jo pśewjelika za nagraśe. Měła mjeńša ako { $size } byś.
linkExpiredAlt = Wótkaz spadnjony linkExpiredAlt = Wótkaz spadnjony
notSupportedHeader = Waš wobglědowak se njepódpěra. notSupportedHeader = Waš wobglědowak se njepódpěra.
notSupportedLink = Cogodla se mój wobglědowak njepódpěra? notSupportedLink = Cogodla se mój wobglědowak njepódpěra?
notSupportedOutdatedDetail = Bóžko toś ta wersija Firefox webtechnologiju njepódpěra, na kótarejž Firefox Send bazěrujo. Musyśo swój wobglědowak aktualizěrowaś. notSupportedOutdatedDetail = Bóžko toś ta wersija Firefox webtechnologiju njepódpěra, na kótarejž Send bazěrujo. Musyśo swój wobglědowak aktualizěrowaś.
updateFirefox = Firefox aktualizěrowaś updateFirefox = Firefox aktualizěrowaś
deletePopupCancel = Pśetergnuś deletePopupCancel = Pśetergnuś
deleteButtonHover = Wulašowaś deleteButtonHover = Wulašowaś
@@ -38,8 +36,8 @@ footerLinkLegal = Pšawniske
footerLinkPrivacy = Priwatnosć footerLinkPrivacy = Priwatnosć
footerLinkCookies = Cookieje footerLinkCookies = Cookieje
passwordTryAgain = Wopacne gronidło. Wopytajśo hyšći raz. passwordTryAgain = Wopacne gronidło. Wopytajśo hyšći raz.
javascriptRequired = Firefox Send JavaScript trjeba javascriptRequired = Send JavaScript trjeba
whyJavascript = Cogodla Firefox Send JavaScript trjeba? whyJavascript = Cogodla Send JavaScript trjeba?
enableJavascript = Pšosym zmóžniśo JavaScript a wopytajśo hyšći raz. enableJavascript = Pšosym zmóžniśo JavaScript a wopytajśo hyšći raz.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
expiresHoursMinutes = { $hours } góź. { $minutes } min. expiresHoursMinutes = { $hours } góź. { $minutes } min.
@@ -52,8 +50,7 @@ passwordSetError = Toś to gronidło njedajo se nastajiś
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = Send -send-short-brand = Send
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Σχόλια
importingFile = Εισαγωγή… importingFile = Εισαγωγή…
encryptingFile = Κρυπτογράφηση… encryptingFile = Κρυπτογράφηση…
decryptingFile = Αποκρυπτογράφηση… decryptingFile = Αποκρυπτογράφηση…
@@ -20,13 +18,13 @@ unlockButtonLabel = Ξεκλείδωμα
downloadButtonLabel = Λήψη downloadButtonLabel = Λήψη
downloadFinish = Η λήψη ολοκληρώθηκε downloadFinish = Η λήψη ολοκληρώθηκε
fileSizeProgress = ({ $partialSize } από { $totalSize }) fileSizeProgress = ({ $partialSize } από { $totalSize })
sendYourFilesLink = Δοκιμάστε το Firefox Send sendYourFilesLink = Δοκιμάστε το Send
errorPageHeader = Κάτι πήγε στραβά! errorPageHeader = Κάτι πήγε στραβά!
fileTooBig = Αυτό το αρχείο είναι πολύ μεγάλο για μεταφόρτωση. Πρέπει να είναι μικρότερο από { $size }. fileTooBig = Αυτό το αρχείο είναι πολύ μεγάλο για μεταφόρτωση. Πρέπει να είναι μικρότερο από { $size }.
linkExpiredAlt = Ο σύνδεσμος έληξε linkExpiredAlt = Ο σύνδεσμος έληξε
notSupportedHeader = Το πρόγραμμα περιήγησής σας δεν υποστηρίζεται. notSupportedHeader = Το πρόγραμμα περιήγησής σας δεν υποστηρίζεται.
notSupportedLink = Γιατί δεν υποστηρίζεται το πρόγραμμα περιήγησής μου; notSupportedLink = Γιατί δεν υποστηρίζεται το πρόγραμμα περιήγησής μου;
notSupportedOutdatedDetail = Δυστυχώς, αυτή η έκδοση του Firefox δεν υποστηρίζει την τεχνολογία ιστού στην οποία βασίζεται το Firefox Send. Πρέπει να ενημερώσετε το πρόγραμμα περιήγησής σας. notSupportedOutdatedDetail = Δυστυχώς, αυτή η έκδοση του Firefox δεν υποστηρίζει την τεχνολογία ιστού στην οποία βασίζεται το Send. Πρέπει να ενημερώσετε το πρόγραμμα περιήγησής σας.
updateFirefox = Ενημέρωση Firefox updateFirefox = Ενημέρωση Firefox
deletePopupCancel = Ακύρωση deletePopupCancel = Ακύρωση
deleteButtonHover = Διαγραφή deleteButtonHover = Διαγραφή
@@ -34,8 +32,8 @@ footerLinkLegal = Νομικά
footerLinkPrivacy = Απόρρητο footerLinkPrivacy = Απόρρητο
footerLinkCookies = Cookies footerLinkCookies = Cookies
passwordTryAgain = Λάθος κωδικός πρόσβασης. Δοκιμάστε ξανά. passwordTryAgain = Λάθος κωδικός πρόσβασης. Δοκιμάστε ξανά.
javascriptRequired = Το Firefox Send απαιτεί JavaScript javascriptRequired = Το Send απαιτεί JavaScript
whyJavascript = Γιατί το Firefox Send απαιτεί JavaScript; whyJavascript = Γιατί το Send απαιτεί JavaScript;
enableJavascript = Παρακαλώ ενεργοποιήστε το JavaScript και δοκιμάστε ξανά. enableJavascript = Παρακαλώ ενεργοποιήστε το JavaScript και δοκιμάστε ξανά.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
expiresHoursMinutes = { $hours }ώ { $minutes }λ expiresHoursMinutes = { $hours }ώ { $minutes }λ
@@ -48,8 +46,7 @@ passwordSetError = Δεν ήταν δυνατός ο ορισμός αυτού
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = Send -send-short-brand = Send
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla
@@ -140,7 +137,7 @@ accountBenefitSync = Διαχειριστείτε τα διαμοιρασμέν
accountBenefitMoz = Μάθετε για τις άλλες υπηρεσίες της { -mozilla } accountBenefitMoz = Μάθετε για τις άλλες υπηρεσίες της { -mozilla }
signOut = Αποσύνδεση signOut = Αποσύνδεση
okButton = OK okButton = OK
downloadingTitle = Λήψη downloadingTitle = Γίνεται λήψη
noStreamsWarning = Αυτό το πρόγραμμα περιήγησης ενδέχεται να μην μπορέσει να αποκρυπτογραφήσει αρχεία αυτού του μεγέθους. noStreamsWarning = Αυτό το πρόγραμμα περιήγησης ενδέχεται να μην μπορέσει να αποκρυπτογραφήσει αρχεία αυτού του μεγέθους.
noStreamsOptionCopy = Αντιγράψτε το σύνδεσμο για άνοιγμα σε άλλο πρόγραμμα περιήγησης noStreamsOptionCopy = Αντιγράψτε το σύνδεσμο για άνοιγμα σε άλλο πρόγραμμα περιήγησης
noStreamsOptionFirefox = Δοκιμάστε το αγαπημένο μας πρόγραμμα περιήγησης noStreamsOptionFirefox = Δοκιμάστε το αγαπημένο μας πρόγραμμα περιήγησης

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Feedback
importingFile = Importing… importingFile = Importing…
encryptingFile = Encrypting… encryptingFile = Encrypting…
decryptingFile = Decrypting… decryptingFile = Decrypting…
@@ -20,13 +18,13 @@ unlockButtonLabel = Unlock
downloadButtonLabel = Download downloadButtonLabel = Download
downloadFinish = Download Complete downloadFinish = Download Complete
fileSizeProgress = ({ $partialSize } of { $totalSize }) fileSizeProgress = ({ $partialSize } of { $totalSize })
sendYourFilesLink = Try Firefox Send sendYourFilesLink = Try Send
errorPageHeader = Something went wrong! errorPageHeader = Something went wrong!
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 }.
linkExpiredAlt = Link expired linkExpiredAlt = Link expired
notSupportedHeader = Your browser is not supported. notSupportedHeader = Your browser is not supported.
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 Send. Youll need to update your browser.
updateFirefox = Update Firefox updateFirefox = Update Firefox
deletePopupCancel = Cancel deletePopupCancel = Cancel
deleteButtonHover = Delete deleteButtonHover = Delete
@@ -34,8 +32,8 @@ footerLinkLegal = Legal
footerLinkPrivacy = Privacy footerLinkPrivacy = Privacy
footerLinkCookies = Cookies footerLinkCookies = Cookies
passwordTryAgain = Incorrect password. Try again. passwordTryAgain = Incorrect password. Try again.
javascriptRequired = Firefox Send requires JavaScript javascriptRequired = Send requires JavaScript
whyJavascript = Why does Firefox Send require JavaScript? whyJavascript = Why does Send require JavaScript?
enableJavascript = Please enable JavaScript and try again. 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" # 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 expiresHoursMinutes = { $hours }h { $minutes }m
@@ -48,8 +46,7 @@ passwordSetError = This password could not be set
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = Send -send-short-brand = Send
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Feedback
importingFile = Importing… importingFile = Importing…
encryptingFile = Encrypting… encryptingFile = Encrypting…
decryptingFile = Decrypting… decryptingFile = Decrypting…
@@ -20,13 +18,13 @@ unlockButtonLabel = Unlock
downloadButtonLabel = Download downloadButtonLabel = Download
downloadFinish = Download Complete downloadFinish = Download Complete
fileSizeProgress = ({ $partialSize } of { $totalSize }) fileSizeProgress = ({ $partialSize } of { $totalSize })
sendYourFilesLink = Try Firefox Send sendYourFilesLink = Try Send
errorPageHeader = Something went wrong! errorPageHeader = Something went wrong!
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 }.
linkExpiredAlt = Link expired linkExpiredAlt = Link expired
notSupportedHeader = Your browser is not supported. notSupportedHeader = Your browser is not supported.
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 Send. Youll need to update your browser.
updateFirefox = Update Firefox updateFirefox = Update Firefox
deletePopupCancel = Cancel deletePopupCancel = Cancel
deleteButtonHover = Delete deleteButtonHover = Delete
@@ -34,8 +32,8 @@ footerLinkLegal = Legal
footerLinkPrivacy = Privacy footerLinkPrivacy = Privacy
footerLinkCookies = Cookies footerLinkCookies = Cookies
passwordTryAgain = Incorrect password. Try again. passwordTryAgain = Incorrect password. Try again.
javascriptRequired = Firefox Send requires JavaScript javascriptRequired = Send requires JavaScript
whyJavascript = Why does Firefox Send require JavaScript? whyJavascript = Why does Send require JavaScript?
enableJavascript = Please enable JavaScript and try again. 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" # 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 expiresHoursMinutes = { $hours }h { $minutes }m
@@ -48,8 +46,7 @@ passwordSetError = This password could not be set
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = Send -send-short-brand = Send
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Feedback
importingFile = Importing… importingFile = Importing…
encryptingFile = Encrypting… encryptingFile = Encrypting…
decryptingFile = Decrypting… decryptingFile = Decrypting…
@@ -18,13 +16,13 @@ unlockButtonLabel = Unlock
downloadButtonLabel = Download downloadButtonLabel = Download
downloadFinish = Download complete downloadFinish = Download complete
fileSizeProgress = ({ $partialSize } of { $totalSize }) fileSizeProgress = ({ $partialSize } of { $totalSize })
sendYourFilesLink = Try Firefox Send sendYourFilesLink = Try Send
errorPageHeader = Something went wrong! errorPageHeader = Something went wrong!
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 }
linkExpiredAlt = Link expired linkExpiredAlt = Link expired
notSupportedHeader = Your browser is not supported. notSupportedHeader = Your browser is not supported.
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 Send. Youll need to update your browser.
updateFirefox = Update Firefox updateFirefox = Update Firefox
deletePopupCancel = Cancel deletePopupCancel = Cancel
deleteButtonHover = Delete deleteButtonHover = Delete
@@ -32,8 +30,8 @@ footerLinkLegal = Legal
footerLinkPrivacy = Privacy footerLinkPrivacy = Privacy
footerLinkCookies = Cookies footerLinkCookies = Cookies
passwordTryAgain = Incorrect password. Try again. passwordTryAgain = Incorrect password. Try again.
javascriptRequired = Firefox Send requires JavaScript javascriptRequired = Send requires JavaScript
whyJavascript = Why does Firefox Send require JavaScript? whyJavascript = Why does Send require JavaScript?
enableJavascript = Please enable JavaScript and try again. 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" # 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 expiresHoursMinutes = { $hours }h { $minutes }m
@@ -46,8 +44,7 @@ passwordSetError = This password could not be set
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = Send -send-short-brand = Send
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla
@@ -143,5 +140,4 @@ shareLinkDescription = Share the link to your file:
shareLinkButton = Share link shareLinkButton = Share link
# $name is the name of the file # $name is the name of the file
shareMessage = Download “{ $name }” with { -send-brand }: simple, safe file sharing shareMessage = Download “{ $name }” with { -send-brand }: simple, safe file sharing
trailheadPromo = There is a way to protect your privacy. Join Firefox.
learnMore = Learn more. learnMore = Learn more.

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Opinión
importingFile = Importando… importingFile = Importando…
encryptingFile = Cifrando… encryptingFile = Cifrando…
decryptingFile = Descifrando… decryptingFile = Descifrando…
@@ -20,13 +18,13 @@ unlockButtonLabel = Desbloquear
downloadButtonLabel = Descargar downloadButtonLabel = Descargar
downloadFinish = Descarga completa downloadFinish = Descarga completa
fileSizeProgress = ({ $partialSize } de { $totalSize }) fileSizeProgress = ({ $partialSize } de { $totalSize })
sendYourFilesLink = Probá Firefox Send sendYourFilesLink = Probá Send
errorPageHeader = ¡Algo falló! errorPageHeader = ¡Algo falló!
fileTooBig = El archivo es demasiado grande para subir. Debería tener menos de { $size }. fileTooBig = El archivo es demasiado grande para subir. Debería tener menos de { $size }.
linkExpiredAlt = Enlace explirado linkExpiredAlt = Enlace explirado
notSupportedHeader = El navegador no está soportado. notSupportedHeader = El navegador no está soportado.
notSupportedLink = ¿Por qué mi navegador no está soportado? notSupportedLink = ¿Por qué mi navegador no está soportado?
notSupportedOutdatedDetail = Desafortunadamente esta versión de Firefox no soporta la tecnología web que necesita Firefox Send. Necesitás actualizar el navegador. notSupportedOutdatedDetail = Desafortunadamente esta versión de Firefox no soporta la tecnología web que necesita Send. Necesitás actualizar el navegador.
updateFirefox = Actualizar Firefox updateFirefox = Actualizar Firefox
deletePopupCancel = Cancelar deletePopupCancel = Cancelar
deleteButtonHover = Borrar deleteButtonHover = Borrar
@@ -34,8 +32,8 @@ footerLinkLegal = Legales
footerLinkPrivacy = Privacidad footerLinkPrivacy = Privacidad
footerLinkCookies = Cookies footerLinkCookies = Cookies
passwordTryAgain = Contraseña incorrecta. Intentá nuevamente. passwordTryAgain = Contraseña incorrecta. Intentá nuevamente.
javascriptRequired = Firefox Send requiere JavaScript javascriptRequired = Send requiere JavaScript
whyJavascript = ¿Por qué Firefox Send requiere Java Script? whyJavascript = ¿Por qué Send requiere Java Script?
enableJavascript = Por favor habilite JavaScript y pruebe de nuevo. enableJavascript = Por favor habilite JavaScript y pruebe de nuevo.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
expiresHoursMinutes = h { $hours } m { $minutes } expiresHoursMinutes = h { $hours } m { $minutes }
@@ -48,8 +46,7 @@ passwordSetError = No se pudo establecer la contraseña
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = Send -send-short-brand = Send
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Comentarios
importingFile = Importando… importingFile = Importando…
encryptingFile = Cifrando… encryptingFile = Cifrando…
decryptingFile = Descifrando… decryptingFile = Descifrando…
@@ -20,13 +18,13 @@ unlockButtonLabel = Desbloquear
downloadButtonLabel = Descargar downloadButtonLabel = Descargar
downloadFinish = Descarga completa downloadFinish = Descarga completa
fileSizeProgress = ({ $partialSize } de { $totalSize }) fileSizeProgress = ({ $partialSize } de { $totalSize })
sendYourFilesLink = Probar Firefox Send sendYourFilesLink = Probar Send
errorPageHeader = ¡Algo se fue a las pailas! errorPageHeader = ¡Algo se fue a las pailas!
fileTooBig = Ese archivo es muy grande para ser subido. Debiera tener un tamaño menor a { $size }. fileTooBig = Ese archivo es muy grande para ser subido. Debiera tener un tamaño menor a { $size }.
linkExpiredAlt = Enlace expirado linkExpiredAlt = Enlace expirado
notSupportedHeader = Tu navegador no está soportado. notSupportedHeader = Tu navegador no está soportado.
notSupportedLink = ¿Por qué mi navegador no es soportado? notSupportedLink = ¿Por qué mi navegador no es soportado?
notSupportedOutdatedDetail = Lamentablemente esta versión de Firefox no soporta la tecnología web que potencia a Firefox Send. Deberás actualizar tu navegador. notSupportedOutdatedDetail = Lamentablemente esta versión de Firefox no soporta la tecnología web que potencia a Send. Deberás actualizar tu navegador.
updateFirefox = Actualizar Firefox updateFirefox = Actualizar Firefox
deletePopupCancel = Cancelar deletePopupCancel = Cancelar
deleteButtonHover = Eliminar deleteButtonHover = Eliminar
@@ -34,8 +32,8 @@ footerLinkLegal = Legal
footerLinkPrivacy = Privacidad footerLinkPrivacy = Privacidad
footerLinkCookies = Cookies footerLinkCookies = Cookies
passwordTryAgain = Contraseña incorrecta. Vuelve a intentarlo. passwordTryAgain = Contraseña incorrecta. Vuelve a intentarlo.
javascriptRequired = Firefox Send requiere JavaScript. javascriptRequired = Send requiere JavaScript.
whyJavascript = ¿Por qué Firefox Send requiere JavaScript? whyJavascript = ¿Por qué Send requiere JavaScript?
enableJavascript = Por favor, activa JavaScript y vuelve a intentarlo. enableJavascript = Por favor, activa JavaScript y vuelve a intentarlo.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # 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 expiresHoursMinutes = { $hours }h { $minutes }m
@@ -48,12 +46,11 @@ passwordSetError = Esta contraseña no pudo ser establecida
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = Send -send-short-brand = Send
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla
introTitle = Intercambio de archivos sencillo y privado introTitle = Intercambio de archivos simple y privado
introDescription = { -send-brand } te permite compartir archivos con cifrado de extremo a extremo y un enlace que expira automáticamente. Así puedes mantener lo que compartes en privado y asegurarte de que tus cosas no permanezcan en línea para siempre. introDescription = { -send-brand } te permite compartir archivos con cifrado de extremo a extremo y un enlace que expira automáticamente. Así puedes mantener lo que compartes en privado y asegurarte de que tus cosas no permanezcan en línea para siempre.
notifyUploadEncryptDone = Tu archivo está cifrado y listo para enviar notifyUploadEncryptDone = Tu archivo está cifrado y listo para enviar
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes' # downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
@@ -95,7 +92,7 @@ copyLinkDescription = Copiar el enlace para compartir el archivo:
copyLinkButton = Copiar enlace copyLinkButton = Copiar enlace
downloadTitle = Bajando archivos downloadTitle = Bajando archivos
downloadDescription = Este archivo fue compartido a través de { -send-brand } con cifrado de punto a punto y un enlace que expira automáticamente. downloadDescription = Este archivo fue compartido a través de { -send-brand } con cifrado de punto a punto y un enlace que expira automáticamente.
trySendDescription = Prueba { -send-brand } para compartir archivos de forma sencilla y segura. trySendDescription = Prueba { -send-brand } para compartir archivos de forma simple y segura.
# count will always be > 10 # count will always be > 10
tooManyFiles = tooManyFiles =
{ $count -> { $count ->

View File

@@ -1,9 +1,7 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Comentario
importingFile = Importando... importingFile = Importando...
encryptingFile = Encriptando... encryptingFile = Cifrando...
decryptingFile = Desencriptando... decryptingFile = Descifrando...
downloadCount = downloadCount =
{ $num -> { $num ->
[one] 1 descarga [one] 1 descarga
@@ -20,22 +18,22 @@ unlockButtonLabel = Desbloquear
downloadButtonLabel = Descargar downloadButtonLabel = Descargar
downloadFinish = Descarga completa downloadFinish = Descarga completa
fileSizeProgress = ({ $partialSize } de { $totalSize }) fileSizeProgress = ({ $partialSize } de { $totalSize })
sendYourFilesLink = Prueba Firefox Send sendYourFilesLink = Prueba Send
errorPageHeader = ¡Se produjo un error! errorPageHeader = ¡Se ha producido un error!
fileTooBig = Ese archivo es muy grande. Debería ocupar menos de { $size }. fileTooBig = Ese archivo es muy grande. Debería ocupar menos de { $size }.
linkExpiredAlt = Enlace caducado linkExpiredAlt = Enlace caducado
notSupportedHeader = Tu navegador no está admitido. notSupportedHeader = Tu navegador no es compatible.
notSupportedLink = ¿Por qué no se admite mi navegador? notSupportedLink = ¿Por qué mi navegador no es compatible?
notSupportedOutdatedDetail = Lamentablemente, esta versión de Firefox no admite la tecnología web que impulsa Firefox Send. Tendrás que actualizar tu navegador. notSupportedOutdatedDetail = Lamentablemente, esta versión de Firefox no admite la tecnología web que impulsa Send. Tendrás que actualizar tu navegador.
updateFirefox = Actualizar Firefox updateFirefox = Actualizar Firefox
deletePopupCancel = Cancelar deletePopupCancel = Cancelar
deleteButtonHover = Eliminar deleteButtonHover = Eliminar
footerLinkLegal = Legal footerLinkLegal = Legal
footerLinkPrivacy = Privacidad footerLinkPrivacy = Privacidad
footerLinkCookies = Cookies footerLinkCookies = Cookies
passwordTryAgain = Contraseña incorrecta. Inténtelo de nuevo. passwordTryAgain = Contraseña incorrecta. Inténtalo de nuevo.
javascriptRequired = Firefox Send requiere JavaScript javascriptRequired = Send requiere JavaScript
whyJavascript = ¿Por qué Firefox Send requiere JavaScript? whyJavascript = ¿Por qué Send requiere JavaScript?
enableJavascript = Por favor, activa JavaScript y vuelve a intentarlo. enableJavascript = Por favor, activa JavaScript y vuelve a intentarlo.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # 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 expiresHoursMinutes = { $hours }h { $minutes }m
@@ -48,8 +46,7 @@ passwordSetError = No se ha podido establecer la contraseña
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = Enviar -send-short-brand = Enviar
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla

View File

@@ -1,9 +1,7 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Comentario
importingFile = Importando... importingFile = Importando...
encryptingFile = Encriptando... encryptingFile = Encriptando
decryptingFile = Desencriptando... decryptingFile = Desencriptando
downloadCount = downloadCount =
{ $num -> { $num ->
[one] 1 descarga [one] 1 descarga
@@ -20,13 +18,13 @@ unlockButtonLabel = Desbloquear
downloadButtonLabel = Descargar downloadButtonLabel = Descargar
downloadFinish = Descarga completa downloadFinish = Descarga completa
fileSizeProgress = ({ $partialSize } de { $totalSize }) fileSizeProgress = ({ $partialSize } de { $totalSize })
sendYourFilesLink = Prueba Firefox Send sendYourFilesLink = Prueba Send
errorPageHeader = ¡Algo salió mal! errorPageHeader = ¡Algo salió mal!
fileTooBig = Ese archivo es muy grande. Debería ocupar menos de { $size }. fileTooBig = Ese archivo es muy grande. Debería ocupar menos de { $size }.
linkExpiredAlt = Enlace caducado linkExpiredAlt = Enlace caducado
notSupportedHeader = Tu navegador no está soportado. notSupportedHeader = Tu navegador no está soportado.
notSupportedLink = ¿Por qué mi navegador no tiene soporte? notSupportedLink = ¿Por qué mi navegador no tiene soporte?
notSupportedOutdatedDetail = Lamentablemente esta versión de Firefox no soporta la tecnología web que potencia a Firefox Send. Deberás actualizar tu navegador. notSupportedOutdatedDetail = Lamentablemente esta versión de Firefox no soporta la tecnología web que potencia a Send. Deberás actualizar tu navegador.
updateFirefox = Actualizar Firefox updateFirefox = Actualizar Firefox
deletePopupCancel = Cancelar deletePopupCancel = Cancelar
deleteButtonHover = Eliminar deleteButtonHover = Eliminar
@@ -34,8 +32,8 @@ footerLinkLegal = Legal
footerLinkPrivacy = Privacidad footerLinkPrivacy = Privacidad
footerLinkCookies = Cookies footerLinkCookies = Cookies
passwordTryAgain = Contraseña incorrecta. Intenta de nuevo. passwordTryAgain = Contraseña incorrecta. Intenta de nuevo.
javascriptRequired = Firefox Send requiere JavaScript javascriptRequired = Send requiere JavaScript
whyJavascript = ¿Por qué Firefox Send requiere JavaScript? whyJavascript = ¿Por qué Send requiere JavaScript?
enableJavascript = Por favor, habilita JavaScript e intenta de nuevo. enableJavascript = Por favor, habilita JavaScript e intenta de nuevo.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # 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 expiresHoursMinutes = { $hours }h { $minutes }m
@@ -48,8 +46,7 @@ passwordSetError = No se ha podido establecer la contraseña
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = Enviar -send-short-brand = Enviar
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Tagasiside
importingFile = Importimine... importingFile = Importimine...
encryptingFile = Krüptimine… encryptingFile = Krüptimine…
decryptingFile = Dekrüptimine... decryptingFile = Dekrüptimine...
@@ -20,13 +18,13 @@ unlockButtonLabel = Ava
downloadButtonLabel = Laadi alla downloadButtonLabel = Laadi alla
downloadFinish = Allalaadimine lõpetati downloadFinish = Allalaadimine lõpetati
fileSizeProgress = ({ $partialSize }/{ $totalSize }) fileSizeProgress = ({ $partialSize }/{ $totalSize })
sendYourFilesLink = Proovi Firefox Send'i sendYourFilesLink = Proovi Send'i
errorPageHeader = Midagi läks valesti! errorPageHeader = Midagi läks valesti!
fileTooBig = Fail on üleslaadimiseks liiga suur. See peaks olema väiksem kui { $size }. fileTooBig = Fail on üleslaadimiseks liiga suur. See peaks olema väiksem kui { $size }.
linkExpiredAlt = Link on aegunud linkExpiredAlt = Link on aegunud
notSupportedHeader = Sinu brauser pole toetatud. notSupportedHeader = Sinu brauser pole toetatud.
notSupportedLink = Miks mu brauser toetatud pole? notSupportedLink = Miks mu brauser toetatud pole?
notSupportedOutdatedDetail = Kahjuks ei toeta see Firefoxi versioon veebitehnoloogiaid, mis teevad Firefox Sendi toimimise võimalikuks. Sa pead oma brauserit uuendama. notSupportedOutdatedDetail = Kahjuks ei toeta see Firefoxi versioon veebitehnoloogiaid, mis teevad Sendi toimimise võimalikuks. Sa pead oma brauserit uuendama.
updateFirefox = Uuenda Firefox updateFirefox = Uuenda Firefox
deletePopupCancel = Loobu deletePopupCancel = Loobu
deleteButtonHover = Kustuta deleteButtonHover = Kustuta
@@ -34,8 +32,8 @@ footerLinkLegal = Õiguslik teave
footerLinkPrivacy = Privaatsusest footerLinkPrivacy = Privaatsusest
footerLinkCookies = Küpsistest footerLinkCookies = Küpsistest
passwordTryAgain = Vale parool. Palun proovi uuesti. passwordTryAgain = Vale parool. Palun proovi uuesti.
javascriptRequired = Firefox Send'i kasutamiseks tuleb JavaScript lubada javascriptRequired = Send'i kasutamiseks tuleb JavaScript lubada
whyJavascript = Miks Firefox Send JavaScripti vajab? whyJavascript = Miks Send JavaScripti vajab?
enableJavascript = Palun luba JavaScript ja proovi uuesti. enableJavascript = Palun luba JavaScript ja proovi uuesti.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
expiresHoursMinutes = { $hours }t { $minutes }m expiresHoursMinutes = { $hours }t { $minutes }m
@@ -48,8 +46,7 @@ passwordSetError = Parooli muutmine ebaõnnestus
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = Send -send-short-brand = Send
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla
@@ -151,3 +148,5 @@ shareLinkDescription = Jaga linki failile:
shareLinkButton = Jaga linki shareLinkButton = Jaga linki
# $name is the name of the file # $name is the name of the file
shareMessage = Laadi “{ $name }” alla teenusega { -send-brand }, mis pakub lihtsat ja turvalist failijagamist shareMessage = Laadi “{ $name }” alla teenusega { -send-brand }, mis pakub lihtsat ja turvalist failijagamist
trailheadPromo = Oma privaatsust on võimalik kaitsta. Liitu Firefoxiga.
learnMore = Rohkem teavet.

View File

@@ -1,6 +1,4 @@
# Firefox Send is a brand name and should not be localized. title = Send
title = Firefox Send
siteFeedback = Iritzia
importingFile = Inportatzen… importingFile = Inportatzen…
encryptingFile = Zifratzen... encryptingFile = Zifratzen...
decryptingFile = Deszifratzen... decryptingFile = Deszifratzen...
@@ -20,13 +18,13 @@ unlockButtonLabel = Desblokeatu
downloadButtonLabel = Deskargatu downloadButtonLabel = Deskargatu
downloadFinish = Deskarga burututa downloadFinish = Deskarga burututa
fileSizeProgress = ({ $totalSize } / { $partialSize }) fileSizeProgress = ({ $totalSize } / { $partialSize })
sendYourFilesLink = Probatu Firefox Send sendYourFilesLink = Probatu Send
errorPageHeader = Zerbait gaizki joan da! errorPageHeader = Zerbait gaizki joan da!
fileTooBig = Fitxategia handiegia da kargatzeko. { $size } baino txikiagoa izan behar du. fileTooBig = Fitxategia handiegia da kargatzeko. { $size } baino txikiagoa izan behar du.
linkExpiredAlt = Lotura iraungi da linkExpiredAlt = Lotura iraungi da
notSupportedHeader = Zure nabigatzailea ez da onartzen. notSupportedHeader = Zure nabigatzailea ez da onartzen.
notSupportedLink = Zergatik ez da nire nabigatzailea onartzen? notSupportedLink = Zergatik ez da nire nabigatzailea onartzen?
notSupportedOutdatedDetail = Zoritxarrez Firefox bertsio honek ez du Firefox Send-ek behar duen web teknologia onartzen. Zure nabigatzailea eguneratu behar duzu. notSupportedOutdatedDetail = Zoritxarrez Firefox bertsio honek ez du Send-ek behar duen web teknologia onartzen. Zure nabigatzailea eguneratu behar duzu.
updateFirefox = Eguneratu Firefox updateFirefox = Eguneratu Firefox
deletePopupCancel = Utzi deletePopupCancel = Utzi
deleteButtonHover = Ezabatu deleteButtonHover = Ezabatu
@@ -34,8 +32,8 @@ footerLinkLegal = Lege-oharra
footerLinkPrivacy = Pribatutasuna footerLinkPrivacy = Pribatutasuna
footerLinkCookies = Cookieak footerLinkCookies = Cookieak
passwordTryAgain = Pasahitz okerra. Saiatu berriro. passwordTryAgain = Pasahitz okerra. Saiatu berriro.
javascriptRequired = JavaScript beharrezkoa da Firefox Send erabiltzeko. javascriptRequired = JavaScript beharrezkoa da Send erabiltzeko.
whyJavascript = Zergatik behar du Firefox Send-ek JavasScript? whyJavascript = Zergatik behar du Send-ek JavasScript?
enableJavascript = Gaitu JavaScript eta saiatu berriro. enableJavascript = Gaitu JavaScript eta saiatu berriro.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m" # 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 expiresHoursMinutes = { $hours }h { $minutes }m
@@ -48,8 +46,7 @@ passwordSetError = Pasahitz hau ezin da ezarri
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized -send-brand = Send
-send-brand = Firefox Send
-send-short-brand = Send -send-short-brand = Send
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla

Some files were not shown because too many files have changed in this diff Show More