Compare commits

...

25 Commits

Author SHA1 Message Date
Danny Coates
0f8c3caf18 fixed untranslated strings breaking the site 2017-12-19 10:06:45 -08:00
Jobava
3a7677b46d Pontoon: Update Romanian (ro) localization of Test Pilot: Firefox Send
Localization authors:
- Jobava <jobaval10n@gmail.com>
2017-12-14 17:31:55 +00:00
Jobava
3fd64d9956 Pontoon: Update Romanian (ro) localization of Test Pilot: Firefox Send
Localization authors:
- Jobava <jobaval10n@gmail.com>
2017-12-14 17:11:45 +00:00
Nihad Suljić
1a4cea7b4f Pontoon: Update Bosnian (bs) localization of Test Pilot: Firefox Send
Localization authors:
- Nihad Suljić <nihad.suljic92@gmail.com>
2017-12-13 08:32:30 +00:00
Hyeonseok Shin
bbb1c42641 Pontoon: Update Korean (ko) localization of Test Pilot: Firefox Send
Localization authors:
- Hyeonseok Shin <hyeonseok@gmail.com>
- minwook-shin <minwook0106@gmail.com>
2017-12-13 02:50:51 +00:00
Hyeonseok Shin
7ce2320eda Pontoon: Update Korean (ko) localization of Test Pilot: Firefox Send
Localization authors:
- Hyeonseok Shin <hyeonseok@gmail.com>
2017-12-13 02:31:46 +00:00
Abdalrahman Hwoij
1729b30f89 Pontoon: Update Arabic (ar) localization of Test Pilot: Firefox Send
Localization authors:
- Abdalrahman Hwoij <howij1995@gmail.com>
- Zaid Ibhais <s-e-7-s@hotmail.com>
- صفا الفليج <safa1996alfulaij@gmail.com>
- Khaled Hosny <khaledhosny@eglug.org>
2017-12-12 23:51:37 +00:00
Khaled Hosny
25d6595d5e Pontoon: Update Arabic (ar) localization of Test Pilot: Firefox Send
Localization authors:
- صفا الفليج <safa1996alfulaij@gmail.com>
- Khaled Hosny <khaledhosny@eglug.org>
2017-12-12 23:31:40 +00:00
Michal Stanke
3b31b9d65b Pontoon: Update Czech (cs) localization of Test Pilot: Firefox Send
Localization authors:
- Filip Hruška <fhr@fhrnet.eu>
- Michal Stanke <mstanke@mozilla.cz>
2017-12-12 20:11:29 +00:00
eljuno
e9e64fed3f Pontoon: Update Indonesian (id) localization of Test Pilot: Firefox Send
Localization authors:
- Rahmat Subekti <rahmatsubekti@live.com>
- eljuno <eljunotrie_anggoro@yahoo.co.id>
- Kiki <kelimutu.rizki@gmail.com>
2017-12-11 21:00:31 +00:00
Mozilla Pontoon
3b88ea9b1c Pontoon: Update Danish (da) localization of Test Pilot: Firefox Send 2017-12-11 20:59:57 +00:00
Emin Mastizada
623f76fa6c Pontoon: Update Azerbaijani (az) localization of Test Pilot: Firefox Send
Localization authors:
- Emin Mastizada <emin@mastizada.com>
2017-12-11 20:59:37 +00:00
ybouhamam
19efcb1a0d Pontoon: Update Kabyle (kab) localization of Test Pilot: Firefox Send
Localization authors:
- ybouhamam <ybouhamam@gmail.com>
2017-12-10 09:11:16 +00:00
Besnik Bleta
31c8916622 Pontoon: Update Albanian (sq) localization of Test Pilot: Firefox Send
Localization authors:
- Besnik Bleta <besnik@programeshqip.org>
2017-12-09 17:11:48 +00:00
Jim Spentzos
7a0b189a1d Pontoon: Update Greek (el) localization of Test Pilot: Firefox Send
Localization authors:
- Jim Spentzos <jamesspentzos@hotmail.com>
2017-12-09 14:51:13 +00:00
Besnik Bleta
fa0d56d57a Pontoon: Update Albanian (sq) localization of Test Pilot: Firefox Send
Localization authors:
- Besnik Bleta <besnik@programeshqip.org>
2017-12-09 11:51:15 +00:00
Besnik Bleta
85670bbc6a Pontoon: Update Albanian (sq) localization of Test Pilot: Firefox Send
Localization authors:
- Besnik Bleta <besnik@programeshqip.org>
2017-12-09 11:31:30 +00:00
Besnik Bleta
fc9a85b6ad Pontoon: Update Albanian (sq) localization of Test Pilot: Firefox Send
Localization authors:
- Besnik Bleta <besnik@programeshqip.org>
2017-12-09 11:10:46 +00:00
Besnik Bleta
8760b132da Pontoon: Update Albanian (sq) localization of Test Pilot: Firefox Send
Localization authors:
- Besnik Bleta <besnik@programeshqip.org>
2017-12-09 10:51:01 +00:00
Breana Gonzales
d7084829c3 Pontoon: Update Spanish (Mexico) (es-MX) localization of Test Pilot: Firefox Send
Localization authors:
- Breana Gonzales <breanajones@hotmail.com>
2017-12-09 01:10:56 +00:00
Uccen Marzuq
243d72eed5 Pontoon: Update Kabyle (kab) localization of Test Pilot: Firefox Send
Localization authors:
- Uccen Marzuq <merzouk.ouchene@laposte.net>
2017-12-08 21:51:05 +00:00
Danny Coates
aa60e97d5d Merge pull request #667 from claudijd/remove_prod_as_default_env
Make develop the default NODE_ENV
2017-12-08 13:11:11 -08:00
Jonathan Claudius
4ae12db99c Make develop the default NODE_ENV 2017-12-08 16:04:26 -05:00
Andreas Pettersson
98ad058e2e Pontoon: Update Swedish (sv-SE) localization of Test Pilot: Firefox Send
Localization authors:
- Andreas Pettersson <az@kth.se>
2017-12-08 20:11:14 +00:00
Andreas Pettersson
58cc381abf Pontoon: Update Swedish (sv-SE) localization of Test Pilot: Firefox Send
Localization authors:
- Andreas Pettersson <az@kth.se>
2017-12-08 18:10:47 +00:00
17 changed files with 659 additions and 76 deletions

View File

@@ -1,26 +1,45 @@
const { MessageContext } = require('fluent');
const fs = require('fs');
function toJSON(map) {
return JSON.stringify(Array.from(map));
}
function merge(m1, m2) {
const result = new Map(m1);
for (const [k, v] of m2) {
result.set(k, v);
}
return result;
}
module.exports = function(source) {
const localeExp = this.options.locale || /([^/]+)\/[^/]+\.ftl$/;
const result = localeExp.exec(this.resourcePath);
const locale = result && result[1];
// pre-parse the ftl
const context = new MessageContext(locale);
context.addMessages(source);
if (!locale) {
throw new Error(`couldn't find locale in: ${this.resourcePath}`);
}
// load default language and "merge" contexts
// TODO: make this configurable
const en_ftl = fs.readFileSync(
require.resolve('../public/locales/en-US/send.ftl'),
'utf8'
);
const en = new MessageContext('en-US');
en.addMessages(en_ftl);
// pre-parse the ftl
const context = new MessageContext(locale);
context.addMessages(source);
const merged = merge(en._messages, context._messages);
return `
module.exports = \`
if (typeof window === 'undefined') {
var fluent = require('fluent');
}
var ctx = new fluent.MessageContext('${locale}', {useIsolating: false});
ctx._messages = new Map(${toJSON(context._messages)});
ctx._messages = new Map(${toJSON(merged)});
function translate(id, data) {
var msg = ctx.getMessage(id);
if (typeof(msg) !== 'string' && !msg.val && msg.attrs) {

View File

@@ -8,6 +8,5 @@ services:
- "1443:1443"
environment:
- REDIS_HOST=redis
- NODE_ENV=production
redis:
image: redis:alpine

485
package-lock.json generated
View File

@@ -191,6 +191,12 @@
"integrity": "sha1-GTxfCoZUGkxm+6Hi3DhYM2LqXo8=",
"dev": true
},
"aproba": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
"dev": true
},
"argparse": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
@@ -350,31 +356,47 @@
"dev": true
},
"autoprefixer": {
"version": "7.2.1",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.1.tgz",
"integrity": "sha512-lTbsa2X03maxG45xCNh30sJaRKDn8JPnanOeQOW3wvD9yPGmIsf041LHqlrZ1lXPF/1M3yTZKXqqYfmxU69xuQ==",
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.3.tgz",
"integrity": "sha512-dqzVGiz3v934+s3YZA6nk7tAs9xuTz5wMJbX1M+L4cY/MTNkOUqP61c1GWkEVlUL/PEy1pKRSCFuoRZrXYx9qA==",
"dev": true,
"requires": {
"browserslist": "2.9.1",
"caniuse-lite": "1.0.30000777",
"browserslist": "2.10.0",
"caniuse-lite": "1.0.30000783",
"normalize-range": "0.1.2",
"num2fraction": "1.2.2",
"postcss": "6.0.14",
"postcss-value-parser": "3.3.0"
},
"dependencies": {
"browserslist": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.10.0.tgz",
"integrity": "sha512-WyvzSLsuAVPOjbljXnyeWl14Ae+ukAT8MUuagKVzIDvwBxl4UAwD1xqtyQs2eWYPGUKMeC3Ol62goqYuKqTTcw==",
"dev": true,
"requires": {
"caniuse-lite": "1.0.30000783",
"electron-to-chromium": "1.3.28"
}
},
"caniuse-lite": {
"version": "1.0.30000777",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000777.tgz",
"integrity": "sha1-McGKSozUl4LrswXI6Kk+azs+TxM=",
"version": "1.0.30000783",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000783.tgz",
"integrity": "sha1-m1SZ+xtQPSNF0SqmuGEoUvQnb/0=",
"dev": true
},
"electron-to-chromium": {
"version": "1.3.28",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.28.tgz",
"integrity": "sha1-jdTmRYCGZE6fnwoc8y4qH53/2e4=",
"dev": true
}
}
},
"aws-sdk": {
"version": "2.162.0",
"resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.162.0.tgz",
"integrity": "sha1-GxYhX8m1mbp80s/nzgUMf5NDgaY=",
"version": "2.171.0",
"resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.171.0.tgz",
"integrity": "sha1-acJWXpjjU9Q3QCR3zDBkoTyu3Jw=",
"requires": {
"buffer": "4.9.1",
"crypto-browserify": "1.0.9",
@@ -1527,6 +1549,27 @@
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
"integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
},
"cacache": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.1.tgz",
"integrity": "sha512-dRHYcs9LvG9cHgdPzjiI+/eS7e1xRhULrcyOx04RZQsszNJXU2SL9CyG60yLnge282Qq5nwTv+ieK2fH+WPZmA==",
"dev": true,
"requires": {
"bluebird": "3.5.1",
"chownr": "1.0.1",
"glob": "7.1.2",
"graceful-fs": "4.1.11",
"lru-cache": "4.1.1",
"mississippi": "1.3.0",
"mkdirp": "0.5.1",
"move-concurrently": "1.0.1",
"promise-inflight": "1.0.1",
"rimraf": "2.6.2",
"ssri": "5.0.0",
"unique-filename": "1.1.0",
"y18n": "3.2.1"
}
},
"call-matcher": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz",
@@ -1739,6 +1782,12 @@
"xtend": "4.0.1"
}
},
"chownr": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
"integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
"dev": true
},
"ci-info": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz",
@@ -2162,20 +2211,52 @@
"integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=",
"dev": true
},
"copy-webpack-plugin": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.2.3.tgz",
"integrity": "sha512-cL/Wl3Y1QmmKThl/mWeGB+HH3YH+25tn8nhqEGsZda4Yn7GqGnDZ+TbeKJ7A6zvrxyNhhuviYAxn/tCyyAqh8Q==",
"copy-concurrently": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
"integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
"dev": true,
"requires": {
"bluebird": "3.5.1",
"glob": "7.1.2",
"aproba": "1.2.0",
"fs-write-stream-atomic": "1.0.10",
"iferr": "0.1.5",
"mkdirp": "0.5.1",
"rimraf": "2.6.2",
"run-queue": "1.0.3"
}
},
"copy-webpack-plugin": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.3.0.tgz",
"integrity": "sha512-5o1/xyWm8OYDmLFKAWMuPU3A/jZ4Z6kZSZGh36KD2XmtxnRa8lQyLx7bCNQm08BPaR/oqUdtJOr9jWfnYINp9g==",
"dev": true,
"requires": {
"cacache": "10.0.1",
"find-cache-dir": "1.0.0",
"globby": "7.1.1",
"is-glob": "4.0.0",
"loader-utils": "0.2.17",
"lodash": "4.17.4",
"minimatch": "3.0.4"
"minimatch": "3.0.4",
"p-limit": "1.1.0",
"pify": "3.0.0",
"serialize-javascript": "1.4.0"
},
"dependencies": {
"globby": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
"integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
"dev": true,
"requires": {
"array-union": "1.0.2",
"dir-glob": "2.0.0",
"glob": "7.1.2",
"ignore": "3.3.7",
"pify": "3.0.0",
"slash": "1.0.0"
}
},
"loader-utils": {
"version": "0.2.17",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
@@ -2597,6 +2678,12 @@
"array-find-index": "1.0.2"
}
},
"cyclist": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
"integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
"dev": true
},
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
@@ -2964,6 +3051,44 @@
"readable-stream": "1.1.14"
}
},
"duplexify": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz",
"integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==",
"dev": true,
"requires": {
"end-of-stream": "1.4.0",
"inherits": "2.0.3",
"readable-stream": "2.3.3",
"stream-shift": "1.0.0"
},
"dependencies": {
"readable-stream": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
"dev": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "1.0.0",
"process-nextick-args": "1.0.7",
"safe-buffer": "5.1.1",
"string_decoder": "1.0.3",
"util-deprecate": "1.0.2"
}
},
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
}
}
},
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -3007,6 +3132,15 @@
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
"integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA="
},
"end-of-stream": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
"integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
"dev": true,
"requires": {
"once": "1.4.0"
}
},
"enhanced-resolve": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz",
@@ -3204,9 +3338,9 @@
}
},
"eslint": {
"version": "4.12.1",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-4.12.1.tgz",
"integrity": "sha512-28hOYej+NZ/R5H1yMvyKa1+bPlu+fnsIAQffK6hxXgvmXnImos2bA5XfCn5dYv2k2mrKj+/U/Z4L5ICWxC7TQw==",
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-4.13.1.tgz",
"integrity": "sha512-UCJVV50RtLHYzBp1DZ8CMPtRSg4iVZvjgO9IJHIKyWU/AnJVjtdRikoUPLB29n5pzMB7TnsLQWf0V6VUJfoPfw==",
"dev": true,
"requires": {
"ajv": "5.5.0",
@@ -3224,11 +3358,11 @@
"file-entry-cache": "2.0.0",
"functional-red-black-tree": "1.0.1",
"glob": "7.1.2",
"globals": "11.0.1",
"globals": "11.1.0",
"ignore": "3.3.7",
"imurmurhash": "0.1.4",
"inquirer": "3.3.0",
"is-resolvable": "1.0.0",
"is-resolvable": "1.0.1",
"js-yaml": "3.10.0",
"json-stable-stringify-without-jsonify": "1.0.1",
"levn": "0.3.0",
@@ -3290,9 +3424,9 @@
"dev": true
},
"globals": {
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.0.1.tgz",
"integrity": "sha1-Eqh7sBDlFUOWrMU14eQ/x1Ow5eg=",
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.1.0.tgz",
"integrity": "sha512-uEuWt9mqTlPDwSqi+sHjD4nWU/1N+q0fiWI9T1mZpD2UENqX20CFD5T/ziLZvztPaBKl7ZylUi1q6Qfm7E2CiQ==",
"dev": true
},
"js-yaml": {
@@ -3713,9 +3847,9 @@
}
},
"file-loader": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.5.tgz",
"integrity": "sha512-RzGHDatcVNpGISTvCpfUfOGpYuSR7HSsSg87ki+wF6rw1Hm0RALPTiAdsxAq1UwLf0RRhbe22/eHK6nhXspiOQ==",
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.6.tgz",
"integrity": "sha512-873ztuL+/hfvXbLDJ262PGO6XjERnybJu2gW1/5j8HUfxSiFJI9Hj/DhZ50ZGRUxBvuNiazb/cM2rh9pqrxP6Q==",
"dev": true,
"requires": {
"loader-utils": "1.1.0",
@@ -3837,6 +3971,42 @@
"resolved": "https://registry.npmjs.org/fluent-langneg/-/fluent-langneg-0.1.0.tgz",
"integrity": "sha512-SzRtXNaIcCyRabIpcv+AQd0gn+tXv1wfDDvej3wtBo1/XV0iDnCw5XzbARRRmZMW+IEg+Q26jup6vYgnDam4dg=="
},
"flush-write-stream": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz",
"integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=",
"dev": true,
"requires": {
"inherits": "2.0.3",
"readable-stream": "2.3.3"
},
"dependencies": {
"readable-stream": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
"dev": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "1.0.0",
"process-nextick-args": "1.0.7",
"safe-buffer": "5.1.1",
"string_decoder": "1.0.3",
"util-deprecate": "1.0.2"
}
},
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
}
}
},
"for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
@@ -3919,6 +4089,42 @@
"integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
"dev": true
},
"from2": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
"integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
"dev": true,
"requires": {
"inherits": "2.0.3",
"readable-stream": "2.3.3"
},
"dependencies": {
"readable-stream": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
"dev": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "1.0.0",
"process-nextick-args": "1.0.7",
"safe-buffer": "5.1.1",
"string_decoder": "1.0.3",
"util-deprecate": "1.0.2"
}
},
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
}
}
},
"fs-extra": {
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz",
@@ -3932,6 +4138,18 @@
"rimraf": "2.6.2"
}
},
"fs-write-stream-atomic": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
"integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
"iferr": "0.1.5",
"imurmurhash": "0.1.4",
"readable-stream": "1.1.14"
}
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -5524,6 +5742,12 @@
"resolved": "https://registry.npmjs.org/ienoopen/-/ienoopen-1.0.0.tgz",
"integrity": "sha1-NGpCj0dKrI9QzzeE6i0PFvYr2ms="
},
"iferr": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
"integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
"dev": true
},
"ignore": {
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz",
@@ -5954,13 +6178,10 @@
"dev": true
},
"is-resolvable": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz",
"integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=",
"dev": true,
"requires": {
"tryit": "1.0.3"
}
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.1.tgz",
"integrity": "sha512-y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g==",
"dev": true
},
"is-stream": {
"version": "1.1.0",
@@ -7271,6 +7492,24 @@
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
},
"mississippi": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/mississippi/-/mississippi-1.3.0.tgz",
"integrity": "sha1-0gFYPrEjJ+PFwWQqQEqcrPlONPU=",
"dev": true,
"requires": {
"concat-stream": "1.6.0",
"duplexify": "3.5.1",
"end-of-stream": "1.4.0",
"flush-write-stream": "1.0.2",
"from2": "2.3.0",
"parallel-transform": "1.1.0",
"pump": "1.0.3",
"pumpify": "1.3.5",
"stream-each": "1.2.2",
"through2": "2.0.3"
}
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
@@ -7368,6 +7607,20 @@
"moment": "2.19.3"
}
},
"move-concurrently": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
"integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
"dev": true,
"requires": {
"aproba": "1.2.0",
"copy-concurrently": "1.0.5",
"fs-write-stream-atomic": "1.0.10",
"mkdirp": "0.5.1",
"rimraf": "2.6.2",
"run-queue": "1.0.3"
}
},
"mozlog": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/mozlog/-/mozlog-2.2.0.tgz",
@@ -8042,6 +8295,43 @@
"integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
"dev": true
},
"parallel-transform": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
"integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
"dev": true,
"requires": {
"cyclist": "0.2.2",
"inherits": "2.0.3",
"readable-stream": "2.3.3"
},
"dependencies": {
"readable-stream": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
"dev": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "1.0.0",
"process-nextick-args": "1.0.7",
"safe-buffer": "5.1.1",
"string_decoder": "1.0.3",
"util-deprecate": "1.0.2"
}
},
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
}
}
},
"param-case": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
@@ -9818,9 +10108,9 @@
"dev": true
},
"prettier": {
"version": "1.8.2",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.8.2.tgz",
"integrity": "sha512-fHWjCwoRZgjP1rvLP7OGqOznq7xH1sHMQUFLX8qLRO79hI57+6xbc5vB904LxEkCfgFgyr3vv06JkafgCSzoZg==",
"version": "1.9.2",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.9.2.tgz",
"integrity": "sha512-piXx9N2WT8hWb7PBbX1glAuJVIkEyUV9F5fMXFINpZ0x3otVOFKKeGmeuiclFJlP/UrgTckyV606VjH2rNK4bw==",
"dev": true
},
"pretty-format": {
@@ -9874,6 +10164,12 @@
"integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=",
"dev": true
},
"promise-inflight": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
"integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
"dev": true
},
"proxy-addr": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz",
@@ -9936,6 +10232,27 @@
"randombytes": "2.0.5"
}
},
"pump": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
"integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
"dev": true,
"requires": {
"end-of-stream": "1.4.0",
"once": "1.4.0"
}
},
"pumpify": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.3.5.tgz",
"integrity": "sha1-G2ccYZlAq8rqwK0OOjwWS+dgmTs=",
"dev": true,
"requires": {
"duplexify": "3.5.1",
"inherits": "2.0.3",
"pump": "1.0.3"
}
},
"punycode": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
@@ -10051,9 +10368,9 @@
"integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
},
"raven": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/raven/-/raven-2.2.1.tgz",
"integrity": "sha1-V8f75oqAFH7FJ97z18AVdc+Uj+M=",
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/raven/-/raven-2.3.0.tgz",
"integrity": "sha1-lvFTRr2qQzs7bUcTCARQYVWDPWk=",
"requires": {
"cookie": "0.3.1",
"lsmod": "1.0.0",
@@ -10075,9 +10392,9 @@
}
},
"raven-js": {
"version": "3.20.1",
"resolved": "https://registry.npmjs.org/raven-js/-/raven-js-3.20.1.tgz",
"integrity": "sha512-Wr973Ipmd+dWUPQ6mSru/gyteavriEyP6G3iDZ2jpI3sBAWejtVtoXO5BHujEWB1z+/dqCLn+Zezgdc30xZcVA==",
"version": "3.21.0",
"resolved": "https://registry.npmjs.org/raven-js/-/raven-js-3.21.0.tgz",
"integrity": "sha512-6/DICF3ndYy1mxli88NG1wVtwGnzyalZZVNf/qQeiCDpNKJIyY5bsGZ2GAGcUE+nWg+9G3tQ1KL/UbG4U6vNBA==",
"dev": true
},
"raw-body": {
@@ -10663,6 +10980,15 @@
"is-promise": "2.1.0"
}
},
"run-queue": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
"integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
"dev": true,
"requires": {
"aproba": "1.2.0"
}
},
"rx-lite": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
@@ -10797,6 +11123,12 @@
}
}
},
"serialize-javascript": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz",
"integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=",
"dev": true
},
"serve-index": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
@@ -10901,9 +11233,9 @@
"dev": true
},
"sinon": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/sinon/-/sinon-4.1.2.tgz",
"integrity": "sha512-5uLBZPdCWl59Lpbf45ygKj7Z0LVol+ftBe7RDIXOQV/sF58pcFmbK8raA7bt6eljNuGnvBP+/ZxlicVn0emDjA==",
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/sinon/-/sinon-4.1.3.tgz",
"integrity": "sha512-c7u0ZuvBRX1eXuB4jN3BRCAOGiUTlM8SE3TxbJHrNiHUKL7wonujMOB6Fi1gQc00U91IscFORQHDga/eccqpbw==",
"dev": true,
"requires": {
"diff": "3.2.0",
@@ -11175,6 +11507,15 @@
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
},
"ssri": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-5.0.0.tgz",
"integrity": "sha512-728D4yoQcQm1ooZvSbywLkV1RjfITZXh0oWrhM/lnsx3nAHx7LsRGJWB/YyvoceAYRq98xqbstiN4JBv1/wNHg==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
},
"stack-trace": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
@@ -11242,6 +11583,16 @@
"duplexer": "0.1.1"
}
},
"stream-each": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz",
"integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==",
"dev": true,
"requires": {
"end-of-stream": "1.4.0",
"stream-shift": "1.0.0"
}
},
"stream-http": {
"version": "2.7.2",
"resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz",
@@ -11281,6 +11632,12 @@
}
}
},
"stream-shift": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
"integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
"dev": true
},
"stream-to-observable": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.1.0.tgz",
@@ -11419,7 +11776,7 @@
"integrity": "sha512-v5K6tv+Ky3SoJfNqGOvgzRDLqZV133CZ7Wtu3y5aAGjQHVi+6dixFLgI82VrJZJdC4HwZplafJcRP+4r7EUt5g==",
"dev": true,
"requires": {
"autoprefixer": "7.2.1",
"autoprefixer": "7.2.3",
"balanced-match": "1.0.0",
"chalk": "2.3.0",
"cosmiconfig": "3.1.0",
@@ -11916,12 +12273,6 @@
"integrity": "sha1-qf2LA5Swro//guBjOgo2zK1bX4Y=",
"dev": true
},
"tryit": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz",
"integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=",
"dev": true
},
"tty-browserify": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
@@ -12121,6 +12472,24 @@
"integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
"dev": true
},
"unique-filename": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz",
"integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=",
"dev": true,
"requires": {
"unique-slug": "2.0.0"
}
},
"unique-slug": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz",
"integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=",
"dev": true,
"requires": {
"imurmurhash": "0.1.4"
}
},
"unist-util-find-all-after": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.1.tgz",
@@ -12366,9 +12735,9 @@
}
},
"webpack": {
"version": "3.9.1",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-3.9.1.tgz",
"integrity": "sha512-jONJ0l8nqgiQVkqs15O9TFWLozbFkCgVodVrBXBK/PIBFeGkaOGo30Ov57iQqYRwAWNDM5vyLPZYmAIpPa5QSw==",
"version": "3.10.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz",
"integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==",
"dev": true,
"requires": {
"acorn": "5.2.1",

View File

@@ -43,7 +43,7 @@
"node": ">=8.2.0"
},
"devDependencies": {
"autoprefixer": "^7.2.1",
"autoprefixer": "^7.2.3",
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-plugin-yo-yoify": "^1.0.2",
@@ -52,18 +52,18 @@
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",
"base64-js": "^1.2.1",
"copy-webpack-plugin": "^4.2.3",
"copy-webpack-plugin": "^4.3.0",
"cross-env": "^5.1.1",
"css-loader": "^0.28.7",
"css-mqpacker": "^6.0.1",
"cssnano": "^3.10.0",
"eslint": "^4.12.0",
"eslint": "^4.13.1",
"eslint-plugin-mocha": "^4.11.0",
"eslint-plugin-node": "^5.2.1",
"eslint-plugin-security": "^1.4.0",
"expose-loader": "^0.7.4",
"extract-loader": "^1.0.1",
"file-loader": "^1.1.5",
"file-loader": "^1.1.6",
"fluent-intl-polyfill": "^0.1.0",
"git-rev-sync": "^1.9.1",
"github-changes": "^1.1.1",
@@ -74,27 +74,27 @@
"nanobus": "^4.3.1",
"npm-run-all": "^4.1.2",
"postcss-loader": "^2.0.9",
"prettier": "^1.8.2",
"prettier": "^1.9.2",
"proxyquire": "^1.8.0",
"raven-js": "^3.20.1",
"raven-js": "^3.21.0",
"redis-mock": "^0.20.0",
"require-from-string": "^2.0.1",
"rimraf": "^2.6.2",
"selenium-webdriver": "^3.6.0",
"sinon": "^4.1.2",
"sinon": "^4.1.3",
"string-hash": "^1.1.3",
"stylelint-config-standard": "^17.0.0",
"stylelint-no-unsupported-browser-features": "^1.0.1",
"supertest": "^3.0.0",
"testpilot-ga": "^0.3.0",
"val-loader": "^1.1.0",
"webpack": "^3.8.1",
"webpack": "^3.10.0",
"webpack-dev-server": "2.9.1",
"webpack-manifest-plugin": "^1.3.2",
"webpack-unassert-loader": "^1.2.0"
},
"dependencies": {
"aws-sdk": "^2.162.0",
"aws-sdk": "^2.171.0",
"body-parser": "^1.18.2",
"choo": "^6.6.0",
"cldr-core": "^32.0.0",
@@ -106,7 +106,7 @@
"helmet": "^3.9.0",
"mkdirp": "^0.5.1",
"mozlog": "^2.2.0",
"raven": "^2.2.1",
"raven": "^2.3.0",
"redis": "^2.8.0"
},
"availableLanguages": [

View File

@@ -11,7 +11,10 @@ uploadPageBrowseButton = اختر ملفّا على حاسوبك
.title = اختر ملفّا على حاسوبك
uploadPageBrowseButton1 = اختر ملفّا لرفعه
uploadPageMultipleFilesAlert = رفع عدة ملفات (أو رفع مجلد) ليس مدعوما حاليا.
uploadPageBrowseButtonTitle = ارفع ملفًا
uploadingPageProgress = يرفع { $filename } ({ $size })
importingFile = يستورد…
verifyingFile = يتحقق…
encryptingFile = يعمّي…
decryptingFile = يفك التعمية…
notifyUploadDone = انتهى الرفع.
@@ -21,8 +24,27 @@ uploadingPageCancel = ألغِ الرفع
uploadCancelNotification = أُلغي الرفع.
uploadingPageLargeFileMessage = هذا الملف كبير الحجم وسيأخذ رفعه وقتا. انتظر رجاءً.
uploadingFileNotification = أعلِمني عندما يكتمل الرفع.
uploadSuccessConfirmHeader = جاهز للإرسال
uploadSvgAlt
.alt = ارفع
uploadSuccessTimingHeader = ستنتهي صلاحية الرابط الذي يشير إلى الملف في حال: نُزِّل لأول مرة، أو مرّ ٢٤ ساعة على رفعه.
expireInfo = ستنتهي صلاحية رابط الملف بعد { $downloadCount } أو { $timespan }.
downloadCount = { $num ->
[zero] لا تنزيلات
[one] تنزيل واحد
[two] تنزيلين
[few] { $num } تنزيلات
[many] { $num } تنزيلًا
*[other] { $num } تنزيل
}
timespanHours = { $num ->
[zero] أقل من ساعة
[one] ساعة
[two] ساعتين
[few] { $num } ساعات
[many] { $num } ساعة
*[other] { $num } ساعة
}
copyUrlFormLabelWithName = انسخ الرابط وشاركه لإرسال الملف: { $filename }
copyUrlFormButton = انسخ إلى الحافظة
.title = انسخ إلى الحافظة
@@ -35,8 +57,10 @@ sendAnotherFileLink = أرسل ملفّا آخر
downloadAltText
.alt = نزّل
downloadFileName = نزّل { $filename }
downloadFileSize = ({ $size })
unlockInputLabel = أدخل كلمة السر
unlockInputPlaceholder = كلمة السر
unlockButtonLabel = افتح القفل
downloadFileTitle = نزِّل الملف المعمّى
// Firefox Send is a brand name and should not be localized.
downloadMessage = يُرسل إليك صديقك ملفا عبر «فَيَرفُكس سِنْد»، وهي خدمة تتيح لك مشاركة الملفات عبر رابط آمن وخاص ومعمّى، حيث تنتهي صلاحياتها تلقائيا لتضمن عدم بقاء ما ترسله إلى الأبد.
@@ -49,6 +73,7 @@ downloadFinish = اكتمل التنزيل
fileSizeProgress = ({ $partialSize } من أصل { $totalSize })
// Firefox Send is a brand name and should not be localized.
sendYourFilesLink = جرِّب «فَيَرفُكس سِنْد»
downloadingPageProgress = ينزّل { $filename } ({ $size })
downloadingPageMessage = رجاء أبقِ هذا اللسان مفتوحا حتى نجلب الملف ونفك تعميته.
errorAltText
.alt = خطأ أثناء الرفع
@@ -56,14 +81,21 @@ errorPageHeader = حدث خطب ما.
errorPageMessage = حدث خطب ما أثناء رفع الملف.
errorPageLink = أرسل ملفا آخر
fileTooBig = حجم الملف كبير للغاية لرفعه. يجب أن يكون أصغر من { $size }.
linkExpiredAlt = انتهت صلاحية الرابط
expiredPageHeader = انتهت صلاحية هذا الرابط أو لم يكن موجودا في المقام الأول!
notSupportedHeader = متصفحك غير مدعوم.
// Firefox Send is a brand name and should not be localized.
notSupportedDetail = للأسف فإن متصفحك لا يدعم تقنية الوِب التي يعتمد عليها «فَيَرفُكس سِنْد». عليك تجربة متصفح آخر، ونحن ننصحك بِفَيَرفُكس!
notSupportedLink = لماذا متصفحي غير مدعوم؟
notSupportedOutdatedDetail = للأسف فإن إصدارة فَيَرفُكس هذه لا تدعم تقنية الوِب التي يعتمد عليها «فَيَرفُكس سِنْد». عليك تحديث متصفحك.
updateFirefox = حدّث فَيَرفُكس
downloadFirefoxButtonSub = تنزيل مجاني
uploadedFile = ملف
copyFileList = انسخ الرابط
// expiryFileList is used as a column header
expiryFileList = ينتهي في
deleteFileList = احذف
nevermindButton = لا بأس
legalHeader = الشروط والخصوصية
deletePopupText = أأحذف هذا الملف؟
deletePopupYes = نعم
@@ -72,9 +104,15 @@ deleteButtonHover
.title = احذف
copyUrlHover
.title = انسخ الرابط
footerLinkLegal = القانونية
// Test Pilot is a proper name and should not be localized.
footerLinkAbout = حول الاختبار التجريبي
footerLinkPrivacy = الخصوصية
footerLinkTerms = الشروط
footerLinkCookies = الكعكات
requirePasswordCheckbox = اطلب كلمة سر لتنزيل هذا الملف
addPasswordButton = أضِف كلمة سر
passwordTryAgain = كلمة السر خاطئة. أعِد المحاولة.
// This label is followed by the password needed to download a file
passwordResult = كلمة السر: { $password }
reportIPInfringement = أبلغ عن انتهاك للملكية الفكرية

View File

@@ -86,4 +86,3 @@ footerLinkTerms = Şərtlər
footerLinkCookies = Çərəzlər
requirePasswordCheckbox = Bu faylı endirmək üçün parol tələb et
addPasswordButton = Parol əlavə et
incorrectPassword = Xətalı parol. Təkrar yoxlayın.

View File

@@ -95,3 +95,4 @@ addPasswordButton = Dodaj lozinku
passwordTryAgain = Netačna lozinka. Pokušajte ponovo.
// This label is followed by the password needed to download a file
passwordResult = Lozinka: { $password }
reportIPInfringement = Prijavite IP prekršaj

View File

@@ -25,6 +25,12 @@ uploadingFileNotification = Upozornit, až bude nahrávání dokončeno.
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 ->
[one] jednom stažení
[few] { $num } staženích
*[other] { $num } staženích
}
timespanHours = { $num ->
[one] hodina
[few] hodiny
@@ -94,3 +100,4 @@ addPasswordButton = Přidat heslo
passwordTryAgain = Špatné heslo. Zkuste to znovu.
// This label is followed by the password needed to download a file
passwordResult = Heslo: { $password }
reportIPInfringement = Nahlásit porušení autorských práv

View File

View File

@@ -25,6 +25,10 @@ uploadingFileNotification = Ειδοποίηση όταν ολοκληρωθεί
uploadSuccessConfirmHeader = Έτοιμο για αποστολή
uploadSvgAlt = Μεταφόρτωση
uploadSuccessTimingHeader = Ο σύνδεσμος του αρχείου σας θα λήξει έπειτα από 1 λήψη ή 24 ώρες.
timespanHours = { $num ->
[one] 1 ώρα
*[other] { $num } ώρες
}
copyUrlFormLabelWithName = Αντιγράψτε και μοιραστείτε τον σύνδεσμο για αποστολή του αρχείου σας : { $filename }
copyUrlFormButton = Αντιγραφή στο πρόχειρο
copiedUrl = Αντιγράφτηκε!
@@ -86,4 +90,6 @@ footerLinkTerms = Όροι
footerLinkCookies = Cookies
requirePasswordCheckbox = Απαίτηση κωδικού πρόσβασης για λήψη του αρχείου
addPasswordButton = Προσθήκη κωδικού πρόσβασης
incorrectPassword = Λάθος κωδικός πρόσβασης. Προσπάθεια ξανά;
passwordTryAgain = Λάθος κωδικός πρόσβασης. Δοκιμάστε ξανά.
// This label is followed by the password needed to download a file
passwordResult = Κωδικός πρόσβασης: { $password }

View File

@@ -97,3 +97,4 @@ addPasswordButton = Agregar contraseña
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

View File

@@ -86,4 +86,3 @@ footerLinkTerms = Ketentuan
footerLinkCookies = Kuki
requirePasswordCheckbox = Membutuhkan sandi untuk mengunduh berkas ini
addPasswordButton = Tambahkan Sandi
incorrectPassword = Sandi salah. Coba lagi?

View File

@@ -25,6 +25,15 @@ uploadingFileNotification = Lɣu-yid ticki yemmed usali.
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 ->
[one] 1 usider
*[other] { $num } isidar
}
timespanHours = { $num ->
[one] 1 usrag
*[other] { $num } isragen
}
copyUrlFormLabelWithName = Nɣel sakin Bḍu aseɣwen akken ad tazneḍ afaylu-ik: { $filename }
copyUrlFormButton = Sers ɣef afus
copiedUrl = Yenɣel!
@@ -87,3 +96,6 @@ footerLinkCookies = Inagan n tuqqna
requirePasswordCheckbox = YEsra awal uffir akken ad isider afaylu-agi
addPasswordButton = rnu awal uffir
passwordTryAgain = Yir awal uffir. Ɛreḍ tikelt nniḍen.
// This label is followed by the password needed to download a file
passwordResult = Awal uffir: { $password }
reportIPInfringement = Neqqes akukel n IP

View File

@@ -26,6 +26,9 @@ uploadingFileNotification = 업로드가 완료되면 알림을 표시해 주세
uploadSuccessConfirmHeader = 보낼 준비 완료
uploadSvgAlt = 업로드
uploadSuccessTimingHeader = 이 파일의 링크는 한 번의 다운로드 후 또는 24시간이 지난 뒤에 만료됩니다.
expireInfo = 이 파일의 링크는 { $downloadCount }나 { $timespan } 후에 만료됩니다.
downloadCount = 1 다운로드
timespanHours = 1 시간
copyUrlFormLabelWithName = 파일을 보내기 위해 이 링크를 복사하고 공유하세요: { $filename }
copyUrlFormButton = 클립보드에 복사
copiedUrl = 복사 완료!
@@ -90,3 +93,4 @@ addPasswordButton = 비밀번호 추가
passwordTryAgain = 비밀번호가 맞지 않습니다. 다시 시도해 주세요.
// This label is followed by the password needed to download a file
passwordResult = 비밀번호: { $password }
reportIPInfringement = 지적 재산권 침해 신고

View File

@@ -3,8 +3,10 @@ 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ță.
uploadPageLearnMore = Află mai multe
uploadPageDropMessage = Aruncă 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.
uploadPageBrowseButton1 = Selectează un fișier pentru încărcare
uploadPageMultipleFilesAlert = Încărcarea mai multor fișiere deodată sau a dosarelor nu este suportată.
@@ -23,6 +25,14 @@ 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 =
timespanHours = { $num ->
[one] 1 oră
[few] ore
*[other] de ore
}
copyUrlFormLabelWithName = Copiază și împărtășește linkul de la fișierul de trimis: { $filename }
copyUrlFormButton = Copiază în clipboard
copiedUrl = Copiat!
deleteFileButton = Șterge fișierul
@@ -35,6 +45,8 @@ unlockInputLabel = Introdu parola
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.
// Text and title used on the download link/button (indicates an action).
downloadButtonLabel = Descarcă
downloadNotification = Descărcarea s-a încheiat.
@@ -44,6 +56,7 @@ fileSizeProgress = ({ $partialSize } din { $totalSize })
// Firefox Send is a brand name and should not be localized.
sendYourFilesLink = Încearcă Firefox Send
downloadingPageProgress = Se descarcă { $filename } ({ $size })
downloadingPageMessage = Te rugăm să păstrezi această file deschisă în timp ce preluăm fișierul și îl decriptăm.
errorAltText = Eroare la încărcare
errorPageHeader = Ceva a mers prost!
errorPageMessage = A apărut o eroare la încărcarea fișierului.
@@ -52,7 +65,10 @@ fileTooBig = Acest fișier este prea mare. 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!
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.
updateFirefox = Actualizează Firefox
downloadFirefoxButtonSub = Descărcare gratuită
uploadedFile = Fișier
@@ -62,6 +78,8 @@ 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?
deletePopupYes = Da
deletePopupCancel = Renunță
@@ -73,4 +91,9 @@ footerLinkAbout = Despre Test Pilot
footerLinkPrivacy = Confidențialitate
footerLinkTerms = Termeni
footerLinkCookies = Cookie-uri
requirePasswordCheckbox = Este necesară o parolă pentru a descărca acest fișier
addPasswordButton = Adaugă parolă
passwordTryAgain = Parola este incorectă. Încearcă din nou.
// This label is followed by the password needed to download a file
passwordResult = Parola: { $password }
reportIPInfringement = Raportează încălcarea proprietății intelectuale

101
public/locales/sq/send.ftl Normal file
View File

@@ -0,0 +1,101 @@
// Firefox Send is a brand name and should not be localized.
title = Firefox Send
siteSubtitle = eksperiment web
siteFeedback = Përshtypje
uploadPageHeader = Shkëmbim Privat, i Fshehtëzuar, Kartelash
uploadPageExplainer = Dërgoni kartela përmes një lidhjeje të parrezik, private dhe të fshehtëzuar, që skadon automatikisht për të garantuar që gjërat tuaja nuk mbesin në internet përgjithmonë.
uploadPageLearnMore = Mësoni më tepër
uploadPageDropMessage = Që të fillojë ngarkimi, hidheni kartelën tuaj këtu
uploadPageSizeMessage = Për ecurinë më të qëndrueshme, më e mira është ti mbani kartelat tuaja nën 1GB
uploadPageBrowseButton = Përzgjidhni një kartelë nga kompjuteri juaj
uploadPageBrowseButton1 = Përzgjidhni një kartelë për ngarkim
uploadPageMultipleFilesAlert = Ngarkimi i shumë kartelave njëherësh, ose i një dosjeje, hëpërhë nuk mbulohen.
uploadPageBrowseButtonTitle = Ngarkoje kartelën
uploadingPageProgress = Po ngarkohet { $filename } ({ $size })
importingFile = Po importohet…
verifyingFile = Po verifikohet…
encryptingFile = Po fshehtëzohet…
decryptingFile = Po shfshehtëzohet…
notifyUploadDone = Ngarkimi juaj përfundoi.
uploadingPageMessage = Do të jeni në gjendje të caktoni parametra skadimi sapo kartela juaj të jetë ngarkuar.
uploadingPageCancel = Anuloje ngarkimin
uploadCancelNotification = Ngarkimi juaj u anulua.
uploadingPageLargeFileMessage = Kjo kartelë është e madhe dhe mund të dojë ca kohë të ngarkohet. Rrini këtu!
uploadingFileNotification = Njoftomë kur të jetë plotësuar ngarkimi .
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 ->
[one] 1 shkarkimi
*[other] { $num } shkarkimesh
}
timespanHours = { $num ->
[one] 1 ore
*[other] { $num } orësh
}
copyUrlFormLabelWithName = Kopjojeni dhe jepuani të tjerëve lidhje që të dërgoni kartelën tuaj: { $filename }
copyUrlFormButton = Kopjoje te e papastra
copiedUrl = U kopjua!
deleteFileButton = Fshije kartelën
sendAnotherFileLink = Dërgoni një kartelë tjetër
// Alternative text used on the download link/button (indicates an action).
downloadAltText = Shkarkoje
downloadFileName = Shkarkoje { $filename }
downloadFileSize = ({ $size })
unlockInputLabel = Jepni Fjalëkalimin
unlockInputPlaceholder = Fjalëkalim
unlockButtonLabel = Zhbllokoje
downloadFileTitle = Shkarko Kartelën e Fshehtëzuar
// Firefox Send is a brand name and should not be localized.
downloadMessage = Shoku juaj po ju dërgon një kartelë me Firefox Send, një shërbim që ju lejon të shkëmbeni kartela përmes një lidhjeje të parrezik, private, dhe të fshehtëzuar, që skadon automatikisht, për të garantuar që gjërat tuaja të mos mbeten në internet përgjithmonë.
// Text and title used on the download link/button (indicates an action).
downloadButtonLabel = Shkarkoje
downloadNotification = Shkarkimi juaj u plotësua.
downloadFinish = Shkarkim i Plotësuar
// This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
fileSizeProgress = ({ $partialSize } nga { $totalSize }) gjithsej
// Firefox Send is a brand name and should not be localized.
sendYourFilesLink = Provoni Firefox Send
downloadingPageProgress = Po shkarkohet { $filename } ({ $size })
downloadingPageMessage = Ju lutemi, lëreni hapur këtë skedë ndërkohë që ne sjellim dhe shfshehtëzojmë kartelën tuaj.
errorAltText = Gabim ngarkimi
errorPageHeader = Diç shkoi ters!
errorPageMessage = Pati një gabim gjatë ngarkimit të kartelës.
errorPageLink = Dërgoni një kartelë tjetër
fileTooBig = Kjo kartelë është shumë e madhe për ngarkim. Do të duhej të ishte më pak se { $size }.
linkExpiredAlt = Lidhja skadoi
expiredPageHeader = Kjo lidhje ka skaduar ose ska ekzistuar kurrë!
notSupportedHeader = Shfletuesi juaj nuk mbulohet.
// Firefox Send is a brand name and should not be localized.
notSupportedDetail = Mjerisht, ky shfletues nuk mbulon teknologjinë web mbi të cilën bazohet Firefox Send.Do tju duhet të provoni një shfletues tjetër. Ju këshillojmë Firefox-in!
notSupportedLink = Pse nuk mbulohet ky shfletues?
notSupportedOutdatedDetail = Mjerisht, ky version i Firefox-it nuk e mbulon teknologjinë web mbi të cilën bazohet Firefox Send. Do tju duhet të përditësoni shfletuesin tuaj.
updateFirefox = Përditësojeni Firefox-in
downloadFirefoxButtonSub = Shkarkim Falas
uploadedFile = Kartelë
copyFileList = Kopjo URL-në
// expiryFileList is used as a column header
expiryFileList = Skadon Më
deleteFileList = Fshije
nevermindButton = Sprish punë
legalHeader = Kushte & Privatësi
legalNoticeTestPilot = Firefox Send është një eksperiment Pilot Testesh dhe subjekt i <a>Kushteve të Shërbimit</a> dhe <a>Shënim Privacësie</a> për Pilot Testesh. <a>Këtu</a> mund të mësoni më tepër mbi këtë eksperiment dhe grumbullimit të të dhënave që ai kryen.
legalNoticeMozilla = Përdorimi i sajtit Firefox Send është gjithashtu subjekt i <a>Shënimit Mbi Privatësi Sajtesh</a> të Mozilla-s dhe <a>Kushteve të Përdorimit të Sajtit</a>.
deletePopupText = Të fshihet kjo kartelë?
deletePopupYes = Po
deletePopupCancel = Anuloje
deleteButtonHover = Fshije
copyUrlHover = Kopjoji URL-në
footerLinkLegal = Ligjore
// Test Pilot is a proper name and should not be localized.
footerLinkAbout = Rreth Pilot Testesh
footerLinkPrivacy = Privatësi
footerLinkTerms = Kushte
footerLinkCookies = Cookies
requirePasswordCheckbox = Kërko doemos një fjalëkalim për shkarkim të kësaj kartele
addPasswordButton = Shtoni fjalëkalim
passwordTryAgain = Fjalëkalim i pasaktë. Riprovoni.
// This label is followed by the password needed to download a file
passwordResult = Fjalëkalim: { $password }
reportIPInfringement = Raportoni Cenim IP-je

View File

@@ -26,6 +26,10 @@ 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 ->
[one] 1 nedladdning
*[other] { $num } nedladdningar
}
timespanHours = { $num ->
[one] 1 timme
*[other] { $num } timmar
@@ -94,3 +98,4 @@ addPasswordButton = Lägg till lösenord
passwordTryAgain = Felaktigt lösenord. Försök igen.
// This label is followed by the password needed to download a file
passwordResult = Lösenord: { $password }
reportIPInfringement = Rapportera IP-överträdelse