mirror of
https://gitlab.com/timvisee/send.git
synced 2025-12-10 12:15:34 +00:00
Compare commits
292 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
94f1eabbc7 | ||
|
|
902bc6628e | ||
|
|
460b741f17 | ||
|
|
d5c488196d | ||
|
|
9ad9c9feb2 | ||
|
|
6576e4a74c | ||
|
|
950872109e | ||
|
|
87051d27ed | ||
|
|
3451803b37 | ||
|
|
ac15153e8f | ||
|
|
924f5dc682 | ||
|
|
ff9be6a213 | ||
|
|
883728570e | ||
|
|
0435f17f9a | ||
|
|
1e1268fff0 | ||
|
|
252d7817e3 | ||
|
|
ce28c38ebe | ||
|
|
f0407f9beb | ||
|
|
c6f222eb57 | ||
|
|
6dd6135185 | ||
|
|
8df339b66d | ||
|
|
8702fda651 | ||
|
|
807ecff471 | ||
|
|
927c981cd7 | ||
|
|
7073cc8ce6 | ||
|
|
c925fae696 | ||
|
|
966d7a5e35 | ||
|
|
96c750c098 | ||
|
|
0729064753 | ||
|
|
259a5a5f24 | ||
|
|
27be72e0cd | ||
|
|
e4231bbc0f | ||
|
|
1d184f06bf | ||
|
|
f7b46a99ac | ||
|
|
3fadb489c7 | ||
|
|
6378676c2d | ||
|
|
014d84e4c7 | ||
|
|
a08d8435a9 | ||
|
|
40a05c9ecf | ||
|
|
527040afef | ||
|
|
a48a447808 | ||
|
|
f3569d7f98 | ||
|
|
6ca7d11efb | ||
|
|
b71ae4a0ff | ||
|
|
7ba25664b5 | ||
|
|
80fb42ad3d | ||
|
|
f036df5f47 | ||
|
|
20c063db7c | ||
|
|
a6b43c9eef | ||
|
|
c80f9ada65 | ||
|
|
e0ae5cb3c6 | ||
|
|
c0fb3d17be | ||
|
|
116f090b7e | ||
|
|
7cbd9716e2 | ||
|
|
58191975b9 | ||
|
|
76695aee5d | ||
|
|
b356b4cad3 | ||
|
|
63ddbeefc4 | ||
|
|
7b423b24b6 | ||
|
|
b67050b742 | ||
|
|
06242dfd38 | ||
|
|
3b8dbfd81c | ||
|
|
9c2fe39764 | ||
|
|
8b21d43bfa | ||
|
|
e7e39f4d4a | ||
|
|
e4c801d9a1 | ||
|
|
324f275dd4 | ||
|
|
594e0bd28e | ||
|
|
6a7fdfe780 | ||
|
|
0c82741b98 | ||
|
|
fe57734792 | ||
|
|
4754bed9b8 | ||
|
|
a60da467b9 | ||
|
|
362da2bbfc | ||
|
|
1a9ef4a246 | ||
|
|
f51dbbb8f5 | ||
|
|
e497107e59 | ||
|
|
10ad6fc1ae | ||
|
|
c982db4c75 | ||
|
|
cd8130563d | ||
|
|
730a569d43 | ||
|
|
769dae1bdc | ||
|
|
54a8c504ce | ||
|
|
92dc9a0f71 | ||
|
|
80a7c92056 | ||
|
|
c6ebea0100 | ||
|
|
039b5daaed | ||
|
|
4bf4e61c2c | ||
|
|
3c21e2a00f | ||
|
|
38a379d1de | ||
|
|
adeb19d974 | ||
|
|
744c410704 | ||
|
|
99ab3882eb | ||
|
|
7cdf566bcd | ||
|
|
b6e4877d93 | ||
|
|
b9c87fd779 | ||
|
|
6ef5b5133c | ||
|
|
b7d2420765 | ||
|
|
c139531c91 | ||
|
|
88fe3902bc | ||
|
|
645fd062ac | ||
|
|
ccb0b71df5 | ||
|
|
b8ec90a398 | ||
|
|
7ed5f37c66 | ||
|
|
c899129f9a | ||
|
|
1bb91690c5 | ||
|
|
073f6f67d3 | ||
|
|
533bfdb496 | ||
|
|
34de65d7d2 | ||
|
|
209fdf34f8 | ||
|
|
ba5c2a049d | ||
|
|
1528aa3f1b | ||
|
|
b1f1b9bd19 | ||
|
|
2963b2fc05 | ||
|
|
e4f9cfa023 | ||
|
|
09e961219d | ||
|
|
b36a5f6973 | ||
|
|
1a36dc084e | ||
|
|
c66347b3da | ||
|
|
a7d0551509 | ||
|
|
f6f6324aa1 | ||
|
|
a24597695b | ||
|
|
706ac638da | ||
|
|
d66d08f0ed | ||
|
|
ab9af7fd9b | ||
|
|
466a087689 | ||
|
|
71956739f8 | ||
|
|
62689b9556 | ||
|
|
7d1b8e002f | ||
|
|
8c535ce50d | ||
|
|
a3bdcd8478 | ||
|
|
1e77d86e8a | ||
|
|
1af01b1ee3 | ||
|
|
eb1bcde37f | ||
|
|
8def910d61 | ||
|
|
5892532d03 | ||
|
|
8ede5cf05c | ||
|
|
7213fef7c3 | ||
|
|
d3e9bb09df | ||
|
|
2682aec90d | ||
|
|
0ea89a58b0 | ||
|
|
2a2a3ad21f | ||
|
|
36c73bae7b | ||
|
|
f5116cee29 | ||
|
|
72ab5bdbf3 | ||
|
|
94f0b928ae | ||
|
|
5e14a0b45a | ||
|
|
84a382af77 | ||
|
|
8680dc6b3c | ||
|
|
cf787eef9f | ||
|
|
a5dffdba14 | ||
|
|
2dcc3730d9 | ||
|
|
3fb3f6f77f | ||
|
|
0a4a9f674d | ||
|
|
7e2e171f83 | ||
|
|
a64bb4ac8b | ||
|
|
acab58ca1e | ||
|
|
10ed88fa40 | ||
|
|
9b2a7dfcd7 | ||
|
|
517f51f4f0 | ||
|
|
73735010ae | ||
|
|
72497b77b2 | ||
|
|
7c4a00ecd1 | ||
|
|
d96cb1aec4 | ||
|
|
fc99ed584f | ||
|
|
da1ffe581b | ||
|
|
6cbbbab691 | ||
|
|
b91bd2b859 | ||
|
|
14ae124ca8 | ||
|
|
3bd087a66d | ||
|
|
57e9fbcd26 | ||
|
|
bd42445a98 | ||
|
|
0e1027544c | ||
|
|
c7532f3f4a | ||
|
|
97e861f050 | ||
|
|
9f3adbf6ad | ||
|
|
7b4c42a56f | ||
|
|
0f763ca4ec | ||
|
|
97164a4b08 | ||
|
|
ee8baff557 | ||
|
|
637a6d86fb | ||
|
|
f8f200cbcd | ||
|
|
0e4b9f425f | ||
|
|
eb4a2c9f02 | ||
|
|
55f3abaa1b | ||
|
|
bb1ee80c34 | ||
|
|
f9edf196a2 | ||
|
|
9bebab3f66 | ||
|
|
e9bf6e235b | ||
|
|
88a3dc94d5 | ||
|
|
d7143ab63a | ||
|
|
b340969cc1 | ||
|
|
ce0bf26b9e | ||
|
|
193f43ac9d | ||
|
|
e376f978a2 | ||
|
|
bd93fb66a5 | ||
|
|
fc79233ade | ||
|
|
8263a9eaa9 | ||
|
|
5d02f47e41 | ||
|
|
23ecb632eb | ||
|
|
b82177dc44 | ||
|
|
51296d5489 | ||
|
|
f603f40f43 | ||
|
|
19ac0480ee | ||
|
|
7d43f4f145 | ||
|
|
8f17c86611 | ||
|
|
f517c514d8 | ||
|
|
e2d9c0acca | ||
|
|
c3221bddf2 | ||
|
|
5ac10a2057 | ||
|
|
85ce14a991 | ||
|
|
2594581965 | ||
|
|
1a3968476a | ||
|
|
281abfc79b | ||
|
|
6dd4a92467 | ||
|
|
9614c119aa | ||
|
|
1e1c21a45a | ||
|
|
8cff6f9441 | ||
|
|
23c2a61567 | ||
|
|
903cb9cc49 | ||
|
|
d4901662f8 | ||
|
|
686197be61 | ||
|
|
dd848f19b4 | ||
|
|
a7d1607cb3 | ||
|
|
508e252067 | ||
|
|
2cf409ca11 | ||
|
|
3f0fac738a | ||
|
|
9bd14a17f9 | ||
|
|
4505296b35 | ||
|
|
5a91ba47c6 | ||
|
|
b82e2efd33 | ||
|
|
284676d956 | ||
|
|
d91edcb653 | ||
|
|
9ffc792dec | ||
|
|
7d3973a5e4 | ||
|
|
ffc0d57576 | ||
|
|
f28ee8ab78 | ||
|
|
6b02a2167c | ||
|
|
c9b9c338d7 | ||
|
|
d22d54dee0 | ||
|
|
20b9279eec | ||
|
|
ce4157ac08 | ||
|
|
3c74d9958f | ||
|
|
569d110f6e | ||
|
|
e69c91b5eb | ||
|
|
2477b6cde8 | ||
|
|
8cf42a2711 | ||
|
|
5207c3fb15 | ||
|
|
a166f98b66 | ||
|
|
d572c44dd0 | ||
|
|
9286140b15 | ||
|
|
0b738bc152 | ||
|
|
f06ddfd888 | ||
|
|
f10ed62310 | ||
|
|
a5c05daac5 | ||
|
|
a84ce0b0cf | ||
|
|
adecddae77 | ||
|
|
927706d67c | ||
|
|
e70c883673 | ||
|
|
09f583c569 | ||
|
|
6e676404a0 | ||
|
|
daa70a61eb | ||
|
|
2ed4ad6772 | ||
|
|
f0a42c5c07 | ||
|
|
02174c3245 | ||
|
|
8a148747bd | ||
|
|
66750ca9ff | ||
|
|
e84ec0fcb3 | ||
|
|
39edee306e | ||
|
|
464fdc9873 | ||
|
|
38ef8db3f1 | ||
|
|
3fee10c890 | ||
|
|
3a35b2ae2a | ||
|
|
cff4227132 | ||
|
|
b01dbdc119 | ||
|
|
62603f095e | ||
|
|
1e95a9122e | ||
|
|
308fd0cdcb | ||
|
|
a4e8c0b4a3 | ||
|
|
e7964c03ed | ||
|
|
c800257678 | ||
|
|
89a3c984e7 | ||
|
|
05d32ef9d7 | ||
|
|
a2ec22a4e0 | ||
|
|
7ae676ce8a | ||
|
|
b0c2c329e2 | ||
|
|
9c423bb435 | ||
|
|
3cb6952d68 | ||
|
|
147ed4c736 | ||
|
|
f94918bebd | ||
|
|
ee45a835be | ||
|
|
26ad1b8763 |
@@ -2,5 +2,6 @@ dist
|
|||||||
assets
|
assets
|
||||||
firefox
|
firefox
|
||||||
coverage
|
coverage
|
||||||
|
android/app/build
|
||||||
app/locale.js
|
app/locale.js
|
||||||
app/capabilities.js
|
app/capabilities.js
|
||||||
@@ -4,6 +4,7 @@ env:
|
|||||||
|
|
||||||
extends:
|
extends:
|
||||||
- eslint:recommended
|
- eslint:recommended
|
||||||
|
- prettier
|
||||||
- plugin:node/recommended
|
- plugin:node/recommended
|
||||||
- plugin:security/recommended
|
- plugin:security/recommended
|
||||||
|
|
||||||
@@ -22,13 +23,5 @@ rules:
|
|||||||
security/detect-non-literal-fs-filename: off
|
security/detect-non-literal-fs-filename: off
|
||||||
security/detect-object-injection: off
|
security/detect-object-injection: off
|
||||||
|
|
||||||
eol-last: [error, always]
|
|
||||||
eqeqeq: error
|
|
||||||
no-alert: warn
|
|
||||||
no-console: warn
|
|
||||||
no-path-concat: error
|
|
||||||
no-unused-vars: [error, {argsIgnorePattern: "^_|err|event|next|reject"}]
|
no-unused-vars: [error, {argsIgnorePattern: "^_|err|event|next|reject"}]
|
||||||
no-var: error
|
require-atomic-updates: warn
|
||||||
one-var: [error, never]
|
|
||||||
prefer-const: error
|
|
||||||
quotes: [error, single, {avoidEscape: true}]
|
|
||||||
|
|||||||
41
CONTRIBUTORS
41
CONTRIBUTORS
@@ -4,15 +4,18 @@ Adnan Kičin
|
|||||||
Alberto Castro
|
Alberto Castro
|
||||||
Alexander Slovesnik
|
Alexander Slovesnik
|
||||||
Alfredos-Panagiotis Damkalis
|
Alfredos-Panagiotis Damkalis
|
||||||
|
Aman Alam
|
||||||
Amin Mahmudian
|
Amin Mahmudian
|
||||||
Ander Elortondo
|
Ander Elortondo
|
||||||
Andreas Pettersson
|
Andreas Pettersson
|
||||||
Anesu Chiodza
|
Anesu Chiodza
|
||||||
Anika Dorn
|
Anika Dorn
|
||||||
|
Anish Sheela
|
||||||
Arash Mousavi
|
Arash Mousavi
|
||||||
Artem Polivanchuk
|
Artem Polivanchuk
|
||||||
Ashikur Rahman
|
Ashikur Rahman
|
||||||
Ashok kumar
|
Ashok kumar
|
||||||
|
Balasankar C
|
||||||
Balázs Meskó
|
Balázs Meskó
|
||||||
Belayet Hossain
|
Belayet Hossain
|
||||||
Benjamin Forehand Jr
|
Benjamin Forehand Jr
|
||||||
@@ -20,8 +23,11 @@ Besnik Bleta
|
|||||||
Björn I
|
Björn I
|
||||||
Bjørn I
|
Bjørn I
|
||||||
Boopesh Mahendran
|
Boopesh Mahendran
|
||||||
|
Brahim Essaidi
|
||||||
Brainlulz
|
Brainlulz
|
||||||
Breana Gonzales
|
Breana Gonzales
|
||||||
|
Christian Elbrianno
|
||||||
|
Christoph Kührer
|
||||||
Christopher Ramírez
|
Christopher Ramírez
|
||||||
Chuck Harmston
|
Chuck Harmston
|
||||||
Cloney 173741
|
Cloney 173741
|
||||||
@@ -31,6 +37,7 @@ Cynthia Pereira
|
|||||||
Daniel Thorn
|
Daniel Thorn
|
||||||
Daniela Arcese
|
Daniela Arcese
|
||||||
Danny Coates
|
Danny Coates
|
||||||
|
Davide
|
||||||
Derek Tamsen
|
Derek Tamsen
|
||||||
Dhyey Thakore
|
Dhyey Thakore
|
||||||
Donovan Preston
|
Donovan Preston
|
||||||
@@ -52,11 +59,16 @@ Frederick Villaluna
|
|||||||
G12r
|
G12r
|
||||||
Gabriela
|
Gabriela
|
||||||
Gautam krishna.R
|
Gautam krishna.R
|
||||||
|
George Raptis
|
||||||
Georgianizator
|
Georgianizator
|
||||||
Gonçalo Matos
|
Gonçalo Matos
|
||||||
|
Gwenn
|
||||||
|
Hugo
|
||||||
|
Hugo Abreu
|
||||||
Hyeonseok Shin
|
Hyeonseok Shin
|
||||||
Håvar Henriksen
|
Håvar Henriksen
|
||||||
Ian Neal
|
Ian Neal
|
||||||
|
ItielMaN
|
||||||
Jae Hyeon Park
|
Jae Hyeon Park
|
||||||
Jakob Kappel
|
Jakob Kappel
|
||||||
Jakub Rychlý
|
Jakub Rychlý
|
||||||
@@ -65,6 +77,8 @@ Jarmo
|
|||||||
Jim Spentzos
|
Jim Spentzos
|
||||||
Jiri Grönroos
|
Jiri Grönroos
|
||||||
Jobava
|
Jobava
|
||||||
|
Joe Becher
|
||||||
|
Joe ST
|
||||||
Joergen
|
Joergen
|
||||||
Johann-S
|
Johann-S
|
||||||
John Gruen
|
John Gruen
|
||||||
@@ -81,9 +95,11 @@ Khaled Hosny
|
|||||||
Kim Ludvigsen
|
Kim Ludvigsen
|
||||||
Kohei Yoshino
|
Kohei Yoshino
|
||||||
Lan Glad
|
Lan Glad
|
||||||
|
Lasse Liehu
|
||||||
Laurent Jouanneau
|
Laurent Jouanneau
|
||||||
Lobodzets
|
Lobodzets
|
||||||
LuFlo
|
LuFlo
|
||||||
|
Luis A. Sánchez
|
||||||
Luiz Carlos de Morais
|
Luiz Carlos de Morais
|
||||||
Luna Jernberg
|
Luna Jernberg
|
||||||
Mahay Alam Khan
|
Mahay Alam Khan
|
||||||
@@ -106,14 +122,18 @@ Michal Vašíček
|
|||||||
Mikeyy
|
Mikeyy
|
||||||
Miro Rauhala
|
Miro Rauhala
|
||||||
Mozilla Pontoon
|
Mozilla Pontoon
|
||||||
|
Mozilla-GitHub-Standards
|
||||||
Mozinet
|
Mozinet
|
||||||
Moḥend Belqasem
|
Moḥend Belqasem
|
||||||
|
Muhend Belkacem
|
||||||
Muḥend Belqasem
|
Muḥend Belqasem
|
||||||
Myungjae Won
|
Myungjae Won
|
||||||
Nicholas Skinsacos
|
Nicholas Skinsacos
|
||||||
Nihad
|
Nihad
|
||||||
Nihad Suljić
|
Nihad Suljić
|
||||||
Oscar
|
Oscar
|
||||||
|
Paulius
|
||||||
|
Pedro Burlamaqui Bendahan
|
||||||
Peter deHaan
|
Peter deHaan
|
||||||
Pierre Neter
|
Pierre Neter
|
||||||
Pin-guang Chen
|
Pin-guang Chen
|
||||||
@@ -125,10 +145,12 @@ RickieES
|
|||||||
Rimas Kudelis
|
Rimas Kudelis
|
||||||
Rizky Ariestiyansyah
|
Rizky Ariestiyansyah
|
||||||
Rob Powell
|
Rob Powell
|
||||||
|
Robert
|
||||||
Roberto Alvarado
|
Roberto Alvarado
|
||||||
Rodrigo
|
Rodrigo
|
||||||
Rodrigo Guerra
|
Rodrigo Guerra
|
||||||
Rok Žerdin
|
Rok Žerdin
|
||||||
|
Romi Hardiyanto
|
||||||
Rongjian Zhang
|
Rongjian Zhang
|
||||||
Ruba
|
Ruba
|
||||||
Sahithi
|
Sahithi
|
||||||
@@ -139,9 +161,12 @@ Sara Todaro
|
|||||||
Sav22999
|
Sav22999
|
||||||
Schieck :)
|
Schieck :)
|
||||||
Selim Şumlu
|
Selim Şumlu
|
||||||
|
Sidak Singh Aulakh
|
||||||
Slimane Amiri
|
Slimane Amiri
|
||||||
|
Slimane Selyan AMIRI
|
||||||
Soumya Himanish Mohapatra
|
Soumya Himanish Mohapatra
|
||||||
Staś Małolepszy
|
Staś Małolepszy
|
||||||
|
Suriyaa ✌️️
|
||||||
Tema
|
Tema
|
||||||
Thomas Dalichow
|
Thomas Dalichow
|
||||||
Théo Chevalier
|
Théo Chevalier
|
||||||
@@ -150,6 +175,7 @@ Tim Visée
|
|||||||
Tomer Cohen
|
Tomer Cohen
|
||||||
Tomáš Zelina
|
Tomáš Zelina
|
||||||
Ton
|
Ton
|
||||||
|
Top
|
||||||
Tymur Faradzhev
|
Tymur Faradzhev
|
||||||
Uccen Marzuq
|
Uccen Marzuq
|
||||||
Varghese Thomas
|
Varghese Thomas
|
||||||
@@ -159,6 +185,7 @@ Vitaliy Krutko
|
|||||||
Weihang Lo
|
Weihang Lo
|
||||||
Wil Clouser
|
Wil Clouser
|
||||||
YFdyh000
|
YFdyh000
|
||||||
|
Yassine Aït-El-Mouden
|
||||||
Yongmin H
|
Yongmin H
|
||||||
You-Wen Liang (Mark)
|
You-Wen Liang (Mark)
|
||||||
aaaaalbert
|
aaaaalbert
|
||||||
@@ -169,6 +196,7 @@ alex_mayorga
|
|||||||
ariestiyansyah
|
ariestiyansyah
|
||||||
avelper
|
avelper
|
||||||
chilledfrogs
|
chilledfrogs
|
||||||
|
clouserw-mozilla-owner
|
||||||
dgadelha
|
dgadelha
|
||||||
dskmori
|
dskmori
|
||||||
ehuggett
|
ehuggett
|
||||||
@@ -180,25 +208,35 @@ gmontagu
|
|||||||
goofy
|
goofy
|
||||||
hello
|
hello
|
||||||
hi
|
hi
|
||||||
|
ivan.pompa
|
||||||
jesferman1993
|
jesferman1993
|
||||||
jlG
|
jlG
|
||||||
josotrix
|
josotrix
|
||||||
jspam
|
jspam
|
||||||
julenx
|
julenx
|
||||||
kenrick95
|
kenrick95
|
||||||
|
kumincir
|
||||||
|
m4hdi.pdroid
|
||||||
|
mail
|
||||||
manxmensch
|
manxmensch
|
||||||
marigalicer
|
marigalicer
|
||||||
|
marsf
|
||||||
|
merianosnikos
|
||||||
mirzet.omerovic.1992
|
mirzet.omerovic.1992
|
||||||
|
mujeebcpy
|
||||||
|
p.sanroman.bengoetxea
|
||||||
passionforlife
|
passionforlife
|
||||||
paul.trevor
|
paul.trevor
|
||||||
pyup.io bot
|
pyup.io bot
|
||||||
ravmn
|
ravmn
|
||||||
rcmainak
|
rcmainak
|
||||||
reza.habibi2008
|
reza.habibi2008
|
||||||
|
rgpublic
|
||||||
risger
|
risger
|
||||||
robbp
|
robbp
|
||||||
ruikunai
|
ruikunai
|
||||||
savemore99.sm
|
savemore99.sm
|
||||||
|
sergio
|
||||||
shikhar-scs
|
shikhar-scs
|
||||||
siparon
|
siparon
|
||||||
skystar-p
|
skystar-p
|
||||||
@@ -210,10 +248,13 @@ victor.gonzalezro
|
|||||||
xcffl
|
xcffl
|
||||||
ybouhamam
|
ybouhamam
|
||||||
yoshimitsu002
|
yoshimitsu002
|
||||||
|
yusup.ramdani
|
||||||
Μιχάλης
|
Μιχάλης
|
||||||
Марко Костић (Marko Kostić)
|
Марко Костић (Marko Kostić)
|
||||||
|
Ратко Вујановић
|
||||||
صفا الفليج
|
صفا الفليج
|
||||||
వీవెన్
|
వీవెన్
|
||||||
|
ജോയ്സ്
|
||||||
张无忌
|
张无忌
|
||||||
新垣结衣松冈茉优长泽雅美门胁麦上野树里石原里美
|
新垣结衣松冈茉优长泽雅美门胁麦上野树里石原里美
|
||||||
莫非前世那一眼
|
莫非前世那一眼
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ USER app
|
|||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY --chown=app:app --from=builder /app .
|
COPY --chown=app:app --from=builder /app .
|
||||||
COPY --chown=app:app . .
|
COPY --chown=app:app . .
|
||||||
|
RUN mkdir -p /app/.config/configstore
|
||||||
|
RUN ln -s dist/version.json version.json
|
||||||
|
|
||||||
ENV PORT=1443
|
ENV PORT=1443
|
||||||
EXPOSE $PORT
|
EXPOSE $PORT
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
* [Localization](#localization)
|
* [Localization](#localization)
|
||||||
* [Contributing](#contributing)
|
* [Contributing](#contributing)
|
||||||
* [Testing](#testing)
|
* [Testing](#testing)
|
||||||
|
* [Deployment](#deployment)
|
||||||
* [Android](#android)
|
* [Android](#android)
|
||||||
* [License](#license)
|
* [License](#license)
|
||||||
|
|
||||||
@@ -91,6 +92,12 @@ Pull requests are always welcome! Feel free to check out the list of ["good firs
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Deployment
|
||||||
|
|
||||||
|
see also [docs/deployment.md](docs/deployment.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Android
|
## Android
|
||||||
|
|
||||||
The android implementation is contained in the `android` directory, and can be viewed locally for easy testing and editing by running `ANDROID=1 npm start` and then visiting <http://localhost:8080>. CSS and image files are located in the `android/app/src/main/assets` directory.
|
The android implementation is contained in the `android` directory, and can be viewed locally for easy testing and editing by running `ANDROID=1 npm start` and then visiting <http://localhost:8080>. CSS and image files are located in the `android/app/src/main/assets` directory.
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
/* global window, navigator */
|
import 'intl-pluralrules';
|
||||||
import 'fluent-intl-polyfill';
|
|
||||||
import choo from 'choo';
|
import choo from 'choo';
|
||||||
import html from 'choo/html';
|
import html from 'choo/html';
|
||||||
import Raven from 'raven-js';
|
import * as Sentry from '@sentry/browser';
|
||||||
|
|
||||||
import { setApiUrlPrefix, getConstants } from '../app/api';
|
import { setApiUrlPrefix, getConstants } from '../app/api';
|
||||||
import metrics from '../app/metrics';
|
import metrics from '../app/metrics';
|
||||||
@@ -53,7 +52,7 @@ function body(main) {
|
|||||||
|
|
||||||
const menu = html`<a
|
const menu = html`<a
|
||||||
id="hamburger"
|
id="hamburger"
|
||||||
class="absolute pin-t pin-r z-50"
|
class="absolute top-0 right-0 z-50"
|
||||||
href="#"
|
href="#"
|
||||||
onclick="${clickPreferences}"
|
onclick="${clickPreferences}"
|
||||||
>
|
>
|
||||||
@@ -83,7 +82,7 @@ function body(main) {
|
|||||||
state.archive = new Archive([], DEFAULTS.EXPIRE_SECONDS);
|
state.archive = new Archive([], DEFAULTS.EXPIRE_SECONDS);
|
||||||
state.storage = storage;
|
state.storage = storage;
|
||||||
state.user = new User(storage, LIMITS);
|
state.user = new User(storage, LIMITS);
|
||||||
state.raven = Raven;
|
state.sentry = Sentry;
|
||||||
});
|
});
|
||||||
app.use(metrics);
|
app.use(metrics);
|
||||||
app.route('/', body(home));
|
app.route('/', body(home));
|
||||||
|
|||||||
@@ -42,11 +42,7 @@ module.exports = function(state, emit) {
|
|||||||
content =
|
content =
|
||||||
archives.length < 1
|
archives.length < 1
|
||||||
? intro(state)
|
? intro(state)
|
||||||
: list(
|
: list(archives, 'h-full overflow-y-auto w-full', 'mb-3 w-full');
|
||||||
archives,
|
|
||||||
'list-reset h-full overflow-y-auto w-full',
|
|
||||||
'mb-3 w-full'
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return html`
|
return html`
|
||||||
@@ -57,7 +53,7 @@ module.exports = function(state, emit) {
|
|||||||
>
|
>
|
||||||
${content}
|
${content}
|
||||||
</section>
|
</section>
|
||||||
<div class="fixed pin-r pin-b z-20">
|
<div class="fixed right-0 bottom-0 z-20">
|
||||||
${button}
|
${button}
|
||||||
<input
|
<input
|
||||||
id="file-upload"
|
id="file-upload"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export default function initialState(state, emitter) {
|
|||||||
getAsset(name) {
|
getAsset(name) {
|
||||||
return `${state.prefix}/${name}`;
|
return `${state.prefix}/${name}`;
|
||||||
},
|
},
|
||||||
raven: {
|
sentry: {
|
||||||
captureException: e => {
|
captureException: e => {
|
||||||
console.error('ERROR ' + e + ' ' + e.stack);
|
console.error('ERROR ' + e + ' ' + e.stack);
|
||||||
}
|
}
|
||||||
|
|||||||
76
app/api.js
76
app/api.js
@@ -11,6 +11,15 @@ if (!fileProtocolWssUrl) {
|
|||||||
fileProtocolWssUrl = 'wss://send.firefox.com/api/ws';
|
fileProtocolWssUrl = 'wss://send.firefox.com/api/ws';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class ConnectionError extends Error {
|
||||||
|
constructor(cancelled, duration, size) {
|
||||||
|
super(cancelled ? '0' : 'connection closed');
|
||||||
|
this.cancelled = cancelled;
|
||||||
|
this.duration = duration;
|
||||||
|
this.size = size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function setFileProtocolWssUrl(url) {
|
export function setFileProtocolWssUrl(url) {
|
||||||
localStorage && localStorage.setItem('wssURL', url);
|
localStorage && localStorage.setItem('wssURL', url);
|
||||||
fileProtocolWssUrl = url;
|
fileProtocolWssUrl = url;
|
||||||
@@ -137,17 +146,25 @@ export async function setPassword(id, owner_token, keychain) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function asyncInitWebSocket(server) {
|
function asyncInitWebSocket(server) {
|
||||||
return new Promise(resolve => {
|
return new Promise((resolve, reject) => {
|
||||||
|
try {
|
||||||
const ws = new WebSocket(server);
|
const ws = new WebSocket(server);
|
||||||
ws.onopen = () => {
|
ws.addEventListener('open', () => resolve(ws), { once: true });
|
||||||
resolve(ws);
|
} catch (e) {
|
||||||
};
|
reject(new ConnectionError(false));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function listenForResponse(ws, canceller) {
|
function listenForResponse(ws, canceller) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
function handleClose(event) {
|
||||||
|
// a 'close' event before a 'message' event means the request failed
|
||||||
|
ws.removeEventListener('message', handleMessage);
|
||||||
|
reject(new ConnectionError(canceller.cancelled));
|
||||||
|
}
|
||||||
function handleMessage(msg) {
|
function handleMessage(msg) {
|
||||||
|
ws.removeEventListener('close', handleClose);
|
||||||
try {
|
try {
|
||||||
const response = JSON.parse(msg.data);
|
const response = JSON.parse(msg.data);
|
||||||
if (response.error) {
|
if (response.error) {
|
||||||
@@ -156,13 +173,11 @@ function listenForResponse(ws, canceller) {
|
|||||||
resolve(response);
|
resolve(response);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
ws.close();
|
|
||||||
canceller.cancelled = true;
|
|
||||||
canceller.error = e;
|
|
||||||
reject(e);
|
reject(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ws.addEventListener('message', handleMessage, { once: true });
|
ws.addEventListener('message', handleMessage, { once: true });
|
||||||
|
ws.addEventListener('close', handleClose, { once: true });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -176,6 +191,8 @@ async function upload(
|
|||||||
onprogress,
|
onprogress,
|
||||||
canceller
|
canceller
|
||||||
) {
|
) {
|
||||||
|
let size = 0;
|
||||||
|
const start = Date.now();
|
||||||
const host = window.location.hostname;
|
const host = window.location.hostname;
|
||||||
const port = window.location.port;
|
const port = window.location.port;
|
||||||
const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
|
const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
|
||||||
@@ -203,31 +220,41 @@ async function upload(
|
|||||||
|
|
||||||
const reader = stream.getReader();
|
const reader = stream.getReader();
|
||||||
let state = await reader.read();
|
let state = await reader.read();
|
||||||
let size = 0;
|
|
||||||
while (!state.done) {
|
while (!state.done) {
|
||||||
const buf = state.value;
|
|
||||||
if (canceller.cancelled) {
|
if (canceller.cancelled) {
|
||||||
throw canceller.error;
|
ws.close();
|
||||||
}
|
}
|
||||||
|
if (ws.readyState !== WebSocket.OPEN) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
const buf = state.value;
|
||||||
ws.send(buf);
|
ws.send(buf);
|
||||||
|
|
||||||
onprogress(size);
|
onprogress(size);
|
||||||
size += buf.length;
|
size += buf.length;
|
||||||
state = await reader.read();
|
state = await reader.read();
|
||||||
while (ws.bufferedAmount > ECE_RECORD_SIZE * 2) {
|
while (
|
||||||
|
ws.bufferedAmount > ECE_RECORD_SIZE * 2 &&
|
||||||
|
ws.readyState === WebSocket.OPEN &&
|
||||||
|
!canceller.cancelled
|
||||||
|
) {
|
||||||
await delay();
|
await delay();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const footer = new Uint8Array([0]);
|
if (ws.readyState === WebSocket.OPEN) {
|
||||||
ws.send(footer);
|
ws.send(new Uint8Array([0])); //EOF
|
||||||
|
}
|
||||||
|
|
||||||
await completedResponse;
|
await completedResponse;
|
||||||
ws.close();
|
uploadInfo.duration = Date.now() - start;
|
||||||
return uploadInfo;
|
return uploadInfo;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
ws.close(4000);
|
e.size = size;
|
||||||
|
e.duration = Date.now() - start;
|
||||||
throw e;
|
throw e;
|
||||||
|
} finally {
|
||||||
|
if (![WebSocket.CLOSED, WebSocket.CLOSING].includes(ws.readyState)) {
|
||||||
|
ws.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,7 +271,6 @@ export function uploadWs(
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
cancel: function() {
|
cancel: function() {
|
||||||
canceller.error = new Error(0);
|
|
||||||
canceller.cancelled = true;
|
canceller.cancelled = true;
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -284,7 +310,7 @@ async function downloadS(id, keychain, signal) {
|
|||||||
return response.body;
|
return response.body;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function tryDownloadStream(id, keychain, signal, tries = 1) {
|
async function tryDownloadStream(id, keychain, signal, tries = 2) {
|
||||||
try {
|
try {
|
||||||
const result = await downloadS(id, keychain, signal);
|
const result = await downloadS(id, keychain, signal);
|
||||||
return result;
|
return result;
|
||||||
@@ -306,18 +332,19 @@ export function downloadStream(id, keychain) {
|
|||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
cancel,
|
cancel,
|
||||||
result: tryDownloadStream(id, keychain, controller.signal, 2)
|
result: tryDownloadStream(id, keychain, controller.signal)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////
|
//////////////////
|
||||||
|
|
||||||
function download(id, keychain, onprogress, canceller) {
|
async function download(id, keychain, onprogress, canceller) {
|
||||||
|
const auth = await keychain.authHeader();
|
||||||
const xhr = new XMLHttpRequest();
|
const xhr = new XMLHttpRequest();
|
||||||
canceller.oncancel = function() {
|
canceller.oncancel = function() {
|
||||||
xhr.abort();
|
xhr.abort();
|
||||||
};
|
};
|
||||||
return new Promise(async function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
xhr.addEventListener('loadend', function() {
|
xhr.addEventListener('loadend', function() {
|
||||||
canceller.oncancel = function() {};
|
canceller.oncancel = function() {};
|
||||||
const authHeader = xhr.getResponseHeader('WWW-Authenticate');
|
const authHeader = xhr.getResponseHeader('WWW-Authenticate');
|
||||||
@@ -337,7 +364,6 @@ function download(id, keychain, onprogress, canceller) {
|
|||||||
onprogress(event.loaded);
|
onprogress(event.loaded);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const auth = await keychain.authHeader();
|
|
||||||
xhr.open('get', getApiUrl(`/api/download/blob/${id}`));
|
xhr.open('get', getApiUrl(`/api/download/blob/${id}`));
|
||||||
xhr.setRequestHeader('Authorization', auth);
|
xhr.setRequestHeader('Authorization', auth);
|
||||||
xhr.responseType = 'blob';
|
xhr.responseType = 'blob';
|
||||||
@@ -346,7 +372,7 @@ function download(id, keychain, onprogress, canceller) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function tryDownload(id, keychain, onprogress, canceller, tries = 1) {
|
async function tryDownload(id, keychain, onprogress, canceller, tries = 2) {
|
||||||
try {
|
try {
|
||||||
const result = await download(id, keychain, onprogress, canceller);
|
const result = await download(id, keychain, onprogress, canceller);
|
||||||
return result;
|
return result;
|
||||||
@@ -367,7 +393,7 @@ export function downloadFile(id, keychain, onprogress) {
|
|||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
cancel,
|
cancel,
|
||||||
result: tryDownload(id, keychain, onprogress, canceller, 2)
|
result: tryDownload(id, keychain, onprogress, canceller)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* global AUTH_CONFIG LOCALE */
|
/* global AUTH_CONFIG */
|
||||||
import { browserName } from './utils';
|
import { browserName, locale } from './utils';
|
||||||
|
|
||||||
async function checkCrypto() {
|
async function checkCrypto() {
|
||||||
try {
|
try {
|
||||||
@@ -76,8 +76,8 @@ async function polyfillStreams() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default async function getCapabilities() {
|
export default async function getCapabilities() {
|
||||||
const serviceWorker =
|
const browser = browserName();
|
||||||
'serviceWorker' in navigator && browserName() !== 'edge';
|
const serviceWorker = 'serviceWorker' in navigator && browser !== 'edge';
|
||||||
let crypto = await checkCrypto();
|
let crypto = await checkCrypto();
|
||||||
const nativeStreams = checkStreams();
|
const nativeStreams = checkStreams();
|
||||||
let polyStreams = false;
|
let polyStreams = false;
|
||||||
@@ -91,19 +91,22 @@ export default async function getCapabilities() {
|
|||||||
account = false;
|
account = false;
|
||||||
}
|
}
|
||||||
const share =
|
const share =
|
||||||
typeof navigator.share === 'function' && LOCALE.startsWith('en'); // en until strings merge
|
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 =
|
||||||
|
browser === 'firefox' && /mobile/i.test(navigator.userAgent);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
account,
|
account,
|
||||||
crypto,
|
crypto,
|
||||||
serviceWorker,
|
serviceWorker,
|
||||||
streamUpload: nativeStreams || polyStreams,
|
streamUpload: nativeStreams || polyStreams,
|
||||||
streamDownload:
|
streamDownload:
|
||||||
nativeStreams && serviceWorker && browserName() !== 'safari',
|
nativeStreams && serviceWorker && browser !== 'safari' && !mobileFirefox,
|
||||||
multifile: nativeStreams || polyStreams,
|
multifile: nativeStreams || polyStreams,
|
||||||
share,
|
share,
|
||||||
standalone
|
standalone
|
||||||
|
|||||||
@@ -2,11 +2,12 @@ import FileSender from './fileSender';
|
|||||||
import FileReceiver from './fileReceiver';
|
import FileReceiver from './fileReceiver';
|
||||||
import { copyToClipboard, delay, openLinksInNewTab, percent } from './utils';
|
import { copyToClipboard, delay, openLinksInNewTab, percent } from './utils';
|
||||||
import * as metrics from './metrics';
|
import * as metrics from './metrics';
|
||||||
import { bytes } from './utils';
|
import { bytes, locale } from './utils';
|
||||||
import okDialog from './ui/okDialog';
|
import okDialog from './ui/okDialog';
|
||||||
import copyDialog from './ui/copyDialog';
|
import copyDialog from './ui/copyDialog';
|
||||||
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';
|
||||||
|
|
||||||
export default function(state, emitter) {
|
export default function(state, emitter) {
|
||||||
let lastRender = 0;
|
let lastRender = 0;
|
||||||
@@ -75,7 +76,7 @@ export default function(state, emitter) {
|
|||||||
state.storage.remove(ownedFile.id);
|
state.storage.remove(ownedFile.id);
|
||||||
await ownedFile.del();
|
await ownedFile.del();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
state.raven.captureException(e);
|
state.sentry.captureException(e);
|
||||||
}
|
}
|
||||||
render();
|
render();
|
||||||
});
|
});
|
||||||
@@ -175,14 +176,17 @@ export default function(state, emitter) {
|
|||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (err.message === '0') {
|
if (err.message === '0') {
|
||||||
//cancelled. do nothing
|
//cancelled. do nothing
|
||||||
const duration = Date.now() - start;
|
metrics.cancelledUpload(archive, err.duration);
|
||||||
metrics.cancelledUpload(archive, duration);
|
|
||||||
render();
|
render();
|
||||||
} else {
|
} else {
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
console.error(err);
|
console.error(err);
|
||||||
state.raven.captureException(err);
|
state.sentry.withScope(scope => {
|
||||||
metrics.stoppedUpload(archive);
|
scope.setExtra('duration', err.duration);
|
||||||
|
scope.setExtra('size', err.size);
|
||||||
|
state.sentry.captureException(err);
|
||||||
|
});
|
||||||
|
metrics.stoppedUpload(archive, err.duration);
|
||||||
emitter.emit('pushState', '/error');
|
emitter.emit('pushState', '/error');
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
@@ -261,7 +265,12 @@ export default function(state, emitter) {
|
|||||||
state.transfer = null;
|
state.transfer = null;
|
||||||
const location = err.message === '404' ? '/404' : '/error';
|
const location = err.message === '404' ? '/404' : '/error';
|
||||||
if (location === '/error') {
|
if (location === '/error') {
|
||||||
state.raven.captureException(err);
|
state.sentry.withScope(scope => {
|
||||||
|
scope.setExtra('duration', err.duration);
|
||||||
|
scope.setExtra('size', err.size);
|
||||||
|
scope.setExtra('progress', err.progress);
|
||||||
|
state.sentry.captureException(err);
|
||||||
|
});
|
||||||
const duration = Date.now() - start;
|
const duration = Date.now() - start;
|
||||||
metrics.stoppedDownload({
|
metrics.stoppedDownload({
|
||||||
size,
|
size,
|
||||||
@@ -281,6 +290,22 @@ export default function(state, emitter) {
|
|||||||
// metrics.copiedLink({ location });
|
// metrics.copiedLink({ location });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
emitter.on('closeModal', () => {
|
||||||
|
if (
|
||||||
|
state.PREFS.surveyUrl &&
|
||||||
|
['copy', 'share'].includes(state.modal.type) &&
|
||||||
|
locale().startsWith('en') &&
|
||||||
|
(state.storage.totalUploads > 1 || state.storage.totalDownloads > 0) &&
|
||||||
|
!state.user.surveyed
|
||||||
|
) {
|
||||||
|
state.user.surveyed = true;
|
||||||
|
state.modal = surveyDialog();
|
||||||
|
} else {
|
||||||
|
state.modal = null;
|
||||||
|
}
|
||||||
|
render();
|
||||||
|
});
|
||||||
|
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
// poll for updates of the upload list
|
// poll for updates of the upload list
|
||||||
if (!state.modal && state.route === '/') {
|
if (!state.modal && state.route === '/') {
|
||||||
|
|||||||
@@ -1,6 +1,22 @@
|
|||||||
import hash from 'string-hash';
|
import hash from 'string-hash';
|
||||||
|
import Account from './ui/account';
|
||||||
|
|
||||||
const experiments = {};
|
const experiments = {
|
||||||
|
signin_button_color: {
|
||||||
|
eligible: function() {
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
variant: function() {
|
||||||
|
return ['white-blue', 'blue', 'white-violet', 'violet'][
|
||||||
|
Math.floor(Math.random() * 4)
|
||||||
|
];
|
||||||
|
},
|
||||||
|
run: function(variant, state) {
|
||||||
|
const account = state.cache(Account, 'account');
|
||||||
|
account.buttonClass = variant;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
//Returns a number between 0 and 1
|
//Returns a number between 0 and 1
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
@@ -25,23 +41,12 @@ export default function initialize(state, emitter) {
|
|||||||
xp.run(+state.query.v, state, emitter);
|
xp.run(+state.query.v, state, emitter);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
const enrolled = state.storage.enrolled;
|
||||||
if (!state.storage.get('testpilot_ga__cid')) {
|
|
||||||
// first ever visit. check again after cid is assigned.
|
|
||||||
emitter.on('DOMContentLoaded', () => {
|
|
||||||
checkExperiments(state, emitter);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
const enrolled = state.storage.enrolled.filter(([id, variant]) => {
|
|
||||||
const xp = experiments[id];
|
|
||||||
if (xp) {
|
|
||||||
xp.run(variant, state, emitter);
|
|
||||||
}
|
|
||||||
return !!xp;
|
|
||||||
});
|
|
||||||
// single experiment per session for now
|
// single experiment per session for now
|
||||||
if (enrolled.length === 0) {
|
const id = Object.keys(enrolled)[0];
|
||||||
|
if (Object.keys(experiments).includes(id)) {
|
||||||
|
experiments[id].run(enrolled[id], state, emitter);
|
||||||
|
} else {
|
||||||
checkExperiments(state, emitter);
|
checkExperiments(state, emitter);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ export default class FileReceiver extends Nanobus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async downloadStream(noSave = false) {
|
async downloadStream(noSave = false) {
|
||||||
|
const start = Date.now();
|
||||||
const onprogress = p => {
|
const onprogress = p => {
|
||||||
this.progress = [p, this.fileInfo.size];
|
this.progress = [p, this.fileInfo.size];
|
||||||
this.emit('progress');
|
this.emit('progress');
|
||||||
@@ -153,9 +154,7 @@ export default class FileReceiver extends Nanobus {
|
|||||||
const downloadPath = `/api/download/${this.fileInfo.id}`;
|
const downloadPath = `/api/download/${this.fileInfo.id}`;
|
||||||
let downloadUrl = getApiUrl(downloadPath);
|
let downloadUrl = getApiUrl(downloadPath);
|
||||||
if (downloadUrl === downloadPath) {
|
if (downloadUrl === downloadPath) {
|
||||||
downloadUrl = `${location.protocol}//${location.host}/api/download/${
|
downloadUrl = `${location.protocol}//${location.host}${downloadPath}`;
|
||||||
this.fileInfo.id
|
|
||||||
}`;
|
|
||||||
}
|
}
|
||||||
const a = document.createElement('a');
|
const a = document.createElement('a');
|
||||||
a.href = downloadUrl;
|
a.href = downloadUrl;
|
||||||
@@ -164,11 +163,29 @@ export default class FileReceiver extends Nanobus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let prog = 0;
|
let prog = 0;
|
||||||
|
let hangs = 0;
|
||||||
while (prog < this.fileInfo.size) {
|
while (prog < this.fileInfo.size) {
|
||||||
const msg = await this.sendMessageToSw({
|
const msg = await this.sendMessageToSw({
|
||||||
request: 'progress',
|
request: 'progress',
|
||||||
id: this.fileInfo.id
|
id: this.fileInfo.id
|
||||||
});
|
});
|
||||||
|
if (msg.progress === prog) {
|
||||||
|
hangs++;
|
||||||
|
} else {
|
||||||
|
hangs = 0;
|
||||||
|
}
|
||||||
|
if (hangs > 30) {
|
||||||
|
// TODO: On Chrome we don't get a cancel
|
||||||
|
// signal so one is indistinguishable from
|
||||||
|
// a hang. We may be able to detect
|
||||||
|
// which end is hung in the service worker
|
||||||
|
// to improve on this.
|
||||||
|
const e = new Error('hung download');
|
||||||
|
e.duration = Date.now() - start;
|
||||||
|
e.size = this.fileInfo.size;
|
||||||
|
e.progress = prog;
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
prog = msg.progress;
|
prog = msg.progress;
|
||||||
onprogress(prog);
|
onprogress(prog);
|
||||||
await delay(1000);
|
await delay(1000);
|
||||||
|
|||||||
@@ -44,7 +44,6 @@ export default class FileSender extends Nanobus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async upload(archive, bearerToken) {
|
async upload(archive, bearerToken) {
|
||||||
const start = Date.now();
|
|
||||||
if (this.cancelled) {
|
if (this.cancelled) {
|
||||||
throw new Error(0);
|
throw new Error(0);
|
||||||
}
|
}
|
||||||
@@ -76,7 +75,6 @@ export default class FileSender extends Nanobus {
|
|||||||
this.emit('progress'); // HACK to kick MS Edge
|
this.emit('progress'); // HACK to kick MS Edge
|
||||||
try {
|
try {
|
||||||
const result = await this.uploadRequest.result;
|
const result = await this.uploadRequest.result;
|
||||||
const time = Date.now() - start;
|
|
||||||
this.msg = 'notifyUploadEncryptDone';
|
this.msg = 'notifyUploadEncryptDone';
|
||||||
this.uploadRequest = null;
|
this.uploadRequest = null;
|
||||||
this.progress = [1, 1];
|
this.progress = [1, 1];
|
||||||
@@ -87,8 +85,8 @@ export default class FileSender extends Nanobus {
|
|||||||
name: archive.name,
|
name: archive.name,
|
||||||
size: archive.size,
|
size: archive.size,
|
||||||
manifest: archive.manifest,
|
manifest: archive.manifest,
|
||||||
time: time,
|
time: result.duration,
|
||||||
speed: archive.size / (time / 1000),
|
speed: archive.size / (result.duration / 1000),
|
||||||
createdAt: Date.now(),
|
createdAt: Date.now(),
|
||||||
expiresAt: Date.now() + archive.timeLimit * 1000,
|
expiresAt: Date.now() + archive.timeLimit * 1000,
|
||||||
secretKey: secretKey,
|
secretKey: secretKey,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { FluentBundle } from 'fluent';
|
import { FluentBundle } from '@fluent/bundle';
|
||||||
|
|
||||||
function makeBundle(locale, ftl) {
|
function makeBundle(locale, ftl) {
|
||||||
const bundle = new FluentBundle(locale, { useIsolating: false });
|
const bundle = new FluentBundle(locale, { useIsolating: false });
|
||||||
@@ -10,9 +10,9 @@ export async function getTranslator(locale) {
|
|||||||
const bundles = [];
|
const bundles = [];
|
||||||
const { default: en } = await import('../public/locales/en-US/send.ftl');
|
const { default: en } = await import('../public/locales/en-US/send.ftl');
|
||||||
if (locale !== 'en-US') {
|
if (locale !== 'en-US') {
|
||||||
const {
|
const { default: ftl } = await import(
|
||||||
default: ftl
|
`../public/locales/${locale}/send.ftl`
|
||||||
} = await import(`../public/locales/${locale}/send.ftl`);
|
);
|
||||||
bundles.push(makeBundle(locale, ftl));
|
bundles.push(makeBundle(locale, ftl));
|
||||||
}
|
}
|
||||||
bundles.push(makeBundle('en-US', en));
|
bundles.push(makeBundle('en-US', en));
|
||||||
|
|||||||
100
app/main.css
100
app/main.css
@@ -1,4 +1,9 @@
|
|||||||
@tailwind preflight;
|
@tailwind base;
|
||||||
|
|
||||||
|
html {
|
||||||
|
line-height: 1.15;
|
||||||
|
}
|
||||||
|
|
||||||
@tailwind components;
|
@tailwind components;
|
||||||
|
|
||||||
:not(input) {
|
:not(input) {
|
||||||
@@ -8,6 +13,14 @@
|
|||||||
user-select: none;
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--violet-gradient: linear-gradient(
|
||||||
|
-180deg,
|
||||||
|
rgba(144, 89, 255, 0.8) 0%,
|
||||||
|
rgba(144, 89, 255, 0.4) 100%
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@@ -31,6 +44,7 @@ body {
|
|||||||
@apply cursor-pointer;
|
@apply cursor-pointer;
|
||||||
@apply py-4;
|
@apply py-4;
|
||||||
@apply px-6;
|
@apply px-6;
|
||||||
|
@apply font-semibold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn:hover {
|
.btn:hover {
|
||||||
@@ -139,6 +153,11 @@ footer li:hover {
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.main-header img {
|
||||||
|
height: 32px;
|
||||||
|
width: 170px;
|
||||||
|
}
|
||||||
|
|
||||||
.intro {
|
.intro {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
height: unset;
|
height: unset;
|
||||||
@@ -159,7 +178,7 @@ footer li:hover {
|
|||||||
.mozilla-logo {
|
.mozilla-logo {
|
||||||
background-image: url('../assets/mozilla-logo.svg');
|
background-image: url('../assets/mozilla-logo.svg');
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-size: 100px, 32px;
|
background-size: 100px, 48px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-indent: 120%;
|
text-indent: 120%;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
@@ -246,6 +265,11 @@ select {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@screen md {
|
@screen md {
|
||||||
|
.main-header img {
|
||||||
|
height: 48px;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
.intro {
|
.intro {
|
||||||
max-width: unset;
|
max-width: unset;
|
||||||
height: unset;
|
height: unset;
|
||||||
@@ -261,7 +285,7 @@ select {
|
|||||||
@apply py-8;
|
@apply py-8;
|
||||||
|
|
||||||
min-height: 36rem;
|
min-height: 36rem;
|
||||||
max-height: 40rem;
|
max-height: 42rem;
|
||||||
width: calc(100% - 3rem);
|
width: calc(100% - 3rem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -274,8 +298,9 @@ select {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.shadow-big {
|
.shadow-big {
|
||||||
box-shadow: 0 0 32px 0 rgba(12, 12, 13, 0.1),
|
box-shadow: 0 12px 18px 2px rgba(34, 0, 51, 0.04),
|
||||||
0 2px 16px 0 rgba(12, 12, 13, 0.05);
|
0 6px 22px 4px rgba(7, 48, 114, 0.12),
|
||||||
|
0 6px 10px -4px rgba(14, 13, 26, 0.12);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,4 +312,69 @@ select {
|
|||||||
|
|
||||||
.word-break-all {
|
.word-break-all {
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
|
line-break: anywhere;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.signin {
|
||||||
|
backface-visibility: hidden;
|
||||||
|
border-radius: 6px;
|
||||||
|
transition-property: transform, background-color;
|
||||||
|
transition-duration: 250ms;
|
||||||
|
transition-timing-function: cubic-bezier(0.07, 0.95, 0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.signin:hover,
|
||||||
|
.signin:focus {
|
||||||
|
@apply shadow-btn;
|
||||||
|
|
||||||
|
transform: scale(1.0625);
|
||||||
|
}
|
||||||
|
|
||||||
|
.signin:hover:active {
|
||||||
|
transform: scale(0.9375);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* begin signin button color experiment */
|
||||||
|
|
||||||
|
.white-blue {
|
||||||
|
@apply border-blue-dark;
|
||||||
|
@apply border-2;
|
||||||
|
@apply text-blue-dark;
|
||||||
|
}
|
||||||
|
|
||||||
|
.white-blue:hover,
|
||||||
|
.white-blue:focus {
|
||||||
|
@apply bg-blue-dark;
|
||||||
|
@apply text-white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.blue {
|
||||||
|
@apply bg-blue-dark;
|
||||||
|
@apply text-white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.white-violet {
|
||||||
|
@apply border-violet;
|
||||||
|
@apply border-2;
|
||||||
|
@apply text-violet;
|
||||||
|
}
|
||||||
|
|
||||||
|
.white-violet:hover,
|
||||||
|
.white-violet:focus {
|
||||||
|
@apply bg-violet;
|
||||||
|
@apply text-white;
|
||||||
|
|
||||||
|
background-image: var(--violet-gradient);
|
||||||
|
}
|
||||||
|
|
||||||
|
.violet {
|
||||||
|
@apply bg-violet;
|
||||||
|
@apply text-white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.violet:hover,
|
||||||
|
.violet:focus {
|
||||||
|
background-image: var(--violet-gradient);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* end signin button color experiment */
|
||||||
|
|||||||
23
app/main.js
23
app/main.js
@@ -1,7 +1,7 @@
|
|||||||
/* global DEFAULTS LIMITS LOCALE */
|
/* global DEFAULTS LIMITS PREFS */
|
||||||
import 'core-js';
|
import 'core-js';
|
||||||
import 'fast-text-encoding'; // MS Edge support
|
import 'fast-text-encoding'; // MS Edge support
|
||||||
import 'fluent-intl-polyfill';
|
import 'intl-pluralrules';
|
||||||
import choo from 'choo';
|
import choo from 'choo';
|
||||||
import nanotiming from 'nanotiming';
|
import nanotiming from 'nanotiming';
|
||||||
import routes from './routes';
|
import routes from './routes';
|
||||||
@@ -12,15 +12,15 @@ import pasteManager from './pasteManager';
|
|||||||
import storage from './storage';
|
import storage from './storage';
|
||||||
import metrics from './metrics';
|
import metrics from './metrics';
|
||||||
import experiments from './experiments';
|
import experiments from './experiments';
|
||||||
import Raven from 'raven-js';
|
import * as Sentry from '@sentry/browser';
|
||||||
import './main.css';
|
import './main.css';
|
||||||
import User from './user';
|
import User from './user';
|
||||||
import { getTranslator } from './locale';
|
import { getTranslator } from './locale';
|
||||||
import Archive from './archive';
|
import Archive from './archive';
|
||||||
import { setTranslate } from './utils';
|
import { setTranslate, locale } from './utils';
|
||||||
|
|
||||||
if (navigator.doNotTrack !== '1' && window.RAVEN_CONFIG) {
|
if (navigator.doNotTrack !== '1' && window.SENTRY_CONFIG) {
|
||||||
Raven.config(window.SENTRY_ID, window.RAVEN_CONFIG).install();
|
Sentry.init(window.SENTRY_CONFIG);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'production') {
|
if (process.env.NODE_ENV === 'production') {
|
||||||
@@ -45,27 +45,30 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const translate = await getTranslator(LOCALE);
|
const translate = await getTranslator(locale());
|
||||||
setTranslate(translate);
|
setTranslate(translate);
|
||||||
|
// eslint-disable-next-line require-atomic-updates
|
||||||
window.initialState = {
|
window.initialState = {
|
||||||
LIMITS,
|
LIMITS,
|
||||||
DEFAULTS,
|
DEFAULTS,
|
||||||
|
PREFS,
|
||||||
archive: new Archive([], DEFAULTS.EXPIRE_SECONDS),
|
archive: new Archive([], DEFAULTS.EXPIRE_SECONDS),
|
||||||
capabilities,
|
capabilities,
|
||||||
translate,
|
translate,
|
||||||
storage,
|
storage,
|
||||||
raven: Raven,
|
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
|
||||||
};
|
};
|
||||||
|
|
||||||
const app = routes(choo());
|
const app = routes(choo({ hash: true }));
|
||||||
|
// eslint-disable-next-line require-atomic-updates
|
||||||
window.app = app;
|
window.app = app;
|
||||||
|
app.use(experiments);
|
||||||
app.use(metrics);
|
app.use(metrics);
|
||||||
app.use(controller);
|
app.use(controller);
|
||||||
app.use(dragManager);
|
app.use(dragManager);
|
||||||
app.use(experiments);
|
|
||||||
app.use(pasteManager);
|
app.use(pasteManager);
|
||||||
app.mount('body');
|
app.mount('body');
|
||||||
})();
|
})();
|
||||||
|
|||||||
@@ -1,21 +1,23 @@
|
|||||||
import storage from './storage';
|
import storage from './storage';
|
||||||
import { platform } from './utils';
|
import { platform, locale } from './utils';
|
||||||
import { sendMetrics } from './api';
|
import { sendMetrics } from './api';
|
||||||
|
|
||||||
let appState = null;
|
let appState = null;
|
||||||
// let experiment = null;
|
let experiment = null;
|
||||||
const HOUR = 1000 * 60 * 60;
|
const HOUR = 1000 * 60 * 60;
|
||||||
const events = [];
|
const events = [];
|
||||||
let session_id = Date.now();
|
let session_id = Date.now();
|
||||||
const lang = document.querySelector('html').lang;
|
const lang = locale();
|
||||||
|
|
||||||
export default function initialize(state, emitter) {
|
export default function initialize(state, emitter) {
|
||||||
appState = state;
|
appState = state;
|
||||||
if (!appState.user.firstAction) {
|
|
||||||
appState.user.firstAction = appState.route === '/' ? 'upload' : 'download';
|
|
||||||
}
|
|
||||||
emitter.on('DOMContentLoaded', () => {
|
emitter.on('DOMContentLoaded', () => {
|
||||||
// experiment = storage.enrolled[0];
|
experiment = storage.enrolled;
|
||||||
|
if (!appState.user.firstAction) {
|
||||||
|
appState.user.firstAction =
|
||||||
|
appState.route === '/' ? 'upload' : 'download';
|
||||||
|
}
|
||||||
const query = appState.query;
|
const query = appState.query;
|
||||||
addEvent('client_visit', {
|
addEvent('client_visit', {
|
||||||
entrypoint: appState.route === '/' ? 'upload' : 'download',
|
entrypoint: appState.route === '/' ? 'upload' : 'download',
|
||||||
@@ -59,6 +61,11 @@ function submitEvents() {
|
|||||||
async function addEvent(event_type, event_properties) {
|
async function addEvent(event_type, event_properties) {
|
||||||
const user_id = await appState.user.metricId();
|
const user_id = await appState.user.metricId();
|
||||||
const device_id = await appState.user.deviceId();
|
const device_id = await appState.user.deviceId();
|
||||||
|
const ab_id = Object.keys(experiment)[0];
|
||||||
|
if (ab_id) {
|
||||||
|
event_properties.experiment = ab_id;
|
||||||
|
event_properties.variant = experiment[ab_id];
|
||||||
|
}
|
||||||
events.push({
|
events.push({
|
||||||
device_id,
|
device_id,
|
||||||
event_properties,
|
event_properties,
|
||||||
@@ -100,9 +107,10 @@ function completedUpload(archive, duration) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function stoppedUpload(archive) {
|
function stoppedUpload(archive, duration = 0) {
|
||||||
return addEvent('client_upload', {
|
return addEvent('client_upload', {
|
||||||
download_limit: archive.dlimit,
|
download_limit: archive.dlimit,
|
||||||
|
duration: sizeOrder(duration),
|
||||||
file_count: archive.numFiles,
|
file_count: archive.numFiles,
|
||||||
password_protected: !!archive.password,
|
password_protected: !!archive.password,
|
||||||
size: sizeOrder(archive.size),
|
size: sizeOrder(archive.size),
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ const choo = require('choo');
|
|||||||
const download = require('./ui/download');
|
const download = require('./ui/download');
|
||||||
const body = require('./ui/body');
|
const body = require('./ui/body');
|
||||||
|
|
||||||
module.exports = function(app = choo()) {
|
module.exports = function(app = choo({ hash: true })) {
|
||||||
app.route('/', body(require('./ui/home')));
|
app.route('/', body(require('./ui/home')));
|
||||||
app.route('/download/:id', body(download));
|
app.route('/download/:id', body(download));
|
||||||
app.route('/download/:id/:key', body(download));
|
app.route('/download/:id/:key', body(download));
|
||||||
@@ -13,6 +13,7 @@ module.exports = function(app = choo()) {
|
|||||||
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('*', body(require('./ui/notFound')));
|
app.route('*', body(require('./ui/notFound')));
|
||||||
return app;
|
return app;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -11,13 +11,14 @@ 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)$/;
|
||||||
const DOWNLOAD_URL = /\/api\/download\/([A-Fa-f0-9]{4,})/;
|
const DOWNLOAD_URL = /\/api\/download\/([A-Fa-f0-9]{4,})/;
|
||||||
|
const FONT = /\.woff2?$/;
|
||||||
|
|
||||||
self.addEventListener('install', event => {
|
self.addEventListener('install', event => {
|
||||||
event.waitUntil(precache());
|
event.waitUntil(precache());
|
||||||
});
|
});
|
||||||
|
|
||||||
self.addEventListener('activate', event => {
|
self.addEventListener('activate', event => {
|
||||||
event.waitUntil(self.clients.claim());
|
event.waitUntil(self.clients.claim().then(cleanCache));
|
||||||
});
|
});
|
||||||
|
|
||||||
async function decryptStream(id) {
|
async function decryptStream(id) {
|
||||||
@@ -83,16 +84,23 @@ async function decryptStream(id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function precache() {
|
async function precache() {
|
||||||
|
const cache = await caches.open(version);
|
||||||
|
const images = assets.match(IMAGES);
|
||||||
|
await cache.addAll(images);
|
||||||
|
return self.skipWaiting();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function cleanCache() {
|
||||||
const oldCaches = await caches.keys();
|
const oldCaches = await caches.keys();
|
||||||
for (const c of oldCaches) {
|
for (const c of oldCaches) {
|
||||||
if (c !== version) {
|
if (c !== version) {
|
||||||
await caches.delete(c);
|
await caches.delete(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const cache = await caches.open(version);
|
}
|
||||||
const images = assets.match(IMAGES);
|
|
||||||
await cache.addAll(images);
|
function cacheable(url) {
|
||||||
return self.skipWaiting();
|
return VERSIONED_ASSET.test(url) || FONT.test(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function cachedOrFetched(req) {
|
async function cachedOrFetched(req) {
|
||||||
@@ -102,7 +110,7 @@ async function cachedOrFetched(req) {
|
|||||||
return cached;
|
return cached;
|
||||||
}
|
}
|
||||||
const fetched = await fetch(req);
|
const fetched = await fetch(req);
|
||||||
if (fetched.ok && VERSIONED_ASSET.test(req.url)) {
|
if (fetched.ok && cacheable(req.url)) {
|
||||||
cache.put(req, fetched.clone());
|
cache.put(req, fetched.clone());
|
||||||
}
|
}
|
||||||
return fetched;
|
return fetched;
|
||||||
@@ -115,7 +123,7 @@ self.onfetch = event => {
|
|||||||
const dlmatch = DOWNLOAD_URL.exec(url.pathname);
|
const dlmatch = DOWNLOAD_URL.exec(url.pathname);
|
||||||
if (dlmatch) {
|
if (dlmatch) {
|
||||||
event.respondWith(decryptStream(dlmatch[1]));
|
event.respondWith(decryptStream(dlmatch[1]));
|
||||||
} else if (VERSIONED_ASSET.test(url.pathname)) {
|
} else if (cacheable(url.pathname)) {
|
||||||
event.respondWith(cachedOrFetched(req));
|
event.respondWith(cachedOrFetched(req));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -86,16 +86,13 @@ class Storage {
|
|||||||
this.engine.setItem('referrer', str);
|
this.engine.setItem('referrer', str);
|
||||||
}
|
}
|
||||||
get enrolled() {
|
get enrolled() {
|
||||||
return JSON.parse(this.engine.getItem('experiments') || '[]');
|
return JSON.parse(this.engine.getItem('ab_experiments') || '{}');
|
||||||
}
|
}
|
||||||
|
|
||||||
enroll(id, variant) {
|
enroll(id, variant) {
|
||||||
const enrolled = this.enrolled;
|
const enrolled = {};
|
||||||
// eslint-disable-next-line no-unused-vars
|
enrolled[id] = variant;
|
||||||
if (!enrolled.find(([i, v]) => i === id)) {
|
this.engine.setItem('ab_experiments', JSON.stringify(enrolled));
|
||||||
enrolled.push([id, variant]);
|
|
||||||
this.engine.setItem('experiments', JSON.stringify(enrolled));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get files() {
|
get files() {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* global ReadableStream TransformStream */
|
/* global TransformStream */
|
||||||
|
|
||||||
export function transformStream(readable, transformer, oncancel) {
|
export function transformStream(readable, transformer, oncancel) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ class Account extends Component {
|
|||||||
this.emit = emit;
|
this.emit = emit;
|
||||||
this.enabled = state.capabilities.account;
|
this.enabled = state.capabilities.account;
|
||||||
this.local = state.components[name] = {};
|
this.local = state.components[name] = {};
|
||||||
this.setState();
|
this.buttonClass = '';
|
||||||
|
this.setLocal();
|
||||||
}
|
}
|
||||||
|
|
||||||
avatarClick(event) {
|
avatarClick(event) {
|
||||||
@@ -38,7 +39,7 @@ class Account extends Component {
|
|||||||
return this.local.loggedIn !== this.state.user.loggedIn;
|
return this.local.loggedIn !== this.state.user.loggedIn;
|
||||||
}
|
}
|
||||||
|
|
||||||
setState() {
|
setLocal() {
|
||||||
const changed = this.changed();
|
const changed = this.changed();
|
||||||
if (changed) {
|
if (changed) {
|
||||||
this.local.loggedIn = this.state.user.loggedIn;
|
this.local.loggedIn = this.state.user.loggedIn;
|
||||||
@@ -47,7 +48,7 @@ class Account extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
update() {
|
update() {
|
||||||
return this.setState();
|
return this.setLocal();
|
||||||
}
|
}
|
||||||
|
|
||||||
createElement() {
|
createElement() {
|
||||||
@@ -58,15 +59,17 @@ class Account extends Component {
|
|||||||
}
|
}
|
||||||
const user = this.state.user;
|
const user = this.state.user;
|
||||||
const translate = this.state.translate;
|
const translate = this.state.translate;
|
||||||
|
this.setLocal();
|
||||||
if (!this.local.loggedIn) {
|
if (!this.local.loggedIn) {
|
||||||
return html`
|
return html`
|
||||||
<send-account>
|
<send-account>
|
||||||
<button
|
<button
|
||||||
class="p-2 md:p-4 border rounded-lg text-blue-dark border-blue-dark hover:text-white hover:bg-blue-dark focus:outline"
|
class="px-4 py-2 md:px-8 md:py-4 focus:outline signin ${this
|
||||||
|
.buttonClass}"
|
||||||
onclick="${e => this.login(e)}"
|
onclick="${e => this.login(e)}"
|
||||||
title="${translate('signInButton')}"
|
title="${translate('signInOnlyButton')}"
|
||||||
>
|
>
|
||||||
${translate('signInButton')}
|
${translate('signInOnlyButton')}
|
||||||
</button>
|
</button>
|
||||||
</send-account>
|
</send-account>
|
||||||
`;
|
`;
|
||||||
@@ -82,7 +85,7 @@ class Account extends Component {
|
|||||||
/>
|
/>
|
||||||
<ul
|
<ul
|
||||||
id="accountMenu"
|
id="accountMenu"
|
||||||
class="invisible list-reset absolute pin-t pin-r 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"
|
||||||
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-dark">${user.email}</li>
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ 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-no-shrink" src="${assets.get('blue_file.svg')}"/>
|
<img class="mr-3 flex-shrink-0" src="${assets.get('blue_file.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(
|
||||||
@@ -155,7 +155,7 @@ function archiveDetails(translate, archive) {
|
|||||||
num: archive.manifest.files.length
|
num: archive.manifest.files.length
|
||||||
})}
|
})}
|
||||||
</summary>
|
</summary>
|
||||||
${list(archive.manifest.files.map(f => fileInfo(f)), 'list-reset')}
|
${list(archive.manifest.files.map(f => fileInfo(f)))}
|
||||||
</details>
|
</details>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
@@ -213,7 +213,7 @@ module.exports = function(state, emit, archive) {
|
|||||||
html`
|
html`
|
||||||
<input
|
<input
|
||||||
type="image"
|
type="image"
|
||||||
class="self-start flex-no-shrink text-white hover:opacity-75 focus:outline"
|
class="self-start flex-shrink-0 text-white hover:opacity-75 focus:outline"
|
||||||
alt="${state.translate('deleteButtonHover')}"
|
alt="${state.translate('deleteButtonHover')}"
|
||||||
title="${state.translate('deleteButtonHover')}"
|
title="${state.translate('deleteButtonHover')}"
|
||||||
src="${assets.get('close-16.svg')}"
|
src="${assets.get('close-16.svg')}"
|
||||||
@@ -256,9 +256,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 "${
|
text: `Download "${archive.name}" with Firefox Send: simple, safe file sharing`,
|
||||||
archive.name
|
|
||||||
}" with Firefox Send: simple, safe file sharing`,
|
|
||||||
//state.translate('shareMessage', { name }),
|
//state.translate('shareMessage', { name }),
|
||||||
url: archive.url
|
url: archive.url
|
||||||
});
|
});
|
||||||
@@ -278,11 +276,11 @@ module.exports.wip = function(state, emit) {
|
|||||||
.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 list-reset overflow-y-auto px-6 py-4 md:h-full md:max-h-half-screen',
|
'flex-shrink bg-grey-lightest rounded-t overflow-y-auto px-6 py-4 md:h-full md:max-h-half-screen',
|
||||||
'bg-white px-2 my-2 shadow-light rounded'
|
'bg-white px-2 my-2 shadow-light rounded'
|
||||||
)}
|
)}
|
||||||
<div
|
<div
|
||||||
class="flex-no-shrink 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-lightest rounded-b mb-1 font-medium"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
id="file-upload"
|
id="file-upload"
|
||||||
@@ -315,7 +313,7 @@ module.exports.wip = function(state, emit) {
|
|||||||
${expiryOptions(state, emit)} ${password(state, emit)}
|
${expiryOptions(state, emit)} ${password(state, emit)}
|
||||||
<button
|
<button
|
||||||
id="upload-btn"
|
id="upload-btn"
|
||||||
class="btn rounded-lg flex-no-shrink focus:outline"
|
class="btn rounded-lg flex-shrink-0 focus:outline"
|
||||||
title="${state.translate('uploadButton')}"
|
title="${state.translate('uploadButton')}"
|
||||||
onclick="${upload}"
|
onclick="${upload}"
|
||||||
>
|
>
|
||||||
@@ -430,7 +428,7 @@ 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 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"
|
||||||
onclick="${e => {
|
onclick="${e => {
|
||||||
if (e.target.tagName !== 'LABEL') {
|
if (e.target.tagName !== 'LABEL') {
|
||||||
document.getElementById('file-upload').click();
|
document.getElementById('file-upload').click();
|
||||||
@@ -448,7 +446,7 @@ module.exports.empty = function(state, emit) {
|
|||||||
</div>
|
</div>
|
||||||
<input
|
<input
|
||||||
id="file-upload"
|
id="file-upload"
|
||||||
class="opacity-0 w-0 h-0 appearance-none absolute"
|
class="opacity-0 w-0 h-0 appearance-none absolute overflow-hidden"
|
||||||
type="file"
|
type="file"
|
||||||
multiple
|
multiple
|
||||||
onfocus="${focus}"
|
onfocus="${focus}"
|
||||||
@@ -509,7 +507,7 @@ module.exports.preview = function(state, emit) {
|
|||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
id="download-btn"
|
id="download-btn"
|
||||||
class="btn rounded-lg mt-4 w-full flex-no-shrink focus:outline"
|
class="btn rounded-lg mt-4 w-full flex-shrink-0 focus:outline"
|
||||||
title="${state.translate('downloadButtonLabel')}"
|
title="${state.translate('downloadButtonLabel')}"
|
||||||
onclick=${download}
|
onclick=${download}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ module.exports = function() {
|
|||||||
return html`
|
return html`
|
||||||
<main class="main">
|
<main class="main">
|
||||||
<section
|
<section
|
||||||
class="h-full w-full p-6 md:flex md:flex-row md:rounded-lg md:shadow-big"
|
class="h-full w-full p-6 md:p-8 md:flex md:flex-row md:rounded-xl md:shadow-big"
|
||||||
>
|
>
|
||||||
<div class="md:mr-6 md:w-1/2 w-full"></div>
|
<div class="md:mr-6 md:w-1/2 w-full"></div>
|
||||||
<div class="md:w-1/2 mt-6 md:mt-0 w-full"></div>
|
<div class="md:w-1/2 mt-6 md:mt-0 w-full"></div>
|
||||||
|
|||||||
@@ -8,10 +8,7 @@ function banner(state) {
|
|||||||
return; // server side
|
return; // server side
|
||||||
}
|
}
|
||||||
const show =
|
const show =
|
||||||
!state.capabilities.standalone &&
|
!state.capabilities.standalone && !state.route.startsWith('/unsupported/');
|
||||||
!/firefox/i.test(navigator.userAgent) &&
|
|
||||||
document.querySelector('html').lang.startsWith('en') &&
|
|
||||||
!state.route.startsWith('/unsupported/');
|
|
||||||
if (show) {
|
if (show) {
|
||||||
return state.cache(Promo, 'promo').render();
|
return state.cache(Promo, 'promo').render();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,12 +2,12 @@ const html = require('choo/html');
|
|||||||
const { copyToClipboard } = require('../utils');
|
const { copyToClipboard } = require('../utils');
|
||||||
|
|
||||||
module.exports = function(name, url) {
|
module.exports = function(name, url) {
|
||||||
return function(state, emit, close) {
|
const dialog = function(state, emit, close) {
|
||||||
return html`
|
return html`
|
||||||
<send-copy-dialog
|
<send-copy-dialog
|
||||||
class="flex flex-col items-center text-center p-4 max-w-sm m-auto"
|
class="flex flex-col items-center text-center p-4 max-w-sm m-auto"
|
||||||
>
|
>
|
||||||
<h1 class="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-darkest word-break-all">
|
||||||
@@ -22,7 +22,7 @@ module.exports = function(name, url) {
|
|||||||
readonly="true"
|
readonly="true"
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
class="btn rounded-lg w-full flex-no-shrink focus:outline"
|
class="btn rounded-lg w-full flex-shrink-0 focus:outline"
|
||||||
onclick="${copy}"
|
onclick="${copy}"
|
||||||
title="${state.translate('copyLinkButton')}"
|
title="${state.translate('copyLinkButton')}"
|
||||||
>
|
>
|
||||||
@@ -45,4 +45,6 @@ module.exports = function(name, url) {
|
|||||||
setTimeout(close, 1000);
|
setTimeout(close, 1000);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
dialog.type = 'copy';
|
||||||
|
return dialog;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -22,7 +22,9 @@ function downloading(state, emit) {
|
|||||||
<div
|
<div
|
||||||
class="flex flex-col w-full h-full items-center md:justify-center md:-mt-8"
|
class="flex flex-col w-full h-full items-center md:justify-center md:-mt-8"
|
||||||
>
|
>
|
||||||
<h1 class="mb-4">${state.translate('downloadingTitle')}</h1>
|
<h1 class="text-3xl font-bold mb-4">
|
||||||
|
${state.translate('downloadingTitle')}
|
||||||
|
</h1>
|
||||||
${archiveTile.downloading(state, emit)}
|
${archiveTile.downloading(state, emit)}
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
@@ -36,7 +38,9 @@ function preview(state, emit) {
|
|||||||
<div
|
<div
|
||||||
class="flex flex-col w-full max-w-md h-full mx-auto items-center justify-center"
|
class="flex flex-col w-full max-w-md h-full mx-auto items-center justify-center"
|
||||||
>
|
>
|
||||||
<h1 class="mb-4">${state.translate('downloadTitle')}</h1>
|
<h1 class="text-3xl font-bold mb-4">
|
||||||
|
${state.translate('downloadTitle')}
|
||||||
|
</h1>
|
||||||
<p class="w-full text-grey-darkest text-center leading-normal">
|
<p class="w-full text-grey-darkest text-center leading-normal">
|
||||||
${state.translate('downloadDescription')}
|
${state.translate('downloadDescription')}
|
||||||
</p>
|
</p>
|
||||||
@@ -76,7 +80,9 @@ module.exports = function(state, emit) {
|
|||||||
return html`
|
return html`
|
||||||
<main class="main">
|
<main class="main">
|
||||||
${state.modal && modal(state, emit)}
|
${state.modal && modal(state, emit)}
|
||||||
<section class="relative h-full w-full p-6 md:rounded-lg md:shadow-big">
|
<section
|
||||||
|
class="relative h-full w-full p-6 md:p-8 md:rounded-xl md:shadow-big"
|
||||||
|
>
|
||||||
${content}
|
${content}
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ module.exports = function(state) {
|
|||||||
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"
|
||||||
>
|
>
|
||||||
<h1 class="text-center 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-12 h-48" />
|
||||||
|
|||||||
@@ -8,7 +8,9 @@ module.exports = function(state, emit) {
|
|||||||
<div
|
<div
|
||||||
class="h-full w-full flex flex-col items-center justify-center bg-white py-8 max-w-md mx-auto"
|
class="h-full w-full flex flex-col items-center justify-center bg-white py-8 max-w-md mx-auto"
|
||||||
>
|
>
|
||||||
<h1 class="mb-4">${state.translate('downloadTitle')}</h1>
|
<h1 class="text-3xl font-bold mb-4">
|
||||||
|
${state.translate('downloadTitle')}
|
||||||
|
</h1>
|
||||||
<p class="w-full mb-4 text-center text-grey-darkest leading-normal">
|
<p class="w-full mb-4 text-center text-grey-darkest leading-normal">
|
||||||
${state.translate('downloadDescription')}
|
${state.translate('downloadDescription')}
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ 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 h-full w-full p-6 overflow-hidden md:rounded-lg md:shadow-big"
|
class="flex flex-col items-center justify-center h-full w-full p-6 md:p-8 overflow-hidden md:rounded-xl md:shadow-big"
|
||||||
>
|
>
|
||||||
<h1 class="text-center font-bold my-2">
|
<h1 class="text-center text-3xl font-bold my-2">
|
||||||
${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')}" />
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ class Footer extends Component {
|
|||||||
const feedbackUrl = `https://qsurvey.mozilla.com/s3/Firefox-Send-Product-Feedback?ver=${version}&browser=${browser}`;
|
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 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-dark md:items-center justify-between"
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
class="mozilla-logo pb-10 md:pb-0 m-2"
|
class="mozilla-logo pb-10 md:pb-0 m-2"
|
||||||
@@ -28,7 +28,7 @@ class Footer extends Component {
|
|||||||
Mozilla
|
Mozilla
|
||||||
</a>
|
</a>
|
||||||
<ul
|
<ul
|
||||||
class="list-reset 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">
|
<li class="m-2">
|
||||||
<a href="https://www.mozilla.org/about/legal/terms/services/#send">
|
<a href="https://www.mozilla.org/about/legal/terms/services/#send">
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class Header extends Component {
|
|||||||
`;
|
`;
|
||||||
return html`
|
return html`
|
||||||
<header
|
<header
|
||||||
class="relative flex-none flex flex-row items-center justify-between w-full px-6 h-16 md:h-24 z-20 bg-transparent"
|
class="main-header relative flex-none flex flex-row items-center justify-between w-full px-6 md:px-8 h-16 md:h-24 z-20 bg-transparent"
|
||||||
>
|
>
|
||||||
${title} ${this.account.render()}
|
${title} ${this.account.render()}
|
||||||
</header>
|
</header>
|
||||||
|
|||||||
@@ -20,19 +20,15 @@ module.exports = function(state, emit) {
|
|||||||
const right =
|
const right =
|
||||||
archives.length === 0
|
archives.length === 0
|
||||||
? intro(state)
|
? intro(state)
|
||||||
: list(
|
: list(archives, 'p-2 h-full overflow-y-auto w-full', 'mb-4 w-full');
|
||||||
archives,
|
|
||||||
'list-reset p-2 h-full overflow-y-auto w-full',
|
|
||||||
'mb-4 w-full'
|
|
||||||
);
|
|
||||||
|
|
||||||
return html`
|
return html`
|
||||||
<main class="main">
|
<main class="main">
|
||||||
${state.modal && modal(state, emit)}
|
${state.modal && modal(state, emit)}
|
||||||
<section
|
<section
|
||||||
class="h-full w-full p-6 overflow-hidden md:flex md:flex-row md:rounded-lg md:shadow-big"
|
class="h-full w-full p-6 md:p-8 overflow-hidden md:flex md:flex-row md:rounded-xl md:shadow-big"
|
||||||
>
|
>
|
||||||
<div class="px-2 w-full md:px-0 md:mr-6 md:w-1/2">${left}</div>
|
<div class="px-2 w-full md:px-0 md:mr-8 md:w-1/2">${left}</div>
|
||||||
<div class="mt-6 w-full md:w-1/2 md:-m-2">${right}</div>
|
<div class="mt-6 w-full md:w-1/2 md:-m-2">${right}</div>
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ module.exports = function intro(state) {
|
|||||||
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"
|
||||||
>
|
>
|
||||||
<div class="mt-12 flex flex-col h-full">
|
<div class="mt-12 flex flex-col h-full">
|
||||||
<h1 class="font-bold">
|
<h1 class="text-3xl font-bold md:pb-2">
|
||||||
${state.translate('introTitle')}
|
${state.translate('introTitle')}
|
||||||
</h1>
|
</h1>
|
||||||
<p class="max-w-sm leading-normal mt-6 md:mt-2 md:pr-16">
|
<p class="max-w-sm leading-loose mt-6 md:mt-2 md:pr-14">
|
||||||
${state.translate('introDescription')}
|
${state.translate('introDescription')}
|
||||||
</p>
|
</p>
|
||||||
<img class="intro" src="${assets.get('intro.svg')}" />
|
<img class="intro" src="${assets.get('intro.svg')}" />
|
||||||
|
|||||||
@@ -8,9 +8,11 @@ module.exports = function(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-light md:border-none md:px-12 md:py-16 shadow w-full md:h-full"
|
||||||
>
|
>
|
||||||
<h1 class="text-center">${state.translate('legalTitle')}</h1>
|
<h1 class="text-center text-3xl font-bold">
|
||||||
|
${state.translate('legalTitle')}
|
||||||
|
</h1>
|
||||||
<p class="mt-2">${state.translate('legalDateStamp')}</p>
|
<p class="mt-2">${state.translate('legalDateStamp')}</p>
|
||||||
<div class="overflow-scroll py-8 px-12">
|
<div class="overflow-y-scroll py-8 px-12">
|
||||||
<p class="leading-normal">
|
<p class="leading-normal">
|
||||||
<span>When Mozilla receives information from you, our</span>
|
<span>When Mozilla receives information from you, our</span>
|
||||||
<a
|
<a
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ 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 pin flex items-center justify-center overflow-hidden z-40 bg-white md:rounded-lg md:my-8"
|
class="absolute inset-0 flex items-center justify-center overflow-hidden z-40 bg-white md:rounded-xl md:my-8"
|
||||||
onclick="${close}"
|
onclick="${close}"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="h-full w-full max-h-screen absolute pin-t flex items-center justify-center"
|
class="h-full w-full max-h-screen absolute top-0 flex items-center justify-center"
|
||||||
>
|
>
|
||||||
<div class="w-full" onclick="${e => e.stopPropagation()}">
|
<div class="w-full" onclick="${e => e.stopPropagation()}">
|
||||||
${state.modal(state, emit, close)}
|
${state.modal(state, emit, close)}
|
||||||
@@ -21,7 +21,6 @@ module.exports = function(state, emit) {
|
|||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
}
|
}
|
||||||
state.modal = null;
|
emit('closeModal');
|
||||||
emit('render');
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -8,7 +8,9 @@ module.exports = function(state, emit) {
|
|||||||
<div
|
<div
|
||||||
class="flex flex-col w-full max-w-md h-full mx-auto items-center justify-center"
|
class="flex flex-col w-full max-w-md h-full mx-auto items-center justify-center"
|
||||||
>
|
>
|
||||||
<h1 class="mb-4">${state.translate('downloadTitle')}</h1>
|
<h1 class="mb-4 text-3xl font-bold">${state.translate(
|
||||||
|
'downloadTitle'
|
||||||
|
)}</h1>
|
||||||
<p
|
<p
|
||||||
class="w-full p-2 border border-yellow-light rounded md:w-4/5 text-orange-dark bg-yellow-lighter text-center leading-normal"
|
class="w-full p-2 border border-yellow-light rounded md:w-4/5 text-orange-dark bg-yellow-lighter text-center leading-normal"
|
||||||
>
|
>
|
||||||
@@ -17,7 +19,7 @@ module.exports = function(state, emit) {
|
|||||||
<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-no-shrink" src="${assets.get(
|
<img class="mr-3 flex-shrink-0" src="${assets.get(
|
||||||
'blue_file.svg'
|
'blue_file.svg'
|
||||||
)}"/>
|
)}"/>
|
||||||
<p class="flex-grow">
|
<p class="flex-grow">
|
||||||
@@ -49,7 +51,7 @@ module.exports = function(state, emit) {
|
|||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<input
|
<input
|
||||||
class="btn rounded-lg w-full flex flex-no-shrink items-center justify-center"
|
class="btn rounded-lg w-full flex flex-shrink-0 items-center justify-center"
|
||||||
value="${state.translate('copyLinkButton')}"
|
value="${state.translate('copyLinkButton')}"
|
||||||
title="${state.translate('copyLinkButton')}"
|
title="${state.translate('copyLinkButton')}"
|
||||||
type="submit" />
|
type="submit" />
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ 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 h-full w-full p-6 overflow-hidden md:rounded-lg md:shadow-big"
|
class="flex flex-col items-center justify-center h-full w-full p-6 md:p-8 overflow-hidden md:rounded-xl md:shadow-big"
|
||||||
>
|
>
|
||||||
<h1 class="text-center font-bold my-2">
|
<h1 class="text-center text-3xl font-bold my-2">
|
||||||
${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" />
|
||||||
|
|||||||
@@ -4,9 +4,11 @@ module.exports = function(message) {
|
|||||||
return function(state, emit, close) {
|
return function(state, emit, close) {
|
||||||
return html`
|
return html`
|
||||||
<send-ok-dialog class="flex flex-col max-w-sm p-4 m-auto">
|
<send-ok-dialog class="flex flex-col max-w-sm p-4 m-auto">
|
||||||
<h2 class="text-center m-8 leading-normal">${message}</h2>
|
<h2 class="text-center text-xl font-bold m-8 leading-normal">
|
||||||
|
${message}
|
||||||
|
</h2>
|
||||||
<button
|
<button
|
||||||
class="btn rounded-lg w-full flex-no-shrink"
|
class="btn rounded-lg w-full flex-shrink-0"
|
||||||
onclick="${close}"
|
onclick="${close}"
|
||||||
title="${state.translate('okButton')}"
|
title="${state.translate('okButton')}"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -3,8 +3,9 @@ const Component = require('choo/component');
|
|||||||
const assets = require('../../common/assets');
|
const assets = require('../../common/assets');
|
||||||
|
|
||||||
class Promo extends Component {
|
class Promo extends Component {
|
||||||
constructor(name) {
|
constructor(name, state) {
|
||||||
super(name);
|
super(name);
|
||||||
|
this.state = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
update() {
|
update() {
|
||||||
@@ -14,21 +15,20 @@ class Promo extends Component {
|
|||||||
createElement() {
|
createElement() {
|
||||||
return html`
|
return html`
|
||||||
<send-promo
|
<send-promo
|
||||||
class="w-full flex-none flex-row items-center content-center justify-center text-sm bg-grey-light leading-tight text-grey-darkest px-4 py-3 hidden md:flex"
|
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">
|
<div class="flex items-center mx-auto">
|
||||||
<img
|
<img
|
||||||
src="${assets.get('firefox_logo-only.svg')}"
|
src="${assets.get('master-logo.svg')}"
|
||||||
class="w-6"
|
class="w-6 h-6"
|
||||||
alt="Firefox"
|
alt="Firefox"
|
||||||
/>
|
/>
|
||||||
<span class="ml-3"
|
<span class="ml-2 sm:ml-4 text-xs sm:text-base">
|
||||||
>Send is brought to you by the all-new Firefox.${' '}
|
${this.state.translate('trailheadPromo')}${' '}
|
||||||
<a
|
<a
|
||||||
class="text-blue"
|
class="underline text-blue-dark"
|
||||||
href="https://www.mozilla.org/firefox/new/?utm_campaign=send-acquisition&utm_medium=referral&utm_source=send.firefox.com"
|
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
|
||||||
Download Firefox now ≫</a
|
|
||||||
>
|
>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,22 +1,16 @@
|
|||||||
const html = require('choo/html');
|
const html = require('choo/html');
|
||||||
|
|
||||||
/* Possible strings for l10n
|
|
||||||
shareLinkDescription = Share the link to your file:
|
|
||||||
shareLinkButton = Share link
|
|
||||||
shareMessage = Download "{ $name }" with { -send-brand }: simple, safe file sharing
|
|
||||||
*/
|
|
||||||
|
|
||||||
module.exports = function(name, url) {
|
module.exports = function(name, url) {
|
||||||
return function(state, emit, close) {
|
const dialog = function(state, emit, close) {
|
||||||
return html`
|
return html`
|
||||||
<send-share-dialog
|
<send-share-dialog
|
||||||
class="flex flex-col items-center text-center p-4 max-w-sm m-auto"
|
class="flex flex-col items-center text-center p-4 max-w-sm m-auto"
|
||||||
>
|
>
|
||||||
<h1 class="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-darkest word-break-all">
|
||||||
Share the link to your file:<br />
|
${state.translate('shareLinkDescription')}<br />
|
||||||
${name}
|
${name}
|
||||||
</p>
|
</p>
|
||||||
<input
|
<input
|
||||||
@@ -27,11 +21,11 @@ module.exports = function(name, url) {
|
|||||||
readonly="true"
|
readonly="true"
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
class="btn rounded-lg w-full flex-no-shrink focus:outline"
|
class="btn rounded-lg w-full flex-shrink-0 focus:outline"
|
||||||
onclick="${share}"
|
onclick="${share}"
|
||||||
title="Share link"
|
title="${state.translate('shareLinkButton')}"
|
||||||
>
|
>
|
||||||
Share link
|
${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="text-blue-dark hover:text-blue-darker focus:text-blue-darker my-4 font-medium cursor-pointer focus:outline"
|
||||||
@@ -48,8 +42,7 @@ module.exports = function(name, url) {
|
|||||||
try {
|
try {
|
||||||
await navigator.share({
|
await navigator.share({
|
||||||
title: state.translate('-send-brand'),
|
title: state.translate('-send-brand'),
|
||||||
text: `Download "${name}" with Firefox Send: simple, safe file sharing`,
|
text: state.translate('shareMessage', { name }),
|
||||||
//state.translate('shareMessage', { name }),
|
|
||||||
url
|
url
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@@ -61,4 +54,6 @@ module.exports = function(name, url) {
|
|||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
dialog.type = 'share';
|
||||||
|
return dialog;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -12,14 +12,11 @@ module.exports = function(trigger) {
|
|||||||
<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 lg:flex-row justify-center px-8 md:px-24 w-full h-full"
|
||||||
>
|
>
|
||||||
<img
|
<img src="${assets.get('master-logo.svg')}" class="h-16 mt-1 mb-4" />
|
||||||
src="${assets.get('firefox_logo-only.svg')}"
|
|
||||||
class="h-16 mt-1 mb-4"
|
|
||||||
/>
|
|
||||||
<section
|
<section
|
||||||
class="flex flex-col flex-no-shrink self-center lg:mx-6 lg:max-w-xs"
|
class="flex flex-col flex-shrink-0 self-center lg:mx-6 lg:max-w-xs"
|
||||||
>
|
>
|
||||||
<h1 class="font-bold text-center lg:text-left">
|
<h1 class="text-3xl font-bold text-center lg:text-left">
|
||||||
${state.translate('accountBenefitTitle')}
|
${state.translate('accountBenefitTitle')}
|
||||||
</h1>
|
</h1>
|
||||||
<ul
|
<ul
|
||||||
@@ -49,9 +46,9 @@ module.exports = function(trigger) {
|
|||||||
placeholder=${state.translate('emailPlaceholder')}
|
placeholder=${state.translate('emailPlaceholder')}
|
||||||
/>
|
/>
|
||||||
<input
|
<input
|
||||||
class="btn rounded-lg w-full flex flex-no-shrink items-center justify-center"
|
class="btn rounded-lg w-full flex flex-shrink-0 items-center justify-center"
|
||||||
value="${state.translate('signInButton')}"
|
value="${state.translate('signInOnlyButton')}"
|
||||||
title="${state.translate('signInButton')}"
|
title="${state.translate('signInOnlyButton')}"
|
||||||
id="email-submit"
|
id="email-submit"
|
||||||
type="submit"
|
type="submit"
|
||||||
/>
|
/>
|
||||||
|
|||||||
42
app/ui/surveyDialog.js
Normal file
42
app/ui/surveyDialog.js
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
const html = require('choo/html');
|
||||||
|
const version = require('../../package.json').version;
|
||||||
|
const { browserName } = require('../utils');
|
||||||
|
|
||||||
|
module.exports = function() {
|
||||||
|
return function(state, emit, close) {
|
||||||
|
const surveyUrl = `${
|
||||||
|
state.PREFS.surveyUrl
|
||||||
|
}?ver=${version}&browser=${browserName()}&anon=${
|
||||||
|
state.user.loggedIn
|
||||||
|
}&active_count=${state.storage.files.length}`;
|
||||||
|
return html`
|
||||||
|
<send-survey-dialog
|
||||||
|
class="flex flex-col items-center text-center p-4 max-w-sm m-auto"
|
||||||
|
>
|
||||||
|
<h1 class="text-3xl font-bold my-4">
|
||||||
|
Tell us what you think.
|
||||||
|
</h1>
|
||||||
|
<p class="font-normal leading-normal text-grey-darkest px-4">
|
||||||
|
Love Firefox Send? Take a quick survey to let us know how we can make
|
||||||
|
it better.
|
||||||
|
</p>
|
||||||
|
<a
|
||||||
|
class="btn rounded-lg w-full flex-shrink-0 focus:outline my-5"
|
||||||
|
onclick="${() => emit('closeModal')}"
|
||||||
|
title="Give feedback"
|
||||||
|
href="${surveyUrl}"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Give feedback
|
||||||
|
</a>
|
||||||
|
<button
|
||||||
|
class="text-blue-dark hover:text-blue-darker focus:text-blue-darker font-medium cursor-pointer focus:outline"
|
||||||
|
onclick="${close}"
|
||||||
|
title="Skip"
|
||||||
|
>
|
||||||
|
Skip
|
||||||
|
</button>
|
||||||
|
</send-survey-dialog>
|
||||||
|
`;
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -29,7 +29,7 @@ module.exports = function(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-light md:border-none md:px-12 md:py-16 shadow w-full md:h-full"
|
||||||
>
|
>
|
||||||
<h1 class="">${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>
|
||||||
${why}
|
${why}
|
||||||
<a href="${url}" class="btn rounded-lg mt-8 px-8">
|
<a href="${url}" class="btn rounded-lg mt-8 px-8">
|
||||||
|
|||||||
@@ -44,6 +44,14 @@ export default class User {
|
|||||||
this.storage.set('firstAction', action);
|
this.storage.set('firstAction', action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get surveyed() {
|
||||||
|
return this.storage.get('surveyed');
|
||||||
|
}
|
||||||
|
|
||||||
|
set surveyed(yes) {
|
||||||
|
this.storage.set('surveyed', yes);
|
||||||
|
}
|
||||||
|
|
||||||
get avatar() {
|
get avatar() {
|
||||||
const defaultAvatar = assets.get('user.svg');
|
const defaultAvatar = assets.get('user.svg');
|
||||||
if (this.info.avatarDefault) {
|
if (this.info.avatarDefault) {
|
||||||
|
|||||||
14
app/utils.js
14
app/utils.js
@@ -14,6 +14,10 @@ function b64ToArray(str) {
|
|||||||
return b64.toByteArray(str + '==='.slice((str.length + 3) % 4));
|
return b64.toByteArray(str + '==='.slice((str.length + 3) % 4));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function locale() {
|
||||||
|
return document.querySelector('html').lang;
|
||||||
|
}
|
||||||
|
|
||||||
function loadShim(polyfill) {
|
function loadShim(polyfill) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const shim = document.createElement('script');
|
const shim = document.createElement('script');
|
||||||
@@ -67,8 +71,7 @@ function bytes(num) {
|
|||||||
let nStr = n.toFixed(decimalDigits);
|
let nStr = n.toFixed(decimalDigits);
|
||||||
if (LOCALIZE_NUMBERS) {
|
if (LOCALIZE_NUMBERS) {
|
||||||
try {
|
try {
|
||||||
const locale = document.querySelector('html').lang;
|
nStr = n.toLocaleString(locale(), {
|
||||||
nStr = n.toLocaleString(locale, {
|
|
||||||
minimumFractionDigits: decimalDigits,
|
minimumFractionDigits: decimalDigits,
|
||||||
maximumFractionDigits: decimalDigits
|
maximumFractionDigits: decimalDigits
|
||||||
});
|
});
|
||||||
@@ -85,8 +88,7 @@ function bytes(num) {
|
|||||||
function percent(ratio) {
|
function percent(ratio) {
|
||||||
if (LOCALIZE_NUMBERS) {
|
if (LOCALIZE_NUMBERS) {
|
||||||
try {
|
try {
|
||||||
const locale = document.querySelector('html').lang;
|
return ratio.toLocaleString(locale(), { style: 'percent' });
|
||||||
return ratio.toLocaleString(locale, { style: 'percent' });
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// fall through
|
// fall through
|
||||||
}
|
}
|
||||||
@@ -96,8 +98,7 @@ function percent(ratio) {
|
|||||||
|
|
||||||
function number(n) {
|
function number(n) {
|
||||||
if (LOCALIZE_NUMBERS) {
|
if (LOCALIZE_NUMBERS) {
|
||||||
const locale = document.querySelector('html').lang;
|
return n.toLocaleString(locale());
|
||||||
return n.toLocaleString(locale);
|
|
||||||
}
|
}
|
||||||
return n.toString();
|
return n.toString();
|
||||||
}
|
}
|
||||||
@@ -267,6 +268,7 @@ function setTranslate(t) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
locale,
|
||||||
fadeOut,
|
fadeOut,
|
||||||
delay,
|
delay,
|
||||||
allowedCopy,
|
allowedCopy,
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 8.1 KiB |
99
assets/master-logo.svg
Normal file
99
assets/master-logo.svg
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80">
|
||||||
|
<defs>
|
||||||
|
<radialGradient id="a" cx="-1186.91" cy="-517.676" r="90.78" gradientTransform="translate(1258.441 534.061)" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#fff36e"/>
|
||||||
|
<stop offset=".5" stop-color="#fc4055"/>
|
||||||
|
<stop offset="1" stop-color="#e31587"/>
|
||||||
|
</radialGradient>
|
||||||
|
<radialGradient id="b" cx="-1251.812" cy="-513.921" r="53.726" gradientTransform="translate(1258.441 534.061)" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset=".001" stop-color="#c60084"/>
|
||||||
|
<stop offset="1" stop-color="#fc4055" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<radialGradient id="c" cx="-1179.15" cy="-522.842" r="106.599" gradientTransform="translate(1258.441 534.061)" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#ffde67" stop-opacity=".6"/>
|
||||||
|
<stop offset=".093" stop-color="#ffd966" stop-opacity=".581"/>
|
||||||
|
<stop offset=".203" stop-color="#ffca65" stop-opacity=".525"/>
|
||||||
|
<stop offset=".321" stop-color="#feb262" stop-opacity=".432"/>
|
||||||
|
<stop offset=".446" stop-color="#fe8f5e" stop-opacity=".302"/>
|
||||||
|
<stop offset=".573" stop-color="#fd6459" stop-opacity=".137"/>
|
||||||
|
<stop offset=".664" stop-color="#fc4055" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<radialGradient id="d" cx="42.285" cy="44.499" r="137.521" gradientTransform="translate(0 -.095)" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset=".153" stop-color="#810220"/>
|
||||||
|
<stop offset=".167" stop-color="#920b27" stop-opacity=".861"/>
|
||||||
|
<stop offset=".216" stop-color="#cb2740" stop-opacity=".398"/>
|
||||||
|
<stop offset=".253" stop-color="#ef394f" stop-opacity=".11"/>
|
||||||
|
<stop offset=".272" stop-color="#fc4055" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<radialGradient id="e" cx="31.878" cy="42.77" r="137.521" gradientTransform="translate(0 -.095)" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset=".113" stop-color="#810220"/>
|
||||||
|
<stop offset=".133" stop-color="#920b27" stop-opacity=".861"/>
|
||||||
|
<stop offset=".204" stop-color="#cb2740" stop-opacity=".398"/>
|
||||||
|
<stop offset=".257" stop-color="#ef394f" stop-opacity=".11"/>
|
||||||
|
<stop offset=".284" stop-color="#fc4055" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="f" x1="-1212.61" y1="-525.103" x2="-1189.052" y2="-484.299" gradientTransform="translate(1258.441 532.89)" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#ffbd4f"/>
|
||||||
|
<stop offset=".508" stop-color="#ff9640" stop-opacity="0"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="g" cx="-1255.933" cy="-77.395" r="88.863" gradientTransform="matrix(.959 0 0 .961 1273.896 86.468)" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#ff9640"/>
|
||||||
|
<stop offset=".8" stop-color="#fc4055"/>
|
||||||
|
</radialGradient>
|
||||||
|
<radialGradient id="h" cx="-1255.933" cy="-77.395" r="88.863" gradientTransform="matrix(.959 0 0 .961 1273.896 86.468)" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset=".084" stop-color="#ffde67"/>
|
||||||
|
<stop offset=".147" stop-color="#ffdc66" stop-opacity=".968"/>
|
||||||
|
<stop offset=".246" stop-color="#ffd562" stop-opacity=".879"/>
|
||||||
|
<stop offset=".369" stop-color="#ffcb5d" stop-opacity=".734"/>
|
||||||
|
<stop offset=".511" stop-color="#ffbc55" stop-opacity=".533"/>
|
||||||
|
<stop offset=".667" stop-color="#ffaa4b" stop-opacity=".28"/>
|
||||||
|
<stop offset=".822" stop-color="#ff9640" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<radialGradient id="i" cx="49.941" cy="38.654" r="41.79" gradientTransform="matrix(.247 .971 -1.011 .259 76.681 -19.851)" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset=".363" stop-color="#fc4055"/>
|
||||||
|
<stop offset=".443" stop-color="#fd604d" stop-opacity=".633"/>
|
||||||
|
<stop offset=".545" stop-color="#fe8644" stop-opacity=".181"/>
|
||||||
|
<stop offset=".59" stop-color="#ff9640" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<radialGradient id="j" cx="42.737" cy="42.193" r="41.79" gradientTransform="translate(0 -.095)" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset=".216" stop-color="#fc4055" stop-opacity=".8"/>
|
||||||
|
<stop offset=".267" stop-color="#fd5251" stop-opacity=".633"/>
|
||||||
|
<stop offset=".41" stop-color="#fe8345" stop-opacity=".181"/>
|
||||||
|
<stop offset=".474" stop-color="#ff9640" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<radialGradient id="k" cx="-1238.198" cy="-87.433" r="150.195" gradientTransform="matrix(.959 0 0 .961 1273.896 86.468)" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset=".054" stop-color="#fff36e"/>
|
||||||
|
<stop offset=".457" stop-color="#ff9640"/>
|
||||||
|
<stop offset=".639" stop-color="#ff9640"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="l" x1="59.052" y1="7.083" x2="18.155" y2="77.92" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#fff36e" stop-opacity=".8"/>
|
||||||
|
<stop offset=".094" stop-color="#fff36e" stop-opacity=".699"/>
|
||||||
|
<stop offset=".752" stop-color="#fff36e" stop-opacity="0"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="m" x1="40.585" y1="-.67" x2="62.3" y2="62.203" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#b833e1"/>
|
||||||
|
<stop offset=".371" stop-color="#9059ff"/>
|
||||||
|
<stop offset=".614" stop-color="#5b6df8"/>
|
||||||
|
<stop offset="1" stop-color="#0090ed"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="n" x1="-1230.731" y1="-532.566" x2="-1190.37" y2="-492.205" gradientTransform="translate(1258.441 532.89)" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset=".805" stop-color="#722291" stop-opacity="0"/>
|
||||||
|
<stop offset="1" stop-color="#592acb" stop-opacity=".5"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<path d="M71.944 15.7A39.47 39.47 0 0 0 41.588.009C32.3-.177 25.884 2.614 22.254 4.858 27.111 2.041 34.14.443 40.294.522c15.83.2 32.832 10.981 35.357 30.413 2.9 22.306-12.637 40.923-34.493 40.98-24.045.061-38.67-21.229-34.847-40.352a19.735 19.735 0 0 1 .413-2.787 37.815 37.815 0 0 1 4.193-14.018c-2.769 1.433-6.295 5.965-8.035 10.163A41.355 41.355 0 0 0 .284 45.1c.06.518.114 1.035.182 1.549A40.062 40.062 0 1 0 71.944 15.7zm-63.4 3.487z" fill="url(#a)"/>
|
||||||
|
<path d="M71.944 15.7A39.47 39.47 0 0 0 41.588.009C32.3-.177 25.884 2.614 22.254 4.858 27.111 2.041 34.14.443 40.294.522c15.83.2 32.832 10.981 35.357 30.413 2.9 22.306-12.637 40.923-34.493 40.98-24.045.061-38.67-21.229-34.847-40.352a19.735 19.735 0 0 1 .413-2.787 37.815 37.815 0 0 1 4.193-14.018c-2.769 1.433-6.295 5.965-8.035 10.163A41.355 41.355 0 0 0 .284 45.1c.06.518.114 1.035.182 1.549A40.062 40.062 0 1 0 71.944 15.7zm-63.4 3.487z" fill="url(#b)" opacity=".67"/>
|
||||||
|
<path d="M71.944 15.7A39.47 39.47 0 0 0 41.588.009C32.3-.177 25.884 2.614 22.254 4.858 27.111 2.041 34.14.443 40.294.522c15.83.2 32.832 10.981 35.357 30.413 2.9 22.306-12.637 40.923-34.493 40.98-24.045.061-38.67-21.229-34.847-40.352a19.735 19.735 0 0 1 .413-2.787 37.815 37.815 0 0 1 4.193-14.018c-2.769 1.433-6.295 5.965-8.035 10.163A41.355 41.355 0 0 0 .284 45.1c.06.518.114 1.035.182 1.549A40.062 40.062 0 1 0 71.944 15.7zm-63.4 3.487z" fill="url(#c)"/>
|
||||||
|
<path d="M71.944 15.7A39.47 39.47 0 0 0 41.588.009C32.3-.177 25.884 2.614 22.254 4.858 27.111 2.041 34.14.443 40.294.522c15.83.2 32.832 10.981 35.357 30.413 2.9 22.306-12.637 40.923-34.493 40.98-24.045.061-38.67-21.229-34.847-40.352a19.735 19.735 0 0 1 .413-2.787 37.815 37.815 0 0 1 4.193-14.018c-2.769 1.433-6.295 5.965-8.035 10.163A41.355 41.355 0 0 0 .284 45.1c.06.518.114 1.035.182 1.549A40.062 40.062 0 1 0 71.944 15.7zm-63.4 3.487z" fill="url(#d)"/>
|
||||||
|
<path d="M71.944 15.7A39.47 39.47 0 0 0 41.588.009C32.3-.177 25.884 2.614 22.254 4.858 27.111 2.041 34.14.443 40.294.522c15.83.2 32.832 10.981 35.357 30.413 2.9 22.306-12.637 40.923-34.493 40.98-24.045.061-38.67-21.229-34.847-40.352a19.735 19.735 0 0 1 .413-2.787 37.815 37.815 0 0 1 4.193-14.018c-2.769 1.433-6.295 5.965-8.035 10.163A41.355 41.355 0 0 0 .284 45.1c.06.518.114 1.035.182 1.549A40.062 40.062 0 1 0 71.944 15.7zm-63.4 3.487z" fill="url(#e)"/>
|
||||||
|
<path d="M75.651 30.935a41.01 41.01 0 0 1 .3 7.247q1.99-.3 3.987-.53A40.01 40.01 0 0 0 71.944 15.7 39.47 39.47 0 0 0 41.588.009C32.3-.177 25.884 2.614 22.254 4.858 27.111 2.041 34.14.443 40.294.522 56.124.724 73.126 11.5 75.651 30.935z" fill="url(#f)"/>
|
||||||
|
<path d="M76.625 29.826C74.374 9.518 56.263.39 40.294.522c-6.155.05-13.183 1.519-18.04 4.336a19.7 19.7 0 0 0-3.56 2.7c.129-.107.514-.424 1.152-.862l.063-.043.056-.038a26.655 26.655 0 0 1 7.692-3.572A43.5 43.5 0 0 1 40.84 1.5a33.254 33.254 0 0 1 31.25 31.993C72.457 46.7 61.648 57.23 49.188 57.84c-9.062.444-17.6-3.941-21.77-12.713a21.68 21.68 0 0 1-1.964-6.333c-1.976-13.35 6.989-24.735 15.21-27.554-4.435-3.874-15.548-3.611-23.819 2.474-5.956 4.382-9.82 11.049-11.1 19a32.945 32.945 0 0 0 2.34 18 35.3 35.3 0 0 0 30.089 21.443q1.489.114 2.984.113c26.462 0 37.942-20.087 35.467-42.444z" fill="url(#g)"/>
|
||||||
|
<path d="M76.625 29.826C74.374 9.518 56.263.39 40.294.522c-6.155.05-13.183 1.519-18.04 4.336a19.7 19.7 0 0 0-3.56 2.7c.129-.107.514-.424 1.152-.862l.063-.043.056-.038a26.655 26.655 0 0 1 7.692-3.572A43.5 43.5 0 0 1 40.84 1.5a33.254 33.254 0 0 1 31.25 31.993C72.457 46.7 61.648 57.23 49.188 57.84c-9.062.444-17.6-3.941-21.77-12.713a21.68 21.68 0 0 1-1.964-6.333c-1.976-13.35 6.989-24.735 15.21-27.554-4.435-3.874-15.548-3.611-23.819 2.474-5.956 4.382-9.82 11.049-11.1 19a32.945 32.945 0 0 0 2.34 18 35.3 35.3 0 0 0 30.089 21.443q1.489.114 2.984.113c26.462 0 37.942-20.087 35.467-42.444z" fill="url(#h)"/>
|
||||||
|
<path d="M76.625 29.826C74.374 9.518 56.263.39 40.294.522c-6.155.05-13.183 1.519-18.04 4.336a19.7 19.7 0 0 0-3.56 2.7c.129-.107.514-.424 1.152-.862l.063-.043.056-.038a26.655 26.655 0 0 1 7.692-3.572A43.5 43.5 0 0 1 40.84 1.5a33.254 33.254 0 0 1 31.25 31.993C72.457 46.7 61.648 57.23 49.188 57.84c-9.062.444-17.6-3.941-21.77-12.713a21.68 21.68 0 0 1-1.964-6.333c-1.976-13.35 6.989-24.735 15.21-27.554-4.435-3.874-15.548-3.611-23.819 2.474-5.956 4.382-9.82 11.049-11.1 19a32.945 32.945 0 0 0 2.34 18 35.3 35.3 0 0 0 30.089 21.443q1.489.114 2.984.113c26.462 0 37.942-20.087 35.467-42.444z" style="mix-blend-mode:multiply" opacity=".53" fill="url(#i)"/>
|
||||||
|
<path d="M76.625 29.826C74.374 9.518 56.263.39 40.294.522c-6.155.05-13.183 1.519-18.04 4.336a19.7 19.7 0 0 0-3.56 2.7c.129-.107.514-.424 1.152-.862l.063-.043.056-.038a26.655 26.655 0 0 1 7.692-3.572A43.5 43.5 0 0 1 40.84 1.5a33.254 33.254 0 0 1 31.25 31.993C72.457 46.7 61.648 57.23 49.188 57.84c-9.062.444-17.6-3.941-21.77-12.713a21.68 21.68 0 0 1-1.964-6.333c-1.976-13.35 6.989-24.735 15.21-27.554-4.435-3.874-15.548-3.611-23.819 2.474-5.956 4.382-9.82 11.049-11.1 19a32.945 32.945 0 0 0 2.34 18 35.3 35.3 0 0 0 30.089 21.443q1.489.114 2.984.113c26.462 0 37.942-20.087 35.467-42.444z" style="mix-blend-mode:multiply" opacity=".53" fill="url(#j)"/>
|
||||||
|
<path d="M49.188 57.84c17.1-1.04 24.42-15.2 24.879-25.245C74.783 16.9 65.472-.02 40.84 1.5a43.5 43.5 0 0 0-13.183 1.546 28.855 28.855 0 0 0-7.692 3.572l-.056.038-.063.043q-.574.4-1.123.842A33.482 33.482 0 0 1 39.7 3.605c14.142 1.856 27.072 12.857 27.072 27.373 0 11.169-8.631 19.7-18.738 19.087-15.015-.9-18.8-16.3-10.989-22.954-2.106-.453-6.064.435-8.82 4.555-2.473 3.7-2.333 9.41-.807 13.461a22.118 22.118 0 0 0 21.77 12.713z" fill="url(#k)"/>
|
||||||
|
<path d="M71.944 15.7a39.958 39.958 0 0 0-3.482-3.982 31.342 31.342 0 0 0-3.177-2.926 24.393 24.393 0 0 1 1.849 1.79 22.466 22.466 0 0 1 4.882 8.144c2.089 6.329 1.953 14.25-2.036 20.471a23.539 23.539 0 0 1-20.855 10.895c-.361 0-.725 0-1.091-.027-15.015-.9-18.8-16.3-10.988-22.954-2.107-.453-6.065.435-8.821 4.555-2.473 3.7-2.333 9.41-.807 13.461a21.679 21.679 0 0 1-1.963-6.333c-1.977-13.35 6.988-24.735 15.209-27.554-4.435-3.874-15.548-3.611-23.819 2.474a27.845 27.845 0 0 0-10.087 14.6 38.5 38.5 0 0 1 4.159-13.553c-2.769 1.433-6.295 5.965-8.035 10.163A41.355 41.355 0 0 0 .284 45.1c.06.518.114 1.035.182 1.549A40.062 40.062 0 1 0 71.944 15.7z" fill="url(#l)"/>
|
||||||
|
<path d="M72.016 18.726a22.458 22.458 0 0 0-4.882-8.144 30.224 30.224 0 0 0-9.094-6.493A40.518 40.518 0 0 0 49.1.92a39.834 39.834 0 0 0-16.565-.1c-5.683 1.2-10.68 3.659-13.841 6.733a32.1 32.1 0 0 1 8.031-3.2 33.565 33.565 0 0 1 31.173 8.1 27.01 27.01 0 0 1 4.329 5.3c4.895 7.959 4.432 17.965.615 23.866-2.835 4.384-8.907 8.5-14.572 8.452A23.629 23.629 0 0 0 69.98 39.2c3.989-6.224 4.125-14.145 2.036-20.474z" fill="url(#m)"/>
|
||||||
|
<path d="M72.016 18.726a22.458 22.458 0 0 0-4.882-8.144 30.224 30.224 0 0 0-9.094-6.493A40.518 40.518 0 0 0 49.1.92a39.834 39.834 0 0 0-16.565-.1c-5.683 1.2-10.68 3.659-13.841 6.733a32.1 32.1 0 0 1 8.031-3.2 33.565 33.565 0 0 1 31.173 8.1 27.01 27.01 0 0 1 4.329 5.3c4.895 7.959 4.432 17.965.615 23.866-2.835 4.384-8.907 8.5-14.572 8.452A23.629 23.629 0 0 0 69.98 39.2c3.989-6.224 4.125-14.145 2.036-20.474z" fill="url(#n)"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 12 KiB |
68
docs/deployment.md
Normal file
68
docs/deployment.md
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
## Requirements
|
||||||
|
This document describes how to do a full deployment of Firefox Send on your own Linux server. You will need:
|
||||||
|
|
||||||
|
* A working (and ideally somewhat recent) installation of NodeJS and NPM
|
||||||
|
* GIT
|
||||||
|
* An Apache webserver
|
||||||
|
* Optionally telnet, to be able to quickly check your installation
|
||||||
|
|
||||||
|
For Debian/Ubuntu systems this probably just means something like this:
|
||||||
|
|
||||||
|
* apt install git apache2 nodejs npm telnet
|
||||||
|
|
||||||
|
## Building
|
||||||
|
* 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
|
||||||
|
* 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)
|
||||||
|
* npm install
|
||||||
|
* npm run build
|
||||||
|
|
||||||
|
## Running
|
||||||
|
To have a permanently running version of Firefox Send as a background process:
|
||||||
|
|
||||||
|
* Create a file "run.sh" with:
|
||||||
|
```
|
||||||
|
#!/bin/bash
|
||||||
|
nohup su www-data -c "npm run prod" 2>/dev/null &
|
||||||
|
```
|
||||||
|
* chmod +x run.sh
|
||||||
|
* ./run.sh
|
||||||
|
|
||||||
|
Now the Firefox Send backend should be running on port 1443. You can check with:
|
||||||
|
* telnet localhost 1443
|
||||||
|
|
||||||
|
## 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").
|
||||||
|
|
||||||
|
# Apache webserver
|
||||||
|
|
||||||
|
* a2enmod proxy
|
||||||
|
* a2enmod proxy_http
|
||||||
|
* a2enmod proxy_wstunnel
|
||||||
|
|
||||||
|
In your Apache virtual host configuration file, insert this:
|
||||||
|
|
||||||
|
```
|
||||||
|
# Enable rewrite engine
|
||||||
|
RewriteEngine on
|
||||||
|
|
||||||
|
# Make sure the original domain name is forwarded to Send
|
||||||
|
# Otherwise the generated URLs will be wrong
|
||||||
|
ProxyPreserveHost on
|
||||||
|
|
||||||
|
# Make sure the generated URL is https://
|
||||||
|
RequestHeader set X-Forwarded-Proto https
|
||||||
|
|
||||||
|
# If it's a normal file (e.g. PNG, CSS) just return it
|
||||||
|
RewriteCond %{REQUEST_FILENAME} -f
|
||||||
|
RewriteRule .* - [L]
|
||||||
|
|
||||||
|
# If it's a websocket connection, redirect it to a Send WS connection
|
||||||
|
RewriteCond %{HTTP:Upgrade} =websocket [NC]
|
||||||
|
RewriteRule /(.*) ws://127.0.0.1:1443/$1 [P,L]
|
||||||
|
|
||||||
|
# Otherwise redirect it to a normal HTTP connection
|
||||||
|
RewriteRule ^/(.*)$ http://127.0.0.1:1443/$1 [P,QSA]
|
||||||
|
ProxyPassReverse "/" "http://127.0.0.1:1443"
|
||||||
|
```
|
||||||
@@ -68,6 +68,7 @@ Server events allow us to aggregate data about file lifecycle without collecting
|
|||||||
* `event_properties`
|
* `event_properties`
|
||||||
* `download_count` downloads completed
|
* `download_count` downloads completed
|
||||||
* `ttl` time remaining before expiry truncated to hour
|
* `ttl` time remaining before expiry truncated to hour
|
||||||
|
* `agent` the browser name or first 6 characters of the user agent that made the request
|
||||||
|
|
||||||
### Client Events
|
### Client Events
|
||||||
|
|
||||||
|
|||||||
8607
package-lock.json
generated
8607
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
126
package.json
126
package.json
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "firefox-send",
|
"name": "firefox-send",
|
||||||
"description": "File Sharing Experiment",
|
"description": "File Sharing Experiment",
|
||||||
"version": "3.0.10",
|
"version": "3.0.17",
|
||||||
"author": "Mozilla (https://mozilla.org)",
|
"author": "Mozilla (https://mozilla.org)",
|
||||||
"repository": "mozilla/send",
|
"repository": "mozilla/send",
|
||||||
"homepage": "https://github.com/mozilla/send/",
|
"homepage": "https://github.com/mozilla/send/",
|
||||||
@@ -35,7 +35,8 @@
|
|||||||
"hooks": {
|
"hooks": {
|
||||||
"pre-commit": "lint-staged",
|
"pre-commit": "lint-staged",
|
||||||
"pre-push": "npm test",
|
"pre-push": "npm test",
|
||||||
"post-merge": "npm install"
|
"post-merge": "npm install",
|
||||||
|
"post-checkout": "scripts/sync-npm-dependencies.sh"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lint-staged": {
|
"lint-staged": {
|
||||||
@@ -60,66 +61,66 @@
|
|||||||
"node": ">=10.0.0"
|
"node": ">=10.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.4.3",
|
"@babel/core": "^7.5.5",
|
||||||
"@babel/plugin-proposal-class-properties": "^7.4.0",
|
"@babel/plugin-proposal-class-properties": "^7.5.5",
|
||||||
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
|
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
|
||||||
"@babel/preset-env": "^7.4.3",
|
"@babel/preset-env": "^7.5.5",
|
||||||
"@dannycoates/webcrypto-liner": "^0.1.37",
|
"@dannycoates/webcrypto-liner": "^0.1.37",
|
||||||
"@dannycoates/webpack-dev-server": "^3.1.4",
|
"@fullhuman/postcss-purgecss": "^1.2.0",
|
||||||
"@fullhuman/postcss-purgecss": "^1.1.0",
|
|
||||||
"@mattiasbuelens/web-streams-polyfill": "0.2.1",
|
"@mattiasbuelens/web-streams-polyfill": "0.2.1",
|
||||||
|
"@sentry/browser": "^5.6.3",
|
||||||
"asmcrypto.js": "^0.22.0",
|
"asmcrypto.js": "^0.22.0",
|
||||||
"babel-loader": "^8.0.5",
|
"babel-loader": "^8.0.6",
|
||||||
"babel-plugin-istanbul": "^5.1.2",
|
"babel-plugin-istanbul": "^5.2.0",
|
||||||
"base64-js": "^1.3.0",
|
"base64-js": "^1.3.1",
|
||||||
"content-disposition": "^0.5.3",
|
"content-disposition": "^0.5.3",
|
||||||
"copy-webpack-plugin": "^5.0.2",
|
"copy-webpack-plugin": "^5.0.4",
|
||||||
"core-js": "^3.0.1",
|
"core-js": "^3.2.1",
|
||||||
"crc": "^3.8.0",
|
"crc": "^3.8.0",
|
||||||
"cross-env": "^5.2.0",
|
"cross-env": "^5.2.1",
|
||||||
"css-loader": "^2.1.1",
|
"css-loader": "^3.2.0",
|
||||||
"css-mqpacker": "^7.0.0",
|
"css-mqpacker": "^7.0.0",
|
||||||
"cssnano": "^4.1.10",
|
"cssnano": "^4.1.10",
|
||||||
"eslint": "^5.16.0",
|
"eslint": "^6.3.0",
|
||||||
"eslint-plugin-mocha": "^5.3.0",
|
"eslint-config-prettier": "^6.2.0",
|
||||||
"eslint-plugin-node": "^8.0.1",
|
"eslint-plugin-mocha": "^6.1.0",
|
||||||
|
"eslint-plugin-node": "^9.2.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.1.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.0",
|
||||||
"file-loader": "^3.0.1",
|
"file-loader": "^4.2.0",
|
||||||
"fluent-intl-polyfill": "^0.1.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": "^1.3.1",
|
"husky": "^3.0.5",
|
||||||
"lint-staged": "^8.1.5",
|
"intl-pluralrules": "^1.0.3",
|
||||||
"mocha": "^6.1.3",
|
"lint-staged": "^9.2.5",
|
||||||
|
"mocha": "^6.2.0",
|
||||||
"morgan": "^1.9.1",
|
"morgan": "^1.9.1",
|
||||||
"nanobus": "^4.4.0",
|
"nanobus": "^4.4.0",
|
||||||
"nanohtml": "^1.5.0",
|
"nanohtml": "^1.8.1",
|
||||||
"nanotiming": "^7.3.1",
|
"nanotiming": "^7.3.1",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"nyc": "^14.0.0",
|
"nyc": "^14.1.1",
|
||||||
"postcss-loader": "^3.0.0",
|
"postcss-loader": "^3.0.0",
|
||||||
"postcss-preset-env": "^6.6.0",
|
"postcss-preset-env": "^6.7.0",
|
||||||
"prettier": "^1.17.0",
|
"prettier": "^1.18.2",
|
||||||
"proxyquire": "^2.1.0",
|
"proxyquire": "^2.1.3",
|
||||||
"puppeteer": "1.11.0",
|
"puppeteer": "^1.19.0",
|
||||||
"raven-js": "^3.27.0",
|
"raw-loader": "^3.1.0",
|
||||||
"raw-loader": "^2.0.0",
|
"redis-mock": "^0.46.0",
|
||||||
"redis-mock": "^0.43.0",
|
"rimraf": "^3.0.0",
|
||||||
"rimraf": "^2.6.3",
|
|
||||||
"script-loader": "^0.7.2",
|
"script-loader": "^0.7.2",
|
||||||
"sinon": "^7.3.2",
|
"sinon": "^7.4.2",
|
||||||
"string-hash": "^1.1.3",
|
"string-hash": "^1.1.3",
|
||||||
"stylelint": "^10.0.1",
|
"stylelint": "^10.1.0",
|
||||||
"stylelint-config-standard": "^18.3.0",
|
"stylelint-config-standard": "^18.3.0",
|
||||||
"stylelint-no-unsupported-browser-features": "^3.0.2",
|
"stylelint-no-unsupported-browser-features": "^3.0.2",
|
||||||
"svgo": "^1.2.2",
|
"svgo": "^1.3.0",
|
||||||
"svgo-loader": "^2.2.0",
|
"svgo-loader": "^2.2.1",
|
||||||
"tailwindcss": "^0.7.4",
|
"tailwindcss": "^1.1.2",
|
||||||
"val-loader": "^1.1.1",
|
"val-loader": "^1.1.1",
|
||||||
"wdio-docker-service": "^1.4.2",
|
"wdio-docker-service": "^1.4.2",
|
||||||
"wdio-dot-reporter": "0.0.10",
|
"wdio-dot-reporter": "0.0.10",
|
||||||
@@ -129,38 +130,41 @@
|
|||||||
"wdio-selenium-standalone-service": "0.0.12",
|
"wdio-selenium-standalone-service": "0.0.12",
|
||||||
"wdio-spec-reporter": "^0.1.5",
|
"wdio-spec-reporter": "^0.1.5",
|
||||||
"webdriverio": "^4.14.4",
|
"webdriverio": "^4.14.4",
|
||||||
"webpack": "4.28.4",
|
"webpack": "4.38.0",
|
||||||
"webpack-cli": "^3.3.0",
|
"webpack-cli": "^3.3.7",
|
||||||
"webpack-dev-middleware": "^3.6.2",
|
"webpack-dev-middleware": "^3.7.1",
|
||||||
|
"webpack-dev-server": "^3.8.0",
|
||||||
"webpack-manifest-plugin": "^2.0.4",
|
"webpack-manifest-plugin": "^2.0.4",
|
||||||
"webpack-unassert-loader": "^1.2.0"
|
"webpack-unassert-loader": "^1.2.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@google-cloud/storage": "^2.5.0",
|
"@dannycoates/express-ws": "^5.0.3",
|
||||||
"aws-sdk": "^2.438.0",
|
"@fluent/bundle": "^0.13.0",
|
||||||
"body-parser": "^1.18.3",
|
"@fluent/langneg": "^0.3.0",
|
||||||
"choo": "^6.13.3",
|
"@google-cloud/storage": "^3.2.1",
|
||||||
"cldr-core": "^35.0.0",
|
"@sentry/node": "^5.6.2",
|
||||||
"convict": "^4.4.1",
|
"aws-sdk": "^2.523.0",
|
||||||
"express": "^4.16.3",
|
"body-parser": "^1.19.0",
|
||||||
"express-ws": "github:dannycoates/express-ws",
|
"choo": "^7.0.0",
|
||||||
"fluent": "^0.12.0",
|
"cldr-core": "^35.1.0",
|
||||||
"fluent-langneg": "^0.1.1",
|
"configstore": "github:dannycoates/configstore#master",
|
||||||
|
"convict": "^5.1.0",
|
||||||
|
"express": "^4.17.1",
|
||||||
"fxa-geodb": "^1.0.4",
|
"fxa-geodb": "^1.0.4",
|
||||||
"helmet": "^3.16.0",
|
"helmet": "^3.21.0",
|
||||||
"mkdirp": "^0.5.1",
|
"mkdirp": "^0.5.1",
|
||||||
"mozlog": "^2.2.0",
|
"mozlog": "^2.2.0",
|
||||||
"node-fetch": "^2.3.0",
|
"node-fetch": "^2.6.0",
|
||||||
"raven": "^2.6.4",
|
|
||||||
"redis": "^2.8.0",
|
"redis": "^2.8.0",
|
||||||
"selenium-standalone": "^6.15.6",
|
"selenium-standalone": "^6.15.6",
|
||||||
"ua-parser-js": "^0.7.19",
|
"ua-parser-js": "^0.7.20"
|
||||||
"websocket-stream": "^5.4.0"
|
|
||||||
},
|
},
|
||||||
"availableLanguages": [
|
"availableLanguages": [
|
||||||
"en-US",
|
"en-US",
|
||||||
|
"ar",
|
||||||
"ast",
|
"ast",
|
||||||
"bn-BD",
|
"bn",
|
||||||
|
"br",
|
||||||
"ca",
|
"ca",
|
||||||
"cak",
|
"cak",
|
||||||
"cs",
|
"cs",
|
||||||
@@ -175,9 +179,12 @@
|
|||||||
"es-CL",
|
"es-CL",
|
||||||
"es-ES",
|
"es-ES",
|
||||||
"es-MX",
|
"es-MX",
|
||||||
|
"et",
|
||||||
|
"eu",
|
||||||
"fi",
|
"fi",
|
||||||
"fr",
|
"fr",
|
||||||
"fy-NL",
|
"fy-NL",
|
||||||
|
"he",
|
||||||
"hr",
|
"hr",
|
||||||
"hsb",
|
"hsb",
|
||||||
"hu",
|
"hu",
|
||||||
@@ -189,8 +196,12 @@
|
|||||||
"kab",
|
"kab",
|
||||||
"ko",
|
"ko",
|
||||||
"lt",
|
"lt",
|
||||||
|
"ml",
|
||||||
|
"nb-NO",
|
||||||
"nl",
|
"nl",
|
||||||
"nn-NO",
|
"nn-NO",
|
||||||
|
"oc",
|
||||||
|
"pa-IN",
|
||||||
"pl",
|
"pl",
|
||||||
"pt-BR",
|
"pt-BR",
|
||||||
"pt-PT",
|
"pt-PT",
|
||||||
@@ -200,10 +211,13 @@
|
|||||||
"sl",
|
"sl",
|
||||||
"sq",
|
"sq",
|
||||||
"sr",
|
"sr",
|
||||||
|
"su",
|
||||||
"sv-SE",
|
"sv-SE",
|
||||||
|
"th",
|
||||||
"tr",
|
"tr",
|
||||||
"uk",
|
"uk",
|
||||||
"vi",
|
"vi",
|
||||||
|
"zgh",
|
||||||
"zh-CN",
|
"zh-CN",
|
||||||
"zh-TW"
|
"zh-TW"
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ class TailwindExtractor {
|
|||||||
|
|
||||||
const options = {
|
const options = {
|
||||||
plugins: [
|
plugins: [
|
||||||
require('tailwindcss')('./tailwind.js'),
|
require('tailwindcss')('./tailwind.config.js'),
|
||||||
require('postcss-preset-env')
|
require('postcss-preset-env')
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,31 +1,9 @@
|
|||||||
# Firefox Send is a brand name and should not be localized.
|
# Firefox Send is a brand name and should not be localized.
|
||||||
title = فَيَرفُكس سِنْد
|
title = فَيَرفُكس سِنْد
|
||||||
siteSubtitle = تجربة وِبّيّة
|
|
||||||
siteFeedback = الانطباعات
|
siteFeedback = الانطباعات
|
||||||
uploadPageHeader = شارِك ملفاتك بخصوصية وتعمية
|
|
||||||
uploadPageExplainer = أرسل الملفات عبر رابط آمن خاص ومعمّى تنتهي صلاحيته تلقائيا لتضمن عدم بقاء ما ترسله إلى الأبد.
|
|
||||||
uploadPageLearnMore = اطّلع على المزيد
|
|
||||||
uploadPageDropMessage = أسقِط ملفّك هنا لبدء الرفع
|
|
||||||
uploadPageSizeMessage = لتتحصل على أفضل تجربة، من المستحسن أن يكون الملف أصغر من 1 غ.بايت
|
|
||||||
uploadPageBrowseButton = اختر ملفًا على حاسوبك
|
|
||||||
uploadPageBrowseButton1 = اختر ملفّا لرفعه
|
|
||||||
uploadPageMultipleFilesAlert = رفع عدة ملفات (أو رفع مجلد) ليس مدعوما حاليا.
|
|
||||||
uploadPageBrowseButtonTitle = ارفع ملفًا
|
|
||||||
uploadingPageProgress = يرفع { $filename } ({ $size })
|
|
||||||
importingFile = يستورد…
|
importingFile = يستورد…
|
||||||
verifyingFile = يتحقق…
|
|
||||||
encryptingFile = يعمّي…
|
encryptingFile = يعمّي…
|
||||||
decryptingFile = يفك التعمية…
|
decryptingFile = يفك التعمية…
|
||||||
notifyUploadDone = انتهى الرفع.
|
|
||||||
uploadingPageMessage = ما إن يُرفع الملف سيُتاح ضبط خيارات انتهاء صلاحيته.
|
|
||||||
uploadingPageCancel = ألغِ الرفع
|
|
||||||
uploadCancelNotification = أُلغي الرفع.
|
|
||||||
uploadingPageLargeFileMessage = هذا الملف كبير الحجم وسيأخذ رفعه وقتا. انتظر رجاءً.
|
|
||||||
uploadingFileNotification = أعلِمني عندما يكتمل الرفع.
|
|
||||||
uploadSuccessConfirmHeader = جاهز للإرسال
|
|
||||||
uploadSvgAlt = ارفع
|
|
||||||
uploadSuccessTimingHeader = ستنتهي صلاحية الرابط الذي يشير إلى الملف في حال: نُزِّل لأول مرة، أو مرّ ٢٤ ساعة على رفعه.
|
|
||||||
expireInfo = ستنتهي صلاحية رابط الملف بعد { $downloadCount } أو { $timespan }.
|
|
||||||
downloadCount =
|
downloadCount =
|
||||||
{ $num ->
|
{ $num ->
|
||||||
[zero] لا تنزيلات
|
[zero] لا تنزيلات
|
||||||
@@ -44,76 +22,26 @@ timespanHours =
|
|||||||
[many] { $num } ساعة
|
[many] { $num } ساعة
|
||||||
*[other] { $num } ساعة
|
*[other] { $num } ساعة
|
||||||
}
|
}
|
||||||
copyUrlFormLabelWithName = انسخ الرابط وشاركه لإرسال الملف: { $filename }
|
|
||||||
copyUrlFormButton = انسخ إلى الحافظة
|
|
||||||
copiedUrl = نُسخ!
|
copiedUrl = نُسخ!
|
||||||
deleteFileButton = احذف الملف
|
|
||||||
sendAnotherFileLink = أرسِل ملفًا آخر
|
|
||||||
# Alternative text used on the download link/button (indicates an action).
|
|
||||||
downloadAltText = نزّل
|
|
||||||
downloadsFileList = التنزيلات
|
|
||||||
# Used as header in a column indicating the amount of time left before a
|
|
||||||
# download link expires (e.g. "10h 5m")
|
|
||||||
timeFileList = الوقت
|
|
||||||
# Used as header in a column indicating the number of times a file has been
|
|
||||||
# downloaded
|
|
||||||
downloadFileName = نزّل { $filename }
|
|
||||||
downloadFileSize = ({ $size })
|
|
||||||
unlockInputLabel = أدخل كلمة السر
|
|
||||||
unlockInputPlaceholder = كلمة السر
|
unlockInputPlaceholder = كلمة السر
|
||||||
unlockButtonLabel = افتح القفل
|
unlockButtonLabel = افتح القفل
|
||||||
downloadFileTitle = نزِّل الملف المعمّى
|
|
||||||
# Firefox Send is a brand name and should not be localized.
|
|
||||||
downloadMessage = يُرسل إليك صديقك ملفا عبر «فَيَرفُكس سِنْد»، وهي خدمة تتيح لك مشاركة الملفات عبر رابط آمن وخاص ومعمّى، حيث تنتهي صلاحياتها تلقائيا لتضمن عدم بقاء ما ترسله إلى الأبد.
|
|
||||||
# Text and title used on the download link/button (indicates an action).
|
|
||||||
downloadButtonLabel = نزّل
|
downloadButtonLabel = نزّل
|
||||||
downloadNotification = لقد اكتمل التنزيل.
|
|
||||||
downloadFinish = اكتمل التنزيل
|
downloadFinish = اكتمل التنزيل
|
||||||
# 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 = جرِّب «فَيَرفُكس سِنْد»
|
sendYourFilesLink = جرِّب «فَيَرفُكس سِنْد»
|
||||||
downloadingPageProgress = ينزّل { $filename } ({ $size })
|
|
||||||
downloadingPageMessage = رجاء أبقِ هذا اللسان مفتوحا حتى نجلب الملف ونفك تعميته.
|
|
||||||
errorAltText = خطأ أثناء الرفع
|
|
||||||
errorPageHeader = حدث خطب ما.
|
errorPageHeader = حدث خطب ما.
|
||||||
errorPageMessage = حدث خطب ما أثناء رفع الملف.
|
|
||||||
errorPageLink = أرسل ملفا آخر
|
|
||||||
fileTooBig = حجم الملف كبير للغاية لرفعه. يجب أن يكون أصغر من { $size }.
|
fileTooBig = حجم الملف كبير للغاية لرفعه. يجب أن يكون أصغر من { $size }.
|
||||||
linkExpiredAlt = انتهت صلاحية الرابط
|
linkExpiredAlt = انتهت صلاحية الرابط
|
||||||
expiredPageHeader = انتهت صلاحية هذا الرابط أو لم يكن موجودا في المقام الأول!
|
|
||||||
notSupportedHeader = متصفحك غير مدعوم.
|
notSupportedHeader = متصفحك غير مدعوم.
|
||||||
# Firefox Send is a brand name and should not be localized.
|
|
||||||
notSupportedDetail = للأسف فإن متصفحك لا يدعم تقنية الوِب التي يعتمد عليها «فَيَرفُكس سِنْد». عليك تجربة متصفح آخر، ونحن ننصحك بِفَيَرفُكس!
|
|
||||||
notSupportedLink = لماذا متصفحي غير مدعوم؟
|
notSupportedLink = لماذا متصفحي غير مدعوم؟
|
||||||
notSupportedOutdatedDetail = للأسف فإن إصدارة فَيَرفُكس هذه لا تدعم تقنية الوِب التي يعتمد عليها «فَيَرفُكس سِنْد». عليك تحديث متصفحك.
|
notSupportedOutdatedDetail = للأسف فإن إصدارة فَيَرفُكس هذه لا تدعم تقنية الوِب التي يعتمد عليها «فَيَرفُكس سِنْد». عليك تحديث متصفحك.
|
||||||
updateFirefox = حدّث فَيَرفُكس
|
updateFirefox = حدّث فَيَرفُكس
|
||||||
downloadFirefoxButtonSub = تنزيل مجاني
|
|
||||||
uploadedFile = ملف
|
|
||||||
copyFileList = انسخ الرابط
|
|
||||||
# expiryFileList is used as a column header
|
|
||||||
expiryFileList = ينتهي في
|
|
||||||
deleteFileList = احذف
|
|
||||||
nevermindButton = لا بأس
|
|
||||||
legalHeader = الشروط والخصوصية
|
|
||||||
legalNoticeTestPilot = «فَيَرفُكس سِنْد» جزء من اختبار تجريبي حاليًا و يخضع <a>لبنود خدمة</a> الاختبار التجريبي و <a>تنويه الخصوصية</a>. يمكنك التعرف على مزيد من المعلومات حول هذه التجربة وجمع البيانات<a>هنا</a>.
|
|
||||||
legalNoticeMozilla = يخضع استخدام موقع «فَيَرفُكس سِنْد» إلى<a>تنويه خصوصية المواقع</a> و <a>بنود خدمة المواقع</a>.
|
|
||||||
deletePopupText = أأحذف هذا الملف؟
|
|
||||||
deletePopupYes = نعم
|
|
||||||
deletePopupCancel = ألغِ
|
deletePopupCancel = ألغِ
|
||||||
deleteButtonHover = احذف
|
deleteButtonHover = احذف
|
||||||
copyUrlHover = انسخ الرابط
|
|
||||||
footerLinkLegal = القانونية
|
footerLinkLegal = القانونية
|
||||||
# Test Pilot is a proper name and should not be localized.
|
|
||||||
footerLinkAbout = حول الاختبار التجريبي
|
|
||||||
footerLinkPrivacy = الخصوصية
|
footerLinkPrivacy = الخصوصية
|
||||||
footerLinkTerms = الشروط
|
|
||||||
footerLinkCookies = الكعكات
|
footerLinkCookies = الكعكات
|
||||||
requirePasswordCheckbox = اطلب كلمة سر لتنزيل هذا الملف
|
|
||||||
addPasswordButton = أضِف كلمة سر
|
|
||||||
changePasswordButton = غيّر
|
|
||||||
passwordTryAgain = كلمة السر خاطئة. أعِد المحاولة.
|
passwordTryAgain = كلمة السر خاطئة. أعِد المحاولة.
|
||||||
reportIPInfringement = أبلغ عن انتهاك للملكية الفكرية
|
|
||||||
javascriptRequired = يتطلب فَيَرفُكس سِنْد جافاسكربت
|
javascriptRequired = يتطلب فَيَرفُكس سِنْد جافاسكربت
|
||||||
whyJavascript = لماذا يتطلب فَيَرفُكس سِنْد جافاسكربت؟
|
whyJavascript = لماذا يتطلب فَيَرفُكس سِنْد جافاسكربت؟
|
||||||
enableJavascript = رجاء فعّل جافاسكربت ثم أعد المحاولة.
|
enableJavascript = رجاء فعّل جافاسكربت ثم أعد المحاولة.
|
||||||
@@ -121,9 +49,137 @@ enableJavascript = رجاء فعّل جافاسكربت ثم أعد المحاو
|
|||||||
expiresHoursMinutes = { $hours }س { $minutes }د
|
expiresHoursMinutes = { $hours }س { $minutes }د
|
||||||
# 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 }د
|
expiresMinutes = { $minutes }د
|
||||||
# A short status message shown when a password is successfully set
|
|
||||||
passwordIsSet = ضُبطت كلمة السر
|
|
||||||
# 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 = أقصر طول لكلمة السر: { $length }
|
maxPasswordLength = أقصر طول لكلمة السر: { $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 = يجب ألا تُضبط كلمة السر هذه
|
passwordSetError = يجب ألا تُضبط كلمة السر هذه
|
||||||
|
|
||||||
|
## Send version 2 strings
|
||||||
|
|
||||||
|
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 ->
|
||||||
|
[zero] أقل من دقيقة
|
||||||
|
[one] دقيقة واحدة
|
||||||
|
[two] دقيقتين اثنتين
|
||||||
|
[few] { $num } دقائق
|
||||||
|
[many] { $num } دقيقة
|
||||||
|
*[other] { $num } دقيقة
|
||||||
|
}
|
||||||
|
timespanDays =
|
||||||
|
{ $num ->
|
||||||
|
[zero] أقل من يوم
|
||||||
|
[one] يوم واحد
|
||||||
|
[two] يومين اثنين
|
||||||
|
[few] { $num } أيام
|
||||||
|
[many] { $num } يومًا
|
||||||
|
*[other] { $num } يوم
|
||||||
|
}
|
||||||
|
timespanWeeks =
|
||||||
|
{ $num ->
|
||||||
|
[zero] أقل من أسبوع
|
||||||
|
[one] أسبوع واحد
|
||||||
|
[two] أسبوعين اثنين
|
||||||
|
[few] { $num } أسابيع
|
||||||
|
[many] { $num } أسبوعًا
|
||||||
|
*[other] { $num } أسبوع
|
||||||
|
}
|
||||||
|
fileCount =
|
||||||
|
{ $num ->
|
||||||
|
[zero] { $num } ملف
|
||||||
|
[one] ملف واحد
|
||||||
|
[two] ملفان اثنان
|
||||||
|
[few] { $num } ملفات
|
||||||
|
[many] { $num } ملفًا
|
||||||
|
*[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 ->
|
||||||
|
[zero] لا يمكنك تنزيل أي ملف في آن واحد.
|
||||||
|
[one] لا يمكنك تنزيل ما يزيد على ملف واحد في آن واحد.
|
||||||
|
[two] لا يمكنك تنزيل ما يزيد على ملفين اثنين في آن واحد.
|
||||||
|
[few] لا يمكنك تنزيل ما يزيد على { $count } ملفات في آن واحد.
|
||||||
|
[many] لا يمكنك تنزيل ما يزيد على { $count } ملفًا في آن واحد.
|
||||||
|
*[other] لا يمكنك تنزيل ما يزيد على { $count } ملف في آن واحد.
|
||||||
|
}
|
||||||
|
# count will always be > 10
|
||||||
|
tooManyArchives =
|
||||||
|
{ $count ->
|
||||||
|
[zero] الأرشيفات ممنوعة.
|
||||||
|
[one] لا يُسمح إلا بأرشيف واحد.
|
||||||
|
[two] لا يُسمح إلا بأرشيفين اثنين.
|
||||||
|
[few] لا يُسمح إلا ب { $count } أرشيفات.
|
||||||
|
[many] لا يُسمح إلا ب { $count } أرشيفًا.
|
||||||
|
*[other] لا يُسمح إلا ب { $count } أرشيف.
|
||||||
|
}
|
||||||
|
expiredTitle = انقضى وقت الرابط.
|
||||||
|
notSupportedDescription = لن يعمل { -send-brand } في هذا المتصفح. أفضل المتصفحات التي يعمل معها { -send-short-brand } هو { -firefox } بآخر إصدارة، كما وأحدث إصدارة من أغلب المتصفحات الموجودة.
|
||||||
|
downloadFirefox = نزِّل { -firefox }
|
||||||
|
legalTitle = تنويه خصوصية { -send-short-brand }
|
||||||
|
legalDateStamp = الإصدارة ١٫٠ بتاريخ ١٢ مارس ٢٠١٩
|
||||||
|
# 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 ->
|
||||||
|
[zero] لا تُبقِ أي روابط نشطة
|
||||||
|
[one] أبقِ الروابط نشطة لمدة تصل إلى يوم واحد
|
||||||
|
[two] أبقِ الروابط نشطة لمدة تصل إلى يومين اثنين
|
||||||
|
[few] أبقِ الروابط نشطة لمدة تصل إلى { $count } أيام
|
||||||
|
[many] أبقِ الروابط نشطة لمدة تصل إلى { $count } يومًا
|
||||||
|
*[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 }: خدمة لمشاركة الملفات بلا عناء وبخصوصية تامة
|
||||||
|
learnMore = اطّلع على المزيد.
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ addPassword = পাসওয়ার্ড দ্বারা সুরক্ষ
|
|||||||
emailPlaceholder = আপনার ইমেইল দিন
|
emailPlaceholder = আপনার ইমেইল দিন
|
||||||
# $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 = সর্বোচ্চ { $size } আকারের ফাইল প্রেরণ করতে সাইন ইন করুন
|
signInSizeBump = সর্বোচ্চ { $size } আকারের ফাইল প্রেরণ করতে সাইন ইন করুন
|
||||||
signInButton = সাইন ইন/আপ
|
signInOnlyButton = সাইন ইন
|
||||||
accountBenefitTitle = { -firefox } অ্যাকাউন্ট তৈরি অথবা সাইন ইন করুন
|
accountBenefitTitle = { -firefox } অ্যাকাউন্ট তৈরি অথবা সাইন ইন করুন
|
||||||
# $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 = সর্বোচ্চ { $size } আকারের ফাইল শেয়ার করুন
|
accountBenefitLargeFiles = সর্বোচ্চ { $size } আকারের ফাইল শেয়ার করুন
|
||||||
@@ -145,3 +145,11 @@ noStreamsWarning = এই ব্রাউজার এতো বড় একট
|
|||||||
noStreamsOptionCopy = অন্য ব্রাউজারে খুলতে লিঙ্ক অনুলিপি করুন
|
noStreamsOptionCopy = অন্য ব্রাউজারে খুলতে লিঙ্ক অনুলিপি করুন
|
||||||
noStreamsOptionFirefox = আমাদের জনপ্রিয় ব্রাউজার ব্যবহার করুন
|
noStreamsOptionFirefox = আমাদের জনপ্রিয় ব্রাউজার ব্যবহার করুন
|
||||||
noStreamsOptionDownload = এই ব্রাউজার ব্যবহার অব্যহত রাখুন
|
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 = { -send-brand } এর মাধ্যমে "{ $name }" ডাউনলোড করুন: সরল, নিরাপদ ফাইল শেয়ারিং
|
||||||
|
trailheadPromo = আপনার গোপনীয়তা রক্ষা করার একটি উপায় আছে। Firefox এ যোগ দিন।
|
||||||
|
learnMore = আরও জানুন।
|
||||||
182
public/locales/br/send.ftl
Normal file
182
public/locales/br/send.ftl
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
# Firefox Send is a brand name and should not be localized.
|
||||||
|
title = Firefox Send
|
||||||
|
siteFeedback = Roit hoc'h ali
|
||||||
|
importingFile = Oc'h enporzhiañ …
|
||||||
|
encryptingFile = Oc'h enrinegañ..
|
||||||
|
decryptingFile = Oc'h ezrinegañ...
|
||||||
|
downloadCount =
|
||||||
|
{ $num ->
|
||||||
|
[one] { $num } bellgargadenn
|
||||||
|
[two] { $num } bellgargadenn
|
||||||
|
[few] { $num } fellgargadenn
|
||||||
|
[many] { $num } a bellgargadennoù
|
||||||
|
*[other] { $num } pellgargadenn
|
||||||
|
}
|
||||||
|
timespanHours =
|
||||||
|
{ $num ->
|
||||||
|
[one] { $num } eur
|
||||||
|
[two] { $num } eur
|
||||||
|
[few] { $num } eur
|
||||||
|
[many] { $num } a eurioù
|
||||||
|
*[other] { $num } eur
|
||||||
|
}
|
||||||
|
copiedUrl = Eilet!
|
||||||
|
unlockInputPlaceholder = Ger-tremen
|
||||||
|
unlockButtonLabel = Dibrennañ
|
||||||
|
downloadButtonLabel = Pellgargañ
|
||||||
|
downloadFinish = Pellgargadur echu
|
||||||
|
fileSizeProgress = ({ $partialSize } war { $totalSize })
|
||||||
|
sendYourFilesLink = Esaeit Firefox Send
|
||||||
|
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 }
|
||||||
|
linkExpiredAlt = Ere diamzeret
|
||||||
|
notSupportedHeader = N'eo ket skoret ho 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.
|
||||||
|
updateFirefox = Hizivaat Firefox
|
||||||
|
deletePopupCancel = Nullañ
|
||||||
|
deleteButtonHover = Dilemel
|
||||||
|
footerLinkLegal = Lezennel
|
||||||
|
footerLinkPrivacy = Buhez prevez
|
||||||
|
footerLinkCookies = Toupinoù
|
||||||
|
passwordTryAgain = Ger-tremen direizh. Klaskit en-dro.
|
||||||
|
javascriptRequired = Firefox Send a azgoulenn Javascript
|
||||||
|
whyJavascript = Perak e azgoulenn Firefox Send Javascript?
|
||||||
|
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"
|
||||||
|
expiresHoursMinutes = { $hours }e { $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 = Hirder brasañ aotreet evit ar ger-tremen: { $length }
|
||||||
|
# A short status message shown when there was an error setting the password
|
||||||
|
passwordSetError = N'haller ket despizañ ar ger-tremen
|
||||||
|
|
||||||
|
## Send version 2 strings
|
||||||
|
|
||||||
|
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
|
||||||
|
-send-brand = Firefox Send
|
||||||
|
-send-short-brand = Send
|
||||||
|
-firefox = Firefox
|
||||||
|
-mozilla = Mozilla
|
||||||
|
introTitle = Rannañ restroù en un doare eeun ha prevez
|
||||||
|
introDescription = A-drugarez da { -send-brand } a c'hallit rannañ restroù gant un enrinegañ penn-ouzh-penn hag un ere a ziamzero ent emgefreek. Evel-se e c'hallit mirout ar pezh a rannit prevez ha bezañ sur ne chomo ket ho traoù enlinenn da viken.
|
||||||
|
notifyUploadEncryptDone = Enrineget eo ho restr ha prest eo da vezañ kaset
|
||||||
|
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
|
||||||
|
archiveExpiryInfo = Diamzeriñ a raio goude { $downloadCount } pe { $timespan }
|
||||||
|
timespanMinutes =
|
||||||
|
{ $num ->
|
||||||
|
[one] { $num } vunutenn
|
||||||
|
[two] { $num } vunutenn
|
||||||
|
[few] { $num } munutenn
|
||||||
|
[many] { $num } a vunutennoù
|
||||||
|
*[other] { $num } munutenn
|
||||||
|
}
|
||||||
|
timespanDays =
|
||||||
|
{ $num ->
|
||||||
|
[one] { $num } devezh
|
||||||
|
[two] { $num } zevezh
|
||||||
|
[few] { $num } devezh
|
||||||
|
[many] { $num } a zevezhioù
|
||||||
|
*[other] { $num } devezh
|
||||||
|
}
|
||||||
|
timespanWeeks =
|
||||||
|
{ $num ->
|
||||||
|
[one] { $num } sizhun
|
||||||
|
[two] { $num } sizhun
|
||||||
|
[few] { $num } sizhun
|
||||||
|
[many] { $num } a sizhunioù
|
||||||
|
*[other] { $num } sizhun
|
||||||
|
}
|
||||||
|
fileCount =
|
||||||
|
{ $num ->
|
||||||
|
[one] { $num } restr
|
||||||
|
[two] { $num } restr
|
||||||
|
[few] { $num } restr
|
||||||
|
[many] { $num } a restroù
|
||||||
|
*[other] { $num } restr
|
||||||
|
}
|
||||||
|
# byte abbreviation
|
||||||
|
bytes = e
|
||||||
|
# kibibyte abbreviation
|
||||||
|
kb = Ke
|
||||||
|
# mebibyte abbreviation
|
||||||
|
mb = Me
|
||||||
|
# gibibyte abbreviation
|
||||||
|
gb = Ge
|
||||||
|
# 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 = Ment hollek: { $size }
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
copyLinkDescription = Eilit an ere evit rannañ ho restr
|
||||||
|
copyLinkButton = Eilañ an ere
|
||||||
|
downloadTitle = Pellgargañ ar restroù
|
||||||
|
downloadDescription = Dre { -send-brand } eo bet rannet ar restr-mañ, gant un enrinegañ penn-ouzh-penn hag un ere a ziamzer ent emgefreek.
|
||||||
|
trySendDescription = Esaeit { -send-brand } evit rannañ restroù en un doare eeun ha prevez.
|
||||||
|
# count will always be > 10
|
||||||
|
tooManyFiles =
|
||||||
|
{ $count ->
|
||||||
|
[one] N'haller pellgas nemet { $count } restr er memes mare.
|
||||||
|
[two] N'haller pellgas nemet { $count } restr er memes mare.
|
||||||
|
[few] N'haller pellgas nemet { $count } restr er memes mare.
|
||||||
|
[many] N'haller pellgas nemet { $count } a restroù er memes mare.
|
||||||
|
*[other] N'haller pellgas nemet { $count } restr er memes mare.
|
||||||
|
}
|
||||||
|
# count will always be > 10
|
||||||
|
tooManyArchives =
|
||||||
|
{ $count ->
|
||||||
|
[one] Aotreet eo{ $count } diell nemetken.
|
||||||
|
[two] Aotreet eo{ $count } ziell nemetken.
|
||||||
|
[few] Aotreet eo{ $count } diell nemetken.
|
||||||
|
[many] Aotreet eo{ $count } a zielloù nemetken.
|
||||||
|
*[other] Aotreet eo{ $count } diell nemetken.
|
||||||
|
}
|
||||||
|
expiredTitle = Diamzeret eo an ere.
|
||||||
|
notSupportedDescription = { -send-brand } n'aio ket en-dro war ar merdeer-mañ. { -send-short-brand } a za en-dro gwelloc'h gant handelv diwezhañ { -firefox }, ha mont a raio en-dro gant handelv bremanel lodenn vrasañ ar merdeerioù.
|
||||||
|
downloadFirefox = Pellgargañ { -firefox }
|
||||||
|
legalTitle = Evezhiadenn a fed buhez prevez { -send-short-brand }
|
||||||
|
legalDateStamp = Handelv 1.0, d'an 12 a viz Meurzh 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 }e { $minutes }m
|
||||||
|
addFilesButton = Diuzit ur restr da bellgas
|
||||||
|
uploadButton = Pellgas
|
||||||
|
# the first part of the string 'Drag and drop files or click to send up to 1GB'
|
||||||
|
dragAndDropFiles = Riklit ha laoskit restroù
|
||||||
|
# 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 = pe klikit evit kas betek { $size }
|
||||||
|
addPassword = Gwareziñ gant ur ger-tremen
|
||||||
|
emailPlaceholder = Enankit ho chomlec'h postel
|
||||||
|
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
|
||||||
|
signInSizeBump = Kennaskit evit kas betek { $size }
|
||||||
|
signInOnlyButton = Kennaskañ
|
||||||
|
accountBenefitTitle = Krouit ur gont { -firefox } pe kennaskit
|
||||||
|
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
|
||||||
|
accountBenefitLargeFiles = Rannit restroù betek { $size }
|
||||||
|
accountBenefitDownloadCount = Rannit restroù gant muioc'h a dud
|
||||||
|
accountBenefitTimeLimit =
|
||||||
|
{ $count ->
|
||||||
|
[one] Dalc'hit an ereoù oberiant e-pad { $count } devezh
|
||||||
|
[two] Dalc'hit an ereoù oberiant e-pad { $count } zevezh
|
||||||
|
[few] Dalc'hit an ereoù oberiant e-pad { $count } devezh
|
||||||
|
[many] Dalc'hit an ereoù oberiant e-pad { $count } a zevezhioù
|
||||||
|
*[other] Dalc'hit an ereoù oberiant e-pad { $count } devezh
|
||||||
|
}
|
||||||
|
accountBenefitSync = Merit ar restroù rannet gant forzh peseurt trevnad
|
||||||
|
accountBenefitMoz = Gouzout hiroc'h a-zivout gwazerezhioù all { -mozilla }
|
||||||
|
signOut = Digennaskañ
|
||||||
|
okButton = Mat eo
|
||||||
|
downloadingTitle = O pellgargañ
|
||||||
|
noStreamsWarning = Posupl eo ne vefe ket gouest ar merdeer-mañ da ezrinegañ ur restr ken bras.
|
||||||
|
noStreamsOptionCopy = Eilit an ere evit digeriñ anezhañ en ur merdeer all
|
||||||
|
noStreamsOptionFirefox = Esaeit hor merdeer karetañ
|
||||||
|
noStreamsOptionDownload = Kenderc'hel gant ar merdeer-mañ
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } a zo kinniget deoc'h gant ar { -firefox } nevez-flamm.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Rannit an ere etrezek ho restr:
|
||||||
|
shareLinkButton = Rannañ an ere
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Pellgargañ "{ $name }" gant { -send-brand }: rannañ restroù en un doare eeun ha prevez
|
||||||
|
trailheadPromo = Un doare a zo da wareziñ ho puhez prevez. Tremenit da Firefox.
|
||||||
|
learnMore = Gouzout hiroc'h.
|
||||||
@@ -126,7 +126,7 @@ addPassword = Protegeix amb contrasenya
|
|||||||
emailPlaceholder = Introduïu la vostra adreça electrònica
|
emailPlaceholder = Introduïu la vostra adreça electrònica
|
||||||
# $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 = Inicieu la sessió per enviar fins a { $size }
|
signInSizeBump = Inicieu la sessió per enviar fins a { $size }
|
||||||
signInButton = Inicieu la sessió o registreu-vos
|
signInOnlyButton = Inicia la sessió
|
||||||
accountBenefitTitle = Creeu un compte del { -firefox } o inicieu la sessió
|
accountBenefitTitle = Creeu un compte del { -firefox } o inicieu la sessió
|
||||||
# $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 = Compartiu fitxers fins a { $size }
|
accountBenefitLargeFiles = Compartiu fitxers fins a { $size }
|
||||||
@@ -145,3 +145,9 @@ noStreamsWarning = Pot ser que aquest navegador no pugui desxifrar un fitxer tan
|
|||||||
noStreamsOptionCopy = Copieu l'enllaç per obrir-lo en un altre navegador
|
noStreamsOptionCopy = Copieu l'enllaç per obrir-lo en un altre navegador
|
||||||
noStreamsOptionFirefox = Proveu el nostre navegador preferit
|
noStreamsOptionFirefox = Proveu el nostre navegador preferit
|
||||||
noStreamsOptionDownload = Segueix amb aquest navegador
|
noStreamsOptionDownload = Segueix amb aquest navegador
|
||||||
|
downloadFirefoxPromo = El nou { -firefox } us ofereix el { -send-short-brand }
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Compartiu l'enllaç al vostre fitxer:
|
||||||
|
shareLinkButton = Comparteix l'enllaç
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Baixeu «{ $name }» amb el { -send-brand }: compartició de fitxers senzilla i segura
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ addPassword = Tichajïx rik'in ewan tzij
|
|||||||
emailPlaceholder = Tatz'ib'aj ataqoya'l
|
emailPlaceholder = Tatz'ib'aj ataqoya'l
|
||||||
# $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 = Tatikirisaj molojri'ïl richin natäq k'a { $size }
|
signInSizeBump = Tatikirisaj molojri'ïl richin natäq k'a { $size }
|
||||||
signInButton = Tatikirisaj molojri'ïl/tatz'ib'aj ab'i'
|
signInOnlyButton = Titikirisäx molojri'ïl
|
||||||
accountBenefitTitle = Tatz'uku' jun { -firefox } Rub'i' Ataqoy'al o Tatikirisaj molojri'ïl
|
accountBenefitTitle = Tatz'uku' jun { -firefox } Rub'i' Ataqoy'al o Tatikirisaj molojri'ïl
|
||||||
# $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 = Ke'akomonij taq yakb'äl k'a { $size }
|
accountBenefitLargeFiles = Ke'akomonij taq yakb'äl k'a { $size }
|
||||||
@@ -145,3 +145,9 @@ noStreamsWarning = Rik'in jub'a' re okik'amaya'l re' man nitikïr ta nretamaj ru
|
|||||||
noStreamsOptionCopy = Tiwachib'ëx ri ximonel richin nijaq pa jun chik okik'amaya'l
|
noStreamsOptionCopy = Tiwachib'ëx ri ximonel richin nijaq pa jun chik okik'amaya'l
|
||||||
noStreamsOptionFirefox = Tatojtob'ej ri jeb'ël qokik'amaya'l
|
noStreamsOptionFirefox = Tatojtob'ej ri jeb'ël qokik'amaya'l
|
||||||
noStreamsOptionDownload = Kisamäj na rik'in re okik'amaya'l re'
|
noStreamsOptionDownload = Kisamäj na rik'in re okik'amaya'l re'
|
||||||
|
downloadFirefoxPromo = Ja ri k'ak'a' { -firefox } nusüj ri { -send-short-brand } chawe.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Nakomonij ri ximonel rik'in ri awokisab'al:
|
||||||
|
shareLinkButton = Tikomonïx ximonel
|
||||||
|
# $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
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ addPassword = Ochránit heslem
|
|||||||
emailPlaceholder = Zadejte svoji e-mailovou adresu
|
emailPlaceholder = Zadejte svoji e-mailovou adresu
|
||||||
# $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 = Pro odesílání souborů o velikosti až { $size } se prosím přihlaste
|
signInSizeBump = Pro odesílání souborů o velikosti až { $size } se prosím přihlaste
|
||||||
signInButton = Přihlásit/Registrovat se
|
signInOnlyButton = Přihlásit se
|
||||||
accountBenefitTitle = Vytvořte si účet { -firefox(case: "gen") } nebo se přihlaste
|
accountBenefitTitle = Vytvořte si účet { -firefox(case: "gen") } nebo se přihlaste
|
||||||
# $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 = Sdílejte soubory o velikosti až { $size }
|
accountBenefitLargeFiles = Sdílejte soubory o velikosti až { $size }
|
||||||
@@ -190,3 +190,11 @@ noStreamsWarning = Dešifrování tak velikého souboru se v tomto prohlížeči
|
|||||||
noStreamsOptionCopy = Zkopírujte odkaz pro otevření v jiném prohlížeči
|
noStreamsOptionCopy = Zkopírujte odkaz pro otevření v jiném prohlížeči
|
||||||
noStreamsOptionFirefox = Vyzkoušejte náš oblíbený prohlížeč
|
noStreamsOptionFirefox = Vyzkoušejte náš oblíbený prohlížeč
|
||||||
noStreamsOptionDownload = Pokračovat v tomto prohlížeči
|
noStreamsOptionDownload = Pokračovat v tomto prohlížeči
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } od aplikace { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Sdílet odkaz na soubor:
|
||||||
|
shareLinkButton = Sdílet odkaz
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Stáhněte si soubor „{ $name }“ s { -send-brand(case: "ins") } - jednoduché a bezpečné sdílení souborů
|
||||||
|
trailheadPromo = Existuje způsob, jak ochránit své soukromí. Používejte Firefox.
|
||||||
|
learnMore = Zjistit více.
|
||||||
|
|||||||
@@ -6,21 +6,21 @@ encryptingFile = Wrthi'n amgryptio…
|
|||||||
decryptingFile = Wrthi'n dadgryptio…
|
decryptingFile = Wrthi'n dadgryptio…
|
||||||
downloadCount =
|
downloadCount =
|
||||||
{ $num ->
|
{ $num ->
|
||||||
[zero] Llwythi i lawr
|
[zero] Dim llwythi i lawr
|
||||||
[one] Llwyth i lawr
|
[one] 1 llwyth i lawr
|
||||||
[two] Lwyth i lawr
|
[two] { $num } llwyth i lawr
|
||||||
[few] Llwyth i lawr
|
[few] { $num } llwyth i lawr
|
||||||
[many] Llwyth i lawr
|
[many] { $num } llwyth i lawr
|
||||||
*[other] Llwyth i lawr
|
*[other] { $num } llwyth i lawr
|
||||||
}
|
}
|
||||||
timespanHours =
|
timespanHours =
|
||||||
{ $num ->
|
{ $num ->
|
||||||
[zero] awr
|
[zero] awr
|
||||||
[one] awr
|
[one] 1 awr
|
||||||
[two] awr
|
[two] { $num } awr
|
||||||
[few] awr
|
[few] { $num } awr
|
||||||
[many] awr
|
[many] { $num } awr
|
||||||
*[other] awr
|
*[other] { $num } awr
|
||||||
}
|
}
|
||||||
copiedUrl = Wedi eu copïo!
|
copiedUrl = Wedi eu copïo!
|
||||||
unlockInputPlaceholder = Cyfrinair
|
unlockInputPlaceholder = Cyfrinair
|
||||||
@@ -78,7 +78,7 @@ timespanMinutes =
|
|||||||
timespanDays =
|
timespanDays =
|
||||||
{ $num ->
|
{ $num ->
|
||||||
[zero] 0 diwrnod
|
[zero] 0 diwrnod
|
||||||
[one] 1 dwrnod
|
[one] 1 diwrnod
|
||||||
[two] { $num } diwrnod
|
[two] { $num } diwrnod
|
||||||
[few] { $num } diwrnod
|
[few] { $num } diwrnod
|
||||||
[many] { $num } diwrnod
|
[many] { $num } diwrnod
|
||||||
@@ -158,7 +158,7 @@ addPassword = Diogelu gyda chyfrinair
|
|||||||
emailPlaceholder = Rhowch eich e-bost
|
emailPlaceholder = Rhowch eich e-bost
|
||||||
# $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 = Mewngofnodi i anfon hyd at { $size }
|
signInSizeBump = Mewngofnodi i anfon hyd at { $size }
|
||||||
signInButton = Mewngofnodi/Cofrestru
|
signInOnlyButton = Mewngofnodi
|
||||||
accountBenefitTitle = Creu Cyfrif { -firefox } neu fewngofnodi
|
accountBenefitTitle = Creu Cyfrif { -firefox } neu fewngofnodi
|
||||||
# $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 = Rhannu ffeiliau hyd at { $size }
|
accountBenefitLargeFiles = Rhannu ffeiliau hyd at { $size }
|
||||||
@@ -181,3 +181,11 @@ noStreamsWarning = Efallai na fydd y porwr hwn yn gallu dadgryptio ffeil mor faw
|
|||||||
noStreamsOptionCopy = Copïwch y ddolen i'w agor mewn porwr arall
|
noStreamsOptionCopy = Copïwch y ddolen i'w agor mewn porwr arall
|
||||||
noStreamsOptionFirefox = Rhowch gynnig ar ein hoff porwr
|
noStreamsOptionFirefox = Rhowch gynnig ar ein hoff porwr
|
||||||
noStreamsOptionDownload = Parhau gyda'r porwr hwn
|
noStreamsOptionDownload = Parhau gyda'r porwr hwn
|
||||||
|
downloadFirefoxPromo = Mae { -send-short-brand } yn cael ei gynnig i ci gan y { -firefox } newydd.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Rhannu'r ddolen i'ch ffeil:
|
||||||
|
shareLinkButton = Rhannu'r ddolen
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Llwytho i lawr “{ $name }” gyda { -send-brand }: rhannu ffeiliau syml a diogel
|
||||||
|
trailheadPromo = Mae ffordd o ddiogelu eich preifatrwydd. Ymunwch â Firefox.
|
||||||
|
learnMore = Dysgu rhagor.
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ addPassword = Beskyt med adgangskode
|
|||||||
emailPlaceholder = Indtast din mailadresse
|
emailPlaceholder = Indtast din mailadresse
|
||||||
# $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 = Log ind for at sende filer på op til { $size }
|
signInSizeBump = Log ind for at sende filer på op til { $size }
|
||||||
signInButton = Log ind/tilmeld dig
|
signInOnlyButton = Log ind
|
||||||
accountBenefitTitle = Opret en { -firefox }-konto eller log ind
|
accountBenefitTitle = Opret en { -firefox }-konto eller log ind
|
||||||
# $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 = Del filer på op til { $size }
|
accountBenefitLargeFiles = Del filer på op til { $size }
|
||||||
@@ -145,3 +145,11 @@ noStreamsWarning = Denne browser kan muligvis ikke dekryptere en fil, der er så
|
|||||||
noStreamsOptionCopy = Kopier linket for at åbne det i en anden browser
|
noStreamsOptionCopy = Kopier linket for at åbne det i en anden browser
|
||||||
noStreamsOptionFirefox = Prøv vores favorit-browser
|
noStreamsOptionFirefox = Prøv vores favorit-browser
|
||||||
noStreamsOptionDownload = Fortsæt med denne browser
|
noStreamsOptionDownload = Fortsæt med denne browser
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } præsenteres af den nye { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Del linket til din fil:
|
||||||
|
shareLinkButton = Del link
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Hent { $name } med { -send-brand } - simpel og sikker fildeling
|
||||||
|
trailheadPromo = Beskyt dine digitale rettigheder. Slut dig til Firefox.
|
||||||
|
learnMore = Læs mere.
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ addPassword = Mit Passwort schützen
|
|||||||
emailPlaceholder = E-Mail-Adresse eingeben
|
emailPlaceholder = E-Mail-Adresse eingeben
|
||||||
# $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 = Melde dich an, um Dateien bis { $size } zu senden
|
signInSizeBump = Melde dich an, um Dateien bis { $size } zu senden
|
||||||
signInButton = Anmelden/Registrieren
|
signInOnlyButton = Anmelden
|
||||||
accountBenefitTitle = Erstelle ein { -firefox }-Konto oder melde dich an
|
accountBenefitTitle = Erstelle ein { -firefox }-Konto oder melde dich an
|
||||||
# $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 = Dateien bis zu { $size } teilen
|
accountBenefitLargeFiles = Dateien bis zu { $size } teilen
|
||||||
@@ -145,3 +145,11 @@ noStreamsWarning = Dieser Browser kann eine so große Datei möglicherweise nich
|
|||||||
noStreamsOptionCopy = Kopiere den Link, um ihn in einem anderen Browser zu öffnen
|
noStreamsOptionCopy = Kopiere den Link, um ihn in einem anderen Browser zu öffnen
|
||||||
noStreamsOptionFirefox = Probiere unseren Lieblingsbrowser aus
|
noStreamsOptionFirefox = Probiere unseren Lieblingsbrowser aus
|
||||||
noStreamsOptionDownload = Mit diesem Browser weitermachen
|
noStreamsOptionDownload = Mit diesem Browser weitermachen
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } wird Ihnen präsentiert vom brandneuen { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Teilen Sie den Link zu Ihrer Datei:
|
||||||
|
shareLinkButton = Link teilen
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Laden Sie „{ $name }“ mit { -send-brand } herunter: einfaches, sicheres Teilen von Dateien
|
||||||
|
trailheadPromo = Es gibt einen Weg, deine Privatsphäre zu schützen. Komm zu Firefox.
|
||||||
|
learnMore = Mehr erfahren.
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ addPassword = Z gronidłom šćitaś
|
|||||||
emailPlaceholder = Zapódajśo swóju e-mailowu adresu
|
emailPlaceholder = Zapódajśo swóju e-mailowu adresu
|
||||||
# $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 = Pśizjawśo se, aby do { $size } pósłał
|
signInSizeBump = Pśizjawśo se, aby do { $size } pósłał
|
||||||
signInButton = Pśizjawiś/Registrěrowaś
|
signInOnlyButton = Pśizjawiś
|
||||||
accountBenefitTitle = Załožćo konto { -firefox } abo pśizjawśo se
|
accountBenefitTitle = Załožćo konto { -firefox } abo pśizjawśo se
|
||||||
# $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 = Dataje do { $size } źěliś
|
accountBenefitLargeFiles = Dataje do { $size } źěliś
|
||||||
@@ -163,3 +163,11 @@ noStreamsWarning = Toś ten wobglědowak njamógał taku wjeliku dataju dešifr
|
|||||||
noStreamsOptionCopy = Kopěrujśo wótkaz, aby jen w drugim wobglědowaku wócynił
|
noStreamsOptionCopy = Kopěrujśo wótkaz, aby jen w drugim wobglědowaku wócynił
|
||||||
noStreamsOptionFirefox = Wopytajśo naš nejlubšy wobglědowak
|
noStreamsOptionFirefox = Wopytajśo naš nejlubšy wobglědowak
|
||||||
noStreamsOptionDownload = Z toś tym wobglědowakom pókšacowaś
|
noStreamsOptionDownload = Z toś tym wobglědowakom pókšacowaś
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } se wam pśez cele nowy { -firefox } pśinjaso.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Źělśo wótkaz k swójej dataji:
|
||||||
|
shareLinkButton = Wótkaz źěliś
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Ześěgniśo „{ $name }“ z { -send-brand }: jadnore, wěste źělenje datajow
|
||||||
|
trailheadPromo = Jo móžnosć, wašu priwatnosć šćitaś. Pśiźćo k Firefox.
|
||||||
|
learnMore = Dalšne informacije.
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ addPassword = Προστασία με κωδικό πρόσβασης
|
|||||||
emailPlaceholder = Εισάγετε το email σας
|
emailPlaceholder = Εισάγετε το email σας
|
||||||
# $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 = Συνδεθείτε για να στείλετε μέχρι { $size }
|
signInSizeBump = Συνδεθείτε για να στείλετε μέχρι { $size }
|
||||||
signInButton = Σύνδεση/εγγραφή
|
signInOnlyButton = Σύνδεση
|
||||||
accountBenefitTitle = Δημιουργία λογαριασμού { -firefox } ή σύνδεση
|
accountBenefitTitle = Δημιουργία λογαριασμού { -firefox } ή σύνδεση
|
||||||
# $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 = Μοιραστείτε αρχεία έως { $size }
|
accountBenefitLargeFiles = Μοιραστείτε αρχεία έως { $size }
|
||||||
@@ -145,3 +145,11 @@ noStreamsWarning = Αυτό το πρόγραμμα περιήγησης ενδ
|
|||||||
noStreamsOptionCopy = Αντιγράψτε το σύνδεσμο για άνοιγμα σε άλλο πρόγραμμα περιήγησης
|
noStreamsOptionCopy = Αντιγράψτε το σύνδεσμο για άνοιγμα σε άλλο πρόγραμμα περιήγησης
|
||||||
noStreamsOptionFirefox = Δοκιμάστε το αγαπημένο μας πρόγραμμα περιήγησης
|
noStreamsOptionFirefox = Δοκιμάστε το αγαπημένο μας πρόγραμμα περιήγησης
|
||||||
noStreamsOptionDownload = Συνέχεια με αυτό το πρόγραμμα περιήγησης
|
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 = Μάθετε περισσότερα.
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ addPassword = Protect with password
|
|||||||
emailPlaceholder = Enter your email
|
emailPlaceholder = Enter your email
|
||||||
# $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 = Sign in to send up to { $size }
|
signInSizeBump = Sign in to send up to { $size }
|
||||||
signInButton = Sign in/up
|
signInOnlyButton = Sign in
|
||||||
accountBenefitTitle = Create a { -firefox } Account or sign in
|
accountBenefitTitle = Create a { -firefox } Account or sign in
|
||||||
# $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 = Share files up to { $size }
|
accountBenefitLargeFiles = Share files up to { $size }
|
||||||
@@ -145,3 +145,11 @@ noStreamsWarning = This browser might not be able to decrypt a file this big.
|
|||||||
noStreamsOptionCopy = Copy the link to open in another browser
|
noStreamsOptionCopy = Copy the link to open in another browser
|
||||||
noStreamsOptionFirefox = Try our favourite browser
|
noStreamsOptionFirefox = Try our favourite browser
|
||||||
noStreamsOptionDownload = Continue with this browser
|
noStreamsOptionDownload = Continue with this browser
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } is brought to you by the all-new { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Share the link to your file:
|
||||||
|
shareLinkButton = Share link
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Download “{ $name }” with { -send-brand }: simple, safe file sharing
|
||||||
|
trailheadPromo = There is a way to protect your privacy. Join Firefox.
|
||||||
|
learnMore = Learn more.
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ addPassword = Protect with password
|
|||||||
emailPlaceholder = Enter your email
|
emailPlaceholder = Enter your email
|
||||||
# $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 = Sign in to send up to { $size }
|
signInSizeBump = Sign in to send up to { $size }
|
||||||
signInButton = Sign in/up
|
signInOnlyButton = Sign in
|
||||||
accountBenefitTitle = Create a { -firefox } Account or sign in
|
accountBenefitTitle = Create a { -firefox } Account or sign in
|
||||||
# $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 = Share files up to { $size }
|
accountBenefitLargeFiles = Share files up to { $size }
|
||||||
@@ -145,3 +145,11 @@ noStreamsWarning = This browser might not be able to decrypt a file this big.
|
|||||||
noStreamsOptionCopy = Copy the link to open in another browser
|
noStreamsOptionCopy = Copy the link to open in another browser
|
||||||
noStreamsOptionFirefox = Try our favourite browser
|
noStreamsOptionFirefox = Try our favourite browser
|
||||||
noStreamsOptionDownload = Continue with this browser
|
noStreamsOptionDownload = Continue with this browser
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } is brought to you by the all-new { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Share the link to your file:
|
||||||
|
shareLinkButton = Share link
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Download “{ $name }” with { -send-brand }: simple, safe file sharing
|
||||||
|
trailheadPromo = There is a way to protect your privacy. Join Firefox.
|
||||||
|
learnMore = Learn more.
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ addPassword = Protect with password
|
|||||||
emailPlaceholder = Enter your email
|
emailPlaceholder = Enter your email
|
||||||
# $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 = Sign in to send up to { $size }
|
signInSizeBump = Sign in to send up to { $size }
|
||||||
signInButton = Sign in/up
|
signInOnlyButton = Sign in
|
||||||
accountBenefitTitle = Create a { -firefox } Account or sign in
|
accountBenefitTitle = Create a { -firefox } Account or sign in
|
||||||
# $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 = Share files up to { $size }
|
accountBenefitLargeFiles = Share files up to { $size }
|
||||||
@@ -137,3 +137,11 @@ noStreamsWarning = This browser might not be able to decrypt a file this big.
|
|||||||
noStreamsOptionCopy = Copy the link to open in another browser
|
noStreamsOptionCopy = Copy the link to open in another browser
|
||||||
noStreamsOptionFirefox = Try our favorite browser
|
noStreamsOptionFirefox = Try our favorite browser
|
||||||
noStreamsOptionDownload = Continue with this browser
|
noStreamsOptionDownload = Continue with this browser
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } is brought to you by the all-new { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Share the link to your file:
|
||||||
|
shareLinkButton = Share link
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Download “{ $name }” with { -send-brand }: simple, safe file sharing
|
||||||
|
trailheadPromo = There is a way to protect your privacy. Join Firefox.
|
||||||
|
learnMore = Learn more.
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ addPassword = Proteger con contraseña
|
|||||||
emailPlaceholder = Ingrese su correo electrónico
|
emailPlaceholder = Ingrese su correo electrónico
|
||||||
# $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 = Inicie sesión para enviar hasta { $size }
|
signInSizeBump = Inicie sesión para enviar hasta { $size }
|
||||||
signInButton = Iniciar sesión/registrarse
|
signInOnlyButton = Iniciar sesión
|
||||||
accountBenefitTitle = Cree una cuenta de { -firefox } o inicie la sesión
|
accountBenefitTitle = Cree una cuenta de { -firefox } o inicie la sesión
|
||||||
# $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 = Compartir archivos hasta { $size }
|
accountBenefitLargeFiles = Compartir archivos hasta { $size }
|
||||||
@@ -145,3 +145,11 @@ noStreamsWarning = Es posible que este navegador no pueda descifrar un archivo t
|
|||||||
noStreamsOptionCopy = Copiar el enlace para abrir en otro navegador.
|
noStreamsOptionCopy = Copiar el enlace para abrir en otro navegador.
|
||||||
noStreamsOptionFirefox = Pruebe nuestro navegador favorito
|
noStreamsOptionFirefox = Pruebe nuestro navegador favorito
|
||||||
noStreamsOptionDownload = Continuar con este navegador
|
noStreamsOptionDownload = Continuar con este navegador
|
||||||
|
downloadFirefoxPromo = El nuevo { -firefox } te ofrece { -send-short-brand }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Compartir el enlace con tu dispositivo:
|
||||||
|
shareLinkButton = Compartir el enlace
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Descargar "{ $name }" con { -send-brand }: compartir archivos de forma simple y segura
|
||||||
|
trailheadPromo = Hay una forma de proteger tu privacidad. Unite a Firefox.
|
||||||
|
learnMore = Conocer más.
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ addPassword = Protegido con contraseña
|
|||||||
emailPlaceholder = Ingresa tu correo
|
emailPlaceholder = Ingresa tu correo
|
||||||
# $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 = Conéctate para enviar hasta { $size }
|
signInSizeBump = Conéctate para enviar hasta { $size }
|
||||||
signInButton = Conectarse/registrarse
|
signInOnlyButton = Conectarse
|
||||||
accountBenefitTitle = Crea una cuenta de { -firefox } o conéctate
|
accountBenefitTitle = Crea una cuenta de { -firefox } o conéctate
|
||||||
# $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 = Comparte archivos de hasta { $size }
|
accountBenefitLargeFiles = Comparte archivos de hasta { $size }
|
||||||
@@ -145,3 +145,11 @@ noStreamsWarning = Es posible que este navegador no pueda descifrar un archivo t
|
|||||||
noStreamsOptionCopy = Copiar el enlace para abrirlo en otro navegador
|
noStreamsOptionCopy = Copiar el enlace para abrirlo en otro navegador
|
||||||
noStreamsOptionFirefox = Prueba nuestro navegador favorito
|
noStreamsOptionFirefox = Prueba nuestro navegador favorito
|
||||||
noStreamsOptionDownload = Continuar con este navegador
|
noStreamsOptionDownload = Continuar con este navegador
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } es traído a ti por el renovado { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Comparte el enlace a tu dispositivo:
|
||||||
|
shareLinkButton = Compartir enlace
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Baja "{ $name }" con { -send-brand }: compartir archivos de forma simple y segura
|
||||||
|
trailheadPromo = Hay una forma de proteger tu privacidad. Únete a Firefox.
|
||||||
|
learnMore = Aprender más.
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ addPassword = Proteger con contraseña
|
|||||||
emailPlaceholder = Introducir dirección de correo
|
emailPlaceholder = Introducir dirección de correo
|
||||||
# $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 = Iniciar sesión para enviar hasta { $size }
|
signInSizeBump = Iniciar sesión para enviar hasta { $size }
|
||||||
signInButton = Iniciar sesión/registrarse
|
signInOnlyButton = Iniciar sesión
|
||||||
accountBenefitTitle = Crear una cuenta { -firefox } o iniciar sesión
|
accountBenefitTitle = Crear una cuenta { -firefox } o iniciar sesión
|
||||||
# $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 = Compartir archivos de hasta { $size }
|
accountBenefitLargeFiles = Compartir archivos de hasta { $size }
|
||||||
@@ -145,3 +145,11 @@ noStreamsWarning = Puede que este navegador no pueda descifrar un archivo tan gr
|
|||||||
noStreamsOptionCopy = Copiar el enlace para abrirlo en otro navegador
|
noStreamsOptionCopy = Copiar el enlace para abrirlo en otro navegador
|
||||||
noStreamsOptionFirefox = Probar nuestro navegador favorito
|
noStreamsOptionFirefox = Probar nuestro navegador favorito
|
||||||
noStreamsOptionDownload = Continuar en este navegador
|
noStreamsOptionDownload = Continuar en este navegador
|
||||||
|
downloadFirefoxPromo = El nuevo { -firefox } te ofrece { -send-short-brand }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Compartir el enlace a tu archivo:
|
||||||
|
shareLinkButton = Compartir enlace
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Descargar “{ $name }” con { -send-brand }: comparte archivos de forma segura y sencilla
|
||||||
|
trailheadPromo = Existe la forma de proteger tu privacidad. Únete a Firefox.
|
||||||
|
learnMore = Saber más.
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ encryptingFile = Encriptando...
|
|||||||
decryptingFile = Desencriptando...
|
decryptingFile = Desencriptando...
|
||||||
downloadCount =
|
downloadCount =
|
||||||
{ $num ->
|
{ $num ->
|
||||||
*[one] 1 descarga
|
[one] 1 descarga
|
||||||
|
*[other] { $num } descargas
|
||||||
}
|
}
|
||||||
timespanHours =
|
timespanHours =
|
||||||
{ $num ->
|
{ $num ->
|
||||||
@@ -125,7 +126,7 @@ addPassword = Protegido con contraseña
|
|||||||
emailPlaceholder = Ingresa tu correo electrónico
|
emailPlaceholder = Ingresa tu correo electrónico
|
||||||
# $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 = Iniciar sesión para enviar hasta { $size }
|
signInSizeBump = Iniciar sesión para enviar hasta { $size }
|
||||||
signInButton = Iniciar sesión/registrarse
|
signInOnlyButton = Iniciar sesión
|
||||||
accountBenefitTitle = Crear una cuenta de { -firefox } o iniciar sesión
|
accountBenefitTitle = Crear una cuenta de { -firefox } o iniciar sesión
|
||||||
# $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 = Compartir archivos de hasta { $size }
|
accountBenefitLargeFiles = Compartir archivos de hasta { $size }
|
||||||
@@ -144,3 +145,11 @@ noStreamsWarning = Puede que este navegador no pueda descifrar un archivo tan gr
|
|||||||
noStreamsOptionCopy = Copiar el enlace para abrir en otro navegador
|
noStreamsOptionCopy = Copiar el enlace para abrir en otro navegador
|
||||||
noStreamsOptionFirefox = Prueba nuestro navegador favorito
|
noStreamsOptionFirefox = Prueba nuestro navegador favorito
|
||||||
noStreamsOptionDownload = Continuar con este navegador
|
noStreamsOptionDownload = Continuar con este navegador
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } te lo ofrece el nuevo { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Comparte el enlace a tu archivo:
|
||||||
|
shareLinkButton = Enlace para compartir
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Descarga «{ $name }» con { -send-brand }: es sencillo y seguro
|
||||||
|
trailheadPromo = Existe una forma de proteger tu privacidad. Únete a Firefox.
|
||||||
|
learnMore = Saber más.
|
||||||
|
|||||||
@@ -1,31 +1,9 @@
|
|||||||
# Firefox Send is a brand name and should not be localized.
|
# Firefox Send is a brand name and should not be localized.
|
||||||
title = Firefox Send
|
title = Firefox Send
|
||||||
siteSubtitle = veebieksperiment
|
|
||||||
siteFeedback = Tagasiside
|
siteFeedback = Tagasiside
|
||||||
uploadPageHeader = Privaatne ja krüpteeritud failiedastus
|
|
||||||
uploadPageExplainer = Firefox Send võimaldab saata faile üle ohutu, privaatse ja krüpteeritud kanali. Failid kustutatakse automaatselt, et need ei jääks internetti igaveseks.
|
|
||||||
uploadPageLearnMore = Rohkem teavet
|
|
||||||
uploadPageDropMessage = Faili üleslaadimiseks lohista see siia
|
|
||||||
uploadPageSizeMessage = Parima kogemuse saamiseks tasub faili suurus hoida alla 1GB
|
|
||||||
uploadPageBrowseButton = Vali fail arvutist
|
|
||||||
uploadPageBrowseButton1 = Vali fail üleslaadimiseks
|
|
||||||
uploadPageMultipleFilesAlert = Mitme faili või kausta üleslaadimine pole praegu toetatud.
|
|
||||||
uploadPageBrowseButtonTitle = Laadi fail üles
|
|
||||||
uploadingPageProgress = Faili { $filename } ({ $size }) üleslaadimine
|
|
||||||
importingFile = Importimine...
|
importingFile = Importimine...
|
||||||
verifyingFile = Kontrollimine…
|
|
||||||
encryptingFile = Krüptimine…
|
encryptingFile = Krüptimine…
|
||||||
decryptingFile = Dekrüptimine...
|
decryptingFile = Dekrüptimine...
|
||||||
notifyUploadDone = Üleslaadimine on lõpetatud.
|
|
||||||
uploadingPageMessage = Aegumise sätteid saab muuta siis, kui faili üles laaditakse.
|
|
||||||
uploadingPageCancel = Katkesta üleslaadimine
|
|
||||||
uploadCancelNotification = Üleslaadimine katkestati
|
|
||||||
uploadingPageLargeFileMessage = Fail on suur ja selle üleslaadimine võib aega võtta.
|
|
||||||
uploadingFileNotification = Teavita mind üleslaadimise lõppemisest.
|
|
||||||
uploadSuccessConfirmHeader = Saatmiseks valmis
|
|
||||||
uploadSvgAlt = Laadi üles
|
|
||||||
uploadSuccessTimingHeader = Link failile aegub pärast 1. allalaadimist või 24 tunni möödumisel.
|
|
||||||
expireInfo = Link failile aegub peale { $downloadCount } või { $timespan }.
|
|
||||||
downloadCount =
|
downloadCount =
|
||||||
{ $num ->
|
{ $num ->
|
||||||
[one] üht allalaadimist
|
[one] üht allalaadimist
|
||||||
@@ -33,79 +11,29 @@ downloadCount =
|
|||||||
}
|
}
|
||||||
timespanHours =
|
timespanHours =
|
||||||
{ $num ->
|
{ $num ->
|
||||||
[one] üht tundi
|
[one] 1 tunni
|
||||||
*[other] { $num } tundi
|
*[other] { $num } tunni
|
||||||
}
|
}
|
||||||
copyUrlFormLabelWithName = Kopeeri ja jaga linki faili allalaadimiseks: { $filename }
|
|
||||||
copyUrlFormButton = Kopeeri vahemällu
|
|
||||||
copiedUrl = Kopeeritud!
|
copiedUrl = Kopeeritud!
|
||||||
deleteFileButton = Kustuta fail
|
|
||||||
sendAnotherFileLink = Saada järgmine fail
|
|
||||||
# Alternative text used on the download link/button (indicates an action).
|
|
||||||
downloadAltText = Laadi alla
|
|
||||||
downloadsFileList = Allalaadimised
|
|
||||||
# Used as header in a column indicating the amount of time left before a
|
|
||||||
# download link expires (e.g. "10h 5m")
|
|
||||||
timeFileList = Aega jäänud
|
|
||||||
# Used as header in a column indicating the number of times a file has been
|
|
||||||
# downloaded
|
|
||||||
downloadFileName = Laadi fail { $filename } alla
|
|
||||||
downloadFileSize = ({ $size })
|
|
||||||
unlockInputLabel = Sisesta parool
|
|
||||||
unlockInputPlaceholder = Parool
|
unlockInputPlaceholder = Parool
|
||||||
unlockButtonLabel = Ava
|
unlockButtonLabel = Ava
|
||||||
downloadFileTitle = Krüptitud faili allalaadimine
|
|
||||||
# Firefox Send is a brand name and should not be localized.
|
|
||||||
downloadMessage = Sulle on saadetud fail Firefox Sendiga - teenusega, mis lubab faile ohutult, privaatselt ja krüpteeritult jagada. Failid kustutatakse automaatselt, et need ei jääks internetti igaveseks.
|
|
||||||
# Text and title used on the download link/button (indicates an action).
|
|
||||||
downloadButtonLabel = Laadi alla
|
downloadButtonLabel = Laadi alla
|
||||||
downloadNotification = Allalaadimine on lõpetatud.
|
|
||||||
downloadFinish = Allalaadimine lõpetati
|
downloadFinish = Allalaadimine lõpetati
|
||||||
# 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 = Proovi Firefox Send'i
|
||||||
sendYourFilesLink = Proovi Firefox Sendi
|
|
||||||
downloadingPageProgress = Faili { $filename } ({ $size }) allalaadimine
|
|
||||||
downloadingPageMessage = Palun jäta see kaart lahti, kuni fail on alla laaditud ja dekrüptitud.
|
|
||||||
errorAltText = Viga üleslaadimisel
|
|
||||||
errorPageHeader = Midagi läks valesti!
|
errorPageHeader = Midagi läks valesti!
|
||||||
errorPageMessage = Faili üleslaadimisel esines viga.
|
|
||||||
errorPageLink = Saada järgmine fail
|
|
||||||
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
|
||||||
expiredPageHeader = See link on aegunud või seda pole kunagi olnudki!
|
|
||||||
notSupportedHeader = Sinu brauser pole toetatud.
|
notSupportedHeader = Sinu brauser pole toetatud.
|
||||||
# Firefox Send is a brand name and should not be localized.
|
|
||||||
notSupportedDetail = Kahjuks ei toeta see brauser veebitehnoloogiaid, mis teevad Firefox Sendi toimimise võimalikuks. Sa pead proovima teise brauseriga. Me soovitame Firefoxi!
|
|
||||||
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 Firefox Sendi toimimise võimalikuks. Sa pead oma brauserit uuendama.
|
||||||
updateFirefox = Uuenda Firefox
|
updateFirefox = Uuenda Firefox
|
||||||
downloadFirefoxButtonSub = Laadi alla tasuta
|
|
||||||
uploadedFile = Fail
|
|
||||||
copyFileList = Kopeeri URL
|
|
||||||
# expiryFileList is used as a column header
|
|
||||||
expiryFileList = Aegub
|
|
||||||
deleteFileList = Kustuta
|
|
||||||
nevermindButton = Ära pane tähele
|
|
||||||
legalHeader = Tingimused ja privaatsusreeglid
|
|
||||||
legalNoticeTestPilot = Firefox Send on praegu Test Piloti eksperiment ja sellele rakenduvad Test Piloti <a>teenusetingimused</a> ning <a>privaatsusreeglid</a>. Rohkem teavet selle eksperimendi ja kogutavate andmete kohta leiab <a>siit</a>.
|
|
||||||
legalNoticeMozilla = Firefox Sendi veebilehe kasutamisele rakenduvad ka Mozilla <a>veebilehtede privaatsusreeglid</a> ja <a>veebilehtede teenusetingimused</a>.
|
|
||||||
deletePopupText = Kas kustutada see fail?
|
|
||||||
deletePopupYes = Jah
|
|
||||||
deletePopupCancel = Loobu
|
deletePopupCancel = Loobu
|
||||||
deleteButtonHover = Kustuta
|
deleteButtonHover = Kustuta
|
||||||
copyUrlHover = Kopeeri URL
|
|
||||||
footerLinkLegal = Õiguslik teave
|
footerLinkLegal = Õiguslik teave
|
||||||
# Test Pilot is a proper name and should not be localized.
|
|
||||||
footerLinkAbout = Test Pilotist
|
|
||||||
footerLinkPrivacy = Privaatsusest
|
footerLinkPrivacy = Privaatsusest
|
||||||
footerLinkTerms = Teenusetingimused
|
|
||||||
footerLinkCookies = Küpsistest
|
footerLinkCookies = Küpsistest
|
||||||
requirePasswordCheckbox = Selle faili allalaadimiseks nõutakse parooli
|
|
||||||
addPasswordButton = Lisa parool
|
|
||||||
changePasswordButton = Muuda
|
|
||||||
passwordTryAgain = Vale parool. Palun proovi uuesti.
|
passwordTryAgain = Vale parool. Palun proovi uuesti.
|
||||||
reportIPInfringement = Intellektuaalomandi keelatud kasutamise raporteerimine
|
|
||||||
javascriptRequired = Firefox Send'i kasutamiseks tuleb JavaScript lubada
|
javascriptRequired = Firefox Send'i kasutamiseks tuleb JavaScript lubada
|
||||||
whyJavascript = Miks Firefox Send JavaScripti vajab?
|
whyJavascript = Miks Firefox Send JavaScripti vajab?
|
||||||
enableJavascript = Palun luba JavaScript ja proovi uuesti.
|
enableJavascript = Palun luba JavaScript ja proovi uuesti.
|
||||||
@@ -113,9 +41,113 @@ enableJavascript = Palun luba JavaScript ja proovi uuesti.
|
|||||||
expiresHoursMinutes = { $hours }t { $minutes }m
|
expiresHoursMinutes = { $hours }t { $minutes }m
|
||||||
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
|
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
|
||||||
expiresMinutes = { $minutes }m
|
expiresMinutes = { $minutes }m
|
||||||
# A short status message shown when a password is successfully set
|
|
||||||
passwordIsSet = Parool on muudetud
|
|
||||||
# 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 = Maksimaalne parooli pikkus: { $length }
|
maxPasswordLength = Maksimaalne parooli pikkus: { $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 = Parooli muutmine ebaõnnestus
|
passwordSetError = Parooli muutmine ebaõnnestus
|
||||||
|
|
||||||
|
## Send version 2 strings
|
||||||
|
|
||||||
|
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
|
||||||
|
-send-brand = Firefox Send
|
||||||
|
-send-short-brand = Send
|
||||||
|
-firefox = Firefox
|
||||||
|
-mozilla = Mozilla
|
||||||
|
introTitle = Lihtne ja privaatne failijagamine
|
||||||
|
introDescription = { -send-brand } võimaldab sul faile jagada otspunktkrüpteerimise ning automaatselt aeguva lingiga. Nii saad jagatava privaatsena hoida ja kindlustada, et su asjad igavesti internetti vedelema ei jää.
|
||||||
|
notifyUploadEncryptDone = Sinu fail on krüptitud ja saatmiseks valmis
|
||||||
|
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
|
||||||
|
archiveExpiryInfo = Aegub peale { $downloadCount } või { $timespan } järel
|
||||||
|
timespanMinutes =
|
||||||
|
{ $num ->
|
||||||
|
[one] 1 minuti
|
||||||
|
*[other] { $num } minuti
|
||||||
|
}
|
||||||
|
timespanDays =
|
||||||
|
{ $num ->
|
||||||
|
[one] 1 päeva
|
||||||
|
*[other] { $num } päeva
|
||||||
|
}
|
||||||
|
timespanWeeks =
|
||||||
|
{ $num ->
|
||||||
|
[one] 1 nädala
|
||||||
|
*[other] { $num } nädala
|
||||||
|
}
|
||||||
|
fileCount =
|
||||||
|
{ $num ->
|
||||||
|
[one] 1 fail
|
||||||
|
*[other] { $num } faili
|
||||||
|
}
|
||||||
|
# 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 = Kogusuurus: { $size }
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
copyLinkDescription = Faili jagamiseks kopeeri link:
|
||||||
|
copyLinkButton = Kopeeri link
|
||||||
|
downloadTitle = Failide allalaadimine
|
||||||
|
downloadDescription = See fail jagati teenuse { -send-brand } kaudu otspunktkrüpteeritult ja automaatselt aeguva lingiga.
|
||||||
|
trySendDescription = Proovi lihtsaks ja turvaliseks failijagamiseks { -send-brand } teenust.
|
||||||
|
# count will always be > 10
|
||||||
|
tooManyFiles =
|
||||||
|
{ $count ->
|
||||||
|
[one] Korraga saab üles laadida vaid 1 faili.
|
||||||
|
*[other] Korraga saab üles laadida vaid { $count } faili.
|
||||||
|
}
|
||||||
|
# count will always be > 10
|
||||||
|
tooManyArchives =
|
||||||
|
{ $count ->
|
||||||
|
[one] Vaid 1 arhiveerimine on lubatud.
|
||||||
|
*[other] Vaid { $count } arhiveerimist on lubatud.
|
||||||
|
}
|
||||||
|
expiredTitle = Link on aegunud.
|
||||||
|
notSupportedDescription = { -send-brand } ei tööta selle veebilehitsejaga. Kõige paremini töötab { -send-short-brand } uusima { -firefox }iga ja töötab ka enamikes teistes uuendatud brauserites.
|
||||||
|
downloadFirefox = Laadi { -firefox } alla
|
||||||
|
legalTitle = { -send-short-brand } privaatsusteade
|
||||||
|
legalDateStamp = Versioon 1.0, alates 12. märts 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 }p { $hours }t { $minutes }m
|
||||||
|
addFilesButton = Vali failid üleslaadimiseks
|
||||||
|
uploadButton = Laadi üles
|
||||||
|
# the first part of the string 'Drag and drop files or click to send up to 1GB'
|
||||||
|
dragAndDropFiles = Lohista failid siia
|
||||||
|
# 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 = või klõpsa kuni { $size } suuruste failide saatmiseks
|
||||||
|
addPassword = Kaitse parooliga
|
||||||
|
emailPlaceholder = Sisesta e-posti aadress
|
||||||
|
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
|
||||||
|
signInSizeBump = Logi sisse ning saad saata kuni { $size } suuruseid faile
|
||||||
|
signInOnlyButton = Logi sisse
|
||||||
|
accountBenefitTitle = Loo { -firefox }i konto või logi sisse
|
||||||
|
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
|
||||||
|
accountBenefitLargeFiles = Jaga kuni { $size } suuruseid faile
|
||||||
|
accountBenefitDownloadCount = Jaga faile enamate inimestega
|
||||||
|
accountBenefitTimeLimit =
|
||||||
|
{ $count ->
|
||||||
|
[one] Hoia linke aktiivsena 1 päev
|
||||||
|
*[other] Hoia linke aktiivsena kuni { $count } päeva
|
||||||
|
}
|
||||||
|
accountBenefitSync = Jagatud faile saad hallata mis tahes seadmes
|
||||||
|
accountBenefitMoz = Rohkem teavet teistest { -mozilla } teenustest
|
||||||
|
signOut = Logi välja
|
||||||
|
okButton = Olgu
|
||||||
|
downloadingTitle = Allalaadimine
|
||||||
|
noStreamsWarning = Sinu veebilehitseja ei pruugi suuta nii suurt faili dekrüptida.
|
||||||
|
noStreamsOptionCopy = Kopeeri link teises brauseris avamiseks
|
||||||
|
noStreamsOptionFirefox = Proovi meie lemmikbrauserit
|
||||||
|
noStreamsOptionDownload = Jätka selle brauseriga
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } toob sinuni uhiuus { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Jaga linki failile:
|
||||||
|
shareLinkButton = Jaga linki
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Laadi “{ $name }” alla teenusega { -send-brand }, mis pakub lihtsat ja turvalist failijagamist
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ fileSizeProgress = ({ $totalSize } / { $partialSize })
|
|||||||
sendYourFilesLink = Probatu Firefox Send
|
sendYourFilesLink = Probatu Firefox 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 iraungita
|
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 Firefox Send-ek behar duen web teknologia onartzen. Zure nabigatzailea eguneratu behar duzu.
|
||||||
@@ -50,10 +50,34 @@ passwordSetError = Pasahitz hau ezin da ezarri
|
|||||||
|
|
||||||
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
|
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
|
||||||
-send-brand = Firefox Send
|
-send-brand = Firefox Send
|
||||||
|
-send-short-brand = Send
|
||||||
-firefox = Firefox
|
-firefox = Firefox
|
||||||
-mozilla = Mozilla
|
-mozilla = Mozilla
|
||||||
introTitle = Partekatu fitxategiak modu sinple eta pribatuan
|
introTitle = Partekatu fitxategiak modu sinple eta pribatuan
|
||||||
|
introDescription = { -send-brand } tresna fitxategiak partekatzeko da, muturretik muturrera zifratuta eta automatikoki iraungitzen diren loturekin. Hortaz, partekatzen duzuna pribatua izango da eta ziur egon zaitezke zure fitxategiak ez direla online egongo betirako.
|
||||||
notifyUploadEncryptDone = Zure fitxategia zifratuta eta bidaltzeko prest dago
|
notifyUploadEncryptDone = Zure fitxategia zifratuta eta bidaltzeko prest dago
|
||||||
|
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
|
||||||
|
archiveExpiryInfo = { $downloadCount } edo { $timespan } ondoren iraungiko da
|
||||||
|
timespanMinutes =
|
||||||
|
{ $num ->
|
||||||
|
[one] minutu 1
|
||||||
|
*[other] { $num } minutu
|
||||||
|
}
|
||||||
|
timespanDays =
|
||||||
|
{ $num ->
|
||||||
|
[one] egun 1
|
||||||
|
*[other] { $num } egun
|
||||||
|
}
|
||||||
|
timespanWeeks =
|
||||||
|
{ $num ->
|
||||||
|
[one] aste 1
|
||||||
|
*[other] { $num } aste
|
||||||
|
}
|
||||||
|
fileCount =
|
||||||
|
{ $num ->
|
||||||
|
[one] fitxategi 1
|
||||||
|
*[other] { $num } fitxategi
|
||||||
|
}
|
||||||
# byte abbreviation
|
# byte abbreviation
|
||||||
bytes = B
|
bytes = B
|
||||||
# kibibyte abbreviation
|
# kibibyte abbreviation
|
||||||
@@ -64,9 +88,33 @@ mb = MB
|
|||||||
gb = GB
|
gb = GB
|
||||||
# localized number and byte abbreviation. example "2.5MB"
|
# localized number and byte abbreviation. example "2.5MB"
|
||||||
fileSize = { $num }{ $units }
|
fileSize = { $num }{ $units }
|
||||||
|
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
|
||||||
|
totalSize = Tamaina guztira: { $size }
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
copyLinkDescription = Kopiatu fitxategia partekatzeko lotura:
|
||||||
|
copyLinkButton = Kopiatu lotura
|
||||||
downloadTitle = Deskargatu fitxategiak
|
downloadTitle = Deskargatu fitxategiak
|
||||||
|
downloadDescription = { -send-brand } bidez partekatu da fitxategia muturretik muturrera zifratuta eta automatikoki iraungitzen den lotura batekin.
|
||||||
|
trySendDescription = Probatu { -send-brand } fitxategiak partekatzeko modu sinple eta segururako.
|
||||||
|
# count will always be > 10
|
||||||
|
tooManyFiles =
|
||||||
|
{ $count ->
|
||||||
|
[one] Soilik fitxategi bakarra igo daiteke aldi berean.
|
||||||
|
*[other] Soilik { $count } fitxategi igo daitezke aldi berean.
|
||||||
|
}
|
||||||
|
# count will always be > 10
|
||||||
|
tooManyArchives =
|
||||||
|
{ $count ->
|
||||||
|
[one] Soilik artxibo bakarra onartzen da.
|
||||||
|
*[other] Soilik { $count } artxibo onartzen dira.
|
||||||
|
}
|
||||||
|
expiredTitle = Lotura hau iraungi da.
|
||||||
|
notSupportedDescription = { -send-brand } ez da nabigatzaile honetan ibiliko. { -send-short-brand } hobeto dabil { -firefox }(r)en azken bertsioarekin; halaber, nabigatzaile gehienen azken bertsioarekin ibiliko da.
|
||||||
downloadFirefox = Deskargatu { -firefox }
|
downloadFirefox = Deskargatu { -firefox }
|
||||||
|
legalTitle = { -send-short-brand } pribatutasun-oharra
|
||||||
legalDateStamp = 1.0 bertsioa, 2019ko martxoaren 12koa.
|
legalDateStamp = 1.0 bertsioa, 2019ko martxoaren 12koa.
|
||||||
|
# A short representation of a countdown timer containing the number of days, hours, and minutes remaining as digits, example "2d 11h 56m"
|
||||||
|
expiresDaysHoursMinutes = { $days }e { $hours }h { $minutes }m
|
||||||
addFilesButton = Hautatu igotzeko fitxategiak
|
addFilesButton = Hautatu igotzeko fitxategiak
|
||||||
uploadButton = Igo
|
uploadButton = Igo
|
||||||
# the first part of the string 'Drag and drop files or click to send up to 1GB'
|
# the first part of the string 'Drag and drop files or click to send up to 1GB'
|
||||||
@@ -76,8 +124,32 @@ dragAndDropFiles = Arrastatu eta jaregin fitxategiak
|
|||||||
orClickWithSize = edo egin klik { $size } arte igotzeko
|
orClickWithSize = edo egin klik { $size } arte igotzeko
|
||||||
addPassword = Babestu pasahitzarekin
|
addPassword = Babestu pasahitzarekin
|
||||||
emailPlaceholder = Idatzi zure helbide elektronikoa
|
emailPlaceholder = Idatzi zure helbide elektronikoa
|
||||||
signInButton = Hasi saioa/eman izena
|
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
|
||||||
|
signInSizeBump = Hasi saioa { $size } arte bidaltzeko
|
||||||
|
signInOnlyButton = Hasi saioa
|
||||||
accountBenefitTitle = Sortu { -firefox } kontu bat edo hasi saioa
|
accountBenefitTitle = Sortu { -firefox } kontu bat edo hasi saioa
|
||||||
# $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 = Partekatu { $size } arteko fitxategiak
|
accountBenefitLargeFiles = Partekatu { $size } arteko fitxategiak
|
||||||
accountBenefitDownloadCount = Partekatu fitxategiak jende gehiagorekin
|
accountBenefitDownloadCount = Partekatu fitxategiak jende gehiagorekin
|
||||||
|
accountBenefitTimeLimit =
|
||||||
|
{ $count ->
|
||||||
|
[one] Utzi loturak erabilgarri egun batez
|
||||||
|
*[other] Utzi loturak erabilgarri { $count } egunez
|
||||||
|
}
|
||||||
|
accountBenefitSync = Kudeatu partekatutako fitxategiak edozein gailutatik
|
||||||
|
accountBenefitMoz = { -mozilla }ren beste zerbitzuei buruzko argibide gehiago
|
||||||
|
signOut = Amaitu saioa
|
||||||
|
okButton = Ados
|
||||||
|
downloadingTitle = Deskargatzen
|
||||||
|
noStreamsWarning = Baliteke nabigatzailea gai ez izatea horrelako tamaina handiko fitxategiak deszifratzeko.
|
||||||
|
noStreamsOptionCopy = Kopiatu lotura beste nabigatzaile batean irekitzeko
|
||||||
|
noStreamsOptionFirefox = Probatu gure nabigatzaile gogokoena
|
||||||
|
noStreamsOptionDownload = Jarraitu nabigatzaile honekin
|
||||||
|
downloadFirefoxPromo = Erabat berritutako { -firefox }(e)k eskaintzen dizu { -send-short-brand }
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Partekatu zure fitxategirako lotura:
|
||||||
|
shareLinkButton = Partekatu lotura
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Deskargatu "{ $name }" { -send-brand } erabiliz: fitxategi-partekatze sinple eta segurua
|
||||||
|
trailheadPromo = Badago zure pribatutasuna babesteko modua. Egizu bat Firefoxekin.
|
||||||
|
learnMore = Argibide gehiago.
|
||||||
|
|||||||
@@ -1,31 +1,9 @@
|
|||||||
# Firefox Send is a brand name and should not be localized.
|
# Firefox Send is a brand name and should not be localized.
|
||||||
title = Firefox Send
|
title = Firefox Send
|
||||||
siteSubtitle = آزمایش وب
|
|
||||||
siteFeedback = بازخورد
|
siteFeedback = بازخورد
|
||||||
uploadPageHeader = اشتراکگذاری پروندهها، رمزنگاری شده و خصوصی
|
|
||||||
uploadPageExplainer = پرونده های خود را به صورت ایمن، خصوصی و رمزنگاری شده با تعیین تاریخ انقضا خودکار ارسال کنید تا اطمینان پیدا کنید چیزهای شما همیشه آنلاین باقی نماند.
|
|
||||||
uploadPageLearnMore = بیشتر بدانید
|
|
||||||
uploadPageDropMessage = برای شروع بارگذاری پروندههای خود را اینجا بیاندازید
|
|
||||||
uploadPageSizeMessage = برای بیشترین قابلیت اطمینان، بهتر است که پروندهتان کمتر از ۱ گیگابایت باشد
|
|
||||||
uploadPageBrowseButton = یک پرونده را از روی کامپیوتر خود انتخاب کنید
|
|
||||||
uploadPageBrowseButton1 = یک پرونده را برای بارگذاری انتخاب کنید
|
|
||||||
uploadPageMultipleFilesAlert = بارگذاری چندین پرونده یا یک پوشه در حال حاضر پشتیبانی نمیشود.
|
|
||||||
uploadPageBrowseButtonTitle = بارگذاری پرونده
|
|
||||||
uploadingPageProgress = در حال بارگذاری پرونده { $filename } ({ $size })
|
|
||||||
importingFile = در حال وارد کردن…
|
importingFile = در حال وارد کردن…
|
||||||
verifyingFile = در حال تایید…
|
|
||||||
encryptingFile = در حال رمزنگاری…
|
encryptingFile = در حال رمزنگاری…
|
||||||
decryptingFile = در حال رمزگشایی…
|
decryptingFile = در حال رمزگشایی…
|
||||||
notifyUploadDone = بارگذاری شما پایان یافت.
|
|
||||||
uploadingPageMessage = به محض بارگذاری پرونده شما قادر خواهید بود برای آن گزینه انقضا تعیین کنید.
|
|
||||||
uploadingPageCancel = لغو بارگذاری
|
|
||||||
uploadCancelNotification = بارگذاری شما لغو شد
|
|
||||||
uploadingPageLargeFileMessage = پرونده بزرگ است و ممکن است بارگذاری آن مدتی طول بکشد. محکم بشینید!
|
|
||||||
uploadingFileNotification = هر وقت بارگذاری تمام شد به من اطلاع بده.
|
|
||||||
uploadSuccessConfirmHeader = آماده برای ارسال
|
|
||||||
uploadSvgAlt = بارگذاری
|
|
||||||
uploadSuccessTimingHeader = پیوند به پرونده شما بعد از ۱ بار دانلود یا ۲۴ ساعت حذف خواهد شد.
|
|
||||||
expireInfo = این پیوند به فایل شما پس از { $downloadCount } یا { $timespan } منقضی خواهد شد.
|
|
||||||
downloadCount =
|
downloadCount =
|
||||||
{ $num ->
|
{ $num ->
|
||||||
[one] ۱ بارگیری
|
[one] ۱ بارگیری
|
||||||
@@ -36,76 +14,26 @@ timespanHours =
|
|||||||
[one] ۱ ساعت
|
[one] ۱ ساعت
|
||||||
*[other] { $num } ساعت
|
*[other] { $num } ساعت
|
||||||
}
|
}
|
||||||
copyUrlFormLabelWithName = برای ارسال پرونده پیوند آن را رونوشت و به اشتراک بگذارید: { $filename }
|
|
||||||
copyUrlFormButton = رونوشت به کلیپبورد
|
|
||||||
copiedUrl = رونوشت شد!
|
copiedUrl = رونوشت شد!
|
||||||
deleteFileButton = حذف پرونده
|
|
||||||
sendAnotherFileLink = ارسال پرونده دیگر
|
|
||||||
# Alternative text used on the download link/button (indicates an action).
|
|
||||||
downloadAltText = دریافت
|
|
||||||
downloadsFileList = دریافتها
|
|
||||||
# Used as header in a column indicating the amount of time left before a
|
|
||||||
# download link expires (e.g. "10h 5m")
|
|
||||||
timeFileList = زمان
|
|
||||||
# Used as header in a column indicating the number of times a file has been
|
|
||||||
# downloaded
|
|
||||||
downloadFileName = بارگیری { $filename }
|
|
||||||
downloadFileSize = ({ $size })
|
|
||||||
unlockInputLabel = گذرواژه را وارد کنید
|
|
||||||
unlockInputPlaceholder = گذرواژه
|
unlockInputPlaceholder = گذرواژه
|
||||||
unlockButtonLabel = باز کردن
|
unlockButtonLabel = باز کردن
|
||||||
downloadFileTitle = دریافت پروندهٔ رمزنگاری شده
|
|
||||||
# Firefox Send is a brand name and should not be localized.
|
|
||||||
downloadMessage = دوست شما درحال ارسال پرونده ای به وسیله Firefox Send است، این سرویس این امکان را به شما میدهد تا پروندههای خود را به صورت ایمن،خصوصی و رمزنگاری شده به همراه پیوند انقضا خودکار همرسانی کنید تا اطمینان حاصل کنید چیزهای شما برای همیشه آنلاین باقی نخواهد ماند.
|
|
||||||
# Text and title used on the download link/button (indicates an action).
|
|
||||||
downloadButtonLabel = بارگیری
|
downloadButtonLabel = بارگیری
|
||||||
downloadNotification = بارگیری شما کامل شد.
|
|
||||||
downloadFinish = بارگیری کامل شد
|
downloadFinish = بارگیری کامل شد
|
||||||
# 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 = Firefox Send را امتحان کنید
|
sendYourFilesLink = Firefox Send را امتحان کنید
|
||||||
downloadingPageProgress = دریافت { $filename } ({ $size })
|
|
||||||
downloadingPageMessage = لطفا این زبانه را باز بگذارید در حالی که ما فایل شما را دریافت میکنیم و کدگذاری میکنیم.
|
|
||||||
errorAltText = خطا در بارگذاری
|
|
||||||
errorPageHeader = چیزی دچار اشکال شده است!
|
errorPageHeader = چیزی دچار اشکال شده است!
|
||||||
errorPageMessage = خطایی در هنگام بارگذاری پرونده شما رخ داده است.
|
|
||||||
errorPageLink = پرونده دیگری ارسال کنید.
|
|
||||||
fileTooBig = این پرونده بسیار حجیم است. حجم آن میبایستی کم تر { $size } باشد.
|
fileTooBig = این پرونده بسیار حجیم است. حجم آن میبایستی کم تر { $size } باشد.
|
||||||
linkExpiredAlt = پیوند منقضی شده است
|
linkExpiredAlt = پیوند منقضی شده است
|
||||||
expiredPageHeader = پیوند منقضی شده است یا در از همان ابتدا وجود نداشته است!
|
|
||||||
notSupportedHeader = مرورگر شما پشتیبانی نمیکند.
|
notSupportedHeader = مرورگر شما پشتیبانی نمیکند.
|
||||||
# Firefox Send is a brand name and should not be localized.
|
|
||||||
notSupportedDetail = متاسفانه این مرورگر این تکنولوژی وب را که به Firefox Send قدرت میبخشد را پشتیبانی نمیکند. شما بایستی مرورگری دیگری را امتحان کنید. پیشنهاد ما به شما فایرفاکس است !
|
|
||||||
notSupportedLink = چرا مرورگر من پشتیبانی نمیکند؟
|
notSupportedLink = چرا مرورگر من پشتیبانی نمیکند؟
|
||||||
notSupportedOutdatedDetail = متاسفانه این نسخه از فایرفاکس این تکنولوژی وب که به Firefox Send قدرت میبخشد را پشتیبانی نمیکند. شما نیاز دارید تا مرورگر خود را بروز کنید.
|
notSupportedOutdatedDetail = متاسفانه این نسخه از فایرفاکس این تکنولوژی وب که به Firefox Send قدرت میبخشد را پشتیبانی نمیکند. شما نیاز دارید تا مرورگر خود را بروز کنید.
|
||||||
updateFirefox = بروزرسانی فایرفاکس
|
updateFirefox = بروزرسانی فایرفاکس
|
||||||
downloadFirefoxButtonSub = دریافت رایگان
|
|
||||||
uploadedFile = پرونده
|
|
||||||
copyFileList = رونوشت از نشانی
|
|
||||||
# expiryFileList is used as a column header
|
|
||||||
expiryFileList = زمان انقضا
|
|
||||||
deleteFileList = حذف
|
|
||||||
nevermindButton = بیخیال
|
|
||||||
legalHeader = شرایط و حریمخصوصی
|
|
||||||
legalNoticeTestPilot = Firefox Send در حال حاضر در نسخه آزمایشی خود به صورت میدهد و تحت عنوان خلبان آموزشی <a>شرایط و خدمات</a> و <a>موارد حریم خصوصی </a> کار میکند. شما میتوانید اطلاعات بیشتر در مورد این آزمایش و اطلاعات که ذخیره میکنید را از <a> اینجا </a> کسب کنید.
|
|
||||||
legalNoticeMozilla = استفاده از Firefox Send همچنین منصوب به موزیلا است. <a>پایگاه اینترنتی نکات حریم شخصی </a> و <a> پایگاه اطلاع رسانی شرایط خدمات و استفاده </a>.
|
|
||||||
deletePopupText = حذف این پرونده؟
|
|
||||||
deletePopupYes = بله
|
|
||||||
deletePopupCancel = انصراف
|
deletePopupCancel = انصراف
|
||||||
deleteButtonHover = حذف
|
deleteButtonHover = حذف
|
||||||
copyUrlHover = رونوشت از نشانی
|
|
||||||
footerLinkLegal = ملاحظات حقوقی
|
footerLinkLegal = ملاحظات حقوقی
|
||||||
# Test Pilot is a proper name and should not be localized.
|
|
||||||
footerLinkAbout = درباره Test Pilot
|
|
||||||
footerLinkPrivacy = حریمخصوصی
|
footerLinkPrivacy = حریمخصوصی
|
||||||
footerLinkTerms = شرایط
|
|
||||||
footerLinkCookies = کوکیها
|
footerLinkCookies = کوکیها
|
||||||
requirePasswordCheckbox = دریافت این پرونده نیاز به گذرواژه دارد
|
|
||||||
addPasswordButton = افزودن گذرواژه
|
|
||||||
changePasswordButton = تغییر
|
|
||||||
passwordTryAgain = کلمه عبور اشتباه است. مجدد تلاش کنید.
|
passwordTryAgain = کلمه عبور اشتباه است. مجدد تلاش کنید.
|
||||||
reportIPInfringement = گزارش تخلف IP
|
|
||||||
javascriptRequired = Firefox Send نیازمند جاوااسکریپت است
|
javascriptRequired = Firefox Send نیازمند جاوااسکریپت است
|
||||||
whyJavascript = چرا Firefox Send جاوااسکریپت لازم داد؟
|
whyJavascript = چرا Firefox Send جاوااسکریپت لازم داد؟
|
||||||
enableJavascript = لطفا جاوااسکریپت را فعال کنید و مجددا تلاش کنید.
|
enableJavascript = لطفا جاوااسکریپت را فعال کنید و مجددا تلاش کنید.
|
||||||
@@ -113,9 +41,25 @@ enableJavascript = لطفا جاوااسکریپت را فعال کنید و م
|
|||||||
expiresHoursMinutes = { $hours }ساعت { $minutes }دقیقه
|
expiresHoursMinutes = { $hours }ساعت { $minutes }دقیقه
|
||||||
# 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 } دقیقه
|
expiresMinutes = { $minutes } دقیقه
|
||||||
# A short status message shown when a password is successfully set
|
|
||||||
passwordIsSet = گذرواژه تنظیم شد
|
|
||||||
# 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 = حداکثر اندازهٔ گذرواژه: { $length }
|
maxPasswordLength = حداکثر اندازهٔ گذرواژه: { $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 = امکان ثبت این گذواژه نیست
|
passwordSetError = امکان ثبت این گذواژه نیست
|
||||||
|
|
||||||
|
## Send version 2 strings
|
||||||
|
|
||||||
|
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
|
||||||
|
-send-brand = Firefox Send
|
||||||
|
-send-short-brand = ارسال
|
||||||
|
-firefox = فایرفاکس
|
||||||
|
-mozilla = موزیلا
|
||||||
|
# byte abbreviation
|
||||||
|
bytes = B
|
||||||
|
# kibibyte abbreviation
|
||||||
|
kb = KB
|
||||||
|
# mebibyte abbreviation
|
||||||
|
mb = MB
|
||||||
|
# gibibyte abbreviation
|
||||||
|
gb = GB
|
||||||
|
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
|
||||||
|
totalSize = حجم کل: { $size }
|
||||||
|
|||||||
@@ -65,13 +65,13 @@ timespanMinutes =
|
|||||||
}
|
}
|
||||||
timespanDays =
|
timespanDays =
|
||||||
{ $num ->
|
{ $num ->
|
||||||
[one] 1 päivä
|
[one] 1 päivän
|
||||||
*[other] { $num } päivää
|
*[other] { $num } päivän
|
||||||
}
|
}
|
||||||
timespanWeeks =
|
timespanWeeks =
|
||||||
{ $num ->
|
{ $num ->
|
||||||
[one] 1 viikko
|
[one] 1 viikon
|
||||||
*[other] { $num } viikkoa
|
*[other] { $num } viikon
|
||||||
}
|
}
|
||||||
fileCount =
|
fileCount =
|
||||||
{ $num ->
|
{ $num ->
|
||||||
@@ -126,7 +126,7 @@ addPassword = Suojaa salasanalla
|
|||||||
emailPlaceholder = Kirjoita sähköpostiosoitteesi
|
emailPlaceholder = Kirjoita sähköpostiosoitteesi
|
||||||
# $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 = Kirjautumalla voit lähettää jopa { $size } kokoisia tiedostoja
|
signInSizeBump = Kirjautumalla voit lähettää jopa { $size } kokoisia tiedostoja
|
||||||
signInButton = Kirjaudu tai rekisteröidy
|
signInOnlyButton = Kirjaudu sisään
|
||||||
accountBenefitTitle = Luo { -firefox }-tili tai kirjaudu sisään
|
accountBenefitTitle = Luo { -firefox }-tili tai kirjaudu sisään
|
||||||
# $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 = Jaa jopa { $size } kokoisia tiedostoja
|
accountBenefitLargeFiles = Jaa jopa { $size } kokoisia tiedostoja
|
||||||
@@ -145,3 +145,11 @@ noStreamsWarning = Tämä selain ei välttämättä osaa purkaa salausta näin s
|
|||||||
noStreamsOptionCopy = Kopioi linkki avataksesi sen toisessa selaimessa
|
noStreamsOptionCopy = Kopioi linkki avataksesi sen toisessa selaimessa
|
||||||
noStreamsOptionFirefox = Kokeile suosikkiselaintamme
|
noStreamsOptionFirefox = Kokeile suosikkiselaintamme
|
||||||
noStreamsOptionDownload = Jatka tällä selaimella
|
noStreamsOptionDownload = Jatka tällä selaimella
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } on olemassa kiitos uuden { -firefox }in.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Jaa linkki tiedostoosi:
|
||||||
|
shareLinkButton = Jaa linkki
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Lataa tiedosto ”{ $name }” { -send-brand } -palvelusta: yksinkertaista ja turvallista tiedostonjakoa
|
||||||
|
trailheadPromo = On tapa suojata yksityisyyttään. Liity Firefoxiin.
|
||||||
|
learnMore = Lue lisää.
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ addPassword = Protéger par mot de passe
|
|||||||
emailPlaceholder = Votre adresse électronique
|
emailPlaceholder = Votre adresse électronique
|
||||||
# $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 = Connectez-vous pour envoyer jusqu’à { $size }
|
signInSizeBump = Connectez-vous pour envoyer jusqu’à { $size }
|
||||||
signInButton = Se connecter/S’inscrire
|
signInOnlyButton = Connexion
|
||||||
accountBenefitTitle = Créez un compte { -firefox } ou connectez-vous
|
accountBenefitTitle = Créez un compte { -firefox } ou connectez-vous
|
||||||
# $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 = Partagez des fichiers jusqu’à { $size }
|
accountBenefitLargeFiles = Partagez des fichiers jusqu’à { $size }
|
||||||
@@ -145,3 +145,11 @@ noStreamsWarning = Ce navigateur pourrait ne pas être en mesure de déchiffrer
|
|||||||
noStreamsOptionCopy = Copiez le lien pour l’ouvrir dans un autre navigateur
|
noStreamsOptionCopy = Copiez le lien pour l’ouvrir dans un autre navigateur
|
||||||
noStreamsOptionFirefox = Essayez notre navigateur préféré
|
noStreamsOptionFirefox = Essayez notre navigateur préféré
|
||||||
noStreamsOptionDownload = Continuer avec ce navigateur
|
noStreamsOptionDownload = Continuer avec ce navigateur
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } vous est proposé par le tout nouveau { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Partagez le lien vers votre fichier :
|
||||||
|
shareLinkButton = Partager le lien
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Télécharger « { $name } » avec { -send-brand } : un moyen simple et sûr de partager des fichiers
|
||||||
|
trailheadPromo = Il existe un moyen de protéger votre vie privée. Rejoignez Firefox.
|
||||||
|
learnMore = En savoir plus.
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ addPassword = Mei wachtwurd beskermje
|
|||||||
emailPlaceholder = Fier jo e-mailadres yn
|
emailPlaceholder = Fier jo e-mailadres yn
|
||||||
# $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 = Meld jo oan, om bestannen oant { $size } te stjoeren
|
signInSizeBump = Meld jo oan, om bestannen oant { $size } te stjoeren
|
||||||
signInButton = Oanmelde/Registrearje
|
signInOnlyButton = Oanmelde
|
||||||
accountBenefitTitle = Meitsje in { -firefox }-account of meld jo oan
|
accountBenefitTitle = Meitsje in { -firefox }-account of meld jo oan
|
||||||
# $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 = Diel bestannen oant { $size }
|
accountBenefitLargeFiles = Diel bestannen oant { $size }
|
||||||
@@ -145,3 +145,11 @@ noStreamsWarning = Dizze browser kin in sa'n grut bestân mooglik net fersiferje
|
|||||||
noStreamsOptionCopy = Kopiearje de koppeling om yn in oare browser te iepenjen
|
noStreamsOptionCopy = Kopiearje de koppeling om yn in oare browser te iepenjen
|
||||||
noStreamsOptionFirefox = Probearje ús favorite browser
|
noStreamsOptionFirefox = Probearje ús favorite browser
|
||||||
noStreamsOptionDownload = Trochgean mei dizze browser
|
noStreamsOptionDownload = Trochgean mei dizze browser
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } wurdt jo oanbean troch it folslein fernijde { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Diel de keppeling nei jo bestân:
|
||||||
|
shareLinkButton = Keppeling diele
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Download ‘{ $name }’ mei { -send-brand }: ienfâldich, feilich bestannen diele
|
||||||
|
trailheadPromo = Der is in manier om jo privacy te beskermjen. Doch mei mei Firefox.
|
||||||
|
learnMore = Mear ynfo.
|
||||||
|
|||||||
@@ -1,66 +1,158 @@
|
|||||||
# Firefox Send is a brand name and should not be localized.
|
# Firefox Send is a brand name and should not be localized.
|
||||||
title = Firefox Send
|
title = Firefox Send
|
||||||
siteSubtitle = ניסוי אינטרנט
|
|
||||||
siteFeedback = משוב
|
siteFeedback = משוב
|
||||||
uploadPageHeader = שיתוף קבצים פרטי, מוצפן
|
|
||||||
uploadPageExplainer = לשלוח קבצים דרך קישור בטוח, פרטי ומוצפן שפג אוטומטית, כדי לוודא שהתכנים הפרטיים שלך לא יהיו ברשת לנצח.
|
|
||||||
uploadPageLearnMore = מידע נוסף
|
|
||||||
uploadPageDropMessage = יש לגרור קבצים לכאן כדי להתחיל בהעלאה
|
|
||||||
uploadPageSizeMessage = להשגת ביצועים מיטביים, מוטב לשמור על הקובץ מתחת לגודל של 1 ג״ב
|
|
||||||
uploadPageBrowseButton1 = נא לבחור קובץ להעלאה
|
|
||||||
uploadPageMultipleFilesAlert = העלאה של מספר קבצים או ספריה אינה נתמכת כרגע.
|
|
||||||
uploadPageBrowseButtonTitle = העלאת קובץ
|
|
||||||
uploadingPageProgress = { $filename } ({ $size }) בהעלאה
|
|
||||||
importingFile = מתבצע ייבוא...
|
importingFile = מתבצע ייבוא...
|
||||||
verifyingFile = מתבצע אימות…
|
|
||||||
encryptingFile = מתבצעת הצפנה...
|
encryptingFile = מתבצעת הצפנה...
|
||||||
decryptingFile = מתבצע פענוח...
|
decryptingFile = מתבצע פענוח...
|
||||||
notifyUploadDone = ההעלאה שלך הסתיימה
|
downloadCount =
|
||||||
uploadingPageMessage = אחרי שהקובץ שלך יעלה, ניתן יהיה להגדיר אפשרויות תפוגה.
|
{ $num ->
|
||||||
uploadCancelNotification = ההעלאה שלך בוטלה.
|
[one] הורדה אחת
|
||||||
uploadingPageLargeFileMessage = קובץ זה גדול ועלול לקחת זמן להעלות אותו. סבלנות!
|
*[other] { $num } הורדות
|
||||||
uploadingFileNotification = נא להודיע לי כשתסתיים ההעלאה.
|
}
|
||||||
uploadSuccessConfirmHeader = מוכן לשליחה
|
timespanHours =
|
||||||
uploadSvgAlt = העלאה
|
{ $num ->
|
||||||
uploadSuccessTimingHeader = הקישור לקובץ שלך יפוג אחרי הורדה אחת או בעוד 24 שעות.
|
[one] שעה אחת
|
||||||
copyUrlFormLabelWithName = ניתן להעתיק ולשתף את הקישור כדי לשלוח את הקובץ שלך: { $filename }
|
[two] שעתיים
|
||||||
|
*[other] { $num } שעות
|
||||||
|
}
|
||||||
copiedUrl = הועתק!
|
copiedUrl = הועתק!
|
||||||
deleteFileButton = מחיקת קובץ
|
unlockInputPlaceholder = ססמה
|
||||||
sendAnotherFileLink = שליחת קובץ נוסף
|
unlockButtonLabel = שחרור נעילה
|
||||||
# Alternative text used on the download link/button (indicates an action).
|
|
||||||
downloadAltText = הורדה
|
|
||||||
# Used as header in a column indicating the number of times a file has been
|
|
||||||
# downloaded
|
|
||||||
downloadFileName = ההורדה נכשלה
|
|
||||||
downloadFileSize = ({ $size })
|
|
||||||
# Text and title used on the download link/button (indicates an action).
|
|
||||||
downloadButtonLabel = הורדה
|
downloadButtonLabel = הורדה
|
||||||
downloadNotification = ההורדה הושלמה.
|
|
||||||
downloadFinish = ההורדה הושלמה
|
downloadFinish = ההורדה הושלמה
|
||||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
|
||||||
fileSizeProgress = ({ $partialSize } מתוך { $totalSize })
|
fileSizeProgress = ({ $partialSize } מתוך { $totalSize })
|
||||||
downloadingPageProgress = בהורדה: { $filename } ({ $size })
|
sendYourFilesLink = נסו את Firefox Send
|
||||||
errorAltText = תקלה בהעלאה
|
|
||||||
errorPageHeader = משהו השתבש!
|
errorPageHeader = משהו השתבש!
|
||||||
errorPageLink = שליחת קובץ נוסף
|
|
||||||
fileTooBig = הקובץ הזה גדול מידי להעלאה. עליו להיות קטן מ־{ $size }.
|
fileTooBig = הקובץ הזה גדול מידי להעלאה. עליו להיות קטן מ־{ $size }.
|
||||||
linkExpiredAlt = הקישור פג
|
linkExpiredAlt = הקישור פג
|
||||||
notSupportedHeader = הדפדפן שלך לא נתמך.
|
notSupportedHeader = הדפדפן שלך לא נתמך.
|
||||||
notSupportedLink = למה אין תמיכה בדפדפן שלי?
|
notSupportedLink = למה אין תמיכה בדפדפן שלי?
|
||||||
downloadFirefoxButtonSub = הורדה בחינם
|
notSupportedOutdatedDetail = לצערנו גרסת Firefox זו לא תומכת בטכנולוגית הרשת שמפעילה את Firefox Send. יש לעדכן את הגרסה של הדפדפן שלך.
|
||||||
uploadedFile = קובץ
|
updateFirefox = עדכון Firefox
|
||||||
copyFileList = העתקת כתובת
|
|
||||||
# expiryFileList is used as a column header
|
|
||||||
expiryFileList = יפוג בעוד
|
|
||||||
deleteFileList = מחיקה
|
|
||||||
nevermindButton = לא משנה
|
|
||||||
legalHeader = תנאי שירות ופרטיות
|
|
||||||
deletePopupText = למחוק דף זה?
|
|
||||||
deletePopupYes = כן
|
|
||||||
deletePopupCancel = ביטול
|
deletePopupCancel = ביטול
|
||||||
deleteButtonHover = מחיקה
|
deleteButtonHover = מחיקה
|
||||||
copyUrlHover = העתקת קישור
|
|
||||||
footerLinkLegal = מידע משפטי
|
footerLinkLegal = מידע משפטי
|
||||||
footerLinkPrivacy = פרטיות
|
footerLinkPrivacy = פרטיות
|
||||||
footerLinkTerms = תנאי שימוש
|
|
||||||
footerLinkCookies = קובצי עוגיות
|
footerLinkCookies = קובצי עוגיות
|
||||||
|
passwordTryAgain = סיסמה שגויה. נא לנסות שוב.
|
||||||
|
javascriptRequired = ל־Firefox Send דרוש JavaScript
|
||||||
|
whyJavascript = למה ל־Firefox 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
|
||||||
|
|
||||||
|
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
|
||||||
|
-send-brand = Firefox 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] דקה אחת
|
||||||
|
*[other] { $num } דקות
|
||||||
|
}
|
||||||
|
timespanDays =
|
||||||
|
{ $num ->
|
||||||
|
[one] יום אחד
|
||||||
|
[two] יומיים
|
||||||
|
*[other] { $num } ימים
|
||||||
|
}
|
||||||
|
timespanWeeks =
|
||||||
|
{ $num ->
|
||||||
|
[one] שבוע אחד
|
||||||
|
[two] שבועיים
|
||||||
|
*[other] { $num } שבועות
|
||||||
|
}
|
||||||
|
fileCount =
|
||||||
|
{ $num ->
|
||||||
|
[one] קובץ אחד
|
||||||
|
*[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] ניתן להעלות רק קובץ אחד בכל פעם.
|
||||||
|
*[other] ניתן להעלות רק { $count } קבצים בכל פעם.
|
||||||
|
}
|
||||||
|
# count will always be > 10
|
||||||
|
tooManyArchives =
|
||||||
|
{ $count ->
|
||||||
|
[one] רק ארכיון אחד מורשה.
|
||||||
|
*[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] שמירה על קישורים פעילים עד ליום אחד
|
||||||
|
*[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 = ישנן דרכים נוספות להגן על הפרטיות שלכם. הצטרפו אל Firefox.
|
||||||
|
learnMore = מידע נוסף.
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ addPassword = Zaštitite lozinkom
|
|||||||
emailPlaceholder = Unesite svoju adresu e-pošte
|
emailPlaceholder = Unesite svoju adresu e-pošte
|
||||||
# $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 = Prijavite se za slanje do { $size }
|
signInSizeBump = Prijavite se za slanje do { $size }
|
||||||
signInButton = Prijavite se
|
signInOnlyButton = Prijavi se
|
||||||
accountBenefitTitle = Stvorite { -firefox } račun ili se prijavite
|
accountBenefitTitle = Stvorite { -firefox } račun ili se prijavite
|
||||||
# $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 = Dijelite datoteke do { $size }
|
accountBenefitLargeFiles = Dijelite datoteke do { $size }
|
||||||
@@ -154,3 +154,11 @@ noStreamsWarning = Ovaj preglednik možda neće moći dekriptirati datoteku ove
|
|||||||
noStreamsOptionCopy = Kopirajte poveznicu kako biste je otvorili u drugom pregledniku
|
noStreamsOptionCopy = Kopirajte poveznicu kako biste je otvorili u drugom pregledniku
|
||||||
noStreamsOptionFirefox = Isprobajte naš omiljeni preglednik
|
noStreamsOptionFirefox = Isprobajte naš omiljeni preglednik
|
||||||
noStreamsOptionDownload = Nastavite s ovim preglednikom
|
noStreamsOptionDownload = Nastavite s ovim preglednikom
|
||||||
|
downloadFirefoxPromo = Potpuno novi { -firefox } vam donosi { -send-short-brand }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Dijelite poveznicu na svoju datoteku:
|
||||||
|
shareLinkButton = Dijeli poveznicu
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Preuzmite “{ $name }” sa { -send-brand }: jednostavno i sigurno dijeljenje datoteka
|
||||||
|
trailheadPromo = Postoji način da zaštitite svoju privatnost. Pridružite se Firefoxu.
|
||||||
|
learnMore = Saznajte više.
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ addPassword = Z hesłom škitać
|
|||||||
emailPlaceholder = Zapodajće swoju e-mejlowu adresu
|
emailPlaceholder = Zapodajće swoju e-mejlowu adresu
|
||||||
# $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 = Přizjewće so, zo byšće do { $size } pósłał
|
signInSizeBump = Přizjewće so, zo byšće do { $size } pósłał
|
||||||
signInButton = Přizjewić/Registrować
|
signInOnlyButton = Přizjewić
|
||||||
accountBenefitTitle = Załožće konto { -firefox } abo přizjewće so
|
accountBenefitTitle = Załožće konto { -firefox } abo přizjewće so
|
||||||
# $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 = Dataje do { $size } dźělić
|
accountBenefitLargeFiles = Dataje do { $size } dźělić
|
||||||
@@ -163,3 +163,11 @@ noStreamsWarning = Tutón wobhladowak njemóhł tajku wulku dataju dešifrować.
|
|||||||
noStreamsOptionCopy = Kopěrujće wotkaz, zo byšće jón w druhim wobhladowaku wočinił
|
noStreamsOptionCopy = Kopěrujće wotkaz, zo byšće jón w druhim wobhladowaku wočinił
|
||||||
noStreamsOptionFirefox = Wupruwujće naš najlubši wobhladowak
|
noStreamsOptionFirefox = Wupruwujće naš najlubši wobhladowak
|
||||||
noStreamsOptionDownload = Z tutym wobhladowakom pokročować
|
noStreamsOptionDownload = Z tutym wobhladowakom pokročować
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } so wam přez cyle nowy { -firefox } přinjese.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Dźělće wotkaz k swojej dataji:
|
||||||
|
shareLinkButton = Wotkaz dźělić
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Sćehńće „{ $name }“ z { -send-brand }: jednore, wěste dźělenje datajow
|
||||||
|
trailheadPromo = Je móžnosć, wašu priwatnosć škitać. Přińdźće k Firefox.
|
||||||
|
learnMore = Dalše informacije.
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ addPassword = Jelszavas védelem
|
|||||||
emailPlaceholder = Adja meg az e-mail címét
|
emailPlaceholder = Adja meg az e-mail címét
|
||||||
# $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 = Jelentkezzen be, és küldjön legfeljebb { $size }-ot
|
signInSizeBump = Jelentkezzen be, és küldjön legfeljebb { $size }-ot
|
||||||
signInButton = Bejelentkezés/regisztráció
|
signInOnlyButton = Bejelentkezés
|
||||||
accountBenefitTitle = Hozzon létre egy { -firefox } fiókot vagy jelentkezzen be
|
accountBenefitTitle = Hozzon létre egy { -firefox } fiókot vagy jelentkezzen be
|
||||||
# $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 = Osszon meg fájlokat { $size }-ig
|
accountBenefitLargeFiles = Osszon meg fájlokat { $size }-ig
|
||||||
@@ -145,3 +145,11 @@ noStreamsWarning = Előfordulhat, hogy a böngésző nem fog tudni visszafejteni
|
|||||||
noStreamsOptionCopy = Másolja a hivatkozást, és nyissa meg egy másik böngészőben
|
noStreamsOptionCopy = Másolja a hivatkozást, és nyissa meg egy másik böngészőben
|
||||||
noStreamsOptionFirefox = Próbálja ki a kedvenc böngészőnket
|
noStreamsOptionFirefox = Próbálja ki a kedvenc böngészőnket
|
||||||
noStreamsOptionDownload = Folytatás ezzel a böngészővel
|
noStreamsOptionDownload = Folytatás ezzel a böngészővel
|
||||||
|
downloadFirefoxPromo = A { -send-short-brand }et a vadonatúj { -firefox } hozza el Önnek.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Ossza meg a fájlja hivatkozását:
|
||||||
|
shareLinkButton = Hivatkozás megosztása
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = „{ $name }” letöltése a { -send-brand } segítségével: egyszerű, biztonságos fájlmegosztás
|
||||||
|
trailheadPromo = Védje meg a magánszféráját. Csatlakozzon a Firefoxhoz.
|
||||||
|
learnMore = További tudnivalók.
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ passwordSetError = Iste contrasigno non pote ser definite
|
|||||||
-firefox = Firefox
|
-firefox = Firefox
|
||||||
-mozilla = Mozilla
|
-mozilla = Mozilla
|
||||||
introTitle = Comparti file in maniera confidential
|
introTitle = Comparti file in maniera confidential
|
||||||
|
introDescription = { -send-brand } te pone in grado de compartir files con cryptographia bilateral e un ligamine que automaticamente expira. Assi que tu pote mantener private lo que tu comparti e liberar te del anxietate que tu problema resta online per sempre.
|
||||||
notifyUploadEncryptDone = Tu file es cryptate e preste pro ser inviate.
|
notifyUploadEncryptDone = Tu file es cryptate e preste pro ser inviate.
|
||||||
# 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 = Expira post { $downloadCount } o { $timespan }
|
archiveExpiryInfo = Expira post { $downloadCount } o { $timespan }
|
||||||
@@ -93,6 +94,8 @@ totalSize = Dimension total: { $size }
|
|||||||
copyLinkDescription = Copia le ligamine pro compartir le file:
|
copyLinkDescription = Copia le ligamine pro compartir le file:
|
||||||
copyLinkButton = Copiar ligamine
|
copyLinkButton = Copiar ligamine
|
||||||
downloadTitle = Discargar files
|
downloadTitle = Discargar files
|
||||||
|
downloadDescription = Iste file era compartite via { -send-brand } con cryptographia bilateral e un ligamine que expira automaticamente.
|
||||||
|
trySendDescription = Prova { -send-brand } pro le compartimento de file simple e secur.
|
||||||
# count will always be > 10
|
# count will always be > 10
|
||||||
tooManyFiles =
|
tooManyFiles =
|
||||||
{ $count ->
|
{ $count ->
|
||||||
@@ -106,6 +109,7 @@ tooManyArchives =
|
|||||||
*[other] Solo { $count } archivos es consentite.
|
*[other] Solo { $count } archivos es consentite.
|
||||||
}
|
}
|
||||||
expiredTitle = Iste ligamine ha expirate.
|
expiredTitle = Iste ligamine ha expirate.
|
||||||
|
notSupportedDescription = { -send-brand } non functionara con iste navigator. { -send-short-brand } functiona melio con le ultime version de { -firefox }, e functionara con le version actual de plure navigatores.
|
||||||
downloadFirefox = Discargar { -firefox }
|
downloadFirefox = Discargar { -firefox }
|
||||||
legalTitle = Politica de confidentialitate de { -send-short-brand }
|
legalTitle = Politica de confidentialitate de { -send-short-brand }
|
||||||
legalDateStamp = Version 1.0 del 12 martio 2019
|
legalDateStamp = Version 1.0 del 12 martio 2019
|
||||||
@@ -119,10 +123,10 @@ dragAndDropFiles = Traher e deponer files
|
|||||||
# $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")
|
||||||
orClickWithSize = o cliccar pro inviar usque { $size }
|
orClickWithSize = o cliccar pro inviar usque { $size }
|
||||||
addPassword = Proteger per contrasigno
|
addPassword = Proteger per contrasigno
|
||||||
emailPlaceholder = Insere tu adresse email
|
emailPlaceholder = Insere tu adresse de e-mail
|
||||||
# $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 = Accede pro inviar usque { $size }
|
signInSizeBump = Accede pro inviar usque { $size }
|
||||||
signInButton = Authentica/registra te
|
signInOnlyButton = Authentica te
|
||||||
accountBenefitTitle = Crea un conto { -firefox } o registra te
|
accountBenefitTitle = Crea un conto { -firefox } o registra te
|
||||||
# $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 files usque { $size }
|
accountBenefitLargeFiles = Comparti files usque { $size }
|
||||||
@@ -137,6 +141,15 @@ accountBenefitMoz = Discoperi altere servicios de { -mozilla }
|
|||||||
signOut = Disconnecter
|
signOut = Disconnecter
|
||||||
okButton = OK
|
okButton = OK
|
||||||
downloadingTitle = Discargamento
|
downloadingTitle = Discargamento
|
||||||
|
noStreamsWarning = Iste navigator pote non pote decifrar un file assi grande.
|
||||||
noStreamsOptionCopy = Copiar le ligamine e aperir lo in un altere navigator
|
noStreamsOptionCopy = Copiar le ligamine e aperir lo in un altere navigator
|
||||||
noStreamsOptionFirefox = Prova nostre navigator favorite
|
noStreamsOptionFirefox = Prova nostre navigator favorite
|
||||||
noStreamsOptionDownload = Continuar con iste navigator
|
noStreamsOptionDownload = Continuar con iste navigator
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } es portate a te per le novissime { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Condivide le ligamine a tu file:
|
||||||
|
shareLinkButton = Condivide ligamine
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Discarga “{ $name }” con { -send-brand }: condivide files in modo simple e secur
|
||||||
|
trailheadPromo = Il ha un via pro proteger tu confidentialitate. Junge te a Firefox!
|
||||||
|
learnMore = Saper plus.
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ addPassword = Lindungi dengan kata sandi
|
|||||||
emailPlaceholder = Masukkan surel Anda
|
emailPlaceholder = Masukkan surel Anda
|
||||||
# $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 = Masuk untuk dapat mengirim hingga { $size }
|
signInSizeBump = Masuk untuk dapat mengirim hingga { $size }
|
||||||
signInButton = Masuk/Daftar
|
signInOnlyButton = Masuk
|
||||||
accountBenefitTitle = Buat { -firefox } Account atau masuk
|
accountBenefitTitle = Buat { -firefox } Account atau masuk
|
||||||
# $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 = Bagikan berkas hingga { $size }
|
accountBenefitLargeFiles = Bagikan berkas hingga { $size }
|
||||||
@@ -130,9 +130,17 @@ accountBenefitTimeLimit =
|
|||||||
accountBenefitSync = Kelola berkas yang dibagikan dari perangkat apa pun
|
accountBenefitSync = Kelola berkas yang dibagikan dari perangkat apa pun
|
||||||
accountBenefitMoz = Pelajari tentang layanan { -mozilla } lainnya
|
accountBenefitMoz = Pelajari tentang layanan { -mozilla } lainnya
|
||||||
signOut = Keluar
|
signOut = Keluar
|
||||||
okButton = OK
|
okButton = Oke
|
||||||
downloadingTitle = Mengunduh
|
downloadingTitle = Mengunduh
|
||||||
noStreamsWarning = Peramban ini mungkin tidak dapat mendekripsi berkas sebesar ini.
|
noStreamsWarning = Peramban ini mungkin tidak dapat mendekripsi berkas sebesar ini.
|
||||||
noStreamsOptionCopy = Salin tautan untuk dibuka di peramban lainnya
|
noStreamsOptionCopy = Salin tautan untuk dibuka di peramban lainnya
|
||||||
noStreamsOptionFirefox = Coba peramban favorit kami
|
noStreamsOptionFirefox = Coba peramban favorit kami
|
||||||
noStreamsOptionDownload = Lanjutkan dengan peramban ini
|
noStreamsOptionDownload = Lanjutkan dengan peramban ini
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } dipersembahkan untuk Anda oleh { -firefox } terbaru.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Bagikan tautan ke berkas Anda:
|
||||||
|
shareLinkButton = Bagikan tautan
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Unduh "{ $name }" dengan { -send-brand }: berbagi berkas dengan sederhana dan aman
|
||||||
|
trailheadPromo = Ada cara untuk melindungi privasi Anda. Bergabunglah dengan Firefox.
|
||||||
|
learnMore = Pelajari lebih lanjut.
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ addPassword = Proteggi con una password
|
|||||||
emailPlaceholder = Inserisci il tuo indirizzo email
|
emailPlaceholder = Inserisci il tuo indirizzo email
|
||||||
# $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 = Accedi per inviare fino a { $size }
|
signInSizeBump = Accedi per inviare fino a { $size }
|
||||||
signInButton = Accedi o registrati
|
signInOnlyButton = Accedi
|
||||||
accountBenefitTitle = Crea un account { -firefox } o accedi
|
accountBenefitTitle = Crea un account { -firefox } o accedi
|
||||||
# $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 = Condividi file fino a { $size }
|
accountBenefitLargeFiles = Condividi file fino a { $size }
|
||||||
@@ -137,3 +137,11 @@ noStreamsWarning = Questo browser potrebbe non essere in grado di decrittare un
|
|||||||
noStreamsOptionCopy = Copia il link e aprilo in un altro browser
|
noStreamsOptionCopy = Copia il link e aprilo in un altro browser
|
||||||
noStreamsOptionFirefox = Prova il nostro browser preferito
|
noStreamsOptionFirefox = Prova il nostro browser preferito
|
||||||
noStreamsOptionDownload = Continua con questo browser
|
noStreamsOptionDownload = Continua con questo browser
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } è offerto dal nuovissimo { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Condividi il link al tuo file:
|
||||||
|
shareLinkButton = Condividi link
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Scarica “{ $name }” con { -send-brand }: condivisione di file semplice e sicura
|
||||||
|
trailheadPromo = C’è un modo per proteggere la tua privacy. Entra a far parte di Firefox.
|
||||||
|
learnMore = Ulteriori informazioni.
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ addPassword = パスワードで保護
|
|||||||
emailPlaceholder = メールアドレスを入力
|
emailPlaceholder = メールアドレスを入力
|
||||||
# $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 = ログインすると最大 { $size } のファイルを送信できます
|
signInSizeBump = ログインすると最大 { $size } のファイルを送信できます
|
||||||
signInButton = ログイン/登録
|
signInOnlyButton = ログイン
|
||||||
accountBenefitTitle = { -firefox } アカウントを作成またはログイン
|
accountBenefitTitle = { -firefox } アカウントを作成またはログイン
|
||||||
# $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 = 最大 { $size } までのファイルを共有
|
accountBenefitLargeFiles = 最大 { $size } までのファイルを共有
|
||||||
@@ -135,3 +135,10 @@ downloadingTitle = ダウンロード中
|
|||||||
noStreamsWarning = このブラウザーは、この大きさのファイルを復号化できません。
|
noStreamsWarning = このブラウザーは、この大きさのファイルを復号化できません。
|
||||||
noStreamsOptionCopy = リンクをコピーして他のブラウザーで開いてください
|
noStreamsOptionCopy = リンクをコピーして他のブラウザーで開いてください
|
||||||
noStreamsOptionDownload = このブラウザーで続ける
|
noStreamsOptionDownload = このブラウザーで続ける
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = ファイルへのリンクを共有しましょう:
|
||||||
|
shareLinkButton = リンクを共有
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = { -send-brand } で "{ $name }" をダウンロード: シンプルで安全なファイル共有
|
||||||
|
trailheadPromo = プライバシーを保護する方法があります。Firefox を試してください。
|
||||||
|
learnMore = 詳細情報
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ addPassword = პაროლით დაცვა
|
|||||||
emailPlaceholder = შეიყვანეთ ელფოსტა
|
emailPlaceholder = შეიყვანეთ ელფოსტა
|
||||||
# $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 = შედით ანგარიშზე, რომ გაგზავნოთ { $size }-მდე
|
signInSizeBump = შედით ანგარიშზე, რომ გაგზავნოთ { $size }-მდე
|
||||||
signInButton = ანგარიშზე შესვლა/შექმნა
|
signInOnlyButton = შესვლა
|
||||||
accountBenefitTitle = შექმენით { -firefox }-ანგარიში ან შედით
|
accountBenefitTitle = შექმენით { -firefox }-ანგარიში ან შედით
|
||||||
# $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 = გააზიარეთ ფაილები { $size }-მდე
|
accountBenefitLargeFiles = გააზიარეთ ფაილები { $size }-მდე
|
||||||
@@ -145,3 +145,11 @@ noStreamsWarning = ამ ბრაუზერმა, შესაძლოა
|
|||||||
noStreamsOptionCopy = ბმულის ასლის აღება სხვა ბრაუზერში გასახსნელად
|
noStreamsOptionCopy = ბმულის ასლის აღება სხვა ბრაუზერში გასახსნელად
|
||||||
noStreamsOptionFirefox = სცადეთ ჩვენი რჩეული ბრაუზერი
|
noStreamsOptionFirefox = სცადეთ ჩვენი რჩეული ბრაუზერი
|
||||||
noStreamsOptionDownload = განაგრძეთ ამ ბრაუზერით
|
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 = იხილეთ ვრცლად.
|
||||||
|
|||||||
@@ -54,6 +54,10 @@ passwordSetError = Awal-agi uffir ur izmir ara ad ittwabaded
|
|||||||
-firefox = Firefox
|
-firefox = Firefox
|
||||||
-mozilla = Mozilla
|
-mozilla = Mozilla
|
||||||
introTitle = Afessas, beṭṭu n ifuyla s wudem uslig
|
introTitle = Afessas, beṭṭu n ifuyla s wudem uslig
|
||||||
|
introDescription = { -send-brand } ad k(yeǧǧ ad tebḍuḍ ifuyla iwgelhanensi ṭṭerf ɣer ṭṭerf akked useɣwen ara yemmten s wudem awurman. Daɣen, ad tizmireḍ ad tḥ€rzeḍ ayen i tbeṭṭuḍ s wudem uslig daɣen ad temneḍ imi agbur-ik ur yettɣimi ara srid i lebda.
|
||||||
|
notifyUploadEncryptDone = Afaylu-ik yewgelhen daɣen ihegga i tuzna
|
||||||
|
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
|
||||||
|
archiveExpiryInfo = Ad yemmet deffir { $downloadCount } neɣ { $timespan }
|
||||||
timespanMinutes =
|
timespanMinutes =
|
||||||
{ $num ->
|
{ $num ->
|
||||||
[one] 1 n tsedat
|
[one] 1 n tsedat
|
||||||
@@ -90,17 +94,62 @@ totalSize = Tuɣzi s umata: { $size }
|
|||||||
copyLinkDescription = Nɣel aseɣwen akken ad tebḍuḍ afaylu-inek
|
copyLinkDescription = Nɣel aseɣwen akken ad tebḍuḍ afaylu-inek
|
||||||
copyLinkButton = Nɣel aseɣwen
|
copyLinkButton = Nɣel aseɣwen
|
||||||
downloadTitle = Sider ifuyla
|
downloadTitle = Sider ifuyla
|
||||||
|
downloadDescription = Afaylu-a yettwabḍa s { -send-brand } s uwgelhen s ṭṭerf ɣer ṭṭerf s useɣwen ara yemmten s wudem awurman.
|
||||||
|
trySendDescription = Ɛreḍ { -send-brand } i beḍḍu afessas n ifuyla s wudem ameɣtu.
|
||||||
|
# count will always be > 10
|
||||||
|
tooManyFiles =
|
||||||
|
{ $count ->
|
||||||
|
[one] Ala 1 n ufaylu i yemzren ad yali i tikkelt.
|
||||||
|
*[other] Ala { $count } n yifuyla i yemzren ad alin i tikkelt.
|
||||||
|
}
|
||||||
|
# count will always be > 10
|
||||||
|
tooManyArchives =
|
||||||
|
{ $count ->
|
||||||
|
[one] Ala 1 n teṛcibt i yettwasirgen.
|
||||||
|
*[other] Ala { $count } n teṛcibin i yettwasiregn.
|
||||||
|
}
|
||||||
expiredTitle = Immut useɣwen.
|
expiredTitle = Immut useɣwen.
|
||||||
|
notSupportedDescription = { -send-brand } ur iteddu ara s yiminig-a. { -send-short-brand } iteddu akken iwata s lqem aneggaru n { -firefox }, daɣen iteddu s lqem amiran n tuget n yiminigen.
|
||||||
downloadFirefox = Sider { -firefox }
|
downloadFirefox = Sider { -firefox }
|
||||||
|
legalTitle = Tasertit tabaḍnit n { -send-short-brand }
|
||||||
legalDateStamp = Lqem 1.0, azemz n 12 Meɣres 2019
|
legalDateStamp = Lqem 1.0, azemz n 12 Meɣres 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 } ass { $hours } srg { $minutes } tsd
|
||||||
addFilesButton = Fren ifuyla ad tessaliḍ
|
addFilesButton = Fren ifuyla ad tessaliḍ
|
||||||
uploadButton = Sali
|
uploadButton = Sali
|
||||||
# the first part of the string 'Drag and drop files or click to send up to 1GB'
|
# the first part of the string 'Drag and drop files or click to send up to 1GB'
|
||||||
dragAndDropFiles = Ẓuɣer sakin sers ifuyla
|
dragAndDropFiles = Ẓuɣer sakin sers ifuyla
|
||||||
|
# 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 = neɣ sit akken ad tazneḍ arma d { $size }
|
||||||
addPassword = Ḥrez s wawal uffir
|
addPassword = Ḥrez s wawal uffir
|
||||||
emailPlaceholder = Sekcem imayl inek
|
emailPlaceholder = Sekcem imayl inek
|
||||||
signInButton = Kcem/jerred
|
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
|
||||||
|
signInSizeBump = Qqen akken ad tazneḍ arma d { $size }
|
||||||
|
signInOnlyButton = Qqen
|
||||||
|
accountBenefitTitle = Rnu amiḍan { -firefox } akken ad teqqneḍ
|
||||||
|
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
|
||||||
|
accountBenefitLargeFiles = Bḍu ifuyla arma d { $size }
|
||||||
|
accountBenefitDownloadCount = Bḍu ifuyla d wugan n medden
|
||||||
|
accountBenefitTimeLimit =
|
||||||
|
{ $count ->
|
||||||
|
[one] Eǧǧ iseɣwan d urmiden arma d 1 n wass
|
||||||
|
*[other] Eǧǧ iseɣwan d urmiden arma d { $count } n wassan
|
||||||
|
}
|
||||||
|
accountBenefitSync = Sefrek ifuyla yebdan seg yal ibenk
|
||||||
|
accountBenefitMoz = Issin ugar ɣef yimeẓla-nniḍen n { -mozilla }
|
||||||
signOut = Ffeɣ
|
signOut = Ffeɣ
|
||||||
okButton = IH
|
okButton = IH
|
||||||
downloadingTitle = Azdam
|
downloadingTitle = Azdam
|
||||||
|
noStreamsWarning = Iminig-a ur yezmir ara ad yezmek afaylu meqqren.
|
||||||
|
noStreamsOptionCopy = Nɣel aseɣwen i tulya deg yiminig-nniden
|
||||||
|
noStreamsOptionFirefox = Ɛreḍ iminig-ik ufrin
|
||||||
noStreamsOptionDownload = Kemmel akked iminig-a
|
noStreamsOptionDownload = Kemmel akked iminig-a
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } yettwasumer i yal { -firefox } amaynut.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Bḍu aseɣwen ɣer ufaylu-ik:
|
||||||
|
shareLinkButton = Bḍu aseɣwen
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Sider "{ $name }" s { -send-brand }: d fessas, d aɣelsan i beṭṭu n yifuyla.
|
||||||
|
trailheadPromo = Yella wallal n ummesten n tudert-ik tusligt. Ddu ɣer Firefox.
|
||||||
|
learnMore = Issin ugar.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ siteFeedback = 사용자 의견
|
|||||||
importingFile = 가져오는 중…
|
importingFile = 가져오는 중…
|
||||||
encryptingFile = 암호화 중…
|
encryptingFile = 암호화 중…
|
||||||
decryptingFile = 복호화 중…
|
decryptingFile = 복호화 중…
|
||||||
downloadCount = { $num } 다운로드
|
downloadCount = 다운로드 { $num }회
|
||||||
timespanHours = 1 시간
|
timespanHours = 1 시간
|
||||||
copiedUrl = 복사 완료!
|
copiedUrl = 복사 완료!
|
||||||
unlockInputPlaceholder = 비밀번호
|
unlockInputPlaceholder = 비밀번호
|
||||||
@@ -49,7 +49,7 @@ introTitle = 간단하고, 사생활을 보호하는 파일 공유
|
|||||||
introDescription = { -send-brand }를 사용하면 종단 암호화와 자동으로 만료되는 링크를 사용해 파일을 공유할 수 있습니다. 안전하게 공유할 수 있고 공유된 파일이 계속 온라인에 남지 않게 됩니다.
|
introDescription = { -send-brand }를 사용하면 종단 암호화와 자동으로 만료되는 링크를 사용해 파일을 공유할 수 있습니다. 안전하게 공유할 수 있고 공유된 파일이 계속 온라인에 남지 않게 됩니다.
|
||||||
notifyUploadEncryptDone = 파일이 암호화 되어서 보낼 수 있게 됐습니다
|
notifyUploadEncryptDone = 파일이 암호화 되어서 보낼 수 있게 됐습니다
|
||||||
# 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 = { $downloadCount }나 { $timespan } 후 만료됨
|
archiveExpiryInfo = { $downloadCount } 혹은 { $timespan } 후 만료됨
|
||||||
timespanMinutes =
|
timespanMinutes =
|
||||||
{ $num ->
|
{ $num ->
|
||||||
*[other] { $num }분
|
*[other] { $num }분
|
||||||
@@ -98,15 +98,21 @@ expiredTitle = 이 링크는 만료되었습니다.
|
|||||||
notSupportedDescription = { -send-brand }는 이 브라우저와 작동하지 않습니다. { -send-short-brand }는 최신 { -firefox }와 가장 잘 작동하며, 대부분의 최신 웹 브라우저와도 잘 작동합니다.
|
notSupportedDescription = { -send-brand }는 이 브라우저와 작동하지 않습니다. { -send-short-brand }는 최신 { -firefox }와 가장 잘 작동하며, 대부분의 최신 웹 브라우저와도 잘 작동합니다.
|
||||||
downloadFirefox = 다운로드 { -firefox }
|
downloadFirefox = 다운로드 { -firefox }
|
||||||
legalTitle = { -send-short-brand } 개인정보 보호 공지
|
legalTitle = { -send-short-brand } 개인정보 보호 공지
|
||||||
|
legalDateStamp = 버전 1.0, 2019년 3월 12일 출시됨
|
||||||
# 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 }일 { $hours }시간 { $minutes }분
|
expiresDaysHoursMinutes = { $days }일 { $hours }시간 { $minutes }분
|
||||||
addFilesButton = 업로드할 파일을 선택하세요
|
addFilesButton = 업로드할 파일을 선택하세요
|
||||||
uploadButton = 업로드
|
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 = 비밀번호로 파일 보호
|
addPassword = 비밀번호로 파일 보호
|
||||||
emailPlaceholder = 이메일 입력
|
emailPlaceholder = 이메일 입력
|
||||||
# $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 = { $size }까지 파일을 보낼 수 있게 로그인
|
signInSizeBump = { $size }까지 파일을 보낼 수 있게 로그인
|
||||||
signInButton = 로그인/등록
|
signInOnlyButton = 로그인
|
||||||
accountBenefitTitle = { -firefox } 계정을 하나 만들거나, 로그인
|
accountBenefitTitle = { -firefox } 계정을 하나 만들거나, 로그인
|
||||||
# $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 = { $size }까지의 파일 공유
|
accountBenefitLargeFiles = { $size }까지의 파일 공유
|
||||||
@@ -121,4 +127,14 @@ signOut = 로그아웃
|
|||||||
okButton = 확인
|
okButton = 확인
|
||||||
downloadingTitle = 다운로드 중
|
downloadingTitle = 다운로드 중
|
||||||
noStreamsWarning = 이 브라우저는 이렇게 큰 용량의 파일 암호화를 풀 수 없을 수도 있습니다.
|
noStreamsWarning = 이 브라우저는 이렇게 큰 용량의 파일 암호화를 풀 수 없을 수도 있습니다.
|
||||||
|
noStreamsOptionCopy = 다른 브라우저에서 열 수 있도록 링크를 복사
|
||||||
|
noStreamsOptionFirefox = 우리가 애용하는 브라우저를 사용해 보세요
|
||||||
noStreamsOptionDownload = 이 브라우저로 계속하기
|
noStreamsOptionDownload = 이 브라우저로 계속하기
|
||||||
|
downloadFirefoxPromo = 완전히 새로운 { -firefox }로 { -send-short-brand }가 제공됩니다.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = 파일 링크 공유:
|
||||||
|
shareLinkButton = 링크 공유
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = { -send-brand }으로 “{ $name }” 파일을 내려받으세요: 쉽고 안전한 파일 공유입니다.
|
||||||
|
trailheadPromo = 개인 정보를 보호하는 방법이 있습니다. 파이어폭스와 함께 하세요.
|
||||||
|
learnMore = 자세히 알아보기
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ addPassword = Apsaugoti slaptažodžiu
|
|||||||
emailPlaceholder = Įveskite savo el. pašto adresą
|
emailPlaceholder = Įveskite savo el. pašto adresą
|
||||||
# $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 = Prisijunkite, jeigu norite siųsti iki { $size }
|
signInSizeBump = Prisijunkite, jeigu norite siųsti iki { $size }
|
||||||
signInButton = Prisijungti / registruotis
|
signInOnlyButton = Prisijungti
|
||||||
accountBenefitTitle = Susikurkite „{ -firefox }“ paskyrą arba prisijunkite
|
accountBenefitTitle = Susikurkite „{ -firefox }“ paskyrą arba prisijunkite
|
||||||
# $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 = Dalinkitės iki { $size } dydžio failais
|
accountBenefitLargeFiles = Dalinkitės iki { $size } dydžio failais
|
||||||
@@ -162,3 +162,11 @@ noStreamsWarning = jūsų naršyklei gali nepavykti iššifruoti tokio didelio f
|
|||||||
noStreamsOptionCopy = Nukopijuokite saitą ir atverkite jį kita naršykle
|
noStreamsOptionCopy = Nukopijuokite saitą ir atverkite jį kita naršykle
|
||||||
noStreamsOptionFirefox = Išbandykite mūsų mėgstamiausią naršyklę
|
noStreamsOptionFirefox = Išbandykite mūsų mėgstamiausią naršyklę
|
||||||
noStreamsOptionDownload = Tęsti naudojantis šia naršykle
|
noStreamsOptionDownload = Tęsti naudojantis šia naršykle
|
||||||
|
downloadFirefoxPromo = „{ -send-short-brand }“ jums atkeliauja iš naujosios „{ -firefox }“.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Pasidalinkite saitu į jūsų failą:
|
||||||
|
shareLinkButton = Dalintis saitu
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Atsisiųskite „{ $name }“ su „{ -send-brand }“: paprastas, saugus dalinimasis failais
|
||||||
|
trailheadPromo = Yra būdas apsaugoti jūsų privatumą. Naudokite „Firefox“.
|
||||||
|
learnMore = Sužinoti daugiau.
|
||||||
|
|||||||
153
public/locales/ml/send.ftl
Normal file
153
public/locales/ml/send.ftl
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
# Firefox Send is a brand name and should not be localized.
|
||||||
|
title = ഫയർഫോക്സ് സെൻഡ്
|
||||||
|
siteFeedback = പ്രതികരണം
|
||||||
|
importingFile = ഇറക്കുമതി ചെയ്യുന്നു...
|
||||||
|
encryptingFile = എൻക്രിപ്റ്റ് ചെയ്യുന്നു...
|
||||||
|
decryptingFile = ഡീക്രിപ്റ്റ് ചെയ്യുന്നു...
|
||||||
|
downloadCount =
|
||||||
|
{ $num ->
|
||||||
|
[one] ഒരു ഡൗൺലോഡ്
|
||||||
|
*[other] { $num } ഡൗൺലോഡുകൾ
|
||||||
|
}
|
||||||
|
timespanHours =
|
||||||
|
{ $num ->
|
||||||
|
[one] 1 മണിക്കൂർ
|
||||||
|
*[other] { $num } മണിക്കൂറുകൾ
|
||||||
|
}
|
||||||
|
copiedUrl = പകർത്തി!
|
||||||
|
unlockInputPlaceholder = രഹസ്യവാക്ക്
|
||||||
|
unlockButtonLabel = തുറക്കുക
|
||||||
|
downloadButtonLabel = ഡൗൺലോഡ്
|
||||||
|
downloadFinish = ഡൗൺലോഡ് പൂർത്തിയായി
|
||||||
|
fileSizeProgress = ({ $totalSize } -ന്റെ { $partialSize })
|
||||||
|
sendYourFilesLink = ഫയർഫോക്സ് സെൻഡ് പരീക്ഷിക്കൂ
|
||||||
|
errorPageHeader = എന്തോ പ്രശ്നമുണ്ട്!
|
||||||
|
fileTooBig = ഈ ഫയൽ വളരെ വലുതായതിനാൽ അപ്ലോഡ് ചെയ്യാൻ സാധിച്ചില്ല. പരമാവധി വലുപ്പം { $size } ആണ്.
|
||||||
|
linkExpiredAlt = കണ്ണി കാലഹരണപ്പെട്ടു
|
||||||
|
notSupportedHeader = താങ്കളുടെ ബ്രൗസറിന് പിന്തുണയില്ല.
|
||||||
|
notSupportedLink = എന്തുകൊണ്ടാണ് എന്റെ ബ്രൗസറിന് പിന്തുണയില്ലാത്തത്?
|
||||||
|
notSupportedOutdatedDetail = ദൗർഭാഗ്യവശാൽ ഫയർഫോക്സിന്റെ ഈ പതിപ്പ് ഫയർഫോക്സ് സെൻഡ് ഉപയോഗിക്കുന്ന വെബ് സാങ്കേതികവിദ്യ പിന്തുണയ്ക്കുന്നില്ല. താങ്കൾ താങ്കളുടെ ബ്രൗസർ പുതുക്കേണ്ടി വരും.
|
||||||
|
updateFirefox = ഫയർഫോക്സ് പുതുക്കൂ
|
||||||
|
deletePopupCancel = റദ്ദാക്കുക
|
||||||
|
deleteButtonHover = നീക്കം ചെയ്യുക
|
||||||
|
footerLinkLegal = നിയമസംബന്ധവിവരങ്ങൾ
|
||||||
|
footerLinkPrivacy = സ്വകാര്യത
|
||||||
|
footerLinkCookies = കുക്കികൾ
|
||||||
|
passwordTryAgain = രഹസ്യവാക്ക് തെറ്റാണ്. വീണ്ടും ശ്രമിക്കുക.
|
||||||
|
javascriptRequired = ഫയർഫോക്സ് സെൻഡ് പ്രവർത്തിക്കാൻ ജാവാസ്ക്രിപ്റ്റ് വേണം
|
||||||
|
whyJavascript = ഫയർഫോക്സ് സെൻഡ് പ്രവർത്തിക്കാൻ എന്തിനാണ് ജാവാസ്ക്രിപ്റ്റ്?
|
||||||
|
enableJavascript = ദയവായി ജാവാസ്ക്രിപ്റ്റ് പ്രവർത്തനസജ്ജമാക്കിയിട്ട് വീണ്ടും ശ്രമിക്കുക.
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
|
||||||
|
-send-brand = ഫയർഫോക്സ് സെൻഡ്
|
||||||
|
-send-short-brand = സെൻഡ്
|
||||||
|
-firefox = ഫയർഫോക്സ്
|
||||||
|
-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] മിനുട്ട്
|
||||||
|
*[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] ഒരു ആർക്കൈവ് മാത്രമേ അനുവദിച്ചിട്ടുള്ളൂ.
|
||||||
|
*[other] { $count } ആർക്കൈവുകൾ മാത്രമേ അനുവദിച്ചിട്ടുള്ളൂ.
|
||||||
|
}
|
||||||
|
expiredTitle = ഈ ലിങ്ക് കാലഹരണപ്പെട്ടു.
|
||||||
|
notSupportedDescription = ഈ ബ്രൌസറിൽ { -send-brand } പ്രവർത്തിക്കില്ല. { -send-short-brand } { -firefox }- ന്റെ ഏറ്റവും പുതിയ പതിപ്പിൽ വളരെ നന്നായി പ്രവർത്തിക്കുന്നു, കൂടാതെ മിക്ക ബ്രൌസറുകളുടെയും നിലവിലെ പതിപ്പിൽ പ്രവർത്തിക്കുകയും ചെയ്യും.
|
||||||
|
downloadFirefox = { -firefox } ഡൗണ്ലോഡ് ചെയ്യുക
|
||||||
|
legalTitle = { -send-short-brand } സ്വകാര്യതാ അറിയിപ്പ്
|
||||||
|
legalDateStamp = 2019 മാർച്ച് 12 തീയതിയിൽ പതിപ്പ് 1.0
|
||||||
|
# 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] ഒരു ദിവസം വരെ ലിങ്കുകൾ സജീവമായി നിലനിർത്തുക
|
||||||
|
*[other] { $count } ദിവസം വരെ ലിങ്കുകൾ സജീവമായി നിലനിർത്തുക
|
||||||
|
}
|
||||||
|
accountBenefitSync = ഏതൊരു ഉപകരണത്തിൽ നിന്നും പങ്കിട്ട ഫയലുകൾ കൈകാര്യം ചെയ്യുക
|
||||||
|
accountBenefitMoz = മറ്റ് { -mozilla } സേവനങ്ങളെക്കുറിച്ച് അറിയുക
|
||||||
|
signOut = പുറത്തിറങ്ങുക
|
||||||
|
okButton = ശരി
|
||||||
|
downloadingTitle = ഡൌണ്ലോഡ് ചെയ്യുന്നു
|
||||||
|
noStreamsWarning = ഇത്ര വലിയ ഫയൽ ബ്രൌസറില് ഡീക്രിപ്റ്റ് ചെയ്യാൻ കഴിഞ്ഞേക്കില്ല.
|
||||||
|
noStreamsOptionCopy = മറ്റൊരു ബ്രൗസറിൽ തുറക്കുന്നതിന് ലിങ്ക് പകർത്തുക
|
||||||
|
noStreamsOptionFirefox = ഞങ്ങളുടെ പ്രിയപ്പെട്ട ബ്രൗസർ പരീക്ഷിക്കുക
|
||||||
|
noStreamsOptionDownload = ഈ ബ്രൗസറിൽ തുടരുക
|
||||||
|
downloadFirefoxPromo = എറ്റവും പുതിയ { -firefox } { -send-short-brand } മുഖേന നിങ്ങൾക്ക് എത്തിച്ചിരിക്കുന്നു.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = നിങ്ങളുടെ ഫയലിനുള്ള കണ്ണി പങ്കിടുക:
|
||||||
|
shareLinkButton = കണ്ണി പങ്കിടുക
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = "{ -send-brand }" ഉപയോഗിച്ച് { $name } ഡൌൺലോഡ് ചെയ്യുക: ലളിതവും സുരക്ഷിതവുമായ ഫയൽ പങ്കിടൽ
|
||||||
@@ -54,6 +54,7 @@ passwordSetError = Dette passordet kunne ikke settes
|
|||||||
-firefox = Firefox
|
-firefox = Firefox
|
||||||
-mozilla = Mozilla
|
-mozilla = Mozilla
|
||||||
introTitle = Enkel, privat fildeling
|
introTitle = Enkel, privat fildeling
|
||||||
|
introDescription = { -send-brand } lar deg dele filer via en tidsbegrenset lenke med ende-til-ende-kryptering. På den måten kan du dele filer privat og samtidig være trygg på at filene dine ikke blir liggende på nettet for alltid.
|
||||||
notifyUploadEncryptDone = Filen din er kryptert og klar til å sende
|
notifyUploadEncryptDone = Filen din er kryptert og klar til å sende
|
||||||
# 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 = Utløper etter { $downloadCount } eller { $timespan }
|
archiveExpiryInfo = Utløper etter { $downloadCount } eller { $timespan }
|
||||||
@@ -77,9 +78,78 @@ fileCount =
|
|||||||
[one] 1 fil
|
[one] 1 fil
|
||||||
*[other] { $num } filer
|
*[other] { $num } filer
|
||||||
}
|
}
|
||||||
# size is a localized number followed by a unit of bytes, ex. 2.5GB
|
# 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 = Total størrelse: { $size }
|
totalSize = Total størrelse: { $size }
|
||||||
# the next line after the colon contains a file name
|
# the next line after the colon contains a file name
|
||||||
copyLinkDescription = Kopier lenken for å dele filen din:
|
copyLinkDescription = Kopier lenken for å dele filen din:
|
||||||
copyLinkButton = Kopier lenke
|
copyLinkButton = Kopier lenke
|
||||||
downloadTitle = Last ned filer
|
downloadTitle = Last ned filer
|
||||||
|
downloadDescription = Denne filen ble delt via { -send-brand } med ende-til-ende-kryptering og en lenke som automatisk utløper.
|
||||||
|
trySendDescription = Prøv { -send-brand } for enkel, sikker fildeling.
|
||||||
|
# count will always be > 10
|
||||||
|
tooManyFiles =
|
||||||
|
{ $count ->
|
||||||
|
[one] Kun 1 fil kan lastes opp om gangen.
|
||||||
|
*[other] Kun { $count } filer kan lastes opp om gangen.
|
||||||
|
}
|
||||||
|
# count will always be > 10
|
||||||
|
tooManyArchives =
|
||||||
|
{ $count ->
|
||||||
|
[one] Kun 1 arkiv er tillatt.
|
||||||
|
*[other] Kun { $count } arkiver er tillatt.
|
||||||
|
}
|
||||||
|
expiredTitle = Denne lenken er utløpt.
|
||||||
|
notSupportedDescription = { -send-brand } virker ikke med denne nettleseren. { -send-short-brand } fungerer best med den nyeste versjonen av { -firefox }, og vil fungere med den nyeste versjonen av de fleste nettlesere.
|
||||||
|
downloadFirefox = Last ned { -firefox }
|
||||||
|
legalTitle = { -send-short-brand } Personvernerklæring
|
||||||
|
legalDateStamp = Versjon 1.0, datert den 12. mars 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 }t { $minutes }m
|
||||||
|
addFilesButton = Velg filer du vil laste opp
|
||||||
|
uploadButton = Last opp
|
||||||
|
# the first part of the string 'Drag and drop files or click to send up to 1GB'
|
||||||
|
dragAndDropFiles = Dra og slipp filer
|
||||||
|
# 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 = eller klikk for å sende filer på opptil { $size }
|
||||||
|
addPassword = Beskytt med passord
|
||||||
|
emailPlaceholder = Skriv inn e-postadressen din
|
||||||
|
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
|
||||||
|
signInSizeBump = Logg inn for å sende opptil { $size }
|
||||||
|
signInOnlyButton = Logg inn
|
||||||
|
accountBenefitTitle = Opprett en { -firefox }-konto eller logg inn
|
||||||
|
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
|
||||||
|
accountBenefitLargeFiles = Del filer på opptil { $size }
|
||||||
|
accountBenefitDownloadCount = Del filer med flere personer
|
||||||
|
accountBenefitTimeLimit =
|
||||||
|
{ $count ->
|
||||||
|
[one] Hold lenker aktiv opptil 1 dag
|
||||||
|
*[other] Hold lenker aktiv opptil { $count } dager
|
||||||
|
}
|
||||||
|
accountBenefitSync = Behandle delte filer fra en hvilken som helst enhet
|
||||||
|
accountBenefitMoz = Les om andre { -mozilla }-tjenester
|
||||||
|
signOut = Logg ut
|
||||||
|
okButton = OK
|
||||||
|
downloadingTitle = Laster ned
|
||||||
|
noStreamsWarning = Denne nettleseren kan kanskje ikke dekryptere en så stor fil.
|
||||||
|
noStreamsOptionCopy = Kopier lenken for å åpne den i en annen nettleser
|
||||||
|
noStreamsOptionFirefox = Prøv favorittnettleseren vår
|
||||||
|
noStreamsOptionDownload = Fortsett med denne nettleseren
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } presenteres for deg av den helt nye { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Del lenken til filen din:
|
||||||
|
shareLinkButton = Del lenke
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Last ned ‹{ $name }› med { -send-brand }: enkel, trygg fildeling
|
||||||
|
trailheadPromo = Det finnes en måte å ta vare på personvernet ditt. Bruk Firefox.
|
||||||
|
learnMore = Les mer.
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ addPassword = Beveiligen met wachtwoord
|
|||||||
emailPlaceholder = Voer uw e-mailadres in
|
emailPlaceholder = Voer uw e-mailadres in
|
||||||
# $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 = Meld u aan om tot { $size } te versturen
|
signInSizeBump = Meld u aan om tot { $size } te versturen
|
||||||
signInButton = Aanmelden/Registreren
|
signInOnlyButton = Aanmelden
|
||||||
accountBenefitTitle = Maak een { -firefox }-account of meld u aan
|
accountBenefitTitle = Maak een { -firefox }-account of meld u aan
|
||||||
# $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 = Bestanden tot { $size } delen
|
accountBenefitLargeFiles = Bestanden tot { $size } delen
|
||||||
@@ -145,3 +145,11 @@ noStreamsWarning = Deze browser kan een bestand van deze omvang mogelijk niet on
|
|||||||
noStreamsOptionCopy = Koppeling kopiëren om in een andere browser te openen
|
noStreamsOptionCopy = Koppeling kopiëren om in een andere browser te openen
|
||||||
noStreamsOptionFirefox = Onze favoriete browser proberen
|
noStreamsOptionFirefox = Onze favoriete browser proberen
|
||||||
noStreamsOptionDownload = Doorgaan met deze browser
|
noStreamsOptionDownload = Doorgaan met deze browser
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } wordt u aangeboden door het volledig vernieuwde { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Deel de koppeling naar uw bestand:
|
||||||
|
shareLinkButton = Koppeling delen
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Download ‘{ $name }’ met { -send-brand }: eenvoudig, veilig bestanden delen
|
||||||
|
trailheadPromo = Er is een manier om uw privacy te beschermen. Doe mee met Firefox.
|
||||||
|
learnMore = Meer info.
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ addPassword = Vern med passord
|
|||||||
emailPlaceholder = Skriv inn e-postadressa di
|
emailPlaceholder = Skriv inn e-postadressa di
|
||||||
# $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 = Logg inn for å sende filer på opptil { $size }
|
signInSizeBump = Logg inn for å sende filer på opptil { $size }
|
||||||
signInButton = Logg inn/Registrer deg
|
signInOnlyButton = Logg inn
|
||||||
accountBenefitTitle = Lag ein { -firefox }-konto eller logg inn
|
accountBenefitTitle = Lag ein { -firefox }-konto eller logg inn
|
||||||
# $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 = Del filer på opptil { $size }
|
accountBenefitLargeFiles = Del filer på opptil { $size }
|
||||||
@@ -145,3 +145,11 @@ noStreamsWarning = Denne nettlesaren kan kanskje ikkje dekryptere ei så stor fi
|
|||||||
noStreamsOptionCopy = Kopier lenka for å opne henne i ein annan nettlesar
|
noStreamsOptionCopy = Kopier lenka for å opne henne i ein annan nettlesar
|
||||||
noStreamsOptionFirefox = Prøv favorittnettlesaren vår
|
noStreamsOptionFirefox = Prøv favorittnettlesaren vår
|
||||||
noStreamsOptionDownload = Fortset med denne nettlesaren
|
noStreamsOptionDownload = Fortset med denne nettlesaren
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } vert presentert for deg av den heilt nye { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Del lenka til fila di:
|
||||||
|
shareLinkButton = Del lenke
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Last ned "{ $name }" med { -send-brand }: enkel, trygg fildelning
|
||||||
|
trailheadPromo = Det finst ein måte å ta vare på personvernet ditt. Ver med Firefox på ferda.
|
||||||
|
learnMore = Les meir.
|
||||||
|
|||||||
155
public/locales/oc/send.ftl
Normal file
155
public/locales/oc/send.ftl
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
# Firefox Send is a brand name and should not be localized.
|
||||||
|
title = Firefox Send
|
||||||
|
siteFeedback = Comentaris
|
||||||
|
importingFile = Importacion…
|
||||||
|
encryptingFile = Chiframent…
|
||||||
|
decryptingFile = Deschiframent…
|
||||||
|
downloadCount =
|
||||||
|
{ $num ->
|
||||||
|
[one] 1 telecargament
|
||||||
|
*[other] { $num } telecargaments
|
||||||
|
}
|
||||||
|
timespanHours =
|
||||||
|
{ $num ->
|
||||||
|
[one] 1 ora
|
||||||
|
*[other] { $num } oras
|
||||||
|
}
|
||||||
|
copiedUrl = Copiat !
|
||||||
|
unlockInputPlaceholder = Senhal
|
||||||
|
unlockButtonLabel = Desverrolhar
|
||||||
|
downloadButtonLabel = Telecargar
|
||||||
|
downloadFinish = Telecargament acabat
|
||||||
|
fileSizeProgress = ({ $partialSize } sus { $totalSize })
|
||||||
|
sendYourFilesLink = Ensajar Firefox Send
|
||||||
|
errorPageHeader = I a quicòm que truca.
|
||||||
|
fileTooBig = Aqueste fichièr es tròp gròs per l’enviar. Sa talha deu èsser inferiora a { $size }.
|
||||||
|
linkExpiredAlt = Lo ligam a expirat
|
||||||
|
notSupportedHeader = Vòstre navegador es pas compatible.
|
||||||
|
notSupportedLink = Perqué mon navegador es pas compatible ?
|
||||||
|
notSupportedOutdatedDetail = Aquesta version de Firefox es pas compatibla amb la tecnologia web amb la quala fonciona Firefox Send. Vos cal metre a jorn lo navegador.
|
||||||
|
updateFirefox = Metre a jorn Firefox
|
||||||
|
deletePopupCancel = Anullar
|
||||||
|
deleteButtonHover = Suprimir
|
||||||
|
footerLinkLegal = Mencions legalas
|
||||||
|
footerLinkPrivacy = Vida privada
|
||||||
|
footerLinkCookies = Cookies
|
||||||
|
passwordTryAgain = Senhal incorrècte. Tornatz ensajar.
|
||||||
|
javascriptRequired = Firefox Send requesís JavaScript
|
||||||
|
whyJavascript = Perque Firefox Send requesís JavaScript ?
|
||||||
|
enableJavascript = Volgatz activar lo JavaScript e ensajatz tornamai.
|
||||||
|
# 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 = Talha maximala del senhal : { $length }
|
||||||
|
# A short status message shown when there was an error setting the password
|
||||||
|
passwordSetError = Aqueste senhal a pas pogut èsser definit
|
||||||
|
|
||||||
|
## Send version 2 strings
|
||||||
|
|
||||||
|
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
|
||||||
|
-send-brand = Firefox Send
|
||||||
|
-send-short-brand = Send
|
||||||
|
-firefox = Firefox
|
||||||
|
-mozilla = Mozilla
|
||||||
|
introTitle = Partatge simple e privat de fichièrs
|
||||||
|
introDescription = { -send-brand } vos permet de partejar de fichièr amb un chiframent del cap a la fin e un ligam qu’expira automaticament. Atal podètz gardar privat çò que partejatz e vos assegurar que demorarà pas en linha per totjorn.
|
||||||
|
notifyUploadEncryptDone = Vòstre fichièr es chifrat e prèst per mandadís
|
||||||
|
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
|
||||||
|
archiveExpiryInfo = Expira aprèp { $downloadCount } o { $timespan }
|
||||||
|
timespanMinutes =
|
||||||
|
{ $num ->
|
||||||
|
[one] 1 minuta
|
||||||
|
*[other] { $num } minutas
|
||||||
|
}
|
||||||
|
timespanDays =
|
||||||
|
{ $num ->
|
||||||
|
[one] 1 jorn
|
||||||
|
*[other] { $num } jorns
|
||||||
|
}
|
||||||
|
timespanWeeks =
|
||||||
|
{ $num ->
|
||||||
|
[one] 1 setmana
|
||||||
|
*[other] { $num } setmanas
|
||||||
|
}
|
||||||
|
fileCount =
|
||||||
|
{ $num ->
|
||||||
|
[one] 1 fichièr
|
||||||
|
*[other] { $num } fichièrs
|
||||||
|
}
|
||||||
|
# byte abbreviation
|
||||||
|
bytes = o
|
||||||
|
# kibibyte abbreviation
|
||||||
|
kb = Ko
|
||||||
|
# mebibyte abbreviation
|
||||||
|
mb = Mo
|
||||||
|
# gibibyte abbreviation
|
||||||
|
gb = Go
|
||||||
|
# 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 = Talha totala : { $size }
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
copyLinkDescription = Copiatz lo ligam per partejar vòstre fichièr :
|
||||||
|
copyLinkButton = Copiar lo ligam
|
||||||
|
downloadTitle = Telecargar los fichièrs
|
||||||
|
downloadDescription = Aqueste fichièr foguèt partejat via { -send-brand } amb chiframent del cap a la fin e un ligam qu’expira automaticament.
|
||||||
|
trySendDescription = Ensajatz { -send-brand } per un partiment de fichièrs simple e segur.
|
||||||
|
# count will always be > 10
|
||||||
|
tooManyFiles =
|
||||||
|
{ $count ->
|
||||||
|
[one] Òm pòt pas qu’enviar 1 fichièr al còp.
|
||||||
|
*[other] Òm pòt pas qu’enviar { $count } fichièrs al còp.
|
||||||
|
}
|
||||||
|
# count will always be > 10
|
||||||
|
tooManyArchives =
|
||||||
|
{ $count ->
|
||||||
|
[one] Pas qu’un archiu es autorizat.
|
||||||
|
*[other] Pas que { $count } archius son autorizats.
|
||||||
|
}
|
||||||
|
expiredTitle = Aqueste ligam a expirat.
|
||||||
|
notSupportedDescription = { -send-brand } foncionarà pas amb aqueste navegador. { -send-short-brand } fonciona melhor amb la darrièra version de { -firefox } e foncionarà amb la version mai recenta de la màger part dels navegadors.
|
||||||
|
downloadFirefox = Telecargar { -firefox }
|
||||||
|
legalTitle = Avís de confidencialitat de { -send-short-brand }
|
||||||
|
legalDateStamp = Version 1.0 del 12 de març 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 } j { $hours } h { $minutes } min
|
||||||
|
addFilesButton = Seleccionatz los fichièrs de mandar
|
||||||
|
uploadButton = Enviar
|
||||||
|
# the first part of the string 'Drag and drop files or click to send up to 1GB'
|
||||||
|
dragAndDropFiles = Lissatz-depausatz de fichièrs
|
||||||
|
# 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 = o clicatz per enviar fins a { $size }
|
||||||
|
addPassword = Protegir amb un senhal
|
||||||
|
emailPlaceholder = Picatz vòstra adreça electronica
|
||||||
|
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
|
||||||
|
signInSizeBump = Connectatz-vos per enviar fins a { $size }
|
||||||
|
signInOnlyButton = Connexion
|
||||||
|
accountBenefitTitle = Creatz un compte { -firefox } o connectatz-vos
|
||||||
|
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
|
||||||
|
accountBenefitLargeFiles = Partejatz de fichièrs fins a { $size }
|
||||||
|
accountBenefitDownloadCount = Partejatz de fichièrs amb mai de personas
|
||||||
|
accountBenefitTimeLimit =
|
||||||
|
{ $count ->
|
||||||
|
[one] Mantenètz los ligams actius fins a 1 jorn
|
||||||
|
*[other] Mantenètz los ligams actius fins a { $count } jorns
|
||||||
|
}
|
||||||
|
accountBenefitSync = Gerissètz los fichièrs partejats de qualque siá periferic estant
|
||||||
|
accountBenefitMoz = Aprenètz-ne mai suls autres servicis { -mozilla }
|
||||||
|
signOut = Desconnexion
|
||||||
|
okButton = D'acòrd
|
||||||
|
downloadingTitle = Telecargament
|
||||||
|
noStreamsWarning = Pòt arribar qu’aqueste navegador pòsca pas deschifrar un fichièr tan gròs.
|
||||||
|
noStreamsOptionCopy = Copiatz lo ligam per lo dobrir dins un autre navegador
|
||||||
|
noStreamsOptionFirefox = Ensajatz nòstre navegador preferit
|
||||||
|
noStreamsOptionDownload = Contunhar amb aqueste navegador
|
||||||
|
downloadFirefoxPromo = Lo nòu { -firefox } vos provesís { -send-short-brand }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Partejatz lo ligam cap a vòstre fichièr :
|
||||||
|
shareLinkButton = Partejar lo ligam
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Telecargar « { $name } » amb { -send-brand } : un biais simple e segur de partejar de fichièrs.
|
||||||
|
trailheadPromo = Existís un biais de protegir vòstra vida privada. Rejonhètz Firefox.
|
||||||
|
learnMore = Ne saber mai.
|
||||||
155
public/locales/pa-IN/send.ftl
Normal file
155
public/locales/pa-IN/send.ftl
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
# Firefox Send is a brand name and should not be localized.
|
||||||
|
title = Firefox Send
|
||||||
|
siteFeedback = ਸੁਝਾਅ
|
||||||
|
importingFile = ...ਦਰਾਮਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ
|
||||||
|
encryptingFile = ...ਇੰਕ੍ਰਿਪਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ
|
||||||
|
decryptingFile = ...ਡਿਕ੍ਰਿਪਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ
|
||||||
|
downloadCount =
|
||||||
|
{ $num ->
|
||||||
|
[one] 1 ਡਾਊਨਲੋਡ
|
||||||
|
*[other] { $num } ਡਾਊਨਲੋਡ
|
||||||
|
}
|
||||||
|
timespanHours =
|
||||||
|
{ $num ->
|
||||||
|
[one] 1 ਘੰਟਾ
|
||||||
|
*[other] { $num } ਘੰਟੇ
|
||||||
|
}
|
||||||
|
copiedUrl = ਨਕਲ ਕੀਤਾ!
|
||||||
|
unlockInputPlaceholder = ਪਾਸਵਰਡ
|
||||||
|
unlockButtonLabel = ਅਣ-ਲਾਕ ਕਰੋ
|
||||||
|
downloadButtonLabel = ਡਾਊਨਲੋਡ ਕਰੋ
|
||||||
|
downloadFinish = ਡਾਊਨਲੋਡ ਪੂਰਾ ਹੋਇਆ
|
||||||
|
fileSizeProgress = ({ $totalSize } ਵਿੱਚੋਂ { $partialSize })
|
||||||
|
sendYourFilesLink = Firefox Send ਵਰਤੋ
|
||||||
|
errorPageHeader = ਕੁਝ ਗਲਤ ਵਾਪਰਿਆ!
|
||||||
|
fileTooBig = ਇਹ ਫਾਇਲ ਅੱਪਲੋਡ ਕਰਨ ਲਈ ਬਹੁਤ ਵੱਡੀ ਹੈ। ਇਸ { $size } ਤੋਂ ਘੱਟ ਚਾਹੀਦੀ ਹੈ
|
||||||
|
linkExpiredAlt = ਲਿੰਕ ਦੀ ਮਿਆਦ ਪੁੱਗੀ
|
||||||
|
notSupportedHeader = ਤੁਹਾਡਾ ਬਰਾਊਜ਼ਰ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।
|
||||||
|
notSupportedLink = ਮੇਰਾ ਬਰਾਊਜ਼ਰ ਸਹਾਇਕ ਕਿਉ ਨਹੀਂ ਹੈ?
|
||||||
|
notSupportedOutdatedDetail = ਅਫ਼ਸੋਸ ਹੈ ਕਿ ਫਾਇਰਫਾਕਸ ਦਾ ਇਹ ਵਰਜ਼ਨ ਵੈੱਬ ਤਕਨਾਲੋਜੀ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ, ਜੋ ਕਿ Firefox Send ਨੂੰ ਬਣਾਉਂਦੀਆਂ ਹਨ। ਤੁਹਾਨੂੰ ਆਪਣੇ ਬਰਾਊਜ਼ਰ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ।
|
||||||
|
updateFirefox = ਫਾਇਰਫਾਕਸ ਅੱਪਡੇਟ ਕਰੋ
|
||||||
|
deletePopupCancel = ਰੱਦ ਕਰੋ
|
||||||
|
deleteButtonHover = ਹਟਾਓ
|
||||||
|
footerLinkLegal = ਕਨੂੰਨ
|
||||||
|
footerLinkPrivacy = ਪਰਦੇਦਾਰੀ
|
||||||
|
footerLinkCookies = ਕੂਕੀਜ਼
|
||||||
|
passwordTryAgain = ਗਲਤ ਪਾਸਵਰਡ ਹੈ। ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ।
|
||||||
|
javascriptRequired = Firefox Send ਲਈ ਜਾਵਾ-ਸਕ੍ਰਿਪਟ ਚਾਹੀਦੀ ਹੈ
|
||||||
|
whyJavascript = Firefox Send ਨੂੰ ਜਾਵਾ-ਸਕ੍ਰਿਪਟ ਦੀ ਲੋੜ ਕਿਓ ਹੈ?
|
||||||
|
enableJavascript = ਜਾਵਾ-ਸਕ੍ਰਿਪਟ ਸਮਰੱਥ ਕਰੋ ਤੇ ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ।
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
|
||||||
|
-send-brand = Firefox Send
|
||||||
|
-send-short-brand = ਭੇਜੋ
|
||||||
|
-firefox = ਫਾਇਰਫਾਕਸ
|
||||||
|
-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 = { -send-brand } ਨਾਲ "{ $name }" ਡਾਊਨਲੋਡ ਕਰੋ: ਸੌਖਾ, ਸੁਰੱਖਿਅਤ ਫਾਇਲ ਸਾਂਝਾ ਕਰਨਾ
|
||||||
|
trailheadPromo = ਤੁਹਾਡੀ ਪਰਦੇਦਾਰੀ ਦੀ ਸੁਰੱਖਿਆ ਦਾ ਢੰਗ ਹੈ। ਫਾਇਰਫਾਕਸ ਨਾਲ ਜੁੜੋ।
|
||||||
|
learnMore = ਹੋਰ ਸਿੱਖੋ
|
||||||
@@ -117,8 +117,8 @@ tooManyArchives =
|
|||||||
*[many] Dozwolonych jest tylko { $count } archiwów.
|
*[many] Dozwolonych jest tylko { $count } archiwów.
|
||||||
}
|
}
|
||||||
expiredTitle = Ten odnośnik wygasł.
|
expiredTitle = Ten odnośnik wygasł.
|
||||||
notSupportedDescription = { -send-brand } nie będzie działało w tej przeglądarce. { -send-short-brand } najlepiej działa w najnowszej wersji Firefoksa, ale będzie działać także w aktualnych wersjach większości przeglądarek.
|
notSupportedDescription = { -send-brand } nie będzie działać w tej przeglądarce. { -send-short-brand } najlepiej działa w najnowszej wersji przeglądarki { -firefox }, ale będzie działać także w aktualnych wersjach większości przeglądarek.
|
||||||
downloadFirefox = Pobierz Firefoksa
|
downloadFirefox = Pobierz przeglądarkę { -firefox }
|
||||||
legalTitle = Zasady ochrony prywatności serwisu { -send-short-brand }
|
legalTitle = Zasady ochrony prywatności serwisu { -send-short-brand }
|
||||||
legalDateStamp = Wersja 1.0 z 12 marca 2019 r.
|
legalDateStamp = Wersja 1.0 z 12 marca 2019 r.
|
||||||
# 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"
|
||||||
@@ -134,8 +134,8 @@ addPassword = Chroń hasłem
|
|||||||
emailPlaceholder = Wpisz adres e-mail
|
emailPlaceholder = Wpisz adres e-mail
|
||||||
# $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 = Zaloguj się, aby wysłać do { $size }
|
signInSizeBump = Zaloguj się, aby wysłać do { $size }
|
||||||
signInButton = Zaloguj/zarejestruj się
|
signInOnlyButton = Zaloguj się
|
||||||
accountBenefitTitle = Utwórz konto Firefoksa lub zaloguj się
|
accountBenefitTitle = Utwórz konto { -firefox } lub zaloguj się
|
||||||
# $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 = Udostępniaj pliki do { $size }
|
accountBenefitLargeFiles = Udostępniaj pliki do { $size }
|
||||||
accountBenefitDownloadCount = Udostępniaj pliki większej liczbie osób
|
accountBenefitDownloadCount = Udostępniaj pliki większej liczbie osób
|
||||||
@@ -146,7 +146,7 @@ accountBenefitTimeLimit =
|
|||||||
*[many] Odnośniki aktywne przez { $count } dni
|
*[many] Odnośniki aktywne przez { $count } dni
|
||||||
}
|
}
|
||||||
accountBenefitSync = Zarządzaj udostępnionymi plikami z każdego urządzenia
|
accountBenefitSync = Zarządzaj udostępnionymi plikami z każdego urządzenia
|
||||||
accountBenefitMoz = Poznaj inne serwisy Mozilli
|
accountBenefitMoz = Poznaj inne serwisy organizacji { -mozilla }
|
||||||
signOut = Wyloguj się
|
signOut = Wyloguj się
|
||||||
okButton = OK
|
okButton = OK
|
||||||
downloadingTitle = Pobieranie
|
downloadingTitle = Pobieranie
|
||||||
@@ -154,3 +154,11 @@ noStreamsWarning = Ta przeglądarka może nie być w stanie odszyfrować tak du
|
|||||||
noStreamsOptionCopy = Skopiuj odnośnik, aby otworzyć w innej przeglądarce
|
noStreamsOptionCopy = Skopiuj odnośnik, aby otworzyć w innej przeglądarce
|
||||||
noStreamsOptionFirefox = Wypróbuj naszą ulubioną przeglądarkę
|
noStreamsOptionFirefox = Wypróbuj naszą ulubioną przeglądarkę
|
||||||
noStreamsOptionDownload = Kontynuuj za pomocą tej przeglądarki
|
noStreamsOptionDownload = Kontynuuj za pomocą tej przeglądarki
|
||||||
|
downloadFirefoxPromo = { -send-short-brand } jest oferowany przez zupełnie nową przeglądarkę { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Udostępnij odnośnik do pliku:
|
||||||
|
shareLinkButton = Udostępnij odnośnik
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Pobierz „{ $name }” za pomocą { -send-brand }: prostego i bezpiecznego udostępniania plików
|
||||||
|
trailheadPromo = Jest sposób na ochronę swojej prywatności. Dołącz do Firefoksa.
|
||||||
|
learnMore = Więcej informacji.
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ passwordSetError = Essa senha não pôde ser definida
|
|||||||
-firefox = Firefox
|
-firefox = Firefox
|
||||||
-mozilla = Mozilla
|
-mozilla = Mozilla
|
||||||
introTitle = Compartilhamento de arquivos fácil e privativo
|
introTitle = Compartilhamento de arquivos fácil e privativo
|
||||||
introDescription = O { -send-brand } permite compartilhar arquivos com criptografia ponto a ponto e um link que expira automaticamente. Assim você pode manter o que compartilha privativo e ter certeza que suas coisas não ficarão online para sempre.
|
introDescription = O { -send-brand } permite compartilhar arquivos com criptografia de ponta a ponta e um link que expira automaticamente. Assim você pode manter o que compartilha privativo e ter certeza que suas coisas não ficarão online para sempre.
|
||||||
notifyUploadEncryptDone = Seu arquivo foi criptografado e está pronto para ser enviado
|
notifyUploadEncryptDone = Seu arquivo foi criptografado e está pronto para ser enviado
|
||||||
# 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 = Expirar após { $downloadCount } ou { $timespan }
|
archiveExpiryInfo = Expirar após { $downloadCount } ou { $timespan }
|
||||||
@@ -94,7 +94,7 @@ totalSize = Tamanho total: { $size }
|
|||||||
copyLinkDescription = Copie o link para compartilhar seu arquivo:
|
copyLinkDescription = Copie o link para compartilhar seu arquivo:
|
||||||
copyLinkButton = Copiar link
|
copyLinkButton = Copiar link
|
||||||
downloadTitle = Baixar arquivos
|
downloadTitle = Baixar arquivos
|
||||||
downloadDescription = Este arquivo foi compartilhado via { -send-brand } com criptografia ponto a ponto e um link que expira automaticamente.
|
downloadDescription = Este arquivo foi compartilhado via { -send-brand } com criptografia de ponta a ponta e um link que expira automaticamente.
|
||||||
trySendDescription = Experimente o { -send-brand } para compartilhamento de arquivos simples e seguro.
|
trySendDescription = Experimente o { -send-brand } para compartilhamento de arquivos simples e seguro.
|
||||||
# count will always be > 10
|
# count will always be > 10
|
||||||
tooManyFiles =
|
tooManyFiles =
|
||||||
@@ -126,7 +126,7 @@ addPassword = Proteger com senha
|
|||||||
emailPlaceholder = Informe seu e-mail
|
emailPlaceholder = Informe seu e-mail
|
||||||
# $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 = Entre na sua conta para enviar até { $size }
|
signInSizeBump = Entre na sua conta para enviar até { $size }
|
||||||
signInButton = Entrar / Cadastrar-se
|
signInOnlyButton = Entrar
|
||||||
accountBenefitTitle = Crie uma Conta { -firefox } ou entre na sua conta
|
accountBenefitTitle = Crie uma Conta { -firefox } ou entre na sua conta
|
||||||
# $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 = Compartilhe arquivos até { $size }
|
accountBenefitLargeFiles = Compartilhe arquivos até { $size }
|
||||||
@@ -143,5 +143,13 @@ okButton = OK
|
|||||||
downloadingTitle = Baixando
|
downloadingTitle = Baixando
|
||||||
noStreamsWarning = Este navegador pode não conseguir descriptografar um arquivo tão grande.
|
noStreamsWarning = Este navegador pode não conseguir descriptografar um arquivo tão grande.
|
||||||
noStreamsOptionCopy = Copiar o link para abrir em outro navegador
|
noStreamsOptionCopy = Copiar o link para abrir em outro navegador
|
||||||
noStreamsOptionFirefox = Experimentar nosso navegador preferido
|
noStreamsOptionFirefox = Experimente nosso navegador preferido
|
||||||
noStreamsOptionDownload = Continuar com este navegador
|
noStreamsOptionDownload = Continuar com este navegador
|
||||||
|
downloadFirefoxPromo = O { -send-short-brand } é apresentado pelo novo { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Compartilhe o link para o seu arquivo:
|
||||||
|
shareLinkButton = Compartilhar link
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Baixe "{ $name }" com o { -send-brand }: compartilhamento de arquivos simples e seguro
|
||||||
|
trailheadPromo = Existe um meio de proteger sua privacidade. Use o Firefox.
|
||||||
|
learnMore = Saiba mais.
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ addPassword = Proteger com palavra-passe
|
|||||||
emailPlaceholder = Introduzir o seu email
|
emailPlaceholder = Introduzir o seu email
|
||||||
# $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 = Iniciar sessão para enviar até { $size }
|
signInSizeBump = Iniciar sessão para enviar até { $size }
|
||||||
signInButton = Iniciar sessão/registar
|
signInOnlyButton = Iniciar sessão
|
||||||
accountBenefitTitle = Crie uma Conta { -firefox } ou inicie sessão
|
accountBenefitTitle = Crie uma Conta { -firefox } ou inicie sessão
|
||||||
# $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 = Partilhe ficheiros até { $size }
|
accountBenefitLargeFiles = Partilhe ficheiros até { $size }
|
||||||
@@ -141,3 +141,11 @@ noStreamsWarning = Este navegador pode não conseguir desencriptar um ficheiro t
|
|||||||
noStreamsOptionCopy = Copie a ligação para abrir noutro navegador
|
noStreamsOptionCopy = Copie a ligação para abrir noutro navegador
|
||||||
noStreamsOptionFirefox = Experimente o nosso navegador favorito
|
noStreamsOptionFirefox = Experimente o nosso navegador favorito
|
||||||
noStreamsOptionDownload = Continuar com este navegador
|
noStreamsOptionDownload = Continuar com este navegador
|
||||||
|
downloadFirefoxPromo = O { -send-short-brand } é trazido a si pelo novo { -firefox }.
|
||||||
|
# the next line after the colon contains a file name
|
||||||
|
shareLinkDescription = Partilhe a ligação para o seu ficheiro:
|
||||||
|
shareLinkButton = Partilhar ligação
|
||||||
|
# $name is the name of the file
|
||||||
|
shareMessage = Transferir “{ $name }“ com o { -send-brand }: partilha de ficheiros simples e segura
|
||||||
|
trailheadPromo = Existe uma maneira de proteger a sua privacidade. Junte-se ao Firefox.
|
||||||
|
learnMore = Saiba mais.
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user