Compare commits

..

81 Commits

Author SHA1 Message Date
Danny Coates
8b798ce36c v3.0.10 2019-04-17 09:36:34 -07:00
Danny Coates
894ad6cb08 added locales to production 2019-04-17 09:35:50 -07:00
Danny Coates
98c4bd0f50 updated deps 2019-04-17 09:27:50 -07:00
Hyeonseok Shin
898d152810 Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Hyeonseok Shin <hyeonseok@gmail.com>
- 종이상자 <lego37yoon@outlook.com>
2019-04-14 11:11:25 +00:00
Melo46
9c588ed008 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Melo46 <melo@carmu.com>
2019-04-13 22:51:32 +00:00
Danny Coates
1da7e1c112 added overflow-hidden to file input element. fixes #1295 2019-04-11 11:08:48 -07:00
Danny Coates
19d1f8cf80 updated deps 2019-04-11 11:05:40 -07:00
Danny Coates
29f243fdda removed old encryption key implementation 2019-04-11 10:24:29 -07:00
Lasse Liehu
bd58022b08 Pontoon: Update Finnish (fi) localization of Firefox Send
Localization authors:
- Lasse Liehu <lasse.liehu@iki.fi>
2019-04-07 19:52:22 +00:00
Jim Spentzos
a6fa2c642c Pontoon: Update Greek (el) localization of Firefox Send
Localization authors:
- Jim Spentzos <jimspentzos2000@gmail.com>
- merianosnikos <merianosnikos@gmail.com>
2019-04-06 04:53:54 +00:00
Danny Coates
890642fcff Merge pull request #1291 from mozilla/reject-loading-unexpected-urls
Fix #1283 Prevent loading any pages other than our file:/// url resou…
2019-04-05 10:57:03 -07:00
Donovan Preston
74ecb598d2 Fix #1283 Prevent loading any pages other than our file:/// url resources and accounts.firefox.com in the webview
Also, remove debug logs.
2019-04-05 12:18:22 -04:00
Christoph Kührer
48b5d85904 Cleanup Android project (Minor refactorings, etc.) (#1244)
* (Android) Get rid of double bangs by using Kotlin view binding

Instead of holding a nullable reference to the WebView, we are now
accessing the WebView using the view binding utility of Kotlin's
Android Extensions.

Further reading:
https://kotlinlang.org/docs/tutorials/android-plugin.html

* (Android) Enable WebView debugging in debug builds

This enables debugging the app's WebView using Chrome's DevTools.
https://developers.google.com/web/tools/chrome-devtools/remote-debugging/webviews

* (Android) Make MainActivity.kt adhere to common Kotlin conventions

* (Android) Update dependencies and improve formatting of Gradle files

This updates the Kotlin plugin to 1.3.21 and the Gradle plugin to 3.3.2

* (Android) Remove unnecessary ConstraintLayout container

Layout files should generally have as few nested layers as possible,
because every layer affects the performance.

* (Android) Use JSONObject class to construct a JSON string

It is way safer to construct a JSON string using classes that are
meant for doing that, instead of concatenating raw strings.

* (Android) Suppress JavaScript lint warning

* (Android) Use Kotlin string templates instead of concatenating strings

* (Android) Add missing SuppressLint import
2019-04-04 15:25:25 -04:00
Danny Coates
373da3f090 Merge pull request #1290 from mozilla/call-setTranslate-on-android
Call setTranslate on android.
2019-04-04 11:55:55 -07:00
Donovan Preston
4a69ccbe51 Call setTranslate on android. 2019-04-04 14:49:01 -04:00
John Gruen
4c1496e1cd Merge pull request #1288 from SuriyaaKudoIsc/patch-1
Replace title with Firefox Send logo
2019-04-04 19:52:06 +02:00
Danny Coates
0a243dfb52 Merge pull request #1287 from Mozilla-GitHub-Standards/master
Add Mozilla Code of Conduct
2019-04-04 10:17:59 -07:00
Jim Spentzos
79bd847042 Pontoon: Update Greek (el) localization of Firefox Send
Localization authors:
- Jim Spentzos <jimspentzos2000@gmail.com>
- merianosnikos <merianosnikos@gmail.com>
2019-04-03 16:11:43 +00:00
Luis A. Sánchez
2fe5cad9d5 Pontoon: Update Spanish (Mexico) (es-MX) localization of Firefox Send
Localization authors:
- Luis A. Sánchez <lasr21@gmail.com>
2019-04-03 15:11:35 +00:00
Hyeonseok Shin
fbde75fd66 Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Hyeonseok Shin <hyeonseok@gmail.com>
- Native <nativehyun@gmail.com>
2019-04-03 02:32:28 +00:00
Hyeonseok Shin
24167161b1 Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Hyeonseok Shin <hyeonseok@gmail.com>
- Native <nativehyun@gmail.com>
2019-04-03 02:12:51 +00:00
Slimane Selyan AMIRI
eda132832f Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Slimane Selyan AMIRI <slimane.amiri@gmail.com>
2019-04-02 13:51:12 +00:00
Yassine Aït-El-Mouden
4839ff3584 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-04-01 14:31:32 +00:00
Yassine Aït-El-Mouden
de2d11cc59 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-04-01 14:11:22 +00:00
Yassine Aït-El-Mouden
95779b3243 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-04-01 13:51:31 +00:00
Danny Coates
7f76a279c3 fixed L10N_DEV option 2019-03-31 13:04:16 -07:00
Danny Coates
219b1d6806 updated deps 2019-03-31 13:04:16 -07:00
Danny Coates
efea0e5ab0 added gravatar to CSP image-src 2019-03-31 13:04:15 -07:00
Danny Coates
5d19a9d696 fixed dev android for longer file ids 2019-03-31 13:04:15 -07:00
Yassine Aït-El-Mouden
17a12e3194 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-31 01:51:33 +00:00
Yassine Aït-El-Mouden
b71265b0c5 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-31 01:11:08 +00:00
Yassine Aït-El-Mouden
4a62048d64 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-30 22:51:45 +00:00
Suriyaa ✌️️
acd48cc2f5 Replace title with Firefox Send logo 2019-03-30 15:47:34 +01:00
Yassine Aït-El-Mouden
364778c516 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-30 14:31:41 +00:00
Yassine Aït-El-Mouden
d7ca9b4f84 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-30 14:11:54 +00:00
Andreas Pettersson
b6350c787a Pontoon: Update Swedish (sv-SE) localization of Firefox Send
Localization authors:
- Andreas Pettersson <az@kth.se>
2019-03-30 08:31:18 +00:00
Mozilla-GitHub-Standards
ee8a672873 Add Mozilla Code of Conduct file
Fixes #1286.

_(Message COC002)_
2019-03-29 23:15:18 -07:00
Yassine Aït-El-Mouden
67b812a538 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-30 00:31:45 +00:00
Yassine Aït-El-Mouden
c811cbd34e Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-30 00:12:12 +00:00
Slimane Selyan AMIRI
2ed09d1fda Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Slimane Selyan AMIRI <slimane.amiri@gmail.com>
2019-03-29 21:51:42 +00:00
Slimane Selyan AMIRI
557ecb196d Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Slimane Selyan AMIRI <slimane.amiri@gmail.com>
2019-03-29 21:31:36 +00:00
Slimane Selyan AMIRI
88e8a234d6 Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Slimane Selyan AMIRI <slimane.amiri@gmail.com>
2019-03-29 21:12:23 +00:00
Jiri Grönroos
34eb0fce2a Pontoon: Update Finnish (fi) localization of Firefox Send
Localization authors:
- Jiri Grönroos <jiri.gronroos@iki.fi>
2019-03-29 20:11:21 +00:00
Yassine Aït-El-Mouden
995054a2cb Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-29 12:51:50 +00:00
Yassine Aït-El-Mouden
e70161bfb0 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-29 12:31:36 +00:00
Yassine Aït-El-Mouden
ebf62761bc Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-29 11:51:17 +00:00
Yassine Aït-El-Mouden
cf08b03a6b Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-29 11:31:59 +00:00
Besnik Bleta
f3be26d5f5 Pontoon: Update Albanian (sq) localization of Firefox Send
Localization authors:
- Besnik Bleta <besnik@programeshqip.org>
2019-03-29 11:31:56 +00:00
Yassine Aït-El-Mouden
03c68b0c58 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-29 11:11:32 +00:00
Besnik Bleta
59d460e80b Pontoon: Update Albanian (sq) localization of Firefox Send
Localization authors:
- Besnik Bleta <besnik@programeshqip.org>
- wanzhi09 <wanzhi09@gmail.com>
2019-03-29 11:11:30 +00:00
Yassine Aït-El-Mouden
87f947c31d Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-29 00:31:36 +00:00
Yassine Aït-El-Mouden
7ff0a7654c Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-29 00:12:13 +00:00
Yassine Aït-El-Mouden
9f829e8467 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-28 23:51:35 +00:00
Yassine Aït-El-Mouden
b68762da50 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-28 23:31:33 +00:00
Yassine Aït-El-Mouden
caef279fed Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-28 23:12:45 +00:00
Yassine Aït-El-Mouden
0dfda7c610 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-28 18:32:35 +00:00
Yassine Aït-El-Mouden
5c2d9d8673 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-28 18:11:59 +00:00
Slimane Selyan AMIRI
be51ae7ac9 Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Slimane Selyan AMIRI <slimane.amiri@gmail.com>
2019-03-28 14:11:15 +00:00
Ian Neal
1ba6aceb1f Pontoon: Update English (Great Britain) (en-GB) localization of Firefox Send
Localization authors:
- Ian Neal <iann_bugzilla@blueyonder.co.uk>
2019-03-28 09:51:43 +00:00
Jiri Grönroos
0a3c3d8c51 Pontoon: Update Finnish (fi) localization of Firefox Send
Localization authors:
- Jiri Grönroos <jiri.gronroos@iki.fi>
- Lasse Liehu <lasse.liehu@iki.fi>
2019-03-27 22:51:33 +00:00
Danny Coates
38aa460a03 v3.0.9 2019-03-26 10:27:25 -07:00
Danny Coates
58b7a17680 fixed isFile for extended file id size 2019-03-26 09:58:04 -07:00
Danny Coates
1ce115c3e9 updated prod locales 2019-03-26 09:45:35 -07:00
Danny Coates
8cf3b89f91 increase file id to 8 bytes 2019-03-26 09:32:44 -07:00
p.sanroman.bengoetxea
eced5be836 Pontoon: Update Basque (eu) localization of Firefox Send
Localization authors:
- p.sanroman.bengoetxea <p.sanroman.bengoetxea@gmail.com>
- julenx <julenx@gmail.com>
2019-03-24 20:51:38 +00:00
Jiri Grönroos
bb4fa0a75c Pontoon: Update Finnish (fi) localization of Firefox Send
Localization authors:
- Jiri Grönroos <jiri.gronroos@iki.fi>
2019-03-24 18:51:18 +00:00
Jiri Grönroos
98b62cd1c2 Pontoon: Update Finnish (fi) localization of Firefox Send
Localization authors:
- Jiri Grönroos <jiri.gronroos@iki.fi>
2019-03-24 18:12:07 +00:00
Jim Spentzos
62461f50a5 Pontoon: Update Greek (el) localization of Firefox Send
Localization authors:
- Jim Spentzos <jimspentzos2000@gmail.com>
- merianosnikos <merianosnikos@gmail.com>
2019-03-24 16:51:52 +00:00
Марко Костић (Marko Kostić)
1be87a531c Pontoon: Update Serbian (sr) localization of Firefox Send
Localization authors:
- Марко Костић (Marko Kostić) <marko.m.kostic@gmail.com>
2019-03-24 12:12:06 +00:00
Марко Костић (Marko Kostić)
f70caf814b Pontoon: Update Serbian (sr) localization of Firefox Send
Localization authors:
- Марко Костић (Marko Kostić) <marko.m.kostic@gmail.com>
2019-03-24 11:51:41 +00:00
Марко Костић (Marko Kostić)
a9595e501d Pontoon: Update Serbian (sr) localization of Firefox Send
Localization authors:
- Марко Костић (Marko Kostić) <marko.m.kostic@gmail.com>
2019-03-24 11:31:53 +00:00
Melo46
40814207ee Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Melo46 <melo@carmu.com>
2019-03-24 10:11:26 +00:00
Марко Костић (Marko Kostić)
1970a88ece Pontoon: Update Serbian (sr) localization of Firefox Send
Localization authors:
- Марко Костић (Marko Kostić) <marko.m.kostic@gmail.com>
2019-03-24 09:51:37 +00:00
Марко Костић (Marko Kostić)
a6d41e70b2 Pontoon: Update Serbian (sr) localization of Firefox Send
Localization authors:
- Марко Костић (Marko Kostić) <marko.m.kostic@gmail.com>
2019-03-24 09:32:18 +00:00
merianosnikos
549ce3281a Pontoon: Update Greek (el) localization of Firefox Send
Localization authors:
- Jim Spentzos <jimspentzos2000@gmail.com>
- merianosnikos <merianosnikos@gmail.com>
2019-03-22 00:12:17 +00:00
Danny Coates
1ec56df7ad fixed fxa entrypoint param name... 🤦‍♂️ 2019-03-21 09:30:13 -07:00
robbp
c78899c387 Pontoon: Update Romanian (ro) localization of Firefox Send
Localization authors:
- robbp <robbpaun@gmail.com>
2019-03-21 07:32:41 +00:00
Björn I
c76fe3ac96 Pontoon: Update Norwegian Nynorsk (nn-NO) localization of Firefox Send
Localization authors:
- Björn I. <bjorni.svindseth@yahoo.com>
2019-03-20 15:12:08 +00:00
Björn I
49cfd599ec Pontoon: Update Norwegian Nynorsk (nn-NO) localization of Firefox Send
Localization authors:
- Björn I. <bjorni.svindseth@yahoo.com>
2019-03-20 14:51:43 +00:00
dskmori
74c08200ad Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- dskmori <ghoti.fish.dsk@gmail.com>
2019-03-20 02:11:57 +00:00
Breana Gonzales
8cd5839d36 Pontoon: Update Spanish (Mexico) (es-MX) localization of Firefox Send
Localization authors:
- Breana Gonzales <breanajones@hotmail.com>
2019-03-19 14:51:41 +00:00
34 changed files with 2767 additions and 2172 deletions

15
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,15 @@
# Community Participation Guidelines
This repository is governed by Mozilla's code of conduct and etiquette guidelines.
For more details, please read the
[Mozilla Community Participation Guidelines](https://www.mozilla.org/about/governance/policies/participation/).
## How to Report
For more information on how to report violations of the Community Participation Guidelines, please read our '[How to Report](https://www.mozilla.org/about/governance/policies/participation/reporting/)' page.
<!--
## Project Specific Etiquette
In some cases, there will be additional project etiquette i.e.: (https://bugzilla.mozilla.org/page.cgi?id=etiquette.html).
Please update for your project.
-->

View File

@@ -1,4 +1,4 @@
# Firefox Send # [![Firefox Send](./assets/logo.svg)](https://send.firefox.com/)
[![CircleCI](https://img.shields.io/circleci/project/github/mozilla/send.svg)](https://circleci.com/gh/mozilla/send) [![CircleCI](https://img.shields.io/circleci/project/github/mozilla/send.svg)](https://circleci.com/gh/mozilla/send)

View File

@@ -19,6 +19,8 @@ import share from './pages/share';
import preferences from './pages/preferences'; import preferences from './pages/preferences';
import error from './pages/error'; import error from './pages/error';
import { getTranslator } from '../app/locale'; import { getTranslator } from '../app/locale';
import { setTranslate } from '../app/utils';
import { delay } from '../app/utils'; import { delay } from '../app/utils';
if (navigator.userAgent === 'Send Android') { if (navigator.userAgent === 'Send Android') {
@@ -69,6 +71,7 @@ function body(main) {
} }
(async function start() { (async function start() {
const translate = await getTranslator('en-US'); const translate = await getTranslator('en-US');
setTranslate(translate);
const { LIMITS, DEFAULTS } = await getConstants(); const { LIMITS, DEFAULTS } = await getConstants();
app.use(state => { app.use(state => {
state.LIMITS = LIMITS; state.LIMITS = LIMITS;

View File

@@ -1,7 +1,5 @@
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'kotlin-android' apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-android-extensions'
android { android {
@@ -31,7 +29,7 @@ dependencies {
androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.github.delight-im:Android-AdvancedWebView:v3.0.0' implementation 'com.github.delight-im:Android-AdvancedWebView:v3.0.0'
implementation "org.mozilla.components:service-firefox-accounts:${rootProject.ext.android_components_version}" implementation "org.mozilla.components:service-firefox-accounts:$android_components_version"
} }
task generateAndLinkBundle(type: Exec, description: 'Generate the android.js bundle and link it into the assets directory') { task generateAndLinkBundle(type: Exec, description: 'Generate the android.js bundle and link it into the assets directory') {

View File

@@ -1,39 +1,39 @@
package org.mozilla.firefoxsend package org.mozilla.firefoxsend
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import im.delight.android.webview.AdvancedWebView
import android.graphics.Bitmap
import android.content.Intent
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.ComponentName import android.content.ComponentName
import android.content.Intent
import android.graphics.Bitmap
import android.net.Uri import android.net.Uri
import android.webkit.WebView import android.os.Bundle
import android.webkit.WebMessage import android.support.v7.app.AppCompatActivity
import android.util.Log
import android.util.Base64 import android.util.Base64
import android.util.Log
import android.view.View import android.view.View
import android.webkit.ConsoleMessage import android.webkit.*
import android.webkit.JavascriptInterface import im.delight.android.webview.AdvancedWebView
import android.webkit.WebChromeClient import kotlinx.android.synthetic.main.activity_main.*
import mozilla.components.service.fxa.Config import mozilla.components.service.fxa.Config
import mozilla.components.service.fxa.FirefoxAccount import mozilla.components.service.fxa.FirefoxAccount
import mozilla.components.service.fxa.Profile
import mozilla.components.service.fxa.FxaResult import mozilla.components.service.fxa.FxaResult
import org.json.JSONObject
internal class LoggingWebChromeClient : WebChromeClient() { internal class LoggingWebChromeClient : WebChromeClient() {
override fun onConsoleMessage(cm: ConsoleMessage): Boolean { override fun onConsoleMessage(cm: ConsoleMessage): Boolean {
Log.w("CONTENT", String.format("%s @ %d: %s", Log.d(TAG, String.format("%s @ %d: %s",
cm.message(), cm.lineNumber(), cm.sourceId())) cm.message(), cm.lineNumber(), cm.sourceId()))
return true return true
} }
companion object {
private const val TAG = "CONTENT"
}
} }
class WebAppInterface(private val mContext: MainActivity) { class WebAppInterface(private val mContext: MainActivity) {
@JavascriptInterface @JavascriptInterface
fun beginOAuthFlow() { fun beginOAuthFlow() {
mContext.beginOAuthFlow(); mContext.beginOAuthFlow()
} }
@JavascriptInterface @JavascriptInterface
@@ -43,176 +43,184 @@ class WebAppInterface(private val mContext: MainActivity) {
} }
class MainActivity : AppCompatActivity(), AdvancedWebView.Listener { class MainActivity : AppCompatActivity(), AdvancedWebView.Listener {
private var mWebView: AdvancedWebView? = null
private var mToShare: String? = null private var mToShare: String? = null
private var mToCall: String? = null private var mToCall: String? = null
private var mAccount: FirefoxAccount? = null private var mAccount: FirefoxAccount? = null
@SuppressLint("SetJavaScriptEnabled")
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) setContentView(R.layout.activity_main)
// https://developers.google.com/web/tools/chrome-devtools/remote-debugging/webviews WebView.setWebContentsDebuggingEnabled(BuildConfig.DEBUG)
// WebView.setWebContentsDebuggingEnabled(true); // TODO only dev builds webView.apply {
setListener(this@MainActivity, this@MainActivity)
addJavascriptInterface(WebAppInterface(this@MainActivity), JS_INTERFACE_NAME)
setLayerType(View.LAYER_TYPE_HARDWARE, null)
webChromeClient = LoggingWebChromeClient()
mWebView = findViewById<WebView>(R.id.webview) as AdvancedWebView settings.apply {
mWebView!!.setListener(this, this) userAgentString = "Send Android"
mWebView!!.setWebChromeClient(LoggingWebChromeClient()) allowUniversalAccessFromFileURLs = true
mWebView!!.addJavascriptInterface(WebAppInterface(this), "Android") javaScriptEnabled = true
mWebView!!.setLayerType(View.LAYER_TYPE_HARDWARE, null); }
}
val webSettings = mWebView!!.getSettings() val type = intent.type
webSettings.setUserAgentString("Send Android") if (Intent.ACTION_SEND == intent.action && type != null) {
webSettings.setAllowUniversalAccessFromFileURLs(true) if (type == "text/plain") {
webSettings.setJavaScriptEnabled(true)
val intent = getIntent()
val action = intent.getAction()
val type = intent.getType()
if (Intent.ACTION_SEND.equals(action) && type != null) {
if (type.equals("text/plain")) {
val sharedText = intent.getStringExtra(Intent.EXTRA_TEXT) val sharedText = intent.getStringExtra(Intent.EXTRA_TEXT)
Log.w("INTENT", "text/plain " + sharedText) // Log.d(TAG_INTENT, "text/plain $sharedText")
mToShare = "data:text/plain;base64," + Base64.encodeToString(sharedText.toByteArray(), 16).trim() mToShare = "data:text/plain;base64," + Base64.encodeToString(sharedText.toByteArray(), 16).trim()
} else if (type.startsWith("image/")) { } else if (type.startsWith("image/")) {
val imageUri = intent.getParcelableExtra(Intent.EXTRA_STREAM) as Uri val imageUri = intent.getParcelableExtra(Intent.EXTRA_STREAM) as Uri
Log.w("INTENT", "image/ " + imageUri) // Log.d(TAG_INTENT, "image/ $imageUri")
mToShare = "data:text/plain;base64," + Base64.encodeToString(imageUri.path.toByteArray(), 16).trim() mToShare = "data:text/plain;base64," + Base64.encodeToString(imageUri.path.toByteArray(), 16).trim()
} }
} }
mWebView!!.loadUrl("file:///android_asset/android.html") webView.loadUrl("file:///android_asset/android.html")
} }
fun beginOAuthFlow() { fun beginOAuthFlow() {
Config.release().then(fun (value: Config): FxaResult<Unit> { Config.release().then { value ->
mAccount = FirefoxAccount(value, "20f7931c9054d833", "https://send.firefox.com/fxa/android-redirect.html") mAccount = FirefoxAccount(value, "20f7931c9054d833", "https://send.firefox.com/fxa/android-redirect.html")
mAccount?.beginOAuthFlow(arrayOf("profile", "https://identity.mozilla.com/apps/send"), true)?.then(fun (url: String): FxaResult<Unit> { mAccount?.beginOAuthFlow(arrayOf("profile", "https://identity.mozilla.com/apps/send"), true)
Log.w("CONFIG", "GOT A URL " + url) ?.then { url ->
this@MainActivity.runOnUiThread({ // Log.d(TAG_CONFIG, "GOT A URL $url")
mWebView!!.loadUrl(url) this@MainActivity.runOnUiThread {
}) webView.loadUrl(url)
return FxaResult.fromValue(Unit) }
}) FxaResult.fromValue(Unit)
Log.w("CONFIG", "CREATED FIREFOXACCOUNT") }
return FxaResult.fromValue(Unit) // Log.d(TAG_CONFIG, "CREATED FIREFOXACCOUNT")
}) FxaResult.fromValue(Unit)
}
} }
fun shareUrl(url: String) { fun shareUrl(url: String) {
val shareIntent = Intent() val shareIntent = Intent().apply {
shareIntent.action = Intent.ACTION_SEND action = Intent.ACTION_SEND
shareIntent.type = "text/plain" type = "text/plain"
shareIntent.putExtra(Intent.EXTRA_TEXT, url) putExtra(Intent.EXTRA_TEXT, url)
}
val components = arrayOf(ComponentName(applicationContext, MainActivity::class.java))
val chooser = Intent.createChooser(shareIntent, "") val chooser = Intent.createChooser(shareIntent, "")
chooser.putExtra(Intent.EXTRA_EXCLUDE_COMPONENTS, arrayOf(ComponentName(applicationContext, MainActivity::class.java))) .putExtra(Intent.EXTRA_EXCLUDE_COMPONENTS, components)
startActivity(chooser) startActivity(chooser)
} }
@SuppressLint("NewApi")
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
mWebView!!.onResume() webView.onResume()
// ...
} }
@SuppressLint("NewApi")
override fun onPause() { override fun onPause() {
mWebView!!.onPause() webView.onPause()
// ...
super.onPause() super.onPause()
} }
override fun onDestroy() { override fun onDestroy() {
mWebView!!.onDestroy() webView.onDestroy()
// ...
super.onDestroy() super.onDestroy()
} }
override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) { override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) {
super.onActivityResult(requestCode, resultCode, intent) super.onActivityResult(requestCode, resultCode, intent)
mWebView!!.onActivityResult(requestCode, resultCode, intent) webView.onActivityResult(requestCode, resultCode, intent)
// ...
} }
override fun onBackPressed() { override fun onBackPressed() {
if (!mWebView!!.onBackPressed()) { if (!webView.onBackPressed()) {
return return
} }
// ...
super.onBackPressed() super.onBackPressed()
} }
override fun onPageStarted(url: String, favicon: Bitmap?) { override fun onPageStarted(url: String, favicon: Bitmap?) {
if (url.startsWith("https://send.firefox.com/fxa/android-redirect.html")) { if (url.startsWith("https://send.firefox.com/fxa/android-redirect.html")) {
// We load this here so the user doesn't see the android-redirect.html page // We load this here so the user doesn't see the android-redirect.html page
mWebView!!.loadUrl("file:///android_asset/android.html") webView.loadUrl("file:///android_asset/android.html")
val parsed = Uri.parse(url) val uri = Uri.parse(url)
val code = parsed.getQueryParameter("code") uri.getQueryParameter("code")?.let { code ->
val state = parsed.getQueryParameter("state") uri.getQueryParameter("state")?.let { state ->
code?.let { code ->
state?.let { state ->
mAccount?.completeOAuthFlow(code, state)?.whenComplete { info -> mAccount?.completeOAuthFlow(code, state)?.whenComplete { info ->
//displayAndPersistProfile(code, state) mAccount?.getProfile(false)?.then { profile ->
val profile = mAccount?.getProfile(false)?.then(fun (profile: Profile): FxaResult<Unit> { val profileJsonPayload = JSONObject()
val accessToken = info.accessToken .put("accessToken", info.accessToken)
val keys = info.keys .put("keys", info.keys)
val avatar = profile.avatar .put("avatar", profile.avatar)
val displayName = profile.displayName .put("displayName", profile.displayName)
val email = profile.email .put("email", profile.email)
val uid = profile.uid .put("uid", profile.uid).toString()
val toPass = "{\"accessToken\": \"${accessToken}\", \"keys\": '${keys}', \"avatar\": \"${avatar}\", \"displayName\": \"${displayName}\", \"email\": \"${email}\", \"uid\": \"${uid}\"}" mToCall = "finishLogin($profileJsonPayload)"
mToCall = "finishLogin(${toPass})" this@MainActivity.runOnUiThread {
this@MainActivity.runOnUiThread({
// Clear the history so that the user can't use the back button to see broken pages // Clear the history so that the user can't use the back button to see broken pages
// that were inserted into the history by the login process. // that were inserted into the history by the login process.
mWebView!!.clearHistory() webView.clearHistory()
// We also reload this here because we need to make sure onPageFinished runs after mToCall has been set. // We also reload this here because we need to make sure onPageFinished runs after mToCall has been set.
// We can't guarantee that onPageFinished wasn't already called at this point. // We can't guarantee that onPageFinished wasn't already called at this point.
mWebView!!.loadUrl("file:///android_asset/android.html") webView.loadUrl("file:///android_asset/android.html")
}) }
FxaResult.fromValue(Unit)
}
return FxaResult.fromValue(Unit)
})
} }
} }
} }
} }
Log.w("MAIN", "onPageStarted"); if (!url.startsWith("file:///android_asset/") && !url.startsWith("https://accounts.firefox.com/")) {
// Don't allow loading anything other than the app in our webview
// It should be possible to do this with shouldOverrideUrlLoading
// but it didn't seem to be working, so this works as a hack.
webView.loadUrl("file:///android_asset/android.html")
Log.d(TAG_MAIN, "BAD URL " + url)
} else {
// Log.d(TAG_MAIN, "onPageStarted " + url)
}
} }
override fun onPageFinished(url: String) { override fun onPageFinished(url: String) {
Log.w("MAIN", "onPageFinished") // Log.d(TAG_MAIN, "onPageFinished")
if (mToShare != null) { if (mToShare != null) {
Log.w("INTENT", mToShare) // Log.d(TAG_INTENT, mToShare)
mWebView?.postWebMessage(WebMessage(mToShare), Uri.EMPTY) webView.postWebMessage(WebMessage(mToShare), Uri.EMPTY)
mToShare = null mToShare = null
} }
if (mToCall != null) { if (mToCall != null) {
this@MainActivity.runOnUiThread({ this@MainActivity.runOnUiThread {
mWebView?.evaluateJavascript(mToCall, fun (value: String) { webView.evaluateJavascript(mToCall) {
mToCall = null mToCall = null
}) }
}) }
} }
} }
override fun onPageError(errorCode: Int, description: String, failingUrl: String) { override fun onPageError(errorCode: Int, description: String, failingUrl: String) {
Log.w("MAIN", "onPageError " + description) Log.d(TAG_MAIN, "onPageError($errorCode, $description, $failingUrl)")
} }
override fun onDownloadRequested(url: String, suggestedFilename: String, mimeType: String, contentLength: Long, contentDisposition: String, userAgent: String) { override fun onDownloadRequested(url: String,
Log.w("MAIN", "onDownloadRequested") suggestedFilename: String,
mimeType: String,
contentLength: Long,
contentDisposition: String,
userAgent: String) {
// Log.d(TAG_MAIN, "onDownloadRequested")
} }
override fun onExternalPageRequest(url: String) { override fun onExternalPageRequest(url: String) {
Log.w("MAIN", "onExternalPageRequest") // Log.d(TAG_MAIN, "onExternalPageRequest($url)")
} }
companion object {
private const val TAG_MAIN = "MAIN"
private const val TAG_INTENT = "INTENT"
private const val TAG_CONFIG = "CONFIG"
private const val JS_INTERFACE_NAME = "Android"
}
} }

View File

@@ -1,13 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <im.delight.android.webview.AdvancedWebView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/webView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".MainActivity"> tools:context=".MainActivity" />
<im.delight.android.webview.AdvancedWebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.constraint.ConstraintLayout>

View File

@@ -8,20 +8,15 @@ buildscript {
jcenter() jcenter()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:3.3.1' classpath 'com.android.tools.build:gradle:3.3.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.20" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.21"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
} }
} }
allprojects { allprojects {
repositories { repositories {
google() google()
maven { maven { url "https://maven.mozilla.org/maven2" }
url "https://maven.mozilla.org/maven2"
}
jcenter() jcenter()
maven { url "https://jitpack.io" } maven { url "https://jitpack.io" }
} }

View File

@@ -18,23 +18,6 @@ export default class Keychain {
false, false,
['deriveKey'] ['deriveKey']
); );
this.encryptKeyPromise = this.secretKeyPromise.then(function(secretKey) {
return crypto.subtle.deriveKey(
{
name: 'HKDF',
salt: new Uint8Array(),
info: encoder.encode('encryption'),
hash: 'SHA-256'
},
secretKey,
{
name: 'AES-GCM',
length: 128
},
false,
['encrypt', 'decrypt']
);
});
this.metaKeyPromise = this.secretKeyPromise.then(function(secretKey) { this.metaKeyPromise = this.secretKeyPromise.then(function(secretKey) {
return crypto.subtle.deriveKey( return crypto.subtle.deriveKey(
{ {

View File

@@ -286,7 +286,7 @@ module.exports.wip = function(state, emit) {
> >
<input <input
id="file-upload" id="file-upload"
class="opacity-0 w-0 h-0 appearance-none absolute" class="opacity-0 w-0 h-0 appearance-none absolute overflow-hidden"
type="file" type="file"
multiple multiple
onfocus="${focus}" onfocus="${focus}"

View File

@@ -143,7 +143,7 @@ export default class User {
options.flow_begin_time = this.flowBeginTime; options.flow_begin_time = this.flowBeginTime;
} }
if (this.trigger) { if (this.trigger) {
options.endpoint = `send-${this.trigger}`; options.entrypoint = `send-${this.trigger}`;
} }
if (this.utms) { if (this.utms) {
options.utm_campaign = this.utms.campaign || 'none'; options.utm_campaign = this.utms.campaign || 'none';

View File

@@ -25,7 +25,7 @@ function loadShim(polyfill) {
} }
function isFile(id) { function isFile(id) {
return /^[0-9a-fA-F]{10}$/.test(id); return /^[0-9a-fA-F]{10,16}$/.test(id);
} }
function copyToClipboard(str) { function copyToClipboard(str) {

View File

@@ -7,8 +7,8 @@ Send use 128-bit AES-GCM encryption via the [Web Crypto API](https://developer.m
### Uploading ### Uploading
1. A new secret key is generated with `crypto.getRandomValues` 1. A new secret key is generated with `crypto.getRandomValues`
2. The secret key is used to derive 3 more keys via HKDF SHA-256 2. The secret key is used to derive more keys via HKDF SHA-256
- an encryption key for the file (AES-GCM) - a series of encryption keys for the file, via [ECE](https://tools.ietf.org/html/rfc8188) (AES-GCM)
- an encryption key for the file metadata (AES-GCM) - an encryption key for the file metadata (AES-GCM)
- a signing key for request authentication (HMAC SHA-256) - a signing key for request authentication (HMAC SHA-256)
3. The file and metadata are encrypted with their corresponding keys 3. The file and metadata are encrypted with their corresponding keys

3366
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
{ {
"name": "firefox-send", "name": "firefox-send",
"description": "File Sharing Experiment", "description": "File Sharing Experiment",
"version": "3.0.8", "version": "3.0.10",
"author": "Mozilla (https://mozilla.org)", "author": "Mozilla (https://mozilla.org)",
"repository": "mozilla/send", "repository": "mozilla/send",
"homepage": "https://github.com/mozilla/send/", "homepage": "https://github.com/mozilla/send/",
@@ -27,7 +27,7 @@
"test:report": "nyc report --reporter=html", "test:report": "nyc report --reporter=html",
"test-integration": "cross-env NODE_ENV=development wdio test/wdio.docker.conf.js", "test-integration": "cross-env NODE_ENV=development wdio test/wdio.docker.conf.js",
"circleci-test-integration": "cross-env NODE_ENV=development wdio test/wdio.circleci.conf.js", "circleci-test-integration": "cross-env NODE_ENV=development wdio test/wdio.circleci.conf.js",
"start": "npm run clean && cross-env NODE_ENV=development FXA_CLIENT_ID=fced6b5e3f4c66b9 BASE_URL=http://localhost:8080 webpack-dev-server --mode=development", "start": "npm run clean && cross-env NODE_ENV=development L10N_DEV=true FXA_CLIENT_ID=fced6b5e3f4c66b9 BASE_URL=http://localhost:8080 webpack-dev-server --mode=development",
"android": "cross-env ANDROID=1 npm start", "android": "cross-env ANDROID=1 npm start",
"prod": "node server/bin/prod.js" "prod": "node server/bin/prod.js"
}, },
@@ -60,27 +60,27 @@
"node": ">=10.0.0" "node": ">=10.0.0"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.3.4", "@babel/core": "^7.4.3",
"@babel/plugin-proposal-class-properties": "^7.3.4", "@babel/plugin-proposal-class-properties": "^7.4.0",
"@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/preset-env": "^7.3.4", "@babel/preset-env": "^7.4.3",
"@dannycoates/webcrypto-liner": "^0.1.37", "@dannycoates/webcrypto-liner": "^0.1.37",
"@dannycoates/webpack-dev-server": "^3.1.4", "@dannycoates/webpack-dev-server": "^3.1.4",
"@fullhuman/postcss-purgecss": "^1.1.0", "@fullhuman/postcss-purgecss": "^1.1.0",
"@mattiasbuelens/web-streams-polyfill": "0.2.1", "@mattiasbuelens/web-streams-polyfill": "0.2.1",
"asmcrypto.js": "^0.22.0", "asmcrypto.js": "^0.22.0",
"babel-loader": "^8.0.5", "babel-loader": "^8.0.5",
"babel-plugin-istanbul": "^5.1.1", "babel-plugin-istanbul": "^5.1.2",
"base64-js": "^1.3.0", "base64-js": "^1.3.0",
"content-disposition": "^0.5.3", "content-disposition": "^0.5.3",
"copy-webpack-plugin": "^5.0.0", "copy-webpack-plugin": "^5.0.2",
"core-js": "^2.6.5", "core-js": "^3.0.1",
"crc": "^3.8.0", "crc": "^3.8.0",
"cross-env": "^5.2.0", "cross-env": "^5.2.0",
"css-loader": "^2.1.1", "css-loader": "^2.1.1",
"css-mqpacker": "^7.0.0", "css-mqpacker": "^7.0.0",
"cssnano": "^4.1.10", "cssnano": "^4.1.10",
"eslint": "^5.15.1", "eslint": "^5.16.0",
"eslint-plugin-mocha": "^5.3.0", "eslint-plugin-mocha": "^5.3.0",
"eslint-plugin-node": "^8.0.1", "eslint-plugin-node": "^8.0.1",
"eslint-plugin-security": "^1.4.0", "eslint-plugin-security": "^1.4.0",
@@ -95,29 +95,29 @@
"http_ece": "^1.1.0", "http_ece": "^1.1.0",
"husky": "^1.3.1", "husky": "^1.3.1",
"lint-staged": "^8.1.5", "lint-staged": "^8.1.5",
"mocha": "^6.0.2", "mocha": "^6.1.3",
"morgan": "^1.9.1", "morgan": "^1.9.1",
"nanobus": "^4.4.0", "nanobus": "^4.4.0",
"nanohtml": "^1.4.0", "nanohtml": "^1.5.0",
"nanotiming": "^7.3.1", "nanotiming": "^7.3.1",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"nyc": "^13.3.0", "nyc": "^14.0.0",
"postcss-loader": "^3.0.0", "postcss-loader": "^3.0.0",
"postcss-preset-env": "^6.6.0", "postcss-preset-env": "^6.6.0",
"prettier": "^1.16.4", "prettier": "^1.17.0",
"proxyquire": "^2.1.0", "proxyquire": "^2.1.0",
"puppeteer": "1.11.0", "puppeteer": "1.11.0",
"raven-js": "^3.27.0", "raven-js": "^3.27.0",
"raw-loader": "^1.0.0", "raw-loader": "^2.0.0",
"redis-mock": "^0.43.0", "redis-mock": "^0.43.0",
"rimraf": "^2.6.3", "rimraf": "^2.6.3",
"script-loader": "^0.7.2", "script-loader": "^0.7.2",
"sinon": "^7.2.7", "sinon": "^7.3.2",
"string-hash": "^1.1.3", "string-hash": "^1.1.3",
"stylelint": "^9.10.1", "stylelint": "^10.0.1",
"stylelint-config-standard": "^18.2.0", "stylelint-config-standard": "^18.3.0",
"stylelint-no-unsupported-browser-features": "^3.0.2", "stylelint-no-unsupported-browser-features": "^3.0.2",
"svgo": "^1.2.0", "svgo": "^1.2.2",
"svgo-loader": "^2.2.0", "svgo-loader": "^2.2.0",
"tailwindcss": "^0.7.4", "tailwindcss": "^0.7.4",
"val-loader": "^1.1.1", "val-loader": "^1.1.1",
@@ -128,26 +128,26 @@
"wdio-sauce-service": "^0.4.14", "wdio-sauce-service": "^0.4.14",
"wdio-selenium-standalone-service": "0.0.12", "wdio-selenium-standalone-service": "0.0.12",
"wdio-spec-reporter": "^0.1.5", "wdio-spec-reporter": "^0.1.5",
"webdriverio": "^4.14.3", "webdriverio": "^4.14.4",
"webpack": "4.28.4", "webpack": "4.28.4",
"webpack-cli": "^3.2.3", "webpack-cli": "^3.3.0",
"webpack-dev-middleware": "^3.6.1", "webpack-dev-middleware": "^3.6.2",
"webpack-manifest-plugin": "^2.0.4", "webpack-manifest-plugin": "^2.0.4",
"webpack-unassert-loader": "^1.2.0" "webpack-unassert-loader": "^1.2.0"
}, },
"dependencies": { "dependencies": {
"@google-cloud/storage": "^2.4.2", "@google-cloud/storage": "^2.5.0",
"aws-sdk": "^2.417.0", "aws-sdk": "^2.438.0",
"body-parser": "^1.18.3", "body-parser": "^1.18.3",
"choo": "^6.12.1", "choo": "^6.13.3",
"cldr-core": "^34.0.0", "cldr-core": "^35.0.0",
"convict": "^4.4.1", "convict": "^4.4.1",
"express": "^4.16.3", "express": "^4.16.3",
"express-ws": "github:dannycoates/express-ws", "express-ws": "github:dannycoates/express-ws",
"fluent": "^0.11.0", "fluent": "^0.12.0",
"fluent-langneg": "^0.1.1", "fluent-langneg": "^0.1.1",
"fxa-geodb": "^1.0.4", "fxa-geodb": "^1.0.4",
"helmet": "^3.15.1", "helmet": "^3.16.0",
"mkdirp": "^0.5.1", "mkdirp": "^0.5.1",
"mozlog": "^2.2.0", "mozlog": "^2.2.0",
"node-fetch": "^2.3.0", "node-fetch": "^2.3.0",
@@ -155,7 +155,7 @@
"redis": "^2.8.0", "redis": "^2.8.0",
"selenium-standalone": "^6.15.6", "selenium-standalone": "^6.15.6",
"ua-parser-js": "^0.7.19", "ua-parser-js": "^0.7.19",
"websocket-stream": "^5.1.2" "websocket-stream": "^5.4.0"
}, },
"availableLanguages": [ "availableLanguages": [
"en-US", "en-US",
@@ -168,12 +168,14 @@
"da", "da",
"de", "de",
"dsb", "dsb",
"el",
"en-CA", "en-CA",
"en-GB", "en-GB",
"es-AR", "es-AR",
"es-CL", "es-CL",
"es-ES", "es-ES",
"es-MX", "es-MX",
"fi",
"fr", "fr",
"fy-NL", "fy-NL",
"hr", "hr",
@@ -184,6 +186,8 @@
"it", "it",
"ja", "ja",
"ka", "ka",
"kab",
"ko",
"lt", "lt",
"nl", "nl",
"nn-NO", "nn-NO",
@@ -194,6 +198,8 @@
"ru", "ru",
"sk", "sk",
"sl", "sl",
"sq",
"sr",
"sv-SE", "sv-SE",
"tr", "tr",
"uk", "uk",

View File

@@ -1,31 +1,9 @@
# Firefox Send is a brand name and should not be localized. # Firefox Send is a brand name and should not be localized.
title = Firefox Send title = Firefox Send
siteSubtitle = πείραμα διαδικτύου
siteFeedback = Σχόλια siteFeedback = Σχόλια
uploadPageHeader = Ιδιωτική, κρυπτογραφημένη κοινή χρήση αρχείων
uploadPageExplainer = Στείλτε αρχεία μέσω ασφαλούς, ιδιωτικού και κρυπτογραφημένου συνδέσμου που λήγει αυτόματα ώστε να διασφαλίσετε ότι τα περιεχόμενά σας δεν θα παραμείνουν στο διαδίκτυο για πάντα.
uploadPageLearnMore = Μάθετε περισσότερα
uploadPageDropMessage = Εναποθέστε το αρχείο σας εδώ για έναρξη μεταφόρτωσης
uploadPageSizeMessage = Για περισσότερο αξιόπιστη λειτουργία, προτείνεται να διατηρήσετε το αρχείο κάτω από 1GB
uploadPageBrowseButton = Επιλέξτε αρχείο από τον υπολογιστή σας
uploadPageBrowseButton1 = Επιλέξτε ένα αρχείο για μεταφόρτωση
uploadPageMultipleFilesAlert = Η μεταφόρτωση πολλαπλών αρχείων ή φακέλου δεν υποστηρίζεται αυτή τη στιγμή.
uploadPageBrowseButtonTitle = Μεταφόρτωση αρχείου
uploadingPageProgress = Μεταφόρτωση του { $filename } ({ $size })
importingFile = Εισαγωγή… importingFile = Εισαγωγή…
verifyingFile = Επαλήθευση...
encryptingFile = Κρυπτογράφηση… encryptingFile = Κρυπτογράφηση…
decryptingFile = Αποκρυπτογράφηση… decryptingFile = Αποκρυπτογράφηση…
notifyUploadDone = Η μεταφόρτωσή σας ολοκληρώθηκε.
uploadingPageMessage = Αφού μεταφορτωθούν τα αρχεία σας, θα μπορείτε να ορίσετε επιλογές λήξης.
uploadingPageCancel = Ακύρωση μεταφόρτωσης
uploadCancelNotification = Η μεταφόρτωσή σας ακυρώθηκε.
uploadingPageLargeFileMessage = Αυτό το αρχείο είναι μεγάλο και ίσως χρειαστεί λίγος αρκετός χρόνος για μεταφόρτωση. Χαλαρώστε!
uploadingFileNotification = Ειδοποίηση όταν ολοκληρωθεί η μεταφόρτωση.
uploadSuccessConfirmHeader = Έτοιμο για αποστολή
uploadSvgAlt = Μεταφόρτωση
uploadSuccessTimingHeader = Ο σύνδεσμος του αρχείου σας θα λήξει έπειτα από 1 λήψη ή 24 ώρες.
expireInfo = Ο σύνδεσμος για το αρχείο σας θα λήξει μετά από { $downloadCount } ή { $timespan }.
downloadCount = downloadCount =
{ $num -> { $num ->
[one] 1 λήψη [one] 1 λήψη
@@ -36,76 +14,26 @@ timespanHours =
[one] 1 ώρα [one] 1 ώρα
*[other] { $num } ώρες *[other] { $num } ώρες
} }
copyUrlFormLabelWithName = Αντιγράψτε και μοιραστείτε τον σύνδεσμο για αποστολή του αρχείου σας : { $filename }
copyUrlFormButton = Αντιγραφή στο πρόχειρο
copiedUrl = Αντιγράφτηκε! copiedUrl = Αντιγράφτηκε!
deleteFileButton = Διαγραφή αρχείου
sendAnotherFileLink = Αποστολή άλλου αρχείου
# Alternative text used on the download link/button (indicates an action).
downloadAltText = Λήψη
downloadsFileList = Λήψεις
# Used as header in a column indicating the amount of time left before a
# download link expires (e.g. "10h 5m")
timeFileList = Ώρα
# Used as header in a column indicating the number of times a file has been
# downloaded
downloadFileName = Λήψη του { $filename }
downloadFileSize = ({ $size })
unlockInputLabel = Εισαγωγή κωδικού πρόσβασης
unlockInputPlaceholder = Κωδικός πρόσβασης unlockInputPlaceholder = Κωδικός πρόσβασης
unlockButtonLabel = Ξεκλείδωμα unlockButtonLabel = Ξεκλείδωμα
downloadFileTitle = Λήψη κρυπτογραφημένου αρχείου
# Firefox Send is a brand name and should not be localized.
downloadMessage = Ο/Η φίλος/-η σας, σάς στέλνει ένα αρχείο με τη βοήθεια του Firefox Send, μιας υπηρεσίας που επιτρέπει τον διαμοιρασμό αρχείων μέσω ενός ασφαλούς, ιδιωτικού και κρυπτογραφημένου συνδέσμου που λήγει αυτόματα, ώστε να είστε σίγουροι ότι τα αρχεία σας δεν θα παραμείνουν στο διαδίκτυο για πάντα.
# Text and title used on the download link/button (indicates an action).
downloadButtonLabel = Λήψη downloadButtonLabel = Λήψη
downloadNotification = Η λήψη σας ολοκληρώθηκε.
downloadFinish = Η λήψη ολοκληρώθηκε downloadFinish = Η λήψη ολοκληρώθηκε
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
fileSizeProgress = ({ $partialSize } από { $totalSize }) fileSizeProgress = ({ $partialSize } από { $totalSize })
# Firefox Send is a brand name and should not be localized.
sendYourFilesLink = Δοκιμάστε το Firefox Send sendYourFilesLink = Δοκιμάστε το Firefox Send
downloadingPageProgress = Γίνεται λήψη του { $filename } ({ $size })
downloadingPageMessage = Παρακαλώ αφήστε ανοικτή αυτή την καρτέλα όσο λαμβάνουμε και αποκρυπτογραφούμε το αρχείο σας.
errorAltText = Σφάλμα μεταφόρτωσης
errorPageHeader = Κάτι πήγε στραβά! errorPageHeader = Κάτι πήγε στραβά!
errorPageMessage = Παρουσιάστηκε σφάλμα κατά τη μεταφόρτωση του αρχείου.
errorPageLink = Αποστολή άλλου αρχείου
fileTooBig = Αυτό το αρχείο είναι πολύ μεγάλο για μεταφόρτωση. Πρέπει να είναι μικρότερο από { $size }. fileTooBig = Αυτό το αρχείο είναι πολύ μεγάλο για μεταφόρτωση. Πρέπει να είναι μικρότερο από { $size }.
linkExpiredAlt = Ο σύνδεσμος έληξε linkExpiredAlt = Ο σύνδεσμος έληξε
expiredPageHeader = Αυτός ο σύνδεσμος έχει λήξει ή δεν υπήρξε ποτέ!
notSupportedHeader = Το πρόγραμμα περιήγησής σας δεν υποστηρίζεται. notSupportedHeader = Το πρόγραμμα περιήγησής σας δεν υποστηρίζεται.
# Firefox Send is a brand name and should not be localized.
notSupportedDetail = Δυστυχώς, αυτό το πρόγραμμα περιήγησης δεν υποστηρίζει την τεχνολογία ιστού στην οποία βασίζεται το Firefox Send. Θα πρέπει να δοκιμάσετε ένα άλλο πρόγραμμα περιήγησης. Προτείνουμε το Firefox!
notSupportedLink = Γιατί δεν υποστηρίζεται το πρόγραμμα περιήγησής μου; notSupportedLink = Γιατί δεν υποστηρίζεται το πρόγραμμα περιήγησής μου;
notSupportedOutdatedDetail = Δυστυχώς, αυτή η έκδοση του Firefox δεν υποστηρίζει την τεχνολογία ιστού στην οποία βασίζεται το Firefox Send. Πρέπει να ενημερώσετε το πρόγραμμα περιήγησής σας. notSupportedOutdatedDetail = Δυστυχώς, αυτή η έκδοση του Firefox δεν υποστηρίζει την τεχνολογία ιστού στην οποία βασίζεται το Firefox Send. Πρέπει να ενημερώσετε το πρόγραμμα περιήγησής σας.
updateFirefox = Ενημέρωση Firefox updateFirefox = Ενημέρωση Firefox
downloadFirefoxButtonSub = Δωρεάν λήψη
uploadedFile = Αρχείο
copyFileList = Αντιγραφή URL
# expiryFileList is used as a column header
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.
deletePopupText = Διαγραφή αρχείου;
deletePopupYes = Ναι
deletePopupCancel = Ακύρωση deletePopupCancel = Ακύρωση
deleteButtonHover = Διαγραφή deleteButtonHover = Διαγραφή
copyUrlHover = Αντιγραφή URL
footerLinkLegal = Νομικά footerLinkLegal = Νομικά
# Test Pilot is a proper name and should not be localized.
footerLinkAbout = Σχετικά με το Test Pilot
footerLinkPrivacy = Απόρρητο footerLinkPrivacy = Απόρρητο
footerLinkTerms = Όροι
footerLinkCookies = Cookies footerLinkCookies = Cookies
requirePasswordCheckbox = Απαίτηση κωδικού πρόσβασης για λήψη του αρχείου
addPasswordButton = Προσθήκη κωδικού πρόσβασης
changePasswordButton = Αλλαγή
passwordTryAgain = Λάθος κωδικός πρόσβασης. Δοκιμάστε ξανά. passwordTryAgain = Λάθος κωδικός πρόσβασης. Δοκιμάστε ξανά.
reportIPInfringement = Αναφορά παραβίασης IP
javascriptRequired = Το Firefox Send απαιτεί JavaScript javascriptRequired = Το Firefox Send απαιτεί JavaScript
whyJavascript = Γιατί το Firefox Send απαιτεί JavaScript; whyJavascript = Γιατί το Firefox Send απαιτεί JavaScript;
enableJavascript = Παρακαλώ ενεργοποιήστε το JavaScript και δοκιμάστε ξανά. enableJavascript = Παρακαλώ ενεργοποιήστε το JavaScript και δοκιμάστε ξανά.
@@ -113,20 +41,23 @@ enableJavascript = Παρακαλώ ενεργοποιήστε το JavaScript
expiresHoursMinutes = { $hours }ώ { $minutes }λ expiresHoursMinutes = { $hours }ώ { $minutes }λ
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m" # A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
expiresMinutes = { $minutes }λ expiresMinutes = { $minutes }λ
# A short status message shown when a password is successfully set
passwordIsSet = Επιτυχής ορισμός κωδικού
# A short status message shown when the user enters a long password # A short status message shown when the user enters a long password
maxPasswordLength = Μέγιστο μήκος κωδικού: { $length } maxPasswordLength = Μέγιστο μήκος κωδικού: { $length }
# A short status message shown when there was an error setting the password # A short status message shown when there was an error setting the password
passwordSetError = Δεν ήταν δυνατός ο ορισμός αυτού του κωδικού passwordSetError = Δεν ήταν δυνατός ο ορισμός αυτού του κωδικού
## New strings for the vNext version of Firefox Send ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized # Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
-send-brand = Firefox Send -send-brand = Firefox Send
-send-short-brand = Send -send-short-brand = Send
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla
introTitle = Απλή, ιδιωτική κοινή χρήση αρχείων
introDescription = Το { -send-brand } σάς επιτρέπει να μοιράζεστε αρχεία με από άκρη σε άκρη κρυπτογράφηση και ένα σύνδεσμο που λήγει αυτόματα. Έτσι, ό,τι μοιράζεστε παραμένει ιδιωτικό και είστε βέβαιοι πως δεν παραμένει στο διαδίκτυο για πάντα.
notifyUploadEncryptDone = Το αρχείο σας έχει κρυπτογραφηθεί και είναι έτοιμο για αποστολή
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
archiveExpiryInfo = Λήγει μετά από { $downloadCount } ή { $timespan }
timespanMinutes = timespanMinutes =
{ $num -> { $num ->
[one] 1 λεπτό [one] 1 λεπτό
@@ -147,13 +78,70 @@ fileCount =
[one] 1 αρχείο [one] 1 αρχείο
*[other] { $num } αρχεία *[other] { $num } αρχεία
} }
# size is a localized number followed by a unit of bytes, ex. 2.5GB # byte abbreviation
bytes = B
# kibibyte abbreviation
kb = KB
# mebibyte abbreviation
mb = MB
# gibibyte abbreviation
gb = GB
# localized number and byte abbreviation. example "2.5MB"
fileSize = { $num }{ $units }
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
totalSize = Συνολικό μέγεθος: { $size } totalSize = Συνολικό μέγεθος: { $size }
# the next line after the colon contains a file name
copyLinkDescription = Αντιγράψτε το σύνδεσμο για να μοιραστείτε το αρχείο:
copyLinkButton = Αντιγραφή συνδέσμου copyLinkButton = Αντιγραφή συνδέσμου
downloadTitle = Λήψη αρχείων downloadTitle = Λήψη αρχείων
downloadDescription = Αυτό το αρχείο διαμοιράστηκε μέσω του { -send-brand } με κρυπτογράφηση από άκρο σε άκρο και με ένα σύνδεσμο που λήγει αυτόματα.
trySendDescription = Δοκιμάστε το { -send-brand } για απλό, ασφαλή διαμοιρασμό αρχείων.
# count will always be > 10
tooManyFiles =
{ $count ->
[one] Μόνο 1 αρχείο μπορεί να μεταφορτωθεί κάθε φορά.
*[other] Μόνο { $count } αρχεία μπορούν να μεταφορτωθούν κάθε φορά.
}
# count will always be > 10
tooManyArchives =
{ $count ->
[one] Μόνο 1 αρχείο επιτρέπεται.
*[other] Μόνο { $count } αρχεία επιτρέπονται.
}
expiredTitle = Αυτός ο σύνδεσμος έχει λήξει. expiredTitle = Αυτός ο σύνδεσμος έχει λήξει.
notSupportedDescription = Το { -send-brand } δεν θα λειτουργήσει με αυτό το πρόγραμμα περιήγησης. Το { -send-short-brand } λειτουργεί καλύτερα με την πιο πρόσφατη έκδοση του { -firefox }, καθώς και με την τρέχουσα έκδοση των περισσότερων προγραμμάτων περιήγησης.
downloadFirefox = Λήψη του { -firefox } downloadFirefox = Λήψη του { -firefox }
legalTitle = Σημείωση Απορρήτου { -send-short-brand }
legalDateStamp = Έκδοση 1.0, από 12 Μαρτίου 2019
# A short representation of a countdown timer containing the number of days, hours, and minutes remaining as digits, example "2d 11h 56m"
expiresDaysHoursMinutes = { $days }η { $hours }ώ { $minutes }λ
addFilesButton = Επιλέξτε αρχεία για μεταφόρτωση
uploadButton = Μεταφόρτωση
# the first part of the string 'Drag and drop files or click to send up to 1GB'
dragAndDropFiles = Σύρετε και εναποθέστε αρχεία
# the second part of the string 'Drag and drop files or click to send up to 1GB'
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
orClickWithSize = ή κάντε κλικ για να στείλετε μέχρι { $size }
addPassword = Προστασία με κωδικό πρόσβασης
emailPlaceholder = Εισάγετε το email σας emailPlaceholder = Εισάγετε το email σας
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
signInSizeBump = Συνδεθείτε για να στείλετε μέχρι { $size }
signInButton = Σύνδεση/εγγραφή signInButton = Σύνδεση/εγγραφή
accountBenefitTitle = Δημιουργία λογαριασμού { -firefox } ή σύνδεση
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
accountBenefitLargeFiles = Μοιραστείτε αρχεία έως { $size }
accountBenefitDownloadCount = Μοιραστείτε αρχεία με περισσότερα άτομα
accountBenefitTimeLimit =
{ $count ->
[one] Να παραμείνουν οι σύνδεσμοι ενεργοί έως και 1 ημέρα
*[other] Να παραμείνουν οι σύνδεσμοι ενεργοί έως και { $count } ημέρες
}
accountBenefitSync = Διαχειριστείτε τα διαμοιρασμένα αρχεία από οποιαδήποτε συσκευή
accountBenefitMoz = Μάθετε για τις άλλες υπηρεσίες της { -mozilla }
signOut = Αποσύνδεση signOut = Αποσύνδεση
okButton = OK okButton = OK
downloadingTitle = Λήψη
noStreamsWarning = Αυτό το πρόγραμμα περιήγησης ενδέχεται να μην μπορέσει να αποκρυπτογραφήσει αρχεία αυτού του μεγέθους.
noStreamsOptionCopy = Αντιγράψτε το σύνδεσμο για άνοιγμα σε άλλο πρόγραμμα περιήγησης
noStreamsOptionFirefox = Δοκιμάστε το αγαπημένο μας πρόγραμμα περιήγησης
noStreamsOptionDownload = Συνέχεια με αυτό το πρόγραμμα περιήγησης

View File

@@ -1,31 +1,9 @@
# Firefox Send is a brand name and should not be localized. # Firefox Send is a brand name and should not be localized.
title = Firefox Send title = Firefox Send
siteSubtitle = web experiment
siteFeedback = Feedback 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, its 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… importingFile = Importing…
verifyingFile = Verifying…
encryptingFile = Encrypting… encryptingFile = Encrypting…
decryptingFile = Decrypting… 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 = downloadCount =
{ $num -> { $num ->
[one] 1 download [one] 1 download
@@ -36,76 +14,26 @@ timespanHours =
[one] 1 hour [one] 1 hour
*[other] { $num } hours *[other] { $num } hours
} }
copyUrlFormLabelWithName = Copy and share the link to send your file: { $filename }
copyUrlFormButton = Copy to clipboard
copiedUrl = Copied! 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 unlockInputPlaceholder = Password
unlockButtonLabel = Unlock 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 downloadButtonLabel = Download
downloadNotification = Your download has completed.
downloadFinish = Download Complete 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 }) fileSizeProgress = ({ $partialSize } of { $totalSize })
# Firefox Send is a brand name and should not be localized.
sendYourFilesLink = Try Firefox Send 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! 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 }. fileTooBig = That file is too big to upload. It should be less than { $size }.
linkExpiredAlt = Link expired linkExpiredAlt = Link expired
expiredPageHeader = This link has expired or never existed in the first place!
notSupportedHeader = Your browser is not supported. 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. Youll need to try another browser. We recommend Firefox!
notSupportedLink = Why is my browser not supported? notSupportedLink = Why is my browser not supported?
notSupportedOutdatedDetail = Unfortunately this version of Firefox does not support the web technology that powers Firefox Send. Youll need to update your browser. notSupportedOutdatedDetail = Unfortunately this version of Firefox does not support the web technology that powers Firefox Send. Youll need to update your browser.
updateFirefox = Update Firefox 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 Mozillas <a>Websites Privacy Notice</a> and <a>Websites Terms of Use</a>.
deletePopupText = Delete this file?
deletePopupYes = Yes
deletePopupCancel = Cancel deletePopupCancel = Cancel
deleteButtonHover = Delete deleteButtonHover = Delete
copyUrlHover = Copy URL
footerLinkLegal = Legal footerLinkLegal = Legal
# Test Pilot is a proper name and should not be localized.
footerLinkAbout = About Test Pilot
footerLinkPrivacy = Privacy footerLinkPrivacy = Privacy
footerLinkTerms = Terms
footerLinkCookies = Cookies footerLinkCookies = Cookies
requirePasswordCheckbox = Require a password to download this file
addPasswordButton = Add password
changePasswordButton = Change
passwordTryAgain = Incorrect password. Try again. passwordTryAgain = Incorrect password. Try again.
reportIPInfringement = Report IP Infringement
javascriptRequired = Firefox Send requires JavaScript javascriptRequired = Firefox Send requires JavaScript
whyJavascript = Why does Firefox Send require JavaScript? whyJavascript = Why does Firefox Send require JavaScript?
enableJavascript = Please enable JavaScript and try again. enableJavascript = Please enable JavaScript and try again.
@@ -113,14 +41,12 @@ enableJavascript = Please enable JavaScript and try again.
expiresHoursMinutes = { $hours }h { $minutes }m expiresHoursMinutes = { $hours }h { $minutes }m
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m" # A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
expiresMinutes = { $minutes }m expiresMinutes = { $minutes }m
# A short status message shown when a password is successfully set
passwordIsSet = Password set
# A short status message shown when the user enters a long password # A short status message shown when the user enters a long password
maxPasswordLength = Maximum password length: { $length } maxPasswordLength = Maximum password length: { $length }
# A short status message shown when there was an error setting the password # A short status message shown when there was an error setting the password
passwordSetError = This password could not be set passwordSetError = This password could not be set
## New strings for the vNext version of Firefox Send ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized # Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
-send-brand = Firefox Send -send-brand = Firefox Send
@@ -152,7 +78,17 @@ fileCount =
[one] 1 file [one] 1 file
*[other] { $num } files *[other] { $num } files
} }
# size is a localized number followed by a unit of bytes, ex. 2.5GB # byte abbreviation
bytes = B
# kibibyte abbreviation
kb = kB
# mebibyte abbreviation
mb = MB
# gibibyte abbreviation
gb = GB
# localized number and byte abbreviation. example "2.5MB"
fileSize = { $num }{ $units }
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
totalSize = Total size: { $size } totalSize = Total size: { $size }
# the next line after the colon contains a file name # the next line after the colon contains a file name
copyLinkDescription = Copy the link to share your file: copyLinkDescription = Copy the link to share your file:
@@ -184,15 +120,15 @@ uploadButton = Upload
# the first part of the string 'Drag and drop files or click to send up to 1GB' # the first part of the string 'Drag and drop files or click to send up to 1GB'
dragAndDropFiles = Drag and drop files dragAndDropFiles = Drag and drop files
# the second part of the string 'Drag and drop files or click to send up to 1GB' # the second part of the string 'Drag and drop files or click to send up to 1GB'
# size is a localized number followed by a unit of bytes, ex. 2.5GB # $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
orClickWithSize = or click to send up to { $size } orClickWithSize = or click to send up to { $size }
addPassword = Protect with password addPassword = Protect with password
emailPlaceholder = Enter your email emailPlaceholder = Enter your email
# size is a localized number followed by a unit of bytes, ex. 2.5GB # $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
signInSizeBump = Sign in to send up to { $size } signInSizeBump = Sign in to send up to { $size }
signInButton = Sign in/up signInButton = Sign in/up
accountBenefitTitle = Create a { -firefox } Account or sign in accountBenefitTitle = Create a { -firefox } Account or sign in
# size is a localized number followed by a unit of bytes, ex. 2.5GB # $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
accountBenefitLargeFiles = Share files up to { $size } accountBenefitLargeFiles = Share files up to { $size }
accountBenefitDownloadCount = Share files with more people accountBenefitDownloadCount = Share files with more people
accountBenefitTimeLimit = accountBenefitTimeLimit =

View File

@@ -77,7 +77,17 @@ fileCount =
[one] 1 archivo [one] 1 archivo
*[other] { $num } archivos *[other] { $num } archivos
} }
# size is a localized number followed by a unit of bytes, ex. 2.5GB # byte abbreviation
bytes = B
# kibibyte abbreviation
kb = KB
# mebibyte abbreviation
mb = MB
# gibibyte abbreviation
gb = GB
# localized number and byte abbreviation. example "2.5MB"
fileSize = { $num }{ $units }
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
totalSize = Tamaño total: { $size } totalSize = Tamaño total: { $size }
# the next line after the colon contains a file name # the next line after the colon contains a file name
copyLinkDescription = Copiar el enlace para compartir el archivo: copyLinkDescription = Copiar el enlace para compartir el archivo:
@@ -109,15 +119,15 @@ uploadButton = Subir
# the first part of the string 'Drag and drop files or click to send up to 1GB' # the first part of the string 'Drag and drop files or click to send up to 1GB'
dragAndDropFiles = Arrastrar y soltar archivos dragAndDropFiles = Arrastrar y soltar archivos
# the second part of the string 'Drag and drop files or click to send up to 1GB' # the second part of the string 'Drag and drop files or click to send up to 1GB'
# size is a localized number followed by a unit of bytes, ex. 2.5GB # $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
orClickWithSize = o hacer clic para enviar hasta { $size } orClickWithSize = o hacer clic para enviar hasta { $size }
addPassword = Protegido con contraseña addPassword = Protegido con contraseña
emailPlaceholder = Ingresa tu correo electrónico emailPlaceholder = Ingresa tu correo electrónico
# size is a localized number followed by a unit of bytes, ex. 2.5GB # $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
signInSizeBump = Iniciar sesión para enviar hasta { $size } signInSizeBump = Iniciar sesión para enviar hasta { $size }
signInButton = Iniciar sesión/registrarse signInButton = Iniciar sesión/registrarse
accountBenefitTitle = Crear una cuenta de { -firefox } o iniciar sesión accountBenefitTitle = Crear una cuenta de { -firefox } o iniciar sesión
# size is a localized number followed by a unit of bytes, ex. 2.5GB # $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
accountBenefitLargeFiles = Compartir archivos de hasta { $size } accountBenefitLargeFiles = Compartir archivos de hasta { $size }
accountBenefitDownloadCount = Compartir archivos con más personas accountBenefitDownloadCount = Compartir archivos con más personas
accountBenefitTimeLimit = accountBenefitTimeLimit =

View File

@@ -30,9 +30,30 @@ notSupportedOutdatedDetail = Zoritxarrez Firefox bertsio honek ez du Firefox Sen
updateFirefox = Eguneratu Firefox updateFirefox = Eguneratu Firefox
deletePopupCancel = Utzi deletePopupCancel = Utzi
deleteButtonHover = Ezabatu deleteButtonHover = Ezabatu
footerLinkLegal = Lege-oharra
footerLinkPrivacy = Pribatutasuna
footerLinkCookies = Cookieak
passwordTryAgain = Pasahitz okerra. Saiatu berriro.
javascriptRequired = JavaScript beharrezkoa da Firefox Send erabiltzeko.
whyJavascript = Zergatik behar du Firefox Send-ek JavasScript?
enableJavascript = Gaitu JavaScript eta saiatu berriro.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
expiresHoursMinutes = { $hours }h { $minutes }m
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
expiresMinutes = { $minutes }m
# A short status message shown when the user enters a long password
maxPasswordLength = Pasahitzaren gehienezko luzera: { $length }
# A short status message shown when there was an error setting the password
passwordSetError = Pasahitz hau ezin da ezarri
## Send version 2 strings ## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
-send-brand = Firefox Send
-firefox = Firefox
-mozilla = Mozilla
introTitle = Partekatu fitxategiak modu sinple eta pribatuan
notifyUploadEncryptDone = Zure fitxategia zifratuta eta bidaltzeko prest dago
# byte abbreviation # byte abbreviation
bytes = B bytes = B
# kibibyte abbreviation # kibibyte abbreviation
@@ -41,3 +62,22 @@ kb = KB
mb = MB mb = MB
# gibibyte abbreviation # gibibyte abbreviation
gb = GB gb = GB
# localized number and byte abbreviation. example "2.5MB"
fileSize = { $num }{ $units }
downloadTitle = Deskargatu fitxategiak
downloadFirefox = Deskargatu { -firefox }
legalDateStamp = 1.0 bertsioa, 2019ko martxoaren 12koa.
addFilesButton = Hautatu igotzeko fitxategiak
uploadButton = Igo
# the first part of the string 'Drag and drop files or click to send up to 1GB'
dragAndDropFiles = Arrastatu eta jaregin fitxategiak
# the second part of the string 'Drag and drop files or click to send up to 1GB'
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
orClickWithSize = edo egin klik { $size } arte igotzeko
addPassword = Babestu pasahitzarekin
emailPlaceholder = Idatzi zure helbide elektronikoa
signInButton = Hasi saioa/eman izena
accountBenefitTitle = Sortu { -firefox } kontu bat edo hasi saioa
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
accountBenefitLargeFiles = Partekatu { $size } arteko fitxategiak
accountBenefitDownloadCount = Partekatu fitxategiak jende gehiagorekin

View File

@@ -1,31 +1,9 @@
# Firefox Send is a brand name and should not be localized. # Firefox Send is a brand name and should not be localized.
title = Firefox Send title = Firefox Send
siteSubtitle = web-kokeilu
siteFeedback = Palaute 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… importingFile = Tuodaan…
verifyingFile = Tarkistetaan...
encryptingFile = Salataan... encryptingFile = Salataan...
decryptingFile = Puretaan salausta... 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 = downloadCount =
{ $num -> { $num ->
[one] yhden latauksen [one] yhden latauksen
@@ -36,86 +14,134 @@ timespanHours =
[one] 1 tunnin [one] 1 tunnin
*[other] { $num } tunnin *[other] { $num } tunnin
} }
copyUrlFormLabelWithName = Kopioi ja jaa linkki lähettämääsi tiedostoon: { $filename }
copyUrlFormButton = Kopioi leikepöydälle
copiedUrl = Kopioitu! 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 unlockInputPlaceholder = Salasana
unlockButtonLabel = Avaa 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 downloadButtonLabel = Lataa
downloadNotification = Latauksesi on valmis.
downloadFinish = Lataus 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 } fileSizeProgress = { $partialSize } / { $totalSize }
# Firefox Send is a brand name and should not be localized. sendYourFilesLink = Kokeile Firefox Send -palvelua
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! 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 }. fileTooBig = Tämä tiedosto on liian suuri ladattavaksi. Sen pitäisi olla pienempi kuin { $size }.
linkExpiredAlt = Linkki on vanhentunut linkExpiredAlt = Linkki on vanhentunut
expiredPageHeader = Tämä linkki on vanhentunut tai sitä ei ole koskaan ollut olemassa!
notSupportedHeader = Selaintasi ei tueta. 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? 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. 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 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>.
legalNoticeMozilla = Firefox Send -sivuston käyttöön sovelletaan Mozillan <a>verkkosivustojen yksityisyyskäytäntöjä</a> ja <a>verkkosivustojen käyttöehtoja</a>.
deletePopupText = Poista tämä tiedosto?
deletePopupYes = Kyllä
deletePopupCancel = Peruuta deletePopupCancel = Peruuta
deleteButtonHover = Poista deleteButtonHover = Poista
copyUrlHover = Kopioi osoite
footerLinkLegal = Juridiset asiat footerLinkLegal = Juridiset asiat
# Test Pilot is a proper name and should not be localized.
footerLinkAbout = Tietoja Test Pilotista
footerLinkPrivacy = Tietosuoja footerLinkPrivacy = Tietosuoja
footerLinkTerms = Ehdot
footerLinkCookies = Evästeet footerLinkCookies = Evästeet
requirePasswordCheckbox = Vaadi salasanaa tämän tiedoston lataamiseen
addPasswordButton = Lisää salasana
changePasswordButton = Muuta
passwordTryAgain = Väärä salasana. Yritä uudelleen. passwordTryAgain = Väärä salasana. Yritä uudelleen.
reportIPInfringement = Ilmoita IP-rikkomuksesta
javascriptRequired = Firefox-Send vaatii JavaScriptin javascriptRequired = Firefox-Send vaatii JavaScriptin
whyJavascript = Miksi Firefox Send vaatii JavaScriptin? whyJavascript = Miksi Firefox Send vaatii JavaScriptin?
enableJavascript = Ota JavaScript käyttöön ja yritä uudelleen. 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" # 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 expiresHoursMinutes = { $hours } t { $minutes } min
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m" # A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
expiresMinutes = { $minutes }min 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 # A short status message shown when the user enters a long password
maxPasswordLength = Salasanan enimmäispituus: { $length } maxPasswordLength = Salasanan enimmäispituus: { $length }
# A short status message shown when there was an error setting the password # A short status message shown when there was an error setting the password
passwordSetError = Tätä salasanaa ei voitu asettaa passwordSetError = Tätä salasanaa ei voitu asettaa
## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
-send-brand = Firefox Send
-send-short-brand = Send
-firefox = Firefox
-mozilla = Mozilla
introTitle = Helppoa ja yksityistä tiedostonjakoa
introDescription = { -send-brand } mahdollistaa tiedostojen jakamisen automaattisesti vanhenevalla linkillä. Tiedostojen jakaminen tapahtuu päästä päähän -salattuna. Näin jakamasi tiedostot pysyvät yksityisinä ja voit olla varma, etteivät lähettämäsi tiedostot pysy verkossa ikuisesti.
notifyUploadEncryptDone = Tiedosto on salattu ja valmis lähetettäväksi
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
archiveExpiryInfo = Vanhenee { $downloadCount } tai { $timespan } jälkeen
timespanMinutes =
{ $num ->
[one] 1 minuutin
*[other] { $num } minuutin
}
timespanDays =
{ $num ->
[one] 1 päivä
*[other] { $num } päivää
}
timespanWeeks =
{ $num ->
[one] 1 viikko
*[other] { $num } viikkoa
}
fileCount =
{ $num ->
[one] 1 tiedosto
*[other] { $num } tiedostoa
}
# byte abbreviation
bytes = t
# kibibyte abbreviation
kb = kt
# mebibyte abbreviation
mb = Mt
# gibibyte abbreviation
gb = Gt
# localized number and byte abbreviation. example "2.5MB"
fileSize = { $num } { $units }
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
totalSize = Koko yhteensä: { $size }
# the next line after the colon contains a file name
copyLinkDescription = Kopioi linkki jakaaksesi tiedoston:
copyLinkButton = Kopioi linkki
downloadTitle = Lataa tiedostot
downloadDescription = Tämä tiedosto jaettiin { -send-brand } -palvelun kautta päästä päähän -salattuna ja automaattisesti vanhenevalla linkillä.
trySendDescription = Kokeile { -send-brand } -palvelua jakaaksesi tiedostoja helposti ja turvallisesti.
# count will always be > 10
tooManyFiles =
{ $count ->
[one] Vain 1 tiedosto on mahdollistaa lähettää kerralla.
*[other] Vain { $count } tiedostoa on mahdollista lähettää kerralla.
}
# count will always be > 10
tooManyArchives =
{ $count ->
[one] Vain 1 arkisto on sallittu.
*[other] Vain { $count } arkistoa on sallittu.
}
expiredTitle = Tämä linkki on vanhentunut.
notSupportedDescription = { -send-brand } ei toimi tällä selaimella. { -send-short-brand } toimii parhaiten { -firefox }in uusimmalla versiolla, ja toimii useimpien selainten uusimmilla versioilla.
downloadFirefox = Lataa { -firefox }
legalTitle = { -send-short-brand }-yksityisyyskäytäntö
legalDateStamp = Versio 1.0, päivätty 13. maaliskuuta 2019
# A short representation of a countdown timer containing the number of days, hours, and minutes remaining as digits, example "2d 11h 56m"
expiresDaysHoursMinutes = { $days } pv { $hours } t { $minutes } min
addFilesButton = Valitse lähetettävät tiedostot
uploadButton = Lähetä
# the first part of the string 'Drag and drop files or click to send up to 1GB'
dragAndDropFiles = Vedä ja pudota tiedostot
# the second part of the string 'Drag and drop files or click to send up to 1GB'
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
orClickWithSize = tai napsauta lähettääksesi tiedostoja, joiden koko voi olla enintään { $size }
addPassword = Suojaa salasanalla
emailPlaceholder = Kirjoita sähköpostiosoitteesi
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
signInSizeBump = Kirjautumalla voit lähettää jopa { $size } kokoisia tiedostoja
signInButton = Kirjaudu tai rekisteröidy
accountBenefitTitle = Luo { -firefox }-tili tai kirjaudu sisään
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
accountBenefitLargeFiles = Jaa jopa { $size } kokoisia tiedostoja
accountBenefitDownloadCount = Jaa tiedostoja useamman ihmisen kesken
accountBenefitTimeLimit =
{ $count ->
[one] Säilytä linkit aktiivisina 1 päivän ajan
*[other] Säilytä linkit aktiivisina { $count } päivän ajan
}
accountBenefitSync = Hallitse jaettuja tiedostoja miltä tahansa laitteelta
accountBenefitMoz = Lue lisää muista { -mozilla }-palveluista
signOut = Kirjaudu ulos
okButton = OK
downloadingTitle = Ladataan
noStreamsWarning = Tämä selain ei välttämättä osaa purkaa salausta näin suurikokoisista tiedostoista.
noStreamsOptionCopy = Kopioi linkki avataksesi sen toisessa selaimessa
noStreamsOptionFirefox = Kokeile suosikkiselaintamme
noStreamsOptionDownload = Jatka tällä selaimella

View File

@@ -54,6 +54,9 @@ passwordSetError = Iste contrasigno non pote ser definite
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla
introTitle = Comparti file in maniera confidential introTitle = Comparti file in maniera confidential
notifyUploadEncryptDone = Tu file es cryptate e preste pro ser inviate.
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
archiveExpiryInfo = Expira post { $downloadCount } o { $timespan }
timespanMinutes = timespanMinutes =
{ $num -> { $num ->
[one] 1 minuta [one] 1 minuta
@@ -129,6 +132,11 @@ accountBenefitTimeLimit =
[one] Retene active le ligamine pro 1 die [one] Retene active le ligamine pro 1 die
*[other] Retene active le ligamine pro { $count } dies *[other] Retene active le ligamine pro { $count } dies
} }
accountBenefitSync = Gere files compartite ab ulle apparato
accountBenefitMoz = Discoperi altere servicios de { -mozilla }
signOut = Disconnecter signOut = Disconnecter
okButton = OK okButton = OK
downloadingTitle = Discargamento downloadingTitle = Discargamento
noStreamsOptionCopy = Copiar le ligamine e aperir lo in un altere navigator
noStreamsOptionFirefox = Prova nostre navigator favorite
noStreamsOptionDownload = Continuar con iste navigator

View File

@@ -1,31 +1,9 @@
# Firefox Send is a brand name and should not be localized. # Firefox Send is a brand name and should not be localized.
title = Firefox Send title = Firefox Send
siteSubtitle = Tarmit web
siteFeedback = Tikti siteFeedback = Tikti
uploadPageHeader = Beṭṭu n ifuyla s uwgelhen akked tbaḍnit
uploadPageExplainer = Azen ifuyla s wudem aɣelsant, s tbaḍnit akked uwgelhen, s useqdec n useɣwen ara yemten s wudem awurman akken talqut-ik ur tettɣimi ara srid i lebda.
uploadPageLearnMore = Issin ugar
uploadPageDropMessage = Zuɣeṛ afaylu-ik ar dagi akken ad tebduḍ asali
uploadPageSizeMessage = I ugmuḍ ufrin, yelha ad tesqedceḍ ifuyla daw n 1 GAṬ
uploadPageBrowseButton = Fren afaylu sef uselkim-ik
uploadPageBrowseButton1 = Fren afaylu ad tazneḍ
uploadPageMultipleFilesAlert = Asali n ddeqs n ifuyla neɣ ikaramen ur ittusefrak ara yakan.
uploadPageBrowseButtonTitle = Sali ifuyla
uploadingPageProgress = Tuzna n { $filename } ({ $size })
importingFile = Akter... importingFile = Akter...
verifyingFile = Asenqed...
encryptingFile = Awgelhen... encryptingFile = Awgelhen...
decryptingFile = Azmek... decryptingFile = Azmek...
notifyUploadDone = Asali n ufaylu yemmed.
uploadingPageMessage = Ticki afaylu-ik yettali, ad tizmired ad ternuḍ iɣewwaṛen n wazen n tagara.
uploadingPageCancel = Sefsex asali
uploadCancelNotification = Asali-ik yefsex.
uploadingPageLargeFileMessage = Afaylu meqqer aṭas ihi yezmer ad yawi ddeqs n wakud. Rǧu ihi!
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 = downloadCount =
{ $num -> { $num ->
[one] 1 usider [one] 1 usider
@@ -36,76 +14,26 @@ timespanHours =
[one] 1 usrag [one] 1 usrag
*[other] { $num } isragen *[other] { $num } isragen
} }
copyUrlFormLabelWithName = Nɣel sakin Bḍu aseɣwen akken ad tazneḍ afaylu-ik: { $filename }
copyUrlFormButton = Sers ɣef afus
copiedUrl = Yenɣel! copiedUrl = Yenɣel!
deleteFileButton = Kkes afaylu
sendAnotherFileLink = Azen afaylu-nniḍen
# Alternative text used on the download link/button (indicates an action).
downloadAltText = Sider
downloadsFileList = Isidar
# Used as header in a column indicating the amount of time left before a
# download link expires (e.g. "10h 5m")
timeFileList = Akud
# Used as header in a column indicating the number of times a file has been
# downloaded
downloadFileName = Sider { $filename }
downloadFileSize = ({ $size })
unlockInputLabel = Sekcem awal uffir
unlockInputPlaceholder = Awal uffir unlockInputPlaceholder = Awal uffir
unlockButtonLabel = Serreḥ unlockButtonLabel = Serreḥ
downloadFileTitle = Sider afaylu awgelhan
# Firefox Send is a brand name and should not be localized.
downloadMessage = Amdakel-ik yuzen-ak-d afaylu s Firefox Firefox Send, ameẓlu ara yeǧǧen tuzna n ifuyla s wudem aɣelsan, s tbadnit akked uwgelhen s useqdec n useqwen ara yeùten s wudem awurman akken talqut-ik ur tettɣimi ara srid i lebda.
# Text and title used on the download link/button (indicates an action).
downloadButtonLabel = Sider downloadButtonLabel = Sider
downloadNotification = Asider-ik yemmed.
downloadFinish = Asider yemmed downloadFinish = Asider yemmed
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
fileSizeProgress = ({ $partialSize } seg { $totalSize }) fileSizeProgress = ({ $partialSize } seg { $totalSize })
# Firefox Send is a brand name and should not be localized.
sendYourFilesLink = Ɛreḍ Firefox Send sendYourFilesLink = Ɛreḍ Firefox Send
downloadingPageProgress = Asider n { $filename } ({ $size })
downloadingPageMessage = Eǧǧ iccer-agi yeldi ticki nettnadi afaylu akken ad newgelhen.
errorAltText = Tuccḍa n tuzna
errorPageHeader = Yella wayen yeḍran! errorPageHeader = Yella wayen yeḍran!
errorPageMessage = Teḍra-d tuccḍa deg usali n ufaylu.
errorPageLink = Azen afaylu-nniḍen
fileTooBig = Afaylu-agi meqqeṛ aṭas. Yessefk ad yili daw n { $size }. fileTooBig = Afaylu-agi meqqeṛ aṭas. Yessefk ad yili daw n { $size }.
linkExpiredAlt = Aseɣwen yemmut linkExpiredAlt = Aseɣwen yemmut
expiredPageHeader = Aseɣwen-agi yemmut neɣ wurǧin yella seg tazwara!
notSupportedHeader = Iminig-ik ur ittusefrak ara notSupportedHeader = Iminig-ik ur ittusefrak ara
# Firefox Send is a brand name and should not be localized.
notSupportedDetail = Ad nesḥissef imi iminig-ik ur isefrak ara tatiknulujit web iseqdac Firefox Send. Yessefk ad tesqedceḍ iminig-nniḍen. Seqdec Firefox!
notSupportedLink = Ayγer iminig inu ur yettwasefrek ara? notSupportedLink = Ayγer iminig inu ur yettwasefrek ara?
notSupportedOutdatedDetail = Ad nesḥissef imilqem-agi n Firefox Firefox ur isefrak ara titiknulujiyin web yettwaseqdacen di Firefox Send. Yessefk ad tleqmeḍ iminig-ik. notSupportedOutdatedDetail = Ad nesḥissef imilqem-agi n Firefox Firefox ur isefrak ara titiknulujiyin web yettwaseqdacen di Firefox Send. Yessefk ad tleqmeḍ iminig-ik.
updateFirefox = Leqqem Firefox updateFirefox = Leqqem Firefox
downloadFirefoxButtonSub = Asider ilelli
uploadedFile = Afaylu
copyFileList = Nɣel URL
# expiryFileList is used as a column header
expiryFileList = Ad ifak di
deleteFileList = Kkes
nevermindButton = Wicqa
legalHeader = Tiwtilin &tabaḍnit
legalNoticeTestPilot = Firefox Send yettwasekyad akka tura am tarmit Test Pilot, ihi ad yili daw n <a>n tewtilin n useqdec </a> n Test Pilot akked <a>Tasertit n tbaḍnit</a>. Tzemreḍ ad teẓreḍ ugar ɣeef tarmit-agi akked ulqaḍ n isefka<a> dagihere</a>.
legalNoticeMozilla = Aseqdec n usmel n Firefox Send yella daw n <a> ilugan tbaḍnit n yismal web </a> n Mozilla akked <a> Tiwtilin n useqdec n yismal Web</a> n Mozilla.
deletePopupText = Kkes afaylu-agi?
deletePopupYes = Ih
deletePopupCancel = Sefsex deletePopupCancel = Sefsex
deleteButtonHover = Kkes deleteButtonHover = Kkes
copyUrlHover = Nɣel URL.
footerLinkLegal = Usḍif footerLinkLegal = Usḍif
# Test Pilot is a proper name and should not be localized.
footerLinkAbout = Ɣef Test Pilot
footerLinkPrivacy = Tabaḍnit footerLinkPrivacy = Tabaḍnit
footerLinkTerms = Tiwtilin
footerLinkCookies = Inagan n tuqqna footerLinkCookies = Inagan n tuqqna
requirePasswordCheckbox = YEsra awal uffir akken ad isider afaylu-agi
addPasswordButton = rnu awal uffir
changePasswordButton = Snifel
passwordTryAgain = Yir awal uffir. Ɛreḍ tikelt nniḍen. passwordTryAgain = Yir awal uffir. Ɛreḍ tikelt nniḍen.
reportIPInfringement = Neqqes akukel n IP
javascriptRequired = Firefox Send yesra JavaScript javascriptRequired = Firefox Send yesra JavaScript
whyJavascript = Ayɣer firefox Send yesra JavaScript? whyJavascript = Ayɣer firefox Send yesra JavaScript?
enableJavascript = Ma ulac aɣilif rmed JavaScript sakin ɛreḍ tikkelt nniḍen. enableJavascript = Ma ulac aɣilif rmed JavaScript sakin ɛreḍ tikkelt nniḍen.
@@ -113,9 +41,66 @@ enableJavascript = Ma ulac aɣilif rmed JavaScript sakin ɛreḍ tikkelt nniḍe
expiresHoursMinutes = { $hours }Isragen { $minutes }Tisdatin expiresHoursMinutes = { $hours }Isragen { $minutes }Tisdatin
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m" # A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
expiresMinutes = { $minutes }Tisdatin expiresMinutes = { $minutes }Tisdatin
# A short status message shown when a password is successfully set
passwordIsSet = Awal uffir ittwasbaded
# A short status message shown when the user enters a long password # A short status message shown when the user enters a long password
maxPasswordLength = Tuγzi tafellayt n wawal uffir: { $length } maxPasswordLength = Tuγzi tafellayt n wawal uffir: { $length }
# A short status message shown when there was an error setting the password # A short status message shown when there was an error setting the password
passwordSetError = Awal-agi uffir ur izmir ara ad ittwabaded passwordSetError = Awal-agi uffir ur izmir ara ad ittwabaded
## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
-send-brand = Firefox Send
-send-short-brand = Send
-firefox = Firefox
-mozilla = Mozilla
introTitle = Afessas, beṭṭu n ifuyla s wudem uslig
timespanMinutes =
{ $num ->
[one] 1 n tsedat
*[other] { $num } n tsedatin
}
timespanDays =
{ $num ->
[one] 1 n wass
*[other] { $num } n wussan
}
timespanWeeks =
{ $num ->
[one] 1 n dduṛt
*[other] { $num } n ledwaṛ
}
fileCount =
{ $num ->
[one] 1 n ufaylu
*[other] { $num } n ifuyla
}
# byte abbreviation
bytes = B
# kibibyte abbreviation
kb = KAṬ
# mebibyte abbreviation
mb = MAṬ
# gibibyte abbreviation
gb = GAṬ
# localized number and byte abbreviation. example "2.5MB"
fileSize = { $num }{ $units }
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
totalSize = Tuɣzi s umata: { $size }
# the next line after the colon contains a file name
copyLinkDescription = Nɣel aseɣwen akken ad tebḍuḍ afaylu-inek
copyLinkButton = Nɣel aseɣwen
downloadTitle = Sider ifuyla
expiredTitle = Immut useɣwen.
downloadFirefox = Sider { -firefox }
legalDateStamp = Lqem 1.0, azemz n 12 Meɣres 2019
addFilesButton = Fren ifuyla ad tessaliḍ
uploadButton = Sali
# the first part of the string 'Drag and drop files or click to send up to 1GB'
dragAndDropFiles = Ẓuɣer sakin sers ifuyla
addPassword = Ḥrez s wawal uffir
emailPlaceholder = Sekcem imayl inek
signInButton = Kcem/jerred
signOut = Ffeɣ
okButton = IH
downloadingTitle = Azdam
noStreamsOptionDownload = Kemmel akked iminig-a

View File

@@ -4,7 +4,7 @@ siteFeedback = 사용자 의견
importingFile = 가져오는 중… importingFile = 가져오는 중…
encryptingFile = 암호화 중… encryptingFile = 암호화 중…
decryptingFile = 복호화 중… decryptingFile = 복호화 중…
downloadCount = 1 다운로드 downloadCount = { $num } 다운로드
timespanHours = 1 시간 timespanHours = 1 시간
copiedUrl = 복사 완료! copiedUrl = 복사 완료!
unlockInputPlaceholder = 비밀번호 unlockInputPlaceholder = 비밀번호
@@ -18,7 +18,7 @@ fileTooBig = 파일의 크기가 너무 큽니다. { $size } 보다 작아야
linkExpiredAlt = 링크가 만료됨 linkExpiredAlt = 링크가 만료됨
notSupportedHeader = 이 브라우저는 지원되지 않습니다. notSupportedHeader = 이 브라우저는 지원되지 않습니다.
notSupportedLink = 왜 이 브라우저는 지원이 되지 않나요? notSupportedLink = 왜 이 브라우저는 지원이 되지 않나요?
notSupportedOutdatedDetail = 안타깝게도 현재 브라우저 버전에서는 Firefox Send에 사용되는 웹 기술을 지원하지 않습니다. 브라우저 업데이트가 필요합니다. notSupportedOutdatedDetail = 안타깝게도 사용중인 Firefox 버전에서는 Firefox Send에 사용되는 웹 기술을 지원하지 않습니다. 브라우저 업데이트가 필요합니다.
updateFirefox = Firefox 업데이트 updateFirefox = Firefox 업데이트
deletePopupCancel = 아니오 deletePopupCancel = 아니오
deleteButtonHover = 삭제 deleteButtonHover = 삭제
@@ -45,7 +45,7 @@ passwordSetError = 이 비밀번호를 설정할 수 없었습니다
-send-short-brand = Send -send-short-brand = Send
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla
introTitle = 간단하고 안전한 파일 공유 introTitle = 간단하고, 사생활을 보호하는 파일 공유
introDescription = { -send-brand }를 사용하면 종단 암호화와 자동으로 만료되는 링크를 사용해 파일을 공유할 수 있습니다. 안전하게 공유할 수 있고 공유된 파일이 계속 온라인에 남지 않게 됩니다. introDescription = { -send-brand }를 사용하면 종단 암호화와 자동으로 만료되는 링크를 사용해 파일을 공유할 수 있습니다. 안전하게 공유할 수 있고 공유된 파일이 계속 온라인에 남지 않게 됩니다.
notifyUploadEncryptDone = 파일이 암호화 되어서 보낼 수 있게 됐습니다 notifyUploadEncryptDone = 파일이 암호화 되어서 보낼 수 있게 됐습니다
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes' # downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
@@ -82,6 +82,43 @@ totalSize = 전체 크기: { $size }
copyLinkDescription = 링크를 복사해서 파일을 공유하세요: copyLinkDescription = 링크를 복사해서 파일을 공유하세요:
copyLinkButton = 링크 복사 copyLinkButton = 링크 복사
downloadTitle = 파일 다운로드 downloadTitle = 파일 다운로드
downloadDescription = 이 파일은 종단간 암호화 및 자동으로 만료되는 링크를 지원하는 { -send-brand }를 통해 공유되었습니다.
trySendDescription = 간단하고 안전한 파일 공유를 원하시나요? { -send-brand }를 사용해보세요.
# count will always be > 10
tooManyFiles =
{ $count ->
*[other] 한번에 { $count }개의 파일만 업로드 할 수 있습니다.
}
# count will always be > 10
tooManyArchives =
{ $count ->
*[other] { $count }개의 아카이브만 허용됩니다.
}
expiredTitle = 이 링크는 만료되었습니다.
notSupportedDescription = { -send-brand }는 이 브라우저와 작동하지 않습니다. { -send-short-brand }는 최신 { -firefox }와 가장 잘 작동하며, 대부분의 최신 웹 브라우저와도 잘 작동합니다.
downloadFirefox = 다운로드 { -firefox } downloadFirefox = 다운로드 { -firefox }
legalTitle = { -send-short-brand } 개인정보 보호 공지
# A short representation of a countdown timer containing the number of days, hours, and minutes remaining as digits, example "2d 11h 56m" # A short representation of a countdown timer containing the number of days, hours, and minutes remaining as digits, example "2d 11h 56m"
expiresDaysHoursMinutes = { $days }일 { $hours }시간 { $minutes }분 expiresDaysHoursMinutes = { $days }일 { $hours }시간 { $minutes }분
addFilesButton = 업로드할 파일을 선택하세요
uploadButton = 업로드
addPassword = 비밀번호로 파일 보호
emailPlaceholder = 이메일 입력
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
signInSizeBump = { $size }까지 파일을 보낼 수 있게 로그인
signInButton = 로그인/등록
accountBenefitTitle = { -firefox } 계정을 하나 만들거나, 로그인
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
accountBenefitLargeFiles = { $size }까지의 파일 공유
accountBenefitDownloadCount = 더 많은 사람들과 함께 파일 공유
accountBenefitTimeLimit =
{ $count ->
*[other] 최대 { $count }일까지 링크 유지
}
accountBenefitSync = 어떤 기기에서든지 공유된 링크 관리
accountBenefitMoz = 더 많은 { -mozilla } 서비스에 대해 알아보기
signOut = 로그아웃
okButton = 확인
downloadingTitle = 다운로드 중
noStreamsWarning = 이 브라우저는 이렇게 큰 용량의 파일 암호화를 풀 수 없을 수도 있습니다.
noStreamsOptionDownload = 이 브라우저로 계속하기

View File

@@ -54,6 +54,7 @@ passwordSetError = Dette passordet kunne ikkje stillast inn
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla
introTitle = Enkel, privat fildeling introTitle = Enkel, privat fildeling
introDescription = { -send-brand } lèt deg dele filer via ei tidsavgrensa lenke med ende-til-ende-kryptering. På den måten kan du dele filer privat og samstundes vere trygg på at det ikkje ligg på nettet for alltid.
notifyUploadEncryptDone = Fila di er kryptert og klar til å bli sendt notifyUploadEncryptDone = Fila di er kryptert og klar til å bli sendt
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes' # downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
archiveExpiryInfo = Går ut etter { $downloadCount } eller { $timespan } archiveExpiryInfo = Går ut etter { $downloadCount } eller { $timespan }
@@ -93,6 +94,7 @@ totalSize = Total storleik: { $size }
copyLinkDescription = Kopier lenka for å dele fila di: copyLinkDescription = Kopier lenka for å dele fila di:
copyLinkButton = Kopier lenke copyLinkButton = Kopier lenke
downloadTitle = Last ned filer downloadTitle = Last ned filer
downloadDescription = Denne fila vart delt via { -send-brand } med ende-til-ende-kryptering og ei lenke som automatisk går ut.
trySendDescription = Prøv { -send-brand } for enkel og sikker fildeling. trySendDescription = Prøv { -send-brand } for enkel og sikker fildeling.
# count will always be > 10 # count will always be > 10
tooManyFiles = tooManyFiles =
@@ -107,6 +109,7 @@ tooManyArchives =
*[other] Berre { $count } arkiv er lov. *[other] Berre { $count } arkiv er lov.
} }
expiredTitle = Denne lenka har gått ut. expiredTitle = Denne lenka har gått ut.
notSupportedDescription = { -send-brand } fungerer ikkje med denne nettlesaren. { -send-short-brand } fungerer best med siste versjon av { -firefox } og med dei fleste andre nye nettlesarar.
downloadFirefox = Last ned { -firefox } downloadFirefox = Last ned { -firefox }
legalTitle = { -send-short-brand }, om personvernpraksis legalTitle = { -send-short-brand }, om personvernpraksis
legalDateStamp = Versjon 1.0, datert den 12 mars 2019 legalDateStamp = Versjon 1.0, datert den 12 mars 2019
@@ -118,22 +121,22 @@ uploadButton = Last opp
dragAndDropFiles = Dra og slepp filer dragAndDropFiles = Dra og slepp filer
# the second part of the string 'Drag and drop files or click to send up to 1GB' # the second part of the string 'Drag and drop files or click to send up to 1GB'
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB") # $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
orClickWithSize = eller klikk for å senda opp til { $size } orClickWithSize = eller klikk for å sende filer på opptil { $size }
addPassword = Vern med passord addPassword = Vern med passord
emailPlaceholder = Skriv inn e-postadressa di emailPlaceholder = Skriv inn e-postadressa di
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB") # $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
signInSizeBump = LOgg inn for å senda opp til { $size } signInSizeBump = Logg inn for å sende filer på opptil { $size }
signInButton = Logg inn/Registrer deg signInButton = Logg inn/Registrer deg
accountBenefitTitle = Lag ein { -firefox }-konto eller logg inn accountBenefitTitle = Lag ein { -firefox }-konto eller logg inn
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB") # $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
accountBenefitLargeFiles = Del filer opp til { $size } accountBenefitLargeFiles = Del filer opptil { $size }
accountBenefitDownloadCount = Del filer med fleire personar accountBenefitDownloadCount = Del filer med fleire personar
accountBenefitTimeLimit = accountBenefitTimeLimit =
{ $count -> { $count ->
[one] Hald lenka aktiv opp til 1 dag [one] Hald lenka aktiv opptil 1 dag
*[other] Hald lenker aktive opp til { $count } dagar *[other] Hald lenker aktive opptil { $count } dagar
} }
accountBenefitSync = Handter delte filer frå alle einingar accountBenefitSync = Handter delte filer frå kva som helst eining
accountBenefitMoz = Les om andre { -mozilla }-tenster accountBenefitMoz = Les om andre { -mozilla }-tenster
signOut = Logg ut signOut = Logg ut
okButton = OK okButton = OK

View File

@@ -56,6 +56,7 @@ passwordSetError = Această parolă nu a putut fi setată
-firefox = Firefox -firefox = Firefox
-mozilla = Mozilla -mozilla = Mozilla
introTitle = Partajare de fișiere simplă și privată introTitle = Partajare de fișiere simplă și privată
introDescription = { -send-brand } îți permite să partajezi fișiere cu criptare end-to-end și un link care expiră automat. Deci, poți păstra confidențial ceea ce partajezi și te poți asigura că ce ai partajat nu rămâne online pentru totdeauna.
notifyUploadEncryptDone = Fișierul tău este criptat și gata de trimitere notifyUploadEncryptDone = Fișierul tău este criptat și gata de trimitere
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes' # downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
archiveExpiryInfo = Expiră după { $downloadCount } sau { $timespan } archiveExpiryInfo = Expiră după { $downloadCount } sau { $timespan }
@@ -83,10 +84,23 @@ fileCount =
[few] { $num } fișiere [few] { $num } fișiere
*[other] { $num } de fișiere *[other] { $num } de fișiere
} }
# size is a localized number followed by a unit of bytes, ex. 2.5GB # byte abbreviation
bytes = B
# kibibyte abbreviation
kb = KB
# mebibyte abbreviation
mb = MB
# gibibyte abbreviation
gb = GB
# localized number and byte abbreviation. example "2.5MB"
fileSize = { $num }{ $units }
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
totalSize = Mărime totală: { $size } totalSize = Mărime totală: { $size }
# the next line after the colon contains a file name
copyLinkDescription = Copiază linkul pentru partajarea fișierului:
copyLinkButton = Copiază linkul copyLinkButton = Copiază linkul
downloadTitle = Descarcă fișierele downloadTitle = Descarcă fișierele
downloadDescription = Acest fișier a fost partajat prin { -send-brand }, cu criptare end-to-end și un link ce expiră automat.
trySendDescription = Încearcă { -send-brand } pentru o partajare de fișiere simplă și sigură. trySendDescription = Încearcă { -send-brand } pentru o partajare de fișiere simplă și sigură.
# count will always be > 10 # count will always be > 10
tooManyFiles = tooManyFiles =
@@ -103,6 +117,7 @@ tooManyArchives =
*[other] Numai { $count } de arhive sunt permise. *[other] Numai { $count } de arhive sunt permise.
} }
expiredTitle = Acest link a expirat. expiredTitle = Acest link a expirat.
notSupportedDescription = { -send-brand } nu va funcționa pe acest browser. { -send-short-brand } funcționează cel mai bine cu ultima versiune de { -firefox } și va funcționa cu versiunea curentă a majorității browserelor.
downloadFirefox = Descarcă { -firefox } downloadFirefox = Descarcă { -firefox }
legalTitle = Politica de confidențialitate { -send-short-brand } legalTitle = Politica de confidențialitate { -send-short-brand }
legalDateStamp = Versiunea 1.0 din data de 12 martie 2019 legalDateStamp = Versiunea 1.0 din data de 12 martie 2019
@@ -113,14 +128,23 @@ uploadButton = Încarcă
# the first part of the string 'Drag and drop files or click to send up to 1GB' # the first part of the string 'Drag and drop files or click to send up to 1GB'
dragAndDropFiles = Trage și plasează fișierele dragAndDropFiles = Trage și plasează fișierele
# the second part of the string 'Drag and drop files or click to send up to 1GB' # the second part of the string 'Drag and drop files or click to send up to 1GB'
# size is a localized number followed by a unit of bytes, ex. 2.5GB # $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
orClickWithSize = sau dă clic pentru a trimite până la { $size } orClickWithSize = sau dă clic pentru a trimite până la { $size }
addPassword = Protejează cu parolă addPassword = Protejează cu parolă
emailPlaceholder = Introdu e-mailul tău emailPlaceholder = Introdu e-mailul tău
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
signInSizeBump = Autentifică-te ca să trimiți până la { $size }
signInButton = Autentificare/Înregistrare signInButton = Autentificare/Înregistrare
# size is a localized number followed by a unit of bytes, ex. 2.5GB accountBenefitTitle = Creează un cont { -firefox } sau autentifică-te
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
accountBenefitLargeFiles = Partajează fișiere de până la { $size } accountBenefitLargeFiles = Partajează fișiere de până la { $size }
accountBenefitDownloadCount = Partajează fișiere cu mai multe persoane accountBenefitDownloadCount = Partajează fișiere cu mai multe persoane
accountBenefitTimeLimit =
{ $count ->
[one] Păstrează linkurile active până la 1 zi
[few] Păstrează linkurile active până la { $count } zile
*[other] Păstrează linkurile active până la { $count } de zile
}
accountBenefitSync = Gestionează fișierele partajate de pe orice dispozitiv accountBenefitSync = Gestionează fișierele partajate de pe orice dispozitiv
accountBenefitMoz = Află despre celelalte servicii { -mozilla } accountBenefitMoz = Află despre celelalte servicii { -mozilla }
signOut = Deconectare signOut = Deconectare

View File

@@ -1,31 +1,9 @@
# Firefox Send is a brand name and should not be localized. # Firefox Send is a brand name and should not be localized.
title = Firefox Send title = Firefox Send
siteSubtitle = eksperiment web
siteFeedback = Përshtypje 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… importingFile = Po importohet…
verifyingFile = Po verifikohet…
encryptingFile = Po fshehtëzohet… encryptingFile = Po fshehtëzohet…
decryptingFile = Po shfshehtë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 = downloadCount =
{ $num -> { $num ->
[one] 1 shkarkimi [one] 1 shkarkimi
@@ -36,76 +14,26 @@ timespanHours =
[one] 1 ore [one] 1 ore
*[other] { $num } orësh *[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! 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
downloadsFileList = Shkarkime
# Used as header in a column indicating the amount of time left before a
# download link expires (e.g. "10h 5m")
timeFileList = Kohë
# Used as header in a column indicating the number of times a file has been
# downloaded
downloadFileName = Shkarkoje { $filename }
downloadFileSize = ({ $size })
unlockInputLabel = Jepni Fjalëkalimin
unlockInputPlaceholder = Fjalëkalim unlockInputPlaceholder = Fjalëkalim
unlockButtonLabel = Zhbllokoje 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 downloadButtonLabel = Shkarkoje
downloadNotification = Shkarkimi juaj u plotësua.
downloadFinish = Shkarkim i Plotësuar 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 fileSizeProgress = ({ $partialSize } nga { $totalSize }) gjithsej
# Firefox Send is a brand name and should not be localized.
sendYourFilesLink = Provoni Firefox Send 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! 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 }. fileTooBig = Kjo kartelë është shumë e madhe për ngarkim. Do të duhej të ishte më pak se { $size }.
linkExpiredAlt = Lidhja skadoi linkExpiredAlt = Lidhja skadoi
expiredPageHeader = Kjo lidhje ka skaduar ose ska ekzistuar kurrë!
notSupportedHeader = Shfletuesi juaj nuk mbulohet. 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? 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. 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 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 deletePopupCancel = Anuloje
deleteButtonHover = Fshije deleteButtonHover = Fshije
copyUrlHover = Kopjoji URL-në
footerLinkLegal = Ligjore footerLinkLegal = Ligjore
# Test Pilot is a proper name and should not be localized.
footerLinkAbout = Rreth Pilot Testesh
footerLinkPrivacy = Privatësi footerLinkPrivacy = Privatësi
footerLinkTerms = Kushte
footerLinkCookies = Cookies footerLinkCookies = Cookies
requirePasswordCheckbox = Kërko doemos një fjalëkalim për shkarkim të kësaj kartele
addPasswordButton = Shtoni fjalëkalim
changePasswordButton = Ndryshoje
passwordTryAgain = Fjalëkalim i pasaktë. Riprovoni. passwordTryAgain = Fjalëkalim i pasaktë. Riprovoni.
reportIPInfringement = Raportoni Cenim IP-je
javascriptRequired = Firefox Send lyp JavaScript javascriptRequired = Firefox Send lyp JavaScript
whyJavascript = Çi duhet Firefox Send-it JavaScript-i? whyJavascript = Çi duhet Firefox Send-it JavaScript-i?
enableJavascript = Ju lutemi, aktivizoni JavaScript-in dhe riprovoni. enableJavascript = Ju lutemi, aktivizoni JavaScript-in dhe riprovoni.
@@ -113,9 +41,107 @@ enableJavascript = Ju lutemi, aktivizoni JavaScript-in dhe riprovoni.
expiresHoursMinutes = { $hours }h { $minutes }m expiresHoursMinutes = { $hours }h { $minutes }m
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m" # A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
expiresMinutes = { $minutes }m expiresMinutes = { $minutes }m
# A short status message shown when a password is successfully set
passwordIsSet = Fjalëkalimi u caktua
# A short status message shown when the user enters a long password # A short status message shown when the user enters a long password
maxPasswordLength = Gjatësi maksimum fjalëkalimi: { $length } maxPasswordLength = Gjatësi maksimum fjalëkalimi: { $length }
# A short status message shown when there was an error setting the password # A short status message shown when there was an error setting the password
passwordSetError = Ky fjalëkalim su caktua dot passwordSetError = Ky fjalëkalim su caktua dot
## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
-send-brand = Firefox Send
-send-short-brand = Send
-firefox = Firefox
-mozilla = Mozilla
introTitle = Ndarje e thjeshtë, private, kartelash me të tjerët
introDescription = { -send-brand } ju lejon të ndani kartela me të tjerët, me fshehtëzim skaj-më-skaj dhe me një lidhje që skadon automatikisht. Kështu mund ta mbani private atë që ndani me të tjerë dhe të garantoni që gjërat tuaja sdo të qëndrojnë në linjë përgjithmonë.
notifyUploadEncryptDone = Kartela juaj është fshehtëzuar dhe gati për dërgim
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
archiveExpiryInfo = Skadon pas { $downloadCount } ose { $timespan }
timespanMinutes =
{ $num ->
[one] 1 minutë
*[other] { $num } minuta
}
timespanDays =
{ $num ->
[one] 1 ditë
*[other] { $num } ditë
}
timespanWeeks =
{ $num ->
[one] 1 javë
*[other] { $num } javë
}
fileCount =
{ $num ->
[one] 1 kartelë
*[other] { $num } kartela
}
# byte abbreviation
bytes = B
# kibibyte abbreviation
kb = KB
# mebibyte abbreviation
mb = MB
# gibibyte abbreviation
gb = GB
# localized number and byte abbreviation. example "2.5MB"
fileSize = { $num }{ $units }
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
totalSize = Madhësia gjithsej: { $size }
# the next line after the colon contains a file name
copyLinkDescription = Kopjoni lidhjen për dhënien e kartelës tuaj:
copyLinkButton = Kopjoje lidhjen
downloadTitle = Shkarkoni kartela
downloadDescription = Kjo kartelë u nda me të tjerët përmes { -send-brand }, me fshehtëzim skaj-më-skaj dhe një lidhje që skadon automatikisht.
trySendDescription = Provoni { -send-brand }, për ndarje të thjeshtë, të parrezik, kartelash me të tjerët.
# count will always be > 10
tooManyFiles =
{ $count ->
[one] Mund të ngarkohet vetëm 1 kartelë në herë.
*[other] Mund të ngarkohen vetëm { $count } kartela në herë.
}
# count will always be > 10
tooManyArchives =
{ $count ->
[one] Lejohet vetëm 1 arkiv.
*[other] Lejohen vetëm { $count } arkiva.
}
expiredTitle = Kjo lidhje ka skaduar.
notSupportedDescription = { -send-brand } sdo të funksionojë me këtë shfletues. { -send-short-brand } funksionin më mirë me versionin më të ri të { -firefox }, dhe do të funksionojë me versionin e tanishëm të shumicës së shfletuesve.
downloadFirefox = Shkarkoni { -firefox }
legalTitle = Njoftim Privatësie Për { -send-short-brand }
legalDateStamp = Version 1.0, daton 12 mars, 2019
# A short representation of a countdown timer containing the number of days, hours, and minutes remaining as digits, example "2d 11h 56m"
expiresDaysHoursMinutes = { $days }d { $hours }h { $minutes }m
addFilesButton = Përzgjidhni kartela për ngarkim
uploadButton = Ngarkoje
# the first part of the string 'Drag and drop files or click to send up to 1GB'
dragAndDropFiles = Tërhiqni dhe lini kartela
# the second part of the string 'Drag and drop files or click to send up to 1GB'
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
orClickWithSize = ose klikoni që të dërgohen deri në { $size }
addPassword = Mbrojini me fjalëkalim
emailPlaceholder = Jepni email-in tuaj
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
signInSizeBump = Bëni hyrjen që të dërgoni deri më { $size }
signInButton = Hyni/Regjistrohuni
accountBenefitTitle = Krijoni një Llogari { -firefox } ose bëni hyrjen në një të tillë
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
accountBenefitLargeFiles = Ndani me të tjerët kartela deri { $size }
accountBenefitDownloadCount = Ndani kartela me më tepër persona
accountBenefitTimeLimit =
{ $count ->
[one] Mbaji aktive lidhjet për deri 1 ditë
*[other] Mbaji aktive lidhjet për deri { $count } ditë
}
accountBenefitSync = Administroni nga çfarëdo pajisje kartela të përbashkëta
accountBenefitMoz = Mësoni më tepër rreth shërbimesh { -mozilla }
signOut = Dilni
okButton = OK
downloadingTitle = Shkarkim
noStreamsWarning = Ky shfletues mund të mos jetë në gjendje të shfshehtëzojë një kartelë kaq të madhe.
noStreamsOptionCopy = Kopjoje lidhjen për ta hapur në një tjetër shfletues
noStreamsOptionFirefox = Provoni shfletuesin tonë të parapëlqyer
noStreamsOptionDownload = Vazhdo me këtë shfletues

View File

@@ -1,31 +1,9 @@
# Firefox Send is a brand name and should not be localized. # Firefox Send is a brand name and should not be localized.
title = Firefox Send title = Firefox Send
siteSubtitle = веб експеримент
siteFeedback = Повратне информације siteFeedback = Повратне информације
uploadPageHeader = Приватно и шифровано дељење датотека
uploadPageExplainer = Шаљите датотеке преко безбедне, приватне и шифроване везе која самостално истиче да ваше ствари не би остале на нету заувек.
uploadPageLearnMore = Сазнајте више
uploadPageDropMessage = Превуците ваше датотеке овде да бисте кренули са отпремањем
uploadPageSizeMessage = За бољи рад предлажемо да датотека не буде већа од 1GB
uploadPageBrowseButton = Изаберите датотеку на рачунару
uploadPageBrowseButton1 = Изаберите датотеку за отпремање
uploadPageMultipleFilesAlert = Отпремање фасцикли или више датотека тренутно није подржано.
uploadPageBrowseButtonTitle = Отпреми датотеку
uploadingPageProgress = Отпремам { $filename } ({ $size })
importingFile = Увозим… importingFile = Увозим…
verifyingFile = Потврђујем…
encryptingFile = Шифрујем… encryptingFile = Шифрујем…
decryptingFile = Дешифрујем… decryptingFile = Дешифрујем…
notifyUploadDone = Ваше отпремање је завршено.
uploadingPageMessage = Након што се ваша датотека отпреми, моћи ћете да подесите опције истека.
uploadingPageCancel = Откажи отпремање
uploadCancelNotification = Ваше отпремање је отказано.
uploadingPageLargeFileMessage = Ово је велика датотека и отпремање може потрајати. Будите стрпљиви!
uploadingFileNotification = Обавести ме када се отпремање заврши.
uploadSuccessConfirmHeader = Спреман за слање
uploadSvgAlt = Отпреми
uploadSuccessTimingHeader = Веза ка вашој датотеци ће истећи након једног преузимања или након 24 сата.
expireInfo = Веза ка вашој датотеци ће истећи након { $downloadCount } или { $timespan }.
downloadCount = downloadCount =
{ $num -> { $num ->
[one] преузимања [one] преузимања
@@ -38,76 +16,26 @@ timespanHours =
[few] сата [few] сата
*[other] сати *[other] сати
} }
copyUrlFormLabelWithName = Ископирајте и поделите везу да бисте послали вашу датотеку: { $filename }
copyUrlFormButton = Копирај у оставу
copiedUrl = Ископирано! copiedUrl = Ископирано!
deleteFileButton = Обриши датотеку
sendAnotherFileLink = Пошаљи другу датотеку
# Alternative text used on the download link/button (indicates an action).
downloadAltText = Преузми
downloadsFileList = Преузимања
# Used as header in a column indicating the amount of time left before a
# download link expires (e.g. "10h 5m")
timeFileList = Време
# Used as header in a column indicating the number of times a file has been
# downloaded
downloadFileName = Преузимање датотеке { $filename }
downloadFileSize = ({ $size })
unlockInputLabel = Унесите лозинку
unlockInputPlaceholder = Лозинка unlockInputPlaceholder = Лозинка
unlockButtonLabel = Откључај unlockButtonLabel = Откључај
downloadFileTitle = Преузми шифровану датотеку
# Firefox Send is a brand name and should not be localized.
downloadMessage = Ваш пријатељ вам је послао датотеку преко услуге Firefox Send која вам омогућава да делите датотеке преко безбедне, приватне и шифроване везе која самостално истиче да ваше ствари не би остале на нету заувек.
# Text and title used on the download link/button (indicates an action).
downloadButtonLabel = Преузми downloadButtonLabel = Преузми
downloadNotification = Ваше преузимање је завршено.
downloadFinish = Преузимање је завршено. downloadFinish = Преузимање је завршено.
# This message is displayed when uploading or downloading a file, e.g. "(1,3 MB of 10 MB)".
fileSizeProgress = ({ $partialSize } од { $totalSize }) fileSizeProgress = ({ $partialSize } од { $totalSize })
# Firefox Send is a brand name and should not be localized.
sendYourFilesLink = Испробајте Firefox Send sendYourFilesLink = Испробајте Firefox Send
downloadingPageProgress = Преузимам датотеку { $filename } ({ $size })
downloadingPageMessage = Оставите овај језичак отвореним док не добавимо вашу датотеку и док је не дешифрујемо.
errorAltText = Грешка при отпремању
errorPageHeader = Нешто је пошло наопако! errorPageHeader = Нешто је пошло наопако!
errorPageMessage = Догодила се грешка приликом отпремања датотеке.
errorPageLink = Пошаљи другу датотеку
fileTooBig = Та датотека је превелика за отпремање. Треба да буде мања од { $size }. fileTooBig = Та датотека је превелика за отпремање. Треба да буде мања од { $size }.
linkExpiredAlt = Веза је истекла linkExpiredAlt = Веза је истекла
expiredPageHeader = Веза је или истекла, или никада није ни постојала!
notSupportedHeader = Ваш прегледач није подржан. notSupportedHeader = Ваш прегледач није подржан.
# Firefox Send is a brand name and should not be localized.
notSupportedDetail = Нажалост, овај прегледач не подржава веб технологију која омогућава Firefox Send. Мораћете да пробате са другим прегледачем. Ми предлажемо Firefox!
notSupportedLink = Зашто мој прегледач није подржан? notSupportedLink = Зашто мој прегледач није подржан?
notSupportedOutdatedDetail = Нажалост, ово издање Firefox-a не подржава веб технологију која омогућава Firefox Send. Мораћете да ажурирате ваш прегледач. notSupportedOutdatedDetail = Нажалост, ово издање Firefox-a не подржава веб технологију која омогућава Firefox Send. Мораћете да ажурирате ваш прегледач.
updateFirefox = Ажурирај Firefox updateFirefox = Ажурирај Firefox
downloadFirefoxButtonSub = Бесплатно преузимање
uploadedFile = Датотека
copyFileList = URL за копирање
# expiryFileList is used as a column header
expiryFileList = Истиче за
deleteFileList = Брисање
nevermindButton = Занемари
legalHeader = Услови и приватност
legalNoticeTestPilot = Firefox Send је тренутно Тест Пилот експеримент и подложан је <a>условима коришћења</a> Тест Пилота и <a>обавештењем о приватности</a>. Можете сазнати више о овом експерименту и о његовом сакупљању података <a>овде</a>.
legalNoticeMozilla = Коришћење Firefox Send веб сајта подлеже Mozilla-ином <a>обавештењу о приватности на веб сајтовима</a> и <a>условима коришћења веб сајтова</a>.
deletePopupText = Обрисати ову датотеку?
deletePopupYes = Да
deletePopupCancel = Откажи deletePopupCancel = Откажи
deleteButtonHover = Обриши deleteButtonHover = Обриши
copyUrlHover = Ископирај URL
footerLinkLegal = Правни подаци footerLinkLegal = Правни подаци
# Test Pilot is a proper name and should not be localized.
footerLinkAbout = О Тест Пилоту
footerLinkPrivacy = Приватност footerLinkPrivacy = Приватност
footerLinkTerms = Услови
footerLinkCookies = Колачићи footerLinkCookies = Колачићи
requirePasswordCheckbox = Захтевај лозинку да би преузео ову датотеку
addPasswordButton = Додај лозинку
changePasswordButton = Промени
passwordTryAgain = Нетачна лозинка. Пробајте поново. passwordTryAgain = Нетачна лозинка. Пробајте поново.
reportIPInfringement = Пријавите IP прекршај
javascriptRequired = За Firefox Send је потребан JavaScript javascriptRequired = За Firefox Send је потребан JavaScript
whyJavascript = Зашто је потребан JavaScript за Firefox Send? whyJavascript = Зашто је потребан JavaScript за Firefox Send?
enableJavascript = Омогућите JavaScript и пробајте поново. enableJavascript = Омогућите JavaScript и пробајте поново.
@@ -115,9 +43,114 @@ enableJavascript = Омогућите JavaScript и пробајте понов
expiresHoursMinutes = { $hours }ч { $minutes }м expiresHoursMinutes = { $hours }ч { $minutes }м
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m" # A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
expiresMinutes = { $minutes }м expiresMinutes = { $minutes }м
# A short status message shown when a password is successfully set
passwordIsSet = Лозинка је постављена
# A short status message shown when the user enters a long password # A short status message shown when the user enters a long password
maxPasswordLength = Највећа дужина лозинке: { $length } maxPasswordLength = Највећа дужина лозинке: { $length }
# A short status message shown when there was an error setting the password # A short status message shown when there was an error setting the password
passwordSetError = Не можемо поставити ову лозинку passwordSetError = Не можемо поставити ову лозинку
## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
-send-brand = Firefox Send
-send-short-brand = Send
-firefox = Firefox
-mozilla = Mozilla
introTitle = Једноставно и приватно дељење датотека
introDescription = { -send-brand } вам дозвољава да делите датотеке које су шифроване с краја на крај преко везе која самостално истиче. Тако да можете приватно делити ваше ствари које неће остати на вебу заувек.
notifyUploadEncryptDone = Ваша датотека је шифрована и спремна за слање
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
archiveExpiryInfo = Истиче након { $downloadCount } или { $timespan }
timespanMinutes =
{ $num ->
[one] { $num } минут
[few] { $num } минута
*[other] { $num } минута
}
timespanDays =
{ $num ->
[one] { $num } дан
[few] { $num } дана
*[other] { $num } дана
}
timespanWeeks =
{ $num ->
[one] { $num } недеља
[few] { $num } недеље
*[other] { $num } недеља
}
fileCount =
{ $num ->
[one] { $num } датотека
[few] { $num } датотеке
*[other] { $num } датотека
}
# byte abbreviation
bytes = B
# kibibyte abbreviation
kb = KB
# mebibyte abbreviation
mb = MB
# gibibyte abbreviation
gb = GB
# localized number and byte abbreviation. example "2.5MB"
fileSize = { $num }{ $units }
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
totalSize = Укупна величина: { $size }
# the next line after the colon contains a file name
copyLinkDescription = Копирајте везу да бисте поделили вашу датотеку:
copyLinkButton = Копирај везу
downloadTitle = Преузми датотеке
downloadDescription = Ова датотека је подељена преко услуге { -send-brand } која омогућава шифровање с краја на крај преко везе која самостално истиче.
trySendDescription = Пробајте { -send-brand } за једноставно и безбедно дељење датотека.
# count will always be > 10
tooManyFiles =
{ $count ->
[one] Можете отпремити само { $count } датотеку истовремено.
[few] Можете отпремити само { $count } датотеке истовремено.
*[other] Можете отпремити само { $count } датотека истовремено.
}
# count will always be > 10
tooManyArchives =
{ $count ->
[one] Дозвољена је само { $count } архива.
[few] Дозвољене су само { $count } архиве.
*[other] Дозвољено је само { $count } архива.
}
expiredTitle = Ова веза је истекла.
notSupportedDescription = { -send-brand } неће радити у овом прегледачу. { -send-short-brand } најбоље ради са последњим издањем прегледача { -firefox } и радиће са тренутним издањима већине других прегледача.
downloadFirefox = Преузми { -firefox }
legalTitle = Политика приватности услуге { -send-short-brand }
legalDateStamp = Издање 1.0, датум објављивања 12. март 2019. године
# A short representation of a countdown timer containing the number of days, hours, and minutes remaining as digits, example "2d 11h 56m"
expiresDaysHoursMinutes = { $days }д { $hours }ч { $minutes }м
addFilesButton = Изаберите датотеке за отпремање
uploadButton = Отпреми
# the first part of the string 'Drag and drop files or click to send up to 1GB'
dragAndDropFiles = Превуците и пустите датотеке
# the second part of the string 'Drag and drop files or click to send up to 1GB'
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
orClickWithSize = или кликните за слање садржаја великог до { $size }
addPassword = Заштитите лозинком
emailPlaceholder = Унесите вашу е-адресу
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
signInSizeBump = Пријавите се да пошаљете садржај до { $size }
signInButton = Пријава/регистрација
accountBenefitTitle = Направите { -firefox } налог или се пријавите
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
accountBenefitLargeFiles = Поделите датотеке велике до { $size }
accountBenefitDownloadCount = Поделите датотеке са више особа
accountBenefitTimeLimit =
{ $count ->
[one] Остави везе активним највише { $count } дан
[few] Остави везе активним највише { $count } дана
*[other] Остави везе активним највише { $count } дана
}
accountBenefitSync = Управљајте подељеним датотекама са било ког уређаја
accountBenefitMoz = Сазнајте више о другим { -mozilla }-иним услугама
signOut = Одјава
okButton = У реду
downloadingTitle = Преузимам
noStreamsWarning = Овај прегледач можда неће моћи да дешифрује оволико велику датотеку.
noStreamsOptionCopy = Копирај везу за отварање у другом прегледачу
noStreamsOptionFirefox = Пробајте наш омиљени прегледач
noStreamsOptionDownload = Наставите у овом прегледачу

View File

@@ -55,7 +55,7 @@ passwordSetError = Det här lösenordet kunde inte ställas in
-mozilla = Mozilla -mozilla = Mozilla
introTitle = Enkel, privat fildelning introTitle = Enkel, privat fildelning
introDescription = { -send-brand } låter dig dela filer med end-to-end-kryptering och en länk som automatiskt upphör. Så att du kan behålla det du delar privat och se till att dina saker inte stannar online för alltid. introDescription = { -send-brand } låter dig dela filer med end-to-end-kryptering och en länk som automatiskt upphör. Så att du kan behålla det du delar privat och se till att dina saker inte stannar online för alltid.
notifyUploadEncryptDone = Din fil är krypterad och redo att skicka notifyUploadEncryptDone = Din fil är krypterad och redo att skickas
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes' # downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
archiveExpiryInfo = Förfaller efter { $downloadCount } eller { $timespan } archiveExpiryInfo = Förfaller efter { $downloadCount } eller { $timespan }
timespanMinutes = timespanMinutes =

147
public/locales/zgh/send.ftl Normal file
View File

@@ -0,0 +1,147 @@
# Firefox Send is a brand name and should not be localized.
title = ⴼⴰⵢⵔⴼⵓⴽⵙ ⵙⵉⵏⴷ
siteFeedback = ⵜⴰⵙⴷⵎⵉⵔⵜ
importingFile = ⴰⵙⴽⵛⵎ...
encryptingFile = ⴰⵙⵙⵏⵜⵍ...
decryptingFile = ⵜⵓⴽⴽⵙⴰ ⵓⵙⵙⵏⵜⵍ...
downloadCount =
{ $num ->
[one] { $num } ⵜⴰⴳⴰⵎⵜ
*[other] { $num } ⵜⴰⴳⴰⵎⵉⵏ
}
timespanHours =
{ $num ->
[one] { $num } ⵜⵙⵔⴰⴳⵜ
*[other] { $num } ⵜⵙⵔⴰⴳⵉⵏ
}
copiedUrl = ⵉⵏⵖⵍ!
unlockInputPlaceholder = ⵜⴰⴳⵓⵔⵉ ⵓⵣⵔⴰⵢ
unlockButtonLabel = ⴽⴽⵙ ⴰⵔⴳⴰⵍ
downloadButtonLabel = ⴰⴳⵎ
downloadFinish = ⵉⵎⴷⴰ ⵡⴰⴳⴰⵎ
fileSizeProgress = ({ $partialSize } ⵙⴳ { $totalSize })
sendYourFilesLink = ⴰⵔⵎ ⴼⴰⵢⵔⴼⵓⴽⵙ ⵙⵉⵏⴷ
errorPageHeader = ⵜⵙⴰⵔ ⴽⵔⴰ ⵜⵣⴳⴰⵍⵜ!
fileTooBig = ⵉⵎⵇⵇⵓⵔ ⴱⴰⵀⵔⴰ ⵓⴼⴰⵢⵍⵓ ⴰ ⵖⴼ ⵓⵙⵙⴽⵜⵔ. ⵉⵅⵚⵚⴰ ⵜ ⴰⴷ ⵢⵉⵍⵉ ⴷⴷⴰⵡ { $size }
linkExpiredAlt = ⵉⵎⵎⵓⵜ ⵓⵙⵖⵏ
notSupportedHeader = ⵓⵔ ⵉⵜⵜⵡⴰⵏⵏⴰⵍ ⵓⵎⵙⵙⴰⵔⴰ ⵏⵏⵓⵏ.
notSupportedLink = ⵎⴰⵖⴼ ⵓⵔ ⵉⵜⵜⵡⴰⵏⵏⴰⵍ ⵓⵎⵙⵙⴰⵔⴰ ⵉⵏⵓ?
notSupportedOutdatedDetail = ⵙ ⵜⵎⴳⵕⵥⴰ, ⵜⴰⵍⵇⵇⵎⵜ ⴰ ⴼⴰⵢⵔⴼⵓⴽⵙ ⵓⵔ ⴷⴰ ⵜⴻⵜⵜⵏⴰⵍ ⵜⴰⵜⵉⴽⵏⵓⵍⵓⵊⵉⵜ ⵓⵡⵉⴱ ⵏⵏⴰ ⵙ ⵉⵙⵡⵓⵔⵓⵢ ⴼⴰⵢⵔⴼⵓⴽⵙ ⵙⵉⵏⴷ. ⵔⴰⴷ ⵜⴰⵙⵔⵎ ⴰⴷ ⵜⵙⴷⵖⵉⵎ ⴰⵎⵙⵙⴰⵔⴰ ⵏⵏⵓⵏ.
updateFirefox = ⵙⴷⵖⵉ ⴼⴰⵢⵔⴼⵓⴽⵙ
deletePopupCancel = ⵙⵔ
deleteButtonHover = ⴽⴽⵙ
footerLinkLegal = ⵓⵙⴹⵉⴼ
footerLinkPrivacy = ⵜⵉⵏⵏⵓⵜⵍⴰ
footerLinkCookies = ⵉⴽⵓⴽⵉⵜⵏ
passwordTryAgain = ⵜⴰⴳⵓⵔⵉ ⵓⵣⵔⴰⵢ ⵓⵔ ⵢⵓⵖⴷⵏ. ⴰⵔⵎ ⴷⴰⵖ.
javascriptRequired = ⴷⴰ ⵉⵜⵜⴰⵙⵔ ⴼⴰⵢⵔⴼⵓⴽⵙ ⵙⵉⵏⴷ ⵊⴰⴼⴰⵙⴽⵔⵉⴱⵜ
whyJavascript = ⵎⴰⵖⴼ ⴷⴰ ⵉⵜⵜⴰⵙⵔ ⴼⴰⵢⵔⴼⵓⴽⵙ ⵙⵉⵏⴷ ⵊⴰⴼⴰⵙⴽⵔⵉⴱⵜ?
enableJavascript = ⵎⴽ ⵜⵓⴼⴰⵎ, ⵙⵏⵓⵛⵛⴳⴰⵜ ⵊⴰⴼⴰⵙⴽⵔⵉⴱⵜ, ⵜⴰⵔⵎⵎ ⴷⴰⵖ.
# A short representation of a countdown timer containing the number of hours and minutes remaining as digits, example "13h 47m"
expiresHoursMinutes = { $hours }ⵙⵔⴳ { $minutes }ⵙⴷ
# A short representation of a countdown timer containing the number of minutes remaining as digits, example "56m"
expiresMinutes = { $minutes }ⵙⴷ
# A short status message shown when the user enters a long password
maxPasswordLength = ⵜⵉⵖⵣⵉ ⵜⴰⵎⵓⵣⵣⵓⵔⵜ ⵜⴳⵓⵔⵉ ⵓⵣⵔⴰⵢ: { $length }
# A short status message shown when there was an error setting the password
passwordSetError = ⵓⵔ ⵜⵣⵎⵉⵔ ⵜⴳⵓⵔⵉ ⴰ ⵓⵣⵔⴰⵢ ⴰⴷ ⵜⴻⵜⵜⵓⵙⵖⵍ
## Send version 2 strings
# Firefox Send, Send, Firefox, Mozilla are proper names and should not be localized
-send-brand = ⴼⴰⵢⵔⴼⵓⴽⵙ ⵙⵉⵏⴷ
-send-short-brand = ⵙⵉⵏⴷ
-firefox = ⴼⴰⵢⵔⴼⵓⴽⵙ
-mozilla = ⵎⵓⵣⵉⵍⴰ
introTitle = ⴰⴱⵟⵟⵓ ⴰⴼⵔⴰⵔ ⴷ ⵡⵓⵙⵍⵉⴳ ⵉⴼⵓⵢⵍⴰ
introDescription = ⴷⴰ ⴽⵯⵏ ⵉⵜⵜⴰⵊⵊⴰ { -send-brand } ⴰⴷ ⵜⴱⴹⵓⵎ ⵉⴼⵓⵢⵍⴰ ⵙ ⵓⵙⵙⵏⵜⵍ ⵙⴳ ⵜⴰⵎⴰ ⴰⵔ ⵜⴰⵎⴰ ⴷ ⵢⴰⵏ ⵓⵙⵖⵏ ⵏⵏⴰ ⵉⵜⵜⵎⵎⵜⴰⵜⵏ ⵙ ⵓⵡⵔⵎⴰⵏ. ⵙ ⵓⵢⴰ, ⵜⵣⵎⵔⵎ ⴰⴷ ⵜⴰⵊⵊⵎ ⴰⵢⵏⵏⴰ ⵜⴱⵟⵟⵓⵎ ⴷ ⵓⵙⵍⵉⴳ, ⵜⵙⵙⵉⵖⵥⵉⵏⵎ ⵎⴰⵙ ⵓⵔ ⵔⴰⴷ ⴰⴱⴷⴰ ⵉⵇⵇⵉⵎ ⵡⴰⵏⵏⴰⴷ ⵏⵏⵓⵏ ⴳ ⵉⴼⵉⵍⵉ.
notifyUploadEncryptDone = ⵉⵏⵜⵍ ⵓⴼⴰⵢⵍⵓ ⵏⵏⵓⵏ, ⵉⵃⵢⵢⵍ ⵉ ⵡⴰⵣⴰⵏ
# downloadCount is from the downloadCount string and timespan is a timespanMinutes string. ex. 'Expires after 2 downloads or 25 minutes'
archiveExpiryInfo = ⴰⴷ ⵉⵎⵎⵜ ⴷⴼⴼⵉⵔ { $downloadCount } ⵏⵉⵖ ⴷ { $timespan }
timespanMinutes =
{ $num ->
[one] { $num } ⵜⵓⵙⴷⵉⴷⵜ
*[other] { $num } ⵜⵓⵙⴷⵉⴷⵉⵏ
}
timespanDays =
{ $num ->
[one] { $num } ⵡⴰⵙⵙ
*[other] { $num } ⵡⵓⵙⵙⴰⵏ
}
timespanWeeks =
{ $num ->
[one] { $num } ⵉⵎⴰⵍⴰⵙⵙ
*[other] { $num } ⵉⵎⴰⵍⴰⵙⵙⵏ
}
fileCount =
{ $num ->
[one] { $num } ⵓⴼⴰⵢⵍⵓ
*[other] { $num } ⵉⴼⵓⵢⵍⴰ
}
# byte abbreviation
bytes = ⵜ
# kibibyte abbreviation
kb = ⴽⵜ
# mebibyte abbreviation
mb = ⵎⵜ
# gibibyte abbreviation
gb = ⵊⵜ
# localized number and byte abbreviation. example "2.5MB"
fileSize = { $num }{ $units }
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
totalSize = ⵜⵉⴷⴷⵉ ⵉⵎⵎⵓⵜⵜⵔⵏ: { $size }
# the next line after the colon contains a file name
copyLinkDescription = ⵙⵙⵏⵖⵍⴰⵜ ⴰⵙⵖⵏ ⴰⴼⴰⴷ ⴰⴷ ⵜⴱⴹⵓⵎ ⴰⴼⴰⵢⵍⵓ ⵏⵏⵓⵏ:
copyLinkButton = ⵙⵙⵏⵖⵍ ⴰⵙⵖⵏ
downloadTitle = ⴰⴳⵎ ⵉⴼⵓⵢⵍⴰ
downloadDescription = ⵉⵜⵜⵓⴱⴹⴰ ⵓⴼⴰⵢⵍⵓ ⴰ ⵙⴳ { -send-brand } ⵙ ⵓⵙⵙⵏⵜⵍ ⵙⴳ ⵜⴰⵎⴰ ⴰⵔ ⵜⴰⵎⴰ ⴷ ⵢⴰⵏ ⵓⵙⵖⵏ ⵏⵏⴰ ⵉⵜⵜⵎⵎⵜⴰⵜⵏ ⵙ ⵓⵡⵔⵎⴰⵏ.
trySendDescription = ⴰⵔⵎ { -send-brand } ⵉ ⵓⴱⵟⵟⵓ ⴰⴼⵔⴰⵔ ⴷ ⵡⵓⴼⵔⵉⴳ.
# count will always be > 10
tooManyFiles =
{ $count ->
[one] ⵖⴰⵙ { $count } ⵓⴼⴰⵢⵍⵓ ⴰⵢ ⵉⵣⵎⵔⵏ ⴰⴷ ⵉⴽⵜⵔ ⴳ ⵢⴰⵜ ⵜⵉⴽⴽⵍⵜ.
*[other] ⵖⴰⵙ { $count } ⵉⴼⵓⵢⵍⴰ ⴰⵢ ⵉⵣⵎⵔⵏ ⴰⴷ ⴽⵜⵔⵏ ⴳ ⵢⴰⵜ ⵜⵉⴽⴽⵍⵜ.
}
# count will always be > 10
tooManyArchives =
{ $count ->
[one] ⵖⴰⵙ { $count } ⵜⵎⵃⴹⵉⵜ ⴰⵢ ⵉⵔⵔⴳⵏ.
*[other] ⵖⴰⵙ { $count } ⵜⵎⵃⴹⴰⵢ ⴰⵢ ⵉⵔⵔⴳⵏ.
}
expiredTitle = ⵉⵎⵎⵓⵜ ⵓⵙⵖⵏ ⴰ.
notSupportedDescription = ⵓⵔ ⵔⴰⴷ ⵉⵙⵡⵓⵔⵉ { -send-brand } ⵙ ⵓⵎⵙⵙⴰⵔⴰ ⴰ. ⴷⴰ ⵉⵙⵡⵓⵔⵓⵢ { -send-short-brand } ⵎⵍⵉⵃ ⵙ ⵜⵍⵇⵇⵎⵜ ⵜⴰⵎⴳⴳⴰⵔⵓⵜ { -firefox }, ⴷ ⵔⴰⴷ ⵉⵙⵡⵓⵔⵉ ⵙ ⵜⵍⵇⵇⵎⵜ ⵜⴰⵎⵉⵔⴰⵏⵜ ⵓⵎⴰⵜⴰ ⵉⵎⵙⵙⴰⵔⴰⵜⵏ.
downloadFirefox = ⴰⴳⵎ { -firefox }
legalTitle = ⵜⵓⵙⵎⵉⵔⵜ ⵜⵉⵏⵏⵓⵜⵍⴰ { -send-short-brand }
legalDateStamp = ⵜⴰⵍⵇⵇⵎⵜ 1.0, ⵜⵉⵏ 12 ⵎⴰⵕⵚ 2019
# A short representation of a countdown timer containing the number of days, hours, and minutes remaining as digits, example "2d 11h 56m"
expiresDaysHoursMinutes = { $days }ⵙ { $hours }ⵙⵔⴳ { $minutes }ⵙⴷ
addFilesButton = ⵙⵜⵢ ⵉⴼⵓⵢⵍⴰ ⵉ ⵓⵙⵙⴽⵜⵔ
uploadButton = ⵙⵙⴽⵜⵔ
# the first part of the string 'Drag and drop files or click to send up to 1GB'
dragAndDropFiles = ⵙⵓⵛⵛⴹⴰⵜ, ⵜⵙⵔⵙⵎ ⵉⴼⵓⵢⵍⴰ
# the second part of the string 'Drag and drop files or click to send up to 1GB'
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
orClickWithSize = ⵏⵉⵖ ⵜⴽⵍⵉⴽⵉⵎ ⴰⴼⴰⴷ ⴰⴷ ⵜⴰⵣⵏⵎ ⴰⵔ { $size }
addPassword = ⴰⵔⵢ ⵙ ⵜⴳⵓⵔⵉ ⵓⵣⵔⴰⵢ
emailPlaceholder = ⵙⵙⴽⵛⵎⴰⵜ ⵉⵎⴰⵢⵍ ⵏⵏⵓⵏ
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
signInSizeBump = ⴽⵛⵎ ⴰⴼⴰⴷ ⴰⴷ ⵜⴰⵣⵏⴷ ⴰⵔ { $size }
signInButton = ⴽⵛⵎ/ⵣⵎⵎⴻⵎ
accountBenefitTitle = ⵙⵏⴼⵍⵓⵍ ⴰⵎⵉⴹⴰⵏ { -firefox } ⵏⵉⵖ ⵜⵣⵎⵎⴻⵎⴷ
# $size is the size of the file, displayed using the fileSize message as format (e.g. "2.5MB")
accountBenefitLargeFiles = ⴱⴹⵓ ⵉⴼⵓⵢⵍⴰ ⴰⵔ { $size }
accountBenefitDownloadCount = ⴱⴹⵓ ⵉⴼⵓⵢⵍⴰ ⴰⴽⴷ ⵡⵓⴳⴳⴰⵔ ⵎⴷⴷⵏ
accountBenefitTimeLimit =
{ $count ->
[one] ⴰⵊⵊⴰⵜ ⵉⵙⵖⴰⵏ ⴰⴷ ⵜⵜⵏⵓⵛⵛⵓⴳⵏ ⴰⵔ { $count } ⵡⴰⵙⵙ
*[other] ⴰⵊⵊⴰⵜ ⵉⵙⵖⴰⵏ ⴰⴷ ⵜⵜⵏⵓⵛⵛⵓⴳⵏ ⴰⵔ { $count } ⵡⵓⵙⵙⴰⵏ
}
accountBenefitSync = ⵙⵡⵓⴷⴷⵡⴰⵜ ⵉⴼⵓⵢⵍⴰ ⵜⵜⵓⴱⴹⴰⵏⵉⵏ ⵙⴳ ⴽⵓ ⴰⵍⵍⴰⵍ
accountBenefitMoz = ⵍⵎⴷ ⵖⴼ ⵜⵏⵓⴼⴰ ⵢⴰⴹⵏⵉⵏ { -mozilla }
signOut = ⴼⴼⵖ
okButton = ⵡⴰⵅⵅⴰ
downloadingTitle = ⴰⴳⴰⵎ
noStreamsWarning = ⵉⵣⵎⵔ ⵓⵎⵙⵙⴰⵔⴰ ⴰ ⴰⴷ ⵓⵔ ⵉⵖⴰⵢ ⴰⴷ ⵉⴽⴽⵙ ⴰⵙⵙⵏⵜⵍ ⵉ ⵢⴰⵏ ⵓⴼⴰⵢⵍⵓ ⵉⵎⵇⵇⵓⵔⵏ ⵙ ⵡⴰⵏⵛⵜ ⴰ.
noStreamsOptionCopy = ⵙⵙⵏⵖⵍⴰⵜ ⴰⵙⵖⵏ ⴰⴼⴰⴷ ⴰⴷ ⵜ ⵜⵕⵥⵎⵎ ⴳ ⴽⵔⴰ ⵓⵎⵙⵙⴰⵔⴰ ⵢⴰⴹⵏ
noStreamsOptionFirefox = ⴰⵔⵎⴰⵜ ⴰⵎⵙⵙⴰⵔⴰ ⵏⵏⵖ ⴰⵎⵓⴼⴰⵢ
noStreamsOptionDownload = ⵙⵎⴷ ⵙ ⵓⵎⵙⵙⴰⵔⴰ ⴰ

View File

@@ -7,7 +7,7 @@ const expressWs = require('express-ws');
const morgan = require('morgan'); const morgan = require('morgan');
const config = require('../config'); const config = require('../config');
const ID_REGEX = '([0-9a-fA-F]{10})'; const ID_REGEX = '([0-9a-fA-F]{10, 16})';
module.exports = function(app, devServer) { module.exports = function(app, devServer) {
const wsapp = express(); const wsapp = express();

View File

@@ -11,9 +11,7 @@ const langData = require('cldr-core/supplemental/likelySubtags.json');
const acceptLanguages = /(([a-zA-Z]+(-[a-zA-Z0-9]+){0,2})|\*)(;q=[0-1](\.[0-9]+)?)?/g; const acceptLanguages = /(([a-zA-Z]+(-[a-zA-Z0-9]+){0,2})|\*)(;q=[0-1](\.[0-9]+)?)?/g;
function allLangs() { function allLangs() {
return fs.readdirSync( return fs.readdirSync(path.join(__dirname, '..', '..', 'public', 'locales'));
path.join(__dirname, '..', '..', 'dist', 'public', 'locales')
);
} }
const languages = config.l10n_dev ? allLangs() : availableLanguages; const languages = config.l10n_dev ? allLangs() : availableLanguages;

View File

@@ -11,7 +11,7 @@ const filelist = require('./filelist');
const clientConstants = require('../clientConstants'); const clientConstants = require('../clientConstants');
const IS_DEV = config.env === 'development'; const IS_DEV = config.env === 'development';
const ID_REGEX = '([0-9a-fA-F]{10})'; const ID_REGEX = '([0-9a-fA-F]{10,16})';
module.exports = function(app) { module.exports = function(app) {
app.set('trust proxy', true); app.set('trust proxy', true);
@@ -48,7 +48,8 @@ module.exports = function(app) {
imgSrc: [ imgSrc: [
"'self'", "'self'",
'https://*.dev.lcip.org', 'https://*.dev.lcip.org',
'https://firefoxusercontent.com' 'https://firefoxusercontent.com',
'https://secure.gravatar.com'
], ],
scriptSrc: [ scriptSrc: [
"'self'", "'self'",

View File

@@ -8,7 +8,7 @@ const { encryptedSize } = require('../../app/utils');
const log = mozlog('send.upload'); const log = mozlog('send.upload');
module.exports = async function(req, res) { module.exports = async function(req, res) {
const newId = crypto.randomBytes(5).toString('hex'); const newId = crypto.randomBytes(8).toString('hex');
const metadata = req.header('X-File-Metadata'); const metadata = req.header('X-File-Metadata');
const auth = req.header('Authorization'); const auth = req.header('Authorization');
if (!metadata || !auth) { if (!metadata || !auth) {

View File

@@ -23,7 +23,7 @@ module.exports = function(ws, req) {
ws.once('message', async function(message) { ws.once('message', async function(message) {
try { try {
const newId = crypto.randomBytes(5).toString('hex'); const newId = crypto.randomBytes(8).toString('hex');
const owner = crypto.randomBytes(10).toString('hex'); const owner = crypto.randomBytes(10).toString('hex');
const fileInfo = JSON.parse(message); const fileInfo = JSON.parse(message);

View File

@@ -12,7 +12,8 @@ const webJsOptions = {
[ [
'@babel/preset-env', '@babel/preset-env',
{ {
useBuiltIns: 'entry' useBuiltIns: 'entry',
corejs: 3
} }
] ]
], ],