mirror of
https://gitlab.com/timvisee/send.git
synced 2025-12-06 14:10:53 +03:00
Compare commits
182 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ef9b7be92 | ||
|
|
5e4ad28f90 | ||
|
|
bc2a8c6780 | ||
|
|
500b34b666 | ||
|
|
7afe684c3b | ||
|
|
779fe94550 | ||
|
|
95ceff5cc6 | ||
|
|
4cf27030a1 | ||
|
|
f49782c8e3 | ||
|
|
7352e4a1b0 | ||
|
|
d5ce677960 | ||
|
|
7a1de5d651 | ||
|
|
0338de3de7 | ||
|
|
c71bd26789 | ||
|
|
fe3a64941d | ||
|
|
ac9e107094 | ||
|
|
08e0e35041 | ||
|
|
a0e3c7c2ec | ||
|
|
62ffaafeb7 | ||
|
|
236fcc960f | ||
|
|
b7d1d6a632 | ||
|
|
a6c78470ea | ||
|
|
e6f7100bad | ||
|
|
1eba2f09a3 | ||
|
|
1eae5e8e08 | ||
|
|
d3f034c4c3 | ||
|
|
729e0c9f9d | ||
|
|
b6e7fa5496 | ||
|
|
f4b6bab5d7 | ||
|
|
e55b3f828f | ||
|
|
5f8d9cb842 | ||
|
|
81659bce85 | ||
|
|
f761eb92ee | ||
|
|
164f5e7d0e | ||
|
|
7013f5cf80 | ||
|
|
6184a70ba4 | ||
|
|
e264d0da62 | ||
|
|
23a6e338e8 | ||
|
|
2c1dfdbe07 | ||
|
|
994e77a38b | ||
|
|
173ca461a9 | ||
|
|
53426b950a | ||
|
|
9bb36cd827 | ||
|
|
103aa8a0c8 | ||
|
|
62d507120c | ||
|
|
8ccb1c449a | ||
|
|
a07eb1ad1c | ||
|
|
78c6d83462 | ||
|
|
5d41da0e16 | ||
|
|
5afe9ff2af | ||
|
|
a2eee15a7d | ||
|
|
603a352595 | ||
|
|
7b8655a079 | ||
|
|
d3ba54d05a | ||
|
|
83e2aec3f5 | ||
|
|
0abf890fc4 | ||
|
|
38fcd7227d | ||
|
|
6d29cebabb | ||
|
|
8305b9bd2f | ||
|
|
5c542008ab | ||
|
|
e1d6467de4 | ||
|
|
7dc34ba646 | ||
|
|
d5a30b710d | ||
|
|
c90310405c | ||
|
|
1bd85ee656 | ||
|
|
45452c7153 | ||
|
|
59ba89262f | ||
|
|
d906e927ed | ||
|
|
527e9f09c9 | ||
|
|
5ff92c6452 | ||
|
|
dfea1e96fb | ||
|
|
7e30fe8d33 | ||
|
|
a74a560f0a | ||
|
|
93072c0c1e | ||
|
|
b3ad207326 | ||
|
|
dced61eb30 | ||
|
|
42574af2cc | ||
|
|
ab699ebcc6 | ||
|
|
de37804973 | ||
|
|
7654ec3b7c | ||
|
|
fa84c653ea | ||
|
|
7f9b43753e | ||
|
|
a0c221750b | ||
|
|
bcb3936e08 | ||
|
|
66ec29eee9 | ||
|
|
58535c8c2e | ||
|
|
563686849f | ||
|
|
5b607af8d1 | ||
|
|
c5061ec51e | ||
|
|
32074a9bab | ||
|
|
26478fc444 | ||
|
|
7c66c07634 | ||
|
|
4ef6f8e3bd | ||
|
|
5591fb03f1 | ||
|
|
fc35acc6e4 | ||
|
|
5c8c6d56a4 | ||
|
|
4f9e63beca | ||
|
|
6b7f6426a1 | ||
|
|
1b6fad9d87 | ||
|
|
016d9bcf91 | ||
|
|
f199c8b96a | ||
|
|
06321126e7 | ||
|
|
08f9ad5046 | ||
|
|
9aefe7f7c9 | ||
|
|
ea2ff28f32 | ||
|
|
339bf12857 | ||
|
|
7c605ac7af | ||
|
|
288b878700 | ||
|
|
db84b331c2 | ||
|
|
2fde21c522 | ||
|
|
fb3747785b | ||
|
|
93d151a29a | ||
|
|
e28a92848d | ||
|
|
f83784e033 | ||
|
|
11173c520b | ||
|
|
608112d56c | ||
|
|
480a06c426 | ||
|
|
f0530975ac | ||
|
|
6d4973391a | ||
|
|
0edfc8405f | ||
|
|
5274b732b2 | ||
|
|
0a71c8c724 | ||
|
|
9feb6866ee | ||
|
|
196d4211b6 | ||
|
|
a50762ebd7 | ||
|
|
3e65f3a906 | ||
|
|
bea7d30836 | ||
|
|
6acf58f9e9 | ||
|
|
33993eda88 | ||
|
|
8242e2088d | ||
|
|
48457f7ac1 | ||
|
|
8a496022f4 | ||
|
|
9c398ad98b | ||
|
|
dc1b754692 | ||
|
|
dc7203ea59 | ||
|
|
af9973e35b | ||
|
|
aeb44379c8 | ||
|
|
7841dec5d8 | ||
|
|
7d62a23b36 | ||
|
|
f36ac24ac5 | ||
|
|
e6c2736f1f | ||
|
|
0d46997ab3 | ||
|
|
896a0f035b | ||
|
|
fdd07a06be | ||
|
|
8f8595e750 | ||
|
|
7a83fc6d8f | ||
|
|
30df33e189 | ||
|
|
7aac0426e0 | ||
|
|
bc423d4d78 | ||
|
|
3ddfc822d1 | ||
|
|
f99e4db25f | ||
|
|
fd71e7f957 | ||
|
|
2bfeb75380 | ||
|
|
21f7fd7dbc | ||
|
|
3e08c35740 | ||
|
|
54e78b6274 | ||
|
|
f1499abbe8 | ||
|
|
1ad78e2844 | ||
|
|
af436f9506 | ||
|
|
4dfdc8b0c7 | ||
|
|
b4c0c36f3a | ||
|
|
d52ca850cb | ||
|
|
c3e0787d12 | ||
|
|
3f65e55f86 | ||
|
|
2db56fac3a | ||
|
|
464c0c4c47 | ||
|
|
71ed7d71fb | ||
|
|
cda38f9bcf | ||
|
|
cc9b622bde | ||
|
|
fb91fd03cc | ||
|
|
77e3b5a3e6 | ||
|
|
0ed5c7f1e7 | ||
|
|
5afadd4ff1 | ||
|
|
0f53c718a2 | ||
|
|
ad4e6c8dec | ||
|
|
9e0195deaa | ||
|
|
253216e6fc | ||
|
|
78eab6335d | ||
|
|
1d20b5ba11 | ||
|
|
1edc571b36 | ||
|
|
e3556aa7e1 | ||
|
|
aa94a75da9 |
@@ -1,5 +1,6 @@
|
||||
node_modules
|
||||
.git
|
||||
.tox
|
||||
.DS_Store
|
||||
firefox
|
||||
assets
|
||||
@@ -7,4 +8,4 @@ docs
|
||||
public
|
||||
test
|
||||
coverage
|
||||
.nyc_output
|
||||
.nyc_output
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -3,4 +3,6 @@ coverage
|
||||
dist
|
||||
.idea
|
||||
.DS_Store
|
||||
.nyc_output
|
||||
.nyc_output
|
||||
.tox
|
||||
.pytest_cache
|
||||
|
||||
7
.pyup.yml
Normal file
7
.pyup.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
# autogenerated pyup.io config file
|
||||
# see https://pyup.io/docs/configuration/ for all available options
|
||||
|
||||
schedule: every week
|
||||
requirements:
|
||||
- test/integration/Pipfile
|
||||
- test/integration/pipenv.txt
|
||||
@@ -1,6 +1,6 @@
|
||||
## Change Log
|
||||
|
||||
### upcoming (2018/03/12 19:25 +00:00)
|
||||
### v2.5.1 (2018/03/12 19:26 +00:00)
|
||||
- [#789](https://github.com/mozilla/send/pull/789) Fixed #775 : Made text not-selectable (@RCMainak)
|
||||
|
||||
### v2.5.0 (2018/03/08 19:31 +00:00)
|
||||
|
||||
@@ -37,6 +37,7 @@ Frederick Villaluna
|
||||
Gabriela
|
||||
Gautam krishna.R
|
||||
Georgianizator
|
||||
Gonçalo Matos
|
||||
Hyeonseok Shin
|
||||
Håvar Henriksen
|
||||
Jae Hyeon Park
|
||||
@@ -153,3 +154,4 @@ ybouhamam
|
||||
Μιχάλης
|
||||
Марко Костић (Marko Kostić)
|
||||
صفا الفليج
|
||||
వీవెన్
|
||||
|
||||
18
Dockerfile
18
Dockerfile
@@ -1,15 +1,17 @@
|
||||
FROM node:8-alpine
|
||||
FROM node:10 AS builder
|
||||
RUN addgroup --gid 10001 app && adduser --disabled-password --gecos '' --gid 10001 --home /app --uid 10001 app
|
||||
COPY package*.json /app/
|
||||
WORKDIR /app
|
||||
RUN npm install --production
|
||||
|
||||
RUN apk add --no-cache git
|
||||
RUN addgroup -S -g 10001 app && adduser -S -D -G app -u 10001 app
|
||||
COPY . /app
|
||||
RUN chown -R app /app
|
||||
FROM node:10-slim
|
||||
RUN addgroup --gid 10001 app && adduser --disabled-password --gecos '' --gid 10001 --home /app --uid 10001 app
|
||||
USER app
|
||||
WORKDIR /app
|
||||
RUN mkdir static
|
||||
RUN npm install --production && npm cache clean --force
|
||||
COPY --chown=app:app --from=builder /app .
|
||||
COPY --chown=app:app . .
|
||||
|
||||
ENV PORT=1443
|
||||
EXPOSE $PORT
|
||||
|
||||
CMD ["npm", "run", "prod"]
|
||||
CMD ["node", "server/prod.js"]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
# Firefox Send
|
||||
|
||||
[](https://www.browserstack.com/automate/public-build/aFFIMHNEWFcrNHJaMU1LRkJnUDhOQkNHMmh2WHBscjJsZHcwK1h0dkhwdz0tLXRpN1RXcysybUtxTFFTVGRtWjVGeHc9PQ==--c56129be8c75941b115c5b5e5d3ed10b3c7dca6b)
|
||||
[](https://circleci.com/gh/mozilla/send)
|
||||
[](https://testpilot.firefox.com/experiments/send)
|
||||
|
||||
|
||||
@@ -160,9 +160,10 @@ function download(id, keychain, onprogress, canceller) {
|
||||
resolve(this.result);
|
||||
};
|
||||
});
|
||||
|
||||
xhr.addEventListener('progress', function(event) {
|
||||
if (event.lengthComputable && event.target.status === 200) {
|
||||
onprogress([event.loaded, event.total]);
|
||||
if (event.target.status === 200) {
|
||||
onprogress(event.loaded);
|
||||
}
|
||||
});
|
||||
const auth = await keychain.authHeader();
|
||||
@@ -170,6 +171,7 @@ function download(id, keychain, onprogress, canceller) {
|
||||
xhr.setRequestHeader('Authorization', auth);
|
||||
xhr.responseType = 'blob';
|
||||
xhr.send();
|
||||
onprogress(0);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ export default class FileReceiver extends Nanobus {
|
||||
this.fileInfo.name = meta.name;
|
||||
this.fileInfo.type = meta.type;
|
||||
this.fileInfo.iv = meta.iv;
|
||||
this.fileInfo.size = meta.size;
|
||||
this.fileInfo.size = +meta.size;
|
||||
this.state = 'ready';
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ export default class FileReceiver extends Nanobus {
|
||||
this.fileInfo.id,
|
||||
this.keychain,
|
||||
p => {
|
||||
this.progress = p;
|
||||
this.progress = [p, this.fileInfo.size];
|
||||
this.emit('progress');
|
||||
}
|
||||
);
|
||||
|
||||
@@ -4,6 +4,7 @@ import app from './routes';
|
||||
import locale from '../common/locales';
|
||||
import fileManager from './fileManager';
|
||||
import dragManager from './dragManager';
|
||||
import pasteManager from './pasteManager';
|
||||
import { canHasSend } from './utils';
|
||||
import storage from './storage';
|
||||
import metrics from './metrics';
|
||||
@@ -48,5 +49,6 @@ app.use(metrics);
|
||||
app.use(fileManager);
|
||||
app.use(dragManager);
|
||||
app.use(experiments);
|
||||
app.use(pasteManager);
|
||||
|
||||
app.mount('body');
|
||||
|
||||
@@ -16,7 +16,7 @@ module.exports = function(state, emit) {
|
||||
|
||||
return html`
|
||||
<div id="shareWrapper" class="effect--fadeIn">
|
||||
<div class="title">${expireInfo(file, state.translate, emit)}</div>
|
||||
${expireInfo(file, state.translate, emit)}
|
||||
<div class="sharePage">
|
||||
<div class="sharePage__copyText">
|
||||
${state.translate('copyUrlFormLabelWithName', { filename: file.name })}
|
||||
@@ -97,7 +97,7 @@ module.exports = function(state, emit) {
|
||||
|
||||
function expireInfo(file, translate, emit) {
|
||||
const hours = Math.floor(EXPIRE_SECONDS / 60 / 60);
|
||||
const el = html`<div>${raw(
|
||||
const el = html`<div class="title">${raw(
|
||||
translate('expireInfo', {
|
||||
downloadCount: '<select></select>',
|
||||
timespan: translate('timespanHours', { num: hours })
|
||||
@@ -107,9 +107,6 @@ function expireInfo(file, translate, emit) {
|
||||
const options = [1, 2, 3, 4, 5, 20].filter(i => i > (file.dtotal || 0));
|
||||
const t = num => translate('downloadCount', { num });
|
||||
const changed = value => emit('changeLimit', { file, value });
|
||||
select.parentNode.replaceChild(
|
||||
selectbox(file.dlimit || 1, options, t, changed),
|
||||
select
|
||||
);
|
||||
el.replaceChild(selectbox(file.dlimit || 1, options, t, changed), select);
|
||||
return el;
|
||||
}
|
||||
|
||||
25
app/pasteManager.js
Normal file
25
app/pasteManager.js
Normal file
@@ -0,0 +1,25 @@
|
||||
/* global MAXFILESIZE */
|
||||
import { bytes } from './utils';
|
||||
|
||||
export default function(state, emitter) {
|
||||
window.addEventListener('paste', event => {
|
||||
if (state.route !== '/' || state.uploading) return;
|
||||
|
||||
for (const item of event.clipboardData.items) {
|
||||
if (!item.type.includes('image')) continue;
|
||||
|
||||
const file = item.getAsFile();
|
||||
|
||||
if (!file) continue; // Sometimes null
|
||||
|
||||
if (file.size > MAXFILESIZE) {
|
||||
// eslint-disable-next-line no-alert
|
||||
alert(state.translate('fileTooBig', { size: bytes(MAXFILESIZE) }));
|
||||
continue;
|
||||
}
|
||||
|
||||
emitter.emit('upload', { file, type: 'paste' });
|
||||
return; // return here since only one file is allowed to be uploaded at a time
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -19,7 +19,8 @@ module.exports = function(file, state, emit) {
|
||||
onclick=${copyClick}
|
||||
src="${assets.get('copy-16.svg')}"
|
||||
class="cursor--pointer"
|
||||
title="${state.translate('copyUrlHover')}">
|
||||
title="${state.translate('copyUrlHover')}"
|
||||
tabindex="0">
|
||||
<span hidden="true">
|
||||
${state.translate('copiedUrl')}
|
||||
</span>
|
||||
@@ -33,7 +34,8 @@ module.exports = function(file, state, emit) {
|
||||
onclick=${showPopup}
|
||||
src="${assets.get('close-16.svg')}"
|
||||
class="cursor--pointer"
|
||||
title="${state.translate('deleteButtonHover')}">
|
||||
title="${state.translate('deleteButtonHover')}"
|
||||
tabindex="0">
|
||||
${deletePopup(
|
||||
state.translate('deletePopupText'),
|
||||
state.translate('deletePopupYes'),
|
||||
|
||||
@@ -6,8 +6,7 @@ module.exports = function(state) {
|
||||
<div class="legalSection">
|
||||
<a
|
||||
href="https://www.mozilla.org"
|
||||
class="legalSection__link"
|
||||
role="presentation">
|
||||
class="legalSection__link">
|
||||
<img
|
||||
class="legalSection__mozLogo"
|
||||
src="${assets.get('mozilla-logo.svg')}"
|
||||
@@ -43,8 +42,7 @@ module.exports = function(state) {
|
||||
<div class="socialSection">
|
||||
<a
|
||||
href="https://github.com/mozilla/send"
|
||||
class="socialSection__link"
|
||||
role="presentation">
|
||||
class="socialSection__link">
|
||||
<img
|
||||
class="socialSection__icon"
|
||||
src="${assets.get('github-icon.svg')}"
|
||||
@@ -52,8 +50,7 @@ module.exports = function(state) {
|
||||
</a>
|
||||
<a
|
||||
href="https://twitter.com/FxTestPilot"
|
||||
class="socialSection__link"
|
||||
role="presentation">
|
||||
class="socialSection__link">
|
||||
<img
|
||||
class="socialSection__icon"
|
||||
src="${assets.get('twitter-icon.svg')}"
|
||||
|
||||
@@ -1,59 +1,28 @@
|
||||
const html = require('choo/html');
|
||||
const number = require('../../utils').number;
|
||||
|
||||
module.exports = function(selected, options, translate, changed) {
|
||||
const id = `select-${Math.random()}`;
|
||||
let x = selected;
|
||||
|
||||
return html`
|
||||
<div class="selectbox">
|
||||
<div onclick=${toggle}>
|
||||
<span class="link">${translate(selected)}</span>
|
||||
<svg width="32" height="32">
|
||||
<polygon points="8 18 17 28 26 18" fill="#0094fb"/>
|
||||
</svg>
|
||||
</div>
|
||||
<ul id="${id}" class="selectbox__options">
|
||||
<div class="select">
|
||||
<select id="${id}" onchange=${choose}>
|
||||
${options.map(
|
||||
i => html`
|
||||
<li
|
||||
class="selectbox__option"
|
||||
onclick=${choose}
|
||||
data-value="${i}">${number(i)}</li>`
|
||||
i =>
|
||||
html`<option value="${i}" ${
|
||||
i === selected ? 'selected' : ''
|
||||
}>${translate(i)}</option>`
|
||||
)}
|
||||
</ul>
|
||||
</select>
|
||||
</div>`;
|
||||
|
||||
function close() {
|
||||
const ul = document.getElementById(id);
|
||||
const body = document.querySelector('body');
|
||||
ul.classList.remove('selectbox__options--active');
|
||||
body.removeEventListener('click', close);
|
||||
}
|
||||
|
||||
function toggle(event) {
|
||||
event.stopPropagation();
|
||||
const ul = document.getElementById(id);
|
||||
if (ul.classList.contains('selectbox__options--active')) {
|
||||
close();
|
||||
} else {
|
||||
ul.classList.add('selectbox__options--active');
|
||||
const body = document.querySelector('body');
|
||||
body.addEventListener('click', close);
|
||||
}
|
||||
}
|
||||
|
||||
function choose(event) {
|
||||
event.stopPropagation();
|
||||
const target = event.target;
|
||||
const value = +target.dataset.value;
|
||||
target.parentNode.previousSibling.firstElementChild.textContent = translate(
|
||||
value
|
||||
);
|
||||
const value = +target.value;
|
||||
|
||||
if (x !== value) {
|
||||
x = value;
|
||||
changed(value);
|
||||
}
|
||||
close();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,36 +1,46 @@
|
||||
.selectbox {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.selectbox__options {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.selectbox__options--active {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
padding: 0;
|
||||
margin: 40px 0;
|
||||
.select {
|
||||
background-color: var(--pageBGColor);
|
||||
border: 1px solid rgba(12, 12, 13, 0.3);
|
||||
overflow: hidden;
|
||||
padding: 4px 2px 4px 2px;
|
||||
border: 1px dotted #0094fb88;
|
||||
border-radius: 4px;
|
||||
box-shadow: 1px 2px 4px rgba(12, 12, 13, 0.3);
|
||||
display: inline;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.selectbox__option {
|
||||
color: var(--lightTextColor);
|
||||
font-size: 12pt;
|
||||
list-style: none;
|
||||
user-select: none;
|
||||
white-space: nowrap;
|
||||
padding: 0 60px;
|
||||
border-bottom: 1px solid rgba(12, 12, 13, 0.3);
|
||||
.select::after {
|
||||
color: #0094fb;
|
||||
content: '\25BC';
|
||||
pointer-events: none;
|
||||
font-size: 20px;
|
||||
margin-left: -30px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.selectbox__option:hover {
|
||||
background-color: #f4f4f4;
|
||||
option {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
select {
|
||||
appearance: none;
|
||||
outline: 0;
|
||||
box-shadow: none;
|
||||
border: 0;
|
||||
background: #fff;
|
||||
background-image: none;
|
||||
font-size: 1em;
|
||||
font-weight: 200;
|
||||
margin: 0;
|
||||
color: #0094fb;
|
||||
cursor: pointer;
|
||||
padding-right: 40px;
|
||||
}
|
||||
|
||||
select:active {
|
||||
background-color: var(--pageBGColor);
|
||||
border: 0;
|
||||
}
|
||||
|
||||
#arrow {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
@@ -9,9 +9,7 @@ function arrayToB64(array) {
|
||||
}
|
||||
|
||||
function b64ToArray(str) {
|
||||
return b64.toByteArray(
|
||||
str + '==='.slice((str.length + 3) % 4)
|
||||
);
|
||||
return b64.toByteArray(str + '==='.slice((str.length + 3) % 4));
|
||||
}
|
||||
|
||||
function loadShim(polyfill) {
|
||||
@@ -59,6 +57,7 @@ async function canHasSend() {
|
||||
);
|
||||
return true;
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
51
circle.yml
51
circle.yml
@@ -2,7 +2,7 @@ version: 2.0
|
||||
jobs:
|
||||
build:
|
||||
docker:
|
||||
- image: circleci/node:8
|
||||
- image: circleci/node:10
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
@@ -16,10 +16,10 @@ jobs:
|
||||
- persist_to_workspace:
|
||||
root: .
|
||||
paths:
|
||||
- ./*
|
||||
- ./dist
|
||||
test:
|
||||
docker:
|
||||
- image: circleci/node:8-browsers
|
||||
- image: circleci/node:10-browsers
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
@@ -31,12 +31,29 @@ jobs:
|
||||
- node_modules
|
||||
- run: npm run check
|
||||
- run: npm run lint
|
||||
- run: npm test
|
||||
- run: npm run test
|
||||
- store_artifacts:
|
||||
path: coverage
|
||||
integration_tests:
|
||||
machine: true
|
||||
steps:
|
||||
- checkout
|
||||
- attach_workspace:
|
||||
at: .
|
||||
- run:
|
||||
name: Install Docker Compose
|
||||
command: |
|
||||
set -x
|
||||
pip install docker-compose>=1.18
|
||||
docker-compose --version
|
||||
- run:
|
||||
command: npm run test-integration
|
||||
- store_artifacts:
|
||||
path: coverage/send-test.html
|
||||
deploy_dev:
|
||||
machine: true
|
||||
steps:
|
||||
- checkout
|
||||
- attach_workspace:
|
||||
at: .
|
||||
- run: docker login -u $DOCKER_USER -p $DOCKER_PASS
|
||||
@@ -45,6 +62,7 @@ jobs:
|
||||
deploy_stage:
|
||||
machine: true
|
||||
steps:
|
||||
- checkout
|
||||
- attach_workspace:
|
||||
at: .
|
||||
- run: docker login -u $DOCKER_USER -p $DOCKER_PASS
|
||||
@@ -54,10 +72,20 @@ workflows:
|
||||
version: 2
|
||||
test_pr:
|
||||
jobs:
|
||||
- build:
|
||||
filters:
|
||||
branches:
|
||||
ignore: master
|
||||
- test:
|
||||
filters:
|
||||
branches:
|
||||
ignore: master
|
||||
- integration_tests:
|
||||
filters:
|
||||
branches:
|
||||
ignore: master
|
||||
requires:
|
||||
- build
|
||||
build_and_deploy_dev:
|
||||
jobs:
|
||||
- build:
|
||||
@@ -88,12 +116,21 @@ workflows:
|
||||
ignore: /.*/
|
||||
tags:
|
||||
only: /^v.*/
|
||||
- deploy_stage:
|
||||
- integration_tests:
|
||||
requires:
|
||||
- build
|
||||
- test
|
||||
filters:
|
||||
branches:
|
||||
ignore: /.*/
|
||||
tags:
|
||||
only: /^v.*/
|
||||
only: /^v.*/
|
||||
- deploy_stage:
|
||||
requires:
|
||||
- build
|
||||
- test
|
||||
- integration_tests
|
||||
filters:
|
||||
branches:
|
||||
ignore: /.*/
|
||||
tags:
|
||||
only: /^v.*/
|
||||
|
||||
@@ -10,3 +10,17 @@ services:
|
||||
- REDIS_HOST=redis
|
||||
redis:
|
||||
image: redis:alpine
|
||||
selenium:
|
||||
image: b4handjr/selenium-firefox
|
||||
ports:
|
||||
- "${VNC_PORT:-5900}:5900"
|
||||
shm_size: 2g
|
||||
integration-tests:
|
||||
build: ./test/integration
|
||||
environment:
|
||||
- BASE_URL=${BASE_URL:-http://web:1443}
|
||||
links:
|
||||
- web
|
||||
- selenium
|
||||
volumes:
|
||||
- "./coverage:/coverage"
|
||||
|
||||
@@ -31,12 +31,11 @@ Since Send is an open source project, you can see all of the cool ways we use Ja
|
||||
## How long are files available for?
|
||||
|
||||
Files are available to be downloaded for 24 hours, after which they are removed
|
||||
from the server. They are also removed immediately after a download completes.
|
||||
from the server. They are also removed immediately once the download limit is reached.
|
||||
|
||||
## Can a file be downloaded more than once?
|
||||
|
||||
Not currently, but we're considering multiple download support in a future
|
||||
release.
|
||||
Yes, once a file is submitted to Send you can select the download limit.
|
||||
|
||||
|
||||
*Disclaimer: Send is an experiment and under active development. The answers
|
||||
|
||||
19592
package-lock.json
generated
19592
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
91
package.json
91
package.json
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "firefox-send",
|
||||
"description": "File Sharing Experiment",
|
||||
"version": "2.5.1",
|
||||
"version": "2.6.2",
|
||||
"author": "Mozilla (https://mozilla.org)",
|
||||
"repository": "mozilla/send",
|
||||
"homepage": "https://github.com/mozilla/send/",
|
||||
@@ -10,7 +10,7 @@
|
||||
"scripts": {
|
||||
"precommit": "lint-staged",
|
||||
"prepush": "npm test",
|
||||
"check": "nsp check",
|
||||
"check": "npm audit",
|
||||
"clean": "rimraf dist",
|
||||
"build": "npm run clean && webpack -p",
|
||||
"lint": "npm-run-all lint:*",
|
||||
@@ -22,13 +22,14 @@
|
||||
"format": "prettier '**/*.js' 'assets/*.css' --single-quote --write",
|
||||
"get-prod-locales": "node scripts/get-prod-locales",
|
||||
"get-prod-locales:write": "npm run get-prod-locales -- --write",
|
||||
"changelog": "github-changes -o mozilla -r send --only-pulls --use-commit-body --no-merges",
|
||||
"contributors": "git shortlog -s | awk -F\\t '{print $2}' > CONTRIBUTORS",
|
||||
"release": "npm-run-all contributors changelog",
|
||||
"test": "npm-run-all test:*",
|
||||
"test:backend": "nyc mocha --reporter=min test/backend",
|
||||
"test:frontend": "cross-env NODE_ENV=development node test/frontend/runner.js && nyc report --reporter=html",
|
||||
"start": "npm run clean && cross-env NODE_ENV=development webpack-dev-server",
|
||||
"test-integration": "docker-compose up --abort-on-container-exit --exit-code-from integration-tests --build --remove-orphans --quiet-pull && docker-compose down",
|
||||
"test-integration-stage": "cross-env BASE_URL=https://send.stage.mozaws.net npm run test-integration",
|
||||
"start": "npm run clean && npm run build && npm run prod",
|
||||
"prod": "node server/prod.js"
|
||||
},
|
||||
"lint-staged": {
|
||||
@@ -54,79 +55,78 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"asmcrypto.js": "^0.22.0",
|
||||
"babel-core": "^6.26.0",
|
||||
"babel-loader": "^7.1.4",
|
||||
"babel-plugin-istanbul": "^4.1.5",
|
||||
"babel-plugin-yo-yoify": "^1.0.2",
|
||||
"babel-preset-env": "^1.6.1",
|
||||
"babel-core": "^6.26.3",
|
||||
"babel-loader": "^7.1.5",
|
||||
"babel-plugin-istanbul": "^4.1.6",
|
||||
"babel-plugin-yo-yoify": "^1.0.3",
|
||||
"babel-preset-env": "^1.7.0",
|
||||
"babel-preset-es2015": "^6.24.1",
|
||||
"babel-preset-stage-2": "^6.24.1",
|
||||
"babel-preset-stage-3": "^6.24.1",
|
||||
"base64-js": "^1.2.3",
|
||||
"copy-webpack-plugin": "^4.5.0",
|
||||
"cross-env": "^5.1.3",
|
||||
"css-loader": "^0.28.10",
|
||||
"base64-js": "^1.3.0",
|
||||
"copy-webpack-plugin": "^4.5.2",
|
||||
"cross-env": "^5.2.0",
|
||||
"css-loader": "^0.28.11",
|
||||
"css-mqpacker": "^6.0.2",
|
||||
"eslint": "^4.18.2",
|
||||
"eslint": "^4.19.1",
|
||||
"eslint-plugin-mocha": "^4.12.1",
|
||||
"eslint-plugin-node": "^6.0.1",
|
||||
"eslint-plugin-security": "^1.4.0",
|
||||
"expose-loader": "^0.7.4",
|
||||
"expose-loader": "^0.7.5",
|
||||
"extract-loader": "^1.0.2",
|
||||
"extract-text-webpack-plugin": "^3.0.2",
|
||||
"fast-text-encoding": "^1.0.0",
|
||||
"file-loader": "^1.1.11",
|
||||
"fluent-intl-polyfill": "^0.1.0",
|
||||
"git-rev-sync": "^1.10.0",
|
||||
"github-changes": "^1.1.2",
|
||||
"git-rev-sync": "^1.12.0",
|
||||
"html-loader": "^0.5.5",
|
||||
"husky": "^0.14.3",
|
||||
"lint-staged": "^7.0.0",
|
||||
"mocha": "^5.0.4",
|
||||
"nanobus": "^4.3.2",
|
||||
"nanotiming": "^7.3.0",
|
||||
"npm-run-all": "^4.1.2",
|
||||
"nsp": "^3.2.1",
|
||||
"nyc": "^11.5.0",
|
||||
"lint-staged": "^7.3.0",
|
||||
"mocha": "^5.2.0",
|
||||
"nanobus": "^4.3.4",
|
||||
"nanotiming": "^7.3.1",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"nyc": "^11.9.0",
|
||||
"postcss-cssnext": "^3.1.0",
|
||||
"postcss-import": "^11.1.0",
|
||||
"postcss-loader": "^2.1.1",
|
||||
"prettier": "^1.11.1",
|
||||
"postcss-loader": "^2.1.6",
|
||||
"prettier": "^1.15.2",
|
||||
"proxyquire": "^1.8.0",
|
||||
"puppeteer": "^1.1.1",
|
||||
"raven-js": "^3.23.1",
|
||||
"puppeteer": "^1.11.0",
|
||||
"raven-js": "^3.27.0",
|
||||
"redis-mock": "^0.21.0",
|
||||
"require-from-string": "^2.0.1",
|
||||
"require-from-string": "^2.0.2",
|
||||
"rimraf": "^2.6.2",
|
||||
"sinon": "^4.4.2",
|
||||
"sinon": "^4.5.0",
|
||||
"string-hash": "^1.1.3",
|
||||
"stylelint": "^9.1.1",
|
||||
"stylelint": "^9.8.0",
|
||||
"stylelint-config-standard": "^18.2.0",
|
||||
"stylelint-no-unsupported-browser-features": "^2.0.0",
|
||||
"svgo": "^1.0.5",
|
||||
"svgo-loader": "^2.1.0",
|
||||
"svgo": "^1.1.1",
|
||||
"svgo-loader": "^2.2.0",
|
||||
"testpilot-ga": "^0.3.0",
|
||||
"val-loader": "^1.1.0",
|
||||
"webpack": "^3.11.0",
|
||||
"val-loader": "^1.1.1",
|
||||
"webpack": "^3.12.0",
|
||||
"webpack-dev-middleware": "^2.0.6",
|
||||
"webpack-dev-server": "2.9.1",
|
||||
"webpack-manifest-plugin": "^1.3.2",
|
||||
"webpack-unassert-loader": "^1.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"aws-sdk": "^2.206.0",
|
||||
"@google-cloud/storage": "^2.4.2",
|
||||
"aws-sdk": "^2.362.0",
|
||||
"babel-polyfill": "^6.26.0",
|
||||
"choo": "^6.10.0",
|
||||
"choo": "^6.13.0",
|
||||
"cldr-core": "^32.0.0",
|
||||
"connect-busboy": "0.0.2",
|
||||
"convict": "^4.0.1",
|
||||
"express": "^4.16.2",
|
||||
"fluent": "^0.6.3",
|
||||
"convict": "^4.4.0",
|
||||
"express": "^4.16.3",
|
||||
"fast-crc32c": "^1.0.4",
|
||||
"fluent": "^0.6.4",
|
||||
"fluent-langneg": "^0.1.0",
|
||||
"helmet": "^3.12.0",
|
||||
"helmet": "^3.15.0",
|
||||
"mkdirp": "^0.5.1",
|
||||
"mozlog": "^2.2.0",
|
||||
"raven": "^2.4.2",
|
||||
"raven": "^2.6.4",
|
||||
"redis": "^2.8.0"
|
||||
},
|
||||
"availableLanguages": [
|
||||
@@ -139,9 +139,12 @@
|
||||
"cak",
|
||||
"cs",
|
||||
"cy",
|
||||
"da",
|
||||
"de",
|
||||
"dsb",
|
||||
"el",
|
||||
"en-CA",
|
||||
"en-GB",
|
||||
"es-AR",
|
||||
"es-CL",
|
||||
"es-ES",
|
||||
@@ -150,6 +153,7 @@
|
||||
"fa",
|
||||
"fr",
|
||||
"fy-NL",
|
||||
"hr",
|
||||
"hsb",
|
||||
"hu",
|
||||
"ia",
|
||||
@@ -172,6 +176,7 @@
|
||||
"sq",
|
||||
"sr",
|
||||
"sv-SE",
|
||||
"te",
|
||||
"tl",
|
||||
"tr",
|
||||
"uk",
|
||||
|
||||
@@ -7,8 +7,7 @@ uploadPageExplainer = أرسل الملفات عبر رابط آمن خاص وم
|
||||
uploadPageLearnMore = اطّلع على المزيد
|
||||
uploadPageDropMessage = أسقِط ملفّك هنا لبدء الرفع
|
||||
uploadPageSizeMessage = لتتحصل على أفضل تجربة، من المستحسن أن يكون الملف أصغر من 1 غ.بايت
|
||||
uploadPageBrowseButton = اختر ملفّا على حاسوبك
|
||||
.title = اختر ملفّا على حاسوبك
|
||||
uploadPageBrowseButton = اختر ملفًا على حاسوبك
|
||||
uploadPageBrowseButton1 = اختر ملفّا لرفعه
|
||||
uploadPageMultipleFilesAlert = رفع عدة ملفات (أو رفع مجلد) ليس مدعوما حاليا.
|
||||
uploadPageBrowseButtonTitle = ارفع ملفًا
|
||||
@@ -20,16 +19,15 @@ decryptingFile = يفك التعمية…
|
||||
notifyUploadDone = انتهى الرفع.
|
||||
uploadingPageMessage = ما إن يُرفع الملف سيُتاح ضبط خيارات انتهاء صلاحيته.
|
||||
uploadingPageCancel = ألغِ الرفع
|
||||
.title = ألغِ الرفع
|
||||
uploadCancelNotification = أُلغي الرفع.
|
||||
uploadingPageLargeFileMessage = هذا الملف كبير الحجم وسيأخذ رفعه وقتا. انتظر رجاءً.
|
||||
uploadingFileNotification = أعلِمني عندما يكتمل الرفع.
|
||||
uploadSuccessConfirmHeader = جاهز للإرسال
|
||||
uploadSvgAlt =
|
||||
.alt = ارفع
|
||||
uploadSvgAlt = ارفع
|
||||
uploadSuccessTimingHeader = ستنتهي صلاحية الرابط الذي يشير إلى الملف في حال: نُزِّل لأول مرة، أو مرّ ٢٤ ساعة على رفعه.
|
||||
expireInfo = ستنتهي صلاحية رابط الملف بعد { $downloadCount } أو { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[zero] لا تنزيلات
|
||||
[one] تنزيل واحد
|
||||
[two] تنزيلين
|
||||
@@ -37,7 +35,8 @@ downloadCount = { $num ->
|
||||
[many] { $num } تنزيلًا
|
||||
*[other] { $num } تنزيل
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[zero] أقل من ساعة
|
||||
[one] ساعة
|
||||
[two] ساعتين
|
||||
@@ -47,15 +46,11 @@ timespanHours = { $num ->
|
||||
}
|
||||
copyUrlFormLabelWithName = انسخ الرابط وشاركه لإرسال الملف: { $filename }
|
||||
copyUrlFormButton = انسخ إلى الحافظة
|
||||
.title = انسخ إلى الحافظة
|
||||
copiedUrl = نُسخ!
|
||||
deleteFileButton = احذف الملف
|
||||
.title = احذف الملف
|
||||
sendAnotherFileLink = أرسل ملفّا آخر
|
||||
.title = أرسل ملفّا آخر
|
||||
sendAnotherFileLink = أرسِل ملفًا آخر
|
||||
# Alternative text used on the download link/button (indicates an action).
|
||||
downloadAltText =
|
||||
.alt = نزّل
|
||||
downloadAltText = نزّل
|
||||
downloadsFileList = التنزيلات
|
||||
# Used as header in a column indicating the amount of time left before a
|
||||
# download link expires (e.g. "10h 5m")
|
||||
@@ -72,7 +67,6 @@ downloadFileTitle = نزِّل الملف المعمّى
|
||||
downloadMessage = يُرسل إليك صديقك ملفا عبر «فَيَرفُكس سِنْد»، وهي خدمة تتيح لك مشاركة الملفات عبر رابط آمن وخاص ومعمّى، حيث تنتهي صلاحياتها تلقائيا لتضمن عدم بقاء ما ترسله إلى الأبد.
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = نزّل
|
||||
.title = نزّل
|
||||
downloadNotification = لقد اكتمل التنزيل.
|
||||
downloadFinish = اكتمل التنزيل
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
@@ -81,8 +75,7 @@ fileSizeProgress = ({ $partialSize } من أصل { $totalSize })
|
||||
sendYourFilesLink = جرِّب «فَيَرفُكس سِنْد»
|
||||
downloadingPageProgress = ينزّل { $filename } ({ $size })
|
||||
downloadingPageMessage = رجاء أبقِ هذا اللسان مفتوحا حتى نجلب الملف ونفك تعميته.
|
||||
errorAltText =
|
||||
.alt = خطأ أثناء الرفع
|
||||
errorAltText = خطأ أثناء الرفع
|
||||
errorPageHeader = حدث خطب ما.
|
||||
errorPageMessage = حدث خطب ما أثناء رفع الملف.
|
||||
errorPageLink = أرسل ملفا آخر
|
||||
@@ -108,10 +101,8 @@ legalNoticeMozilla = يخضع استخدام موقع «فَيَرفُكس سِ
|
||||
deletePopupText = أأحذف هذا الملف؟
|
||||
deletePopupYes = نعم
|
||||
deletePopupCancel = ألغِ
|
||||
deleteButtonHover =
|
||||
.title = احذف
|
||||
copyUrlHover =
|
||||
.title = انسخ الرابط
|
||||
deleteButtonHover = احذف
|
||||
copyUrlHover = انسخ الرابط
|
||||
footerLinkLegal = القانونية
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = حول الاختبار التجريبي
|
||||
@@ -122,8 +113,6 @@ requirePasswordCheckbox = اطلب كلمة سر لتنزيل هذا الملف
|
||||
addPasswordButton = أضِف كلمة سر
|
||||
changePasswordButton = غيّر
|
||||
passwordTryAgain = كلمة السر خاطئة. أعِد المحاولة.
|
||||
# This label is followed by the password needed to download a file
|
||||
passwordResult = كلمة السر: { $password }
|
||||
reportIPInfringement = أبلغ عن انتهاك للملكية الفكرية
|
||||
javascriptRequired = يتطلب فَيَرفُكس سِنْد جافاسكربت
|
||||
whyJavascript = لماذا يتطلب فَيَرفُكس سِنْد جافاسكربت؟
|
||||
@@ -134,3 +123,7 @@ expiresHoursMinutes = { $hours }س { $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
|
||||
maxPasswordLength = أقصر طول لكلمة السر: { $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = يجب ألا تُضبط كلمة السر هذه
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// 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
|
||||
siteSubtitle = esperimentu web
|
||||
siteFeedback = Feedback
|
||||
@@ -25,28 +25,45 @@ uploadingFileNotification = Avísame cuando se complete la xuba.
|
||||
uploadSuccessConfirmHeader = Preparáu pa unviar
|
||||
uploadSvgAlt = Xubir
|
||||
uploadSuccessTimingHeader = L'enllaz del to ficheru caducará dempués d'una descarga o en 24 hores.
|
||||
expireInfo = L'enllaz al ficheru va caducar tres { $downloadCount } o { $timespan }.
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 descarga
|
||||
*[other] { $num } descargues
|
||||
}
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 hora
|
||||
*[other] { $num } hores
|
||||
}
|
||||
copyUrlFormLabelWithName = Copia y comparti l'enllaz pa unviar el to ficheru: { $filename }
|
||||
copyUrlFormButton = Copiar al cartafueyu
|
||||
copiedUrl = ¡Copióse!
|
||||
deleteFileButton = Desaniciar ficheru
|
||||
sendAnotherFileLink = Unviar otru ficheru
|
||||
// Alternative text used on the download link/button (indicates an action).
|
||||
# Alternative text used on the download link/button (indicates an action).
|
||||
downloadAltText = Baxar
|
||||
downloadsFileList = Descargues
|
||||
# Used as header in a column indicating the amount of time left before a
|
||||
# download link expires (e.g. "10h 5m")
|
||||
timeFileList = Tiempu
|
||||
# Used as header in a column indicating the number of times a file has been
|
||||
# downloaded
|
||||
downloadFileName = Baxar { $filename }
|
||||
downloadFileSize = ({ $size })
|
||||
unlockInputLabel = Introducir contraseña
|
||||
unlockInputPlaceholder = Contraseña
|
||||
unlockButtonLabel = Desbloquiar
|
||||
downloadFileTitle = Baxar ficheru cifráu
|
||||
// Firefox Send is a brand name and should not be localized.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
downloadMessage = El to collaciu unvióte un ficheru usando Firefox Send, un serviciu que te permite compartir ficheros con un enllaz seguru, priváu y cifráu que caduca automáticamente p'asegurar que les to coses nun queden siempres na rede.
|
||||
// Text and title used on the download link/button (indicates an action).
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = Baxar
|
||||
downloadNotification = Completóse la to descarga.
|
||||
downloadFinish = Descarga completada
|
||||
// This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = ({ $partialSize } de { $totalSize })
|
||||
// Firefox Send is a brand name and should not be localized.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
sendYourFilesLink = Prueba Firefox Send
|
||||
downloadingPageProgress = Baxando { $filename } ({ $size })
|
||||
downloadingPageMessage = Dexa esta llingüeta abierta entrín vamos en cata del to ficheru y lu desciframos, por favor.
|
||||
@@ -58,7 +75,7 @@ fileTooBig = Esti ficheru ye mui grande como pa xubilu. Debería tener menos de
|
||||
linkExpiredAlt = Enllaz caducáu
|
||||
expiredPageHeader = ¡Esti enllaz caducó o enxamás nun esistó!
|
||||
notSupportedHeader = El to restolador nun ta sofitáu.
|
||||
// Firefox Send is a brand name and should not be localized.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
notSupportedDetail = Desafortunadamente esti restolador nun sofita la teunoloxía web qu'usa Firefox Send. Precisarás d'usar otru restolador. ¡Aconseyámoste Firefox!
|
||||
notSupportedLink = ¿Por qué'l mio restolador nun ta sofitáu?
|
||||
notSupportedOutdatedDetail = Desafortunadamente esta versión de Firefox nun sofita la teunoloxía web qu'usa Firefox Send. Precisarás d'anovar Firefox.
|
||||
@@ -66,7 +83,7 @@ updateFirefox = Anovar Firefox
|
||||
downloadFirefoxButtonSub = Descarga de baldre
|
||||
uploadedFile = Ficheru
|
||||
copyFileList = Copiar URL
|
||||
// expiryFileList is used as a column header
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = Caduca en
|
||||
deleteFileList = Desaniciar
|
||||
nevermindButton = Nun m'importa
|
||||
@@ -79,13 +96,25 @@ deletePopupCancel = Encaboxar
|
||||
deleteButtonHover = Desaniciar
|
||||
copyUrlHover = Copiar URL
|
||||
footerLinkLegal = Llegal
|
||||
// Test Pilot is a proper name and should not be localized.
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = Tocante a Test Pilot
|
||||
footerLinkPrivacy = Privacidá
|
||||
footerLinkTerms = Términos
|
||||
footerLinkCookies = Cookies
|
||||
requirePasswordCheckbox = Riquir una contraseña pa baxar esti ficheru
|
||||
addPasswordButton = Amestar contraseña
|
||||
changePasswordButton = Camudar
|
||||
passwordTryAgain = Contraseña incorreuta. Volvi tentalo.
|
||||
// This label is followed by the password needed to download a file
|
||||
passwordResult = Contraseña: { $password }
|
||||
javascriptRequired = Firefox Send rique JavaScript
|
||||
whyJavascript = ¿Por qué Firefox Send rique JavaScript?
|
||||
enableJavascript = Activa JavaScript y volvi tentalo, por favor.
|
||||
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
|
||||
expiresHoursMinutes = { $hours }h { $minutes }m
|
||||
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
|
||||
expiresMinutes = { $minutes }m
|
||||
# A short status message shown when a password is successfully set
|
||||
passwordIsSet = Afitóse la contraseña
|
||||
# A short status message shown when the user enters a long password
|
||||
maxPasswordLength = Llargor máximu de la contraseña: { $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = Nun pudo afitase esta contraseña
|
||||
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Göndərməyə hazır
|
||||
uploadSvgAlt = Yüklə
|
||||
uploadSuccessTimingHeader = Faylınızın keçidinin 1 endirmədən və ya 24 saatdan sonra vaxtı çıxacaq.
|
||||
expireInfo = Faylınız üçün keçidin vaxtı { $downloadCount } sonra və ya { $timespan } tarixində keçəcək.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 endirmə
|
||||
*[other] { $num } endirmə
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 saat
|
||||
*[other] { $num } saat
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// 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
|
||||
siteSubtitle = ওয়েব গবেষণা
|
||||
siteFeedback = প্রতিক্রিয়া
|
||||
@@ -15,11 +15,13 @@ uploadingPageCancel = আপলোড বাতিল করুন
|
||||
uploadCancelNotification = আপনার অাপলোড বাতিল করা হয়েছে।
|
||||
uploadSuccessConfirmHeader = পাঠানোর জন্য প্রস্তুত
|
||||
uploadSvgAlt = আপলোড
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 ডাউনলোড
|
||||
*[other] { $num } ডাউনলোডগুলো
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 ঘন্টা
|
||||
*[other] { $num } ঘন্টা
|
||||
}
|
||||
@@ -27,20 +29,20 @@ copyUrlFormButton = ক্লিপবোর্ডে কপি করুন
|
||||
copiedUrl = কপি করা হয়েছে!
|
||||
deleteFileButton = ফাইল মুছুন
|
||||
sendAnotherFileLink = আরেকটি ফাইল পাঠান
|
||||
// Alternative text used on the download link/button (indicates an action).
|
||||
# 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")
|
||||
# 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
|
||||
# Used as header in a column indicating the number of times a file has been
|
||||
# downloaded
|
||||
downloadFileName = ডাউনলোড { $filename }
|
||||
downloadFileSize = ({ $size })
|
||||
unlockInputLabel = পাসওয়ার্ড লিখুন
|
||||
unlockInputPlaceholder = পাসওয়ার্ড
|
||||
unlockButtonLabel = আনলক করুন
|
||||
// Text and title used on the download link/button (indicates an action).
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = ডাউনলোড
|
||||
downloadNotification = আপনার ডাউনলোড সম্পন্ন হয়েছে।
|
||||
downloadFinish = ডাউনলোড সম্পন্ন
|
||||
@@ -53,7 +55,7 @@ updateFirefox = Firefox হালনাগাদ করুন
|
||||
downloadFirefoxButtonSub = বিনামূল্যে ডাউনলোড
|
||||
uploadedFile = ফাইল
|
||||
copyFileList = URL অনুলিপি করুন
|
||||
// expiryFileList is used as a column header
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = মেয়াদোত্তীর্ণ তারিখ
|
||||
deleteFileList = মুছে ফেলুন
|
||||
nevermindButton = কিছু মনে করবেন না
|
||||
@@ -64,7 +66,7 @@ deletePopupCancel = বাতিল
|
||||
deleteButtonHover = মুছে ফেলুন
|
||||
copyUrlHover = URL অনুলিপি করুন
|
||||
footerLinkLegal = আইনগত
|
||||
// Test Pilot is a proper name and should not be localized.
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = Test Pilot পরিচিতি
|
||||
footerLinkPrivacy = গোপনীয়তা
|
||||
footerLinkTerms = শর্তাবলী
|
||||
|
||||
@@ -26,12 +26,14 @@ uploadSuccessConfirmHeader = Spremno za slanje
|
||||
uploadSvgAlt = Otpremi
|
||||
uploadSuccessTimingHeader = Veza prema vašoj datoteci će isteći nakon prvog preuzimanja ili za 24 sata.
|
||||
expireInfo = Link za vašu datoteku će isteći nakon { $downloadCount } ili { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 preuzimanja
|
||||
[few] { $num } preuzimanja
|
||||
*[other] { $num } preuzimanja
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 sat
|
||||
[few] { $num } sata
|
||||
*[other] { $num } sati
|
||||
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Llest per enviar
|
||||
uploadSvgAlt = Puja
|
||||
uploadSuccessTimingHeader = L'enllaç al fitxer caducarà quan es baixi una vegada o d'aquí 24 hores.
|
||||
expireInfo = L'enllaç al fitxer caducarà en fer { $downloadCount } o d'aquí { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 baixada
|
||||
*[other] { $num } baixades
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 hora
|
||||
*[other] { $num } hores
|
||||
}
|
||||
@@ -103,8 +105,6 @@ requirePasswordCheckbox = Sol·licita una contrasenya per baixar aquest fitxer
|
||||
addPasswordButton = Afegeix una contrasenya
|
||||
changePasswordButton = Canvia
|
||||
passwordTryAgain = La contrasenya és incorrecta. Torneu-ho a provar.
|
||||
# This label is followed by the password needed to download a file
|
||||
passwordResult = Contrasenya: { $password }
|
||||
reportIPInfringement = Denuncieu una infracció de propietat intel·lectual
|
||||
javascriptRequired = El Firefox Send necessita JavaScript
|
||||
whyJavascript = Per què el Firefox Send necessita JavaScript?
|
||||
@@ -115,3 +115,7 @@ expiresHoursMinutes = { $hours } h { $minutes } min
|
||||
expiresMinutes = { $minutes } min
|
||||
# A short status message shown when a password is successfully set
|
||||
passwordIsSet = S'ha definit la contrasenya
|
||||
# A short status message shown when the user enters a long password
|
||||
maxPasswordLength = Longitud màxima de la contrasenya: { $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = No s'ha pogut definir la contrasenya
|
||||
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Ütz chik richin Nitaq
|
||||
uploadSvgAlt = Tijotob'äx
|
||||
uploadSuccessTimingHeader = Ri ruximonel yakb'äl xtik'is ruq'ijul toq xtiqasäx jumul o pa 24 ramaj.
|
||||
expireInfo = Ri ruximöy ayakb'al xtik'is ruq'ijul chi rij ri { $downloadCount } o { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 qasanïk
|
||||
*[other] { $num } taq qasanïk
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 ramaj
|
||||
*[other] { $num } taq ramaj
|
||||
}
|
||||
|
||||
@@ -26,12 +26,14 @@ uploadSuccessConfirmHeader = Připraveno k odeslání
|
||||
uploadSvgAlt = Nahrát
|
||||
uploadSuccessTimingHeader = Platnost odkazu na váš soubor vyprší po jeho prvním stažení, nebo po 24 hodinách.
|
||||
expireInfo = Platnost odkazu na váš soubor vyprší po { $downloadCount } nebo { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] jednom stažení
|
||||
[few] { $num } staženích
|
||||
*[other] { $num } staženích
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] jedné hodině
|
||||
[few] { $num } hodinách
|
||||
*[other] { $num } hodinách
|
||||
@@ -88,8 +90,8 @@ expiryFileList = Platnost vyprší za
|
||||
deleteFileList = Smazat
|
||||
nevermindButton = Nevadí
|
||||
legalHeader = Podmínky a ochrana soukromí
|
||||
legalNoticeTestPilot = Firefox Send je ve fázi experimentu projektu Test Pilot a platí tak pro něj stejné <a>Podmínky používání</a> a <a>Zásady ochrany soukromí</a>. Více o tomto experimentu a sbíraných datech se dozvíte <a>zde</a>.
|
||||
legalNoticeMozilla = Používání webové služby Firefox Send se řídí <a>Zásadami ochrany soukromí</a> a <a>Podmínkami používání</a> webových stránek Mozilly.
|
||||
legalNoticeTestPilot = Firefox Send je ve fázi experimentu projektu Test Pilot a platí tak pro něj stejné <a>Podmínky používání</a> a <a>Zásady ochrany osobních údajů</a>. Více o tomto experimentu a sbíraných datech se dozvíte <a>zde</a>.
|
||||
legalNoticeMozilla = Používání webové služby Firefox Send se řídí <a>Zásadami ochrany osobních údajů</a> a <a>Podmínkami používání</a> webových stránek Mozilly.
|
||||
deletePopupText = Smazat tento soubor?
|
||||
deletePopupYes = Ano
|
||||
deletePopupCancel = Zrušit
|
||||
|
||||
@@ -26,16 +26,22 @@ uploadSuccessConfirmHeader = Yn Barod i Anfon
|
||||
uploadSvgAlt = Llwytho i Fyny
|
||||
uploadSuccessTimingHeader = Bydd y ddolen i'ch ffeil y dod i ben ar ôl 1 llwytho neu o fewn 24 awr.
|
||||
expireInfo = Bydd y ddolen i'ch ffeil yn dod i ben ym mhen { $downloadCount } neu { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[zero] Llwythi i lawr
|
||||
[one] Llwyth i lawr
|
||||
[two] Lwyth i lawr
|
||||
[few] Llwyth i lawr
|
||||
[many] Llwyth i lawr
|
||||
*[other] Llwyth i lawr
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[zero] awr
|
||||
[one] awr
|
||||
[two] awr
|
||||
[few] awr
|
||||
[many] awr
|
||||
*[other] awr
|
||||
}
|
||||
copyUrlFormLabelWithName = Copïo a rhannu'r ddolen i anfon eich ffeil: { $filename }
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
title = Firefox Send
|
||||
siteSubtitle = webeksperiment
|
||||
siteFeedback = Feedback
|
||||
uploadPageHeader = Privat, krypteret fildeling
|
||||
uploadPageExplainer = Send filer gennem et sikkert, privat og krypteret link, som automatisk udløber for at sikre, at dine ting ikke forbliver på nettet for altid.
|
||||
uploadPageLearnMore = Læs mere
|
||||
uploadPageDropMessage = Drop dine fil her for at begynde at uploade
|
||||
uploadPageSizeMessage = For den mest pålidelige drift er det bedst at holde din fil under 1GB
|
||||
uploadPageBrowseButton = Vælg en fil på din computer
|
||||
uploadPageBrowseButton1 = Vælg en fil at uploade
|
||||
uploadPageMultipleFilesAlert = Upload af flere filer eller en mappe understøttes ikke i øjeblikket.
|
||||
uploadPageBrowseButtonTitle = Upload fil
|
||||
uploadingPageProgress = Uploader { $filename } { $size }
|
||||
importingFile = Importerer…
|
||||
verifyingFile = Bekræfter…
|
||||
encryptingFile = Krypterer…
|
||||
decryptingFile = Dekrypterer…
|
||||
notifyUploadDone = Din upload er færdig.
|
||||
uploadingPageMessage = Når din fil er uploadet, kan du vælge udløbsindstillinger.
|
||||
uploadingPageCancel = Annuller upload
|
||||
uploadCancelNotification = Dit upload blev annulleret.
|
||||
uploadingPageLargeFileMessage = Denne fil er stor, så det kan tage lang tid at uploade den. Vær tålmodig!
|
||||
uploadingFileNotification = Giv mig besked, når filen er færdig.
|
||||
uploadSuccessConfirmHeader = Klar til at sende
|
||||
uploadSvgAlt = Upload
|
||||
uploadSuccessTimingHeader = Linket til din fil udløber efter 1 hentning eller om 24 timer.
|
||||
expireInfo = Linket til din fil udløber efter { $downloadCount } eller { $timespan }.
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 hentning
|
||||
*[other] { $num } hentninger
|
||||
}
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 time
|
||||
*[other] { $num } timer
|
||||
}
|
||||
copyUrlFormLabelWithName = Kopier og del linket for at sende din fil: { $filename }
|
||||
copyUrlFormButton = Kopier til udklipsholder
|
||||
copiedUrl = Kopieret!
|
||||
deleteFileButton = Slet fil
|
||||
sendAnotherFileLink = Send endnu en fil
|
||||
# Alternative text used on the download link/button (indicates an action).
|
||||
downloadAltText = Hent
|
||||
downloadsFileList = Hentninger
|
||||
# Used as header in a column indicating the amount of time left before a
|
||||
# download link expires (e.g. "10h 5m")
|
||||
timeFileList = Tid
|
||||
# Used as header in a column indicating the number of times a file has been
|
||||
# downloaded
|
||||
downloadFileName = Hent { $filename }
|
||||
downloadFileSize = ({ $size })
|
||||
unlockInputLabel = Indtast adgangskode
|
||||
unlockInputPlaceholder = Adgangskode
|
||||
unlockButtonLabel = Lås op
|
||||
downloadFileTitle = Hent krypteret fil
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
downloadMessage = Din ven sender dig en fil med Firefox Send, en tjeneste, der lader dig dele filer via et sikkert, privat og krypteret link, som automatisk udløber for at sikre, at dine ting ikke forbliver på nettet for altid.
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = Hent
|
||||
downloadNotification = Hentning af din fil er fuldført.
|
||||
downloadFinish = Hentning fuldført
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = ({ $partialSize } af { $totalSize })
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
sendYourFilesLink = Prøv Firefox Send
|
||||
downloadingPageProgress = Henter { $filename } { $size }
|
||||
downloadingPageMessage = Hold dette faneblad åbent, mens vi henter og dekrypterer din fil.
|
||||
errorAltText = Upload mislykkedes
|
||||
errorPageHeader = Der gik noget galt!
|
||||
errorPageMessage = Der opstod en fejl under upload af filen.
|
||||
errorPageLink = Send endnu en fil
|
||||
fileTooBig = Den fil er for stor at uploade. Den skal være mindre end { $size }.
|
||||
linkExpiredAlt = Link er udløbet
|
||||
expiredPageHeader = Dette link er udløbet eller har aldrig eksisteret!
|
||||
notSupportedHeader = Din browser understøttes ikke.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
notSupportedDetail = Desværre understøtter denne browser ikke den webteknologi, som driver Firefox Send. Du skal bruge en anden browser. Vi anbefaler Firefox!
|
||||
notSupportedLink = Hvorfor understøttes min browser ikke?
|
||||
notSupportedOutdatedDetail = Desværre understøtter denne version af Firefox ikke den webteknologi, som driver Firefox Send. Du skal opdatere din browser.
|
||||
updateFirefox = Opdater Firefox
|
||||
downloadFirefoxButtonSub = Gratis download
|
||||
uploadedFile = Fil
|
||||
copyFileList = Kopier URL
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = Udløber om
|
||||
deleteFileList = Slet
|
||||
nevermindButton = Glem det
|
||||
legalHeader = Betingelser & privatliv
|
||||
legalNoticeTestPilot = Firefox Send er i øjeblikket et Testpilot-eksperiment, som er underlagt Testpilots <a>betingelser for brug</a> og <a>privatlivspolitik</a>. Du kan læse mere om eksperimentet og dets indsamling af data <a>her</a>.
|
||||
legalNoticeMozilla = Brugen af webstedet Firefox Send er også underlagt Mozillas <a>privatlivspolitik for websteder</a> og <a>betingelser for brug af websteder</a>.
|
||||
deletePopupText = Slet denne fil?
|
||||
deletePopupYes = Ja
|
||||
deletePopupCancel = Annuller
|
||||
deleteButtonHover = Slet
|
||||
copyUrlHover = Kopier URL
|
||||
footerLinkLegal = Juridisk
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = Om Testpilot
|
||||
footerLinkPrivacy = Privatliv
|
||||
footerLinkTerms = Betingelser
|
||||
footerLinkCookies = Cookies
|
||||
requirePasswordCheckbox = Kræv an adgangskode for at hente denne fil
|
||||
addPasswordButton = Tilføj adgangskode
|
||||
changePasswordButton = Skift
|
||||
passwordTryAgain = Forkert adgangskode. Prøv igen.
|
||||
reportIPInfringement = Rapporter krænkelse af intellektuel ejendomsret
|
||||
javascriptRequired = Firefox Send kræver JavaScript
|
||||
whyJavascript = Hvorfor kræver Firefox Send JavaScript?
|
||||
enableJavascript = Aktiver JavaScript og prøv igen.
|
||||
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
|
||||
expiresHoursMinutes = { $hours } t { $minutes } m
|
||||
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
|
||||
expiresMinutes = { $minutes } m
|
||||
# A short status message shown when a password is successfully set
|
||||
passwordIsSet = Adgangskode sat
|
||||
# A short status message shown when the user enters a long password
|
||||
maxPasswordLength = Maksimum længde af adgangskode: { $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = Adgangskoden kunne ikke sættes
|
||||
|
||||
@@ -20,17 +20,19 @@ notifyUploadDone = Ihr Upload ist abgeschlossen.
|
||||
uploadingPageMessage = Sobald Ihre Datei hochgeladen wird, können Sie die Optionen zum Ablaufdatum auswählen.
|
||||
uploadingPageCancel = Hochladen abbrechen
|
||||
uploadCancelNotification = Ihr Upload wurde abgebrochen.
|
||||
uploadingPageLargeFileMessage = Diese Datei ist groß, sodass das hochladen einige Zeit dauern könnte. Haben Sie Geduld!
|
||||
uploadingPageLargeFileMessage = Diese Datei ist groß, sodass das Hochladen einige Zeit dauern könnte. Haben Sie Geduld!
|
||||
uploadingFileNotification = Mich benachrichtigen, wenn der Upload abgeschlossen ist.
|
||||
uploadSuccessConfirmHeader = Bereit zum Senden
|
||||
uploadSvgAlt = Hochladen
|
||||
uploadSuccessTimingHeader = Der Link zu Ihrer Datei läuft nach einem Download oder in 24 Stunden ab.
|
||||
expireInfo = Der Link zu Ihrer Datei läuft nach { $downloadCount } oder { $timespan } ab.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] einem Download
|
||||
*[other] { $num } Downloads
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] einer Stunde
|
||||
*[other] { $num } Stunden
|
||||
}
|
||||
@@ -86,7 +88,7 @@ expiryFileList = Läuft ab in
|
||||
deleteFileList = Löschen
|
||||
nevermindButton = Egal
|
||||
legalHeader = Nutzungsbedingungen und Datenschutz
|
||||
legalNoticeTestPilot = Firefox Send ist aktuell ein Test-Pilot-Experiment und unterliegt den <a>Nutzungsbedingungen</a> und dem <a>Datenschutzhinweis</a> von Test Pilot. Mehr über diese Experiment und die Daten, die es sammelt, erfahren Sie <a>hier</a>.
|
||||
legalNoticeTestPilot = Firefox Send ist aktuell ein Test-Pilot-Experiment und unterliegt den <a>Nutzungsbedingungen</a> und dem <a>Datenschutzhinweis</a> von Test Pilot. Mehr über dieses Experiment und die Daten, die es sammelt, erfahren Sie <a>hier</a>.
|
||||
legalNoticeMozilla = Die Nutzung der Website von Firefox Send unterliegt außerdem Mozillas <a>Datenschutzhinweis für Websites</a> und <a>Nutzungsbedingungen für Websites</a>.
|
||||
deletePopupText = Diese Datei löschen?
|
||||
deletePopupYes = Ja
|
||||
@@ -106,7 +108,7 @@ passwordTryAgain = Falsches Passwort. Versuchen Sie es erneut.
|
||||
reportIPInfringement = IP-Verletzung melden
|
||||
javascriptRequired = Firefox Send benötigt JavaScript
|
||||
whyJavascript = Warum benötigt Firefox Send JavaScript?
|
||||
enableJavascript = Bitte akivieren Sie JavaScript und versuchen Sie es erneut.
|
||||
enableJavascript = Bitte aktivieren Sie JavaScript und versuchen Sie es erneut.
|
||||
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
|
||||
expiresHoursMinutes = { $hours }h { $minutes }m
|
||||
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
|
||||
|
||||
@@ -26,13 +26,15 @@ uploadSuccessConfirmHeader = Gótowy za słanje
|
||||
uploadSvgAlt = Nagraś
|
||||
uploadSuccessTimingHeader = Wótkaz k wašej dataji pó 1 ześěgnjenju abo 24 góźinach spadnjo.
|
||||
expireInfo = Wótkaz k wašej dataji pó { $downloadCount } abo { $timespan } spadnjo.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 ześěgnjenje
|
||||
[two] { $num } ześěgnjeni
|
||||
[few] { $num } ześěgnjenja
|
||||
*[other] { $num } ześěgnjenjow
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 góźina
|
||||
[two] { $num } góźinje
|
||||
[few] { $num } góźiny
|
||||
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Έτοιμο για αποστολή
|
||||
uploadSvgAlt = Μεταφόρτωση
|
||||
uploadSuccessTimingHeader = Ο σύνδεσμος του αρχείου σας θα λήξει έπειτα από 1 λήψη ή 24 ώρες.
|
||||
expireInfo = Ο σύνδεσμος για το αρχείο σας θα λήξει μετά από { $downloadCount } ή { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 λήψη
|
||||
*[other] { $num } λήψεις
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 ώρα
|
||||
*[other] { $num } ώρες
|
||||
}
|
||||
|
||||
121
public/locales/en-CA/send.ftl
Normal file
121
public/locales/en-CA/send.ftl
Normal file
@@ -0,0 +1,121 @@
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
title = Firefox Send
|
||||
siteSubtitle = web experiment
|
||||
siteFeedback = Feedback
|
||||
uploadPageHeader = Private, Encrypted File Sharing
|
||||
uploadPageExplainer = Send files through a safe, private, and encrypted link that automatically expires to ensure your stuff does not remain online forever.
|
||||
uploadPageLearnMore = Learn more
|
||||
uploadPageDropMessage = Drop your file here to start uploading
|
||||
uploadPageSizeMessage = For the most reliable operation, it’s best to keep your file under 1GB
|
||||
uploadPageBrowseButton = Select a file on your computer
|
||||
uploadPageBrowseButton1 = Select a file to upload
|
||||
uploadPageMultipleFilesAlert = Uploading multiple files or a folder is currently not supported.
|
||||
uploadPageBrowseButtonTitle = Upload file
|
||||
uploadingPageProgress = Uploading { $filename } ({ $size })
|
||||
importingFile = Importing…
|
||||
verifyingFile = Verifying…
|
||||
encryptingFile = Encrypting…
|
||||
decryptingFile = Decrypting…
|
||||
notifyUploadDone = Your upload has finished.
|
||||
uploadingPageMessage = Once your file uploads you will be able to set expiry options.
|
||||
uploadingPageCancel = Cancel upload
|
||||
uploadCancelNotification = Your upload was cancelled.
|
||||
uploadingPageLargeFileMessage = This file is large and may take a while to upload. Sit tight!
|
||||
uploadingFileNotification = Notify me when the upload is complete.
|
||||
uploadSuccessConfirmHeader = Ready to Send
|
||||
uploadSvgAlt = Upload
|
||||
uploadSuccessTimingHeader = The link to your file will expire after 1 download or in 24 hours.
|
||||
expireInfo = The link to your file will expire after { $downloadCount } or { $timespan }.
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 download
|
||||
*[other] { $num } downloads
|
||||
}
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 hour
|
||||
*[other] { $num } hours
|
||||
}
|
||||
copyUrlFormLabelWithName = Copy and share the link to send your file: { $filename }
|
||||
copyUrlFormButton = Copy to clipboard
|
||||
copiedUrl = Copied!
|
||||
deleteFileButton = Delete file
|
||||
sendAnotherFileLink = Send another file
|
||||
# Alternative text used on the download link/button (indicates an action).
|
||||
downloadAltText = Download
|
||||
downloadsFileList = Downloads
|
||||
# Used as header in a column indicating the amount of time left before a
|
||||
# download link expires (e.g. "10h 5m")
|
||||
timeFileList = Time
|
||||
# Used as header in a column indicating the number of times a file has been
|
||||
# downloaded
|
||||
downloadFileName = Download { $filename }
|
||||
downloadFileSize = ({ $size })
|
||||
unlockInputLabel = Enter Password
|
||||
unlockInputPlaceholder = Password
|
||||
unlockButtonLabel = Unlock
|
||||
downloadFileTitle = Download Encrypted File
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
downloadMessage = Your friend is sending you a file with Firefox Send, a service that allows you to share files with a safe, private, and encrypted link that automatically expires to ensure your stuff does not remain online forever.
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = Download
|
||||
downloadNotification = Your download has completed.
|
||||
downloadFinish = Download Complete
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = ({ $partialSize } of { $totalSize })
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
sendYourFilesLink = Try Firefox Send
|
||||
downloadingPageProgress = Downloading { $filename } ({ $size })
|
||||
downloadingPageMessage = Please leave this tab open while we fetch your file and decrypt it.
|
||||
errorAltText = Upload error
|
||||
errorPageHeader = Something went wrong!
|
||||
errorPageMessage = There has been an error uploading the file.
|
||||
errorPageLink = Send another file
|
||||
fileTooBig = That file is too big to upload. It should be less than { $size }.
|
||||
linkExpiredAlt = Link expired
|
||||
expiredPageHeader = This link has expired or never existed in the first place!
|
||||
notSupportedHeader = Your browser is not supported.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
notSupportedDetail = Unfortunately this browser does not support the web technology that powers Firefox Send. You’ll need to try another browser. We recommend Firefox!
|
||||
notSupportedLink = Why is my browser not supported?
|
||||
notSupportedOutdatedDetail = Unfortunately this version of Firefox does not support the web technology that powers Firefox Send. You’ll need to update your browser.
|
||||
updateFirefox = Update Firefox
|
||||
downloadFirefoxButtonSub = Free Download
|
||||
uploadedFile = File
|
||||
copyFileList = Copy URL
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = Expires In
|
||||
deleteFileList = Delete
|
||||
nevermindButton = Never mind
|
||||
legalHeader = Terms & Privacy
|
||||
legalNoticeTestPilot = Firefox Send is currently a Test Pilot experiment, and subject to the Test Pilot <a>Terms of Service</a> and <a>Privacy Notice</a>. You can learn more about this experiment and its data collection <a>here</a>.
|
||||
legalNoticeMozilla = Use of the Firefox Send website is also subject to Mozilla’s <a>Websites Privacy Notice</a> and <a>Websites Terms of Use</a>.
|
||||
deletePopupText = Delete this file?
|
||||
deletePopupYes = Yes
|
||||
deletePopupCancel = Cancel
|
||||
deleteButtonHover = Delete
|
||||
copyUrlHover = Copy URL
|
||||
footerLinkLegal = Legal
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = About Test Pilot
|
||||
footerLinkPrivacy = Privacy
|
||||
footerLinkTerms = Terms
|
||||
footerLinkCookies = Cookies
|
||||
requirePasswordCheckbox = Require a password to download this file
|
||||
addPasswordButton = Add password
|
||||
changePasswordButton = Change
|
||||
passwordTryAgain = Incorrect password. Try again.
|
||||
reportIPInfringement = Report IP Infringement
|
||||
javascriptRequired = Firefox Send requires JavaScript
|
||||
whyJavascript = Why does Firefox Send require JavaScript?
|
||||
enableJavascript = Please enable JavaScript and try again.
|
||||
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
|
||||
expiresHoursMinutes = { $hours }h { $minutes }m
|
||||
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
|
||||
expiresMinutes = { $minutes }m
|
||||
# A short status message shown when a password is successfully set
|
||||
passwordIsSet = Password set
|
||||
# A short status message shown when the user enters a long password
|
||||
maxPasswordLength = Maximum password length: { $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = This password could not be set
|
||||
121
public/locales/en-GB/send.ftl
Normal file
121
public/locales/en-GB/send.ftl
Normal file
@@ -0,0 +1,121 @@
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
title = Firefox Send
|
||||
siteSubtitle = web experiment
|
||||
siteFeedback = Feedback
|
||||
uploadPageHeader = Private, Encrypted File Sharing
|
||||
uploadPageExplainer = Send files through a safe, private, and encrypted link that automatically expires to ensure your stuff does not remain online forever.
|
||||
uploadPageLearnMore = Learn more
|
||||
uploadPageDropMessage = Drop your file here to start uploading
|
||||
uploadPageSizeMessage = For the most reliable operation, it’s best to keep your file under 1GB
|
||||
uploadPageBrowseButton = Select a file on your computer
|
||||
uploadPageBrowseButton1 = Select a file to upload
|
||||
uploadPageMultipleFilesAlert = Uploading multiple files or a folder is currently not supported.
|
||||
uploadPageBrowseButtonTitle = Upload file
|
||||
uploadingPageProgress = Uploading { $filename } ({ $size })
|
||||
importingFile = Importing…
|
||||
verifyingFile = Verifying…
|
||||
encryptingFile = Encrypting…
|
||||
decryptingFile = Decrypting…
|
||||
notifyUploadDone = Your upload has finished.
|
||||
uploadingPageMessage = Once your file uploads you will be able to set expiry options.
|
||||
uploadingPageCancel = Cancel upload
|
||||
uploadCancelNotification = Your upload was cancelled.
|
||||
uploadingPageLargeFileMessage = This file is large and may take a while to upload. Sit tight!
|
||||
uploadingFileNotification = Notify me when the upload is complete.
|
||||
uploadSuccessConfirmHeader = Ready to Send
|
||||
uploadSvgAlt = Upload
|
||||
uploadSuccessTimingHeader = The link to your file will expire after 1 download or in 24 hours.
|
||||
expireInfo = The link to your file will expire after { $downloadCount } or { $timespan }.
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 download
|
||||
*[other] { $num } downloads
|
||||
}
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 hour
|
||||
*[other] { $num } hours
|
||||
}
|
||||
copyUrlFormLabelWithName = Copy and share the link to send your file: { $filename }
|
||||
copyUrlFormButton = Copy to clipboard
|
||||
copiedUrl = Copied!
|
||||
deleteFileButton = Delete file
|
||||
sendAnotherFileLink = Send another file
|
||||
# Alternative text used on the download link/button (indicates an action).
|
||||
downloadAltText = Download
|
||||
downloadsFileList = Downloads
|
||||
# Used as header in a column indicating the amount of time left before a
|
||||
# download link expires (e.g. "10h 5m")
|
||||
timeFileList = Time
|
||||
# Used as header in a column indicating the number of times a file has been
|
||||
# downloaded
|
||||
downloadFileName = Download { $filename }
|
||||
downloadFileSize = ({ $size })
|
||||
unlockInputLabel = Enter Password
|
||||
unlockInputPlaceholder = Password
|
||||
unlockButtonLabel = Unlock
|
||||
downloadFileTitle = Download Encrypted File
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
downloadMessage = Your friend is sending you a file with Firefox Send, a service that allows you to share files with a safe, private, and encrypted link that automatically expires to ensure your stuff does not remain online forever.
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = Download
|
||||
downloadNotification = Your download has completed.
|
||||
downloadFinish = Download Complete
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = ({ $partialSize } of { $totalSize })
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
sendYourFilesLink = Try Firefox Send
|
||||
downloadingPageProgress = Downloading { $filename } ({ $size })
|
||||
downloadingPageMessage = Please leave this tab open while we fetch your file and decrypt it.
|
||||
errorAltText = Upload error
|
||||
errorPageHeader = Something went wrong!
|
||||
errorPageMessage = There has been an error uploading the file.
|
||||
errorPageLink = Send another file
|
||||
fileTooBig = That file is too big to upload. It should be less than { $size }.
|
||||
linkExpiredAlt = Link expired
|
||||
expiredPageHeader = This link has expired or never existed in the first place!
|
||||
notSupportedHeader = Your browser is not supported.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
notSupportedDetail = Unfortunately this browser does not support the web technology that powers Firefox Send. You’ll need to try another browser. We recommend Firefox!
|
||||
notSupportedLink = Why is my browser not supported?
|
||||
notSupportedOutdatedDetail = Unfortunately this version of Firefox does not support the web technology that powers Firefox Send. You’ll need to update your browser.
|
||||
updateFirefox = Update Firefox
|
||||
downloadFirefoxButtonSub = Free Download
|
||||
uploadedFile = File
|
||||
copyFileList = Copy URL
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = Expires In
|
||||
deleteFileList = Delete
|
||||
nevermindButton = Never mind
|
||||
legalHeader = Terms & Privacy
|
||||
legalNoticeTestPilot = Firefox Send is currently a Test Pilot experiment, and subject to the Test Pilot <a>Terms of Service</a> and <a>Privacy Notice</a>. You can learn more about this experiment and its data collection <a>here</a>.
|
||||
legalNoticeMozilla = Use of the Firefox Send web site is also subject to Mozilla’s <a>Websites Privacy Notice</a> and <a>Websites Terms of Use</a>.
|
||||
deletePopupText = Delete this file?
|
||||
deletePopupYes = Yes
|
||||
deletePopupCancel = Cancel
|
||||
deleteButtonHover = Delete
|
||||
copyUrlHover = Copy URL
|
||||
footerLinkLegal = Legal
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = About Test Pilot
|
||||
footerLinkPrivacy = Privacy
|
||||
footerLinkTerms = Terms
|
||||
footerLinkCookies = Cookies
|
||||
requirePasswordCheckbox = Require a password to download this file
|
||||
addPasswordButton = Add password
|
||||
changePasswordButton = Change
|
||||
passwordTryAgain = Incorrect password. Try again.
|
||||
reportIPInfringement = Report IP Infringement
|
||||
javascriptRequired = Firefox Send requires JavaScript
|
||||
whyJavascript = Why does Firefox Send require JavaScript?
|
||||
enableJavascript = Please enable JavaScript and try again.
|
||||
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
|
||||
expiresHoursMinutes = { $hours }h { $minutes }m
|
||||
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
|
||||
expiresMinutes = { $minutes }m
|
||||
# A short status message shown when a password is successfully set
|
||||
passwordIsSet = Password set
|
||||
# A short status message shown when the user enters a long password
|
||||
maxPasswordLength = Maximum password length: { $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = This password could not be set
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Listo para enviar
|
||||
uploadSvgAlt = Subir
|
||||
uploadSuccessTimingHeader = El enlace al archivo expirará después de 1 descarga o en 24 horas.
|
||||
expireInfo = El enlace a tu archivo expirará después de { $downloadCount } o { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 descarga
|
||||
*[other] { $num } descargas
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 hora
|
||||
*[other] { $num } horas
|
||||
}
|
||||
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Listo para enviar
|
||||
uploadSvgAlt = Subir
|
||||
uploadSuccessTimingHeader = El enlace a tu archivo expirará tras 1 descarga o en 24 horas.
|
||||
expireInfo = El enlace a tu archivo expirará después de { $downloadCount } o { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 descarga
|
||||
*[other] { $num } descargas
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 hora
|
||||
*[other] { $num } horas
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ uploadPageBrowseButton1 = Seleccionar un archivo para subir
|
||||
uploadPageMultipleFilesAlert = Aún no se pueden subir varios archivos o una carpeta.
|
||||
uploadPageBrowseButtonTitle = Subir archivo
|
||||
uploadingPageProgress = Subiendo { $filename } ({ $size })
|
||||
importingFile = Imporando...
|
||||
importingFile = Importando...
|
||||
verifyingFile = Comprobando...
|
||||
encryptingFile = Encriptando...
|
||||
decryptingFile = Desencriptando...
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Listo para enviar
|
||||
uploadSvgAlt = Subir
|
||||
uploadSuccessTimingHeader = El enlace al archivo caducará tras descargarlo una vez o en 24 horas.
|
||||
expireInfo = El enlace al archivo expirará tras { $downloadCount } o { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 descarga
|
||||
*[other] { $num } descargas
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 hora
|
||||
*[other] { $num } horas
|
||||
}
|
||||
@@ -86,7 +88,7 @@ expiryFileList = Caduca en
|
||||
deleteFileList = Eliminar
|
||||
nevermindButton = Da igual
|
||||
legalHeader = Términos y privacidad
|
||||
legalNoticeTestPilot = Firefox Send sigue siendo un experimento de Test Pilot y está sujero a las <a>Condiciones del servicio</a> y al <a>Aviso de privacidad</a> de Test Pilot.
|
||||
legalNoticeTestPilot = Firefox Send sigue siendo un experimento de Test Pilot y está sujero a las <a>Condiciones del servicio</a> y al <a>Aviso de privacidad</a> de Test Pilot. <a>Aquí</a> podrás descubrir más sobre este experimento y su recopilación de datos.
|
||||
legalNoticeMozilla = El uso de la página de Firefox Send también está sujeto al <a>Aviso de privacidad sobre sitios web</a> y a los <a>Términos de uso sobre sitios web</a>.
|
||||
deletePopupText = ¿Eliminar el archivo?
|
||||
deletePopupYes = Sí
|
||||
|
||||
@@ -26,10 +26,12 @@ uploadSuccessConfirmHeader = Listo para enviar
|
||||
uploadSvgAlt = Subir
|
||||
uploadSuccessTimingHeader = El enlace a tu archivo expirará después de una descarga o en 24 horas.
|
||||
expireInfo = El enlace a tu archivo expirará después de { $downloadCount } o { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
*[one] 1 descarga
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 hora
|
||||
*[other] { $num } horas
|
||||
}
|
||||
@@ -102,8 +104,6 @@ requirePasswordCheckbox = Se necesita una contraseña para descargar este archiv
|
||||
addPasswordButton = Agregar contraseña
|
||||
changePasswordButton = Cambiar
|
||||
passwordTryAgain = Contraseña incorrecta. Intenta de nuevo.
|
||||
# This label is followed by the password needed to download a file
|
||||
passwordResult = Contraseña: { $password }
|
||||
reportIPInfringement = Denunciar una infracción de PI
|
||||
javascriptRequired = Firefox Send requiere JavaScript
|
||||
whyJavascript = ¿Por qué Firefox Send requiere JavaScript?
|
||||
@@ -114,3 +114,7 @@ expiresHoursMinutes = { $hours }h { $minutes }m
|
||||
expiresMinutes = { $minutes }m
|
||||
# A short status message shown when a password is successfully set
|
||||
passwordIsSet = Contraseña establecida
|
||||
# A short status message shown when the user enters a long password
|
||||
maxPasswordLength = Longitud máxima de la contraseña: { $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = No se ha podido establecer la contraseña
|
||||
|
||||
@@ -26,11 +26,13 @@ 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 = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] üht allalaadimist
|
||||
*[other] { $num } allalaadimist
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] üht tundi
|
||||
*[other] { $num } tundi
|
||||
}
|
||||
|
||||
@@ -26,11 +26,15 @@ uploadSuccessConfirmHeader = آماده برای ارسال
|
||||
uploadSvgAlt = بارگذاری
|
||||
uploadSuccessTimingHeader = پیوند به پرونده شما بعد از ۱ بار دانلود یا ۲۴ ساعت حذف خواهد شد.
|
||||
expireInfo = این پیوند به فایل شما پس از { $downloadCount } یا { $timespan } منقضی خواهد شد.
|
||||
downloadCount = { $num ->
|
||||
*[other] ۱ بارگذاری
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] ۱ بارگیری
|
||||
*[other] { $num } بارگیری
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
*[other] ۱ ساعت
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] ۱ ساعت
|
||||
*[other] { $num } ساعت
|
||||
}
|
||||
copyUrlFormLabelWithName = برای ارسال پرونده پیوند آن را رونوشت و به اشتراک بگذارید: { $filename }
|
||||
copyUrlFormButton = رونوشت به کلیپبورد
|
||||
@@ -103,7 +107,7 @@ changePasswordButton = تغییر
|
||||
passwordTryAgain = کلمه عبور اشتباه است. مجدد تلاش کنید.
|
||||
reportIPInfringement = گزارش تخلف IP
|
||||
javascriptRequired = Firefox Send نیازمند جاوااسکریپت است
|
||||
whyJavascript = چرا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 }دقیقه
|
||||
|
||||
120
public/locales/fi/send.ftl
Normal file
120
public/locales/fi/send.ftl
Normal file
@@ -0,0 +1,120 @@
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
title = Firefox Send
|
||||
siteSubtitle = web-kokeilu
|
||||
siteFeedback = Palaute
|
||||
uploadPageHeader = Yksityinen, salattu tiedostojen jakaminen
|
||||
uploadPageExplainer = Lähetä tiedostoja turvallisen, yksityisen ja salatun linkin kautta. Linkki vanhenee automaattisesti, joten tietosi eivät pysy verkossa ikuisesti.
|
||||
uploadPageLearnMore = Lue lisää
|
||||
uploadPageDropMessage = Aloita lataaminen pudottamalla tiedosto tähän
|
||||
uploadPageSizeMessage = Luotettavin toiminta saadaan pitämällä tiedostokoko alle 1 Gt
|
||||
uploadPageBrowseButton = Valitse tiedosto tietokoneesta
|
||||
uploadPageBrowseButton1 = Valitse ladattava tiedosto
|
||||
uploadPageMultipleFilesAlert = Useiden tiedostojen tai kansion lataamista ei tällä hetkellä tueta.
|
||||
uploadPageBrowseButtonTitle = Lataa tiedosto
|
||||
uploadingPageProgress = Ladataan { $filename } ({ $size })
|
||||
importingFile = Tuodaan…
|
||||
verifyingFile = Tarkistetaan...
|
||||
encryptingFile = Salataan...
|
||||
decryptingFile = Puretaan salausta...
|
||||
notifyUploadDone = Latauksesi on päättynyt.
|
||||
uploadingPageMessage = Kun tiedostojen lataaminen on valmista, voit määrittää vanhentumisvaihtoehdot.
|
||||
uploadingPageCancel = Peruuta lataus
|
||||
uploadCancelNotification = Latauksesi peruutettiin.
|
||||
uploadingPageLargeFileMessage = Tämä tiedosto on suuri ja sen lataaminen saattaa kestää jonkin aikaa. Nyt malttia peliin!
|
||||
uploadingFileNotification = Ilmoita minulle, kun lataus on valmis.
|
||||
uploadSuccessConfirmHeader = Valmis lähettämään
|
||||
uploadSvgAlt = Lataa
|
||||
uploadSuccessTimingHeader = Linkki tiedostoon vanhenee 1 latauksen tai 24 tunnin kuluttua.
|
||||
expireInfo = Linkki tiedostoon vanhenee { $downloadCount } tai { $timespan } kuluttua.
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] yhden latauksen
|
||||
*[other] { $num } latauksen
|
||||
}
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 tunnin
|
||||
*[other] { $num } tunnin
|
||||
}
|
||||
copyUrlFormLabelWithName = Kopioi ja jaa linkki lähettämääsi tiedostoon: { $filename }
|
||||
copyUrlFormButton = Kopioi leikepöydälle
|
||||
copiedUrl = Kopioitu!
|
||||
deleteFileButton = Poista tiedosto
|
||||
sendAnotherFileLink = Lähetä toinen tiedosto
|
||||
# Alternative text used on the download link/button (indicates an action).
|
||||
downloadAltText = Lataa
|
||||
downloadsFileList = Lataukset
|
||||
# Used as header in a column indicating the amount of time left before a
|
||||
# download link expires (e.g. "10h 5m")
|
||||
timeFileList = Aika
|
||||
# Used as header in a column indicating the number of times a file has been
|
||||
# downloaded
|
||||
downloadFileName = { $filename } ladattu
|
||||
downloadFileSize = ({ $size })
|
||||
unlockInputLabel = Syötä salasana
|
||||
unlockInputPlaceholder = Salasana
|
||||
unlockButtonLabel = Avaa
|
||||
downloadFileTitle = Lataa salattu tiedosto
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
downloadMessage = Ystäväsi lähettää sinulle tiedoston Firefox Send -palvelulla, jonka avulla voidaan jakaa tiedostoja turvallisen, yksityisen ja salatun linkin kautta. Linkki vanhenee automaattisesti, joten tiedot eivät säily verkossa ikuisesti.
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = Lataa
|
||||
downloadNotification = Latauksesi on valmis.
|
||||
downloadFinish = Lataus valmis
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = { $partialSize } / { $totalSize }
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
sendYourFilesLink = Kokeile Firefox Sendiä
|
||||
downloadingPageProgress = Ladataan { $filename } ({ $size })
|
||||
downloadingPageMessage = Jätä tämä välilehti auki siksi aikaa kun haemme tiedoston ja puramme sen.
|
||||
errorAltText = Latausvirhe
|
||||
errorPageHeader = Jokin meni pieleen!
|
||||
errorPageMessage = Tiedoston lataamisessa on tapahtunut virhe.
|
||||
errorPageLink = Lähetä toinen tiedosto
|
||||
fileTooBig = Tämä tiedosto on liian suuri ladattavaksi. Sen pitäisi olla pienempi kuin { $size }.
|
||||
linkExpiredAlt = Linkki on vanhentunut
|
||||
expiredPageHeader = Tämä linkki on vanhentunut tai sitä ei ole koskaan ollut olemassa!
|
||||
notSupportedHeader = Selaintasi ei tueta.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
notSupportedDetail = Valitettavasti tämä selain ei tue Firefox Sendiä käyttävää web-tekniikkaa. Sinun on kokeiltava toista selainta. Suosittelemme Firefoxia!
|
||||
notSupportedLink = Miksi selaintani ei tueta?
|
||||
notSupportedOutdatedDetail = Valitettavasti tämä Firefoxin versio ei tue Firefox Sendiä käyttävää web-tekniikkaa. Sinun on päivitettävä selaimesi.
|
||||
updateFirefox = Päivitä Firefox
|
||||
downloadFirefoxButtonSub = Ilmainen lataus
|
||||
uploadedFile = Tiedosto
|
||||
copyFileList = Kopioi osoite
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = Vanhenee
|
||||
deleteFileList = Poista
|
||||
nevermindButton = Unohda koko juttu
|
||||
legalHeader = Ehdot ja yksityisyys
|
||||
legalNoticeTestPilot = Firefox Send on tällä hetkellä Test Pilot -kokeilu, ja siihen sovelletaan Test Pilot <a>käyttöehtoja</a> ja <a>tietosuojakäytäntöjä</a>. Saat lisätietoja tästä kokeilusta ja sen tiedonkeruusta <a>täällä</a>.
|
||||
deletePopupText = Poista tämä tiedosto?
|
||||
deletePopupYes = Kyllä
|
||||
deletePopupCancel = Peruuta
|
||||
deleteButtonHover = Poista
|
||||
copyUrlHover = Kopioi osoite
|
||||
footerLinkLegal = Juridiset asiat
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = Tietoja Test Pilotista
|
||||
footerLinkPrivacy = Tietosuoja
|
||||
footerLinkTerms = Ehdot
|
||||
footerLinkCookies = Evästeet
|
||||
requirePasswordCheckbox = Vaadi salasanaa tämän tiedoston lataamiseen
|
||||
addPasswordButton = Lisää salasana
|
||||
changePasswordButton = Muuta
|
||||
passwordTryAgain = Väärä salasana. Yritä uudelleen.
|
||||
reportIPInfringement = Ilmoita IP-rikkomuksesta
|
||||
javascriptRequired = Firefox-Send vaatii JavaScriptin
|
||||
whyJavascript = Miksi Firefox Send vaatii JavaScriptin?
|
||||
enableJavascript = Ota JavaScript käyttöön ja yritä uudelleen.
|
||||
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
|
||||
expiresHoursMinutes = { $hours }t { $minutes }min
|
||||
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
|
||||
expiresMinutes = { $minutes }min
|
||||
# A short status message shown when a password is successfully set
|
||||
passwordIsSet = Salasana asetettu
|
||||
# A short status message shown when the user enters a long password
|
||||
maxPasswordLength = Salasanan enimmäispituus: { $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = Tätä salasanaa ei voitu asettaa
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Paré à l’envoi
|
||||
uploadSvgAlt = Envoyer
|
||||
uploadSuccessTimingHeader = Le lien vers votre fichier expirera après le premier téléchargement ou au bout de 24 heures.
|
||||
expireInfo = Le lien vers votre fichier expirera après { $downloadCount } ou { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 téléchargement
|
||||
*[other] { $num } téléchargements
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 heure
|
||||
*[other] { $num } heures
|
||||
}
|
||||
@@ -86,8 +88,8 @@ expiryFileList = Expire dans
|
||||
deleteFileList = Supprimer
|
||||
nevermindButton = Non merci
|
||||
legalHeader = Confidentialité et conditions d’utilisation
|
||||
legalNoticeTestPilot = Firefox Send est actuellement une expérience Test Pilot, et en tant que tel est soumis aux <a>conditions d’utilisation</a> et à la <a>politique de confidentialité</a> de Test Pilot. Vous pouvez en apprendre plus sur cette expérience et sur la collecte de données <a>ici</a>.
|
||||
legalNoticeMozilla = L’utilisation du site web Firefox Send est aussi soumise à <a>l’avis de confidentialité relatif aux sites Web</a> ainsi qu’aux <a>conditions d’utilisation des sites Web</a> de Mozilla.
|
||||
legalNoticeTestPilot = Firefox Send est actuellement une expérience Test Pilot, et en tant que telle est soumis aux <a>Conditions d’utilisation</a> et à la <a>Politique de confidentialité</a> de Test Pilot. Vous pouvez en apprendre plus sur cette expérience et sur la collecte de données <a>ici</a>.
|
||||
legalNoticeMozilla = L’utilisation du site web Firefox Send est aussi soumise à <a>l’Avis de confidentialité relatif aux sites web</a> ainsi qu’aux <a>Conditions d’utilisation des sites web</a> de Mozilla.
|
||||
deletePopupText = Supprimer ce fichier ?
|
||||
deletePopupYes = Oui
|
||||
deletePopupCancel = Annuler
|
||||
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Ree om te ferstjoeren
|
||||
uploadSvgAlt = Oplaad
|
||||
uploadSuccessTimingHeader = De keppeling nei jo bestân sil nei 1 download ferrinne of nei 24 oeren.
|
||||
expireInfo = De keppeling nei jo bestân sil nei { $downloadCount } of { $timespan } ferrinne.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 download
|
||||
*[other] { $num } downloads
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 oer
|
||||
*[other] { $num } oeren
|
||||
}
|
||||
|
||||
57
public/locales/gor/send.ftl
Normal file
57
public/locales/gor/send.ftl
Normal file
@@ -0,0 +1,57 @@
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
title = Firefox Molawo
|
||||
siteSubtitle = web yimontalo
|
||||
uploadPageLearnMore = Pobalajariya po'olo
|
||||
uploadPageBrowseButton = Tulawota berkas to delomo komputermu
|
||||
uploadPageBrowseButton1 = Tulawota berkas u detohulo
|
||||
uploadPageBrowseButtonTitle = Detohe berkas
|
||||
uploadingPageProgress = Hemodetohu { $filename } ({ $size })
|
||||
notifyUploadDone = Diletohumu ma yilapato
|
||||
uploadingPageMessage = Bataliya modetohu
|
||||
uploadingPageCancel = Bataliya modetohu
|
||||
uploadCancelNotification = Diletohumu ma bilatali
|
||||
uploadingPageLargeFileMessage = Berkas botiya damango wawu paralu wakutu ngope'e mopodetohu. Potihulo'opo!
|
||||
uploadingFileNotification = Poleleya ola'u wonu ma yilapato lodetohu.
|
||||
uploadSuccessConfirmHeader = Siap Molawo
|
||||
uploadSvgAlt = Detohe
|
||||
copiedUrl = Yilami
|
||||
deleteFileButton = Luluta berkas
|
||||
sendAnotherFileLink = Lawola berkas uwewo
|
||||
# Alternative text used on the download link/button (indicates an action).
|
||||
downloadAltText = Mopohuli
|
||||
downloadsFileList = Mopohuli
|
||||
# Used as header in a column indicating the amount of time left before a
|
||||
# download link expires (e.g. "10h 5m")
|
||||
timeFileList = Wakutu
|
||||
# Used as header in a column indicating the number of times a file has been
|
||||
# downloaded
|
||||
downloadFileName = Mopohuli { $filename }
|
||||
downloadFileSize = ({ $size })
|
||||
unlockInputLabel = Tuwota Password
|
||||
unlockInputPlaceholder = Password
|
||||
unlockButtonLabel = Hu'owa
|
||||
downloadFileTitle = Mopohuli Enskripsi Berkas
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = Mopohuli
|
||||
downloadNotification = U pilopohulimu ma yilapato.
|
||||
downloadFinish = Mopohuli Yilapato
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = ({ $partialSize } meyalo { $totalSize })
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
sendYourFilesLink = Yimontali Firefox Molawo
|
||||
downloadFirefoxButtonSub = Pereyi Mopohuli
|
||||
uploadedFile = Berkas
|
||||
copyFileList = Kupe'iya URL
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = Mopulito To
|
||||
deleteFileList = Luluta
|
||||
nevermindButton = Sambelo
|
||||
deletePopupText = Luluta berkas botiya?
|
||||
deletePopupYes = Joo
|
||||
deletePopupCancel = Bataliya
|
||||
deleteButtonHover = Luluta
|
||||
copyUrlHover = Kupe'iya URL
|
||||
footerLinkLegal = Legal
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = Tomimbihu Test Pilot
|
||||
changePasswordButton = Boli'a
|
||||
@@ -1,4 +1,4 @@
|
||||
// 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
|
||||
siteSubtitle = ניסוי אינטרנט
|
||||
siteFeedback = משוב
|
||||
@@ -21,41 +21,36 @@ uploadCancelNotification = ההעלאה שלך בוטלה.
|
||||
uploadingPageLargeFileMessage = קובץ זה גדול ועלול לקחת זמן להעלות אותו. סבלנות!
|
||||
uploadingFileNotification = נא להודיע לי כשתסתיים ההעלאה.
|
||||
uploadSuccessConfirmHeader = מוכן לשליחה
|
||||
uploadSvgAlt
|
||||
.alt = להעלות
|
||||
uploadSvgAlt = העלאה
|
||||
uploadSuccessTimingHeader = הקישור לקובץ שלך יפוג אחרי הורדה אחת או בעוד 24 שעות.
|
||||
copyUrlFormLabelWithName = ניתן להעתיק ולשתף את הקישור כדי לשלוח את הקובץ שלך: { $filename }
|
||||
copiedUrl = הועתק!
|
||||
deleteFileButton = מחיקת קובץ
|
||||
.title = מחיקת קובץ
|
||||
sendAnotherFileLink = שליחת קובץ נוסף
|
||||
.title = שליחת קובץ נוסף
|
||||
// Alternative text used on the download link/button (indicates an action).
|
||||
downloadAltText
|
||||
.alt = הורדה
|
||||
# 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).
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = הורדה
|
||||
.title = הורדה
|
||||
downloadNotification = ההורדה הושלמה.
|
||||
downloadFinish = ההורדה הושלמה
|
||||
// This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = ({ $partialSize } מתוך { $totalSize })
|
||||
downloadingPageProgress = בהורדה: { $filename } ({ $size })
|
||||
errorAltText
|
||||
.alt = תקלה בהעלאה
|
||||
errorAltText = תקלה בהעלאה
|
||||
errorPageHeader = משהו השתבש!
|
||||
errorPageLink = שליחת קובץ נוסף
|
||||
fileTooBig = הקובץ הזה גדול מידי להעלאה. עליו להיות קטן מ־{ $size }.
|
||||
linkExpiredAlt
|
||||
.alt = קישור פג
|
||||
linkExpiredAlt = הקישור פג
|
||||
notSupportedHeader = הדפדפן שלך לא נתמך.
|
||||
notSupportedLink = למה אין תמיכה בדפדפן שלי?
|
||||
downloadFirefoxButtonSub = הורדה בחינם
|
||||
uploadedFile = קובץ
|
||||
copyFileList = העתקת כתובת
|
||||
// expiryFileList is used as a column header
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = יפוג בעוד
|
||||
deleteFileList = מחיקה
|
||||
nevermindButton = לא משנה
|
||||
@@ -63,10 +58,8 @@ legalHeader = תנאי שירות ופרטיות
|
||||
deletePopupText = למחוק דף זה?
|
||||
deletePopupYes = כן
|
||||
deletePopupCancel = ביטול
|
||||
deleteButtonHover
|
||||
.title = מחיקה
|
||||
copyUrlHover
|
||||
.title = העתקת קישור
|
||||
deleteButtonHover = מחיקה
|
||||
copyUrlHover = העתקת קישור
|
||||
footerLinkLegal = מידע משפטי
|
||||
footerLinkPrivacy = פרטיות
|
||||
footerLinkTerms = תנאי שימוש
|
||||
|
||||
123
public/locales/hr/send.ftl
Normal file
123
public/locales/hr/send.ftl
Normal file
@@ -0,0 +1,123 @@
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
title = Firefox Send
|
||||
siteSubtitle = web eksperiment
|
||||
siteFeedback = Povratne informacije
|
||||
uploadPageHeader = Privatno i šifrirano dijeljenje datoteka
|
||||
uploadPageExplainer = Šaljite datoteke preko sigurne, privatne i šifrirane veze koja samostalno istječe, da vaše stvari ne bi ostale na netu zauvijek.
|
||||
uploadPageLearnMore = Saznajte više
|
||||
uploadPageDropMessage = Prevucite vaše datoteke ovdje da biste krenuli sa otpremanjem
|
||||
uploadPageSizeMessage = Za bolji rad predlažemo da datoteka ne bude veća od 1GB
|
||||
uploadPageBrowseButton = Izaberite datoteku na računalu
|
||||
uploadPageBrowseButton1 = Izaberite datoteku za otpremanje
|
||||
uploadPageMultipleFilesAlert = Otpremanje fascikala ili više datoteka trenutno nije podržano.
|
||||
uploadPageBrowseButtonTitle = Otpremi datoteku
|
||||
uploadingPageProgress = Otpremam { $filename } ({ $size })
|
||||
importingFile = Uvozim...
|
||||
verifyingFile = Potvrđujem...
|
||||
encryptingFile = Šifriram...
|
||||
decryptingFile = Dešifriram...
|
||||
notifyUploadDone = Vaše otpremanje je završeno.
|
||||
uploadingPageMessage = Nakon što se vaša datoteka otpremi, moći ćete podesiti opcije isteka.
|
||||
uploadingPageCancel = Otkaži otpremanje
|
||||
uploadCancelNotification = Vaše otpremanje je otkazano.
|
||||
uploadingPageLargeFileMessage = Ovo je velika datoteka i otpremanje može potrajati. Budite strpljivi!
|
||||
uploadingFileNotification = Obavijesti me kada se otpremanje završi.
|
||||
uploadSuccessConfirmHeader = Spreman za slanje
|
||||
uploadSvgAlt = Otpremi
|
||||
uploadSuccessTimingHeader = Veza prema vašoj datoteci će isteći nakon jednog preuzimanja ili nakon 24 sata.
|
||||
expireInfo = Veza prema vašoj datoteci će isteći nakon { $downloadCount } ili { $timespan }.
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] preuzimanja
|
||||
[few] preuzimanja
|
||||
*[other] preuzimanja
|
||||
}
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] sata
|
||||
[few] sata
|
||||
*[other] sati
|
||||
}
|
||||
copyUrlFormLabelWithName = Iskopirajte i podijelite vezu da biste poslali vašu datoteku: { $filename }
|
||||
copyUrlFormButton = Kopiraj u međuspremnik
|
||||
copiedUrl = Kopirano!
|
||||
deleteFileButton = Obriši datoteku
|
||||
sendAnotherFileLink = Pošalji sljedeću datoteku
|
||||
# Alternative text used on the download link/button (indicates an action).
|
||||
downloadAltText = Preuzmi
|
||||
downloadsFileList = Preuzimanja
|
||||
# Used as header in a column indicating the amount of time left before a
|
||||
# download link expires (e.g. "10h 5m")
|
||||
timeFileList = Vrijeme
|
||||
# Used as header in a column indicating the number of times a file has been
|
||||
# downloaded
|
||||
downloadFileName = Preuzimanje datoteke { $filename }
|
||||
downloadFileSize = ({ $size })
|
||||
unlockInputLabel = Unesite lozinku
|
||||
unlockInputPlaceholder = Lozinka
|
||||
unlockButtonLabel = Otključaj
|
||||
downloadFileTitle = Preuzmi šifriranu datoteku
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
downloadMessage = Vaš prijatelj vam je poslao datoteku preko usluge Firefox Send koja vam omogućava da dijelite datoteke preko sigurne, privatne i šifrirane veze koja samostalno istječe, da vaše stvari ne bi ostale na netu zauvijek.
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = Preuzmi
|
||||
downloadNotification = Vaše preuzimanje je završeno.
|
||||
downloadFinish = Preuzimanje je završeno.
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = ({ $partialSize } od { $totalSize })
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
sendYourFilesLink = Isprobajte Firefox Send
|
||||
downloadingPageProgress = Preuzimam datoteku { $filename } ({ $size })
|
||||
downloadingPageMessage = Ostavite ovaj jezičak otvorenim dok ne dobavimo vašu datoteku i dok je ne dešifriramo.
|
||||
errorAltText = Greška pri otpremanju
|
||||
errorPageHeader = Nešto je pošlo naopako!
|
||||
errorPageMessage = Dogodila se greška prilikom otpremanja datoteke.
|
||||
errorPageLink = Pošalji drugu datoteku
|
||||
fileTooBig = Ta datoteka je prevelika za otpremanje. Treba biti manja od { $size }.
|
||||
linkExpiredAlt = Veza je istekla
|
||||
expiredPageHeader = Veza je ili istekla, ili nikada nije ni postojala!
|
||||
notSupportedHeader = Vaš preglednik nije podržan.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
notSupportedDetail = Nažalost, ovaj preglednik ne podržava web tehnologiju koja omogućava Firefox Send. Morat ćete probati sa drugim preglednikom. Mi predlažemo Firefox!
|
||||
notSupportedLink = Zašto moj preglednik nije podržan?
|
||||
notSupportedOutdatedDetail = Nažalost, ovo izdanje Firefoxa ne podržava web tehnologiju koja omogućava Firefox Send. Morat ćete ažurirati vaš preglednik.
|
||||
updateFirefox = Ažuriraj Firefox
|
||||
downloadFirefoxButtonSub = Besplatno preuzimanje
|
||||
uploadedFile = Datoteka
|
||||
copyFileList = Kopiraj link
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = Istječe za
|
||||
deleteFileList = Obriši
|
||||
nevermindButton = Zanemari
|
||||
legalHeader = Uvjeti i privatnost
|
||||
legalNoticeTestPilot = Firefox Send je trenutno Test Pilot eksperiment i podložan je <a>uvjetima korištenja</a> Test Pilota i <a>obavijesti o privatnosti</a>. O ovom eksperimentu i o njegovom sakupljanju podataka možete saznati više <a>ovdje</a>.
|
||||
legalNoticeMozilla = Korištenje Firefox Send web stranice podliježe Mozillinoj <a>obavijesti o privatnosti na web stranicama</a> i <a>uvjetima korištenja web stranica</a>.
|
||||
deletePopupText = Obrisati ovu datoteku?
|
||||
deletePopupYes = Da
|
||||
deletePopupCancel = Otkaži
|
||||
deleteButtonHover = Obriši
|
||||
copyUrlHover = Kopiraj link
|
||||
footerLinkLegal = Pravni podaci
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = O Test Pilot
|
||||
footerLinkPrivacy = Privatnost
|
||||
footerLinkTerms = Uvjeti
|
||||
footerLinkCookies = Kolačići
|
||||
requirePasswordCheckbox = Zahtjevaj lozinku pri preuzimanju ove datoteke
|
||||
addPasswordButton = Dodaj lozinku
|
||||
changePasswordButton = Promijeni
|
||||
passwordTryAgain = Netočna lozinka. Pokušaj ponovo.
|
||||
reportIPInfringement = Prijavite IP prekršaj
|
||||
javascriptRequired = Za Firefox Send je potreban JavaScript
|
||||
whyJavascript = Zašto je za Firefox Send potreban JavaScript?
|
||||
enableJavascript = Omogućite JavaScript i pokušajte ponovo.
|
||||
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
|
||||
expiresHoursMinutes = { $hours }s { $minutes }m
|
||||
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
|
||||
expiresMinutes = { $minutes }m
|
||||
# A short status message shown when a password is successfully set
|
||||
passwordIsSet = Lozinka je postavljena
|
||||
# A short status message shown when the user enters a long password
|
||||
maxPasswordLength = Najveća dužina lozinke: { $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = Ne možemo postaviti ovu lozinku
|
||||
@@ -26,13 +26,15 @@ uploadSuccessConfirmHeader = Hotowy za słanje
|
||||
uploadSvgAlt = Nahrać
|
||||
uploadSuccessTimingHeader = Wotkaz k wašej dataji po 1 sćehnjenju abo 24 hodźinach spadnje.
|
||||
expireInfo = Wotkaz k wašej dataji po { $downloadCount } abo { $timespan } spadnje.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 sćehnjenje
|
||||
[two] { $num } sćehnjeni
|
||||
[few] { $num } sćehnjenja
|
||||
*[other] { $num } sćehnjenjow
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 hodźina
|
||||
[two] { $num } hodźinje
|
||||
[few] { $num } hodźiny
|
||||
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Küldésre kész
|
||||
uploadSvgAlt = Feltöltés
|
||||
uploadSuccessTimingHeader = A fájl hivatkozása lejár 1 letöltés vagy 24 óra múlva.
|
||||
expireInfo = A fájlhoz tartozó hivatkozás { $downloadCount } vagy { $timespan } múlva lejár.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 letöltés
|
||||
*[other] { $num } letöltés
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 óra
|
||||
*[other] { $num } óra
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ uploadPageDropMessage = Depone ci tu file pro comenciar a lo cargar
|
||||
uploadPageSizeMessage = Pro evitar problemas, mantene tu file sub 1GB
|
||||
uploadPageBrowseButton = Elige un file sur tu computator
|
||||
uploadPageBrowseButton1 = Elige un file a cargar
|
||||
uploadPageMultipleFilesAlert = Le cargamento de plure files o de un plica actualmente non es supportate.
|
||||
uploadPageMultipleFilesAlert = Le cargamento de plure files o de un dossier non es actualmente admittite.
|
||||
uploadPageBrowseButtonTitle = Cargar le file
|
||||
uploadingPageProgress = Cargamento de { $filename } ({ $size })
|
||||
importingFile = Importation…
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Preste a inviar
|
||||
uploadSvgAlt = Cargamento
|
||||
uploadSuccessTimingHeader = Le ligamine a tu file expirara post un discargamento o in 24 horas.
|
||||
expireInfo = Le ligamine a tu file expirara post { $downloadCount } o { $timespan }
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] discargamento
|
||||
*[other] discargamentos
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] hora
|
||||
*[other] horas
|
||||
}
|
||||
@@ -57,7 +59,7 @@ downloadFileTitle = Discargar le file cryptate
|
||||
downloadMessage = Tu amico te invia un file per Firefox Send, un servicio que te permitte de compartir files per un ligamine secur, private e cryptate, que expira automaticamente pro te assecurar que tu datos non resta online per sempre.
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = Discargar
|
||||
downloadNotification = Tu discargamento es completate.
|
||||
downloadNotification = Discargamento completate.
|
||||
downloadFinish = Discargamento completate
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = ({ $partialSize } de { $totalSize })
|
||||
@@ -86,7 +88,7 @@ expiryFileList = Expira in
|
||||
deleteFileList = Deler
|
||||
nevermindButton = No, gratias
|
||||
legalHeader = Terminos & confidentialitate
|
||||
legalNoticeTestPilot = Firefox Send es actualmente un Experimento pilota, e subjecte a <a>Terminos de servicio</a> e <a>Notitia de confidentialitate</a> de Experimento pilota. Tu pote saper plus re iste experimento e su recolta de datos <a>hic</a>.
|
||||
legalNoticeTestPilot = Firefox Send es actualmente un experimento pilota, e subjecte a <a>Terminos de servicio</a> e <a>Notification de confidentialitate</a> de Experimento pilota. Tu pote saper plus re iste experimento e su recolta de datos <a>hic</a>.
|
||||
legalNoticeMozilla = Le uso del sito web de Firefox Send es anque subjecte a <a>Notitia de confidentialitate de sito web</a> e <a>Terminos de servicio sito web</a>.
|
||||
deletePopupText = Deler iste file?
|
||||
deletePopupYes = Si
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// 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
|
||||
siteSubtitle = eksperimen web
|
||||
siteFeedback = Saran
|
||||
@@ -9,7 +9,6 @@ uploadPageDropMessage = Lepas berkas Anda di sini untuk mulai mengunggah
|
||||
uploadPageSizeMessage = Untuk pengoperasian yang paling andal, sebaiknya jaga berkas Anda di bawah 1GB
|
||||
uploadPageBrowseButton = Pilih berkas pada komputer Anda
|
||||
uploadPageBrowseButton1 = Pilih berkas untuk diunggah
|
||||
.title = Pilih berkas untuk diunggah
|
||||
uploadPageMultipleFilesAlert = Saat ini belum mendukung pengunggahan beberapa berkas atau folder.
|
||||
uploadPageBrowseButtonTitle = Unggah berkas
|
||||
uploadingPageProgress = Mengunggah { $filename } ({ $size })
|
||||
@@ -27,10 +26,12 @@ uploadSuccessConfirmHeader = Siap untuk Dikirim
|
||||
uploadSvgAlt = Unggah
|
||||
uploadSuccessTimingHeader = Tautan ke berkas Anda akan berakhir setelah 1 unduhan atau dalam 24 jam.
|
||||
expireInfo = Tautan ke berkas Anda akan kedaluwarsa setelah { $downloadCount } atau { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
*[other] { $number } unduhan
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
*[other] { $number } jam
|
||||
}
|
||||
copyUrlFormLabelWithName = Salin dan bagikan tautan untuk mengirim berkas Anda: { $filename }
|
||||
@@ -38,23 +39,29 @@ copyUrlFormButton = Salin ke papan klip
|
||||
copiedUrl = Tersalin!
|
||||
deleteFileButton = Hapus berkas
|
||||
sendAnotherFileLink = Kirim berkas lain
|
||||
// Alternative text used on the download link/button (indicates an action).
|
||||
# Alternative text used on the download link/button (indicates an action).
|
||||
downloadAltText = Unduh
|
||||
downloadsFileList = Unduhan
|
||||
# Used as header in a column indicating the amount of time left before a
|
||||
# download link expires (e.g. "10h 5m")
|
||||
timeFileList = Waktu
|
||||
# Used as header in a column indicating the number of times a file has been
|
||||
# downloaded
|
||||
downloadFileName = Unduh { $filename }
|
||||
downloadFileSize = ({ $size })
|
||||
unlockInputLabel = Masukkan Sandi
|
||||
unlockInputPlaceholder = Sandi
|
||||
unlockButtonLabel = Buka
|
||||
downloadFileTitle = Unduh Berkas Terenkripsi
|
||||
// Firefox Send is a brand name and should not be localized.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
downloadMessage = Teman Anda mengirimkan berkas dengan Firefox Send, layanan yang memungkinkan Anda berbagi berkas dengan tautan yang aman, pribadi, dan terenkripsi yang secara otomatis berakhir untuk memastikan berkas Anda tidak daring selamanya.
|
||||
// Text and title used on the download link/button (indicates an action).
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = Unduh
|
||||
downloadNotification = Unduhan Anda telah selesai.
|
||||
downloadFinish = Unduhan Selesai
|
||||
// This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = ({ $partialSize } dari { $totalSize })
|
||||
// Firefox Send is a brand name and should not be localized.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
sendYourFilesLink = Coba Firefox Send
|
||||
downloadingPageProgress = Mengunduh { $filename } ({ $size })
|
||||
downloadingPageMessage = Sila biarkan tab ini terbuka sementara kami memproses berkas Anda dan mendekripsinya.
|
||||
@@ -66,7 +73,7 @@ fileTooBig = Berkas terlalu besar untuk diunggah. Harus kurang dari { $size }.
|
||||
linkExpiredAlt = Tautan kedaluwarsa
|
||||
expiredPageHeader = Tautan ini telah kedaluwarsa atau tidak pernah ada!
|
||||
notSupportedHeader = Peramban Anda tidak mendukung.
|
||||
// Firefox Send is a brand name and should not be localized.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
notSupportedDetail = Sayangnya peramban ini tidak mendukung teknologi web yang menggerakkan Firefox Send. Anda perlu mencoba peramban lain. Kami merekomendasikan Firefox!
|
||||
notSupportedLink = Mengapa peramban saya tidak didukung?
|
||||
notSupportedOutdatedDetail = Sayangnya Firefox versi ini tidak mendukung teknologi web yang menggerakkan Firefox Send. Anda perlu memperbarui peramban Anda.
|
||||
@@ -74,7 +81,7 @@ updateFirefox = Perbarui Firefox
|
||||
downloadFirefoxButtonSub = Unduh Gratis
|
||||
uploadedFile = Berkas
|
||||
copyFileList = Salin URL
|
||||
// expiryFileList is used as a column header
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = Kedaluwarsa Pada
|
||||
deleteFileList = Hapus
|
||||
nevermindButton = Abaikan
|
||||
@@ -87,14 +94,26 @@ deletePopupCancel = Batal
|
||||
deleteButtonHover = Hapus
|
||||
copyUrlHover = Salin URL
|
||||
footerLinkLegal = Legal
|
||||
// Test Pilot is a proper name and should not be localized.
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = Tentang Test Pilot
|
||||
footerLinkPrivacy = Privasi
|
||||
footerLinkTerms = Ketentuan
|
||||
footerLinkCookies = Kuki
|
||||
requirePasswordCheckbox = Membutuhkan sandi untuk mengunduh berkas ini
|
||||
addPasswordButton = Tambahkan Sandi
|
||||
changePasswordButton = Ubah
|
||||
passwordTryAgain = Sandi salah. Silakan coba lagi.
|
||||
// This label is followed by the password needed to download a file
|
||||
passwordResult = Sandi: { $password }
|
||||
reportIPInfringement = Laporkan Pelanggaran IP
|
||||
javascriptRequired = Firefox Send membutuhkan JavaScript.
|
||||
whyJavascript = Mengapa Firefox Send membutuhkan JavaScript?
|
||||
enableJavascript = Silakan aktifkan JavaScript dan coba lagi.
|
||||
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
|
||||
expiresHoursMinutes = { $hours }j { $minutes }m
|
||||
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
|
||||
expiresMinutes = { $minutes }m
|
||||
# A short status message shown when a password is successfully set
|
||||
passwordIsSet = Sandi diatur
|
||||
# A short status message shown when the user enters a long password
|
||||
maxPasswordLength = Panjang sandi maksimal: { $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = Tidak bisa menyetel sandi ini
|
||||
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Pronto per l’invio
|
||||
uploadSvgAlt = Carica
|
||||
uploadSuccessTimingHeader = Il link al file scadrà dopo 1 download o in 24 ore.
|
||||
expireInfo = Il link a questo file scadrà dopo { $downloadCount } o { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 download
|
||||
*[other] { $num } download
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 ora
|
||||
*[other] { $num } ore
|
||||
}
|
||||
@@ -86,7 +88,7 @@ expiryFileList = Scade in
|
||||
deleteFileList = Elimina
|
||||
nevermindButton = No, grazie
|
||||
legalHeader = Termini di utilizzo e privacy
|
||||
legalNoticeTestPilot = Firefox Send è attualmente un esperimento di Test Pilot ed è soggetto alle <a>Condizioni di utilizzo</a> e all’<a>Informativa sulla privacy</a> di Test Pilot. Per ulteriori informazioni su questo esperimento e i dati raccolti, consulta <a>questa pagina<a>.
|
||||
legalNoticeTestPilot = Firefox Send è attualmente un esperimento di Test Pilot ed è soggetto alle <a>Condizioni di utilizzo</a> e all’<a>Informativa sulla privacy</a> di Test Pilot. Per ulteriori informazioni su questo esperimento e i dati raccolti, consulta <a>questa pagina</a>.
|
||||
legalNoticeMozilla = L’utilizzo del sito di Firefox Send è soggetto all’<a>Informativa sulla privacy</a> e le <a>Condizioni di utilizzo</a> dei siti web Mozilla.
|
||||
deletePopupText = Eliminare questo file?
|
||||
deletePopupYes = Sì
|
||||
|
||||
@@ -26,10 +26,12 @@ uploadSuccessConfirmHeader = 送信準備完了
|
||||
uploadSvgAlt = アップロード
|
||||
uploadSuccessTimingHeader = ファイルへのリンクは、1 回ダウンロードされた後、もしくは 24 時間以内に期限切れとなります。
|
||||
expireInfo = このファイルへのリンクは { $downloadCount } あるいは { $timespan } 後に期限切れとなります。
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
*[other] { $num } 回のダウンロード
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
*[other] { $num } 時間
|
||||
}
|
||||
copyUrlFormLabelWithName = ファイルを送信するにはこのリンクをコピー、共有してください: { $filename }
|
||||
|
||||
@@ -9,7 +9,7 @@ uploadPageDropMessage = გადმოიტანეთ ფაილი აქ
|
||||
uploadPageSizeMessage = ყველაზე საიმედო მომსახურება, შეგიძლიათ ატვირთოთ არაუმეტეს 1GB ზომის ფაილი
|
||||
uploadPageBrowseButton = ფაილის არჩევა კომპიუტერიდან
|
||||
uploadPageBrowseButton1 = ფაილის არჩევა ასატვირთად
|
||||
uploadPageMultipleFilesAlert = ერთდროულად რამდენიმე ფაილის, ან საქაღალდის ატვირთვა, ამჟამად არაა ხელმისაწვდომი.
|
||||
uploadPageMultipleFilesAlert = ერთდროულად რამდენიმე ფაილის ან საქაღალდის ატვირთვა, ამჟამად არაა ხელმისაწვდომი.
|
||||
uploadPageBrowseButtonTitle = ფაილის ატვირთვა
|
||||
uploadingPageProgress = მიმდინარეობს ატვირთვა { $filename } ({ $size })
|
||||
importingFile = გადმოტანა...
|
||||
@@ -24,17 +24,21 @@ uploadingPageLargeFileMessage = ფაილი დიდია და ატვ
|
||||
uploadingFileNotification = შეტყობინება, ატვირთვის დასრულებისას.
|
||||
uploadSuccessConfirmHeader = მზადაა გასაგზავნად
|
||||
uploadSvgAlt = ატვირთვა
|
||||
uploadSuccessTimingHeader = ფაილს ვადა გაუვა 1 ჩამოტვირთვის, ან 24 საათის მერე.
|
||||
uploadSuccessTimingHeader = ფაილს ვადა გაუვა 1 ჩამოტვირთვის ან 24 საათის მერე.
|
||||
expireInfo = ფაილის ბმულს, ვადა გაუვა { $downloadCount }, ან { $timespan } მერე.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 ჩამოტვირთვა
|
||||
*[other] { $num } ჩამოტვირთვა
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 საათი
|
||||
*[other] { $num } საათი
|
||||
}
|
||||
copyUrlFormLabelWithName = დააკოპირეთ და გააზიარეთ ბმული, ფაილის გასაგზავნად: { $filename }
|
||||
copyUrlFormButton = დაკოპირება
|
||||
copiedUrl = დაკოპირდა!
|
||||
copyUrlFormLabelWithName = აიღეთ ბმულის ასლი და გააზიარეთ, ფაილის გასაგზავნად: { $filename }
|
||||
copyUrlFormButton = ასლის აღება
|
||||
copiedUrl = ასლი მზადაა!
|
||||
deleteFileButton = ფაილის წაშლა
|
||||
sendAnotherFileLink = სხვა ფაილის გაგზავნა
|
||||
# Alternative text used on the download link/button (indicates an action).
|
||||
@@ -78,7 +82,7 @@ notSupportedOutdatedDetail = სამწუხაროდ, Firefox-ის ა
|
||||
updateFirefox = Firefox-ის განახლება
|
||||
downloadFirefoxButtonSub = უფასო ჩამოტვირთვა
|
||||
uploadedFile = ფაილი
|
||||
copyFileList = URL ბმულის დაკოპირება
|
||||
copyFileList = URL-ბმულის ასლი
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = ვადის გასვლის დრო
|
||||
deleteFileList = წაშლა
|
||||
@@ -86,12 +90,12 @@ nevermindButton = არ აქვს მნიშვნელობა
|
||||
legalHeader = პირობები და პირადულობა
|
||||
legalNoticeTestPilot = Firefox Send ამჟამად Test Pilot-ის საცდელი პროექტია და ექვემდებარება Test Pilot-ის <a>მომსახურების პირობებსა</a> და <a>პირადი მონაცემების დაცვის დებულებას</a>. ვრცლად, ამ საცდელი პროექტისა და მონაცემების აღრიცხვის შესახებ, შეგიძლიათ იხილოთ <a>აქ</a>.
|
||||
legalNoticeMozilla = Firefox Send ვებსაიტი, ასევე ექვემდებარება Mozilla-ს <a>ვებსაიტების პირადი მონაცემების შესახებ დებულებას</a> და <a>ვებსაიტების გამოყენების პირობებს</a>.
|
||||
deletePopupText = გსურთ ამ ფაილის წაშლა?
|
||||
deletePopupText = წაიშალოს ეს ფაილი?
|
||||
deletePopupYes = დიახ
|
||||
deletePopupCancel = გაუქმება
|
||||
deleteButtonHover = წაშლა
|
||||
copyUrlHover = URL-ს დაკოპირება
|
||||
footerLinkLegal = იურიდიული ინფორმაცია
|
||||
copyUrlHover = URL-ს ასლი
|
||||
footerLinkLegal = სამართლებრივი საკითხები
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = Test Pilot-ის შესახებ
|
||||
footerLinkPrivacy = პირადულობა
|
||||
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Ihegga i walluy
|
||||
uploadSvgAlt = Sali
|
||||
uploadSuccessTimingHeader = Aseɣwen ar ufaylu-ik ad yemmet ticki yuder-d neɣ deffir n 24 n yisragen.
|
||||
expireInfo = Aseɣwen icudden ar ufaylu-inek ad yemmet send { $downloadCount } naɣ { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 usider
|
||||
*[other] { $num } isidar
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 usrag
|
||||
*[other] { $num } isragen
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// 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
|
||||
siteSubtitle = 웹 실험
|
||||
siteFeedback = 사용자 의견
|
||||
@@ -9,7 +9,6 @@ uploadPageDropMessage = 파일을 끌어 놓아 업로드 시작
|
||||
uploadPageSizeMessage = 확실한 작동을 위해서, 파일의 크기가 1GB보다 작은 것이 좋음
|
||||
uploadPageBrowseButton = 컴퓨터의 파일을 선택
|
||||
uploadPageBrowseButton1 = 업로드 할 파일 선택
|
||||
.title = 업로드 할 파일 선택
|
||||
uploadPageMultipleFilesAlert = 여러 개의 파일 또는 폴더를 업로드하는 것은 현재로선 지원되지 않습니다.
|
||||
uploadPageBrowseButtonTitle = 파일 업로드
|
||||
uploadingPageProgress = { $filename } ({ $size }) 업로드 중
|
||||
@@ -18,7 +17,7 @@ verifyingFile = 확인하는 중…
|
||||
encryptingFile = 암호화 중…
|
||||
decryptingFile = 복호화 중…
|
||||
notifyUploadDone = 업로드가 완료되었습니다.
|
||||
uploadingPageMessage = 파일이 업로드 되고나서 만료 옵션을 설정할 수 있습니다.
|
||||
uploadingPageMessage = 파일이 업로드 되고 나서 만료 옵션을 설정할 수 있습니다.
|
||||
uploadingPageCancel = 업로드 취소
|
||||
uploadCancelNotification = 업로드가 취소되었습니다.
|
||||
uploadingPageLargeFileMessage = 이 파일은 크기가 커서 시간이 다소 걸릴 수 있습니다. 잠시만 기다려주세요!
|
||||
@@ -34,23 +33,29 @@ copyUrlFormButton = 클립보드에 복사
|
||||
copiedUrl = 복사 완료!
|
||||
deleteFileButton = 파일 삭제
|
||||
sendAnotherFileLink = 다른 파일 보내기
|
||||
// Alternative text used on the download link/button (indicates an action).
|
||||
# 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 = 비밀번호
|
||||
unlockButtonLabel = 잠금 해제
|
||||
downloadFileTitle = 암호화된 파일 다운로드
|
||||
// Firefox Send is a brand name and should not be localized.
|
||||
# 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).
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = 다운로드
|
||||
downloadNotification = 다운로드가 완료되었습니다.
|
||||
downloadFinish = 다운로드 완료
|
||||
// This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = ({ $partialSize } / { $totalSize })
|
||||
// Firefox Send is a brand name and should not be localized.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
sendYourFilesLink = Firefox Send 써보기
|
||||
downloadingPageProgress = { $filename } ({ $size }) 다운로드 중
|
||||
downloadingPageMessage = 파일을 가져오고 복호화하는 동안 탭을 닫지 말아주세요.
|
||||
@@ -62,7 +67,7 @@ fileTooBig = 파일의 크기가 너무 큽니다. { $size } 보다 작아야
|
||||
linkExpiredAlt = 링크가 만료됨
|
||||
expiredPageHeader = 이 링크는 만료되었거나 애초부터 존재하지 않았습니다!
|
||||
notSupportedHeader = 이 브라우저는 지원되지 않습니다.
|
||||
// Firefox Send is a brand name and should not be localized.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
notSupportedDetail = 안타깝게도 이 브라우저는 Firefox Send에 사용되는 웹 기술을 지원하지 않습니다. 다른 브라우저로 다시 시도해주세요. Firefox를 추천합니다!
|
||||
notSupportedLink = 왜 이 브라우저는 지원이 되지 않나요?
|
||||
notSupportedOutdatedDetail = 안타깝게도 현재 브라우저 버전에서는 Firefox Send에 사용되는 웹 기술을 지원하지 않습니다. 브라우저 업데이트가 필요합니다.
|
||||
@@ -70,7 +75,7 @@ updateFirefox = Firefox 업데이트
|
||||
downloadFirefoxButtonSub = 무료 다운로드
|
||||
uploadedFile = 파일
|
||||
copyFileList = URL 복사
|
||||
// expiryFileList is used as a column header
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = 만료기한
|
||||
deleteFileList = 삭제
|
||||
nevermindButton = 괜찮습니다
|
||||
@@ -83,14 +88,26 @@ deletePopupCancel = 아니오
|
||||
deleteButtonHover = 삭제
|
||||
copyUrlHover = URL 복사
|
||||
footerLinkLegal = 법적 정보
|
||||
// Test Pilot is a proper name and should not be localized.
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = Test Pilot 정보
|
||||
footerLinkPrivacy = 개인정보 보호
|
||||
footerLinkTerms = 이용 약관
|
||||
footerLinkCookies = 쿠키
|
||||
requirePasswordCheckbox = 이 파일을 다운로드하려면 비밀번호가 필요함
|
||||
addPasswordButton = 비밀번호 추가
|
||||
changePasswordButton = 바꾸기
|
||||
passwordTryAgain = 비밀번호가 맞지 않습니다. 다시 시도해 주세요.
|
||||
// This label is followed by the password needed to download a file
|
||||
passwordResult = 비밀번호: { $password }
|
||||
reportIPInfringement = 지적 재산권 침해 신고
|
||||
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 a password is successfully set
|
||||
passwordIsSet = 비밀번호를 설정했습니다
|
||||
# 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 = 이 비밀번호를 설정할 수 없었습니다
|
||||
|
||||
@@ -26,10 +26,12 @@ uploadSuccessConfirmHeader = Sedia untuk Hantar
|
||||
uploadSvgAlt = Muat naik
|
||||
uploadSuccessTimingHeader = Pautan ke fail anda akan luput selepas 1 muat turun atau dalam 24 jam.
|
||||
expireInfo = Pautan ke fail anda akan luput selepas { $downloadCount } atau { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
*[other] { $num } muat turun
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
*[other] { $num } jam
|
||||
}
|
||||
copyUrlFormLabelWithName = Salin dan kongsi pautan untuk menghantar fail anda: { $filename }
|
||||
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Klar til å sende
|
||||
uploadSvgAlt = Last opp
|
||||
uploadSuccessTimingHeader = Lenken til filen din utløper etter 1 nedlasting eller om 24 timer.
|
||||
expireInfo = Lenken til filen din vil gå ut etter { $downloadCount } eller { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 nedlasting
|
||||
*[other] { $num } nedlastinger
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 time
|
||||
*[other] { $num } timer
|
||||
}
|
||||
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Gereed voor verzending
|
||||
uploadSvgAlt = Uploaden
|
||||
uploadSuccessTimingHeader = De koppeling naar uw bestand zal na 1 download of 24 uur verlopen.
|
||||
expireInfo = De koppeling naar uw bestand zal na { $downloadCount } of { $timespan } verlopen.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 download
|
||||
*[other] { $num } downloads
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 uur
|
||||
*[other] { $num } uur
|
||||
}
|
||||
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Klår til å senda
|
||||
uploadSvgAlt = Last opp
|
||||
uploadSuccessTimingHeader = Lenka til fila di går ut etter 1 nedlasting eller om 24 timar.
|
||||
expireInfo = Lenka til fila di vil gå ut etter { $downloadCount } eller { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 nedlasting
|
||||
*[other] { $num } nedlastingar
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 time
|
||||
*[other] { $num } timar
|
||||
}
|
||||
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Pronto para enviar
|
||||
uploadSvgAlt = Enviado
|
||||
uploadSuccessTimingHeader = O link para o seu arquivo expirará após 1 download ou em 24 horas.
|
||||
expireInfo = O link para o seu arquivo expirará após { $downloadCount } ou { $timepan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 download
|
||||
*[other] { $num } downloads
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 hora
|
||||
*[other] { $num } horas
|
||||
}
|
||||
|
||||
@@ -6,9 +6,9 @@ uploadPageHeader = Partilha de ficheiros privada e encriptada
|
||||
uploadPageExplainer = Envie ficheiros através de uma ligação segura, privada e encriptada que expira automaticamente para garantir que as suas coisas não fiquem online para sempre.
|
||||
uploadPageLearnMore = Saber mais
|
||||
uploadPageDropMessage = Largue o seu ficheiro aqui para começar a carregar
|
||||
uploadPageSizeMessage = Para uma operação mais confiável, é melhor manter o seu ficheiro abaixo de 1GB
|
||||
uploadPageSizeMessage = Para uma operação mais fiável, é melhor manter o seu ficheiro abaixo de 1GB
|
||||
uploadPageBrowseButton = Selecionar um ficheiro no seu computador
|
||||
uploadPageBrowseButton1 = Selecione um ficheiro a enviar
|
||||
uploadPageBrowseButton1 = Selecionar um ficheiro a carregar
|
||||
uploadPageMultipleFilesAlert = Carregar múltiplos ficheiros ou uma pasta não é atualmente suportado.
|
||||
uploadPageBrowseButtonTitle = Carregar ficheiro
|
||||
uploadingPageProgress = A carregar { $filename } ({ $size })
|
||||
@@ -21,12 +21,13 @@ uploadingPageMessage = Assim que o seu ficheiro carregar irá poder definir as o
|
||||
uploadingPageCancel = Cancelar carregamento
|
||||
uploadCancelNotification = O seu carregamento foi cancelado.
|
||||
uploadingPageLargeFileMessage = Este ficheiro é grande e pode demorar um pouco a carregar. Fique onde está!
|
||||
uploadingFileNotification = Notificar-me quando o carregamento estiver completo.
|
||||
uploadingFileNotification = Notificar-me quando o carregamento estiver concluído.
|
||||
uploadSuccessConfirmHeader = Pronto para enviar
|
||||
uploadSvgAlt = Carregar
|
||||
uploadSuccessTimingHeader = A ligação para o seu ficheiro irá expirar depois de 1 transferência ou em 24 horas.
|
||||
expireInfo = A ligação para o seu ficheiro irá expirar depois de { $downloadCount } or { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
expireInfo = A ligação para o seu ficheiro irá expirar depois de { $downloadCount } ou { $timespan }.
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 transferência
|
||||
*[other] { $num } transferências
|
||||
}
|
||||
@@ -51,7 +52,7 @@ unlockInputPlaceholder = Palavra-passe
|
||||
unlockButtonLabel = Desbloquear
|
||||
downloadFileTitle = Transferir ficheiro encriptado
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
downloadMessage = O seu amigo está a enviar-lhe um ficheiro com o Firefox Send, um serviço que lhe permite partilhar ficheiro com uma ligação segura, privada e encriptada que expira automaticamente para garantir que as suas coisas não fiquem online para sempre.
|
||||
downloadMessage = O seu amigo está a enviar-lhe um ficheiro com o Firefox Send, um serviço que lhe permite partilhar ficheiros com uma ligação segura, privada e encriptada que expira automaticamente para garantir que as suas coisas não fiquem online para sempre.
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = Transferir
|
||||
downloadNotification = A sua transferência foi concluída.
|
||||
@@ -90,7 +91,7 @@ deletePopupYes = Sim
|
||||
deletePopupCancel = Cancelar
|
||||
deleteButtonHover = Apagar
|
||||
copyUrlHover = Copiar URL
|
||||
footerLinkLegal = Legal
|
||||
footerLinkLegal = Informação legal
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = Acerca do Test Pilot
|
||||
footerLinkPrivacy = Privacidade
|
||||
|
||||
@@ -3,11 +3,11 @@ title = Firefox Send
|
||||
siteSubtitle = un experiment web
|
||||
siteFeedback = Feedback
|
||||
uploadPageHeader = Partajare de fișiere privată și criptată
|
||||
uploadPageExplainer = Trimite fișiere printr-un link sigur, privat și criptat care expiră automat pentru ca informațiile să rămână în siguranță.
|
||||
uploadPageExplainer = Trimite fișiere printr-un link sigur, privat și criptat care expiră automat pentru a te asigura că lucrurile tale nu rămân online pentru totdeauna.
|
||||
uploadPageLearnMore = Află mai multe
|
||||
uploadPageDropMessage = Aruncă fișierul aici pentru a începe încărcarea.
|
||||
uploadPageDropMessage = Trage fișierul aici pentru a începe încărcarea
|
||||
uploadPageSizeMessage = Pentru a lucra mai ușor, recomandăm să păstrezi fișierul sub 1GB
|
||||
uploadPageBrowseButton = Alege un fișier din calculator.
|
||||
uploadPageBrowseButton = Selectează un fișier din calculator
|
||||
uploadPageBrowseButton1 = Selectează un fișier pentru încărcare
|
||||
uploadPageMultipleFilesAlert = Încărcarea mai multor fișiere deodată sau a dosarelor nu este suportată.
|
||||
uploadPageBrowseButtonTitle = Încarcă fișier
|
||||
@@ -16,26 +16,29 @@ importingFile = Se importă…
|
||||
verifyingFile = Se verifică...
|
||||
encryptingFile = Se criptează…
|
||||
decryptingFile = Se decriptează…
|
||||
notifyUploadDone = Încărcarea s-a finalizat.
|
||||
notifyUploadDone = Încărcarea s-a terminat.
|
||||
uploadingPageMessage = După ce fișierul tău este încărcat, vei putea seta opțiuni de expirare.
|
||||
uploadingPageCancel = Anulează încărcarea
|
||||
uploadCancelNotification = Încărcarea a fost anulată.
|
||||
uploadingPageLargeFileMessage = Stai calm! Acest fișier este mare. S-ar putea să dureze un timp încărcarea.
|
||||
uploadingFileNotification = Notifică-mă când încărcarea este încheiată.
|
||||
uploadSuccessConfirmHeader = Pregătit pentru trimitere
|
||||
uploadSvgAlt = Încarcă
|
||||
uploadSuccessTimingHeader = Linkul către fișierul tău va expira după 1 descărcare sau în 24 de ore.
|
||||
expireInfo = Linkul la fișier va expira după { $downloadCount } sau { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
uploadSuccessTimingHeader = Linkul către fișier va expira după 1 descărcare sau în 24 de ore.
|
||||
expireInfo = Linkul către fișier va expira după { $downloadCount } sau { $timespan }.
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 descărcare
|
||||
[few] { $num } descărcări
|
||||
*[other] { $num } de descărcări
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 oră
|
||||
[few] ore
|
||||
*[other] de ore
|
||||
[few] { $num } ore
|
||||
*[other] { $num } de ore
|
||||
}
|
||||
copyUrlFormLabelWithName = Copiază și împărtășește linkul de la fișierul de trimis: { $filename }
|
||||
copyUrlFormLabelWithName = Copiază și împărtășește linkul pentru a trimite fișierul: { $filename }
|
||||
copyUrlFormButton = Copiază în clipboard
|
||||
copiedUrl = Copiat!
|
||||
deleteFileButton = Șterge fișierul
|
||||
@@ -55,7 +58,7 @@ unlockInputPlaceholder = Parolă
|
||||
unlockButtonLabel = Deblochează
|
||||
downloadFileTitle = Descarcă fișierul criptat
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
downloadMessage = Un prieten îți trimite un fișier prin Firefox Send, un serviciu care îți permite să împărtășești un fișier printr-un link sigur, privat și criptat care expiră automat pentru a păstra informațiile tale online doar temporar.
|
||||
downloadMessage = Un prieten îți trimite un fișier prin Firefox Send, un serviciu care îți permite să împărtășești un fișier printr-un link sigur, privat și criptat care expiră automat pentru a te asigura că lucrurile tale nu rămân online pentru totdeauna.
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = Descarcă
|
||||
downloadNotification = Descărcarea s-a încheiat.
|
||||
@@ -65,19 +68,19 @@ fileSizeProgress = ({ $partialSize } din { $totalSize })
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
sendYourFilesLink = Încearcă Firefox Send
|
||||
downloadingPageProgress = Se descarcă { $filename } ({ $size })
|
||||
downloadingPageMessage = Te rugăm să păstrezi această file deschisă în timp ce preluăm fișierul și îl decriptăm.
|
||||
downloadingPageMessage = Te rugăm să lași această filă deschisă în timp ce preluăm fișierul și îl decriptăm.
|
||||
errorAltText = Eroare la încărcare
|
||||
errorPageHeader = Ceva a mers prost!
|
||||
errorPageMessage = A apărut o eroare la încărcarea fișierului.
|
||||
errorPageLink = Trimite un alt fișier
|
||||
fileTooBig = Acest fișier este prea mare. Trebuie să fie sub { $size }.
|
||||
fileTooBig = Acest fișier este prea mare. Ar trebuie să fie sub { $size }.
|
||||
linkExpiredAlt = Link expirat
|
||||
expiredPageHeader = Acest link a expirat sau nu a existat de la bun început!
|
||||
notSupportedHeader = Browserul tău nu este suportat.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
notSupportedDetail = Din păcate acest browser nu suportă tehnologii web precum Firefox Send. Trebuie să încerci alt browser. Îți recomandăm Firefox!
|
||||
notSupportedDetail = Din păcate, acest browser nu suportă tehnologiile web folosite de Firefox Send. Va trebui să încerci un alt browser. Îți recomandăm Firefox!
|
||||
notSupportedLink = De ce browserul meu nu este suportat?
|
||||
notSupportedOutdatedDetail = Din păcate această versiune de Firefox nu suportă tehnologiile web din spatele Firefox Sent. Îți recomandăm să actualizezi browserul.
|
||||
notSupportedOutdatedDetail = Din păcate această versiune de Firefox nu suportă tehnologiile web din spatele Firefox Sent. Va trebui să actualizezi browserul.
|
||||
updateFirefox = Actualizează Firefox
|
||||
downloadFirefoxButtonSub = Descărcare gratuită
|
||||
uploadedFile = Fișier
|
||||
@@ -87,9 +90,9 @@ expiryFileList = Expiră în
|
||||
deleteFileList = Șterge
|
||||
nevermindButton = Uită
|
||||
legalHeader = Termeni de utilizare și politica de confidențialitate
|
||||
legalNoticeTestPilot = Firefox Send este momentan un experiment Test Pilot și supus <a>Termenilor de utilizare</a> Test Pilot și a <a>Politicii de confidențialitate</a>. Poți afla mai multe despre acest experiment <a>aici</a>.
|
||||
legalNoticeMozilla = Folosirea site-ului Firefox Send mai este supusă <a>Politicii de confidențialitate pentru site-uri web</a> și a <a>Termenilor de folosire a site-urilor web</a>.
|
||||
deletePopupText = Ștergi aceast fișier?
|
||||
legalNoticeTestPilot = Firefox Send este în prezent un experiment Test Pilot și supus <a>Termenilor de utilizare a serviciului</a> și a <a>Politicii de confidențialitate</a> Test Pilot. Poți afla mai multe despre acest experiment și colectarea sa de date <a>aici</a>.
|
||||
legalNoticeMozilla = Folosirea site-ului Firefox Send mai este supusă <a>Politicii de confidențialitate pentru site-uri web</a> și a <a>Termenilor de utilizare a site-urilor web</a>.
|
||||
deletePopupText = Ștergi acest fișier?
|
||||
deletePopupYes = Da
|
||||
deletePopupCancel = Renunță
|
||||
deleteButtonHover = Șterge
|
||||
@@ -105,3 +108,16 @@ addPasswordButton = Adaugă parolă
|
||||
changePasswordButton = Modifică
|
||||
passwordTryAgain = Parola este incorectă. Încearcă din nou.
|
||||
reportIPInfringement = Raportează încălcarea proprietății intelectuale
|
||||
javascriptRequired = Firefox Send are nevoie de JavaScript
|
||||
whyJavascript = De ce Firefox Send are nevoie de JavaScript?
|
||||
enableJavascript = Te rugăm să reactivezi JavaScript și să încerci din nou.
|
||||
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
|
||||
expiresHoursMinutes = { $hours }h { $minutes }m
|
||||
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
|
||||
expiresMinutes = { $minutes }m
|
||||
# A short status message shown when a password is successfully set
|
||||
passwordIsSet = Parola a fost setată
|
||||
# A short status message shown when the user enters a long password
|
||||
maxPasswordLength = Lungime minimă a parolei: { $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = Această parolă nu a putut fi setată
|
||||
|
||||
@@ -26,15 +26,17 @@ uploadSuccessConfirmHeader = Готов к отправке
|
||||
uploadSvgAlt = Загрузить
|
||||
uploadSuccessTimingHeader = Ссылка на ваш файл станет недоступна после 1 загрузки файла или через 24 часа.
|
||||
expireInfo = Ссылка на ваш файл станет недоступна после { $downloadCount } файла или через { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
[one] { $number } загрузки
|
||||
[few] { $number } загрузок
|
||||
*[other] { $number } загрузок
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] { $num } загрузка
|
||||
[few] { $num } загрузки
|
||||
*[other] { $num } загрузок
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
[one] { $number } час
|
||||
[few] { $number } часа
|
||||
*[other] { $number } часов
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] { $num } час
|
||||
[few] { $num } часа
|
||||
*[other] { $num } часов
|
||||
}
|
||||
copyUrlFormLabelWithName = Скопировать и поделиться ссылкой на отправку вашего файла: { $filename }
|
||||
copyUrlFormButton = Скопировать в буфер обмена
|
||||
|
||||
@@ -26,12 +26,14 @@ uploadSuccessConfirmHeader = Pripravené na odoslanie
|
||||
uploadSvgAlt = Nahrať
|
||||
uploadSuccessTimingHeader = Platnosť odkazu vyprší po 1 prevzatí alebo po uplynutí 24 hodín.
|
||||
expireInfo = Platnosť odkazu na váš súbor vyprší po { $downloadCount } alebo po { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 prevzatí
|
||||
[few] { $num } prevzatiach
|
||||
*[other] { $num } prevzatiach
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 hodine
|
||||
[few] { $num } hodinách
|
||||
*[other] { $num } hodinách
|
||||
|
||||
@@ -26,13 +26,15 @@ uploadSuccessConfirmHeader = Pripravljeno za pošiljanje
|
||||
uploadSvgAlt = Naloži
|
||||
uploadSuccessTimingHeader = Povezava do vaše datoteke bo potekla po enem prenosu ali v 24 urah.
|
||||
expireInfo = Povezava do vaše datoteke bo potekla čez { $downloadCount } ali { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 prenos
|
||||
[two] { $num } prenosa
|
||||
[few] { $num } prenosi
|
||||
*[other] { $num } prenosov
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 ura
|
||||
[two] { $num } uri
|
||||
[few] { $num } ure
|
||||
|
||||
20
public/locales/sn/send.ftl
Normal file
20
public/locales/sn/send.ftl
Normal file
@@ -0,0 +1,20 @@
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
title = Firefox Send
|
||||
siteFeedback = Zvirikutaurwa
|
||||
uploadPageLearnMore = Dzidza zvimwe
|
||||
# Used as header in a column indicating the amount of time left before a
|
||||
# download link expires (e.g. "10h 5m")
|
||||
timeFileList = Nguva
|
||||
deletePopupYes = Hongu
|
||||
changePasswordButton = Shandura
|
||||
enableJavascript = Ndinokumbira mubvumidze JavaScript moedza zvekare
|
||||
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
|
||||
expiresHoursMinutes = { $hours }maawa { $minutes }mineti
|
||||
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
|
||||
expiresMinutes = { $minutes }mineti
|
||||
# A short status message shown when a password is successfully set
|
||||
passwordIsSet = Pasiwedhi yaita
|
||||
# A short status message shown when the user enters a long password
|
||||
maxPasswordLength = Pasiwedhi haipfuuri mavara:{ $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = Pasiwedhi haina kuita
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Gati për Dërgim
|
||||
uploadSvgAlt = Ngarkoje
|
||||
uploadSuccessTimingHeader = Lidhja për te kartela juaj do të skadojë pas 1 shkarkimi ose pas 24 orësh.
|
||||
expireInfo = Lidhja për te kartela juaj do të skadojë pas { $downloadCount } ose { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 shkarkimi
|
||||
*[other] { $num } shkarkimesh
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 ore
|
||||
*[other] { $num } orësh
|
||||
}
|
||||
|
||||
@@ -26,12 +26,14 @@ uploadSuccessConfirmHeader = Спреман за слање
|
||||
uploadSvgAlt = Отпреми
|
||||
uploadSuccessTimingHeader = Веза ка вашој датотеци ће истећи након једног преузимања или након 24 сата.
|
||||
expireInfo = Веза ка вашој датотеци ће истећи након { $downloadCount } или { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] преузимања
|
||||
[few] преузимања
|
||||
*[other] преузимања
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] сата
|
||||
[few] сата
|
||||
*[other] сати
|
||||
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Klar för att skicka
|
||||
uploadSvgAlt = Ladda upp
|
||||
uploadSuccessTimingHeader = Länken till din fil upphör att gälla efter 1 nedladdning eller om 24 timmar.
|
||||
expireInfo = Länken till din fil upphör att gälla efter { $downloadCount } eller { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 nedladdning
|
||||
*[other] { $num } nedladdningar
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 timme
|
||||
*[other] { $num } timmar
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// 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
|
||||
siteSubtitle = జాల ప్రయోగం
|
||||
siteFeedback = అభిప్రాయం
|
||||
@@ -7,6 +7,7 @@ uploadPageDropMessage = ఎగుమతిని ప్రారంభించ
|
||||
uploadPageSizeMessage = అత్యంత నమ్మకమైన కార్యం కోసం, మీ ఫైలును 1GB కంటే తక్కువగా ఉంచడం ఉత్తమం
|
||||
uploadPageBrowseButton = మీ కంప్యూటర్లో ఒక ఫైలును ఎంచుకోండి
|
||||
uploadPageBrowseButton1 = ఎక్కించటానికి ఒక ఫైలును ఎంచుకోండి
|
||||
uploadPageMultipleFilesAlert = పలు ఫైళ్ళను లేదా సంయచాన్ని ఎక్కించడానికి ప్రస్తుతం తోడ్పాటు లేదు.
|
||||
uploadPageBrowseButtonTitle = ఫైలును ఎగుమతి చేయండి
|
||||
uploadingPageProgress = { $filename } ({ $size }) ఎక్కుతోంది
|
||||
importingFile = దిగుమతవుతోంది...
|
||||
@@ -22,31 +23,49 @@ uploadingFileNotification = ఎగుమతి పూర్తయినప్ప
|
||||
uploadSuccessConfirmHeader = పంపించడానికి సిద్ధంగా ఉంది
|
||||
uploadSvgAlt = ఎగుమతి చేయండి
|
||||
uploadSuccessTimingHeader = మీ ఫైలు లంకె గడువు 1 దిగుమతి తరువాత లేదా 24 గంటల తరువాత ముగుస్తుంది.
|
||||
expireInfo = మీ ఫైలుకు లంకె { $downloadCount } లేదా { $timespan } తర్వాత గడువు అవుతుంది.
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 దింపుకోలు
|
||||
*[other] { $num } దింపుకోళ్ళు
|
||||
}
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 గంట
|
||||
*[other] { $num } గంటలు
|
||||
}
|
||||
copyUrlFormLabelWithName = మీ ఫైల్ను పంపడానికి లంకెను నకలు చేయండి మరియు పంచండి: { $filename }
|
||||
copyUrlFormButton = క్లిప్బోర్డ్కు నకలు చేయండి
|
||||
copiedUrl = నకలు చేయబడింది!
|
||||
deleteFileButton = ఫైలును తొలగించండి
|
||||
sendAnotherFileLink = మరో ఫైలును పంపండి
|
||||
// Alternative text used on the download link/button (indicates an action).
|
||||
# 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 = సంకేతపదం
|
||||
unlockButtonLabel = తాళం తీయి
|
||||
// Text and title used on the download link/button (indicates an action).
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = దిగుమతి
|
||||
downloadNotification = మీ దిగుమతి పూర్తయ్యింది.
|
||||
downloadFinish = దిగుమతి పూర్తయింది
|
||||
// This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = { $totalSize }) యొక్క ({ $partialSize }
|
||||
// Firefox Send is a brand name and should not be localized.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
sendYourFilesLink = Firefox sendను ప్రయత్నించండి
|
||||
downloadingPageProgress = దిగుమతిచేస్తున్నది { $filename } ({ $size })
|
||||
errorAltText = ఎగుమతిలో లోపం
|
||||
errorPageHeader = ఏదో తప్పిదం జరిగింది!
|
||||
errorPageMessage = ఫైల్ను ఎగుమతి చేయడంలో లోపం ఉంది.
|
||||
errorPageLink = మరో ఫైలును పంపండి
|
||||
fileTooBig = ఆ ఫైలు ఎక్కించడానికి చాలా పెద్దగా ఉంది. ఫైళ్ళు { $size } కంటే తక్కువ పరిమాణంలో ఉండాలి.
|
||||
linkExpiredAlt = లంకె గడువు ముగిసింది
|
||||
expiredPageHeader = ఈ లంకె గడువు ముగిసింది లేదా ముందు ఎప్పుడూ ఉనికిలో లేదు!
|
||||
notSupportedHeader = మీ విహారిణికి మద్దతు లేదు.
|
||||
@@ -56,7 +75,7 @@ updateFirefox = Firefoxను నవీకరించు
|
||||
downloadFirefoxButtonSub = ఉచిత దిగుమతులు
|
||||
uploadedFile = దస్త్రం
|
||||
copyFileList = URL నకలుతీయి
|
||||
// expiryFileList is used as a column header
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = ఇంతలో గడువుతీరును
|
||||
deleteFileList = తొలగించు
|
||||
nevermindButton = పర్వాలేదు
|
||||
@@ -67,13 +86,26 @@ deletePopupCancel = రద్దుచేయి
|
||||
deleteButtonHover = తొలగించు
|
||||
copyUrlHover = URLను నకలు చేయండి
|
||||
footerLinkLegal = చట్టపరమైన
|
||||
// Test Pilot is a proper name and should not be localized.
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = టెస్ట్ పైలట్ గురించి
|
||||
footerLinkPrivacy = గోప్యత
|
||||
footerLinkTerms = నియమాలు
|
||||
footerLinkCookies = కుకీలు
|
||||
requirePasswordCheckbox = ఈ ఫైల్ను దింపుకోటానికి సంకేతపదం అవసరం
|
||||
addPasswordButton = సంకేతపదం జోడించండి
|
||||
changePasswordButton = మార్చు
|
||||
passwordTryAgain = సరికాని సంకేతపదం. మళ్ళీ ప్రయత్నించండి.
|
||||
// This label is followed by the password needed to download a file
|
||||
passwordResult = సంకేతపదం: { $password }
|
||||
reportIPInfringement = మేధో సంపత్తి హక్కుల ఉల్లంఘనను నివేదించండి
|
||||
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 a password is successfully set
|
||||
passwordIsSet = సంకేతపదం అమరింది
|
||||
# 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 = ఈ సంకేతపదం పెట్టలేకపోయాం
|
||||
|
||||
@@ -26,11 +26,13 @@ uploadSuccessConfirmHeader = Handa nang Ipadala
|
||||
uploadSvgAlt = I-upload
|
||||
uploadSuccessTimingHeader = Mag-e-expire ang link sa iyong file pagkatapos ng 1 pag-download o sa loob ng 24 na oras.
|
||||
expireInfo = Mag-e-expire ang link sa iyong file pagkatapos ng { $downloadCount } o { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 pag-download
|
||||
*[other] { $num } na mga pag-download
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
*[one] 1 oras
|
||||
}
|
||||
copyUrlFormLabelWithName = Kopyahin at ibahagi ang link upang ipadala ang iyong file: { $filename }
|
||||
|
||||
@@ -27,8 +27,10 @@ uploadSvgAlt = Yükle
|
||||
uploadSuccessTimingHeader = Dosyanız 1 kez indirildikten veya 24 saat geçtikten sonra linkiniz geçersiz olacaktır.
|
||||
expireInfo = Dosyanızın bağlantısı { $downloadCount } sonra veya { $timespan } zaman aşımına uğrayacaktır.
|
||||
downloadCount = { $num } indirme
|
||||
timespanHours = { $num ->
|
||||
*[one] { $num } saat
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 saat
|
||||
*[other] { $num } saat
|
||||
}
|
||||
copyUrlFormLabelWithName = { $filename } dosyanızı başkasına göndermek için aşağıdaki linki kopyalayın.
|
||||
copyUrlFormButton = Panoya kopyala
|
||||
@@ -82,7 +84,7 @@ expiryFileList = Bitiş süresi
|
||||
deleteFileList = Sil
|
||||
nevermindButton = Boş ver
|
||||
legalHeader = Şart ve Koşullar
|
||||
legalNoticeTestPilot = Firefox Send bir Test Pilotu deneyidir ve Test Pilotu <a>Hizmet Koşulları</a> ile <a>Gizlilik Bildirimi</a>’ne tabidir. Bu deney ve topladığı veriler hakkında daha fazla bilgi almak isterseniz <a>buraya</a> bakabilirsiniz.
|
||||
legalNoticeTestPilot = Firefox Send bir Test Pilotu deneyidir ve Test Pilotu <a>Hizmet Koşulları</a> ile <a>Gizlilik Bildirimi</a>’ne tabidir. Bu deney ve topladığı veriler hakkında daha fazla bilgi almak isterseniz <a>buraya</a> bakabilirsiniz.
|
||||
legalNoticeMozilla = Firefox Send’i kullanmak Mozilla’nın <a>Web Siteleri Gizlilik Bildirimi</a> ve <a>Web Siteleri Kullanım Koşulları</a>’na da tabidir.
|
||||
deletePopupText = Bu dosya silinsin mi?
|
||||
deletePopupYes = Evet
|
||||
|
||||
@@ -26,12 +26,14 @@ uploadSuccessConfirmHeader = Готовий до надсилання
|
||||
uploadSvgAlt = Вивантажити
|
||||
uploadSuccessTimingHeader = Час дії цього посилання закінчиться після 1 завантаження, або через 24 години.
|
||||
expireInfo = Посилання на ваш файл стане недійсним після { $downloadCount } файла, або через { $timespan }.
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
[one] 1 завантаження
|
||||
[few] { $num } завантаження
|
||||
*[other] { $num } завантажень
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
[one] 1 година
|
||||
[few] { $num } години
|
||||
*[other] { $num } годин
|
||||
@@ -88,8 +90,8 @@ expiryFileList = Термін дії закінчується
|
||||
deleteFileList = Видалити
|
||||
nevermindButton = Не важливо
|
||||
legalHeader = Умови та конфіденційність
|
||||
legalNoticeTestPilot = Firefox Send в даний час є експериментом Test Pilot, і тому підпадає під <a>умови служби</ a> і <a>повідомлення про приватність</a> Test Pilot. Ви можете дізнатись більше про цей експеримент і його збір даних <a>тут</a>.
|
||||
legalNoticeMozilla = Використання сайту Firefox Send також підпадає під <a>повідомлення про конфіденційність веб-сайтів</ a> та <a>правила використання веб-сайтів</a> Mozilla.
|
||||
legalNoticeTestPilot = Firefox Send в даний час є експериментом Test Pilot, і тому підпадає під <a>умови служби</a> і <a>повідомлення про приватність</a> Test Pilot. Ви можете дізнатись більше про цей експеримент і його збір даних <a>тут</a>.
|
||||
legalNoticeMozilla = Використання сайту Firefox Send також підпадає під <a>повідомлення про конфіденційність веб-сайтів</a> та <a>правила використання веб-сайтів</a> Mozilla.
|
||||
deletePopupText = Видалити цей файл?
|
||||
deletePopupYes = Так
|
||||
deletePopupCancel = Скасувати
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// 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
|
||||
siteSubtitle = Thử nghiệm trên web
|
||||
siteFeedback = Phản hồi
|
||||
@@ -22,27 +22,46 @@ uploadingPageCancel = Hủy tải lên
|
||||
uploadCancelNotification = Quá trình tải lên đã bị hủy.
|
||||
uploadingPageLargeFileMessage = Tập tin này khá nặng và sẽ tốn một chút thời gian để tải lên. Chờ chút nhé!
|
||||
uploadingFileNotification = Thông báo cho tôi khi tải lên hoàn tất.
|
||||
uploadSuccessConfirmHeader = Đã sẵn sàng để Gửi
|
||||
uploadSuccessConfirmHeader = Đã sẵn sàng để gửi
|
||||
uploadSvgAlt = Tải lên
|
||||
uploadSuccessTimingHeader = Liên kết đến tập tin của bạn sẽ hết hạn sau 1 lượt tải về hoặc trong 24 giờ.
|
||||
uploadSuccessTimingHeader = Liên kết đến tập tin của bạn sẽ hết hạn sau 1 lượt tải hoặc trong 24 giờ.
|
||||
expireInfo = Liên kết đến tập tin của bạn sẽ hết hạn sau { $downloadCount } hoặc { $timespan }.
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
*[other] { $num } lượt tải
|
||||
}
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
*[other] { $num } giờ
|
||||
}
|
||||
copyUrlFormLabelWithName = Sao chép và chia sẻ liên kết để gửi tập tin của bạn: { $filename }
|
||||
copyUrlFormButton = Sao chép vào vùng nhớ tạm
|
||||
copyUrlFormButton = Sao chép vào bộ nhớ tạm
|
||||
copiedUrl = Đã sao chép!
|
||||
deleteFileButton = Xóa tập tin
|
||||
sendAnotherFileLink = Gửi tập tin khác
|
||||
// Alternative text used on the download link/button (indicates an action).
|
||||
downloadAltText = Tải về
|
||||
# Alternative text used on the download link/button (indicates an action).
|
||||
downloadAltText = Tải xuống
|
||||
downloadsFileList = Tải xuống
|
||||
# Used as header in a column indicating the amount of time left before a
|
||||
# download link expires (e.g. "10h 5m")
|
||||
timeFileList = Thời gian
|
||||
# Used as header in a column indicating the number of times a file has been
|
||||
# downloaded
|
||||
downloadFileName = Tải về { $filename }
|
||||
downloadFileSize = ({ $size })
|
||||
// Firefox Send is a brand name and should not be localized.
|
||||
unlockInputLabel = Nhập mật khẩu
|
||||
unlockInputPlaceholder = Mật khẩu
|
||||
unlockButtonLabel = Mở khóa
|
||||
downloadFileTitle = Tải về tập tin được mã hóa
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
downloadMessage = Bạn của bạn đang gửi một tập tin thông qua Firefox Send, một dịch vụ cho phép bạn chia sẻ tập tin một cách an toàn, riêng tư, có liên kết được mã hóa và sẽ tự động hết hạn để chắc chắn rằng dữ liệu của bạn không nằm mãi mãi trên Internet.
|
||||
// Text and title used on the download link/button (indicates an action).
|
||||
# Text and title used on the download link/button (indicates an action).
|
||||
downloadButtonLabel = Tải về
|
||||
downloadNotification = Quá trình tải về đã hoàn tất.
|
||||
downloadFinish = Tải về hoàn tất
|
||||
// This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
|
||||
fileSizeProgress = ({ $partialSize } trong { $totalSize })
|
||||
// Firefox Send is a brand name and should not be localized.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
sendYourFilesLink = Dùng thử Firefox Send
|
||||
downloadingPageProgress = Đang tải về { $filename } ({ $size })
|
||||
downloadingPageMessage = Vui lòng giữ cửa sổ này mở trong khi chúng tôi lấy tập tin và giải mã chúng.
|
||||
@@ -54,7 +73,7 @@ fileTooBig = Tập tin này quá lớn để tải lên. Kích thước tập ti
|
||||
linkExpiredAlt = Liên kết đã hết hạn
|
||||
expiredPageHeader = Liên kết này đã hết hạn hoặc chưa từng được sử dụng!
|
||||
notSupportedHeader = Trình duyệt của bạn không được hỗ trợ.
|
||||
// Firefox Send is a brand name and should not be localized.
|
||||
# Firefox Send is a brand name and should not be localized.
|
||||
notSupportedDetail = Thật không may trình duyệt này không hỗ trợ công nghệ đã tạo nên Firefox Send. Bạn cần thử với trình duyệt khác. Chúng tôi khuyên dùng Firefox!
|
||||
notSupportedLink = Tại sao trình duyệt của tôi không được hỗ trợ?
|
||||
notSupportedOutdatedDetail = Thật không may là phiên bản Firefox này không hỗ trợ công nghệ được sử dụng trong Firefox Send. Bạn cần cập nhật trình duyệt của bạn.
|
||||
@@ -62,7 +81,7 @@ updateFirefox = Cập nhật Firefox
|
||||
downloadFirefoxButtonSub = Tải về miễn phí
|
||||
uploadedFile = Tập tin
|
||||
copyFileList = Sao chép URL
|
||||
// expiryFileList is used as a column header
|
||||
# expiryFileList is used as a column header
|
||||
expiryFileList = Hết hạn trong
|
||||
deleteFileList = Xóa
|
||||
nevermindButton = Đừng bận tâm
|
||||
@@ -75,8 +94,26 @@ deletePopupCancel = Hủy bỏ
|
||||
deleteButtonHover = Xóa
|
||||
copyUrlHover = Sao chép URL
|
||||
footerLinkLegal = Pháp lý
|
||||
// Test Pilot is a proper name and should not be localized.
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = Về Test Pilot
|
||||
footerLinkPrivacy = Quyền riêng tư
|
||||
footerLinkTerms = Điều khoản
|
||||
footerLinkCookies = Cookies
|
||||
footerLinkCookies = Cookie
|
||||
requirePasswordCheckbox = Yêu cầu mật khẩu khi tải về tập tin này
|
||||
addPasswordButton = Thêm mật khẩu
|
||||
changePasswordButton = Thay đổi
|
||||
passwordTryAgain = Sai mật khẩu. Vui lòng thử lại.
|
||||
reportIPInfringement = Báo cáo vi phạm
|
||||
javascriptRequired = Firefox Send cần JavaScript
|
||||
whyJavascript = Tại sao Firefox Send cần JavaScript?
|
||||
enableJavascript = Vui lòng kích hoạt JavaScript và thử lại.
|
||||
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
|
||||
expiresHoursMinutes = { $hours } giờ { $minutes } phút
|
||||
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
|
||||
expiresMinutes = { $minutes } phút
|
||||
# A short status message shown when a password is successfully set
|
||||
passwordIsSet = Đã đặt mật khẩu
|
||||
# A short status message shown when the user enters a long password
|
||||
maxPasswordLength = Độ dài mật khẩu tối đa: { $length }
|
||||
# A short status message shown when there was an error setting the password
|
||||
passwordSetError = Không thể đặt mật khẩu này
|
||||
|
||||
@@ -26,10 +26,12 @@ uploadSuccessConfirmHeader = 准备好发送
|
||||
uploadSvgAlt = 上传
|
||||
uploadSuccessTimingHeader = 您的文件的链接将在首次下载或 24 小时后过期。
|
||||
expireInfo = 指向该文件的链接将在 { $downloadCount } 或 { $timespan } 后过期。
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
*[other] { $num } 次下载
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
*[other] { $num } 小时
|
||||
}
|
||||
copyUrlFormLabelWithName = 复制并分享链接以发送您的文件:{ $filename }
|
||||
@@ -95,13 +97,13 @@ footerLinkLegal = 法律
|
||||
# Test Pilot is a proper name and should not be localized.
|
||||
footerLinkAbout = 关于 Test Pilot
|
||||
footerLinkPrivacy = 隐私
|
||||
footerLinkTerms = 条款
|
||||
footerLinkTerms = 使用条款
|
||||
footerLinkCookies = Cookie
|
||||
requirePasswordCheckbox = 持有密码才能下载此文件
|
||||
addPasswordButton = 添加密码
|
||||
changePasswordButton = 更改
|
||||
passwordTryAgain = 密码不正确。请重试。
|
||||
reportIPInfringement = 举报知识产权侵权
|
||||
reportIPInfringement = 举报侵犯知识产权
|
||||
javascriptRequired = Firefox Send 需要 JavaScript
|
||||
whyJavascript = 为什么 Firefox Send 需要 JavaScript?
|
||||
enableJavascript = 请启用 JavaScript 并重试。
|
||||
|
||||
@@ -26,10 +26,12 @@ uploadSuccessConfirmHeader = 準備好傳送
|
||||
uploadSvgAlt = 上傳
|
||||
uploadSuccessTimingHeader = 您的檔案鏈結將會在首次下載,或 24 小時後失效。
|
||||
expireInfo = 檔案鏈結將在 { $downloadCount }或 { $timespan }後失效。
|
||||
downloadCount = { $num ->
|
||||
downloadCount =
|
||||
{ $num ->
|
||||
*[other] { $num } 次下載
|
||||
}
|
||||
timespanHours = { $num ->
|
||||
timespanHours =
|
||||
{ $num ->
|
||||
*[other] { $num } 小時
|
||||
}
|
||||
copyUrlFormLabelWithName = 複製並分享鏈結來傳送您的檔案: { $filename }
|
||||
@@ -88,7 +90,7 @@ legalNoticeTestPilot = Firefox Send 目前是一個 Test Pilot 實驗,依照 T
|
||||
legalNoticeMozilla = 使用 Firefox Send 網站時,亦受到 Mozilla 的<a>網站隱私權公告</a>以及<a>網站使用條款</a>約束。
|
||||
deletePopupText = 真的要刪除這個檔案嗎?
|
||||
deletePopupYes = 好的,刪除
|
||||
deletePopupCancel = 不要刪除
|
||||
deletePopupCancel = 取消
|
||||
deleteButtonHover = 刪除
|
||||
copyUrlHover = 複製網址
|
||||
footerLinkLegal = 法律資訊
|
||||
|
||||
@@ -9,6 +9,11 @@ const conf = convict({
|
||||
default: '',
|
||||
env: 'S3_BUCKET'
|
||||
},
|
||||
gcs_bucket: {
|
||||
format: String,
|
||||
default: '',
|
||||
env: 'GCS_BUCKET'
|
||||
},
|
||||
redis_host: {
|
||||
format: String,
|
||||
default: 'localhost',
|
||||
|
||||
@@ -6,16 +6,19 @@ module.exports = async function(req, res) {
|
||||
const id = req.params.id;
|
||||
try {
|
||||
const meta = req.meta;
|
||||
const contentLength = await storage.length(id);
|
||||
res.writeHead(200, {
|
||||
'Content-Disposition': 'attachment',
|
||||
'Content-Type': 'application/octet-stream',
|
||||
'Content-Length': contentLength,
|
||||
'WWW-Authenticate': `send-v1 ${req.nonce}`
|
||||
});
|
||||
const file_stream = storage.get(id);
|
||||
let cancelled = false;
|
||||
|
||||
req.on('close', () => {
|
||||
cancelled = true;
|
||||
file_stream.destroy();
|
||||
});
|
||||
|
||||
file_stream.pipe(res).on('finish', async () => {
|
||||
if (cancelled) {
|
||||
return;
|
||||
}
|
||||
|
||||
file_stream.on('end', async () => {
|
||||
const dl = meta.dl + 1;
|
||||
const dlimit = meta.dlimit;
|
||||
try {
|
||||
@@ -28,7 +31,6 @@ module.exports = async function(req, res) {
|
||||
log.info('StorageError:', id);
|
||||
}
|
||||
});
|
||||
file_stream.pipe(res);
|
||||
} catch (e) {
|
||||
res.sendStatus(404);
|
||||
}
|
||||
|
||||
37
server/storage/gcs.js
Normal file
37
server/storage/gcs.js
Normal file
@@ -0,0 +1,37 @@
|
||||
const { Storage } = require('@google-cloud/storage');
|
||||
const storage = new Storage();
|
||||
|
||||
class GCSStorage {
|
||||
constructor(config, log) {
|
||||
this.bucket = storage.bucket(config.gcs_bucket);
|
||||
this.log = log;
|
||||
}
|
||||
|
||||
async length(id) {
|
||||
const data = await this.bucket.file(id).getMetadata();
|
||||
return data[0].size;
|
||||
}
|
||||
|
||||
getStream(id) {
|
||||
return this.bucket.file(id).createReadStream({ validation: false });
|
||||
}
|
||||
|
||||
set(id, file) {
|
||||
return new Promise((resolve, reject) => {
|
||||
file
|
||||
.pipe(this.bucket.file(id).createWriteStream())
|
||||
.on('error', reject)
|
||||
.on('finish', resolve);
|
||||
});
|
||||
}
|
||||
|
||||
del(id) {
|
||||
return this.bucket.file(id).delete();
|
||||
}
|
||||
|
||||
ping() {
|
||||
return this.bucket.exists();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = GCSStorage;
|
||||
@@ -5,7 +5,14 @@ const createRedisClient = require('./redis');
|
||||
|
||||
class DB {
|
||||
constructor(config) {
|
||||
const Storage = config.s3_bucket ? require('./s3') : require('./fs');
|
||||
let Storage = null;
|
||||
if (config.s3_bucket) {
|
||||
Storage = require('./s3');
|
||||
} else if (config.gcs_bucket) {
|
||||
Storage = require('./gcs');
|
||||
} else {
|
||||
Storage = require('./fs');
|
||||
}
|
||||
this.log = mozlog('send.storage');
|
||||
this.expireSeconds = config.expire_seconds;
|
||||
this.storage = new Storage(config, this.log);
|
||||
|
||||
@@ -6,7 +6,9 @@ function kv(f) {
|
||||
}
|
||||
|
||||
module.exports = function() {
|
||||
const files = fs.readdirSync(path.join(__dirname, 'tests'));
|
||||
const files = fs
|
||||
.readdirSync(path.join(__dirname, 'tests'))
|
||||
.filter(p => /\.js$/.test(p));
|
||||
const code = "require('fast-text-encoding');\n" + files.map(kv).join(';\n');
|
||||
return {
|
||||
code,
|
||||
|
||||
@@ -23,7 +23,12 @@ function onConsole(msg) {
|
||||
|
||||
const server = app.listen(async function() {
|
||||
let exitCode = -1;
|
||||
const browser = await puppeteer.launch();
|
||||
const browser = await puppeteer.launch({
|
||||
args: [
|
||||
// puppeteer >= 1.10.0 crashes on Circle CI without this flag set
|
||||
'--no-sandbox'
|
||||
]
|
||||
});
|
||||
try {
|
||||
const page = await browser.newPage();
|
||||
page.on('console', onConsole);
|
||||
|
||||
@@ -134,6 +134,43 @@ describe('Upload / Download flow', function() {
|
||||
}
|
||||
});
|
||||
|
||||
it('can increase download count on download', async function() {
|
||||
const fs = new FileSender(blob);
|
||||
const file = await fs.upload();
|
||||
const fr = new FileReceiver({
|
||||
secretKey: file.toJSON().secretKey,
|
||||
id: file.id,
|
||||
nonce: file.keychain.nonce,
|
||||
requiresPassword: false
|
||||
});
|
||||
await fr.getMetadata();
|
||||
|
||||
await fr.download(noSave);
|
||||
await file.updateDownloadCount();
|
||||
assert.equal(file.dtotal, 1);
|
||||
});
|
||||
|
||||
it('does not increase download count when download cancelled', async function() {
|
||||
const fs = new FileSender(blob);
|
||||
const file = await fs.upload();
|
||||
const fr = new FileReceiver({
|
||||
secretKey: file.toJSON().secretKey,
|
||||
id: file.id,
|
||||
nonce: file.keychain.nonce,
|
||||
requiresPassword: false
|
||||
});
|
||||
await fr.getMetadata();
|
||||
fr.once('progress', () => fr.cancel());
|
||||
|
||||
try {
|
||||
await fr.download(noSave);
|
||||
assert.fail('not cancelled');
|
||||
} catch (e) {
|
||||
await file.updateDownloadCount();
|
||||
assert.equal(file.dtotal, 0);
|
||||
}
|
||||
});
|
||||
|
||||
it('can allow multiple downloads', async function() {
|
||||
const fs = new FileSender(blob);
|
||||
const file = await fs.upload();
|
||||
|
||||
10
test/integration/Dockerfile
Normal file
10
test/integration/Dockerfile
Normal file
@@ -0,0 +1,10 @@
|
||||
FROM ubuntu:xenial
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y python-pip python-dev && \
|
||||
pip install tox
|
||||
COPY . /integration
|
||||
WORKDIR /integration
|
||||
RUN tox --notest
|
||||
|
||||
CMD ["tox", "-e", "integration-tests"]
|
||||
66
test/integration/README.md
Normal file
66
test/integration/README.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# Integration Tests for [Firefox Send](https://send.firefox.com/).
|
||||
## How to run the tests locally
|
||||
### Clone the repository
|
||||
|
||||
If you have cloned this project already then you can skip this, otherwise you'll
|
||||
need to clone this repo using Git. If you do not know how to clone a GitHub
|
||||
repository, check out this [help page][git-clone] from GitHub.
|
||||
|
||||
If you think you would like to contribute to the tests by writing or maintaining
|
||||
them in the future, it would be a good idea to create a fork of this repository
|
||||
first, and then clone that. GitHub also has great instructions for
|
||||
[forking a repository][git-fork].
|
||||
|
||||
### App Setup
|
||||
|
||||
Please view the README at the root directory of the project.
|
||||
|
||||
### Run the tests
|
||||
|
||||
Included in the docker-compose file is an image containing Firefox Nightly.
|
||||
[tox][Tox] is our test environment manager and [pytest][pytest] is the test runner.
|
||||
|
||||
To run the tests, execute the commands below:
|
||||
```sh
|
||||
npm run build
|
||||
npm run test-integration
|
||||
```
|
||||
|
||||
### Adding a test
|
||||
|
||||
The tests are written in Python using a POM, or Page Object Model. The plugin we use for this is called [pypom][pypom]. Please read the documentation there for good examples on how to use the Page Object Model when writing tests.
|
||||
|
||||
The pytest plugin that we use for running tests has a number of advanced command line options available too. The full documentation for the plugin can be found [here][pytest-selenium].
|
||||
|
||||
### Watching a test run (within the docker container)
|
||||
|
||||
The tests are run on a live version of Firefox, but they are run headless. To access the container where the tests are run to view them follow these steps:
|
||||
|
||||
1. Make sure all of the containers are running:
|
||||
```sh
|
||||
docker-compose ps
|
||||
```
|
||||
If not start them detached:
|
||||
```sh
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
2. Open your favorite VNC viewer and type in `localhost:5900`.
|
||||
3. The password is ```secret```.
|
||||
4. The viewer should open a window with a Ubuntu logo. If that happens you are connected to the ```selenium-firefox``` image and if you start the test, you should see a Firefox window open and the tests running.
|
||||
|
||||
### Debugging a failure
|
||||
|
||||
Whether a test passes or fails will result in a HTML report being created. This report will have detailed information of the test run and if a test does fail, it will provide geckodriver logs, terminal logs, as well as a screenshot of the browser when the test failed. We use a pytest plugin called [pytest-html][pytest-html] to create this report. The report can be found at ```coverage/send-test.html```. It should be viewed within a browser.
|
||||
|
||||
[flake8]: http://flake8.pycqa.org/en/latest/
|
||||
[git-clone]: https://help.github.com/articles/cloning-a-repository/
|
||||
[git-fork]: https://help.github.com/articles/fork-a-repo/
|
||||
[geckodriver]: https://github.com/mozilla/geckodriver/releases/tag/v0.19.1
|
||||
[pypom]: http://pypom.readthedocs.io/en/latest/
|
||||
[pytest]: https://docs.pytest.org/en/latest/
|
||||
[pytest-html]: https://github.com/pytest-dev/pytest-html
|
||||
[pytest-selenium]: http://pytest-selenium.readthedocs.org/
|
||||
[Selenium]: http://selenium-python.readthedocs.io/index.html
|
||||
[selenium-api]: http://selenium-python.readthedocs.io/locating-elements.html
|
||||
[Tox]: http://tox.readthedocs.io/
|
||||
76
test/integration/conftest.py
Normal file
76
test/integration/conftest.py
Normal file
@@ -0,0 +1,76 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
"""Configuration files for pytest."""
|
||||
import pytest
|
||||
import requests
|
||||
from requests.adapters import HTTPAdapter
|
||||
from requests.packages.urllib3.util.retry import Retry
|
||||
|
||||
from pages.desktop.download import Download
|
||||
from pages.desktop.home import Home
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def firefox_options(firefox_options, download_location_dir):
|
||||
"""Firefox options."""
|
||||
firefox_options.set_preference("browser.download.panel.shown", False)
|
||||
firefox_options.set_preference(
|
||||
"browser.helperApps.neverAsk.openFile", "text/plain")
|
||||
firefox_options.set_preference(
|
||||
"browser.helperApps.neverAsk.saveToDisk", "text/plain")
|
||||
firefox_options.set_preference("browser.download.folderList", 2)
|
||||
firefox_options.set_preference(
|
||||
"browser.download.dir", "{0}".format(download_location_dir))
|
||||
firefox_options.add_argument('-foreground')
|
||||
firefox_options.log.level = 'trace'
|
||||
return firefox_options
|
||||
|
||||
|
||||
@pytest.fixture(scope='session', autouse=True)
|
||||
def _verify_url(request, base_url):
|
||||
"""Verifies the base URL"""
|
||||
verify = request.config.option.verify_base_url
|
||||
if base_url and verify:
|
||||
session = requests.Session()
|
||||
retries = Retry(backoff_factor=0.1,
|
||||
status_forcelist=[500, 502, 503, 504])
|
||||
session.mount(base_url, HTTPAdapter(max_retries=retries))
|
||||
session.get(base_url, verify=False)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def download_location_dir(tmpdir):
|
||||
"""Directory for downloading sample file."""
|
||||
return tmpdir.mkdir('test_download')
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def upload_location_dir(tmpdir):
|
||||
"""Directory for uploading sample file."""
|
||||
return tmpdir.mkdir('test_upload')
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def test_file(upload_location_dir):
|
||||
"""Create test upload/download file."""
|
||||
setattr(test_file, 'name', 'sample.txt')
|
||||
setattr(test_file, 'location', upload_location_dir.join(test_file.name))
|
||||
return test_file
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def download_file(upload_file):
|
||||
"""Uploads and downloads a file"""
|
||||
download = Download(upload_file.selenium, upload_file.file_url).open()
|
||||
download.download_btn.click()
|
||||
return download
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def upload_file(selenium, base_url, download_location_dir, test_file):
|
||||
"""Upload file fixture."""
|
||||
home = Home(selenium, base_url).open()
|
||||
test_file.location.write('This is a test! This is a test!')
|
||||
return home.upload_area("{0}".format(test_file.location.realpath()))
|
||||
0
test/integration/pages/__init__.py
Normal file
0
test/integration/pages/__init__.py
Normal file
0
test/integration/pages/desktop/__init__.py
Normal file
0
test/integration/pages/desktop/__init__.py
Normal file
41
test/integration/pages/desktop/base.py
Normal file
41
test/integration/pages/desktop/base.py
Normal file
@@ -0,0 +1,41 @@
|
||||
from pypom import Page, Region
|
||||
from selenium.webdriver.common.by import By
|
||||
|
||||
|
||||
class Base(Page):
|
||||
"""Base object model."""
|
||||
|
||||
_url = '{base_url}'
|
||||
_send_logo_locator = (By.CLASS_NAME, 'logo')
|
||||
|
||||
def __init__(self, selenium, base_url, locale='en-US', **kwargs):
|
||||
super(Base, self).__init__(
|
||||
selenium, base_url, locale=locale, timeout=20, **kwargs)
|
||||
|
||||
def wait_for_page_to_load(self):
|
||||
self.wait.until(
|
||||
lambda _: self.find_element(
|
||||
*self._send_logo_locator).is_displayed())
|
||||
return self
|
||||
|
||||
@property
|
||||
def footer(self):
|
||||
return self.Footer(self)
|
||||
|
||||
class Footer(Region):
|
||||
_root_element = (By.CLASS_NAME, 'footer')
|
||||
_legal_links = (By.CLASS_NAME, 'legalSection__link')
|
||||
|
||||
@property
|
||||
def links(self):
|
||||
return [self.Links(self, el) for el in self.find_elements(
|
||||
*self._legal_links)]
|
||||
|
||||
class Links(Region):
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return self.root.text.split()[0]
|
||||
|
||||
def click(self):
|
||||
self.root.click()
|
||||
17
test/integration/pages/desktop/download.py
Normal file
17
test/integration/pages/desktop/download.py
Normal file
@@ -0,0 +1,17 @@
|
||||
from selenium.webdriver.common.by import By
|
||||
|
||||
from pages.desktop.base import Base
|
||||
|
||||
|
||||
class Download(Base):
|
||||
"""Download page object model."""
|
||||
|
||||
_download_button_locator = (By.CLASS_NAME, 'btn--download')
|
||||
|
||||
def wait_for_page_to_load(self):
|
||||
self.wait.until(lambda _: self.download_btn.is_displayed())
|
||||
|
||||
@property
|
||||
def download_btn(self):
|
||||
"""Download button."""
|
||||
return self.find_element(*self._download_button_locator)
|
||||
26
test/integration/pages/desktop/home.py
Normal file
26
test/integration/pages/desktop/home.py
Normal file
@@ -0,0 +1,26 @@
|
||||
from selenium.webdriver.common.by import By
|
||||
|
||||
from pages.desktop.base import Base
|
||||
|
||||
|
||||
class Home(Base):
|
||||
"""Firefox Send Home page object model."""
|
||||
|
||||
_upload_area_locator = (By.ID, 'file-upload')
|
||||
_upload_button_locator = (By.CLASS_NAME, 'btn--file')
|
||||
|
||||
@property
|
||||
def upload_btn(self):
|
||||
"""Upload button."""
|
||||
return self.find_element(*self._upload_button_locator)
|
||||
|
||||
def upload_area(self, path, cancel=False):
|
||||
"""Area that allows for drag and drop uploading.
|
||||
|
||||
Returns Progress Object.
|
||||
"""
|
||||
self.find_element(*self._upload_area_locator).send_keys(path)
|
||||
from pages.desktop.progress import Progress
|
||||
return Progress(
|
||||
self.selenium, self.base_url).wait_for_page_to_load(
|
||||
cancel_after_load=cancel)
|
||||
25
test/integration/pages/desktop/progress.py
Normal file
25
test/integration/pages/desktop/progress.py
Normal file
@@ -0,0 +1,25 @@
|
||||
from selenium.webdriver.common.by import By
|
||||
|
||||
from pages.desktop.base import Base
|
||||
|
||||
|
||||
class Progress(Base):
|
||||
"""Progress page object model."""
|
||||
|
||||
_cancel_button = (By.ID, 'cancel-upload')
|
||||
_progress_icon_locator = (By.CLASS_NAME, 'progress__bar')
|
||||
|
||||
def wait_for_page_to_load(self, cancel_after_load=False):
|
||||
self.wait.until(
|
||||
lambda _: self.find_element(
|
||||
*self._progress_icon_locator).is_displayed())
|
||||
if cancel_after_load:
|
||||
self.cancel_btn.click()
|
||||
return
|
||||
from pages.desktop.share import Share
|
||||
return Share(self.selenium, self.base_url).wait_for_page_to_load()
|
||||
|
||||
@property
|
||||
def cancel_btn(self):
|
||||
"""Cancel upload button."""
|
||||
return self.find_element(*self._cancel_button)
|
||||
22
test/integration/pages/desktop/share.py
Normal file
22
test/integration/pages/desktop/share.py
Normal file
@@ -0,0 +1,22 @@
|
||||
from selenium.webdriver.common.by import By
|
||||
|
||||
from pages.desktop.base import Base
|
||||
|
||||
|
||||
class Share(Base):
|
||||
"""SHare page object model."""
|
||||
|
||||
_share_page_locator = (By.CLASS_NAME, 'sharePage')
|
||||
_share_url_locator = (By.ID, 'fileUrl')
|
||||
|
||||
def wait_for_page_to_load(self):
|
||||
self.wait.until(
|
||||
lambda _: self.find_element(
|
||||
*self._share_page_locator).is_displayed())
|
||||
return self
|
||||
|
||||
@property
|
||||
def file_url(self):
|
||||
"""File uploaded URL."""
|
||||
return self.find_element(
|
||||
*self._share_url_locator).get_property('value')
|
||||
8
test/integration/requirements.txt
Normal file
8
test/integration/requirements.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
selenium==3.141.0
|
||||
flake8==3.6.0
|
||||
flake8-isort==2.6.0
|
||||
PyPOM==2.2.0
|
||||
pytest==4.1.1
|
||||
pytest-html==1.20.0
|
||||
pytest-selenium==1.15.1
|
||||
pytest-xdist==1.26.0
|
||||
6
test/integration/test_download.py
Normal file
6
test/integration/test_download.py
Normal file
@@ -0,0 +1,6 @@
|
||||
"""Test files regarding downloads."""
|
||||
|
||||
|
||||
def test_download(download_file, download_location_dir, test_file):
|
||||
"""Test downloaded file matches uploaded file."""
|
||||
assert download_location_dir.ensure(test_file.name)
|
||||
14
test/integration/test_home.py
Normal file
14
test/integration/test_home.py
Normal file
@@ -0,0 +1,14 @@
|
||||
import pytest
|
||||
|
||||
from pages.desktop.base import Base
|
||||
|
||||
footer_links = ['mozilla', 'mozilla', 'about', 'legal', 'legal', 'cookies',
|
||||
'report-infringement']
|
||||
|
||||
|
||||
@pytest.mark.parametrize('i, name', enumerate(footer_links))
|
||||
def test_legal_links(selenium, base_url, i, name):
|
||||
"""Test links in footer load correct pages."""
|
||||
page = Base(selenium, base_url).open()
|
||||
page.footer.links[i].click()
|
||||
assert name in selenium.current_url
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user