Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/passman.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpassman-bot <info@passman.cc>2020-09-21 00:52:13 +0300
committerpassman-bot <info@passman.cc>2020-09-21 00:52:13 +0300
commit30bf561d97221015f14c88c3ba7c53a9983ef0d2 (patch)
tree163adfc4d01ff2bfc9ba8d0836c5c6f13ceee066
parent953b127676e19b349af76b5e3cd160c909a5d076 (diff)
Passman 2.3.62.3.6
Bump app version Signed-off-by: passman-bot <info@passman.cc>
-rw-r--r--appinfo/info.xml6
-rw-r--r--controller/translationcontroller.php4
-rw-r--r--docs/api.md198
-rw-r--r--js/passman.min.js4
-rw-r--r--l10n/af.js67
-rw-r--r--l10n/af.json65
-rw-r--r--l10n/ar.js35
-rw-r--r--l10n/ar.json35
-rw-r--r--l10n/ast.js22
-rw-r--r--l10n/ast.json22
-rw-r--r--l10n/az.js45
-rw-r--r--l10n/az.json43
-rw-r--r--l10n/be.js23
-rw-r--r--l10n/be.json21
-rw-r--r--l10n/bg.js13
-rw-r--r--l10n/bg.json13
-rw-r--r--l10n/bn_BD.js44
-rw-r--r--l10n/bn_BD.json42
-rw-r--r--l10n/br.js61
-rw-r--r--l10n/br.json59
-rw-r--r--l10n/bs.js40
-rw-r--r--l10n/bs.json38
-rw-r--r--l10n/ca.js2
-rw-r--r--l10n/ca.json2
-rw-r--r--l10n/cs.js147
-rw-r--r--l10n/cs.json147
-rw-r--r--l10n/cy_GB.js42
-rw-r--r--l10n/cy_GB.json40
-rw-r--r--l10n/da.js6
-rw-r--r--l10n/da.json6
-rw-r--r--l10n/de.js26
-rw-r--r--l10n/de.json26
-rw-r--r--l10n/de_DE.js12
-rw-r--r--l10n/de_DE.json12
-rw-r--r--l10n/el.js174
-rw-r--r--l10n/el.json174
-rw-r--r--l10n/en_GB.js43
-rw-r--r--l10n/en_GB.json43
-rw-r--r--l10n/eo.js59
-rw-r--r--l10n/eo.json59
-rw-r--r--l10n/es.js16
-rw-r--r--l10n/es.json16
-rw-r--r--l10n/es_419.js5
-rw-r--r--l10n/es_419.json5
-rw-r--r--l10n/es_AR.js8
-rw-r--r--l10n/es_AR.json8
-rw-r--r--l10n/es_CL.js6
-rw-r--r--l10n/es_CL.json6
-rw-r--r--l10n/es_CO.js6
-rw-r--r--l10n/es_CO.json6
-rw-r--r--l10n/es_CR.js6
-rw-r--r--l10n/es_CR.json6
-rw-r--r--l10n/es_DO.js6
-rw-r--r--l10n/es_DO.json6
-rw-r--r--l10n/es_EC.js6
-rw-r--r--l10n/es_EC.json6
-rw-r--r--l10n/es_GT.js6
-rw-r--r--l10n/es_GT.json6
-rw-r--r--l10n/es_HN.js5
-rw-r--r--l10n/es_HN.json5
-rw-r--r--l10n/es_MX.js6
-rw-r--r--l10n/es_MX.json6
-rw-r--r--l10n/es_NI.js5
-rw-r--r--l10n/es_NI.json5
-rw-r--r--l10n/es_PA.js5
-rw-r--r--l10n/es_PA.json5
-rw-r--r--l10n/es_PE.js5
-rw-r--r--l10n/es_PE.json5
-rw-r--r--l10n/es_PR.js5
-rw-r--r--l10n/es_PR.json5
-rw-r--r--l10n/es_PY.js5
-rw-r--r--l10n/es_PY.json5
-rw-r--r--l10n/es_SV.js6
-rw-r--r--l10n/es_SV.json6
-rw-r--r--l10n/es_UY.js5
-rw-r--r--l10n/es_UY.json5
-rw-r--r--l10n/et_EE.js71
-rw-r--r--l10n/et_EE.json69
-rw-r--r--l10n/eu.js207
-rw-r--r--l10n/eu.json207
-rw-r--r--l10n/fa.js368
-rw-r--r--l10n/fa.json366
-rw-r--r--l10n/fi.js9
-rw-r--r--l10n/fi.json9
-rw-r--r--l10n/fr.js6
-rw-r--r--l10n/fr.json6
-rw-r--r--l10n/gl.js16
-rw-r--r--l10n/gl.json16
-rw-r--r--l10n/he.js82
-rw-r--r--l10n/he.json82
-rw-r--r--l10n/hr.js2
-rw-r--r--l10n/hr.json2
-rw-r--r--l10n/hu.js10
-rw-r--r--l10n/hu.json10
-rw-r--r--l10n/hy.js38
-rw-r--r--l10n/hy.json36
-rw-r--r--l10n/ia.js50
-rw-r--r--l10n/ia.json48
-rw-r--r--l10n/id.js67
-rw-r--r--l10n/id.json65
-rw-r--r--l10n/is.js4
-rw-r--r--l10n/is.json4
-rw-r--r--l10n/it.js8
-rw-r--r--l10n/it.json8
-rw-r--r--l10n/ja.js2
-rw-r--r--l10n/ja.json2
-rw-r--r--l10n/ka_GE.js6
-rw-r--r--l10n/ka_GE.json6
-rw-r--r--l10n/km.js42
-rw-r--r--l10n/km.json40
-rw-r--r--l10n/kn.js34
-rw-r--r--l10n/kn.json32
-rw-r--r--l10n/ko.js6
-rw-r--r--l10n/ko.json6
-rw-r--r--l10n/lb.js44
-rw-r--r--l10n/lb.json42
-rw-r--r--l10n/lt_LT.js24
-rw-r--r--l10n/lt_LT.json24
-rw-r--r--l10n/lv.js12
-rw-r--r--l10n/lv.json12
-rw-r--r--l10n/mk.js67
-rw-r--r--l10n/mk.json65
-rw-r--r--l10n/mn.js59
-rw-r--r--l10n/mn.json57
-rw-r--r--l10n/ms_MY.js33
-rw-r--r--l10n/ms_MY.json31
-rw-r--r--l10n/nb.js6
-rw-r--r--l10n/nb.json6
-rw-r--r--l10n/nl.js2
-rw-r--r--l10n/nl.json2
-rw-r--r--l10n/nn_NO.js48
-rw-r--r--l10n/nn_NO.json46
-rw-r--r--l10n/oc.js42
-rw-r--r--l10n/oc.json40
-rw-r--r--l10n/pl.js48
-rw-r--r--l10n/pl.json48
-rw-r--r--l10n/ps.js23
-rw-r--r--l10n/ps.json21
-rw-r--r--l10n/pt_BR.js4
-rw-r--r--l10n/pt_BR.json4
-rw-r--r--l10n/pt_PT.js76
-rw-r--r--l10n/pt_PT.json74
-rw-r--r--l10n/ro.js67
-rw-r--r--l10n/ro.json65
-rw-r--r--l10n/ru.js49
-rw-r--r--l10n/ru.json49
-rw-r--r--l10n/si_LK.js36
-rw-r--r--l10n/si_LK.json34
-rw-r--r--l10n/sk.js59
-rw-r--r--l10n/sk.json59
-rw-r--r--l10n/sl.js265
-rw-r--r--l10n/sl.json265
-rw-r--r--l10n/sq.js5
-rw-r--r--l10n/sq.json5
-rw-r--r--l10n/sr.js8
-rw-r--r--l10n/sr.json8
-rw-r--r--l10n/sr@latin.js43
-rw-r--r--l10n/sr@latin.json41
-rw-r--r--l10n/sv.js31
-rw-r--r--l10n/sv.json31
-rw-r--r--l10n/ta_LK.js38
-rw-r--r--l10n/ta_LK.json36
-rw-r--r--l10n/th.js53
-rw-r--r--l10n/th.json51
-rw-r--r--l10n/tr.js24
-rw-r--r--l10n/tr.json24
-rw-r--r--l10n/ug.js37
-rw-r--r--l10n/ug.json35
-rw-r--r--l10n/uk.js86
-rw-r--r--l10n/uk.json84
-rw-r--r--l10n/ur_PK.js28
-rw-r--r--l10n/ur_PK.json26
-rw-r--r--l10n/uz.js32
-rw-r--r--l10n/uz.json30
-rw-r--r--l10n/vi.js80
-rw-r--r--l10n/vi.json78
-rw-r--r--l10n/zh_CN.js36
-rw-r--r--l10n/zh_CN.json36
-rw-r--r--l10n/zh_HK.js39
-rw-r--r--l10n/zh_HK.json37
-rw-r--r--l10n/zh_TW.js49
-rw-r--r--l10n/zh_TW.json49
182 files changed, 6682 insertions, 572 deletions
diff --git a/appinfo/info.xml b/appinfo/info.xml
index d2c8c8bc..f9e6c166 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -19,7 +19,7 @@ Features:
- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )
For an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)
]]></description>
- <version>2.3.5</version>
+ <version>2.3.6</version>
<licence>agpl</licence>
<author homepage="https://github.com/brantje">Sander Brand</author>
<author homepage="https://github.com/animalillo">Marcos Zuriaga</author>
@@ -42,8 +42,8 @@ For an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)
<database>pgsql</database>
<database min-version="5.5">mysql</database>
<lib>openssl</lib>
- <nextcloud min-version="17" max-version="18"/>
- <owncloud min-version="17" max-version="18"/>
+ <nextcloud min-version="17" max-version="19"/>
+ <owncloud min-version="10" max-version="10"/>
</dependencies>
<background-jobs>
diff --git a/controller/translationcontroller.php b/controller/translationcontroller.php
index 16aa7a0d..b29873c5 100644
--- a/controller/translationcontroller.php
+++ b/controller/translationcontroller.php
@@ -425,7 +425,7 @@ class TranslationController extends ApiController {
'expired.share' => $this->trans->t('Awwhh… credential not found. Maybe it expired'),
//compromised credentials
- 'compromised.label' => $this->trans->t('Compromise!'),
+ 'compromised.label' => $this->trans->t('Mark as Compromised'),
'compromised.warning.list' => $this->trans->t('Compromised!'),
'compromised.warning' => $this->trans->t('This password is compromised. You can only remove this warning by changing the password.'),
@@ -436,7 +436,7 @@ class TranslationController extends ApiController {
'search.settings.input.custom_fields' => $this->trans->t('Custom Fields'),
'search.settings.input.password' => $this->trans->t('Password'),
'search.settings.input.description' => $this->trans->t('Description'),
- 'search.settings.input.url' => $this->trans->t('Url'),
+ 'search.settings.input.url' => $this->trans->t('URL'),
'search.settings.title' => $this->trans->t('Custom Search:'),
'search.settings.defaults_button' => $this->trans->t('Revert to defaults'),
diff --git a/docs/api.md b/docs/api.md
index 4fd9dea0..322c2ba0 100644
--- a/docs/api.md
+++ b/docs/api.md
@@ -1,7 +1,7 @@
Passman offers a api for extensions.
-##Table of Contents
+## Table of Contents
- [Authentication](#authentication)
- [Get vaults](#get-vaults-get)
- [Get vault](#get-vault-get)
@@ -9,129 +9,150 @@ Passman offers a api for extensions.
- [Update credential](#update-credential-patch)
- [Decrypting Credentials / challenge password ](#decrypting-credentials--challenge-password)
-##Authentication
-All apps must authenticate.
-For example in JS it would be:
+
+## Authentication
+
+All apps must authenticate.
+For example in JS it would be:
+
```
- var encodedLogin ="MyUsername:MyPassword";
- var request = new XMLHttpRequest({"mozAnon": true});
- request.setRequestHeader("Authorization", "Basic " + encodedLogin);
- request.setRequestHeader("Content-Type", "application/json");
+var encodedLogin ="MyUsername:MyPassword";
+var request = new XMLHttpRequest({"mozAnon": true});
+request.setRequestHeader("Authorization", "Basic " + encodedLogin);
+request.setRequestHeader("Content-Type", "application/json");
```
-An other option is logging in via HTTP Basic auth.
+
+An other option is logging in via HTTP Basic auth.
In this case an example would be:
`https://MyUsername:Mypassword@nextcloudinstance.com`
-Connectivity via http is possible, but you *MUST* warn that their login credentials are send in plaintext.
-The credentials from passman are still send encrypted if http is used.
-
-
-###Get vaults [GET]
-`/apps/passman/api/v2/vaults`
-This will return a list of vaults.
+Connectivity via http is possible, but you *MUST* warn that their login credentials are send in plaintext.
+The credentials from Passman are still send encrypted if http is used.
+
+
+### Get vaults [GET]
+
+`/apps/passman/api/v2/vaults`
+
+This will return a list of vaults.
A vault consists of the following properties:
+
```
-{
- "vault_id":17,
- "guid":"64DDADA1-54A6-4BE6-AA2F-BCB2EC8E8455",
- "name":"test",
- "created":1484175865,
- "public_sharing_key":"-----BEGIN PUBLIC KEY-----\r\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1h6j+vLcvJDUgOi6VkjzDKTT0\r\nLXluie7+VH2DjnzeXO2QalHI1qAzd\/G51r2NArgwzKMm9g\/kGN1V+mcX3j2WZu\/E\r\n8o5jk83LaSlgcG9GIbOyXUXJlflvctnhPa8Em3GoM\/ZfO2EkkDYANTKvyiyRXroa\r\ny6m2C+aJVzxmhj5tvQIDAQAB\r\n-----END PUBLIC KEY-----\r\n",
- "last_access":1484216598,
- "challenge_password":"eyJpdiI6IkFEWExocDFsRWFZSEZhc0cxY2NzUnciLCJ2IjoxLCJpdGVyIjoxMDAwLCJrcyI6MjU2LCJ0cyI6NjQsIm1vZGUiOiJjY20iLCJhZGF0YSI6IiIsImNpcGhlciI6ImFlcyIsInNhbHQiOiJFVmdZLzIxNmI0USIsImN0IjoiU3d5QUkzdVFqenh1cStwaCJ9"
+{
+ "vault_id": 17,
+ "guid": "64DDADA1-54A6-4BE6-AA2F-BCB2EC8E8455",
+ "name": "test",
+ "created": 1484175865,
+ "public_sharing_key": "-----BEGIN PUBLIC KEY-----\r\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1h6j+vLcvJDUgOi6VkjzDKTT0\r\nLXluie7+VH2DjnzeXO2QalHI1qAzd\/G51r2NArgwzKMm9g\/kGN1V+mcX3j2WZu\/E\r\n8o5jk83LaSlgcG9GIbOyXUXJlflvctnhPa8Em3GoM\/ZfO2EkkDYANTKvyiyRXroa\r\ny6m2C+aJVzxmhj5tvQIDAQAB\r\n-----END PUBLIC KEY-----\r\n",
+ "last_access": 1484216598,
+ "challenge_password": "eyJpdiI6IkFEWExocDFsRWFZSEZhc0cxY2NzUnciLCJ2IjoxLCJpdGVyIjoxMDAwLCJrcyI6MjU2LCJ0cyI6NjQsIm1vZGUiOiJjY20iLCJhZGF0YSI6IiIsImNpcGhlciI6ImFlcyIsInNhbHQiOiJFVmdZLzIxNmI0USIsImN0IjoiU3d5QUkzdVFqenh1cStwaCJ9"
}
```
+
Short description of the fields:
-- `vault_id` -Id of the vault, only used within queries
-- `vault_guid` - The guid of the vault, use this when making requests
-- `name` - The name of the vault
-- `created` - Timestamp when the vault was created
-- `public_sharing_key` - The public sharing key
-- `last_access` - Timestamp when the vault was last accessed
+- `vault_id` - Id of the vault, only used within queries.
+- `vault_guid` - The guid of the vault, use this when making requests.
+- `name` - The name of the vault.
+- `created` - Timestamp when the vault was created.
+- `public_sharing_key` - The public sharing key.
+- `last_access` - Timestamp when the vault was last accessed.
- `challenge_password` - Encrypted challenge password, you can use this to check if the user provided a correct password.
-###Get vault [GET]
-`/apps/passman/api/v2/vaults/{vault_guid}`
-To request the credentials.
-This will return the requested vault and it's credentials
+### Get vault [GET]
+
+`/apps/passman/api/v2/vaults/{vault_guid}`
+
+To request the credentials.
+This will return the requested vault and it's credentials:
+
```$xslt
-created:1484175865
+created: 1484175865
credentials: [{}, {}, ....]
-guid:"64DDADA1-54A6-4BE6-AA2F-BCB2EC8E8455"
-last_access:1484217620
+guid: "64DDADA1-54A6-4BE6-AA2F-BCB2EC8E8455"
+last_access: 1484217620
name: "test"
private_sharing_key ''
public_sharing_key: ''
-sharing_keys_generated:1484175865
-vault_id:17
-vault_settings:null
-```
+sharing_keys_generated: 1484175865
+vault_id: 17
+vault_settings: null
+```
+
To see how a credential is build up (which fields), see [create new credential](#Create new credential).
-###Create new credential [POST]
-`/api/v2/credentials`
+
+### Create new credential [POST]
+
+`/api/v2/credentials`
+
Fields:
+
```$xslt
var credential = {
- 'vault_id': int,
- 'label': string,
- 'description': string,
- 'created': null (Will be set server side),
- 'changed': null (Will be set server side),
- 'tags': [{text: string}],
- 'email': string,
- 'username': string,
- 'password': string (encrypted),
- 'url': string (encrypted),
- 'favicon': string,
- 'renew_interval': int,
- 'expire_time': timestamp,
- 'delete_time': timestamp,
- 'files': [
- {
- filename: string,
- size: int (size in bytes),
- mimetype: string,
- guid: string (generated server side)
- }
- ],
- 'custom_fields': [
- {
- label: string,
- value: string,
- secret: bool,
- field_type: 'text'
- }
- ],
- 'otp': {},
- 'hidden': false
- };
+ 'vault_id': int,
+ 'label': string,
+ 'description': string,
+ 'created': null (Will be set server side),
+ 'changed': null (Will be set server side),
+ 'tags': [{text: string}],
+ 'email': string,
+ 'username': string,
+ 'password': string (encrypted),
+ 'url': string (encrypted),
+ 'favicon': string,
+ 'renew_interval': int,
+ 'expire_time': timestamp,
+ 'delete_time': timestamp,
+ 'files': [
+ {
+ filename: string,
+ size: int (size in bytes),
+ mimetype: string,
+ guid: string (generated server side)
+ }
+ ],
+ 'custom_fields': [
+ {
+ label: string,
+ value: string,
+ secret: bool,
+ field_type: 'text'
+ }
+ ],
+ 'otp': {},
+ 'hidden': false
+};
```
+
There are a few special fields here.
+
- `custom_fields`
- - Those fields are added by the user `secret` indicates if the value should be hidden
+ - Those fields are added by the user `secret` indicates if the value should be hidden.
When posting to the endpoint the following fields are required:
- `label`
- `vault_id`
-###Update credential [PATCH]
-`/api/v2/credentials/{credential_guid}`
+
+### Update credential [PATCH]
+
+`/api/v2/credentials/{credential_guid}`
See [create new credential](#Create new credential).
+### Decrypting Credentials / challenge password
-###Decrypting Credentials / challenge password
-For the client side encryption we use [sjcl](https://github.com/bitwiseshiftleft/sjcl)
+For the client side encryption we use [sjcl](https://github.com/bitwiseshiftleft/sjcl).
To decrypt (and test if a valid key is given):
+
```$xslt
var encryption_config = {
- adata: "",
- iter: 1000,
- ks: 256,
- mode: 'ccm',
- ts: 64
+ adata: "",
+ iter: 1000,
+ ks: 256,
+ mode: 'ccm',
+ ts: 64
};
var ciphertext = window.atob(encryptedString);
var rp = {};
@@ -142,8 +163,8 @@ try {
}
```
-For decrypting the credentials you can use above code.
-The following fields are encrypted:
+For decrypting the credentials you can use above code.
+The following fields are encrypted:
- `description`
- `username`
- `password`
@@ -154,4 +175,3 @@ The following fields are encrypted:
- `tags`
- `url`
-
diff --git a/js/passman.min.js b/js/passman.min.js
index 177f8761..8f2af4da 100644
--- a/js/passman.min.js
+++ b/js/passman.min.js
@@ -1,4 +1,4 @@
-/*! Passman 2019-11-17 */
+/*! Passman 2020-09-20 */
function _a1(b,a){this.count=b,this._fc=a,this.__defineGetter__("Count",function(){return this.count}),this.__defineGetter__("_dm",function(){return this._fc})}function _a2(a,c,b){this._bm=a,b?this._do=new Array(c,b):this._do=new Array(c),this.__defineGetter__("_bo",function(){return this._bm}),this.__defineGetter__("_dn",function(){return this._bm*this._fo}),this.__defineGetter__("_fo",function(){for(var e=0,d=0;d<this._do.length;d++)e+=this._do[d].length;return e}),this._fb=function(){return this._do}}function _a3(k,l,h,g,f,e){this._bs=k,this._ar=l,this._do=new Array(h,g,f,e);for(var j=0,b=h._bo,a=h._fb(),d=0;d<a.length;d++){var c=a[d];j+=c.Count*(c._dm+b)}this._br=j,this.__defineGetter__("_fd",function(){return this._bs}),this.__defineGetter__("_as",function(){return this._ar}),this.__defineGetter__("_dp",function(){return this._br}),this.__defineGetter__("_cr",function(){return 17+4*this._bs}),this._aq=function(){var r=this._cr,o=new _ac(r);o._bq(0,0,9,9),o._bq(r-8,0,8,9),o._bq(0,r-8,9,8);for(var n=this._ar.length,m=0;m<n;m++)for(var q=this._ar[m]-2,s=0;s<n;s++)0==m&&(0==s||s==n-1)||m==n-1&&0==s||o._bq(this._ar[s]-2,q,5,5);return o._bq(6,9,1,r-17),o._bq(9,6,r-17,1),this._bs>6&&(o._bq(r-11,0,3,6),o._bq(0,r-11,6,3)),o},this._bu=function(i){return this._do[i.ordinal()]}}function _ay(){return new Array(new _a3(1,new Array,new _a2(7,new _a1(1,19)),new _a2(10,new _a1(1,16)),new _a2(13,new _a1(1,13)),new _a2(17,new _a1(1,9))),new _a3(2,new Array(6,18),new _a2(10,new _a1(1,34)),new _a2(16,new _a1(1,28)),new _a2(22,new _a1(1,22)),new _a2(28,new _a1(1,16))),new _a3(3,new Array(6,22),new _a2(15,new _a1(1,55)),new _a2(26,new _a1(1,44)),new _a2(18,new _a1(2,17)),new _a2(22,new _a1(2,13))),new _a3(4,new Array(6,26),new _a2(20,new _a1(1,80)),new _a2(18,new _a1(2,32)),new _a2(26,new _a1(2,24)),new _a2(16,new _a1(4,9))),new _a3(5,new Array(6,30),new _a2(26,new _a1(1,108)),new _a2(24,new _a1(2,43)),new _a2(18,new _a1(2,15),new _a1(2,16)),new _a2(22,new _a1(2,11),new _a1(2,12))),new _a3(6,new Array(6,34),new _a2(18,new _a1(2,68)),new _a2(16,new _a1(4,27)),new _a2(24,new _a1(4,19)),new _a2(28,new _a1(4,15))),new _a3(7,new Array(6,22,38),new _a2(20,new _a1(2,78)),new _a2(18,new _a1(4,31)),new _a2(18,new _a1(2,14),new _a1(4,15)),new _a2(26,new _a1(4,13),new _a1(1,14))),new _a3(8,new Array(6,24,42),new _a2(24,new _a1(2,97)),new _a2(22,new _a1(2,38),new _a1(2,39)),new _a2(22,new _a1(4,18),new _a1(2,19)),new _a2(26,new _a1(4,14),new _a1(2,15))),new _a3(9,new Array(6,26,46),new _a2(30,new _a1(2,116)),new _a2(22,new _a1(3,36),new _a1(2,37)),new _a2(20,new _a1(4,16),new _a1(4,17)),new _a2(24,new _a1(4,12),new _a1(4,13))),new _a3(10,new Array(6,28,50),new _a2(18,new _a1(2,68),new _a1(2,69)),new _a2(26,new _a1(4,43),new _a1(1,44)),new _a2(24,new _a1(6,19),new _a1(2,20)),new _a2(28,new _a1(6,15),new _a1(2,16))),new _a3(11,new Array(6,30,54),new _a2(20,new _a1(4,81)),new _a2(30,new _a1(1,50),new _a1(4,51)),new _a2(28,new _a1(4,22),new _a1(4,23)),new _a2(24,new _a1(3,12),new _a1(8,13))),new _a3(12,new Array(6,32,58),new _a2(24,new _a1(2,92),new _a1(2,93)),new _a2(22,new _a1(6,36),new _a1(2,37)),new _a2(26,new _a1(4,20),new _a1(6,21)),new _a2(28,new _a1(7,14),new _a1(4,15))),new _a3(13,new Array(6,34,62),new _a2(26,new _a1(4,107)),new _a2(22,new _a1(8,37),new _a1(1,38)),new _a2(24,new _a1(8,20),new _a1(4,21)),new _a2(22,new _a1(12,11),new _a1(4,12))),new _a3(14,new Array(6,26,46,66),new _a2(30,new _a1(3,115),new _a1(1,116)),new _a2(24,new _a1(4,40),new _a1(5,41)),new _a2(20,new _a1(11,16),new _a1(5,17)),new _a2(24,new _a1(11,12),new _a1(5,13))),new _a3(15,new Array(6,26,48,70),new _a2(22,new _a1(5,87),new _a1(1,88)),new _a2(24,new _a1(5,41),new _a1(5,42)),new _a2(30,new _a1(5,24),new _a1(7,25)),new _a2(24,new _a1(11,12),new _a1(7,13))),new _a3(16,new Array(6,26,50,74),new _a2(24,new _a1(5,98),new _a1(1,99)),new _a2(28,new _a1(7,45),new _a1(3,46)),new _a2(24,new _a1(15,19),new _a1(2,20)),new _a2(30,new _a1(3,15),new _a1(13,16))),new _a3(17,new Array(6,30,54,78),new _a2(28,new _a1(1,107),new _a1(5,108)),new _a2(28,new _a1(10,46),new _a1(1,47)),new _a2(28,new _a1(1,22),new _a1(15,23)),new _a2(28,new _a1(2,14),new _a1(17,15))),new _a3(18,new Array(6,30,56,82),new _a2(30,new _a1(5,120),new _a1(1,121)),new _a2(26,new _a1(9,43),new _a1(4,44)),new _a2(28,new _a1(17,22),new _a1(1,23)),new _a2(28,new _a1(2,14),new _a1(19,15))),new _a3(19,new Array(6,30,58,86),new _a2(28,new _a1(3,113),new _a1(4,114)),new _a2(26,new _a1(3,44),new _a1(11,45)),new _a2(26,new _a1(17,21),new _a1(4,22)),new _a2(26,new _a1(9,13),new _a1(16,14))),new _a3(20,new Array(6,34,62,90),new _a2(28,new _a1(3,107),new _a1(5,108)),new _a2(26,new _a1(3,41),new _a1(13,42)),new _a2(30,new _a1(15,24),new _a1(5,25)),new _a2(28,new _a1(15,15),new _a1(10,16))),new _a3(21,new Array(6,28,50,72,94),new _a2(28,new _a1(4,116),new _a1(4,117)),new _a2(26,new _a1(17,42)),new _a2(28,new _a1(17,22),new _a1(6,23)),new _a2(30,new _a1(19,16),new _a1(6,17))),new _a3(22,new Array(6,26,50,74,98),new _a2(28,new _a1(2,111),new _a1(7,112)),new _a2(28,new _a1(17,46)),new _a2(30,new _a1(7,24),new _a1(16,25)),new _a2(24,new _a1(34,13))),new _a3(23,new Array(6,30,54,74,102),new _a2(30,new _a1(4,121),new _a1(5,122)),new _a2(28,new _a1(4,47),new _a1(14,48)),new _a2(30,new _a1(11,24),new _a1(14,25)),new _a2(30,new _a1(16,15),new _a1(14,16))),new _a3(24,new Array(6,28,54,80,106),new _a2(30,new _a1(6,117),new _a1(4,118)),new _a2(28,new _a1(6,45),new _a1(14,46)),new _a2(30,new _a1(11,24),new _a1(16,25)),new _a2(30,new _a1(30,16),new _a1(2,17))),new _a3(25,new Array(6,32,58,84,110),new _a2(26,new _a1(8,106),new _a1(4,107)),new _a2(28,new _a1(8,47),new _a1(13,48)),new _a2(30,new _a1(7,24),new _a1(22,25)),new _a2(30,new _a1(22,15),new _a1(13,16))),new _a3(26,new Array(6,30,58,86,114),new _a2(28,new _a1(10,114),new _a1(2,115)),new _a2(28,new _a1(19,46),new _a1(4,47)),new _a2(28,new _a1(28,22),new _a1(6,23)),new _a2(30,new _a1(33,16),new _a1(4,17))),new _a3(27,new Array(6,34,62,90,118),new _a2(30,new _a1(8,122),new _a1(4,123)),new _a2(28,new _a1(22,45),new _a1(3,46)),new _a2(30,new _a1(8,23),new _a1(26,24)),new _a2(30,new _a1(12,15),new _a1(28,16))),new _a3(28,new Array(6,26,50,74,98,122),new _a2(30,new _a1(3,117),new _a1(10,118)),new _a2(28,new _a1(3,45),new _a1(23,46)),new _a2(30,new _a1(4,24),new _a1(31,25)),new _a2(30,new _a1(11,15),new _a1(31,16))),new _a3(29,new Array(6,30,54,78,102,126),new _a2(30,new _a1(7,116),new _a1(7,117)),new _a2(28,new _a1(21,45),new _a1(7,46)),new _a2(30,new _a1(1,23),new _a1(37,24)),new _a2(30,new _a1(19,15),new _a1(26,16))),new _a3(30,new Array(6,26,52,78,104,130),new _a2(30,new _a1(5,115),new _a1(10,116)),new _a2(28,new _a1(19,47),new _a1(10,48)),new _a2(30,new _a1(15,24),new _a1(25,25)),new _a2(30,new _a1(23,15),new _a1(25,16))),new _a3(31,new Array(6,30,56,82,108,134),new _a2(30,new _a1(13,115),new _a1(3,116)),new _a2(28,new _a1(2,46),new _a1(29,47)),new _a2(30,new _a1(42,24),new _a1(1,25)),new _a2(30,new _a1(23,15),new _a1(28,16))),new _a3(32,new Array(6,34,60,86,112,138),new _a2(30,new _a1(17,115)),new _a2(28,new _a1(10,46),new _a1(23,47)),new _a2(30,new _a1(10,24),new _a1(35,25)),new _a2(30,new _a1(19,15),new _a1(35,16))),new _a3(33,new Array(6,30,58,86,114,142),new _a2(30,new _a1(17,115),new _a1(1,116)),new _a2(28,new _a1(14,46),new _a1(21,47)),new _a2(30,new _a1(29,24),new _a1(19,25)),new _a2(30,new _a1(11,15),new _a1(46,16))),new _a3(34,new Array(6,34,62,90,118,146),new _a2(30,new _a1(13,115),new _a1(6,116)),new _a2(28,new _a1(14,46),new _a1(23,47)),new _a2(30,new _a1(44,24),new _a1(7,25)),new _a2(30,new _a1(59,16),new _a1(1,17))),new _a3(35,new Array(6,30,54,78,102,126,150),new _a2(30,new _a1(12,121),new _a1(7,122)),new _a2(28,new _a1(12,47),new _a1(26,48)),new _a2(30,new _a1(39,24),new _a1(14,25)),new _a2(30,new _a1(22,15),new _a1(41,16))),new _a3(36,new Array(6,24,50,76,102,128,154),new _a2(30,new _a1(6,121),new _a1(14,122)),new _a2(28,new _a1(6,47),new _a1(34,48)),new _a2(30,new _a1(46,24),new _a1(10,25)),new _a2(30,new _a1(2,15),new _a1(64,16))),new _a3(37,new Array(6,28,54,80,106,132,158),new _a2(30,new _a1(17,122),new _a1(4,123)),new _a2(28,new _a1(29,46),new _a1(14,47)),new _a2(30,new _a1(49,24),new _a1(10,25)),new _a2(30,new _a1(24,15),new _a1(46,16))),new _a3(38,new Array(6,32,58,84,110,136,162),new _a2(30,new _a1(4,122),new _a1(18,123)),new _a2(28,new _a1(13,46),new _a1(32,47)),new _a2(30,new _a1(48,24),new _a1(14,25)),new _a2(30,new _a1(42,15),new _a1(32,16))),new _a3(39,new Array(6,26,54,82,110,138,166),new _a2(30,new _a1(20,117),new _a1(4,118)),new _a2(28,new _a1(40,47),new _a1(7,48)),new _a2(30,new _a1(43,24),new _a1(22,25)),new _a2(30,new _a1(10,15),new _a1(67,16))),new _a3(40,new Array(6,30,58,86,114,142,170),new _a2(30,new _a1(19,118),new _a1(6,119)),new _a2(28,new _a1(18,47),new _a1(31,48)),new _a2(30,new _a1(34,24),new _a1(34,25)),new _a2(30,new _a1(20,15),new _a1(61,16))))}function _ae(i,f,c,h,e,b,g,d,a){this.a11=i,this.a12=h,this.a13=g,this.a21=f,this.a22=e,this.a23=d,this.a31=c,this.a32=b,this.a33=a,this._ad=function(w){for(var t=w.length,A=this.a11,z=this.a12,v=this.a13,r=this.a21,q=this.a22,o=this.a23,m=this.a31,k=this.a32,j=this.a33,n=0;n<t;n+=2){var u=w[n],s=w[n+1],l=v*u+o*s+j;w[n]=(A*u+r*s+m)/l,w[n+1]=(z*u+q*s+k)/l}},this._fp=function(m,k){for(var r=m.length,l=0;l<r;l++){var j=m[l],q=k[l],o=this.a13*j+this.a23*q+this.a33;m[l]=(this.a11*j+this.a21*q+this.a31)/o,k[l]=(this.a12*j+this.a22*q+this.a32)/o}},this._fr=function(){return new _ae(this.a22*this.a33-this.a23*this.a32,this.a23*this.a31-this.a21*this.a33,this.a21*this.a32-this.a22*this.a31,this.a13*this.a32-this.a12*this.a33,this.a11*this.a33-this.a13*this.a31,this.a12*this.a31-this.a11*this.a32,this.a12*this.a23-this.a13*this.a22,this.a13*this.a21-this.a11*this.a23,this.a11*this.a22-this.a12*this.a21)},this.times=function(j){return new _ae(this.a11*j.a11+this.a21*j.a12+this.a31*j.a13,this.a11*j.a21+this.a21*j.a22+this.a31*j.a23,this.a11*j.a31+this.a21*j.a32+this.a31*j.a33,this.a12*j.a11+this.a22*j.a12+this.a32*j.a13,this.a12*j.a21+this.a22*j.a22+this.a32*j.a23,this.a12*j.a31+this.a22*j.a32+this.a32*j.a33,this.a13*j.a11+this.a23*j.a12+this.a33*j.a13,this.a13*j.a21+this.a23*j.a22+this.a33*j.a23,this.a13*j.a31+this.a23*j.a32+this.a33*j.a33)}}function _bg(b,a){this.bits=b,this.points=a}function Detector(a){this.image=a,this._am=null,this._bi=function(m,l,c,b){var d=Math.abs(b-l)>Math.abs(c-m);if(d){var s=m;m=l,l=s,s=c,c=b,b=s}for(var j=Math.abs(c-m),i=Math.abs(b-l),q=-j>>1,v=l<b?1:-1,f=m<c?1:-1,e=0,h=m,g=l;h!=c;h+=f){var u=d?g:h,t=d?h:g;if(1==e?this.image[u+t*qrcode.width]&&e++:this.image[u+t*qrcode.width]||e++,3==e){var o=h-m,n=g-l;return Math.sqrt(o*o+n*n)}if(q+=i,q>0){if(g==b)break;g+=v,q-=j}}var k=c-m,r=b-l;return Math.sqrt(k*k+r*r)},this._bh=function(i,g,h,f){var b=this._bi(i,g,h,f),e=1,d=i-(h-i);d<0?(e=i/(i-d),d=0):d>=qrcode.width&&(e=(qrcode.width-1-i)/(d-i),d=qrcode.width-1);var c=Math.floor(g-(f-g)*e);return e=1,c<0?(e=g/(g-c),c=0):c>=qrcode.height&&(e=(qrcode.height-1-g)/(c-g),c=qrcode.height-1),d=Math.floor(i+(d-i)*e),b+=this._bi(i,g,d,c),b-1},this._bj=function(c,d){var b=this._bh(Math.floor(c.X),Math.floor(c.Y),Math.floor(d.X),Math.floor(d.Y)),e=this._bh(Math.floor(d.X),Math.floor(d.Y),Math.floor(c.X),Math.floor(c.Y));return isNaN(b)?e/7:isNaN(e)?b/7:(b+e)/14},this._bk=function(d,c,b){return(this._bj(d,c)+this._bj(d,b))/2},this.distance=function(c,b){return xDiff=c.X-b.X,yDiff=c.Y-b.Y,Math.sqrt(xDiff*xDiff+yDiff*yDiff)},this._bx=function(g,f,d,e){var b=Math.round(this.distance(g,f)/e),c=Math.round(this.distance(g,d)/e),h=(b+c>>1)+7;switch(3&h){case 0:h++;break;case 2:h--;break;case 3:throw"Error"}return h},this._bl=function(g,f,d,j){var k=Math.floor(j*g),h=Math.max(0,f-k),i=Math.min(qrcode.width-1,f+k);if(i-h<3*g)throw"Error";var b=Math.max(0,d-k),c=Math.min(qrcode.height-1,d+k),e=new _ak(this.image,h,b,i-h,c-b,g,this._am);return e.find()},this.createTransform=function(l,h,k,b,g){var i,f,e,c,j=g-3.5;null!=b?(i=b.X,f=b.Y,e=c=j-3):(i=h.X-l.X+k.X,f=h.Y-l.Y+k.Y,e=c=j);var d=_ae._ag(3.5,3.5,j,3.5,e,c,3.5,j,l.X,l.Y,h.X,h.Y,i,f,k.X,k.Y);return d},this._bz=function(e,b,d){var c=_aa;return c._af(e,d,b)},this._cd=function(r){var j=r._gq,h=r._gs,n=r._gp,d=this._bk(j,h,n);if(d<1)throw"Error";var s=this._bx(j,h,n,d),b=_a3._at(s),k=b._cr-7,l=null;if(b._as.length>0)for(var f=h.X-j.X+n.X,e=h.Y-j.Y+n.Y,c=1-3/k,u=Math.floor(j.X+c*(f-j.X)),t=Math.floor(j.Y+c*(e-j.Y)),q=4;q<=16;q<<=1){l=this._bl(d,u,t,q);break}var o,g=this.createTransform(j,h,n,l,s),m=this._bz(this.image,g,s);return o=null==l?new Array(n,j,h):new Array(n,j,h,l),new _bg(m,o)},this.detect=function(){var b=(new _cc)._ce(this.image);return this._cd(b)}}function _ax(a){this._cf=_cg.forBits(a>>3&3),this._fe=7&a,this.__defineGetter__("_cg",function(){return this._cf}),this.__defineGetter__("_dx",function(){return this._fe}),this.GetHashCode=function(){return this._cf.ordinal()<<3|_fe},this.Equals=function(c){var b=c;return this._cf==b._cf&&this._fe==b._fe}}function _cg(a,c,b){this._ff=a,this.bits=c,this.name=b,this.__defineGetter__("Bits",function(){return this.bits}),this.__defineGetter__("Name",function(){return this.name}),this.ordinal=function(){return this._ff}}function _ac(d,a){if(a||(a=d),d<1||a<1)throw"Both dimensions must be greater than 0";this.width=d,this.height=a;var c=d>>5;0!=(31&d)&&c++,this.rowSize=c,this.bits=new Array(c*a);for(var b=0;b<this.bits.length;b++)this.bits[b]=0;this.__defineGetter__("Width",function(){return this.width}),this.__defineGetter__("Height",function(){return this.height}),this.__defineGetter__("Dimension",function(){if(this.width!=this.height)throw"Can't call getDimension() on a non-square matrix";return this.width}),this._ds=function(e,g){var f=g*this.rowSize+(e>>5);return 0!=(1&_ew(this.bits[f],31&e))},this._dq=function(e,g){var f=g*this.rowSize+(e>>5);this.bits[f]|=1<<(31&e)},this.flip=function(e,g){var f=g*this.rowSize+(e>>5);this.bits[f]^=1<<(31&e)},this.clear=function(){for(var e=this.bits.length,f=0;f<e;f++)this.bits[f]=0},this._bq=function(g,j,f,m){if(j<0||g<0)throw"Left and top must be nonnegative";if(m<1||f<1)throw"Height and width must be at least 1";var l=g+f,e=j+m;if(e>this.height||l>this.width)throw"The region must fit inside the matrix";for(var i=j;i<e;i++)for(var h=i*this.rowSize,k=g;k<l;k++)this.bits[h+(k>>5)]|=1<<(31&k)}}function _dl(a,b){this._dv=a,this._dw=b,this.__defineGetter__("_du",function(){return this._dv}),this.__defineGetter__("Codewords",function(){return this._dw})}function _cl(a){var b=a.Dimension;if(b<21||1!=(3&b))throw"Error _cl";this._au=a,this._cp=null,this._co=null,this._dk=function(d,c,e){return this._au._ds(d,c)?e<<1|1:e<<1},this._cm=function(){if(null!=this._co)return this._co;for(var g=0,e=0;e<6;e++)g=this._dk(e,8,g);g=this._dk(7,8,g),g=this._dk(8,8,g),g=this._dk(8,7,g);for(var c=5;c>=0;c--)g=this._dk(8,c,g);if(this._co=_ax._ci(g),null!=this._co)return this._co;var f=this._au.Dimension;g=0;for(var d=f-8,e=f-1;e>=d;e--)g=this._dk(e,8,g);for(var c=f-7;c<f;c++)g=this._dk(8,c,g);if(this._co=_ax._ci(g),null!=this._co)return this._co;throw"Error _cm"},this._cq=function(){if(null!=this._cp)return this._cp;var h=this._au.Dimension,f=h-17>>2;if(f<=6)return _a3._av(f);for(var g=0,e=h-11,c=5;c>=0;c--)for(var d=h-9;d>=e;d--)g=this._dk(d,c,g);if(this._cp=_a3._aw(g),null!=this._cp&&this._cp._cr==h)return this._cp;g=0;for(var d=5;d>=0;d--)for(var c=h-9;c>=e;c--)g=this._dk(d,c,g);if(this._cp=_a3._aw(g),null!=this._cp&&this._cp._cr==h)return this._cp;throw"Error _cq"},this._gk=function(){var r=this._cm(),o=this._cq(),c=_dx._gl(r._dx),f=this._au.Dimension;c._dj(this._au,f);for(var k=o._aq(),n=!0,s=new Array(o._dp),m=0,q=0,h=0,e=f-1;e>0;e-=2){6==e&&e--;for(var l=0;l<f;l++)for(var g=n?f-1-l:l,d=0;d<2;d++)k._ds(e-d,g)||(h++,q<<=1,this._au._ds(e-d,g)&&(q|=1),8==h&&(s[m++]=q,h=0,q=0));n^=!0}if(m!=o._dp)throw"Error _gk";return s}}function _fg(){this._dj=function(c,d){for(var b=0;b<d;b++)for(var a=0;a<d;a++)this._fw(b,a)&&c.flip(a,b)},this._fw=function(b,a){return 0==(b+a&1)}}function _fh(){this._dj=function(c,d){for(var b=0;b<d;b++)for(var a=0;a<d;a++)this._fw(b,a)&&c.flip(a,b)},this._fw=function(b,a){return 0==(1&b)}}function _fi(){this._dj=function(c,d){for(var b=0;b<d;b++)for(var a=0;a<d;a++)this._fw(b,a)&&c.flip(a,b)},this._fw=function(b,a){return a%3==0}}function _fj(){this._dj=function(c,d){for(var b=0;b<d;b++)for(var a=0;a<d;a++)this._fw(b,a)&&c.flip(a,b)},this._fw=function(b,a){return(b+a)%3==0}}function _fk(){this._dj=function(c,d){for(var b=0;b<d;b++)for(var a=0;a<d;a++)this._fw(b,a)&&c.flip(a,b)},this._fw=function(b,a){return 0==(_ew(b,1)+a/3&1)}}function _fl(){this._dj=function(c,d){for(var b=0;b<d;b++)for(var a=0;a<d;a++)this._fw(b,a)&&c.flip(a,b)},this._fw=function(c,b){var a=c*b;return(1&a)+a%3==0}}function _fm(){this._dj=function(c,d){for(var b=0;b<d;b++)for(var a=0;a<d;a++)this._fw(b,a)&&c.flip(a,b)},this._fw=function(c,b){var a=c*b;return 0==((1&a)+a%3&1)}}function _fn(){this._dj=function(c,d){for(var b=0;b<d;b++)for(var a=0;a<d;a++)this._fw(b,a)&&c.flip(a,b)},this._fw=function(b,a){return 0==((b+a&1)+b*a%3&1)}}function _db(_fa){this._fa=_fa,this.decode=function(received,_fv){for(var poly=new _bp(this._fa,received),_dh=new Array(_fv),i=0;i<_dh.length;i++)_dh[i]=0;for(var _fq=!1,noError=!0,i=0;i<_fv;i++){var eval=poly.evaluateAt(this._fa.exp(_fq?i+1:i));_dh[_dh.length-1-i]=eval,0!=eval&&(noError=!1)}if(!noError)for(var _fu=new _bp(this._fa,_dh),_dg=this._eb(this._fa._ba(_fv,1),_fu,_fv),sigma=_dg[0],omega=_dg[1],_dz=this._ey(sigma),_ea=this._di(omega,_dz,_fq),i=0;i<_dz.length;i++){var position=received.length-1-this._fa.log(_dz[i]);if(position<0)throw"ReedSolomonException Bad error location";received[position]=_az._bd(received[position],_ea[i])}},this._eb=function(a,b,R){if(a._ec<b._ec){var temp=a;a=b,b=temp}for(var rLast=a,r=b,sLast=this._fa.One,s=this._fa.Zero,tLast=this._fa.Zero,t=this._fa.One;r._ec>=Math.floor(R/2);){var rLastLast=rLast,_ga=sLast,_gb=tLast;if(rLast=r,sLast=s,tLast=t,rLast.Zero)throw"r_{i-1} was zero";r=rLastLast;for(var q=this._fa.Zero,_df=rLast._ex(rLast._ec),_fy=this._fa.inverse(_df);r._ec>=rLast._ec&&!r.Zero;){var _fx=r._ec-rLast._ec,scale=this._fa.multiply(r._ex(r._ec),_fy);q=q._bd(this._fa._ba(_fx,scale)),r=r._bd(rLast._dc(_fx,scale))}s=q.multiply1(sLast)._bd(_ga),t=q.multiply1(tLast)._bd(_gb)}var _de=t._ex(0);if(0==_de)throw"ReedSolomonException sigmaTilde(0) was zero";var inverse=this._fa.inverse(_de),sigma=t.multiply2(inverse),omega=r.multiply2(inverse);return new Array(sigma,omega)},this._ey=function(_ez){var _fz=_ez._ec;if(1==_fz)return new Array(_ez._ex(1));for(var result=new Array(_fz),e=0,i=1;i<256&&e<_fz;i++)0==_ez.evaluateAt(i)&&(result[e]=this._fa.inverse(i),e++);if(e!=_fz)throw"Error locator degree does not match number of roots";return result},this._di=function(_fs,_dz,_fq){for(var s=_dz.length,result=new Array(s),i=0;i<s;i++){for(var _gc=this._fa.inverse(_dz[i]),_dr=1,j=0;j<s;j++)i!=j&&(_dr=this._fa.multiply(_dr,_az._bd(1,this._fa.multiply(_dz[j],_gc))));result[i]=this._fa.multiply(_fs.evaluateAt(_gc),this._fa.inverse(_dr)),_fq&&(result[i]=this._fa.multiply(result[i],_gc))}return result}}function _bp(f,e){if(null==e||0==e.length)throw"bad arguments";this._fa=f;var c=e.length;if(c>1&&0==e[0]){for(var d=1;d<c&&0==e[d];)d++;if(d==c)this._dd=f.Zero._dd;else{this._dd=new Array(c-d);for(var b=0;b<this._dd.length;b++)this._dd[b]=0;for(var a=0;a<this._dd.length;a++)this._dd[a]=e[d+a]}}else this._dd=e;this.__defineGetter__("Zero",function(){return 0==this._dd[0]}),this.__defineGetter__("_ec",function(){return this._dd.length-1}),this.__defineGetter__("Coefficients",function(){return this._dd}),this._ex=function(g){return this._dd[this._dd.length-1-g]},this.evaluateAt=function(h){if(0==h)return this._ex(0);var l=this._dd.length;if(1==h){for(var g=0,k=0;k<l;k++)g=_az._bd(g,this._dd[k]);return g}for(var j=this._dd[0],k=1;k<l;k++)j=_az._bd(this._fa.multiply(h,j),this._dd[k]);return j},this._bd=function(g){if(this._fa!=g._fa)throw"GF256Polys do not have same _az _fa";if(this.Zero)return g;if(g.Zero)return this;var o=this._dd,n=g._dd;if(o.length>n.length){var j=o;o=n,n=j}for(var h=new Array(n.length),k=n.length-o.length,m=0;m<k;m++)h[m]=n[m];for(var l=k;l<n.length;l++)h[l]=_az._bd(o[l-k],n[l]);return new _bp(f,h)},this.multiply1=function(o){if(this._fa!=o._fa)throw"GF256Polys do not have same _az _fa";if(this.Zero||o.Zero)return this._fa.Zero;for(var r=this._dd,g=r.length,l=o._dd,n=l.length,q=new Array(g+n-1),m=0;m<g;m++)for(var h=r[m],k=0;k<n;k++)q[m+k]=_az._bd(q[m+k],this._fa.multiply(h,l[k]));return new _bp(this._fa,q)},this.multiply2=function(g){if(0==g)return this._fa.Zero;if(1==g)return this;for(var j=this._dd.length,k=new Array(j),h=0;h<j;h++)k[h]=this._fa.multiply(this._dd[h],g);return new _bp(this._fa,k)},this._dc=function(l,g){if(l<0)throw"bad arguments";if(0==g)return this._fa.Zero;for(var j=this._dd.length,k=new Array(j+l),h=0;h<k.length;h++)k[h]=0;for(var h=0;h<j;h++)k[h]=this._fa.multiply(this._dd[h],g);return new _bp(this._fa,k)},this.divide=function(l){if(this._fa!=l._fa)throw"GF256Polys do not have same _az _fa";if(l.Zero)throw"Divide by 0";for(var j=this._fa.Zero,o=this,g=l._ex(l._ec),n=this._fa.inverse(g);o._ec>=l._ec&&!o.Zero;){var m=o._ec-l._ec,h=this._fa.multiply(o._ex(o._ec),n),i=l._dc(m,h),k=this._fa._ba(m,h);j=j._bd(k),o=o._bd(i)}return new Array(j,o)}}function _az(b){this._gh=new Array(256),this._gi=new Array(256);for(var a=1,e=0;e<256;e++)this._gh[e]=a,a<<=1,a>=256&&(a^=b);for(var e=0;e<255;e++)this._gi[this._gh[e]]=e;var d=new Array(1);d[0]=0,this.zero=new _bp(this,new Array(d));var c=new Array(1);c[0]=1,this.one=new _bp(this,new Array(c)),this.__defineGetter__("Zero",function(){return this.zero}),this.__defineGetter__("One",function(){return this.one}),this._ba=function(j,f){if(j<0)throw"bad arguments";if(0==f)return zero;for(var h=new Array(j+1),g=0;g<h.length;g++)h[g]=0;return h[0]=f,new _bp(this,h)},this.exp=function(f){return this._gh[f]},this.log=function(f){if(0==f)throw"bad arguments";return this._gi[f]},this.inverse=function(f){if(0==f)throw"System.ArithmeticException";return this._gh[255-this._gi[f]]},this.multiply=function(g,f){return 0==g||0==f?0:1==g?f:1==f?g:this._gh[(this._gi[g]+this._gi[f])%255]}}function _ew(a,b){return a>=0?a>>b:(a>>b)+(2<<~b)}function _cz(c,a,b){this.x=c,this.y=a,this.count=1,this._aj=b,this.__defineGetter__("_ei",function(){return this._aj}),this.__defineGetter__("Count",function(){return this.count}),this.__defineGetter__("X",function(){return this.x}),this.__defineGetter__("Y",function(){return this.y}),this._ek=function(){this.count++},this._ev=function(f,e,d){if(Math.abs(e-this.y)<=f&&Math.abs(d-this.x)<=f){var g=Math.abs(f-this._aj);return g<=1||g/this._aj<=1}return!1}}function _es(a){this._go=a[0],this._gu=a[1],this._gr=a[2],this.__defineGetter__("_gp",function(){return this._go}),this.__defineGetter__("_gq",function(){return this._gu}),this.__defineGetter__("_gs",function(){return this._gr})}function _cc(){this.image=null,this._cv=[],this._ge=!1,this._al=new Array(0,0,0,0,0),this._am=null,this.__defineGetter__("_da",function(){return this._al[0]=0,this._al[1]=0,this._al[2]=0,this._al[3]=0,this._al[4]=0,this._al}),this._ao=function(f){for(var b=0,d=0;d<5;d++){var e=f[d];if(0==e)return!1;b+=e}if(b<7)return!1;var c=Math.floor((b<<_el)/7),a=Math.floor(c/2);return Math.abs(c-(f[0]<<_el))<a&&Math.abs(c-(f[1]<<_el))<a&&Math.abs(3*c-(f[2]<<_el))<3*a&&Math.abs(c-(f[3]<<_el))<a&&Math.abs(c-(f[4]<<_el))<a},this._an=function(b,a){return a-b[4]-b[3]-b[2]/2},this._ap=function(a,j,d,g){for(var c=this.image,h=qrcode.height,b=this._da,f=a;f>=0&&c[j+f*qrcode.width];)b[2]++,f--;if(f<0)return NaN;for(;f>=0&&!c[j+f*qrcode.width]&&b[1]<=d;)b[1]++,f--;if(f<0||b[1]>d)return NaN;for(;f>=0&&c[j+f*qrcode.width]&&b[0]<=d;)b[0]++,f--;if(b[0]>d)return NaN;for(f=a+1;f<h&&c[j+f*qrcode.width];)b[2]++,f++;if(f==h)return NaN;for(;f<h&&!c[j+f*qrcode.width]&&b[3]<d;)b[3]++,f++;if(f==h||b[3]>=d)return NaN;for(;f<h&&c[j+f*qrcode.width]&&b[4]<d;)b[4]++,f++;if(b[4]>=d)return NaN;var e=b[0]+b[1]+b[2]+b[3]+b[4];return 5*Math.abs(e-g)>=2*g?NaN:this._ao(b)?this._an(b,f):NaN},this._ej=function(b,a,e,h){for(var d=this.image,i=qrcode.width,c=this._da,g=b;g>=0&&d[g+a*qrcode.width];)c[2]++,g--;if(g<0)return NaN;for(;g>=0&&!d[g+a*qrcode.width]&&c[1]<=e;)c[1]++,g--;if(g<0||c[1]>e)return NaN;for(;g>=0&&d[g+a*qrcode.width]&&c[0]<=e;)c[0]++,g--;if(c[0]>e)return NaN;for(g=b+1;g<i&&d[g+a*qrcode.width];)c[2]++,g++;if(g==i)return NaN;for(;g<i&&!d[g+a*qrcode.width]&&c[3]<e;)c[3]++,g++;if(g==i||c[3]>=e)return NaN;for(;g<i&&d[g+a*qrcode.width]&&c[4]<e;)c[4]++,g++;if(c[4]>=e)return NaN;var f=c[0]+c[1]+c[2]+c[3]+c[4];return 5*Math.abs(f-h)>=h?NaN:this._ao(c)?this._an(c,g):NaN},this._cu=function(c,f,e){var d=c[0]+c[1]+c[2]+c[3]+c[4],n=this._an(c,e),b=this._ap(f,Math.floor(n),c[2],d);if(!isNaN(b)&&(n=this._ej(Math.floor(n),Math.floor(b),c[2],d),!isNaN(n))){for(var l=d/7,m=!1,h=this._cv.length,g=0;g<h;g++){var a=this._cv[g];if(a._ev(l,b,n)){a._ek(),m=!0;break}}if(!m){var k=new _cz(n,b,l);this._cv.push(k),null!=this._am&&this._am._ep(k)}return!0}return!1},this._ee=function(){var a=this._cv.length;if(a<3)throw"Couldn't find enough finder patterns";if(a>3){for(var b=0,c=0;c<a;c++)b+=this._cv[c]._ei;for(var d=b/a,c=0;c<this._cv.length&&this._cv.length>3;c++){var e=this._cv[c];Math.abs(e._ei-d)>.2*d&&(this._cv.remove(c),c--)}}return this._cv.length>3&&this._cv.sort(function(g,f){return g.count>f.count?-1:g.count<f.count?1:0}),new Array(this._cv[0],this._cv[1],this._cv[2])},this._eq=function(){var b=this._cv.length;if(b<=1)return 0;for(var c=null,d=0;d<b;d++){var a=this._cv[d];if(a.Count>=_eg){if(null!=c)return this._ge=!0,Math.floor((Math.abs(c.X-a.X)-Math.abs(c.Y-a.Y))/2);c=a}}return 0},this._cx=function(){for(var g=0,c=0,a=this._cv.length,d=0;d<a;d++){var f=this._cv[d];f.Count>=_eg&&(g++,c+=f._ei)}if(g<3)return!1;for(var e=c/a,b=0,d=0;d<a;d++)f=this._cv[d],b+=Math.abs(f._ei-e);return b<=.05*c},this._ce=function(e){var o=!1;this.image=e;var n=qrcode.height,k=qrcode.width,a=Math.floor(3*n/(4*_eh));(a<_gf||o)&&(a=_gf);for(var g=!1,d=new Array(5),h=a-1;h<n&&!g;h+=a){d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0;for(var b=0,f=0;f<k;f++)if(e[f+h*qrcode.width])1==(1&b)&&b++,d[b]++;else if(0==(1&b))if(4==b)if(this._ao(d)){var c=this._cu(d,h,f);if(c)if(a=2,this._ge)g=this._cx();else{var m=this._eq();m>d[2]&&(h+=m-d[2]-a,f=k-1)}else{do f++;while(f<k&&!e[f+h*qrcode.width]);f--}b=0,d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0}else d[0]=d[2],d[1]=d[3],d[2]=d[4],d[3]=1,d[4]=0,b=3;else d[++b]++;else d[b]++;if(this._ao(d)){var c=this._cu(d,h,k);c&&(a=d[0],this._ge&&(g=_cx()))}}var l=this._ee();return qrcode._er(l),new _es(l)}}function _ai(c,a,b){this.x=c,this.y=a,this.count=1,this._aj=b,this.__defineGetter__("_ei",function(){return this._aj}),this.__defineGetter__("Count",function(){return this.count}),this.__defineGetter__("X",function(){return Math.floor(this.x)}),this.__defineGetter__("Y",function(){return Math.floor(this.y)}),this._ek=function(){this.count++},this._ev=function(f,e,d){if(Math.abs(e-this.y)<=f&&Math.abs(d-this.x)<=f){var g=Math.abs(f-this._aj);return g<=1||g/this._aj<=1}return!1}}function _ak(g,c,b,f,a,e,d){this.image=g,this._cv=new Array,this.startX=c,this.startY=b,this.width=f,this.height=a,this._ef=e,this._al=new Array(0,0,0),this._am=d,this._an=function(i,h){return h-i[2]-i[1]/2},this._ao=function(l){for(var k=this._ef,h=k/2,j=0;j<3;j++)if(Math.abs(k-l[j])>=h)return!1;return!0},this._ap=function(h,r,l,o){var k=this.image,q=qrcode.height,j=this._al;j[0]=0,j[1]=0,j[2]=0;for(var n=h;n>=0&&k[r+n*qrcode.width]&&j[1]<=l;)j[1]++,n--;if(n<0||j[1]>l)return NaN;for(;n>=0&&!k[r+n*qrcode.width]&&j[0]<=l;)j[0]++,n--;if(j[0]>l)return NaN;for(n=h+1;n<q&&k[r+n*qrcode.width]&&j[1]<=l;)j[1]++,n++;if(n==q||j[1]>l)return NaN;for(;n<q&&!k[r+n*qrcode.width]&&j[2]<=l;)j[2]++,n++;if(j[2]>l)return NaN;var m=j[0]+j[1]+j[2];return 5*Math.abs(m-o)>=2*o?NaN:this._ao(j)?this._an(j,n):NaN},this._cu=function(l,o,n){var m=l[0]+l[1]+l[2],u=this._an(l,n),k=this._ap(o,Math.floor(u),2*l[1],m);if(!isNaN(k)){for(var t=(l[0]+l[1]+l[2])/3,r=this._cv.length,q=0;q<r;q++){var h=this._cv[q];if(h._ev(t,k,u))return new _ai(u,k,t)}var s=new _ai(u,k,t);this._cv.push(s),null!=this._am&&this._am._ep(s)}return null},this.find=function(){for(var q=this.startX,t=this.height,r=q+f,s=b+(t>>1),m=new Array(0,0,0),k=0;k<t;k++){var o=s+(0==(1&k)?k+1>>1:-(k+1>>1));m[0]=0,m[1]=0,m[2]=0;for(var n=q;n<r&&!g[n+qrcode.width*o];)n++;for(var h=0;n<r;){if(g[n+o*qrcode.width])if(1==h)m[h]++;else if(2==h){if(this._ao(m)){var l=this._cu(m,o,n);if(null!=l)return l}m[0]=m[2],m[1]=1,m[2]=0,h=1}else m[++h]++;else 1==h&&h++,m[h]++;n++}if(this._ao(m)){var l=this._cu(m,o,r);if(null!=l)return l}}if(0!=this._cv.length)return this._cv[0];throw"Couldn't find enough alignment patterns"}}function QRCodeDataBlockReader(c,a,b){this._ed=0,this._cw=7,this.dataLength=0,this.blocks=c,this._en=b,a<=9?this.dataLengthMode=0:a>=10&&a<=26?this.dataLengthMode=1:a>=27&&a<=40&&(this.dataLengthMode=2),this._gd=function(f){var k=0;if(f<this._cw+1){for(var m=0,e=0;e<f;e++)m+=1<<e;return m<<=this._cw-f+1,k=(this.blocks[this._ed]&m)>>this._cw-f+1,this._cw-=f,k}if(f<this._cw+1+8){for(var j=0,e=0;e<this._cw+1;e++)j+=1<<e;return k=(this.blocks[this._ed]&j)<<f-(this._cw+1),this._ed++,k+=this.blocks[this._ed]>>8-(f-(this._cw+1)),this._cw=this._cw-f%8,this._cw<0&&(this._cw=8+this._cw),k}if(f<this._cw+1+16){for(var j=0,h=0,e=0;e<this._cw+1;e++)j+=1<<e;var g=(this.blocks[this._ed]&j)<<f-(this._cw+1);this._ed++;var d=this.blocks[this._ed]<<f-(this._cw+1+8);this._ed++;for(var e=0;e<f-(this._cw+1+8);e++)h+=1<<e;h<<=8-(f-(this._cw+1+8));var l=(this.blocks[this._ed]&h)>>8-(f-(this._cw+1+8));return k=g+d+l,this._cw=this._cw-(f-8)%8,this._cw<0&&(this._cw=8+this._cw),k}return 0},this.NextMode=function(){return this._ed>this.blocks.length-this._en-2?0:this._gd(4)},this.getDataLength=function(d){for(var e=0;;){if(d>>e==1)break;e++}return this._gd(qrcode._eo[this.dataLengthMode][e])},this.getRomanAndFigureString=function(h){var f=h,g=0,j="",d=new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":");do if(f>1){g=this._gd(11);var i=Math.floor(g/45),e=g%45;j+=d[i],j+=d[e],f-=2}else 1==f&&(g=this._gd(6),j+=d[g],f-=1);while(f>0);return j},this.getFigureString=function(f){var d=f,e=0,g="";do d>=3?(e=this._gd(10),e<100&&(g+="0"),e<10&&(g+="0"),d-=3):2==d?(e=this._gd(7),e<10&&(g+="0"),d-=2):1==d&&(e=this._gd(4),d-=1),g+=e;while(d>0);return g},this.get8bitByteArray=function(g){var e=g,f=0,d=new Array;do f=this._gd(8),d.push(f),e--;while(e>0);return d},this.getKanjiString=function(j){var g=j,i=0,h="";do{i=_gd(13);var e=i%192,f=i/192,k=(f<<8)+e,d=0;d=k+33088<=40956?k+33088:k+49472,h+=String.fromCharCode(d),g--}while(g>0);return h},this.__defineGetter__("DataByte",function(){for(var g=new Array,e=1,f=2,d=4,n=8;;){var k=this.NextMode();if(0==k){if(g.length>0)break;throw"Empty data block"}if(k!=e&&k!=f&&k!=d&&k!=n)throw"Invalid mode: "+k+" in (block:"+this._ed+" bit:"+this._cw+")";if(dataLength=this.getDataLength(k),dataLength<1)throw"Invalid data length: "+dataLength;switch(k){case e:for(var l=this.getFigureString(dataLength),i=new Array(l.length),h=0;h<l.length;h++)i[h]=l.charCodeAt(h);g.push(i);break;case f:for(var l=this.getRomanAndFigureString(dataLength),i=new Array(l.length),h=0;h<l.length;h++)i[h]=l.charCodeAt(h);g.push(i);break;case d:var m=this.get8bitByteArray(dataLength);g.push(m);break;case n:var l=this.getKanjiString(dataLength);g.push(l)}}return g})}function C_Promise(workload,context){this.parent=context,this.update=null,this.finally=null,this.error_function=null,this.then=function(callback){return this.finally=callback,this},this.progress=function(callback){return this.update=callback,this},this.error=function(callback){return this.error_function=callback,this},this.call_then=function(data){null!==this.finally&&this.finally(data);
},this.call_progress=function(data){null!==this.update&&this.update(data)},this.call_error=function(data){null!==this.error_function&&this.error_function(data)},setTimeout(workload.bind(this),100)}!function(C){function N(a){return function(){var d,b=arguments[0];for(d="["+(a?a+":":"")+b+"] http://errors.angularjs.org/1.5.8/"+(a?a+"/":"")+b,b=1;b<arguments.length;b++){d=d+(1==b?"?":"&")+"p"+(b-1)+"=";var e,c=encodeURIComponent;e=arguments[b],e="function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e,d+=c(e)}return Error(d)}}function ta(a){if(null==a||Va(a))return!1;if(L(a)||G(a)||F&&a instanceof F)return!0;var b="length"in Object(a)&&a.length;return T(b)&&(0<=b&&(b-1 in a||a instanceof Array)||"function"==typeof a.item)}function q(a,b,d){var c,e;if(a)if(z(a))for(c in a)"prototype"==c||"length"==c||"name"==c||a.hasOwnProperty&&!a.hasOwnProperty(c)||b.call(d,a[c],c,a);else if(L(a)||ta(a)){var f="object"!=typeof a;for(c=0,e=a.length;c<e;c++)(f||c in a)&&b.call(d,a[c],c,a)}else if(a.forEach&&a.forEach!==q)a.forEach(b,d,a);else if(sc(a))for(c in a)b.call(d,a[c],c,a);else if("function"==typeof a.hasOwnProperty)for(c in a)a.hasOwnProperty(c)&&b.call(d,a[c],c,a);else for(c in a)ua.call(a,c)&&b.call(d,a[c],c,a);return a}function tc(a,b,d){for(var c=Object.keys(a).sort(),e=0;e<c.length;e++)b.call(d,a[c[e]],c[e]);return c}function uc(a){return function(b,d){a(d,b)}}function Yd(){return++pb}function Pb(a,b,d){for(var c=a.$$hashKey,e=0,f=b.length;e<f;++e){var g=b[e];if(D(g)||z(g))for(var h=Object.keys(g),k=0,l=h.length;k<l;k++){var m=h[k],n=g[m];d&&D(n)?da(n)?a[m]=new Date(n.valueOf()):Wa(n)?a[m]=new RegExp(n):n.nodeName?a[m]=n.cloneNode(!0):Qb(n)?a[m]=n.clone():(D(a[m])||(a[m]=L(n)?[]:{}),Pb(a[m],[n],!0)):a[m]=n}}return c?a.$$hashKey=c:delete a.$$hashKey,a}function S(a){return Pb(a,va.call(arguments,1),!1)}function Zd(a){return Pb(a,va.call(arguments,1),!0)}function Z(a){return parseInt(a,10)}function Rb(a,b){return S(Object.create(a),b)}function A(){}function Xa(a){return a}function ha(a){return function(){return a}}function vc(a){return z(a.toString)&&a.toString!==ma}function y(a){return"undefined"==typeof a}function w(a){return"undefined"!=typeof a}function D(a){return null!==a&&"object"==typeof a}function sc(a){return null!==a&&"object"==typeof a&&!wc(a)}function G(a){return"string"==typeof a}function T(a){return"number"==typeof a}function da(a){return"[object Date]"===ma.call(a)}function z(a){return"function"==typeof a}function Wa(a){return"[object RegExp]"===ma.call(a)}function Va(a){return a&&a.window===a}function Ya(a){return a&&a.$evalAsync&&a.$watch}function Ga(a){return"boolean"==typeof a}function $d(a){return a&&T(a.length)&&ae.test(ma.call(a))}function Qb(a){return!(!a||!(a.nodeName||a.prop&&a.attr&&a.find))}function be(a){var b={};a=a.split(",");var d;for(d=0;d<a.length;d++)b[a[d]]=!0;return b}function wa(a){return Q(a.nodeName||a[0]&&a[0].nodeName)}function Za(a,b){var d=a.indexOf(b);return 0<=d&&a.splice(d,1),d}function pa(a,b){function d(a,b){var e,d=b.$$hashKey;if(L(a)){e=0;for(var f=a.length;e<f;e++)b.push(c(a[e]))}else if(sc(a))for(e in a)b[e]=c(a[e]);else if(a&&"function"==typeof a.hasOwnProperty)for(e in a)a.hasOwnProperty(e)&&(b[e]=c(a[e]));else for(e in a)ua.call(a,e)&&(b[e]=c(a[e]));return d?b.$$hashKey=d:delete b.$$hashKey,b}function c(a){if(!D(a))return a;var b=f.indexOf(a);if(-1!==b)return g[b];if(Va(a)||Ya(a))throw xa("cpws");var b=!1,c=e(a);return void 0===c&&(c=L(a)?[]:Object.create(wc(a)),b=!0),f.push(a),g.push(c),b?d(a,c):c}function e(a){switch(ma.call(a)){case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Float32Array]":case"[object Float64Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return new a.constructor(c(a.buffer),a.byteOffset,a.length);case"[object ArrayBuffer]":if(!a.slice){var b=new ArrayBuffer(a.byteLength);return new Uint8Array(b).set(new Uint8Array(a)),b}return a.slice(0);case"[object Boolean]":case"[object Number]":case"[object String]":case"[object Date]":return new a.constructor(a.valueOf());case"[object RegExp]":return b=new RegExp(a.source,a.toString().match(/[^\/]*$/)[0]),b.lastIndex=a.lastIndex,b;case"[object Blob]":return new a.constructor([a],{type:a.type})}if(z(a.cloneNode))return a.cloneNode(!0)}var f=[],g=[];if(b){if($d(b)||"[object ArrayBuffer]"===ma.call(b))throw xa("cpta");if(a===b)throw xa("cpi");return L(b)?b.length=0:q(b,function(a,d){"$$hashKey"!==d&&delete b[d]}),f.push(a),g.push(b),d(a,b)}return c(a)}function na(a,b){if(a===b)return!0;if(null===a||null===b)return!1;if(a!==a&&b!==b)return!0;var c,d=typeof a;if(d==typeof b&&"object"==d){if(!L(a)){if(da(a))return!!da(b)&&na(a.getTime(),b.getTime());if(Wa(a))return!!Wa(b)&&a.toString()==b.toString();if(Ya(a)||Ya(b)||Va(a)||Va(b)||L(b)||da(b)||Wa(b))return!1;d=U();for(c in a)if("$"!==c.charAt(0)&&!z(a[c])){if(!na(a[c],b[c]))return!1;d[c]=!0}for(c in b)if(!(c in d)&&"$"!==c.charAt(0)&&w(b[c])&&!z(b[c]))return!1;return!0}if(!L(b))return!1;if((d=a.length)==b.length){for(c=0;c<d;c++)if(!na(a[c],b[c]))return!1;return!0}}return!1}function $a(a,b,d){return a.concat(va.call(b,d))}function ab(a,b){var d=2<arguments.length?va.call(arguments,2):[];return!z(b)||b instanceof RegExp?b:d.length?function(){return arguments.length?b.apply(a,$a(d,arguments,0)):b.apply(a,d)}:function(){return arguments.length?b.apply(a,arguments):b.call(a)}}function ce(a,b){var d=b;return"string"==typeof a&&"$"===a.charAt(0)&&"$"===a.charAt(1)?d=void 0:Va(b)?d="$WINDOW":b&&C.document===b?d="$DOCUMENT":Ya(b)&&(d="$SCOPE"),d}function bb(a,b){if(!y(a))return T(b)||(b=b?2:null),JSON.stringify(a,ce,b)}function xc(a){return G(a)?JSON.parse(a):a}function yc(a,b){a=a.replace(de,"");var d=Date.parse("Jan 01, 1970 00:00:00 "+a)/6e4;return isNaN(d)?b:d}function Sb(a,b,d){d=d?-1:1;var c=a.getTimezoneOffset();return b=yc(b,c),d*=b-c,a=new Date(a.getTime()),a.setMinutes(a.getMinutes()+d),a}function ya(a){a=F(a).clone();try{a.empty()}catch(b){}var d=F("<div>").append(a).html();try{return a[0].nodeType===Ma?Q(d):d.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+Q(b)})}catch(c){return Q(d)}}function zc(a){try{return decodeURIComponent(a)}catch(b){}}function Ac(a){var b={};return q((a||"").split("&"),function(a){var c,e,f;a&&(e=a=a.replace(/\+/g,"%20"),c=a.indexOf("="),-1!==c&&(e=a.substring(0,c),f=a.substring(c+1)),e=zc(e),w(e)&&(f=!w(f)||zc(f),ua.call(b,e)?L(b[e])?b[e].push(f):b[e]=[b[e],f]:b[e]=f))}),b}function Tb(a){var b=[];return q(a,function(a,c){L(a)?q(a,function(a){b.push(ea(c,!0)+(!0===a?"":"="+ea(a,!0)))}):b.push(ea(c,!0)+(!0===a?"":"="+ea(a,!0)))}),b.length?b.join("&"):""}function qb(a){return ea(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ea(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,b?"%20":"+")}function ee(a,b){var d,c,e=Na.length;for(c=0;c<e;++c)if(d=Na[c]+b,G(d=a.getAttribute(d)))return d;return null}function fe(a,b){var d,c,e={};q(Na,function(b){b+="app",!d&&a.hasAttribute&&a.hasAttribute(b)&&(d=a,c=a.getAttribute(b))}),q(Na,function(b){b+="app";var e;!d&&(e=a.querySelector("["+b.replace(":","\\:")+"]"))&&(d=e,c=e.getAttribute(b))}),d&&(e.strictDi=null!==ee(d,"strict-di"),b(d,c?[c]:[],e))}function Bc(a,b,d){D(d)||(d={}),d=S({strictDi:!1},d);var c=function(){if(a=F(a),a.injector()){var c=a[0]===C.document?"document":ya(a);throw xa("btstrpd",c.replace(/</,"&lt;").replace(/>/,"&gt;"))}return b=b||[],b.unshift(["$provide",function(b){b.value("$rootElement",a)}]),d.debugInfoEnabled&&b.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]),b.unshift("ng"),c=cb(b,d.strictDi),c.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",d),c(b)(a)})}]),c},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;return C&&e.test(C.name)&&(d.debugInfoEnabled=!0,C.name=C.name.replace(e,"")),C&&!f.test(C.name)?c():(C.name=C.name.replace(f,""),ca.resumeBootstrap=function(a){return q(a,function(a){b.push(a)}),c()},void(z(ca.resumeDeferredBootstrap)&&ca.resumeDeferredBootstrap()))}function ge(){C.name="NG_ENABLE_DEBUG_INFO!"+C.name,C.location.reload()}function he(a){if(a=ca.element(a).injector(),!a)throw xa("test");return a.get("$$testability")}function Cc(a,b){return b=b||"_",a.replace(ie,function(a,c){return(c?b:"")+a.toLowerCase()})}function je(){var a;if(!Dc){var b=rb();(qa=y(b)?C.jQuery:b?C[b]:void 0)&&qa.fn.on?(F=qa,S(qa.fn,{scope:Oa.scope,isolateScope:Oa.isolateScope,controller:Oa.controller,injector:Oa.injector,inheritedData:Oa.inheritedData}),a=qa.cleanData,qa.cleanData=function(b){for(var c,f,e=0;null!=(f=b[e]);e++)(c=qa._data(f,"events"))&&c.$destroy&&qa(f).triggerHandler("$destroy");a(b)}):F=O,ca.element=F,Dc=!0}}function sb(a,b,d){if(!a)throw xa("areq",b||"?",d||"required");return a}function Pa(a,b,d){return d&&L(a)&&(a=a[a.length-1]),sb(z(a),b,"not a function, got "+(a&&"object"==typeof a?a.constructor.name||"Object":typeof a)),a}function Qa(a,b){if("hasOwnProperty"===a)throw xa("badname",b)}function Ec(a,b,d){if(!b)return a;b=b.split(".");for(var c,e=a,f=b.length,g=0;g<f;g++)c=b[g],a&&(a=(e=a)[c]);return!d&&z(a)?ab(e,a):a}function tb(a){for(var c,b=a[0],d=a[a.length-1],e=1;b!==d&&(b=b.nextSibling);e++)(c||a[e]!==b)&&(c||(c=F(va.call(a,0,e))),c.push(b));return c||a}function U(){return Object.create(null)}function ke(a){function b(a,b,c){return a[b]||(a[b]=c())}var d=N("$injector"),c=N("ng");return a=b(a,"angular",Object),a.$$minErr=a.$$minErr||N,b(a,"module",function(){var a={};return function(f,g,h){if("hasOwnProperty"===f)throw c("badname","module");return g&&a.hasOwnProperty(f)&&(a[f]=null),b(a,f,function(){function a(b,d,e,f){return f||(f=c),function(){return f[e||"push"]([b,d,arguments]),R}}function b(a,d){return function(b,e){return e&&z(e)&&(e.$$moduleName=f),c.push([a,d,arguments]),R}}if(!g)throw d("nomod",f);var c=[],e=[],p=[],u=a("$injector","invoke","push",e),R={_invokeQueue:c,_configBlocks:e,_runBlocks:p,requires:g,name:f,provider:b("$provide","provider"),factory:b("$provide","factory"),service:b("$provide","service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),decorator:b("$provide","decorator"),animation:b("$animateProvider","register"),filter:b("$filterProvider","register"),controller:b("$controllerProvider","register"),directive:b("$compileProvider","directive"),component:b("$compileProvider","component"),config:u,run:function(a){return p.push(a),this}};return h&&u(h),R})}})}function ia(a,b){if(L(a)){b=b||[];for(var d=0,c=a.length;d<c;d++)b[d]=a[d]}else if(D(a))for(d in b=b||{},a)"$"===d.charAt(0)&&"$"===d.charAt(1)||(b[d]=a[d]);return b||a}function le(a){S(a,{bootstrap:Bc,copy:pa,extend:S,merge:Zd,equals:na,element:F,forEach:q,injector:cb,noop:A,bind:ab,toJson:bb,fromJson:xc,identity:Xa,isUndefined:y,isDefined:w,isString:G,isFunction:z,isObject:D,isNumber:T,isElement:Qb,isArray:L,version:me,isDate:da,lowercase:Q,uppercase:ub,callbacks:{$$counter:0},getTestability:he,$$minErr:N,$$csp:Ba,reloadWithDebugInfo:ge}),(Ub=ke(C))("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:ne}),a.provider("$compile",Fc).directive({a:oe,input:Gc,textarea:Gc,form:pe,script:qe,select:re,style:se,option:te,ngBind:ue,ngBindHtml:ve,ngBindTemplate:we,ngClass:xe,ngClassEven:ye,ngClassOdd:ze,ngCloak:Ae,ngController:Be,ngForm:Ce,ngHide:De,ngIf:Ee,ngInclude:Fe,ngInit:Ge,ngNonBindable:He,ngPluralize:Ie,ngRepeat:Je,ngShow:Ke,ngStyle:Le,ngSwitch:Me,ngSwitchWhen:Ne,ngSwitchDefault:Oe,ngOptions:Pe,ngTransclude:Qe,ngModel:Re,ngList:Se,ngChange:Te,pattern:Hc,ngPattern:Hc,required:Ic,ngRequired:Ic,minlength:Jc,ngMinlength:Jc,maxlength:Kc,ngMaxlength:Kc,ngValue:Ue,ngModelOptions:Ve}).directive({ngInclude:We}).directive(vb).directive(Lc),a.provider({$anchorScroll:Xe,$animate:Ye,$animateCss:Ze,$$animateJs:$e,$$animateQueue:af,$$AnimateRunner:bf,$$animateAsyncRun:cf,$browser:df,$cacheFactory:ef,$controller:ff,$document:gf,$exceptionHandler:hf,$filter:Mc,$$forceReflow:jf,$interpolate:kf,$interval:lf,$http:mf,$httpParamSerializer:nf,$httpParamSerializerJQLike:of,$httpBackend:pf,$xhrFactory:qf,$jsonpCallbacks:rf,$location:sf,$log:tf,$parse:uf,$rootScope:vf,$q:wf,$$q:xf,$sce:yf,$sceDelegate:zf,$sniffer:Af,$templateCache:Bf,$templateRequest:Cf,$$testability:Df,$timeout:Ef,$window:Ff,$$rAF:Gf,$$jqLite:Hf,$$HashMap:If,$$cookieReader:Jf})}])}function db(a){return a.replace(Kf,function(a,d,c,e){return e?c.toUpperCase():c}).replace(Lf,"Moz$1")}function Nc(a){return a=a.nodeType,1===a||!a||9===a}function Oc(a,b){var d,c,e=b.createDocumentFragment(),f=[];if(Vb.test(a)){for(d=e.appendChild(b.createElement("div")),c=(Mf.exec(a)||["",""])[1].toLowerCase(),c=ja[c]||ja._default,d.innerHTML=c[1]+a.replace(Nf,"<$1></$2>")+c[2],c=c[0];c--;)d=d.lastChild;f=$a(f,d.childNodes),d=e.firstChild,d.textContent=""}else f.push(b.createTextNode(a));return e.textContent="",e.innerHTML="",q(f,function(a){e.appendChild(a)}),e}function Pc(a,b){var d=a.parentNode;d&&d.replaceChild(b,a),b.appendChild(a)}function O(a){if(a instanceof O)return a;var b;if(G(a)&&(a=W(a),b=!0),!(this instanceof O)){if(b&&"<"!=a.charAt(0))throw Wb("nosel");return new O(a)}if(b){b=C.document;var d;a=(d=Of.exec(a))?[b.createElement(d[1])]:(d=Oc(a,b))?d.childNodes:[]}Qc(this,a)}function Xb(a){return a.cloneNode(!0)}function wb(a,b){if(b||eb(a),a.querySelectorAll)for(var d=a.querySelectorAll("*"),c=0,e=d.length;c<e;c++)eb(d[c])}function Rc(a,b,d,c){if(w(c))throw Wb("offargs");var e=(c=xb(a))&&c.events,f=c&&c.handle;if(f)if(b){var g=function(b){var c=e[b];w(d)&&Za(c||[],d),w(d)&&c&&0<c.length||(a.removeEventListener(b,f,!1),delete e[b])};q(b.split(" "),function(a){g(a),yb[a]&&g(yb[a])})}else for(b in e)"$destroy"!==b&&a.removeEventListener(b,f,!1),delete e[b]}function eb(a,b){var d=a.ng339,c=d&&fb[d];c&&(b?delete c.data[b]:(c.handle&&(c.events.$destroy&&c.handle({},"$destroy"),Rc(a)),delete fb[d],a.ng339=void 0))}function xb(a,b){var d=a.ng339,d=d&&fb[d];return b&&!d&&(a.ng339=d=++Pf,d=fb[d]={events:{},data:{},handle:void 0}),d}function Yb(a,b,d){if(Nc(a)){var c=w(d),e=!c&&b&&!D(b),f=!b;if(a=(a=xb(a,!e))&&a.data,c)a[b]=d;else{if(f)return a;if(e)return a&&a[b];S(a,b)}}}function zb(a,b){return!!a.getAttribute&&-1<(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+b+" ")}function Ab(a,b){b&&a.setAttribute&&q(b.split(" "),function(b){a.setAttribute("class",W((" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+W(b)+" "," ")))})}function Bb(a,b){if(b&&a.setAttribute){var d=(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");q(b.split(" "),function(a){a=W(a),-1===d.indexOf(" "+a+" ")&&(d+=a+" ")}),a.setAttribute("class",W(d))}}function Qc(a,b){if(b)if(b.nodeType)a[a.length++]=b;else{var d=b.length;if("number"==typeof d&&b.window!==b){if(d)for(var c=0;c<d;c++)a[a.length++]=b[c]}else a[a.length++]=b}}function Sc(a,b){return Cb(a,"$"+(b||"ngController")+"Controller")}function Cb(a,b,d){for(9==a.nodeType&&(a=a.documentElement),b=L(b)?b:[b];a;){for(var c=0,e=b.length;c<e;c++)if(w(d=F.data(a,b[c])))return d;a=a.parentNode||11===a.nodeType&&a.host}}function Tc(a){for(wb(a,!0);a.firstChild;)a.removeChild(a.firstChild)}function Db(a,b){b||wb(a);var d=a.parentNode;d&&d.removeChild(a)}function Qf(a,b){b=b||C,"complete"===b.document.readyState?b.setTimeout(a):F(b).on("load",a)}function Uc(a,b){var d=Eb[b.toLowerCase()];return d&&Vc[wa(a)]&&d}function Rf(a,b){var d=function(c,d){c.isDefaultPrevented=function(){return c.defaultPrevented};var f=b[d||c.type],g=f?f.length:0;if(g){if(y(c.immediatePropagationStopped)){var h=c.stopImmediatePropagation;c.stopImmediatePropagation=function(){c.immediatePropagationStopped=!0,c.stopPropagation&&c.stopPropagation(),h&&h.call(c)}}c.isImmediatePropagationStopped=function(){return!0===c.immediatePropagationStopped};var k=f.specialHandlerWrapper||Sf;1<g&&(f=ia(f));for(var l=0;l<g;l++)c.isImmediatePropagationStopped()||k(a,c,f[l])}};return d.elem=a,d}function Sf(a,b,d){d.call(a,b)}function Tf(a,b,d){var c=b.relatedTarget;c&&(c===a||Uf.call(a,c))||d.call(a,b)}function Hf(){this.$get=function(){return S(O,{hasClass:function(a,b){return a.attr&&(a=a[0]),zb(a,b)},addClass:function(a,b){return a.attr&&(a=a[0]),Bb(a,b)},removeClass:function(a,b){return a.attr&&(a=a[0]),Ab(a,b)}})}}function Ca(a,b){var d=a&&a.$$hashKey;return d?("function"==typeof d&&(d=a.$$hashKey()),d):(d=typeof a,d="function"==d||"object"==d&&null!==a?a.$$hashKey=d+":"+(b||Yd)():d+":"+a)}function Ra(a,b){if(b){var d=0;this.nextUid=function(){return++d}}q(a,this.put,this)}function Wc(a){return a=(Function.prototype.toString.call(a)+" ").replace(Vf,""),a.match(Wf)||a.match(Xf)}function Yf(a){return(a=Wc(a))?"function("+(a[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function cb(a,b){function d(a){return function(b,c){return D(b)?void q(b,uc(a)):a(b,c)}}function c(a,b){if(Qa(a,"service"),(z(b)||L(b))&&(b=p.instantiate(b)),!b.$get)throw Ha("pget",a);return n[a+"Provider"]=b}function e(a,b){return function(){var c=B.invoke(b,this);if(y(c))throw Ha("undef",a);return c}}function f(a,b,d){return c(a,{$get:!1!==d?e(a,b):b})}function g(a){sb(y(a)||L(a),"modulesToLoad","not an array");var c,b=[];return q(a,function(a){function d(a){var b,c;for(b=0,c=a.length;b<c;b++){var e=a[b],f=p.get(e[0]);f[e[1]].apply(f,e[2])}}if(!m.get(a)){m.put(a,!0);try{G(a)?(c=Ub(a),b=b.concat(g(c.requires)).concat(c._runBlocks),d(c._invokeQueue),d(c._configBlocks)):z(a)?b.push(p.invoke(a)):L(a)?b.push(p.invoke(a)):Pa(a,"module")}catch(e){throw L(a)&&(a=a[a.length-1]),e.message&&e.stack&&-1==e.stack.indexOf(e.message)&&(e=e.message+"\n"+e.stack),Ha("modulerr",a,e.stack||e.message||e)}}}),b}function h(a,c){function d(b,e){if(a.hasOwnProperty(b)){if(a[b]===k)throw Ha("cdep",b+" <- "+l.join(" <- "));return a[b]}try{return l.unshift(b),a[b]=k,a[b]=c(b,e)}catch(f){throw a[b]===k&&delete a[b],f}finally{l.shift()}}function e(a,c,f){var g=[];a=cb.$$annotate(a,b,f);for(var h=0,k=a.length;h<k;h++){var l=a[h];if("string"!=typeof l)throw Ha("itkn",l);g.push(c&&c.hasOwnProperty(l)?c[l]:d(l,f))}return g}return{invoke:function(a,b,c,d){return"string"==typeof c&&(d=c,c=null),c=e(a,c,d),L(a)&&(a=a[a.length-1]),d=!(11>=Ea)&&("function"==typeof a&&/^(?:class\b|constructor\()/.test(Function.prototype.toString.call(a)+" ")),d?(c.unshift(null),new(Function.prototype.bind.apply(a,c))):a.apply(b,c)},instantiate:function(a,b,c){var d=L(a)?a[a.length-1]:a;return a=e(a,b,c),a.unshift(null),new(Function.prototype.bind.apply(d,a))},get:d,annotate:cb.$$annotate,has:function(b){return n.hasOwnProperty(b+"Provider")||a.hasOwnProperty(b)}}}b=!0===b;var k={},l=[],m=new Ra([],!0),n={$provide:{provider:d(c),factory:d(f),service:d(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:d(function(a,b){return f(a,ha(b),!1)}),constant:d(function(a,b){Qa(a,"constant"),n[a]=b,u[a]=b}),decorator:function(a,b){var c=p.get(a+"Provider"),d=c.$get;c.$get=function(){var a=B.invoke(d,c);return B.invoke(b,null,{$delegate:a})}}}},p=n.$injector=h(n,function(a,b){throw ca.isString(b)&&l.push(b),Ha("unpr",l.join(" <- "))}),u={},R=h(u,function(a,b){var c=p.get(a+"Provider",b);return B.invoke(c.$get,c,void 0,a)}),B=R;n.$injectorProvider={$get:ha(R)};var r=g(a),B=R.get("$injector");return B.strictDi=b,q(r,function(a){a&&B.invoke(a)}),B}function Xe(){var a=!0;this.disableAutoScrolling=function(){a=!1},this.$get=["$window","$location","$rootScope",function(b,d,c){function e(a){var b=null;return Array.prototype.some.call(a,function(a){if("a"===wa(a))return b=a,!0}),b}function f(a){if(a){a.scrollIntoView();var c;c=g.yOffset,z(c)?c=c():Qb(c)?(c=c[0],c="fixed"!==b.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):T(c)||(c=0),c&&(a=a.getBoundingClientRect().top,b.scrollBy(0,a-c))}else b.scrollTo(0,0)}function g(a){a=G(a)?a:d.hash();var b;a?(b=h.getElementById(a))?f(b):(b=e(h.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var h=b.document;return a&&c.$watch(function(){return d.hash()},function(a,b){a===b&&""===a||Qf(function(){c.$evalAsync(g)})}),g}]}function gb(a,b){return a||b?a?b?(L(a)&&(a=a.join(" ")),L(b)&&(b=b.join(" ")),a+" "+b):a:b:""}function Zf(a){G(a)&&(a=a.split(" "));var b=U();return q(a,function(a){a.length&&(b[a]=!0)}),b}function Ia(a){return D(a)?a:{}}function $f(a,b,d,c){function e(a){try{a.apply(null,va.call(arguments,1))}finally{if(R--,0===R)for(;B.length;)try{B.pop()()}catch(b){d.error(b)}}}function f(){t=null,g(),h()}function g(){r=K(),r=y(r)?null:r,na(r,E)&&(r=E),E=r}function h(){v===k.url()&&J===r||(v=k.url(),J=r,q(M,function(a){a(k.url(),r)}))}var k=this,l=a.location,m=a.history,n=a.setTimeout,p=a.clearTimeout,u={};k.isMock=!1;var R=0,B=[];k.$$completeOutstandingRequest=e,k.$$incOutstandingRequestCount=function(){R++},k.notifyWhenNoOutstandingRequests=function(a){0===R?a():B.push(a)};var r,J,v=l.href,fa=b.find("base"),t=null,K=c.history?function(){try{return m.state}catch(a){}}:A;g(),J=r,k.url=function(b,d,e){if(y(e)&&(e=null),l!==a.location&&(l=a.location),m!==a.history&&(m=a.history),b){var f=J===e;if(v===b&&(!c.history||f))return k;var h=v&&Ja(v)===Ja(b);return v=b,J=e,!c.history||h&&f?(h||(t=b),d?l.replace(b):h?(d=l,e=b.indexOf("#"),e=-1===e?"":b.substr(e),d.hash=e):l.href=b,l.href!==b&&(t=b)):(m[d?"replaceState":"pushState"](e,"",b),g(),J=r),t&&(t=b),k}return t||l.href.replace(/%27/g,"'")},k.state=function(){return r};var M=[],H=!1,E=null;k.onUrlChange=function(b){return H||(c.history&&F(a).on("popstate",f),F(a).on("hashchange",f),H=!0),M.push(b),b},k.$$applicationDestroyed=function(){F(a).off("hashchange popstate",f)},k.$$checkUrlChange=h,k.baseHref=function(){var a=fa.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""},k.defer=function(a,b){var c;return R++,c=n(function(){delete u[c],e(a)},b||0),u[c]=!0,c},k.defer.cancel=function(a){return!!u[a]&&(delete u[a],p(a),e(A),!0)}}function df(){this.$get=["$window","$log","$sniffer","$document",function(a,b,d,c){return new $f(a,c,b,d)}]}function ef(){this.$get=function(){function a(a,c){function e(a){a!=n&&(p?p==a&&(p=a.n):p=a,f(a.n,a.p),f(a,n),n=a,n.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(a in b)throw N("$cacheFactory")("iid",a);var g=0,h=S({},c,{id:a}),k=U(),l=c&&c.capacity||Number.MAX_VALUE,m=U(),n=null,p=null;return b[a]={put:function(a,b){if(!y(b)){if(l<Number.MAX_VALUE){var c=m[a]||(m[a]={key:a});e(c)}return a in k||g++,k[a]=b,g>l&&this.remove(p.key),b}},get:function(a){if(l<Number.MAX_VALUE){var b=m[a];if(!b)return;e(b)}return k[a]},remove:function(a){if(l<Number.MAX_VALUE){var b=m[a];if(!b)return;b==n&&(n=b.p),b==p&&(p=b.n),f(b.n,b.p),delete m[a]}a in k&&(delete k[a],g--)},removeAll:function(){k=U(),g=0,m=U(),n=p=null},destroy:function(){m=h=k=null,delete b[a]},info:function(){return S({},h,{size:g})}}}var b={};return a.info=function(){var a={};return q(b,function(b,e){a[e]=b.info()}),a},a.get=function(a){return b[a]},a}}function Bf(){this.$get=["$cacheFactory",function(a){return a("templates")}]}function Fc(a,b){function d(a,b,c){var d=/^\s*([@&<]|=(\*?))(\??)\s*(\w*)\s*$/,e=U();return q(a,function(a,f){if(a in n)e[f]=n[a];else{var g=a.match(d);if(!g)throw ga("iscp",b,f,a,c?"controller bindings definition":"isolate scope definition");e[f]={mode:g[1][0],collection:"*"===g[2],optional:"?"===g[3],attrName:g[4]||f},g[4]&&(n[a]=e[f])}}),e}function c(a){var b=a.charAt(0);if(!b||b!==Q(b))throw ga("baddir",a);if(a!==a.trim())throw ga("baddir",a)}function e(a){var b=a.require||a.controller&&a.name;return!L(b)&&D(b)&&q(b,function(a,c){var d=a.match(l);a.substring(d[0].length)||(b[c]=d[0]+c)}),b}var f={},g=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,h=/(([\w\-]+)(?:\:([^;]+))?;?)/,k=be("ngSrc,ngSrcset,src,srcset"),l=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,m=/^(on[a-z]+|formaction)$/,n=U();this.directive=function B(b,d){return Qa(b,"directive"),G(b)?(c(b),sb(d,"directiveFactory"),f.hasOwnProperty(b)||(f[b]=[],a.factory(b+"Directive",["$injector","$exceptionHandler",function(a,c){var d=[];return q(f[b],function(f,g){try{var h=a.invoke(f);z(h)?h={compile:ha(h)}:!h.compile&&h.link&&(h.compile=ha(h.link)),h.priority=h.priority||0,h.index=g,h.name=h.name||b,h.require=e(h),h.restrict=h.restrict||"EA",h.$$moduleName=f.$$moduleName,d.push(h)}catch(k){c(k)}}),d}])),f[b].push(d)):q(b,uc(B)),this},this.component=function(a,b){function c(a){function e(b){return z(b)||L(b)?function(c,d){return a.invoke(b,this,{$element:c,$attrs:d})}:b}var f=b.template||b.templateUrl?b.template:"",g={controller:d,controllerAs:Xc(b.controller)||b.controllerAs||"$ctrl",template:e(f),templateUrl:e(b.templateUrl),transclude:b.transclude,scope:{},bindToController:b.bindings||{},restrict:"E",require:b.require};return q(b,function(a,b){"$"===b.charAt(0)&&(g[b]=a)}),g}var d=b.controller||function(){};return q(b,function(a,b){"$"===b.charAt(0)&&(c[b]=a,z(d)&&(d[b]=a))}),c.$inject=["$injector"],this.directive(a,c)},this.aHrefSanitizationWhitelist=function(a){return w(a)?(b.aHrefSanitizationWhitelist(a),this):b.aHrefSanitizationWhitelist()},this.imgSrcSanitizationWhitelist=function(a){return w(a)?(b.imgSrcSanitizationWhitelist(a),this):b.imgSrcSanitizationWhitelist()};var p=!0;this.debugInfoEnabled=function(a){return w(a)?(p=a,this):p};var u=10;this.onChangesTtl=function(a){return arguments.length?(u=a,this):u},this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$sce","$animate","$$sanitizeUri",function(a,b,c,e,n,t,K,M,H,E){function I(){try{if(!--qa)throw Y=void 0,ga("infchng",u);K.$apply(function(){for(var a=[],b=0,c=Y.length;b<c;++b)try{Y[b]()}catch(d){a.push(d)}if(Y=void 0,a.length)throw a})}finally{qa++}}function Da(a,b){if(b){var d,e,f,c=Object.keys(b);for(d=0,e=c.length;d<e;d++)f=c[d],this[f]=b[f]}else this.$attr={};this.$$element=a}function P(a,b,c){pa.innerHTML="<span "+b+">",b=pa.firstChild.attributes;var d=b[0];b.removeNamedItem(d.name),d.value=c,a.attributes.setNamedItem(d)}function x(a,b){try{a.addClass(b)}catch(c){}}function aa(a,b,c,d,e){a instanceof F||(a=F(a));for(var f=/\S+/,g=0,h=a.length;g<h;g++){var k=a[g];k.nodeType===Ma&&k.nodeValue.match(f)&&Pc(k,a[g]=C.document.createElement("span"))}var l=s(a,b,a,c,d,e);aa.$$addScopeClass(a);var m=null;return function(b,c,d){sb(b,"scope"),e&&e.needsNewScope&&(b=b.$parent.$new()),d=d||{};var f=d.parentBoundTranscludeFn,g=d.transcludeControllers;if(d=d.futureParentElement,f&&f.$$boundTransclude&&(f=f.$$boundTransclude),m||(m=(d=d&&d[0])&&"foreignobject"!==wa(d)&&ma.call(d).match(/SVG/)?"svg":"html"),d="html"!==m?F(da(m,F("<div>").append(a).html())):c?Oa.clone.call(a):a,g)for(var h in g)d.data("$"+h+"Controller",g[h].instance);return aa.$$addScopeInfo(d,b),c&&c(d,b),l&&l(b,d,d,f),d}}function s(a,b,c,d,e,f){function g(a,c,d,e){var f,k,l,m,p,r,v;if(n)for(v=Array(c.length),m=0;m<h.length;m+=3)f=h[m],v[f]=c[f];else v=c;for(m=0,p=h.length;m<p;)k=v[h[m++]],c=h[m++],f=h[m++],c?(c.scope?(l=a.$new(),aa.$$addScopeInfo(F(k),l)):l=a,r=c.transcludeOnThisElement?za(a,c.transclude,e):!c.templateOnThisElement&&e?e:!e&&b?za(a,b):null,c(f,l,k,d,r)):f&&f(a,k.childNodes,void 0,e)}for(var k,l,m,p,n,h=[],r=0;r<a.length;r++)k=new Da,l=$b(a[r],[],k,0===r?d:void 0,e),(f=l.length?oa(l,a[r],k,b,c,null,[],[],f):null)&&f.scope&&aa.$$addScopeClass(k.$$element),k=f&&f.terminal||!(m=a[r].childNodes)||!m.length?null:s(m,f?(f.transcludeOnThisElement||!f.templateOnThisElement)&&f.transclude:b),(f||k)&&(h.push(r,f,k),p=!0,n=n||f),f=null;return p?g:null}function za(a,b,c){function d(e,f,g,h,k){return e||(e=a.$new(!1,k),e.$$transcluded=!0),b(e,f,{parentBoundTranscludeFn:c,transcludeControllers:g,futureParentElement:h})}var f,e=d.$$slots=U();for(f in b.$$slots)e[f]=b.$$slots[f]?za(a,b.$$slots[f],c):null;return d}function $b(a,b,c,d,e){var f=c.$attr;switch(a.nodeType){case 1:O(b,Aa(wa(a)),"E",d,e);for(var g,k,l,m,p=a.attributes,n=0,r=p&&p.length;n<r;n++){var v=!1,u=!1;g=p[n],k=g.name,l=W(g.value),g=Aa(k),(m=Ba.test(g))&&(k=k.replace(Yc,"").substr(8).replace(/_(.)/g,function(a,b){return b.toUpperCase()})),(g=g.match(Ca))&&V(g[1])&&(v=k,u=k.substr(0,k.length-5)+"end",k=k.substr(0,k.length-6)),g=Aa(k.toLowerCase()),f[g]=k,!m&&c.hasOwnProperty(g)||(c[g]=l,Uc(a,g)&&(c[g]=!0)),ia(a,b,l,g,m),O(b,g,"A",d,e,v,u)}if(f=a.className,D(f)&&(f=f.animVal),G(f)&&""!==f)for(;a=h.exec(f);)g=Aa(a[2]),O(b,g,"C",d,e)&&(c[g]=W(a[3])),f=f.substr(a.index+a[0].length);break;case Ma:if(11===Ea)for(;a.parentNode&&a.nextSibling&&a.nextSibling.nodeType===Ma;)a.nodeValue+=a.nextSibling.nodeValue,a.parentNode.removeChild(a.nextSibling);ca(b,a.nodeValue);break;case 8:hb(a,b,c,d,e)}return b.sort(Z),b}function hb(a,b,c,d,e){try{var f=g.exec(a.nodeValue);if(f){var h=Aa(f[1]);O(b,h,"M",d,e)&&(c[h]=W(f[2]))}}catch(k){}}function N(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ga("uterdir",b,c);1==a.nodeType&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--),d.push(a),a=a.nextSibling}while(0<e)}else d.push(a);return F(d)}function Zc(a,b,c){return function(d,e,f,g,h){return e=N(e[0],b,c),a(d,e,f,g,h)}}function ac(a,b,c,d,e,f){var g;return a?aa(b,c,d,e,f):function(){return g||(g=aa(b,c,d,e,f),b=c=f=null),g.apply(this,arguments)}}function oa(a,b,d,e,f,g,h,k,l){function m(a,b,c,d){a&&(c&&(a=Zc(a,c,d)),a.require=x.require,a.directiveName=I,(u===x||x.$$isolateScope)&&(a=ja(a,{isolateScope:!0})),h.push(a)),b&&(c&&(b=Zc(b,c,d)),b.require=x.require,b.directiveName=I,(u===x||x.$$isolateScope)&&(b=ja(b,{isolateScope:!0})),k.push(b))}function p(a,e,f,g,l){function m(a,b,c,d){var e;if(Ya(a)||(d=c,c=b,b=a,a=void 0),fa&&(e=t),c||(c=fa?I.parent():I),!d)return l(a,b,e,c,s);var f=l.$$slots[d];if(f)return f(a,b,e,c,s);if(y(f))throw ga("noslot",d,ya(I))}var n,E,x,M,B,t,P,I;b===f?(g=d,I=d.$$element):(I=F(f),g=new Da(I,d)),B=e,u?M=e.$new(!0):r&&(B=e.$parent),l&&(P=m,P.$$boundTransclude=l,P.isSlotFilled=function(a){return!!l.$$slots[a]}),v&&(t=ag(I,g,P,v,M,e,u)),u&&(aa.$$addScopeInfo(I,M,!0,!(H&&(H===u||H===u.$$originalDirective))),aa.$$addScopeClass(I,!0),M.$$isolateBindings=u.$$isolateBindings,E=ka(e,g,M,M.$$isolateBindings,u),E.removeWatches&&M.$on("$destroy",E.removeWatches));for(n in t){E=v[n],x=t[n];var Zb=E.$$bindings.bindToController;x.bindingInfo=x.identifier&&Zb?ka(B,g,x.instance,Zb,E):{};var K=x();K!==x.instance&&(x.instance=K,I.data("$"+E.name+"Controller",K),x.bindingInfo.removeWatches&&x.bindingInfo.removeWatches(),x.bindingInfo=ka(B,g,x.instance,Zb,E))}for(q(v,function(a,b){var c=a.require;a.bindToController&&!L(c)&&D(c)&&S(t[b].instance,ib(b,c,I,t))}),q(t,function(a){var b=a.instance;if(z(b.$onChanges))try{b.$onChanges(a.bindingInfo.initialChanges)}catch(d){c(d)}if(z(b.$onInit))try{b.$onInit()}catch(e){c(e)}z(b.$doCheck)&&(B.$watch(function(){b.$doCheck()}),b.$doCheck()),z(b.$onDestroy)&&B.$on("$destroy",function(){b.$onDestroy()})}),n=0,E=h.length;n<E;n++)x=h[n],la(x,x.isolateScope?M:e,I,g,x.require&&ib(x.directiveName,x.require,I,t),P);var s=e;for(u&&(u.template||null===u.templateUrl)&&(s=M),a&&a(s,f.childNodes,void 0,l),n=k.length-1;0<=n;n--)x=k[n],la(x,x.isolateScope?M:e,I,g,x.require&&ib(x.directiveName,x.require,I,t),P);q(t,function(a){a=a.instance,z(a.$postLink)&&a.$postLink()})}l=l||{};for(var x,I,P,s,w,n=-Number.MAX_VALUE,r=l.newScopeDirective,v=l.controllerDirectives,u=l.newIsolateScopeDirective,H=l.templateDirective,E=l.nonTlbTranscludeDirective,M=!1,B=!1,fa=l.hasElementTranscludeDirective,t=d.$$element=F(b),K=e,Fa=!1,za=!1,A=0,C=a.length;A<C;A++){x=a[A];var G=x.$$start,hb=x.$$end;if(G&&(t=N(b,G,hb)),P=void 0,n>x.priority)break;if((w=x.scope)&&(x.templateUrl||(D(w)?(X("new/isolated scope",u||r,x,t),u=x):X("new/isolated scope",u,x,t)),r=r||x),I=x.name,!Fa&&(x.replace&&(x.templateUrl||x.template)||x.transclude&&!x.$$tlb)){for(w=A+1;Fa=a[w++];)if(Fa.transclude&&!Fa.$$tlb||Fa.replace&&(Fa.templateUrl||Fa.template)){za=!0;break}Fa=!0}if(!x.templateUrl&&x.controller&&(w=x.controller,
v=v||U(),X("'"+I+"' controller",v[I],x,t),v[I]=x),w=x.transclude)if(M=!0,x.$$tlb||(X("transclusion",E,x,t),E=x),"element"==w)fa=!0,n=x.priority,P=t,t=d.$$element=F(aa.$$createComment(I,d[I])),b=t[0],ea(f,va.call(P,0),b),P[0].$$parentNode=P[0].parentNode,K=ac(za,P,e,n,g&&g.name,{nonTlbTranscludeDirective:E});else{var oa=U();if(P=F(Xb(b)).contents(),D(w)){P=[];var Q=U(),O=U();q(w,function(a,b){var c="?"===a.charAt(0);a=c?a.substring(1):a,Q[a]=b,oa[b]=null,O[b]=c}),q(t.contents(),function(a){var b=Q[Aa(wa(a))];b?(O[b]=!0,oa[b]=oa[b]||[],oa[b].push(a)):P.push(a)}),q(O,function(a,b){if(!a)throw ga("reqslot",b)});for(var V in oa)oa[V]&&(oa[V]=ac(za,oa[V],e))}t.empty(),K=ac(za,P,e,void 0,void 0,{needsNewScope:x.$$isolateScope||x.$$newScope}),K.$$slots=oa}if(x.template)if(B=!0,X("template",H,x,t),H=x,w=z(x.template)?x.template(t,d):x.template,w=xa(w),x.replace){if(g=x,P=Vb.test(w)?$c(da(x.templateNamespace,W(w))):[],b=P[0],1!=P.length||1!==b.nodeType)throw ga("tplrt",I,"");ea(f,t,b),C={$attr:{}},w=$b(b,[],C);var Z=a.splice(A+1,a.length-(A+1));(u||r)&&T(w,u,r),a=a.concat(w).concat(Z),$(d,C),C=a.length}else t.html(w);if(x.templateUrl)B=!0,X("template",H,x,t),H=x,x.replace&&(g=x),p=ba(a.splice(A,a.length-A),t,d,f,M&&K,h,k,{controllerDirectives:v,newScopeDirective:r!==x&&r,newIsolateScopeDirective:u,templateDirective:H,nonTlbTranscludeDirective:E}),C=a.length;else if(x.compile)try{s=x.compile(t,d,K);var Y=x.$$originalDirective||x;z(s)?m(null,ab(Y,s),G,hb):s&&m(ab(Y,s.pre),ab(Y,s.post),G,hb)}catch(ca){c(ca,ya(t))}x.terminal&&(p.terminal=!0,n=Math.max(n,x.priority))}return p.scope=r&&!0===r.scope,p.transcludeOnThisElement=M,p.templateOnThisElement=B,p.transclude=K,l.hasElementTranscludeDirective=fa,p}function ib(a,b,c,d){var e;if(G(b)){var f=b.match(l);b=b.substring(f[0].length);var g=f[1]||f[3],f="?"===f[2];if("^^"===g?c=c.parent():e=(e=d&&d[b])&&e.instance,!e){var h="$"+b+"Controller";e=g?c.inheritedData(h):c.data(h)}if(!e&&!f)throw ga("ctreq",b,a)}else if(L(b))for(e=[],g=0,f=b.length;g<f;g++)e[g]=ib(a,b[g],c,d);else D(b)&&(e={},q(b,function(b,f){e[f]=ib(a,b,c,d)}));return e||null}function ag(a,b,c,d,e,f,g){var k,h=U();for(k in d){var l=d[k],m={$scope:l===g||l.$$isolateScope?e:f,$element:a,$attrs:b,$transclude:c},p=l.controller;"@"==p&&(p=b[l.name]),m=t(p,m,!0,l.controllerAs),h[l.name]=m,a.data("$"+l.name+"Controller",m.instance)}return h}function T(a,b,c){for(var d=0,e=a.length;d<e;d++)a[d]=Rb(a[d],{$$isolateScope:b,$$newScope:c})}function O(b,e,g,h,k,l,m){if(e===k)return null;if(k=null,f.hasOwnProperty(e)){var p;e=a.get(e+"Directive");for(var n=0,r=e.length;n<r;n++)try{if(p=e[n],(y(h)||h>p.priority)&&-1!=p.restrict.indexOf(g)){if(l&&(p=Rb(p,{$$start:l,$$end:m})),!p.$$bindings){var u=p,v=p,x=p.name,H={isolateScope:null,bindToController:null};if(D(v.scope)&&(!0===v.bindToController?(H.bindToController=d(v.scope,x,!0),H.isolateScope={}):H.isolateScope=d(v.scope,x,!1)),D(v.bindToController)&&(H.bindToController=d(v.bindToController,x,!0)),D(H.bindToController)){var E=v.controller,M=v.controllerAs;if(!E)throw ga("noctrl",x);if(!Xc(E,M))throw ga("noident",x)}var t=u.$$bindings=H;D(t.isolateScope)&&(p.$$isolateBindings=t.isolateScope)}b.push(p),k=p}}catch(I){c(I)}}return k}function V(b){if(f.hasOwnProperty(b))for(var c=a.get(b+"Directive"),d=0,e=c.length;d<e;d++)if(b=c[d],b.multiElement)return!0;return!1}function $(a,b){var c=b.$attr,d=a.$attr;q(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))}),q(b,function(b,e){a.hasOwnProperty(e)||"$"===e.charAt(0)||(a[e]=b,"class"!==e&&"style"!==e&&(d[e]=c[e]))})}function ba(a,b,c,d,f,g,h,k){var m,p,l=[],n=b[0],r=a.shift(),u=Rb(r,{templateUrl:null,transclude:null,replace:null,$$originalDirective:r}),H=z(r.templateUrl)?r.templateUrl(b,c):r.templateUrl,E=r.templateNamespace;return b.empty(),e(H).then(function(e){var v,M;if(e=xa(e),r.replace){if(e=Vb.test(e)?$c(da(E,W(e))):[],v=e[0],1!=e.length||1!==v.nodeType)throw ga("tplrt",r.name,H);e={$attr:{}},ea(d,b,v);var B=$b(v,[],e);D(r.scope)&&T(B,!0),a=B.concat(a),$(c,e)}else v=n,b.html(e);for(a.unshift(u),m=oa(a,v,c,f,b,r,g,h,k),q(d,function(a,c){a==v&&(d[c]=b[0])}),p=s(b[0].childNodes,f);l.length;){e=l.shift(),M=l.shift();var t=l.shift(),I=l.shift(),B=b[0];if(!e.$$destroyed){if(M!==n){var P=M.className;k.hasElementTranscludeDirective&&r.replace||(B=Xb(v)),ea(t,F(M),B),x(F(B),P)}M=m.transcludeOnThisElement?za(e,m.transclude,I):I,m(p,e,B,d,M)}}l=null}),function(a,b,c,d,e){a=e,b.$$destroyed||(l?l.push(b,c,d,a):(m.transcludeOnThisElement&&(a=za(b,m.transclude,e)),m(p,b,c,d,a)))}}function Z(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function X(a,b,c,d){function e(a){return a?" (module: "+a+")":""}if(b)throw ga("multidir",b.name,e(b.$$moduleName),c.name,e(c.$$moduleName),a,ya(d))}function ca(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:function(a){a=a.parent();var b=!!a.length;return b&&aa.$$addBindingClass(a),function(a,c){var e=c.parent();b||aa.$$addBindingClass(e),aa.$$addBindingInfo(e,d.expressions),a.$watch(d,function(a){c[0].nodeValue=a})}}})}function da(a,b){switch(a=Q(a||"html")){case"svg":case"math":var c=C.document.createElement("div");return c.innerHTML="<"+a+">"+b+"</"+a+">",c.childNodes[0].childNodes;default:return b}}function ha(a,b){if("srcdoc"==b)return M.HTML;var c=wa(a);return"xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b)?M.RESOURCE_URL:void 0}function ia(a,c,d,e,f){var g=ha(a,e);f=k[e]||f;var h=b(d,!0,g,f);if(h){if("multiple"===e&&"select"===wa(a))throw ga("selmulti",ya(a));c.push({priority:100,compile:function(){return{pre:function(a,c,k){if(c=k.$$observers||(k.$$observers=U()),m.test(e))throw ga("nodomevents");var l=k[e];l!==d&&(h=l&&b(l,!0,g,f),d=l),h&&(k[e]=h(a),(c[e]||(c[e]=[])).$$inter=!0,(k.$$observers&&k.$$observers[e].$$scope||a).$watch(h,function(a,b){"class"===e&&a!=b?k.$updateClass(a,b):k.$set(e,a)}))}}}})}}function ea(a,b,c){var g,h,d=b[0],e=b.length,f=d.parentNode;if(a)for(g=0,h=a.length;g<h;g++)if(a[g]==d){a[g++]=c,h=g+e-1;for(var k=a.length;g<k;g++,h++)h<k?a[g]=a[h]:delete a[g];a.length-=e-1,a.context===d&&(a.context=c);break}for(f&&f.replaceChild(c,d),a=C.document.createDocumentFragment(),g=0;g<e;g++)a.appendChild(b[g]);for(F.hasData(d)&&(F.data(c,F.data(d)),F(d).off("$destroy")),F.cleanData(a.querySelectorAll("*")),g=1;g<e;g++)delete b[g];b[0]=c,b.length=1}function ja(a,b){return S(function(){return a.apply(null,arguments)},a,b)}function la(a,b,d,e,f,g){try{a(b,d,e,f,g)}catch(h){c(h,ya(d))}}function ka(a,c,d,e,f){function g(b,c,e){z(d.$onChanges)&&c!==e&&(Y||(a.$$postDigest(I),Y=[]),m||(m={},Y.push(h)),m[b]&&(e=m[b].previousValue),m[b]=new Fb(e,c))}function h(){d.$onChanges(m),m=void 0}var m,k=[],l={};return q(e,function(e,h){var v,u,x,H,m=e.attrName,p=e.optional;switch(e.mode){case"@":p||ua.call(c,m)||(d[h]=c[m]=void 0),c.$observe(m,function(a){(G(a)||Ga(a))&&(g(h,a,d[h]),d[h]=a)}),c.$$observers[m].$$scope=a,v=c[m],G(v)?d[h]=b(v)(a):Ga(v)&&(d[h]=v),l[h]=new Fb(bc,d[h]);break;case"=":if(!ua.call(c,m)){if(p)break;c[m]=void 0}if(p&&!c[m])break;u=n(c[m]),H=u.literal?na:function(a,b){return a===b||a!==a&&b!==b},x=u.assign||function(){throw v=d[h]=u(a),ga("nonassign",c[m],m,f.name)},v=d[h]=u(a),p=function(b){return H(b,d[h])||(H(b,v)?x(a,b=d[h]):d[h]=b),v=b},p.$stateful=!0,p=e.collection?a.$watchCollection(c[m],p):a.$watch(n(c[m],p),null,u.literal),k.push(p);break;case"<":if(!ua.call(c,m)){if(p)break;c[m]=void 0}if(p&&!c[m])break;u=n(c[m]);var E=d[h]=u(a);l[h]=new Fb(bc,d[h]),p=a.$watch(u,function(a,b){if(b===a){if(b===E)return;b=E}g(h,a,b),d[h]=a},u.literal),k.push(p);break;case"&":if(u=c.hasOwnProperty(m)?n(c[m]):A,u===A&&p)break;d[h]=function(b){return u(a,b)}}}),{initialChanges:l,removeWatches:k.length&&function(){for(var a=0,b=k.length;a<b;++a)k[a]()}}}var Y,ta=/^\w/,pa=C.document.createElement("div"),qa=u;Da.prototype={$normalize:Aa,$addClass:function(a){a&&0<a.length&&H.addClass(this.$$element,a)},$removeClass:function(a){a&&0<a.length&&H.removeClass(this.$$element,a)},$updateClass:function(a,b){var c=ad(a,b);c&&c.length&&H.addClass(this.$$element,c),(c=ad(b,a))&&c.length&&H.removeClass(this.$$element,c)},$set:function(a,b,d,e){var f=Uc(this.$$element[0],a),g=bd[a],h=a;if(f?(this.$$element.prop(a,b),e=f):g&&(this[g]=b,h=g),this[a]=b,e?this.$attr[a]=e:(e=this.$attr[a])||(this.$attr[a]=e=Cc(a,"-")),f=wa(this.$$element),"a"===f&&("href"===a||"xlinkHref"===a)||"img"===f&&"src"===a)this[a]=b=E(b,"src"===a);else if("img"===f&&"srcset"===a&&w(b)){for(var f="",g=W(b),k=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,k=/\s/.test(g)?k:/(,)/,g=g.split(k),k=Math.floor(g.length/2),l=0;l<k;l++)var m=2*l,f=f+E(W(g[m]),!0),f=f+(" "+W(g[m+1]));g=W(g[2*l]).split(/\s/),f+=E(W(g[0]),!0),2===g.length&&(f+=" "+W(g[1])),this[a]=b=f}!1!==d&&(null===b||y(b)?this.$$element.removeAttr(e):ta.test(e)?this.$$element.attr(e,b):P(this.$$element[0],e,b)),(a=this.$$observers)&&q(a[h],function(a){try{a(b)}catch(d){c(d)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers=U()),e=d[a]||(d[a]=[]);return e.push(b),K.$evalAsync(function(){e.$$inter||!c.hasOwnProperty(a)||y(c[a])||b(c[a])}),function(){Za(e,b)}}};var ra=b.startSymbol(),sa=b.endSymbol(),xa="{{"==ra&&"}}"==sa?Xa:function(a){return a.replace(/\{\{/g,ra).replace(/}}/g,sa)},Ba=/^ngAttr[A-Z]/,Ca=/^(.+)Start$/;return aa.$$addBindingInfo=p?function(a,b){var c=a.data("$binding")||[];L(b)?c=c.concat(b):c.push(b),a.data("$binding",c)}:A,aa.$$addBindingClass=p?function(a){x(a,"ng-binding")}:A,aa.$$addScopeInfo=p?function(a,b,c,d){a.data(c?d?"$isolateScopeNoTemplate":"$isolateScope":"$scope",b)}:A,aa.$$addScopeClass=p?function(a,b){x(a,b?"ng-isolate-scope":"ng-scope")}:A,aa.$$createComment=function(a,b){var c="";return p&&(c=" "+(a||"")+": ",b&&(c+=b+" ")),C.document.createComment(c)},aa}]}function Fb(a,b){this.previousValue=a,this.currentValue=b}function Aa(a){return db(a.replace(Yc,""))}function ad(a,b){var d="",c=a.split(/\s+/),e=b.split(/\s+/),f=0;a:for(;f<c.length;f++){for(var g=c[f],h=0;h<e.length;h++)if(g==e[h])continue a;d+=(0<d.length?" ":"")+g}return d}function $c(a){a=F(a);var b=a.length;if(1>=b)return a;for(;b--;)8===a[b].nodeType&&bg.call(a,b,1);return a}function Xc(a,b){if(b&&G(b))return b;if(G(a)){var d=cd.exec(a);if(d)return d[3]}}function ff(){var a={},b=!1;this.has=function(b){return a.hasOwnProperty(b)},this.register=function(b,c){Qa(b,"controller"),D(b)?S(a,b):a[b]=c},this.allowGlobals=function(){b=!0},this.$get=["$injector","$window",function(d,c){function e(a,b,c,d){if(!a||!D(a.$scope))throw N("$controller")("noscp",d,b);a.$scope[b]=c}return function(f,g,h,k){var l,m,n;if(h=!0===h,k&&G(k)&&(n=k),G(f)){if(k=f.match(cd),!k)throw cg("ctrlfmt",f);m=k[1],n=n||k[3],f=a.hasOwnProperty(m)?a[m]:Ec(g.$scope,m,!0)||(b?Ec(c,m,!0):void 0),Pa(f,m,!0)}return h?(h=(L(f)?f[f.length-1]:f).prototype,l=Object.create(h||null),n&&e(g,n,l,m||f.name),S(function(){var a=d.invoke(f,l,g,m);return a!==l&&(D(a)||z(a))&&(l=a,n&&e(g,n,l,m||f.name)),l},{instance:l,identifier:n})):(l=d.instantiate(f,g,m),n&&e(g,n,l,m||f.name),l)}}]}function gf(){this.$get=["$window",function(a){return F(a.document)}]}function hf(){this.$get=["$log",function(a){return function(b,d){a.error.apply(a,arguments)}}]}function cc(a){return D(a)?da(a)?a.toISOString():bb(a):a}function nf(){this.$get=function(){return function(a){if(!a)return"";var b=[];return tc(a,function(a,c){null===a||y(a)||(L(a)?q(a,function(a){b.push(ea(c)+"="+ea(cc(a)))}):b.push(ea(c)+"="+ea(cc(a))))}),b.join("&")}}}function of(){this.$get=function(){return function(a){function b(a,e,f){null===a||y(a)||(L(a)?q(a,function(a,c){b(a,e+"["+(D(a)?c:"")+"]")}):D(a)&&!da(a)?tc(a,function(a,c){b(a,e+(f?"":"[")+c+(f?"":"]"))}):d.push(ea(e)+"="+ea(cc(a))))}if(!a)return"";var d=[];return b(a,"",!0),d.join("&")}}}function dc(a,b){if(G(a)){var d=a.replace(dg,"").trim();if(d){var c=b("Content-Type");(c=c&&0===c.indexOf(dd))||(c=(c=d.match(eg))&&fg[c[0]].test(d)),c&&(a=xc(d))}}return a}function ed(a){var d,b=U();return G(a)?q(a.split("\n"),function(a){d=a.indexOf(":");var e=Q(W(a.substr(0,d)));a=W(a.substr(d+1)),e&&(b[e]=b[e]?b[e]+", "+a:a)}):D(a)&&q(a,function(a,d){var f=Q(d),g=W(a);f&&(b[f]=b[f]?b[f]+", "+g:g)}),b}function fd(a){var b;return function(d){return b||(b=ed(a)),d?(d=b[Q(d)],void 0===d&&(d=null),d):b}}function gd(a,b,d,c){return z(c)?c(a,b,d):(q(c,function(c){a=c(a,b,d)}),a)}function mf(){var a=this.defaults={transformResponse:[dc],transformRequest:[function(a){return D(a)&&"[object File]"!==ma.call(a)&&"[object Blob]"!==ma.call(a)&&"[object FormData]"!==ma.call(a)?bb(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ia(ec),put:ia(ec),patch:ia(ec)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"},b=!1;this.useApplyAsync=function(a){return w(a)?(b=!!a,this):b};var d=!0;this.useLegacyPromiseExtensions=function(a){return w(a)?(d=!!a,this):d};var c=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(e,f,g,h,k,l){function m(b){function c(a,b){for(var d=0,e=b.length;d<e;){var f=b[d++],g=b[d++];a=a.then(f,g)}return b.length=0,a}function e(a,b){var c,d={};return q(a,function(a,e){z(a)?(c=a(b),null!=c&&(d[e]=c)):d[e]=a}),d}function f(a){var b=S({},a);return b.data=gd(a.data,a.headers,a.status,g.transformResponse),a=a.status,200<=a&&300>a?b:k.reject(b)}if(!D(b))throw N("$http")("badreq",b);if(!G(b.url))throw N("$http")("badreq",b.url);var g=S({method:"get",transformRequest:a.transformRequest,transformResponse:a.transformResponse,paramSerializer:a.paramSerializer},b);g.headers=function(b){var f,g,h,c=a.headers,d=S({},b.headers),c=S({},c.common,c[Q(b.method)]);a:for(f in c){g=Q(f);for(h in d)if(Q(h)===g)continue a;d[f]=c[f]}return e(d,ia(b))}(b),g.method=ub(g.method),g.paramSerializer=G(g.paramSerializer)?l.get(g.paramSerializer):g.paramSerializer;var h=[],m=[],p=k.when(g);return q(R,function(a){(a.request||a.requestError)&&h.unshift(a.request,a.requestError),(a.response||a.responseError)&&m.push(a.response,a.responseError)}),p=c(p,h),p=p.then(function(b){var c=b.headers,d=gd(b.data,fd(c),void 0,b.transformRequest);return y(d)&&q(c,function(a,b){"content-type"===Q(b)&&delete c[b]}),y(b.withCredentials)&&!y(a.withCredentials)&&(b.withCredentials=a.withCredentials),n(b,d).then(f,f)}),p=c(p,m),d?(p.success=function(a){return Pa(a,"fn"),p.then(function(b){a(b.data,b.status,b.headers,g)}),p},p.error=function(a){return Pa(a,"fn"),p.then(null,function(b){a(b.data,b.status,b.headers,g)}),p}):(p.success=hd("success"),p.error=hd("error")),p}function n(c,d){function g(a){if(a){var c={};return q(a,function(a,d){c[d]=function(c){function d(){a(c)}b?h.$applyAsync(d):h.$$phase?d():h.$apply(d)}}),c}}function l(a,c,d,e){function f(){n(c,a,d,e)}E&&(200<=a&&300>a?E.put(P,[a,c,ed(d),e]):E.remove(P)),b?h.$applyAsync(f):(f(),h.$$phase||h.$apply())}function n(a,b,d,e){b=-1<=b?b:0,(200<=b&&300>b?M.resolve:M.reject)({data:a,status:b,headers:fd(d),config:c,statusText:e})}function t(a){n(a.data,a.status,ia(a.headers()),a.statusText)}function R(){var a=m.pendingRequests.indexOf(c);-1!==a&&m.pendingRequests.splice(a,1)}var E,I,M=k.defer(),H=M.promise,Da=c.headers,P=p(c.url,c.paramSerializer(c.params));return m.pendingRequests.push(c),H.then(R,R),!c.cache&&!a.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(E=D(c.cache)?c.cache:D(a.cache)?a.cache:u),E&&(I=E.get(P),w(I)?I&&z(I.then)?I.then(t,t):L(I)?n(I[1],I[0],ia(I[2]),I[3]):n(I,200,{},"OK"):E.put(P,H)),y(I)&&((I=id(c.url)?f()[c.xsrfCookieName||a.xsrfCookieName]:void 0)&&(Da[c.xsrfHeaderName||a.xsrfHeaderName]=I),e(c.method,P,d,l,Da,c.timeout,c.withCredentials,c.responseType,g(c.eventHandlers),g(c.uploadEventHandlers))),H}function p(a,b){return 0<b.length&&(a+=(-1==a.indexOf("?")?"?":"&")+b),a}var u=g("$http");a.paramSerializer=G(a.paramSerializer)?l.get(a.paramSerializer):a.paramSerializer;var R=[];return q(c,function(a){R.unshift(G(a)?l.get(a):l.invoke(a))}),m.pendingRequests=[],function(a){q(arguments,function(a){m[a]=function(b,c){return m(S({},c||{},{method:a,url:b}))}})}("get","delete","head","jsonp"),function(a){q(arguments,function(a){m[a]=function(b,c,d){return m(S({},d||{},{method:a,url:b,data:c}))}})}("post","put","patch"),m.defaults=a,m}]}function qf(){this.$get=function(){return function(){return new C.XMLHttpRequest}}}function pf(){this.$get=["$browser","$jsonpCallbacks","$document","$xhrFactory",function(a,b,d,c){return gg(a,c,a.defer,b,d[0])}]}function gg(a,b,d,c,e){function f(a,b,d){a=a.replace("JSON_CALLBACK",b);var f=e.createElement("script"),m=null;return f.type="text/javascript",f.src=a,f.async=!0,m=function(a){f.removeEventListener("load",m,!1),f.removeEventListener("error",m,!1),e.body.removeChild(f),f=null;var g=-1,u="unknown";a&&("load"!==a.type||c.wasCalled(b)||(a={type:"error"}),u=a.type,g="error"===a.type?404:200),d&&d(g,u)},f.addEventListener("load",m,!1),f.addEventListener("error",m,!1),e.body.appendChild(f),m}return function(e,h,k,l,m,n,p,u,R,B){function r(){fa&&fa(),t&&t.abort()}function J(b,c,e,f,g){w(M)&&d.cancel(M),fa=t=null,b(c,e,f,g),a.$$completeOutstandingRequest(A)}if(a.$$incOutstandingRequestCount(),h=h||a.url(),"jsonp"===Q(e))var v=c.createCallback(h),fa=f(h,v,function(a,b){var d=200===a&&c.getResponse(v);J(l,a,d,"",b),c.removeCallback(v)});else{var t=b(e,h);if(t.open(e,h,!0),q(m,function(a,b){w(a)&&t.setRequestHeader(b,a)}),t.onload=function(){var a=t.statusText||"",b="response"in t?t.response:t.responseText,c=1223===t.status?204:t.status;0===c&&(c=b?200:"file"==Y(h).protocol?404:0),J(l,c,b,t.getAllResponseHeaders(),a)},e=function(){J(l,-1,null,null,"")},t.onerror=e,t.onabort=e,q(R,function(a,b){t.addEventListener(b,a)}),q(B,function(a,b){t.upload.addEventListener(b,a)}),p&&(t.withCredentials=!0),u)try{t.responseType=u}catch(K){if("json"!==u)throw K}t.send(y(k)?null:k)}if(0<n)var M=d(r,n);else n&&z(n.then)&&n.then(r)}}function kf(){var a="{{",b="}}";this.startSymbol=function(b){return b?(a=b,this):a},this.endSymbol=function(a){return a?(b=a,this):b},this.$get=["$parse","$exceptionHandler","$sce",function(d,c,e){function f(a){return"\\\\\\"+a}function g(c){return c.replace(n,a).replace(p,b)}function h(a,b,c,d){var e;return e=a.$watch(function(a){return e(),d(a)},b,c)}function k(f,k,p,n){function J(a){try{var b=a;a=p?e.getTrusted(p,b):e.valueOf(b);var d;if(n&&!w(a))d=a;else if(null==a)d="";else{switch(typeof a){case"string":break;case"number":a=""+a;break;default:a=bb(a)}d=a}return d}catch(g){c(Ka.interr(f,g))}}if(!f.length||-1===f.indexOf(a)){var v;return k||(k=g(f),v=ha(k),v.exp=f,v.expressions=[],v.$$watchDelegate=h),v}n=!!n;var q,t,K=0,M=[],H=[];v=f.length;for(var E=[],I=[];K<v;){if(-1==(q=f.indexOf(a,K))||-1==(t=f.indexOf(b,q+l))){K!==v&&E.push(g(f.substring(K)));break}K!==q&&E.push(g(f.substring(K,q))),K=f.substring(q+l,t),M.push(K),H.push(d(K,J)),K=t+m,I.push(E.length),E.push("")}if(p&&1<E.length&&Ka.throwNoconcat(f),!k||M.length){var Da=function(a){for(var b=0,c=M.length;b<c;b++){if(n&&y(a[b]))return;E[I[b]]=a[b]}return E.join("")};return S(function(a){var b=0,d=M.length,e=Array(d);try{for(;b<d;b++)e[b]=H[b](a);return Da(e)}catch(g){c(Ka.interr(f,g))}},{exp:f,expressions:M,$$watchDelegate:function(a,b){var c;return a.$watchGroup(H,function(d,e){var f=Da(d);z(b)&&b.call(this,f,d!==e?c:f,a),c=f})}})}}var l=a.length,m=b.length,n=new RegExp(a.replace(/./g,f),"g"),p=new RegExp(b.replace(/./g,f),"g");return k.startSymbol=function(){return a},k.endSymbol=function(){return b},k}]}function lf(){this.$get=["$rootScope","$window","$q","$$q","$browser",function(a,b,d,c,e){function f(f,k,l,m){function n(){p?f.apply(null,u):f(r)}var p=4<arguments.length,u=p?va.call(arguments,4):[],R=b.setInterval,q=b.clearInterval,r=0,J=w(m)&&!m,v=(J?c:d).defer(),fa=v.promise;return l=w(l)?l:0,fa.$$intervalId=R(function(){J?e.defer(n):a.$evalAsync(n),v.notify(r++),0<l&&r>=l&&(v.resolve(r),q(fa.$$intervalId),delete g[fa.$$intervalId]),J||a.$apply()},k),g[fa.$$intervalId]=v,fa}var g={};return f.cancel=function(a){return!!(a&&a.$$intervalId in g)&&(g[a.$$intervalId].reject("canceled"),b.clearInterval(a.$$intervalId),delete g[a.$$intervalId],!0)},f}]}function fc(a){a=a.split("/");for(var b=a.length;b--;)a[b]=qb(a[b]);return a.join("/")}function jd(a,b){var d=Y(a);b.$$protocol=d.protocol,b.$$host=d.hostname,b.$$port=Z(d.port)||hg[d.protocol]||null}function kd(a,b){var d="/"!==a.charAt(0);d&&(a="/"+a);var c=Y(a);b.$$path=decodeURIComponent(d&&"/"===c.pathname.charAt(0)?c.pathname.substring(1):c.pathname),b.$$search=Ac(c.search),b.$$hash=decodeURIComponent(c.hash),b.$$path&&"/"!=b.$$path.charAt(0)&&(b.$$path="/"+b.$$path)}function ka(a,b){if(0===b.lastIndexOf(a,0))return b.substr(a.length)}function Ja(a){var b=a.indexOf("#");return-1==b?a:a.substr(0,b)}function jb(a){return a.replace(/(#.+)|#$/,"$1")}function gc(a,b,d){this.$$html5=!0,d=d||"",jd(a,this),this.$$parse=function(a){var d=ka(b,a);if(!G(d))throw Gb("ipthprfx",a,b);kd(d,this),this.$$path||(this.$$path="/"),this.$$compose()},this.$$compose=function(){var a=Tb(this.$$search),d=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=fc(this.$$path)+(a?"?"+a:"")+d,this.$$absUrl=b+this.$$url.substr(1)},this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;return w(f=ka(a,c))?(g=f,g=w(f=ka(d,f))?b+(ka("/",f)||f):a+g):w(f=ka(b,c))?g=b+f:b==c+"/"&&(g=b),g&&this.$$parse(g),!!g}}function hc(a,b,d){jd(a,this),this.$$parse=function(c){var f,e=ka(a,c)||ka(b,c);y(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",y(e)&&(a=c,this.replace())):(f=ka(d,e),y(f)&&(f=e)),kd(f,this),c=this.$$path;var e=a,g=/^\/[A-Z]:(\/.*)/;0===f.lastIndexOf(e,0)&&(f=f.replace(e,"")),g.exec(f)||(c=(f=g.exec(c))?f[1]:c),this.$$path=c,this.$$compose()},this.$$compose=function(){var b=Tb(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=fc(this.$$path)+(b?"?"+b:"")+e,this.$$absUrl=a+(this.$$url?d+this.$$url:"")},this.$$parseLinkUrl=function(b,d){return Ja(a)==Ja(b)&&(this.$$parse(b),!0)}}function ld(a,b,d){this.$$html5=!0,hc.apply(this,arguments),this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;return a==Ja(c)?f=c:(g=ka(b,c))?f=a+d+g:b===c+"/"&&(f=b),f&&this.$$parse(f),!!f},this.$$compose=function(){var b=Tb(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=fc(this.$$path)+(b?"?"+b:"")+e,this.$$absUrl=a+d+this.$$url}}function Hb(a){return function(){return this[a]}}function md(a,b){return function(d){return y(d)?this[a]:(this[a]=b(d),this.$$compose(),this)}}function sf(){var a="",b={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(b){return w(b)?(a=b,this):a},this.html5Mode=function(a){return Ga(a)?(b.enabled=a,this):D(a)?(Ga(a.enabled)&&(b.enabled=a.enabled),Ga(a.requireBase)&&(b.requireBase=a.requireBase),Ga(a.rewriteLinks)&&(b.rewriteLinks=a.rewriteLinks),this):b},this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(d,c,e,f,g){function h(a,b,d){var e=l.url(),f=l.$$state;try{c.url(a,b,d),l.$$state=c.state()}catch(g){throw l.url(e),l.$$state=f,g}}function k(a,b){d.$broadcast("$locationChangeSuccess",l.absUrl(),a,l.$$state,b)}var l,m;m=c.baseHref();var p,n=c.url();if(b.enabled){if(!m&&b.requireBase)throw Gb("nobase");p=n.substring(0,n.indexOf("/",n.indexOf("//")+2))+(m||"/"),m=e.history?gc:ld}else p=Ja(n),m=hc;var u=p.substr(0,Ja(p).lastIndexOf("/")+1);l=new m(p,u,"#"+a),l.$$parseLinkUrl(n,n),l.$$state=c.state();var R=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(b.rewriteLinks&&!a.ctrlKey&&!a.metaKey&&!a.shiftKey&&2!=a.which&&2!=a.button){for(var e=F(a.target);"a"!==wa(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),k=e.attr("href")||e.attr("xlink:href");D(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=Y(h.animVal).href),R.test(h)||!h||e.attr("target")||a.isDefaultPrevented()||!l.$$parseLinkUrl(h,k)||(a.preventDefault(),l.absUrl()!=c.url()&&(d.$apply(),g.angular["ff-684208-preventDefault"]=!0))}}),jb(l.absUrl())!=jb(n)&&c.url(l.absUrl(),!0);var q=!0;return c.onUrlChange(function(a,b){y(ka(u,a))?g.location.href=a:(d.$evalAsync(function(){var f,c=l.absUrl(),e=l.$$state;a=jb(a),l.$$parse(a),l.$$state=b,f=d.$broadcast("$locationChangeStart",a,c,b,e).defaultPrevented,l.absUrl()===a&&(f?(l.$$parse(c),l.$$state=e,h(c,!1,e)):(q=!1,k(c,e)))}),d.$$phase||d.$digest())}),d.$watch(function(){var a=jb(c.url()),b=jb(l.absUrl()),f=c.state(),g=l.$$replace,m=a!==b||l.$$html5&&e.history&&f!==l.$$state;(q||m)&&(q=!1,d.$evalAsync(function(){var b=l.absUrl(),c=d.$broadcast("$locationChangeStart",b,a,l.$$state,f).defaultPrevented;l.absUrl()===b&&(c?(l.$$parse(a),l.$$state=f):(m&&h(b,g,f===l.$$state?null:l.$$state),k(a,f)))})),l.$$replace=!1}),l}]}function tf(){var a=!0,b=this;this.debugEnabled=function(b){return w(b)?(a=b,this):a},this.$get=["$window",function(d){function c(a){return a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line)),a}function e(a){var b=d.console||{},e=b[a]||b.log||A;a=!1;try{a=!!e.apply}catch(k){}return a?function(){var a=[];return q(arguments,function(b){a.push(c(b))}),e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){a&&c.apply(b,arguments)}}()}}]}function Sa(a,b){if("__defineGetter__"===a||"__defineSetter__"===a||"__lookupGetter__"===a||"__lookupSetter__"===a||"__proto__"===a)throw X("isecfld",b);return a}function ig(a){return a+""}function ra(a,b){if(a){if(a.constructor===a)throw X("isecfn",b);if(a.window===a)throw X("isecwindow",b);if(a.children&&(a.nodeName||a.prop&&a.attr&&a.find))throw X("isecdom",b);if(a===Object)throw X("isecobj",b)}return a}function nd(a,b){if(a){if(a.constructor===a)throw X("isecfn",b);if(a===jg||a===kg||a===lg)throw X("isecff",b)}}function Ib(a,b){if(a&&(a===(0).constructor||a===(!1).constructor||a==="".constructor||a==={}.constructor||a===[].constructor||a===Function.constructor))throw X("isecaf",b)}function mg(a,b){return"undefined"!=typeof a?a:b}function od(a,b){return"undefined"==typeof a?b:"undefined"==typeof b?a:a+b}function V(a,b){var d,c;switch(a.type){case s.Program:d=!0,q(a.body,function(a){V(a.expression,b),d=d&&a.expression.constant}),a.constant=d;break;case s.Literal:a.constant=!0,a.toWatch=[];break;case s.UnaryExpression:V(a.argument,b),a.constant=a.argument.constant,a.toWatch=a.argument.toWatch;break;case s.BinaryExpression:V(a.left,b),V(a.right,b),a.constant=a.left.constant&&a.right.constant,a.toWatch=a.left.toWatch.concat(a.right.toWatch);break;case s.LogicalExpression:V(a.left,b),V(a.right,b),a.constant=a.left.constant&&a.right.constant,a.toWatch=a.constant?[]:[a];break;case s.ConditionalExpression:V(a.test,b),V(a.alternate,b),V(a.consequent,b),a.constant=a.test.constant&&a.alternate.constant&&a.consequent.constant,a.toWatch=a.constant?[]:[a];break;case s.Identifier:a.constant=!1,a.toWatch=[a];break;case s.MemberExpression:V(a.object,b),a.computed&&V(a.property,b),a.constant=a.object.constant&&(!a.computed||a.property.constant),a.toWatch=[a];break;case s.CallExpression:d=!!a.filter&&!b(a.callee.name).$stateful,c=[],q(a.arguments,function(a){V(a,b),d=d&&a.constant,a.constant||c.push.apply(c,a.toWatch)}),a.constant=d,a.toWatch=a.filter&&!b(a.callee.name).$stateful?c:[a];break;case s.AssignmentExpression:V(a.left,b),V(a.right,b),a.constant=a.left.constant&&a.right.constant,a.toWatch=[a];break;case s.ArrayExpression:d=!0,c=[],q(a.elements,function(a){V(a,b),d=d&&a.constant,a.constant||c.push.apply(c,a.toWatch)}),a.constant=d,a.toWatch=c;break;case s.ObjectExpression:d=!0,c=[],q(a.properties,function(a){V(a.value,b),d=d&&a.value.constant&&!a.computed,a.value.constant||c.push.apply(c,a.value.toWatch)}),a.constant=d,a.toWatch=c;break;case s.ThisExpression:a.constant=!1,a.toWatch=[];break;case s.LocalsExpression:a.constant=!1,a.toWatch=[]}}function pd(a){if(1==a.length){a=a[0].expression;var b=a.toWatch;return 1!==b.length?b:b[0]!==a?b:void 0}}function qd(a){return a.type===s.Identifier||a.type===s.MemberExpression}function rd(a){if(1===a.body.length&&qd(a.body[0].expression))return{type:s.AssignmentExpression,left:a.body[0].expression,right:{type:s.NGValueParameter},operator:"="}}function sd(a){return 0===a.body.length||1===a.body.length&&(a.body[0].expression.type===s.Literal||a.body[0].expression.type===s.ArrayExpression||a.body[0].expression.type===s.ObjectExpression)}function td(a,b){this.astBuilder=a,this.$filter=b}function ud(a,b){this.astBuilder=a,this.$filter=b}function Jb(a){return"constructor"==a}function ic(a){return z(a.valueOf)?a.valueOf():ng.call(a)}function uf(){var c,e,a=U(),b=U(),d={true:!0,false:!1,null:null,undefined:void 0};this.addLiteral=function(a,b){d[a]=b},this.setIdentifierFns=function(a,b){return c=a,e=b,this},this.$get=["$filter",function(f){function g(c,d,e){var g,k,H;switch(e=e||J,typeof c){case"string":H=c=c.trim();var E=e?b:a;if(g=E[H],!g){":"===c.charAt(0)&&":"===c.charAt(1)&&(k=!0,c=c.substring(2)),g=e?r:B;var q=new jc(g);g=new kc(q,f,g).parse(c),g.constant?g.$$watchDelegate=p:k?g.$$watchDelegate=g.literal?n:m:g.inputs&&(g.$$watchDelegate=l),e&&(g=h(g)),E[H]=g}return u(g,d);case"function":return u(c,d);default:return u(A,d)}}function h(a){function b(c,d,e,f){var g=J;J=!0;try{return a(c,d,e,f)}finally{J=g}}if(!a)return a;b.$$watchDelegate=a.$$watchDelegate,b.assign=h(a.assign),b.constant=a.constant,b.literal=a.literal;for(var c=0;a.inputs&&c<a.inputs.length;++c)a.inputs[c]=h(a.inputs[c]);return b.inputs=a.inputs,b}function k(a,b){return null==a||null==b?a===b:("object"!=typeof a||(a=ic(a),"object"!=typeof a))&&(a===b||a!==a&&b!==b)}function l(a,b,c,d,e){var g,f=d.inputs;if(1===f.length){var h=k,f=f[0];return a.$watch(function(a){var b=f(a);return k(b,h)||(g=d(a,void 0,void 0,[b]),h=b&&ic(b)),g},b,c,e)}for(var l=[],m=[],p=0,n=f.length;p<n;p++)l[p]=k,m[p]=null;return a.$watch(function(a){for(var b=!1,c=0,e=f.length;c<e;c++){var h=f[c](a);(b||(b=!k(h,l[c])))&&(m[c]=h,l[c]=h&&ic(h))}return b&&(g=d(a,void 0,void 0,m)),g},b,c,e)}function m(a,b,c,d){var e,f;return e=a.$watch(function(a){return d(a)},function(a,c,d){f=a,z(b)&&b.apply(this,arguments),w(a)&&d.$$postDigest(function(){w(f)&&e()})},c)}function n(a,b,c,d){function e(a){var b=!0;return q(a,function(a){w(a)||(b=!1)}),b}var f,g;return f=a.$watch(function(a){return d(a)},function(a,c,d){g=a,z(b)&&b.call(this,a,c,d),e(a)&&d.$$postDigest(function(){e(g)&&f()})},c)}function p(a,b,c,d){var e;return e=a.$watch(function(a){return e(),d(a)},b,c)}function u(a,b){if(!b)return a;var c=a.$$watchDelegate,d=!1,c=c!==n&&c!==m?function(c,e,f,g){return f=d&&g?g[0]:a(c,e,f,g),b(f,c,e)}:function(c,d,e,f){return e=a(c,d,e,f),c=b(e,c,d),w(e)?c:e};return a.$$watchDelegate&&a.$$watchDelegate!==l?c.$$watchDelegate=a.$$watchDelegate:b.$stateful||(c.$$watchDelegate=l,d=!a.inputs,c.inputs=a.inputs?a.inputs:[a]),c}var R=Ba().noUnsafeEval,B={csp:R,expensiveChecks:!1,literals:pa(d),isIdentifierStart:z(c)&&c,isIdentifierContinue:z(e)&&e},r={csp:R,expensiveChecks:!0,literals:pa(d),isIdentifierStart:z(c)&&c,isIdentifierContinue:z(e)&&e},J=!1;return g.$$runningExpensiveChecks=function(){return J},g}]}function wf(){this.$get=["$rootScope","$exceptionHandler",function(a,b){return vd(function(b){a.$evalAsync(b)},b)}]}function xf(){this.$get=["$browser","$exceptionHandler",function(a,b){return vd(function(b){a.defer(b)},b)}]}function vd(a,b){function d(){this.$$state={status:0}}function c(a,b){return function(c){b.call(a,c)}}function e(c){!c.processScheduled&&c.pending&&(c.processScheduled=!0,a(function(){var a,d,e;e=c.pending,c.processScheduled=!1,c.pending=void 0;for(var f=0,g=e.length;f<g;++f){d=e[f][0],a=e[f][c.status];try{z(a)?d.resolve(a(c.value)):1===c.status?d.resolve(c.value):d.reject(c.value)}catch(h){d.reject(h),b(h)}}}))}function f(){this.promise=new d}var g=N("$q",TypeError),h=function(){var a=new f;return a.resolve=c(a,a.resolve),
@@ -26,7 +26,7 @@ tabindex:[Number,null],removeTagSymbol:[String,String.fromCharCode(215)],replace
}),this.$hide())},$setWaiting:function(a){this.$waiting=!!a,angular.forEach(this.$editables,function(b){b.setWaiting(!!a)})},$setError:function(a,b){angular.forEach(this.$editables,function(c){a&&c.name!==a||c.setError(b)})},$submit:function(){function a(a){var b=d();b.when(this.$onbeforesave()),b.then({onWait:angular.bind(this,this.$setWaiting),onTrue:a?angular.bind(this,this.$save):angular.bind(this,this.$hide),onFalse:angular.bind(this,this.$hide),onString:angular.bind(this,this.$activate)})}if(!this.$waiting){this.$setError(null,"");var b=d();angular.forEach(this.$editables,function(a){b.when(a.onbeforesave())}),b.then({onWait:angular.bind(this,this.$setWaiting),onTrue:angular.bind(this,a,!0),onFalse:angular.bind(this,a,!1),onString:angular.bind(this,this.$activate)})}},$save:function(){angular.forEach(this.$editables,function(a){a.save()});var a=d();a.when(this.$onaftersave()),angular.forEach(this.$editables,function(b){a.when(b.onaftersave())}),a.then({onWait:angular.bind(this,this.$setWaiting),onTrue:angular.bind(this,this.$hide),onFalse:angular.bind(this,this.$hide),onString:angular.bind(this,this.$activate)})},$onshow:angular.noop,$oncancel:angular.noop,$onhide:angular.noop,$onbeforesave:angular.noop,$onaftersave:angular.noop};return function(){return angular.extend({$editables:[],$visible:!1,$waiting:!1,$data:{},_clicked:!1,_blur:null},i)}}]),angular.module("xeditable").directive("editableForm",["$rootScope","$parse","editableFormController","editableOptions",function(a,b,c,d){return{restrict:"A",require:["form"],compile:function(){return{pre:function(b,d,e,f){var g,h=f[0];e.editableForm?b[e.editableForm]&&b[e.editableForm].$show?(g=b[e.editableForm],angular.extend(h,g)):(g=c(),b[e.editableForm]=g,angular.extend(g,h)):(g=c(),angular.extend(h,g));var i=a.$$editableBuffer,j=h.$name;j&&i&&i[j]&&(angular.forEach(i[j],function(a){g.$addEditable(a)}),delete i[j])},post:function(a,c,e,f){var g;g=e.editableForm&&a[e.editableForm]&&a[e.editableForm].$show?a[e.editableForm]:f[0],e.onshow&&(g.$onshow=angular.bind(g,b(e.onshow),a)),e.onhide&&(g.$onhide=angular.bind(g,b(e.onhide),a)),e.oncancel&&(g.$oncancel=angular.bind(g,b(e.oncancel),a)),e.shown&&b(e.shown)(a)&&g.$show(),g._blur=e.blur||d.blurForm,e.ngSubmit||e.submit||(e.onbeforesave&&(g.$onbeforesave=function(){return b(e.onbeforesave)(a,{$data:g.$data})}),e.onaftersave&&(g.$onaftersave=function(){return b(e.onaftersave)(a,{$data:g.$data})}),c.bind("submit",function(b){b.preventDefault(),a.$apply(function(){g.$submit()})})),c.bind("click",function(a){a.which&&1!==a.which||g.$visible&&(g._clicked=!0)})}}}}}]),angular.module("xeditable").factory("editablePromiseCollection",["$q",function(a){function b(){return{promises:[],hasFalse:!1,hasString:!1,when:function(b,c){if(b===!1)this.hasFalse=!0;else if(!c&&angular.isObject(b))this.promises.push(a.when(b));else{if(!angular.isString(b))return;this.hasString=!0}},then:function(b){function c(){h.hasString||h.hasFalse?!h.hasString&&h.hasFalse?e():f():d()}b=b||{};var d=b.onTrue||angular.noop,e=b.onFalse||angular.noop,f=b.onString||angular.noop,g=b.onWait||angular.noop,h=this;this.promises.length?(g(!0),a.all(this.promises).then(function(a){g(!1),angular.forEach(a,function(a){h.when(a,!0)}),c()},function(a){g(!1),f()})):c()}}}return b}]),angular.module("xeditable").factory("editableUtils",[function(){return{indexOf:function(a,b){if(a.indexOf)return a.indexOf(b);for(var c=0;c<a.length;c++)if(b===a[c])return c;return-1},arrayRemove:function(a,b){var c=this.indexOf(a,b);return c>=0&&a.splice(c,1),b},camelToDash:function(a){var b=/[A-Z]/g;return a.replace(b,function(a,b){return(b?"-":"")+a.toLowerCase()})},dashToCamel:function(a){var b=/([\:\-\_]+(.))/g,c=/^moz([A-Z])/;return a.replace(b,function(a,b,c,d){return d?c.toUpperCase():c}).replace(c,"Moz$1")},rename:function(a,b){var c=angular.element("<"+a+"/>");c.html(b.html());for(var d=b[0].attributes,e=0;e<d.length;++e)c.attr(d.item(e).nodeName,d.item(e).value);return c}}}]),angular.module("xeditable").factory("editableNgOptionsParser",[function(){function a(a){var c;if(!(c=a.match(b)))throw"ng-options parse error";var d,e=c[2]||c[1],f=c[4]||c[6],g=c[5],h=(c[3]||"",c[2]?c[1]:f),i=c[7],j=c[8],k=j?c[8]:null;return void 0===g?(d=f+" in "+i,void 0!==j&&(d+=" track by "+k)):d="("+g+", "+f+") in "+i,{ngRepeat:d,locals:{valueName:f,keyName:g,valueFn:h,displayFn:e}}}var b=/^\s*(.*?)(?:\s+as\s+(.*?))?(?:\s+group\s+by\s+(.*))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+(.*?)(?:\s+track\s+by\s+(.*?))?$/;return a}]),angular.module("xeditable").factory("editableCombodate",[function(){function a(a,b){if(this.$element=angular.element(a),"INPUT"!=this.$element[0].nodeName)throw"Combodate should be applied to INPUT element";var c=(new Date).getFullYear();this.defaults={format:"YYYY-MM-DD HH:mm",template:"D / MMM / YYYY H : mm",value:null,minYear:1970,maxYear:c,yearDescending:!0,minuteStep:5,secondStep:1,firstItem:"empty",errorClass:null,customClass:"",roundTime:!0,smartDays:!0},this.options=angular.extend({},this.defaults,b),this.init()}return a.prototype={constructor:a,init:function(){if(this.map={day:["D","date"],month:["M","month"],year:["Y","year"],hour:["[Hh]","hours"],minute:["m","minutes"],second:["s","seconds"],ampm:["[Aa]",""]},this.$widget=angular.element('<span class="combodate"></span>').html(this.getTemplate()),this.initCombos(),this.options.smartDays){var a=this;this.$widget.find("select").bind("change",function(b){(angular.element(b.target).hasClass("month")||angular.element(b.target).hasClass("year"))&&a.fillCombo("day")})}this.$widget.find("select").css("width","auto"),this.$element.css("display","none").after(this.$widget),this.setValue(this.$element.val()||this.options.value)},getTemplate:function(){var a=this.options.template,b=this.options.customClass;return angular.forEach(this.map,function(b,c){b=b[0];var d=new RegExp(b+"+"),e=b.length>1?b.substring(1,2):b;a=a.replace(d,"{"+e+"}")}),a=a.replace(/ /g,"&nbsp;"),angular.forEach(this.map,function(c,d){c=c[0];var e=c.length>1?c.substring(1,2):c;a=a.replace("{"+e+"}",'<select class="'+d+" "+b+'"></select>')}),a},initCombos:function(){for(var a in this.map){var b=this.$widget[0].querySelectorAll("."+a);this["$"+a]=b.length?angular.element(b):null,this.fillCombo(a)}},fillCombo:function(a){var b=this["$"+a];if(b){var c="fill"+a.charAt(0).toUpperCase()+a.slice(1),d=this[c](),e=b.val();b.html("");for(var f=0;f<d.length;f++)b.append('<option value="'+d[f][0]+'">'+d[f][1]+"</option>");b.val(e)}},fillCommon:function(a){var b,c=[];if("name"===this.options.firstItem){b=moment.relativeTime||moment.langData()._relativeTime;var d="function"==typeof b[a]?b[a](1,!0,a,!1):b[a];d=d.split(" ").reverse()[0],c.push(["",d])}else"empty"===this.options.firstItem&&c.push(["",""]);return c},fillDay:function(){var a,b,c=this.fillCommon("d"),d=-1!==this.options.template.indexOf("DD"),e=31;if(this.options.smartDays&&this.$month&&this.$year){var f=parseInt(this.$month.val(),10),g=parseInt(this.$year.val(),10);isNaN(f)||isNaN(g)||(e=moment([g,f]).daysInMonth())}for(b=1;e>=b;b++)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillMonth:function(){var a,b,c=this.fillCommon("M"),d=-1!==this.options.template.indexOf("MMMM"),e=-1!==this.options.template.indexOf("MMM"),f=-1!==this.options.template.indexOf("MM");for(b=0;11>=b;b++)a=d?moment().date(1).month(b).format("MMMM"):e?moment().date(1).month(b).format("MMM"):f?this.leadZero(b+1):b+1,c.push([b,a]);return c},fillYear:function(){var a,b,c=[],d=-1!==this.options.template.indexOf("YYYY");for(b=this.options.maxYear;b>=this.options.minYear;b--)a=d?b:(b+"").substring(2),c[this.options.yearDescending?"push":"unshift"]([b,a]);return c=this.fillCommon("y").concat(c)},fillHour:function(){var a,b,c=this.fillCommon("h"),d=-1!==this.options.template.indexOf("h"),e=(-1!==this.options.template.indexOf("H"),-1!==this.options.template.toLowerCase().indexOf("hh")),f=d?1:0,g=d?12:23;for(b=f;g>=b;b++)a=e?this.leadZero(b):b,c.push([b,a]);return c},fillMinute:function(){var a,b,c=this.fillCommon("m"),d=-1!==this.options.template.indexOf("mm");for(b=0;59>=b;b+=this.options.minuteStep)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillSecond:function(){var a,b,c=this.fillCommon("s"),d=-1!==this.options.template.indexOf("ss");for(b=0;59>=b;b+=this.options.secondStep)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillAmpm:function(){var a=-1!==this.options.template.indexOf("a"),b=(-1!==this.options.template.indexOf("A"),[["am",a?"am":"AM"],["pm",a?"pm":"PM"]]);return b},getValue:function(a){var b,c={},d=this,e=!1;return angular.forEach(this.map,function(a,b){if("ampm"!==b){var f="day"===b?1:0;return c[b]=d["$"+b]?parseInt(d["$"+b].val(),10):f,isNaN(c[b])?(e=!0,!1):void 0}}),e?"":(this.$ampm&&(12===c.hour?c.hour="am"===this.$ampm.val()?0:12:c.hour="am"===this.$ampm.val()?c.hour:c.hour+12),b=moment([c.year,c.month,c.day,c.hour,c.minute,c.second]),this.highlight(b),a=void 0===a?this.options.format:a,null===a?b.isValid()?b:null:b.isValid()?b.format(a):"")},setValue:function(a){function b(a,b){var c={};return angular.forEach(a.children("option"),function(a,d){var e=angular.element(a).attr("value");if(""!==e){var f=Math.abs(e-b);("undefined"==typeof c.distance||f<c.distance)&&(c={value:e,distance:f})}}),c.value}if(a){var c="string"==typeof a?moment(a,this.options.format,!0):moment(a),d=this,e={};c.isValid()&&(angular.forEach(this.map,function(a,b){"ampm"!==b&&(e[b]=c[a[1]]())}),this.$ampm&&(e.hour>=12?(e.ampm="pm",e.hour>12&&(e.hour-=12)):(e.ampm="am",0===e.hour&&(e.hour=12))),angular.forEach(e,function(a,c){d["$"+c]&&("minute"===c&&d.options.minuteStep>1&&d.options.roundTime&&(a=b(d["$"+c],a)),"second"===c&&d.options.secondStep>1&&d.options.roundTime&&(a=b(d["$"+c],a)),d["$"+c].val(a))}),this.options.smartDays&&this.fillCombo("day"),this.$element.val(c.format(this.options.format)).triggerHandler("change"))}},highlight:function(a){a.isValid()?this.options.errorClass?this.$widget.removeClass(this.options.errorClass):this.$widget.find("select").css("border-color",this.borderColor):this.options.errorClass?this.$widget.addClass(this.options.errorClass):(this.borderColor||(this.borderColor=this.$widget.find("select").css("border-color")),this.$widget.find("select").css("border-color","red"))},leadZero:function(a){return 9>=a?"0"+a:a},destroy:function(){this.$widget.remove(),this.$element.removeData("combodate").show()}},{getInstance:function(b,c){return new a(b,c)}}}]),angular.module("xeditable").factory("editableIcons",function(){var a={default:{bs2:{ok:"icon-ok icon-white",cancel:"icon-remove"},bs3:{ok:"glyphicon glyphicon-ok",cancel:"glyphicon glyphicon-remove"}},external:{"font-awesome":{ok:"fa fa-check",cancel:"fa fa-times"}}};return a}),angular.module("xeditable").factory("editableThemes",function(){var a={default:{formTpl:'<form class="editable-wrap"></form>',noformTpl:'<span class="editable-wrap"></span>',controlsTpl:'<span class="editable-controls"></span>',inputTpl:"",errorTpl:'<div class="editable-error" data-ng-if="$error" data-ng-bind="$error"></div>',buttonsTpl:'<span class="editable-buttons"></span>',submitTpl:'<button type="submit">save</button>',cancelTpl:'<button type="button" ng-click="$form.$cancel()">cancel</button>'},bs2:{formTpl:'<form class="form-inline editable-wrap" role="form"></form>',noformTpl:'<span class="editable-wrap"></span>',controlsTpl:'<div class="editable-controls controls control-group" ng-class="{\'error\': $error}"></div>',inputTpl:"",errorTpl:'<div class="editable-error help-block" data-ng-if="$error" data-ng-bind="$error"></div>',buttonsTpl:'<span class="editable-buttons"></span>',submitTpl:'<button type="submit" class="btn btn-primary"><span></span></button>',cancelTpl:'<button type="button" class="btn" ng-click="$form.$cancel()"><span></span></button>'},bs3:{formTpl:'<form class="form-inline editable-wrap" role="form"></form>',noformTpl:'<span class="editable-wrap"></span>',controlsTpl:'<div class="editable-controls form-group" ng-class="{\'has-error\': $error}"></div>',inputTpl:"",errorTpl:'<div class="editable-error help-block" data-ng-if="$error" data-ng-bind="$error"></div>',buttonsTpl:'<span class="editable-buttons"></span>',submitTpl:'<button type="submit" class="btn btn-primary"><span></span></button>',cancelTpl:'<button type="button" class="btn btn-default" ng-click="$form.$cancel()"><span></span></button>',buttonsClass:"",inputClass:"",postrender:function(){switch(this.directiveName){case"editableText":case"editableSelect":case"editableTextarea":case"editableEmail":case"editableTel":case"editableNumber":case"editableUrl":case"editableSearch":case"editableDate":case"editableDatetime":case"editableBsdate":case"editableTime":case"editableMonth":case"editableWeek":case"editablePassword":case"editableDatetimeLocal":if(this.inputEl.addClass("form-control"),this.theme.inputClass){if(this.inputEl.attr("multiple")&&("input-sm"===this.theme.inputClass||"input-lg"===this.theme.inputClass))break;this.inputEl.addClass(this.theme.inputClass)}break;case"editableCheckbox":this.editorEl.addClass("checkbox")}this.buttonsEl&&this.theme.buttonsClass&&this.buttonsEl.find("button").addClass(this.theme.buttonsClass)}},semantic:{formTpl:'<form class="editable-wrap ui form" ng-class="{\'error\': $error}" role="form"></form>',noformTpl:'<span class="editable-wrap"></span>',controlsTpl:'<div class="editable-controls ui fluid input" ng-class="{\'error\': $error}"></div>',inputTpl:"",errorTpl:'<div class="editable-error ui error message" data-ng-if="$error" data-ng-bind="$error"></div>',buttonsTpl:'<span class="mini ui buttons"></span>',submitTpl:'<button type="submit" class="ui primary button"><i class="ui check icon"></i></button>',cancelTpl:'<button type="button" class="ui button" ng-click="$form.$cancel()"><i class="ui cancel icon"></i></button>'}};return a}),function(T){function z(a,c,b){var g=0,f=[0],h="",l=null,h=b||"UTF8";if("UTF8"!==h&&"UTF16"!==h)throw"encoding must be UTF8 or UTF16";if("HEX"===c){if(0!==a.length%2)throw"srcString of HEX type must be in byte increments";l=B(a),g=l.binLen,f=l.value}else if("ASCII"===c||"TEXT"===c)l=J(a,h),g=l.binLen,f=l.value;else{if("B64"!==c)throw"inputFormat must be HEX, TEXT, ASCII, or B64";l=K(a),g=l.binLen,f=l.value}this.getHash=function(a,c,b,h){var p,l=null,d=f.slice(),n=g;if(3===arguments.length?"number"!=typeof b&&(h=b,b=1):2===arguments.length&&(b=1),b!==parseInt(b,10)||1>b)throw"numRounds must a integer >= 1";switch(c){case"HEX":l=L;break;case"B64":l=M;break;default:throw"format must be HEX or B64"}if("SHA-1"===a)for(p=0;p<b;p++)d=y(d,n),n=160;else if("SHA-224"===a)for(p=0;p<b;p++)d=v(d,n,a),n=224;else if("SHA-256"===a)for(p=0;p<b;p++)d=v(d,n,a),n=256;else if("SHA-384"===a)for(p=0;p<b;p++)d=v(d,n,a),n=384;else{if("SHA-512"!==a)throw"Chosen SHA variant is not supported";for(p=0;p<b;p++)d=v(d,n,a),n=512}return l(d,N(h))},this.getHMAC=function(a,b,c,l,s){var d,n,p,m,w=[],x=[];switch(d=null,l){case"HEX":l=L;break;case"B64":l=M;break;default:throw"outputFormat must be HEX or B64"}if("SHA-1"===c)n=64,m=160;else if("SHA-224"===c)n=64,m=224;else if("SHA-256"===c)n=64,m=256;else if("SHA-384"===c)n=128,m=384;else{if("SHA-512"!==c)throw"Chosen SHA variant is not supported";n=128,m=512}if("HEX"===b)d=B(a),p=d.binLen,d=d.value;else if("ASCII"===b||"TEXT"===b)d=J(a,h),p=d.binLen,d=d.value;else{if("B64"!==b)throw"inputFormat must be HEX, TEXT, ASCII, or B64";d=K(a),p=d.binLen,d=d.value}for(a=8*n,b=n/4-1,n<p/8?(d="SHA-1"===c?y(d,p):v(d,p,c),d[b]&=4294967040):n>p/8&&(d[b]&=4294967040),n=0;n<=b;n+=1)w[n]=909522486^d[n],x[n]=1549556828^d[n];return c="SHA-1"===c?y(x.concat(y(w.concat(f),a+g)),a+m):v(x.concat(v(w.concat(f),a+g,c)),a+m,c),l(c,N(s))}}function s(a,c){this.a=a,this.b=c}function J(a,c){var g,l,b=[],f=[],h=0;if("UTF8"===c)for(l=0;l<a.length;l+=1)for(g=a.charCodeAt(l),f=[],2048<g?(f[0]=224|(61440&g)>>>12,f[1]=128|(4032&g)>>>6,f[2]=128|63&g):128<g?(f[0]=192|(1984&g)>>>6,f[1]=128|63&g):f[0]=g,g=0;g<f.length;g+=1)b[h>>>2]|=f[g]<<24-h%4*8,h+=1;else if("UTF16"===c)for(l=0;l<a.length;l+=1)b[h>>>2]|=a.charCodeAt(l)<<16-h%4*8,h+=2;return{value:b,binLen:8*h}}function B(a){var g,f,c=[],b=a.length;if(0!==b%2)throw"String of HEX type must be in byte increments";for(g=0;g<b;g+=2){if(f=parseInt(a.substr(g,2),16),isNaN(f))throw"String of HEX type contains invalid characters";c[g>>>3]|=f<<24-g%8*4}return{value:c,binLen:4*b}}function K(a){var g,f,h,l,r,c=[],b=0;if(-1===a.search(/^[a-zA-Z0-9=+\/]+$/))throw"Invalid character in base-64 string";if(g=a.indexOf("="),a=a.replace(/\=/g,""),-1!==g&&g<a.length)throw"Invalid '=' found in base-64 string";for(f=0;f<a.length;f+=4){for(r=a.substr(f,4),h=l=0;h<r.length;h+=1)g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(r[h]),l|=g<<18-6*h;for(h=0;h<r.length-1;h+=1)c[b>>2]|=(l>>>16-8*h&255)<<24-b%4*8,b+=1}return{value:c,binLen:8*b}}function L(a,c){var f,h,b="",g=4*a.length;for(f=0;f<g;f+=1)h=a[f>>>2]>>>8*(3-f%4),b+="0123456789abcdef".charAt(h>>>4&15)+"0123456789abcdef".charAt(15&h);return c.outputUpper?b.toUpperCase():b}function M(a,c){var f,h,l,b="",g=4*a.length;for(f=0;f<g;f+=3)for(l=(a[f>>>2]>>>8*(3-f%4)&255)<<16|(a[f+1>>>2]>>>8*(3-(f+1)%4)&255)<<8|a[f+2>>>2]>>>8*(3-(f+2)%4)&255,h=0;4>h;h+=1)b=8*f+6*h<=32*a.length?b+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l>>>6*(3-h)&63):b+c.b64Pad;return b}function N(a){var c={outputUpper:!1,b64Pad:"="};try{a.hasOwnProperty("outputUpper")&&(c.outputUpper=a.outputUpper),a.hasOwnProperty("b64Pad")&&(c.b64Pad=a.b64Pad)}catch(b){}if("boolean"!=typeof c.outputUpper)throw"Invalid outputUpper formatting option";if("string"!=typeof c.b64Pad)throw"Invalid b64Pad formatting option";return c}function U(a,c){return a<<c|a>>>32-c}function u(a,c){return a>>>c|a<<32-c}function t(a,c){var b=null,b=new s(a.a,a.b);return b=32>=c?new s(b.a>>>c|b.b<<32-c&4294967295,b.b>>>c|b.a<<32-c&4294967295):new s(b.b>>>c-32|b.a<<64-c&4294967295,b.a>>>c-32|b.b<<64-c&4294967295)}function O(a,c){var b=null;return b=32>=c?new s(a.a>>>c,a.b>>>c|a.a<<32-c&4294967295):new s(0,a.a>>>c-32)}function V(a,c,b){return a^c^b}function P(a,c,b){return a&c^~a&b}function W(a,c,b){return new s(a.a&c.a^~a.a&b.a,a.b&c.b^~a.b&b.b)}function Q(a,c,b){return a&c^a&b^c&b}function X(a,c,b){return new s(a.a&c.a^a.a&b.a^c.a&b.a,a.b&c.b^a.b&b.b^c.b&b.b)}function Y(a){return u(a,2)^u(a,13)^u(a,22)}function Z(a){var c=t(a,28),b=t(a,34);return a=t(a,39),new s(c.a^b.a^a.a,c.b^b.b^a.b)}function $(a){return u(a,6)^u(a,11)^u(a,25)}function aa(a){var c=t(a,14),b=t(a,18);return a=t(a,41),new s(c.a^b.a^a.a,c.b^b.b^a.b)}function ba(a){return u(a,7)^u(a,18)^a>>>3}function ca(a){var c=t(a,1),b=t(a,8);return a=O(a,7),new s(c.a^b.a^a.a,c.b^b.b^a.b)}function da(a){return u(a,17)^u(a,19)^a>>>10}function ea(a){var c=t(a,19),b=t(a,61);return a=O(a,6),new s(c.a^b.a^a.a,c.b^b.b^a.b)}function R(a,c){var b=(65535&a)+(65535&c);return((a>>>16)+(c>>>16)+(b>>>16)&65535)<<16|65535&b}function fa(a,c,b,g){var f=(65535&a)+(65535&c)+(65535&b)+(65535&g);return((a>>>16)+(c>>>16)+(b>>>16)+(g>>>16)+(f>>>16)&65535)<<16|65535&f}function S(a,c,b,g,f){var h=(65535&a)+(65535&c)+(65535&b)+(65535&g)+(65535&f);return((a>>>16)+(c>>>16)+(b>>>16)+(g>>>16)+(f>>>16)+(h>>>16)&65535)<<16|65535&h}function ga(a,c){var b,g,f;return b=(65535&a.b)+(65535&c.b),g=(a.b>>>16)+(c.b>>>16)+(b>>>16),f=(65535&g)<<16|65535&b,b=(65535&a.a)+(65535&c.a)+(g>>>16),g=(a.a>>>16)+(c.a>>>16)+(b>>>16),new s((65535&g)<<16|65535&b,f)}function ha(a,c,b,g){var f,h,l;return f=(65535&a.b)+(65535&c.b)+(65535&b.b)+(65535&g.b),h=(a.b>>>16)+(c.b>>>16)+(b.b>>>16)+(g.b>>>16)+(f>>>16),l=(65535&h)<<16|65535&f,f=(65535&a.a)+(65535&c.a)+(65535&b.a)+(65535&g.a)+(h>>>16),h=(a.a>>>16)+(c.a>>>16)+(b.a>>>16)+(g.a>>>16)+(f>>>16),new s((65535&h)<<16|65535&f,l)}function ia(a,c,b,g,f){var h,l,r;return h=(65535&a.b)+(65535&c.b)+(65535&b.b)+(65535&g.b)+(65535&f.b),l=(a.b>>>16)+(c.b>>>16)+(b.b>>>16)+(g.b>>>16)+(f.b>>>16)+(h>>>16),r=(65535&l)<<16|65535&h,h=(65535&a.a)+(65535&c.a)+(65535&b.a)+(65535&g.a)+(65535&f.a)+(l>>>16),l=(a.a>>>16)+(c.a>>>16)+(b.a>>>16)+(g.a>>>16)+(f.a>>>16)+(h>>>16),new s((65535&l)<<16|65535&h,r)}function y(a,c){var g,f,h,l,r,s,p,m,x,b=[],u=P,t=V,v=Q,d=U,n=R,w=S,q=[1732584193,4023233417,2562383102,271733878,3285377520];for(a[c>>>5]|=128<<24-c%32,a[(c+65>>>9<<4)+15]=c,x=a.length,p=0;p<x;p+=16){for(g=q[0],f=q[1],h=q[2],l=q[3],r=q[4],m=0;80>m;m+=1)b[m]=16>m?a[m+p]:d(b[m-3]^b[m-8]^b[m-14]^b[m-16],1),s=20>m?w(d(g,5),u(f,h,l),r,1518500249,b[m]):40>m?w(d(g,5),t(f,h,l),r,1859775393,b[m]):60>m?w(d(g,5),v(f,h,l),r,2400959708,b[m]):w(d(g,5),t(f,h,l),r,3395469782,b[m]),r=l,l=h,h=d(f,30),f=g,g=s;q[0]=n(g,q[0]),q[1]=n(f,q[1]),q[2]=n(h,q[2]),q[3]=n(l,q[3]),q[4]=n(r,q[4])}return q}function v(a,c,b){var g,f,h,l,r,t,u,v,z,d,n,p,m,w,x,q,y,C,D,E,F,G,H,I,e,B,A=[],k=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];if(d=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428],f=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],"SHA-224"===b||"SHA-256"===b)n=64,g=(c+65>>>9<<4)+15,w=16,x=1,e=Number,q=R,y=fa,C=S,D=ba,E=da,F=Y,G=$,I=Q,H=P,d="SHA-224"===b?d:f;else{if("SHA-384"!==b&&"SHA-512"!==b)throw"Unexpected error in SHA-2 implementation";n=80,g=(c+128>>>10<<5)+31,w=32,x=2,e=s,q=ga,y=ha,C=ia,D=ca,E=ea,F=Z,G=aa,I=X,H=W,k=[new e(k[0],3609767458),new e(k[1],602891725),new e(k[2],3964484399),new e(k[3],2173295548),new e(k[4],4081628472),new e(k[5],3053834265),new e(k[6],2937671579),new e(k[7],3664609560),new e(k[8],2734883394),new e(k[9],1164996542),new e(k[10],1323610764),new e(k[11],3590304994),new e(k[12],4068182383),new e(k[13],991336113),new e(k[14],633803317),new e(k[15],3479774868),new e(k[16],2666613458),new e(k[17],944711139),new e(k[18],2341262773),new e(k[19],2007800933),new e(k[20],1495990901),new e(k[21],1856431235),new e(k[22],3175218132),new e(k[23],2198950837),new e(k[24],3999719339),new e(k[25],766784016),new e(k[26],2566594879),new e(k[27],3203337956),new e(k[28],1034457026),new e(k[29],2466948901),new e(k[30],3758326383),new e(k[31],168717936),new e(k[32],1188179964),new e(k[33],1546045734),new e(k[34],1522805485),new e(k[35],2643833823),new e(k[36],2343527390),new e(k[37],1014477480),new e(k[38],1206759142),new e(k[39],344077627),new e(k[40],1290863460),new e(k[41],3158454273),new e(k[42],3505952657),new e(k[43],106217008),new e(k[44],3606008344),new e(k[45],1432725776),new e(k[46],1467031594),new e(k[47],851169720),new e(k[48],3100823752),new e(k[49],1363258195),new e(k[50],3750685593),new e(k[51],3785050280),new e(k[52],3318307427),new e(k[53],3812723403),new e(k[54],2003034995),new e(k[55],3602036899),new e(k[56],1575990012),new e(k[57],1125592928),new e(k[58],2716904306),new e(k[59],442776044),new e(k[60],593698344),new e(k[61],3733110249),new e(k[62],2999351573),new e(k[63],3815920427),new e(3391569614,3928383900),new e(3515267271,566280711),new e(3940187606,3454069534),new e(4118630271,4000239992),new e(116418474,1914138554),new e(174292421,2731055270),new e(289380356,3203993006),new e(460393269,320620315),new e(685471733,587496836),new e(852142971,1086792851),new e(1017036298,365543100),new e(1126000580,2618297676),new e(1288033470,3409855158),new e(1501505948,4234509866),new e(1607167915,987167468),new e(1816402316,1246189591)],d="SHA-384"===b?[new e(3418070365,d[0]),new e(1654270250,d[1]),new e(2438529370,d[2]),new e(355462360,d[3]),new e(1731405415,d[4]),new e(41048885895,d[5]),new e(3675008525,d[6]),new e(1203062813,d[7])]:[new e(f[0],4089235720),new e(f[1],2227873595),new e(f[2],4271175723),new e(f[3],1595750129),new e(f[4],2917565137),new e(f[5],725511199),new e(f[6],4215389547),new e(f[7],327033209)]}for(a[c>>>5]|=128<<24-c%32,a[g]=c,B=a.length,p=0;p<B;p+=w){for(c=d[0],g=d[1],f=d[2],h=d[3],l=d[4],r=d[5],t=d[6],u=d[7],m=0;m<n;m+=1)A[m]=16>m?new e(a[m*x+p],a[m*x+p+1]):y(E(A[m-2]),A[m-7],D(A[m-15]),A[m-16]),v=C(u,G(l),H(l,r,t),k[m],A[m]),z=q(F(c),I(c,g,f)),u=t,t=r,r=l,l=q(h,v),h=f,f=g,g=c,c=q(v,z);d[0]=q(c,d[0]),d[1]=q(g,d[1]),d[2]=q(f,d[2]),d[3]=q(h,d[3]),d[4]=q(l,d[4]),d[5]=q(r,d[5]),d[6]=q(t,d[6]),d[7]=q(u,d[7])}if("SHA-224"===b)a=[d[0],d[1],d[2],d[3],d[4],d[5],d[6]];else if("SHA-256"===b)a=d;else if("SHA-384"===b)a=[d[0].a,d[0].b,d[1].a,d[1].b,d[2].a,d[2].b,d[3].a,d[3].b,d[4].a,d[4].b,d[5].a,d[5].b];else{if("SHA-512"!==b)throw"Unexpected error in SHA-2 implementation";a=[d[0].a,d[0].b,d[1].a,d[1].b,d[2].a,d[2].b,d[3].a,d[3].b,d[4].a,d[4].b,d[5].a,d[5].b,d[6].a,d[6].b,d[7].a,d[7].b]}return a}"function"!=typeof define||(define.amd,0)?"undefined"!=typeof exports?"undefined"!=typeof module&&module.exports?module.exports=exports=z:exports=z:T.jsSHA=z:define(function(){return z})}(this),_aa={},_aa._ab=function(f,e){for(var d=qrcode.width,b=qrcode.height,c=!0,g=0;g<e.Length&&c;g+=2){var a=Math.floor(e[g]),h=Math.floor(e[g+1]);if(a<-1||a>d||h<-1||h>b)throw"Error._ab ";c=!1,a==-1?(e[g]=0,c=!0):a==d&&(e[g]=d-1,c=!0),h==-1?(e[g+1]=0,c=!0):h==b&&(e[g+1]=b-1,c=!0)}c=!0;for(var g=e.Length-2;g>=0&&c;g-=2){var a=Math.floor(e[g]),h=Math.floor(e[g+1]);if(a<-1||a>d||h<-1||h>b)throw"Error._ab ";c=!1,a==-1?(e[g]=0,c=!0):a==d&&(e[g]=d-1,c=!0),h==-1?(e[g+1]=0,c=!0):h==b&&(e[g+1]=b-1,c=!0)}},_aa._af=function(b,d,a){for(var l=new _ac(d),k=new Array(d<<1),g=0;g<d;g++){for(var h=k.length,j=g+.5,i=0;i<h;i+=2)k[i]=(i>>1)+.5,k[i+1]=j;a._ad(k),_aa._ab(b,k);try{for(var i=0;i<h;i+=2){var e=4*Math.floor(k[i])+Math.floor(k[i+1])*qrcode.width*4,f=b[Math.floor(k[i])+qrcode.width*Math.floor(k[i+1])];qrcode.imagedata.data[e]=f?255:0,qrcode.imagedata.data[e+1]=f?255:0,qrcode.imagedata.data[e+2]=0,qrcode.imagedata.data[e+3]=255,f&&l._dq(i>>1,g)}}catch(c){throw"Error._ab"}}return l},_aa._ah=function(h,o,l,k,r,q,b,a,f,e,n,m,t,s,d,c,j,i){var g=_ae._ag(l,k,r,q,b,a,f,e,n,m,t,s,d,c,j,i);return _aa._af(h,o,g)},_a3._bv=new Array(31892,34236,39577,42195,48118,51042,55367,58893,63784,68472,70749,76311,79154,84390,87683,92361,96236,102084,102881,110507,110734,117786,119615,126325,127568,133589,136944,141498,145311,150283,152622,158308,161089,167017),_a3.VERSIONS=_ay(),_a3._av=function(a){if(a<1||a>40)throw"bad arguments";return _a3.VERSIONS[a-1]},_a3._at=function(b){if(b%4!=1)throw"Error _at";try{return _a3._av(b-17>>2)}catch(a){throw"Error _av"}},_a3._aw=function(d){for(var b=4294967295,f=0,c=0;c<_a3._bv.length;c++){var a=_a3._bv[c];if(a==d)return this._av(c+7);var e=_ax._gj(d,a);e<b&&(f=c+7,b=e)}return b<=3?this._av(f):null},_ae._ag=function(q,e,o,d,n,c,m,b,h,r,l,f,a,j,i,s){var g=this._be(q,e,o,d,n,c,m,b),k=this._bf(h,r,l,f,a,j,i,s);return k.times(g)},_ae._bf=function(f,h,d,g,b,e,a,c){return dy2=c-e,dy3=h-g+e-c,0==dy2&&0==dy3?new _ae(d-f,b-d,f,g-h,e-g,h,0,0,1):(dx1=d-b,dx2=a-b,dx3=f-d+b-a,dy1=g-e,_dr=dx1*dy2-dx2*dy1,a13=(dx3*dy2-dx2*dy3)/_dr,a23=(dx1*dy3-dx3*dy1)/_dr,new _ae(d-f+a13*d,a-f+a23*a,f,g-h+a13*g,c-h+a23*c,h,a13,a23,1))},_ae._be=function(f,h,d,g,b,e,a,c){return this._bf(f,h,d,g,b,e,a,c)._fr()};var _ca=21522,_cb=new Array(new Array(21522,0),new Array(20773,1),new Array(24188,2),new Array(23371,3),new Array(17913,4),new Array(16590,5),new Array(20375,6),new Array(19104,7),new Array(30660,8),new Array(29427,9),new Array(32170,10),new Array(30877,11),new Array(26159,12),new Array(25368,13),new Array(27713,14),new Array(26998,15),new Array(5769,16),new Array(5054,17),new Array(7399,18),new Array(6608,19),new Array(1890,20),new Array(597,21),new Array(3340,22),new Array(2107,23),new Array(13663,24),new Array(12392,25),new Array(16177,26),new Array(14854,27),new Array(9396,28),new Array(8579,29),new Array(11994,30),new Array(11245,31)),_ch=new Array(0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4);_ax._gj=function(d,c){return d^=c,_ch[15&d]+_ch[15&_ew(d,4)]+_ch[15&_ew(d,8)]+_ch[15&_ew(d,12)]+_ch[15&_ew(d,16)]+_ch[15&_ew(d,20)]+_ch[15&_ew(d,24)]+_ch[15&_ew(d,28)]},_ax._ci=function(a){var b=_ax._cj(a);return null!=b?b:_ax._cj(a^_ca)},_ax._cj=function(d){for(var b=4294967295,a=0,c=0;c<_cb.length;c++){var g=_cb[c],f=g[0];if(f==d)return new _ax(g[1]);var e=this._gj(d,f);e<b&&(a=g[1],b=e)}return b<=3?new _ax(a):null},_cg.forBits=function(a){if(a<0||a>=FOR_BITS.Length)throw"bad arguments";return FOR_BITS[a]};var L=new _cg(0,1,"L"),M=new _cg(1,0,"M"),Q=new _cg(2,3,"Q"),H=new _cg(3,2,"H"),FOR_BITS=new Array(M,L,H,Q);_dl._gn=function(c,h,s){if(c.length!=h._dp)throw"bad arguments";for(var k=h._bu(s),e=0,d=k._fb(),r=0;r<d.length;r++)e+=d[r].Count;for(var l=new Array(e),n=0,o=0;o<d.length;o++)for(var f=d[o],r=0;r<f.Count;r++){var m=f._dm,t=k._bo+m;l[n++]=new _dl(m,new Array(t))}for(var u=l[0]._dw.length,b=l.length-1;b>=0;){var w=l[b]._dw.length;if(w==u)break;b--}b++;for(var g=u-k._bo,a=0,r=0;r<g;r++)for(var o=0;o<n;o++)l[o]._dw[r]=c[a++];for(var o=b;o<n;o++)l[o]._dw[g]=c[a++];for(var q=l[0]._dw.length,r=g;r<q;r++)for(var o=0;o<n;o++){var v=o<b?r:r+1;l[o]._dw[v]=c[a++]}return l},_dx={},_dx._gl=function(a){if(a<0||a>7)throw"bad arguments";return _dx._dy[a]},_dx._dy=new Array(new _fg,new _fh,new _fi,new _fj,new _fk,new _fl,new _fm,new _fn),_az._bb=new _az(285),_az._bc=new _az(301),_az._bd=function(d,c){return d^c},Decoder={},Decoder.rsDecoder=new _db(_az._bb),Decoder.correctErrors=function(g,b){for(var d=g.length,f=new Array(d),e=0;e<d;e++)f[e]=255&g[e];var a=g.length-b;try{Decoder.rsDecoder.decode(f,a)}catch(c){throw c}for(var e=0;e<b;e++)g[e]=f[e]},Decoder.decode=function(r){for(var b=new _cl(r),o=b._cq(),c=b._cm()._cg,q=b._gk(),a=_dl._gn(q,o,c),f=0,k=0;k<a.Length;k++)f+=a[k]._du;for(var e=new Array(f),n=0,h=0;h<a.length;h++){var m=a[h],d=m.Codewords,g=m._du;Decoder.correctErrors(d,g);for(var k=0;k<g;k++)e[n++]=d[k]}var l=new QRCodeDataBlockReader(e,o._fd,c.Bits);return l},qrcode={},qrcode.imagedata=null,qrcode.width=0,qrcode.height=0,qrcode.qrCodeSymbol=null,qrcode.debug=!1,qrcode._eo=[[10,9,8,8],[12,11,16,10],[14,13,16,12]],qrcode.callback=null,qrcode.decode=function(d){if(0==arguments.length){var b=document.getElementById("qr-canvas"),a=b.getContext("2d");return qrcode.width=b.width,qrcode.height=b.height,qrcode.imagedata=a.getImageData(0,0,qrcode.width,qrcode.height),qrcode.result=qrcode.process(a),null!=qrcode.callback&&qrcode.callback(qrcode.result),qrcode.result}var c=new Image;c.onload=function(){var i=document.createElement("canvas"),h=i.getContext("2d"),f=document.getElementById("out-canvas");if(null!=f){var g=f.getContext("2d");g.clearRect(0,0,320,240),g.drawImage(c,0,0,320,240)}i.width=c.width,i.height=c.height,h.drawImage(c,0,0),qrcode.width=c.width,qrcode.height=c.height;try{qrcode.imagedata=h.getImageData(0,0,c.width,c.height)}catch(j){return qrcode.result="Cross domain image reading not supported in your browser! Save it to your computer then drag and drop the file!",void(null!=qrcode.callback&&qrcode.callback(qrcode.result))}try{qrcode.result=qrcode.process(h)}catch(j){console.log(j),qrcode.result="error decoding QR Code"}null!=qrcode.callback&&qrcode.callback(qrcode.result)},c.src=d},qrcode.decode_utf8=function(a){return decodeURIComponent(escape(a))},qrcode.process=function(r){var c=((new Date).getTime(),qrcode.grayScaleToBitmap(qrcode.grayscale()));if(qrcode.debug){for(var m=0;m<qrcode.height;m++)for(var n=0;n<qrcode.width;n++){var o=4*n+m*qrcode.width*4;qrcode.imagedata.data[o]=(c[n+m*qrcode.width],0),qrcode.imagedata.data[o+1]=(c[n+m*qrcode.width],0),qrcode.imagedata.data[o+2]=c[n+m*qrcode.width]?255:0}r.putImageData(qrcode.imagedata,0,0)}var h=new Detector(c),q=h.detect();qrcode.debug&&r.putImageData(qrcode.imagedata,0,0);
for(var k=Decoder.decode(q.bits),g=k.DataByte,l="",f=0;f<g.length;f++)for(var e=0;e<g[f].length;e++)l+=String.fromCharCode(g[f][e]);(new Date).getTime();return qrcode.decode_utf8(l)},qrcode.getPixel=function(a,b){if(qrcode.width<a)throw"point error";if(qrcode.height<b)throw"point error";return point=4*a+b*qrcode.width*4,p=(33*qrcode.imagedata.data[point]+34*qrcode.imagedata.data[point+1]+33*qrcode.imagedata.data[point+2])/100,p},qrcode.binarize=function(d){for(var c=new Array(qrcode.width*qrcode.height),e=0;e<qrcode.height;e++)for(var b=0;b<qrcode.width;b++){var a=qrcode.getPixel(b,e);c[b+e*qrcode.width]=a<=d}return c},qrcode._em=function(d){for(var c=4,k=Math.floor(qrcode.width/c),j=Math.floor(qrcode.height/c),f=new Array(c),g=0;g<c;g++){f[g]=new Array(c);for(var e=0;e<c;e++)f[g][e]=new Array(0,0)}for(var o=0;o<c;o++)for(var a=0;a<c;a++){f[a][o][0]=255;for(var l=0;l<j;l++)for(var n=0;n<k;n++){var h=d[k*a+n+(j*o+l)*qrcode.width];h<f[a][o][0]&&(f[a][o][0]=h),h>f[a][o][1]&&(f[a][o][1]=h)}}for(var m=new Array(c),b=0;b<c;b++)m[b]=new Array(c);for(var o=0;o<c;o++)for(var a=0;a<c;a++)m[a][o]=Math.floor((f[a][o][0]+f[a][o][1])/2);return m},qrcode.grayScaleToBitmap=function(f){for(var j=qrcode._em(f),b=j.length,e=Math.floor(qrcode.width/b),d=Math.floor(qrcode.height/b),c=new Array(qrcode.height*qrcode.width),i=0;i<b;i++)for(var a=0;a<b;a++)for(var g=0;g<d;g++)for(var h=0;h<e;h++)c[e*a+h+(d*i+g)*qrcode.width]=f[e*a+h+(d*i+g)*qrcode.width]<j[a][i];return c},qrcode.grayscale=function(){for(var c=new Array(qrcode.width*qrcode.height),d=0;d<qrcode.height;d++)for(var b=0;b<qrcode.width;b++){var a=qrcode.getPixel(b,d);c[b+d*qrcode.width]=a}return c},Array.prototype.remove=function(c,b){var a=this.slice((b||c)+1||this.length);return this.length=c<0?this.length+c:c,this.push.apply(this,a)};var _gf=3,_eh=57,_el=8,_eg=2;qrcode._er=function(c){function b(l,k){return xDiff=l.X-k.X,yDiff=l.Y-k.Y,Math.sqrt(xDiff*xDiff+yDiff*yDiff)}function d(k,o,n){var m=o.x,l=o.y;return(n.x-m)*(k.y-l)-(n.y-l)*(k.x-m)}var a,j,h,i=b(c[0],c[1]),f=b(c[1],c[2]),e=b(c[0],c[2]);if(f>=i&&f>=e?(j=c[0],a=c[1],h=c[2]):e>=f&&e>=i?(j=c[1],a=c[0],h=c[2]):(j=c[2],a=c[0],h=c[1]),d(a,j,h)<0){var g=a;a=h,h=g}c[0]=a,c[1]=j,c[2]=h},angular.module("ui.sortable",[]).value("uiSortableConfig",{items:"> [ng-repeat],> [data-ng-repeat],> [x-ng-repeat]"}).directive("uiSortable",["uiSortableConfig","$timeout","$log",function(uiSortableConfig,$timeout,$log){return{require:"?ngModel",scope:{ngModel:"=",uiSortable:"="},link:function(scope,element,attrs,ngModel){function combineCallbacks(first,second){var firstIsFunc="function"==typeof first,secondIsFunc="function"==typeof second;return firstIsFunc&&secondIsFunc?function(){first.apply(this,arguments),second.apply(this,arguments)}:secondIsFunc?second:first}function getSortableWidgetInstance(element){var data=element.data("ui-sortable");return data&&"object"==typeof data&&"ui-sortable"===data.widgetFullName?data:null}function patchSortableOption(key,value){return callbacks[key]?("stop"===key&&(value=combineCallbacks(value,function(){scope.$apply()}),value=combineCallbacks(value,afterStop)),value=combineCallbacks(callbacks[key],value)):wrappers[key]&&(value=wrappers[key](value)),value||"items"!==key&&"ui-model-items"!==key||(value=uiSortableConfig.items),value}function patchUISortableOptions(newVal,oldVal,sortableWidgetInstance){function addDummyOptionKey(value,key){key in opts||(opts[key]=null)}angular.forEach(callbacks,addDummyOptionKey);var optsDiff=null;if(oldVal){var defaultOptions;angular.forEach(oldVal,function(oldValue,key){if(!(newVal&&key in newVal)){if(key in directiveOpts)return void("ui-floating"===key?opts[key]="auto":opts[key]=patchSortableOption(key,void 0));defaultOptions||(defaultOptions=angular.element.ui.sortable().options);var defaultValue=defaultOptions[key];defaultValue=patchSortableOption(key,defaultValue),optsDiff||(optsDiff={}),optsDiff[key]=defaultValue,opts[key]=defaultValue}})}return angular.forEach(newVal,function(value,key){return key in directiveOpts?("ui-floating"!==key||value!==!1&&value!==!0||!sortableWidgetInstance||(sortableWidgetInstance.floating=value),void(opts[key]=patchSortableOption(key,value))):(value=patchSortableOption(key,value),optsDiff||(optsDiff={}),optsDiff[key]=value,void(opts[key]=value))}),optsDiff}function getPlaceholderElement(element){var placeholder=element.sortable("option","placeholder");if(placeholder&&placeholder.element&&"function"==typeof placeholder.element){var result=placeholder.element();return result=angular.element(result)}return null}function getPlaceholderExcludesludes(element,placeholder){var notCssSelector=opts["ui-model-items"].replace(/[^,]*>/g,""),excludes=element.find('[class="'+placeholder.attr("class")+'"]:not('+notCssSelector+")");return excludes}function hasSortingHelper(element,ui){var helperOption=element.sortable("option","helper");return"clone"===helperOption||"function"==typeof helperOption&&ui.item.sortable.isCustomHelperUsed()}function getSortingHelper(element,ui,savedNodes){var result=null;return hasSortingHelper(element,ui)&&"parent"===element.sortable("option","appendTo")&&(result=savedNodes.last()),result}function isFloating(item){return/left|right/.test(item.css("float"))||/inline|table-cell/.test(item.css("display"))}function getElementScope(elementScopes,element){for(var result=null,i=0;i<elementScopes.length;i++){var x=elementScopes[i];if(x.element[0]===element[0]){result=x.scope;break}}return result}function afterStop(e,ui){ui.item.sortable._destroy()}function getItemIndex(item){return item.parent().find(opts["ui-model-items"]).index(item)}function wireUp(){scope.$watchCollection("ngModel",function(){$timeout(function(){getSortableWidgetInstance(element)&&element.sortable("refresh")},0,!1)}),callbacks.start=function(e,ui){if("auto"===opts["ui-floating"]){var siblings=ui.item.siblings(),sortableWidgetInstance=getSortableWidgetInstance(angular.element(e.target));sortableWidgetInstance.floating=isFloating(siblings)}var index=getItemIndex(ui.item);ui.item.sortable={model:ngModel.$modelValue[index],index:index,source:ui.item.parent(),sourceModel:ngModel.$modelValue,cancel:function(){ui.item.sortable._isCanceled=!0},isCanceled:function(){return ui.item.sortable._isCanceled},isCustomHelperUsed:function(){return!!ui.item.sortable._isCustomHelperUsed},_isCanceled:!1,_isCustomHelperUsed:ui.item.sortable._isCustomHelperUsed,_destroy:function(){angular.forEach(ui.item.sortable,function(value,key){ui.item.sortable[key]=void 0})}}},callbacks.activate=function(e,ui){savedNodes=element.contents();var placeholder=getPlaceholderElement(element);if(placeholder&&placeholder.length){var excludes=getPlaceholderExcludesludes(element,placeholder);savedNodes=savedNodes.not(excludes)}var connectedSortables=ui.item.sortable._connectedSortables||[];connectedSortables.push({element:element,scope:scope}),ui.item.sortable._connectedSortables=connectedSortables},callbacks.update=function(e,ui){if(!ui.item.sortable.received){ui.item.sortable.dropindex=getItemIndex(ui.item);var droptarget=ui.item.parent();ui.item.sortable.droptarget=droptarget;var droptargetScope=getElementScope(ui.item.sortable._connectedSortables,droptarget);ui.item.sortable.droptargetModel=droptargetScope.ngModel,element.sortable("cancel")}var sortingHelper=!ui.item.sortable.received&&getSortingHelper(element,ui,savedNodes);sortingHelper&&sortingHelper.length&&(savedNodes=savedNodes.not(sortingHelper)),savedNodes.appendTo(element),ui.item.sortable.received&&(savedNodes=null),ui.item.sortable.received&&!ui.item.sortable.isCanceled()&&scope.$apply(function(){ngModel.$modelValue.splice(ui.item.sortable.dropindex,0,ui.item.sortable.moved)})},callbacks.stop=function(e,ui){if(!ui.item.sortable.received&&"dropindex"in ui.item.sortable&&!ui.item.sortable.isCanceled())scope.$apply(function(){ngModel.$modelValue.splice(ui.item.sortable.dropindex,0,ngModel.$modelValue.splice(ui.item.sortable.index,1)[0])});else if((!("dropindex"in ui.item.sortable)||ui.item.sortable.isCanceled())&&!angular.equals(element.contents(),savedNodes)){var sortingHelper=getSortingHelper(element,ui,savedNodes);sortingHelper&&sortingHelper.length&&(savedNodes=savedNodes.not(sortingHelper)),savedNodes.appendTo(element)}savedNodes=null},callbacks.receive=function(e,ui){ui.item.sortable.received=!0},callbacks.remove=function(e,ui){"dropindex"in ui.item.sortable||(element.sortable("cancel"),ui.item.sortable.cancel()),ui.item.sortable.isCanceled()||scope.$apply(function(){ui.item.sortable.moved=ngModel.$modelValue.splice(ui.item.sortable.index,1)[0]})},wrappers.helper=function(inner){return inner&&"function"==typeof inner?function(e,item){var oldItemSortable=item.sortable,index=getItemIndex(item);item.sortable={model:ngModel.$modelValue[index],index:index,source:item.parent(),sourceModel:ngModel.$modelValue,_restore:function(){angular.forEach(item.sortable,function(value,key){item.sortable[key]=void 0}),item.sortable=oldItemSortable}};var innerResult=inner.apply(this,arguments);return item.sortable._restore(),item.sortable._isCustomHelperUsed=item!==innerResult,innerResult}:inner},scope.$watchCollection("uiSortable",function(newVal,oldVal){var sortableWidgetInstance=getSortableWidgetInstance(element);if(sortableWidgetInstance){var optsDiff=patchUISortableOptions(newVal,oldVal,sortableWidgetInstance);optsDiff&&element.sortable("option",optsDiff)}},!0),patchUISortableOptions(opts)}function init(){ngModel?wireUp():$log.info("ui.sortable: ngModel not provided!",element),element.sortable(opts)}function initIfEnabled(){return(!scope.uiSortable||!scope.uiSortable.disabled)&&(init(),initIfEnabled.cancelWatcher(),initIfEnabled.cancelWatcher=angular.noop,!0)}var savedNodes,opts={},directiveOpts={"ui-floating":void 0,"ui-model-items":uiSortableConfig.items},callbacks={receive:null,remove:null,start:null,stop:null,update:null},wrappers={helper:null};return angular.extend(opts,directiveOpts,uiSortableConfig,scope.uiSortable),angular.element.fn&&angular.element.fn.jquery?(initIfEnabled.cancelWatcher=angular.noop,void(initIfEnabled()||(initIfEnabled.cancelWatcher=scope.$watch("uiSortable.disabled",initIfEnabled)))):void $log.error("ui.sortable: jQuery should be included before AngularJS!")}}}]),!function(e){function t(t,r){if(r=r||{},r.worker&&S.WORKERS_SUPPORTED){var n=f();return n.userStep=r.step,n.userChunk=r.chunk,n.userComplete=r.complete,n.userError=r.error,r.step=m(r.step),r.chunk=m(r.chunk),r.complete=m(r.complete),r.error=m(r.error),delete r.worker,void n.postMessage({input:t,config:r,workerId:n.id})}var o=null;return"string"==typeof t?o=r.download?new i(r):new a(r):(e.File&&t instanceof File||t instanceof Object)&&(o=new s(r)),o.stream(t)}function r(e,t){function r(){"object"==typeof t&&("string"==typeof t.delimiter&&1==t.delimiter.length&&-1==S.BAD_DELIMITERS.indexOf(t.delimiter)&&(u=t.delimiter),("boolean"==typeof t.quotes||t.quotes instanceof Array)&&(o=t.quotes),"string"==typeof t.newline&&(h=t.newline))}function n(e){if("object"!=typeof e)return[];var t=[];for(var r in e)t.push(r);return t}function i(e,t){var r="";"string"==typeof e&&(e=JSON.parse(e)),"string"==typeof t&&(t=JSON.parse(t));var n=e instanceof Array&&e.length>0,i=!(t[0]instanceof Array);if(n){for(var a=0;a<e.length;a++)a>0&&(r+=u),r+=s(e[a],a);t.length>0&&(r+=h)}for(var o=0;o<t.length;o++){for(var f=n?e.length:t[o].length,c=0;f>c;c++){c>0&&(r+=u);var d=n&&i?e[c]:c;r+=s(t[o][d],c)}o<t.length-1&&(r+=h)}return r}function s(e,t){if("undefined"==typeof e||null===e)return"";e=e.toString().replace(/"/g,'""');var r="boolean"==typeof o&&o||o instanceof Array&&o[t]||a(e,S.BAD_DELIMITERS)||e.indexOf(u)>-1||" "==e.charAt(0)||" "==e.charAt(e.length-1);return r?'"'+e+'"':e}function a(e,t){for(var r=0;r<t.length;r++)if(e.indexOf(t[r])>-1)return!0;return!1}var o=!1,u=",",h="\r\n";if(r(),"string"==typeof e&&(e=JSON.parse(e)),e instanceof Array){if(!e.length||e[0]instanceof Array)return i(null,e);if("object"==typeof e[0])return i(n(e[0]),e)}else if("object"==typeof e)return"string"==typeof e.data&&(e.data=JSON.parse(e.data)),e.data instanceof Array&&(e.fields||(e.fields=e.data[0]instanceof Array?e.fields:n(e.data[0])),e.data[0]instanceof Array||"object"==typeof e.data[0]||(e.data=[e.data])),i(e.fields||[],e.data||[]);throw"exception: Unable to serialize unrecognized input"}function n(t){function r(e){var t=_(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null),this._handle=new o(t),this._handle.streamer=this,this._config=t}this._handle=null,this._paused=!1,this._finished=!1,this._input=null,this._baseIndex=0,this._partialLine="",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},r.call(this,t),this.parseChunk=function(t){if(this.isFirstChunk&&m(this._config.beforeFirstChunk)){var r=this._config.beforeFirstChunk(t);void 0!==r&&(t=r)}this.isFirstChunk=!1;var n=this._partialLine+t;this._partialLine="";var i=this._handle.parse(n,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var s=i.meta.cursor;this._finished||(this._partialLine=n.substring(s-this._baseIndex),this._baseIndex=s),i&&i.data&&(this._rowCount+=i.data.length);var a=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(y)e.postMessage({results:i,workerId:S.WORKER_ID,finished:a});else if(m(this._config.chunk)){if(this._config.chunk(i,this._handle),this._paused)return;i=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(i.data),this._completeResults.errors=this._completeResults.errors.concat(i.errors),this._completeResults.meta=i.meta),!a||!m(this._config.complete)||i&&i.meta.aborted||this._config.complete(this._completeResults),a||i&&i.meta.paused||this._nextChunk(),i}},this._sendError=function(t){m(this._config.error)?this._config.error(t):y&&this._config.error&&e.postMessage({workerId:S.WORKER_ID,error:t,finished:!1})}}function i(e){function t(e){var t=e.getResponseHeader("Content-Range");return parseInt(t.substr(t.lastIndexOf("/")+1))}e=e||{},e.chunkSize||(e.chunkSize=S.RemoteChunkSize),n.call(this,e);var r;this._nextChunk=k?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)return void this._chunkLoaded();if(r=new XMLHttpRequest,k||(r.onload=g(this._chunkLoaded,this),r.onerror=g(this._chunkError,this)),r.open("GET",this._input,!k),this._config.chunkSize){var e=this._start+this._config.chunkSize-1;r.setRequestHeader("Range","bytes="+this._start+"-"+e),r.setRequestHeader("If-None-Match","webkit-no-cache")}try{r.send()}catch(t){this._chunkError(t.message)}k&&0==r.status?this._chunkError():this._start+=this._config.chunkSize},this._chunkLoaded=function(){if(4==r.readyState){if(r.status<200||r.status>=400)return void this._chunkError();this._finished=!this._config.chunkSize||this._start>t(r),this.parseChunk(r.responseText)}},this._chunkError=function(e){var t=r.statusText||e;this._sendError(t)}}function s(e){e=e||{},e.chunkSize||(e.chunkSize=S.LocalChunkSize),n.call(this,e);var t,r,i="undefined"!=typeof FileReader;this.stream=function(e){this._input=e,r=e.slice||e.webkitSlice||e.mozSlice,i?(t=new FileReader,t.onload=g(this._chunkLoaded,this),t.onerror=g(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input;if(this._config.chunkSize){var n=Math.min(this._start+this._config.chunkSize,this._input.size);e=r.call(e,this._start,n)}var s=t.readAsText(e,this._config.encoding);i||this._chunkLoaded({target:{result:s}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(t.error)}}function a(e){e=e||{},n.call(this,e);var t,r;this.stream=function(e){return t=e,r=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e=this._config.chunkSize,t=e?r.substr(0,e):r;return r=e?r.substr(e):"",this._finished=!r,this.parseChunk(t)}}}function o(e){function t(){if(b&&d&&(h("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+S.DefaultDelimiter+"'"),d=!1),e.skipEmptyLines)for(var t=0;t<b.data.length;t++)1==b.data[t].length&&""==b.data[t][0]&&b.data.splice(t--,1);return r()&&n(),i()}function r(){return e.header&&0==y.length}function n(){if(b){for(var e=0;r()&&e<b.data.length;e++)for(var t=0;t<b.data[e].length;t++)y.push(b.data[e][t]);b.data.splice(0,1)}}function i(){if(!b||!e.header&&!e.dynamicTyping)return b;for(var t=0;t<b.data.length;t++){for(var r={},n=0;n<b.data[t].length;n++){if(e.dynamicTyping){var i=b.data[t][n];b.data[t][n]="true"==i||"TRUE"==i||"false"!=i&&"FALSE"!=i&&o(i)}e.header&&(n>=y.length?(r.__parsed_extra||(r.__parsed_extra=[]),r.__parsed_extra.push(b.data[t][n])):r[y[n]]=b.data[t][n])}e.header&&(b.data[t]=r,n>y.length?h("FieldMismatch","TooManyFields","Too many fields: expected "+y.length+" fields but parsed "+n,t):n<y.length&&h("FieldMismatch","TooFewFields","Too few fields: expected "+y.length+" fields but parsed "+n,t))}return e.header&&b.meta&&(b.meta.fields=y),b}function s(t){for(var r,n,i,s=[",","\t","|",";",S.RECORD_SEP,S.UNIT_SEP],a=0;a<s.length;a++){var o=s[a],h=0,f=0;i=void 0;for(var c=new u({delimiter:o,preview:10}).parse(t),d=0;d<c.data.length;d++){var l=c.data[d].length;f+=l,"undefined"!=typeof i?l>1&&(h+=Math.abs(l-i),i=l):i=l}c.data.length>0&&(f/=c.data.length),("undefined"==typeof n||n>h)&&f>1.99&&(n=h,r=o)}return e.delimiter=r,{successful:!!r,bestDelimiter:r}}function a(e){e=e.substr(0,1048576);var t=e.split("\r");if(1==t.length)return"\n";for(var r=0,n=0;n<t.length;n++)"\n"==t[n][0]&&r++;return r>=t.length/2?"\r\n":"\r"}function o(e){var t=l.test(e);return t?parseFloat(e):e}function h(e,t,r,n){b.errors.push({type:e,code:t,message:r,row:n})}var f,c,d,l=/^\s*-?(\d*\.?\d+|\d+\.?\d*)(e[-+]?\d+)?\s*$/i,p=this,g=0,v=!1,k=!1,y=[],b={data:[],errors:[],meta:{}};if(m(e.step)){var R=e.step;e.step=function(n){if(b=n,r())t();else{if(t(),0==b.data.length)return;g+=n.data.length,e.preview&&g>e.preview?c.abort():R(b,p)}}}this.parse=function(r,n,i){if(e.newline||(e.newline=a(r)),d=!1,!e.delimiter){var o=s(r);o.successful?e.delimiter=o.bestDelimiter:(d=!0,e.delimiter=S.DefaultDelimiter),b.meta.delimiter=e.delimiter}var h=_(e);return e.preview&&e.header&&h.preview++,f=r,c=new u(h),b=c.parse(f,n,i),t(),v?{meta:{paused:!0}}:b||{meta:{paused:!1}}},this.paused=function(){return v},this.pause=function(){v=!0,c.abort(),f=f.substr(c.getCharIndex())},this.resume=function(){v=!1,p.streamer.parseChunk(f)},this.aborted=function(){return k},this.abort=function(){k=!0,c.abort(),b.meta.aborted=!0,m(e.complete)&&e.complete(b),f=""}}function u(e){e=e||{};var t=e.delimiter,r=e.newline,n=e.comments,i=e.step,s=e.preview,a=e.fastMode;if(("string"!=typeof t||S.BAD_DELIMITERS.indexOf(t)>-1)&&(t=","),n===t)throw"Comment character same as delimiter";n===!0?n="#":("string"!=typeof n||S.BAD_DELIMITERS.indexOf(n)>-1)&&(n=!1),"\n"!=r&&"\r"!=r&&"\r\n"!=r&&(r="\n");var o=0,u=!1;this.parse=function(e,h,f){function c(e){b.push(e),S=o}function d(t){return f?p():("undefined"==typeof t&&(t=e.substr(o)),w.push(t),o=g,c(w),y&&_(),p())}function l(t){o=t,c(w),w=[],O=e.indexOf(r,o)}function p(e){return{data:b,errors:R,meta:{delimiter:t,linebreak:r,aborted:u,truncated:!!e,cursor:S+(h||0)}}}function _(){i(p()),b=[],R=[]}if("string"!=typeof e)throw"Input must be a string";var g=e.length,m=t.length,v=r.length,k=n.length,y="function"==typeof i;o=0;var b=[],R=[],w=[],S=0;if(!e)return p();if(a||a!==!1&&-1===e.indexOf('"')){for(var C=e.split(r),E=0;E<C.length;E++){var w=C[E];if(o+=w.length,E!==C.length-1)o+=r.length;else if(f)return p();if(!n||w.substr(0,k)!=n){if(y){if(b=[],c(w.split(t)),_(),u)return p()}else c(w.split(t));if(s&&E>=s)return b=b.slice(0,s),p(!0)}}return p()}for(var x=e.indexOf(t,o),O=e.indexOf(r,o);;)if('"'!=e[o])if(n&&0===w.length&&e.substr(o,k)===n){if(-1==O)return p();o=O+v,O=e.indexOf(r,o),x=e.indexOf(t,o)}else if(-1!==x&&(O>x||-1===O))w.push(e.substring(o,x)),o=x+m,x=e.indexOf(t,o);else{if(-1===O)break;if(w.push(e.substring(o,O)),l(O+v),y&&(_(),u))return p();if(s&&b.length>=s)return p(!0)}else{var I=o;for(o++;;){var I=e.indexOf('"',I+1);if(-1===I)return f||R.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:b.length,index:o}),d();if(I===g-1){var D=e.substring(o,I).replace(/""/g,'"');return d(D)}if('"'!=e[I+1]){if(e[I+1]==t){w.push(e.substring(o,I).replace(/""/g,'"')),o=I+1+m,x=e.indexOf(t,o),O=e.indexOf(r,o);break}if(e.substr(I+1,v)===r){if(w.push(e.substring(o,I).replace(/""/g,'"')),l(I+1+v),x=e.indexOf(t,o),y&&(_(),u))return p();if(s&&b.length>=s)return p(!0);break}}else I++}}return d()},this.abort=function(){u=!0},this.getCharIndex=function(){return o}}function h(){var e=document.getElementsByTagName("script");return e.length?e[e.length-1].src:""}function f(){if(!S.WORKERS_SUPPORTED)return!1;if(!b&&null===S.SCRIPT_PATH)throw new Error("Script path cannot be determined automatically when Papa Parse is loaded asynchronously. You need to set Papa.SCRIPT_PATH manually.");var t=S.SCRIPT_PATH||v;t+=(-1!==t.indexOf("?")?"&":"?")+"papaworker";var r=new e.Worker(t);return r.onmessage=c,r.id=w++,R[r.id]=r,r}function c(e){var t=e.data,r=R[t.workerId],n=!1;if(t.error)r.userError(t.error,t.file);else if(t.results&&t.results.data){var i=function(){n=!0,d(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},s={abort:i,pause:l,resume:l};if(m(r.userStep)){for(var a=0;a<t.results.data.length&&(r.userStep({data:[t.results.data[a]],errors:t.results.errors,meta:t.results.meta},s),!n);a++);delete t.results}else m(r.userChunk)&&(r.userChunk(t.results,s,t.file),delete t.results)}t.finished&&!n&&d(t.workerId,t.results)}function d(e,t){var r=R[e];m(r.userComplete)&&r.userComplete(t),r.terminate(),delete R[e]}function l(){throw"Not implemented."}function p(t){var r=t.data;if("undefined"==typeof S.WORKER_ID&&r&&(S.WORKER_ID=r.workerId),"string"==typeof r.input)e.postMessage({workerId:S.WORKER_ID,results:S.parse(r.input,r.config),finished:!0});else if(e.File&&r.input instanceof File||r.input instanceof Object){var n=S.parse(r.input,r.config);n&&e.postMessage({workerId:S.WORKER_ID,results:n,finished:!0})}}function _(e){if("object"!=typeof e)return e;var t=e instanceof Array?[]:{};for(var r in e)t[r]=_(e[r]);return t}function g(e,t){return function(){e.apply(t,arguments)}}function m(e){return"function"==typeof e}var v,k=!e.document&&!!e.postMessage,y=k&&/(\?|&)papaworker(=|&|$)/.test(e.location.search),b=!1,R={},w=0,S={};if(S.parse=t,S.unparse=r,S.RECORD_SEP=String.fromCharCode(30),S.UNIT_SEP=String.fromCharCode(31),S.BYTE_ORDER_MARK="\ufeff",S.BAD_DELIMITERS=["\r","\n",'"',S.BYTE_ORDER_MARK],S.WORKERS_SUPPORTED=!k&&!!e.Worker,S.SCRIPT_PATH=null,S.LocalChunkSize=10485760,S.RemoteChunkSize=5242880,S.DefaultDelimiter=",",S.Parser=u,S.ParserHandle=o,S.NetworkStreamer=i,S.FileStreamer=s,S.StringStreamer=a,"undefined"!=typeof module&&module.exports?module.exports=S:m(e.define)&&e.define.amd?define(function(){return S}):e.Papa=S,e.jQuery){var C=e.jQuery;C.fn.parse=function(t){function r(){if(0==a.length)return void(m(t.complete)&&t.complete());var e=a[0];if(m(t.before)){var r=t.before(e.file,e.inputElem);if("object"==typeof r){if("abort"==r.action)return void n("AbortError",e.file,e.inputElem,r.reason);if("skip"==r.action)return void i();"object"==typeof r.config&&(e.instanceConfig=C.extend(e.instanceConfig,r.config))}else if("skip"==r)return void i()}var s=e.instanceConfig.complete;e.instanceConfig.complete=function(t){m(s)&&s(t,e.file,e.inputElem),i()},S.parse(e.file,e.instanceConfig)}function n(e,r,n,i){m(t.error)&&t.error({name:e},r,n,i)}function i(){a.splice(0,1),r()}var s=t.config||{},a=[];return this.each(function(){var t="INPUT"==C(this).prop("tagName").toUpperCase()&&"file"==C(this).attr("type").toLowerCase()&&e.FileReader;if(!t||!this.files||0==this.files.length)return!0;for(var r=0;r<this.files.length;r++)a.push({file:this.files[r],inputElem:this,instanceConfig:C.extend({},s)})}),r(),this}}y?e.onmessage=p:S.WORKERS_SUPPORTED&&(v=h(),document.body?document.addEventListener("DOMContentLoaded",function(){b=!0},!0):b=!0),i.prototype=Object.create(n.prototype),i.prototype.constructor=i,s.prototype=Object.create(n.prototype),s.prototype.constructor=s,a.prototype=Object.create(a.prototype),a.prototype.constructor=a}("undefined"!=typeof window?window:this);var CRYPTO={paranoia_level:null,PASSWORD:{generate:function(length,callback,progress,start_string){return sjcl.random.isReady(paranoia_level)?(null==start_string&&(start_string=""),start_string.length<length?(start_string+=CRYPTO.RANDOM.getRandomASCII(),null!=progress&&progress(start_string.length/length*100),void setTimeout(this.generate(length,callback,progress,start_string),100)):(callback(start_string),void(null!=progress&&progress(100)))):void setTimeout(this.generate(length,callback,progress,start_string),500)},logRepeatedCharCount:function(str){var chars=[];for(i=0;i<str.length;i++)chars[str.charAt(i)]=null==chars[str.charAt(i)]?0:chars[str.charAt(i)]+1;return chars}},RANDOM:{getRandomASCII:function(){for(var ret="";ret.length<4;){var int=sjcl.random.randomWords(1,paranoia_level);int=int[0];var tmp=this._isASCII((4278190080&int)>>24);tmp&&(ret+=tmp),tmp=this._isASCII((16711680&int)>>16),tmp&&(ret+=tmp),tmp=this._isASCII((65280&int)>>8),tmp&&(ret+=tmp),tmp=this._isASCII(255&int),tmp&&(ret+=tmp)}return ret},_isASCII:function(data){return data>31&&data<127&&String.fromCharCode(data)}},initEngines:function(default_paranoia){paranoia_level=default_paranoia||10,sjcl.random.setDefaultParanoia(this.paranoia_level),sjcl.random.startCollectors(),console.warn("Crypto stuff initialized")}};CRYPTO.initEngines(),function(){angular.module("passmanApp",["ngAnimate","ngCookies","ngResource","ngRoute","ngSanitize","ngTouch","templates-main","LocalStorageModule","offClick","ngPasswordMeter","ngclipboard","xeditable","ngTagsInput","angularjs-datetime-picker","ui.sortable","pascalprecht.translate"]).config(function($routeProvider){$routeProvider.when("/",{templateUrl:"views/vaults.html",controller:"VaultCtrl"}).when("/vault/:vault_id",{templateUrl:"views/show_vault.html",controller:"CredentialCtrl"}).when("/vault/:vault_id/new",{templateUrl:"views/edit_credential.html",controller:"CredentialEditCtrl"}).when("/vault/:vault_id/edit/:credential_id",{templateUrl:"views/edit_credential.html",controller:"CredentialEditCtrl"}).when("/vault/:vault_id/:credential_id/share",{templateUrl:"views/share_credential.html",controller:"ShareCtrl"}).when("/vault/:vault_id/:credential_id/revisions",{templateUrl:"views/credential_revisions.html",controller:"RevisionCtrl"}).when("/vault/:vault_id/request-deletion",{templateUrl:"views/vault_req_deletion.html",controller:"RequestDeleteCtrl"}).when("/vault/:vault_id/settings",{templateUrl:"views/settings.html",controller:"SettingsCtrl"}).otherwise({redirectTo:"/"})}).config(["$httpProvider",function($httpProvider){$httpProvider.defaults.headers.common.requesttoken=oc_requesttoken}]).config(function(localStorageServiceProvider){localStorageServiceProvider.setNotify(!0,!0)}).config(function($translateProvider){$translateProvider.useSanitizeValueStrategy("sanitizeParameters"),$translateProvider.useUrlLoader(OC.generateUrl("/apps/passman/api/v2/language")),$translateProvider.preferredLanguage("en")}).run(["$rootScope",function($rootScope){$rootScope.$on("$routeChangeSuccess",function(e,curr,prev){$(".ui-dialog-content").dialog("close")})}]),jQuery(document).ready(function(){var findItemByID=function(id){var credentials,foundItem=!1;return credentials=angular.element("#app-content-wrapper").scope().credentials,angular.forEach(credentials,function(credential){credential.credential_id===id&&(foundItem=credential)}),foundItem};jQuery(document).on("click",".undoDelete",function(){var credential=findItemByID($(this).attr("data-item-id"));angular.element("#app-content-wrapper").scope().recoverCredential(credential),angular.element("#app-content-wrapper").scope().$apply()}),jQuery(document).on("click",".undoRestore",function(){var credential=findItemByID($(this).attr("data-item-id"));angular.element("#app-content-wrapper").scope().deleteCredential(credential),angular.element("#app-content-wrapper").scope().$apply()})})}(),function(){angular.module("passmanApp").filter("as",function($parse){return function(value,context,path){return $parse(path).assign(context,value)}})}(),function(){angular.module("passmanApp").filter("bytes",function(){return function(bytes,precision){if(isNaN(parseFloat(bytes))||!isFinite(bytes))return"-";"undefined"==typeof precision&&(precision=1);var units=["bytes","kB","MB","GB","TB","PB"],number=Math.floor(Math.log(bytes)/Math.log(1024));return(bytes/Math.pow(1024,Math.floor(number))).toFixed(precision)+" "+units[number]}})}(),function(){angular.module("passmanApp").filter("credentialSearch",function(){return function(credentials,filter){var _credentials=[];if(credentials){if(!filter)return credentials;if(""===filter.filterText.trim())return credentials;for(var matchedWithFilter=function(c){for(var f=0;f<filter.fields.length;f++){var field=filter.fields[f],fieldValue="string"==typeof c[field]?c[field]:JSON.stringify(c[field]);if(filter.hasOwnProperty("useRegex")&&filter.useRegex===!0)try{var patt=new RegExp(filter.filterText);if(patt.test(fieldValue))return!0}catch(e){}if(fieldValue.toLowerCase().indexOf(filter.filterText.toLowerCase())>=0)return!0}return!1},ci=0;ci<credentials.length;ci++){var c=credentials[ci];matchedWithFilter(c)&&_credentials.push(c)}return _credentials}return[]}})}(),function(){angular.module("passmanApp").filter("propsFilter",function(){return function(items,props){var out=[];if(angular.isArray(items)){var keys=Object.keys(props);items.forEach(function(item){for(var itemMatches=!1,i=0;i<keys.length;i++){var prop=keys[i],text=props[prop].toLowerCase();if(item[prop].toString().toLowerCase().indexOf(text)!==-1){itemMatches=!0;break}}itemMatches&&out.push(item)})}else out=items;return out}})}(),function(){angular.module("passmanApp").filter("range",function(){return function(val,range){range=parseInt(range);for(var i=0;i<range;i++)val.push(i);return val}})}(),function(){angular.module("passmanApp").filter("tagFilter",function(){return function(credentials,tags){var _credentials=[];if(tags.length>0)for(var ci=0;ci<credentials.length;ci++){for(var c=credentials[ci],matches=0,ct=0;ct<c.tags_raw.length;ct++){var t=c.tags_raw[ct];tags.indexOf(t.text)!==-1&&matches++}matches===tags.length&&_credentials.push(c)}return 0===tags.length&&(_credentials=credentials),_credentials}})}(),function(){angular.module("passmanApp").filter("toHHMMSS",function(){return function(_seconds){var sec_num=parseInt(_seconds,10),hours=Math.floor(sec_num/3600),minutes=Math.floor((sec_num-3600*hours)/60),seconds=sec_num-3600*hours-60*minutes;return hours<10&&(hours="0"+hours),minutes<10&&(minutes="0"+minutes),seconds<10&&(seconds="0"+seconds),hours+":"+minutes+":"+seconds}})}(),function(){angular.module("passmanApp").service("CacheService",["localStorageService","EncryptService",function(localStorageService,EncryptService){return{get:function(name){return EncryptService.decryptString(localStorageService.get(name))},set:function(key,value){value=EncryptService.encryptString(value),localStorageService.set(key,value)}}}])}(),function(){angular.module("passmanApp").service("CredentialService",["$http","EncryptService","VaultService","FileService",function($http,EncryptService,VaultService,FileService){var credential={credential_id:null,guid:null,vault_id:null,label:null,description:null,created:null,changed:null,tags:[],email:null,
icon:{type:!1,content:""},username:null,password:null,url:null,favicon:null,renew_interval:null,expire_time:0,delete_time:0,files:[],custom_fields:[],otp:{},compromised:!1,hidden:!1},_encryptedFields=["description","username","password","files","custom_fields","otp","email","tags","url","compromised"];return{newCredential:function(){return angular.copy(credential)},createCredential:function(credential){for(var _credential=angular.copy(credential),i=0;i<_encryptedFields.length;i++){var field=_encryptedFields[i],fieldValue=angular.copy(credential[field]);_credential[field]=EncryptService.encryptString(JSON.stringify(fieldValue))}_credential.expire_time=new Date(angular.copy(credential.expire_time)).getTime()/1e3;var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials");return $http.post(queryUrl,_credential).then(function(response){return response.data?response.data:response})},getEncryptedFields:function(){return _encryptedFields},updateCredential:function(credential,skipEncryption,key){var _credential=angular.copy(credential);if(!skipEncryption)for(var i=0;i<_encryptedFields.length;i++){var field=_encryptedFields[i],fieldValue=angular.copy(credential[field]);_credential[field]=EncryptService.encryptString(JSON.stringify(fieldValue),key)}_credential.expire_time=new Date(angular.copy(credential.expire_time)).getTime()/1e3;var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+credential.guid);return $http.patch(queryUrl,_credential).then(function(response){return response.data?response.data:response})},getCredential:function(guid){var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+guid);return $http.get(queryUrl).then(function(response){return response.data?response.data:response})},destroyCredential:function(guid){var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+guid);return $http.delete(queryUrl).then(function(response){return response.data?response.data:response})},encryptCredential:function(credential,key){for(var i=0;i<_encryptedFields.length;i++){var field=_encryptedFields[i],fieldValue=angular.copy(credential[field]);credential[field]=EncryptService.encryptString(JSON.stringify(fieldValue),key)}return credential},decryptCredential:function(credential,key){for(var i=0;i<_encryptedFields.length;i++){var field_decrypted_value,field=_encryptedFields[i],fieldValue=angular.copy(credential[field]);try{field_decrypted_value=null!==fieldValue?EncryptService.decryptString(fieldValue,key):null}catch(e){throw e}try{credential[field]=JSON.parse(field_decrypted_value)}catch(e){console.warn("Field"+field+" in "+credential.label+" could not be parsed! Value:"+fieldValue)}}return credential},getSharedKeyFromCredential:function(credential){var key=null;return!credential.hasOwnProperty("acl")&&credential.hasOwnProperty("shared_key")&&credential.shared_key&&(key=EncryptService.decryptString(angular.copy(credential.shared_key))),credential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy(credential.acl.shared_key))),key},getRevisions:function(guid){var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+guid+"/revision");return $http.get(queryUrl).then(function(response){return response.data?response.data:response})},updateRevision:function(revision){var _revision=angular.copy(revision);_revision.credential_data=window.btoa(JSON.stringify(_revision.credential_data));var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+revision.credential_data.guid+"/revision/"+revision.revision_id);return $http.patch(queryUrl,_revision).then(function(response){return response.data?response.data:response})},deleteRevision:function(credential_guid,revision_id){var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+credential_guid+"/revision/"+revision_id);return $http.delete(queryUrl).then(function(response){return response.data?response.data:response})},reencryptCredential:function(credential_guid,old_password,new_password,skipSharingKey){var service=this,progress_datatype=function(current,total,process){this.process=process,this.current=current,this.total=total,this.calculated=current/total*100},promise_credential_update=function(){service.getCredential(credential_guid).then(function(credential){this.parent.plain_credential=service.decryptCredential(credential,this.parent.old_password);var tmp=angular.copy(this.parent.plain_credential);if(tmp.hasOwnProperty("shared_key")&&null!==tmp.shared_key&&!skipSharingKey){var shared_key=EncryptService.decryptString(angular.copy(tmp.shared_key)).trim();tmp.shared_key=EncryptService.encryptString(angular.copy(shared_key),this.parent.new_password),tmp.set_share_key=!0,tmp.skip_revision=!0,this.parent.new_password=shared_key}this.parent.new_credential_cryptogram=service.encryptCredential(tmp,this.parent.new_password),this.call_progress(new progress_datatype(1,2,"credential")),this.parent.new_credential_cryptogram.skip_revision=!0,service.updateCredential(this.parent.new_credential_cryptogram,!0).then(function(){this.call_progress(new progress_datatype(2,2,"credential")),this.call_then({plain_text:this.parent.plain_credential,cryptogram:this.parent.new_credential_cryptogram})}.bind(this))}.bind(this))},promise_files_update=function(){this.total=2*this.parent.plain_credential.files.length,this.current=0;for(var i=0;i<this.parent.plain_credential.files.length;i++){var _file=this.parent.plain_credential.files[i];FileService.getFile(_file).then(function(fileData){fileData.filename=EncryptService.decryptString(fileData.filename,this.parent.old_password),fileData.file_data=EncryptService.decryptString(fileData.file_data,this.parent.old_password),this.current++,this.call_progress(new progress_datatype(this.current,this.total,"files")),FileService.updateFile(fileData,this.parent.new_password).then(function(){this.current++,this.call_progress(new progress_datatype(this.current,this.total,"files")),this.current===this.total&&this.call_then("All files has been updated")}.bind(this))}.bind(this))}0===this.parent.plain_credential.files.length&&(this.call_progress(new progress_datatype(0,0,"files")),this.call_then("No files to update"))},promise_revisions_update=function(){service.getRevisions(this.parent.plain_credential.guid).then(function(revisions){this.total=2*revisions.length,this.upload=0,this.current=0,this.revisions=revisions;var revision_workload=function(){if(0===this.revisions.length)return this.call_progress(new progress_datatype(0,0,"revisions")),void this.call_then("No history to update");var _revision=revisions[this.current];_revision.credential_data=service.decryptCredential(_revision.credential_data,this.parent.old_password),_revision.credential_data=service.encryptCredential(_revision.credential_data,this.parent.new_password),this.current++,this.call_progress(new progress_datatype(this.current+this.upload,this.total,"revisions")),service.updateRevision(_revision).then(function(){this.upload++,this.call_progress(new progress_datatype(this.upload+this.current,this.total,"revisions")),this.current+this.upload===this.total&&this.call_then("History updated")}.bind(this)),this.current!==this.total/2&&setTimeout(revision_workload.bind(this),1)};setTimeout(revision_workload.bind(this),1)}.bind(this))},promise_workload=function(){this.old_password=angular.copy(old_password),this.new_password=angular.copy(new_password),this.promises=0;var master_promise=this,password_data=function(){this.old_password=master_promise.old_password,this.new_password=master_promise.new_password,this.plain_credential=master_promise.plain_credential};this.credential_data={},new C_Promise(promise_credential_update,new password_data).progress(function(data){master_promise.call_progress(data)}).then(function(data){console.warn("End credential update"),master_promise.plain_credential=data.plain_text,master_promise.promises++,master_promise.credential_data=data,new C_Promise(promise_files_update,new password_data).progress(function(data){master_promise.call_progress(data)}).then(function(){console.warn("End files update"),master_promise.promises--,0===master_promise.promises&&master_promise.call_then(master_promise.credential_data)}),master_promise.promises++,new C_Promise(promise_revisions_update,new password_data).progress(function(data){master_promise.call_progress(data)}).then(function(){console.warn("End revisions update"),master_promise.promises--,0===master_promise.promises&&master_promise.call_then(master_promise.credential_data)})})};return new C_Promise(promise_workload)}}}])}(),function(){angular.module("passmanApp").service("EncryptService",["VaultService",function(VaultService){var encryption_config={adata:"",iter:1e3,ks:256,mode:"ccm",ts:64};return{encryptString:function(string,_key){_key||(_key=VaultService.getActiveVault().vaultKey);var rp={},ct=sjcl.encrypt(_key,string,encryption_config,rp);return window.btoa(ct)},decryptString:function(ciphertext,_key){_key||(_key=VaultService.getActiveVault().vaultKey),ciphertext=window.atob(ciphertext);var rp={};try{return sjcl.decrypt(_key,ciphertext,encryption_config,rp)}catch(e){throw e}}}}])}(),function(){angular.module("passmanApp").service("FileService",["$http","EncryptService",function($http,EncryptService){return{uploadFile:function(file,key){var queryUrl=OC.generateUrl("apps/passman/api/v2/file"),_file=angular.copy(file);_file.filename=EncryptService.encryptString(_file.filename,key);var data=EncryptService.encryptString(angular.copy(file.data),key);return _file.data=data,$http.post(queryUrl,_file).then(function(response){return response.data?response.data:response})},deleteFile:function(file){var queryUrl=OC.generateUrl("apps/passman/api/v2/file/"+file.file_id),_file=angular.copy(file);return $http.delete(queryUrl,_file).then(function(response){return response.data?response.data:response})},getFile:function(file){var queryUrl=OC.generateUrl("apps/passman/api/v2/file/"+file.file_id),_file=angular.copy(file);return $http.get(queryUrl,_file).then(function(response){return response.data?"[object Array]"===Object.prototype.toString.call(response.data)?response.data.pop():response.data:response})},updateFile:function(file,key){var queryUrl=OC.generateUrl("apps/passman/api/v2/file/"+file.file_id),_file=angular.copy(file);_file.filename=EncryptService.encryptString(_file.filename,key);var data=EncryptService.encryptString(angular.copy(file.file_data),key);return _file.file_data=data,$http.patch(queryUrl,_file).then(function(response){return response.data?response.data:response})},dataURItoBlob:function(dataURI,ftype){var byteString,ab,ia,bb,i;for(byteString=atob(dataURI.split(",")[1]),ab=new ArrayBuffer(byteString.length),ia=new Uint8Array(ab),i=0;i<byteString.length;i++)ia[i]=byteString.charCodeAt(i);return bb=new Blob([ab],{type:ftype}),URL.createObjectURL(bb)}}}])}(),function(){angular.module("passmanApp").service("IconService",["$http",function($http){return{getIcons:function(){var queryUrl=OC.generateUrl("apps/passman/api/v2/icon/list");return $http.get(queryUrl).then(function(response){return response.data?response.data:response})}}}])}(),function(){angular.module("passmanApp").service("NotificationService",["$timeout",function($timeout){var to;return{showNotification:function(text,time,closeCallback){var notification=OC.Notification.showHtml(text);return to=$timeout(function(){OC.Notification.hide(notification,closeCallback)},time),notification},hideNotification:function(notification){$timeout.cancel(to),OC.Notification.hide(notification)},hideAll:function(){OC.Notification.hide()}}}])}(),function(){angular.module("passmanApp").service("SearchboxexpanderService",["SettingsService","$translate",function(SettingsService,$translate){function getSearchFieldArraySettings(){var res=SettingsService.getSetting("searchbox_settings");searchfields="undefined"!=typeof res&&null!==res&&""!==res?JSON.parse(res):defaults}function getSearchFieldArrayForFiltering(){var fields=[];for(var key in searchfields)searchfields[key]&&fields.push(key);return fields}function buildDefaultFix(rootScope,scope){null!==native_search&&(native_search.nextElementSibling.addEventListener("click",function(e){scope.$apply(function(){rootScope.$broadcast("nc_searchbox","")})}),native_search.classList.remove("hidden"),native_search.addEventListener("keypress",function(e){13===e.keyCode&&e.preventDefault()}),native_search.addEventListener("keyup",function(e){scope.$apply(function(){rootScope.$broadcast("nc_searchbox",native_search.value,getSearchFieldArrayForFiltering())})}))}function buildCog(){if(null!==native_search){var parent=document.createElement("div");parent.classList.add("notifications"),parent.id="searchbox-settings",parent.classList.add("hidden");var node=document.createElement("div");node.classList.add("icon-settings-white"),node.classList.add("searchbox-settings"),node.id="searchbox-settings-icon",parent.appendChild(node),native_search.after(parent)}}function addListenerToCog(){null!==native_search&&($("#searchbox").on("focus",function(evt){$("#searchbox-settings").removeClass("hidden")}),$("#searchbox").on("blur",function(evt){native_search.value||setTimeout(function(){$("#searchbox-settings").addClass("hidden")},150)}))}function openPopup(){null!==native_search&&(buildPopup(title,defaults_button),$(function(){$("#dialog-searchboxsettings").dialog({width:280,height:280,dialogClass:"custom-search-dialog",close:function(){$(this).dialog("destroy")}}).removeClass("ui-corner-all")}))}function buildPopup(title){$("#dialog-searchboxsettings").length&&$("#dialog-searchboxsettings").remove();var dialogdiv=document.createElement("div");dialogdiv.id="dialog-searchboxsettings",dialogdiv.title=title,dialogdiv.classList.add("hidden"),native_search.after(dialogdiv),getSearchFieldArraySettings();for(var key in searchfields){var div_inner=document.createElement("div");div_inner.id=key+"_div";var input=document.createElement("input");input.id=key+"_input",input.classList.add("searchbox_settings_input"),input.setAttribute("key",key),input.type="checkbox",searchfields[key]&&(input.checked="true"),input.innerText=key;var label=document.createElement("label");label.classList.add("searchbox_settings_label"),label.innerHTML=translations[key],label.setAttribute("key",key),div_inner.appendChild(input),div_inner.appendChild(label),dialogdiv.appendChild(div_inner)}attachListener()}function attachListener(){$(".searchbox_settings_input").on("change",function(evt){var key=$(this).attr("key");searchfields[key]=$("#"+key+"_input").prop("checked");var string=JSON.stringify(searchfields);SettingsService.setSetting("searchbox_settings",string)}),$(".searchbox_settings_label").on("click",function(evt){})}var defaults={label:!0,username:!0,email:!0,custom_fields:!0,password:!1,description:!1,url:!1},searchfields={label:!0,username:!0,email:!0,custom_fields:!0,password:!1,description:!1,url:!1},native_search=document.getElementById("searchbox"),title="Loading...",defaults_button="Loading...",translations={};return $translate.onReady(function(){for(var key in defaults)translations[key]=$translate.instant("search.settings.input."+key);title=$translate.instant("search.settings.title"),defaults_button=$translate.instant("search.settings.defaults_button")}),{expandSearch:function($rootScope,$scope,translation){getSearchFieldArraySettings(),buildDefaultFix($rootScope,$scope),buildCog(),addListenerToCog(),$("#searchbox-settings-icon").on("click",function(evt){openPopup()})}}}])}(),function(){angular.module("passmanApp").service("SettingsService",["localStorageService","$http","$rootScope",function(localStorageService,$http,$rootScope){var settings={defaultVault:null,defaultVaultPass:null};$http.get(OC.generateUrl("apps/passman/api/v2/settings")).then(function(response){response.data&&(settings=angular.merge(settings,response.data),$rootScope.$broadcast("settings_loaded"))});var cookie=localStorageService.get("settings");return settings=angular.merge(settings,cookie),{getSettings:function(){return settings},getSetting:function(name){return settings[name]},setSetting:function(name,value){settings[name]=value,localStorageService.set("settings",settings)},isEnabled:function(name){return 1===settings[name]||"1"===settings[name]}}}])}(),function(){angular.module("passmanApp").service("ShareService",["$http","VaultService","EncryptService","CredentialService",function($http,VaultService,EncryptService,CredentialService){var paranoia_level=10;return sjcl.random.setDefaultParanoia(paranoia_level),sjcl.random.startCollectors(),{search:function(string){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/search");return $http.post(queryUrl,{search:string}).then(function(response){return response.data?response.data:response})},shareWithUser:function(credential,target_user_data){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/share");return $http.post(queryUrl,{item_id:credential.credential_id,item_guid:credential.guid,permissions:target_user_data.accessLevel,vaults:target_user_data.vaults})},getVaultsByUser:function(userId){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/vaults/"+userId);return $http.get(queryUrl,{search:userId}).then(function(response){if(response.data){for(var i=0;i<response.data.length;i++)response.data[i].public_sharing_key=forge.pki.publicKeyFromPem(response.data[i].public_sharing_key);return response.data}return response})},getPendingRequests:function(){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/pending");return $http.get(queryUrl).then(function(response){if(response.data)return response.data})},saveSharingRequest:function(request,crypted_shared_key){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/save");return $http.post(queryUrl,{item_guid:request.item_guid,target_vault_guid:request.target_vault_guid,final_shared_key:crypted_shared_key}).then(function(response){return response.data})},declineSharingRequest:function(request){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/decline/"+request.req_id);return $http.delete(queryUrl).then(function(response){return response.data})},unshareCredential:function(credential){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential.guid);return $http.delete(queryUrl).then(function(response){return response.data})},unshareCredentialFromUser:function(credential,user_id){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential.guid+"/"+user_id);return $http.delete(queryUrl).then(function(response){return response.data})},createPublicSharedCredential:function(shareObj){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/public");return $http.post(queryUrl,shareObj).then(function(response){return response.data})},getPublicSharedCredential:function(credential_guid){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential_guid+"/public");return $http.get(queryUrl).then(function(response){return response.data?response:response},function(result){return result})},getSharedCredentialACL:function(credential){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential.guid+"/acl");return $http.get(queryUrl).then(function(response){return response.data?response.data:response},function(result){return result})},updateCredentialAcl:function(credential,acl){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential.guid+"/acl");return $http.patch(queryUrl,acl).then(function(response){return response.data})},getCredendialsSharedWithUs:function(vault_guid){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/vault/"+vault_guid+"/get");return $http.get(queryUrl).then(function(response){if(response.data)return response.data})},downloadSharedFile:function(credential,file){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential.guid+"/file/"+file.guid);return $http.get(queryUrl).then(function(response){if(response.data)return response.data})},encryptSharedCredential:function(credential,sharedKey){var _credential=angular.copy(credential);_credential.shared_key=EncryptService.encryptString(sharedKey);for(var encrypted_fields=CredentialService.getEncryptedFields(),i=0;i<encrypted_fields.length;i++){var field=encrypted_fields[i],fieldValue=angular.copy(credential[field]);_credential[field]=EncryptService.encryptString(JSON.stringify(fieldValue),sharedKey)}return _credential},decryptSharedCredential:function(credential,sharedKey){for(var _credential=angular.copy(credential),encrypted_fields=CredentialService.getEncryptedFields(),i=0;i<encrypted_fields.length;i++){var field_decrypted_value,field=encrypted_fields[i],fieldValue=angular.copy(_credential[field]);if(_credential.hasOwnProperty(field)){try{field_decrypted_value=EncryptService.decryptString(fieldValue,sharedKey)}catch(e){if("compromised"!==field||null!==fieldValue)throw e;field_decrypted_value=0}try{_credential[field]=JSON.parse(field_decrypted_value)}catch(e){throw console.warn("Field"+field+" in "+_credential.label+" could not be parsed! Value:"+fieldValue),e}}}return _credential},generateRSAKeys:function(key_length){var p=new C_Promise(function(){var state=forge.pki.rsa.createKeyPairGenerationState(key_length,65537),step=function(){forge.pki.rsa.stepKeyPairGenerationState(state,100)?this.call_then(state.keys):(null!==state.p?this.call_progress(50):this.call_progress(0),setTimeout(step.bind(this),1))};setTimeout(step.bind(this),100)});return p},generateSharedKey:function(size){return size=size||20,new C_Promise(function(){var t=this;CRYPTO.PASSWORD.generate(size,function(pass){t.call_then(pass)},function(progress){t.call_progress(progress)})})},rsaKeyPairToPEM:function(keypair){return{publicKey:forge.pki.publicKeyToPem(keypair.publicKey),privateKey:forge.pki.privateKeyToPem(keypair.privateKey)}},getSharingKeys:function(){var vault=VaultService.getActiveVault();return{private_sharing_key:EncryptService.decryptString(angular.copy(vault.private_sharing_key)),public_sharing_key:vault.public_sharing_key}},rsaPrivateKeyFromPEM:function(private_pem){return forge.pki.privateKeyFromPem(private_pem)},rsaPublicKeyFromPEM:function(public_pem){return forge.pki.publicKeyFromPem(public_pem)},cypherRSAStringWithPublicKeyBulkAsync:function(vaults,string){var workload=function(){if(this.current_index<this.vaults.length>0&&this.vaults.length>0){var _vault=angular.copy(this.vaults[this.current_index]);_vault.key=forge.util.encode64(_vault.public_sharing_key.encrypt(this.string)),this.data.push(_vault),this.current_index++,this.call_progress(this.current_index),setTimeout(workload.bind(this),1)}else this.call_then(this.data)};return new C_Promise(function(){this.data=[],this.vaults=vaults,this.string=string,this.current_index=0,setTimeout(workload.bind(this),0)})}}}])}(),function(){angular.module("passmanApp").service("TagService",["$filter",function($filter){var _tags=[];return{getTags:function(){return _tags},searchTag:function(string){return $filter("filter")(_tags,{text:string})},addTags:function(tags){for(var i=0;i<tags.length;i++)tags[i].text&&0===$filter("filter")(_tags,{text:tags[i].text}).length&&_tags.push(tags[i])},resetTags:function(){_tags=[]}}}])}(),function(){angular.module("passmanApp").service("VaultService",["$http",function($http){var _activeVault,service={getVaults:function(){var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults");return $http.get(queryUrl).then(function(response){return response.data?response.data:response})},setActiveVault:function(vault){_activeVault=angular.copy(vault)},getActiveVault:function(){return _activeVault},getVaultSetting:function(key,default_value){return _activeVault.vault_settings&&void 0!==_activeVault.vault_settings[key]?_activeVault.vault_settings[key]:default_value},setVaultSetting:function(key,value){return!!_activeVault.vault_settings&&(_activeVault.vault_settings[key]=value,void this.updateVault(_activeVault))},createVault:function(vaultName){var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults");return $http.post(queryUrl,{vault_name:vaultName}).then(function(response){return response.data?response.data:response})},getVault:function(vault){var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults/"+vault.guid);return $http.get(queryUrl).then(function(response){return response.data?(response.data.vault_settings?response.data.vault_settings=JSON.parse(window.atob(response.data.vault_settings)):response.data.vault_settings={},response.data):response})},updateVault:function(vault){var _vault=angular.copy(vault);delete _vault.defaultVaultPass,delete _vault.defaultVault,delete _vault.vaultKey,_vault.vault_settings=window.btoa(JSON.stringify(_vault.vault_settings));var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults/"+_vault.guid);return $http.patch(queryUrl,_vault).then(function(response){return response.data?response.data:response})},updateSharingKeys:function(vault){var _vault=angular.copy(vault);delete _vault.vaultKey;var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults/"+_vault.guid+"/sharing-keys");return $http.post(queryUrl,_vault).then(function(response){return response.data?response.data:response})},deleteVault:function(vault){var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults/"+vault.guid);return $http.delete(queryUrl).then(function(response){return response.data?response.data:response})},clearVaultService:function(){_activeVault=null}};return service}])}(),function(){angular.module("passmanApp").factory("SharingACL",function(){function ACL(acl_permission){this.permission=acl_permission}return ACL.prototype.permissions={READ:1,WRITE:2,FILES:4,HISTORY:8,OWNER:128},ACL.prototype.hasPermission=function(permission){return permission===(this.permission&permission)},ACL.prototype.addPermission=function(permission){this.permission=this.permission|permission},ACL.prototype.removePermission=function(permission){this.permission=this.permission&~permission},ACL.prototype.togglePermission=function(permission){this.permission^=permission},ACL.prototype.getAccessLevel=function(){return this.permission},ACL})}(),function(){angular.module("passmanApp").directive("autoScroll",function(){return{restrict:"A",scope:{autoScroll:"="},link:function(scope,el){scope.$watch("autoScroll",function(){$(el).scrollTop($(el)[0].scrollHeight)},!0)}}})}(),function(){angular.module("passmanApp").directive("clearBtn",["$parse",function($parse){return{link:function(scope,elm,attr){elm.wrap("<div style='position: relative'></div>");var btn="<span id="+Math.round(1e9*Math.random())+' class="searchclear ng-hide fa fa-times-circle-o"></span>',angularBtn=angular.element(btn);elm.after(angularBtn),angularBtn.on("click",function(){elm.val("").trigger("change"),$parse(attr.ngModel).assign(scope,""),scope.$apply()}),elm.bind("focus keyup change paste propertychange",function(){elm.val()&&elm.val().length>0?angularBtn.removeClass("ng-hide"):angularBtn.addClass("ng-hide")})}}}])}(),function(){angular.module("passmanApp").directive("clickDisable",function(){return function(scope,element){element.bind("click",function(){element.prepend('<i class="fa fa-spin fa-spinner"></i>&nbsp;'),element.attr("disabled","disabled")})}})}(),function(){angular.module("passmanApp").directive("selectOnClick",["$window",function($window){return{restrict:"A",link:function(scope,element){element.on("click",function(){$window.getSelection().toString()||this.setSelectionRange(0,this.value.length)})}}}])}(),function(){angular.module("passmanApp").directive("colorFromString",[function(){return{restrict:"A",scope:{string:"=colorFromString"},link:function(scope,el){function genColor(str){for(var hash=0,i=0;i<str.length;i++)hash=str.charCodeAt(i)+((hash<<5)-hash);var c=(16777215&hash).toString(16).toUpperCase();return"#"+"00000".substring(0,6-c.length)+c}scope.$watch("string",function(){jQuery(el).css("border-color",genColor(scope.string))})}}}])}(),function(){angular.module("passmanApp").directive("credentialCounter",[function(){return{template:'<div ng-show="counter" translate="number.filtered" translate-values="{number_filtered: counter, credential_number: total}"></div>',replace:!1,restrict:"A",scope:{filteredCredentials:"=credentialCounter",deleteTime:"=",vault:"=",filters:"="},link:function(scope){function countCredentials(){var countedCredentials=0,total=0;scope.vault&&scope.vault.hasOwnProperty("credentials")&&(angular.forEach(scope.vault.credentials,function(credential){var pos=scope.filteredCredentials.map(function(c){return c.guid}).indexOf(credential.guid);0===scope.deleteTime&&0===credential.hidden&&0===credential.delete_time&&(total+=1,countedCredentials=pos!==-1?countedCredentials+1:countedCredentials),scope.deleteTime>0&&0===credential.hidden&&credential.delete_time>0&&(total+=1,countedCredentials=pos!==-1?countedCredentials+1:countedCredentials)}),scope.counter=countedCredentials,scope.total=total)}scope.$watch("[filteredCredentials, deleteTime, filters]",function(){countCredentials()},!0)}}}])}(),function(){angular.module("passmanApp").directive("credentialField",["$timeout","$translate",function($timeout,$translate){return{scope:{value:"=value",secret:"=secret",inputField:"=useInput",inputFieldplaceholder:"=inputPlaceholder",isURLFIELD:"=url"},restrict:"A",replace:"true",template:'<span class="credential_field"><div class="value" ng-class="{\'ellipsis\': isLink}"><span ng-if="secret"><span ng-repeat="n in [] | range:value.length" ng-if="!valueVisible">*</span></span><span ng-if="valueVisible && !inputField" ng-bind-html="value"></span><span ng-if="valueVisible && inputField"><input type="text" ng-model="value" select-on-click placeholder="{{ inputFieldplaceholder }}!"</span></div><div class="tools"><div class="cell" ng-if="toggle" tooltip="tggltxt" ng-click="toggleVisibility()"><i class="fa" ng-class="{\'fa-eye\': !valueVisible, \'fa-eye-slash\': valueVisible }"></i></div><div class="cell" ng-if="isURLFIELD && isLink"><a ng-href="{{value}}" target="_blank" rel="nofollow noopener noreferrer"><i tooltip="\'Open in new window\'" class="link fa fa-external-link"></i></a></div><div class="cell" ng-if="isURLFIELD && isPartialLink"><a ng-href="//{{value}}" target="_blank" rel="nofollow noopener noreferrer"><i tooltip="\'Open in new window\'" class="link fa fa-external-link"></i></a></div><div class="cell" ngclipboard-success="onSuccess(e);" ngclipboard-error="onError(e);" ngclipboard data-clipboard-text="{{value}}"><i tooltip="copy_msg" class="fa fa-files-o"></i></div></div></span>',link:function(scope){var expression=/(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})/i,regex=new RegExp(expression);$translate(["toggle.visibility","copy.field","copy","copied"]).then(function(translations){scope.tggltxt=translations["toggle.visibility"],scope.copy_msg=translations["copy.field"]}),scope.$watch("value",function(){scope.value&&(scope.secret&&(scope.valueVisible=!1),regex.test(scope.value)?(scope.isLink=!0,scope.isPartialLink=!1):(scope.isLink=!1,regex.test("https://"+scope.value)&&(scope.isPartialLink=!0)))}),scope.toggle||scope.secret&&(scope.toggle=!0);var timer;scope.onSuccess=function(){scope.copy_msg=$translate.instant("copied"),$timeout.cancel(timer),timer=$timeout(function(){scope.copy_msg=$translate.instant("copy")},5e3)},scope.valueVisible=!0,scope.toggleVisibility=function(){scope.valueVisible=!scope.valueVisible}}}}])}(),function(){angular.module("passmanApp").directive("credentialTemplate",["EncryptService","$translate","FileService","ShareService","NotificationService","CredentialService",function(EncryptService,$translate,FileService,ShareService,NotificationService,CredentialService){return{templateUrl:"views/partials/credential_template.html",replace:!0,restrict:"A",scope:{credential:"=credentialTemplate"},link:function(scope,element,attrs){scope.downloadFile=function(credential,file){var callback=function(result){var key=CredentialService.getSharedKeyFromCredential(credential);if(!result.hasOwnProperty("file_data"))return void NotificationService.showNotification($translate.instant("error.loading.file.perm"),5e3);var file_data=EncryptService.decryptString(result.file_data,key);
-download(file_data,escapeHTML(file.filename),file.mimetype)};credential.hasOwnProperty("acl")?ShareService.downloadSharedFile(credential,file).then(callback):FileService.getFile(file).then(callback)},scope.showLabel=attrs.hasOwnProperty("showLabel")}}}])}(),function(){angular.module("passmanApp").directive("fileSelect",["$window",function($window){return{restrict:"A",scope:{success:"&success",error:"&error",progress:"&progress"},link:function(scope,el){scope.success=scope.success(),scope.error=scope.error(),scope.progress=scope.progress();var _currentFile,fileReader=new $window.FileReader;fileReader.onload=function(){_currentFile.data=fileReader.result,scope.success(_currentFile)},fileReader.onprogress=function(event){var percent=event.loaded/event.total*100;scope.progress&&scope.$apply(scope.progress({file_total:event.total,file_loaded:event.loaded,file_percent:percent}))},fileReader.onerror=function(){scope.error()},el.bind("change",function(e){var i,_queueTotalFileSize=0;for(i=0;i<e.target.files.length;i++)_queueTotalFileSize+=e.target.files[i].size;for(i=0;i<e.target.files.length;i++){_currentFile=e.target.files[i];var mb_limit=5;_currentFile.size>1024*mb_limit*1024&&scope.error("TO_BIG",_currentFile),fileReader.readAsDataURL(_currentFile)}})}}}])}(),function(){angular.module("passmanApp").directive("credentialIcon",["$window",function($window){return{template:'<img ng-src="{{ iconUrl }}" class="icon-image">',restrict:"E",scope:{credential:"="},link:function(scope,element){scope.credential&&scope.$watch("credential",function(){if(scope.credential.icon&&scope.credential.icon.type)scope.iconUrl="data:image/"+scope.credential.icon.type+";base64,"+scope.credential.icon.content;else if(scope.credential.url){var url=window.btoa(angular.copy(scope.credential.url)).replace("/","_");scope.iconUrl=OC.generateUrl("apps/passman/api/v2/icon/")+url+"/"+scope.credential.credential_id}},!0)}}}])}(),function(){angular.module("passmanApp").directive("iconPicker",["$window","IconService","$http","NotificationService","$translate",function($window,IconService,$http,NotificationService,$translate){return{templateUrl:"views/partials/icon-picker.html",restrict:"A",scope:{credential:"=iconPicker"},link:function(scope,element){IconService.getIcons().then(function(icons){scope.iconGroupsAll=icons,scope.iconGroups=icons}),scope.selectIcon=function(icon){scope.selectedIcon=icon},scope.jumpToGroup=function(groupName){var offset=$("#"+groupName).position();$(".iconList").scrollTop(offset.top)};var search=document.getElementById("iconPicker-Search");search.addEventListener("keypress",function(e){13===e.keyCode&&e.preventDefault()}),search.addEventListener("keyup",function(e){var g={};g.Numix=[],scope.iconGroupsAll.Numix.forEach(function(element){scope.isAllowedIcon(element)&&g.Numix.push(element)}),g["essential-collection"]=[],scope.iconGroupsAll["essential-collection"].forEach(function(element){scope.isAllowedIcon(element)&&g["essential-collection"].push(element)}),g["font-awesome"]=[],scope.iconGroupsAll["font-awesome"].forEach(function(element){scope.isAllowedIcon(element)&&g["font-awesome"].push(element)}),scope.iconGroups=g,scope.$apply()}),scope.isAllowedIcon=function(IconElement){var searchval=search.value.toLowerCase(),urlCropped=IconElement.url.substring(IconElement.url.lastIndexOf("/")+1,IconElement.url.length);return!(!urlCropped.includes(searchval)&&IconElement.pack.toLowerCase()!==searchval)},$("#iconPicker-CustomIcon").on("change",function(ev){scope.customIcon={};var f=ev.target.files[0],fr=new FileReader;fr.onload=function(ev2){scope.customIcon.data=ev2.target.result,scope.$apply()},fr.readAsDataURL(f)}),scope.deleteIcon=function(){delete scope.credential.icon.type,delete scope.credential.icon.content,delete scope.credential.icon,$("#iconPicker").dialog("close")},scope.refreshUrlIcon=function(){NotificationService.showNotification($translate.instant("use.icon.refresh.trying"),5e3);var queryUrl=OC.generateUrl("apps/passman/api/v2/geticon/"+btoa(scope.credential.url));$http.get(queryUrl).then(function(response){"undefined"!=typeof response.data.content?(scope.customIcon={},scope.customIcon.data="data:image/"+response.data.type+";base64,"+response.data.content):NotificationService.showNotification($translate.instant("use.icon.refresh.error"),5e3)})},scope.useIcon=function(){if(scope.customIcon){var data=scope.customIcon.data;scope.credential.icon.type=data.substring(data.lastIndexOf(":")+1,data.lastIndexOf(";")),scope.credential.icon.content=data.substring(data.lastIndexOf(",")+1,data.length)}else $http.get(scope.selectedIcon.url).then(function(result){var base64Data=window.btoa(result.data),mimeType="svg+xml";scope.credential.icon||(scope.credential.icon={}),scope.credential.icon.type=mimeType,scope.credential.icon.content=base64Data});$("#iconPicker").dialog("close")},$(element).click(function(){$("#iconPicker").dialog({width:800,height:380,modal:!0,dialogClass:"iconpicker-dialog",close:function(){$(this).dialog("destroy")}})})}}}])}(),function(){angular.module("passmanApp").directive("ngEnter",function(){return function(scope,element,attrs){element.bind("keydown keypress",function(event){13===event.which&&(scope.$apply(function(){scope.$eval(attrs.ngEnter)}),event.preventDefault())})}})}(),function(){angular.module("passmanApp").directive("otpGenerator",["$compile","$timeout",function($compile,$timeout){function dec2hex(s){return(s<15.5?"0":"")+Math.round(s).toString(16)}function hex2dec(s){return parseInt(s,16)}function base32tohex(base32){if(base32){var i,base32chars="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bits="",hex="";for(i=0;i<base32.length;i++){var val=base32chars.indexOf(base32.charAt(i).toUpperCase());bits+=leftpad(val.toString(2),5,"0")}for(i=0;i+4<=bits.length;i+=4){var chunk=bits.substr(i,4);hex+=parseInt(chunk,2).toString(16)}return hex}}function leftpad(str,len,pad){return len+1>=str.length&&(str=Array(len+1-str.length).join(pad)+str),str}return{restrict:"A",template:'<span class="otp_generator"><span credential-field value="otp" secret="\'true\'"></span> <span ng-bind="timeleft"></span></span>',transclude:!1,scope:{secret:"="},replace:!0,link:function(scope){scope.otp=null,scope.timeleft=null,scope.timer=null;var updateOtp=function(){if(scope.secret){var key=base32tohex(scope.secret),epoch=Math.round((new Date).getTime()/1e3),time=leftpad(dec2hex(Math.floor(epoch/30)),16,"0"),hmacObj=new jsSHA(time,"HEX"),hmac=hmacObj.getHMAC(key,"HEX","SHA-1","HEX"),offset=hex2dec(hmac.substring(hmac.length-1)),otp=(hex2dec(hmac.substr(2*offset,8))&hex2dec("7fffffff"))+"";otp=otp.substr(otp.length-6,6),scope.otp=otp}},timer=function(){var epoch=Math.round((new Date).getTime()/1e3),countDown=30-epoch%30;epoch%30===0&&updateOtp(),scope.timeleft=countDown,scope.timer=$timeout(timer,1e3)};scope.$watch("secret",function(n){n?($timeout.cancel(scope.timer),updateOtp(),timer()):$timeout.cancel(scope.timer)},!0),scope.$on("$destroy",function(){$timeout.cancel(scope.timer)})}}}])}(),function(){angular.module("passmanApp").directive("passwordGen",function($timeout,$translate){function Arcfour(){this.j=this.i=0,this.S=[]}function ARC4init(r){var t,n,e;for(t=0;256>t;++t)this.S[t]=t;for(t=n=0;256>t;++t)n=n+this.S[t]+r[t%r.length]&255,e=this.S[t],this.S[t]=this.S[n],this.S[n]=e;this.j=this.i=0}function ARC4next(){var r;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,r=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=r,this.S[r+this.S[this.i]&255]}function prng_newstate(){return new Arcfour}function generatePassword(r,t,n,e,o,i,p,g){var _,a,s,f,d,h,u,l,c,v,w,y,m;if(void 0===r&&(r=8+get_random(0,1)),r>256&&(r=256,document.getElementById("length").value=256),i>256&&(i=256),void 0===t&&(t=!0),void 0===n&&(n=!0),void 0===e&&(e=!0),void 0===o&&(o=!1),void 0===i&&(i=0),void 0===p&&(p=!1),void 0===g&&(g=!0),_=0,a=0,s=0,g&&(_=a=s=1),f=[],n&&_>0)for(d=0;_>d;d++)f[f.length]="L";if(t&&a>0)for(d=0;a>d;d++)f[f.length]="U";if(e&&i>0)for(d=0;i>d;d++)f[f.length]="D";if(o&&s>0)for(d=0;s>d;d++)f[f.length]="S";for(;f.length<r;)f[f.length]="A";for(f.sort(function(){return 2*get_random(0,1)-1}),h="",u="abcdefghjkmnpqrstuvwxyz",p||(u+="ilo"),n&&(h+=u),l="ABCDEFGHJKMNPQRSTUVWXYZ",p||(l+="ILO"),t&&(h+=l),c="23456789",p||(c+="10"),e&&(h+=c),v="!@#$%^&*",o&&(h+=v),w="",y=0;r>y;y++){switch(f[y]){case"L":m=u;break;case"U":m=l;break;case"D":m=c;break;case"S":m=v;break;case"A":m=h}d=get_random(0,m.length-1),w+=m.charAt(d)}return w}function rng_seed_int(r){rng_pool[rng_pptr++]^=255&r,rng_pool[rng_pptr++]^=r>>8&255,rng_pool[rng_pptr++]^=r>>16&255,rng_pool[rng_pptr++]^=r>>24&255,rng_pptr>=rng_psize&&(rng_pptr-=rng_psize)}function rng_seed_time(){rng_seed_int((new Date).getTime())}function rng_get_byte(){if(null==rng_state){for(rng_seed_time(),rng_state=prng_newstate(),rng_state.init(rng_pool),rng_pptr=0;rng_pptr<rng_pool.length;++rng_pptr)rng_pool[rng_pptr]=0;rng_pptr=0}return rng_state.next()}function rng_get_bytes(r){var t;for(t=0;t<r.length;++t)r[t]=rng_get_byte()}function SecureRandom(){}function get_random(r,t){var n,e,o,i=t-r+1;for(rng_seed_time(),n=[],e=0;4>e;e++)n[e]=0;for(rng_get_bytes(n),o=0,e=0;4>e;e++)o*=256,o+=n[e];return o%=i,o+=r}var rng_psize,rng_state,rng_pool,rng_pptr,t,z,crypt_obj,num,buf,i;if(Arcfour.prototype.init=ARC4init,Arcfour.prototype.next=ARC4next,rng_psize=256,null==rng_pool){if(rng_pool=[],rng_pptr=0,"undefined"!=typeof navigator&&"Netscape"==navigator.appName&&navigator.appVersion<"5"&&"undefined"!=typeof window&&window.crypto)for(z=window.crypto.random(32),t=0;t<z.length;++t)rng_pool[rng_pptr++]=255&z.charCodeAt(t);try{if(crypt_obj=null,"undefined"!=typeof window&&void 0!==window.crypto?crypt_obj=window.crypto:"undefined"!=typeof window&&void 0!==window.msCrypto&&(crypt_obj=window.msCrypto),void 0!==crypt_obj&&"function"==typeof crypt_obj.getRandomValues&&rng_psize>rng_pptr)for(num=Math.floor((rng_psize-rng_pptr)/2)+1,buf=new Uint16Array(num),crypt_obj.getRandomValues(buf),i=0;i<buf.length;i++)t=buf[i],rng_pool[rng_pptr++]=t>>>8,rng_pool[rng_pptr++]=255&t}catch(e){}for(;rng_psize>rng_pptr;)t=Math.floor(65536*sjcl.random.randomWords(1)),rng_pool[rng_pptr++]=t>>>8,rng_pool[rng_pptr++]=255&t;rng_pptr=0,rng_seed_time()}return SecureRandom.prototype.nextBytes=rng_get_bytes,{scope:{model:"=ngModel",length:"@",placeholder:"@",settings:"=settings",callback:"&callback"},restrict:"E",replace:"true",template:'<div class=" pw-gen "><div class="input-group "><input ng-show="!passwordVisible" type="password" ng-disabled="disabled" class="form-control " ng-model="password" placeholder="{{placeholder}}"><input ng-show="passwordVisible" type="text" ng-disabled="disabled" class="form-control " ng-model="password" placeholder="{{placeholder}}"><span class="generate_pw"><div class="cell" tooltip="gen_msg" ng-click="generatePasswordStart()"><i class="fa fa-refresh"></i></div><div class="cell" tooltip="tggltxt" ng-click="toggleVisibility()"><i class="fa" ng-class="{\'fa-eye\': passwordVisible, \'fa-eye-slash\': !passwordVisible }"></i></div><div class="cell" tooltip="\'Copy password to clipboard\'"><i class="fa fa-clipboard" ngclipboard-success="onSuccess(e);" ngclipboard-error="onError(e);" ngclipboard data-clipboard-text="{{password}}"></i></div></button></div></div>',link:function(scope){scope.callback=scope.callback(),scope.$watch("model",function(){scope.password=scope.model}),scope.passwordVisible=!1,scope.toggleVisibility=function(){scope.passwordVisible=!scope.passwordVisible},scope.passwordNotNull=!1,scope.$watch("settings",function(){scope.settings&&!scope.password&&scope.settings.generateOnCreate&&scope.generatePasswordStart()}),$translate(["password.gen","password.copy","copied","toggle.visibility"]).then(function(translations){scope.tggltxt=translations["toggle.visibility"],scope.copy_msg=translations["password.copy"],scope.gen_msg=translations["password.gen"]}),scope.$watch("password",function(){scope.model=scope.password,scope.password_repeat=scope.model}),scope.onSuccess=function(e){OC.Notification.showTemporary($translate.instant("password.copied")),e.clearSelection()},scope.onError=function(){OC.Notification.showTemporary("Press Ctrl+C to copy!")},scope.progressDivShow=!1,scope.generatePasswordStart=function(){scope.progressDivShow=!0,scope.progressValue=0,scope.progressWidth={width:scope.progressValue+"%"},scope.generatePasswordProgress()},scope.generatePasswordProgress=function(){$timeout(function(){scope.progressValue<100?(scope.password=scope._generatePassword(scope.settings),scope.progressValue+=10,scope.progressWidth={width:scope.progressValue+"%"},scope.disabled=!0,scope.generatePasswordProgress()):(scope.disabled=!1,scope.callback&&scope.callback(scope.password))},10)},scope._generatePassword=function(settings){var _settings={length:12,useUppercase:!0,useLowercase:!0,useDigits:!0,useSpecialChars:!0,minimumDigitCount:3,avoidAmbiguousCharacters:!1,requireEveryCharType:!0};settings=angular.merge(_settings,settings);var password=generatePassword(settings.length,settings.useUppercase,settings.useLowercase,settings.useDigits,settings.useSpecialChars,settings.minimumDigitCount,settings.avoidAmbiguousCharacters,settings.requireEveryCharType);return password}}}})}(),function(){angular.module("passmanApp").directive("progressBar",["$translate",function($translate){return{restrict:"A",template:'<div class="progress"><div class="progress-bar" role="progressbar" aria-valuenow="{{progress}}"aria-valuemin="0" aria-valuemax="100" style="width:{{progress}}%;" use-theme><span class="sr-only">{{progress}}% {{completed_text}}</span><span ng-if="index && total" class="progress-label" use-theme type="\'color\'" color="\'true\'">{{index}} / {{total}}</span><span ng-if="!index && !total" class="progress-label" use-theme type="\'color\'" color="\'true\'">{{progress}}%</span></div></div>',scope:{progress:"=progressBar",index:"=index",total:"=total"},link:function(scope){$translate(["complete"]).then(function(translations){scope.completed_text=translations.complete})}}}])}(),function(){angular.module("passmanApp").directive("qrread",["$parse",function($parse){return{scope:!0,link:function(scope,element,attributes){var invoker=$parse(attributes.onRead);scope.imageData=null,qrcode.callback=function(result){invoker(scope,{qrdata:{qrData:result,image:scope.imageData}})},element.bind("change",function(changeEvent){var reader=new FileReader,file=changeEvent.target.files[0];reader.readAsDataURL(file),reader.onload=function(){return function(e){scope.imageData=e.target.result,qrcode.decode(e.target.result)}}(file)})}}}])}(),function(){angular.module("passmanApp").directive("tooltip",[function(){return{restrict:"A",scope:{tooltip:"=tooltip"},link:function(scope,el){scope.$watch("tooltip",function(){scope.tooltip&&(jQuery(el).attr("title",scope.tooltip),jQuery(el).tooltip(),jQuery(el).attr("title",scope.tooltip).tooltip("fixTitle"),jQuery(".tooltip-inner").text(scope.tooltip),jQuery(el).is(":visible"))})}}}])}(),function(){angular.module("passmanApp").directive("useTheme",[function(){function invertColor(hexTripletColor){var color=hexTripletColor;return color=color.substring(1),color=parseInt(color,16),color^=16777215,color=color.toString(16),color=("000000"+color).slice(-6),color="#"+color}return{restrict:"A",scope:{type:"=type",color:"=",negative:"="},link:function(scope,el){var _color=jQuery("#header").css("background-color"),_bg=_color;scope.negative&&(_bg=invertColor(_bg)),scope.type?jQuery(el).css(scope.type,_bg):jQuery(el).css("background-color",_bg),scope.color&&jQuery(el).css("color",invertColor(_color))}}}])}();var PassmanImporter={};!function(window,$,PassmanImporter){PassmanImporter.parseRow_=function(row){row=row.trim();var isQuoted=!1;return'"'===row.charAt(0)&&(row=row.substring(1),isQuoted=!0),'"'===row.charAt(row.length-2)&&(row=row.substring(0,row.length-2),isQuoted=!0),row=isQuoted===!0?row.split('","'):row.split(",")},PassmanImporter.htmlDecode=function(input){var e=document.createElement("div");return e.innerHTML=input,e.childNodes[0].nodeValue},PassmanImporter.toObject_=function(headings,row){for(var result={},i=0,ii=row.length;i<ii;i++)headings[i]?(headings[i]=headings[i].replace(",","_").toLowerCase().replace(" ","_").replace("(","").replace(")","").replace('"',""),result[headings[i]]=row[i]):result[ii]=row[i];return result},PassmanImporter.join_=function(arr,sep){for(var parts=[],i=0,ii=arr.length;i<ii;i++)arr[i]&&parts.push(arr[i]);return parts.join(sep)},PassmanImporter.newCredential=function(){var credential={credential_id:null,guid:null,vault_id:null,label:null,description:null,created:null,changed:null,tags:[],email:null,username:null,password:null,url:null,favicon:null,renew_interval:null,expire_time:0,delete_time:0,files:[],custom_fields:[],otp:{},hidden:!1,compromised:!1};return credential},PassmanImporter.readCsv=function(csv,hasHeadings){hasHeadings=void 0===hasHeadings||hasHeadings;var lines=[];return Papa.parse(csv,{complete:function(results){if(results.data)for(var headings=hasHeadings?results.data[0]:null,start=hasHeadings?1:0,i=start;i<results.data.length;i++){var _row=hasHeadings?PassmanImporter.toObject_(headings,results.data[i]):results.data[i];lines.push(_row)}}}),lines},PassmanImporter.readJson=function(string){return JSON.parse(string)}}(window,$,PassmanImporter),String.prototype.replaceAll=function(search,replacement){var target=this;return target.replace(new RegExp(search,"g"),replacement)},Array.prototype.clean=function(deleteValue){for(var i=0;i<this.length;i++)this[i]===deleteValue&&(this.splice(i,1),i--);return this};var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.clippers={info:{name:"Clipperz.is",id:"clippers",exportSteps:["Go to menu -> Export -> Download HTML + JSON. Fields will be imported as custom fields."]}},PassmanImporter.clippers.readFile=function(file_data){return new C_Promise(function(){var credential_list=[],re=/<textarea>(.*?)<\/textarea>/gi,matches=re.exec(file_data);if(matches){var raw_json=matches[0].substring(10);raw_json=PassmanImporter.htmlDecode(raw_json.slice(0,-11));for(var json_objects=PassmanImporter.readJson(raw_json),i=0;i<json_objects.length;i++){var card=json_objects[i];re=/(\w+)/gi;var tags=card.label.match(re);card.label=card.label.replace(tags.join(" "),"").trim(),tags=tags.map(function(item){return{text:item.replace("","")}});var _credential=PassmanImporter.newCredential();_credential.label=card.label,_credential.description=card.data.notes,_credential.tags=tags;for(var field in card.currentVersion.fields){var field_data=card.currentVersion.fields[field];_credential.custom_fields.push({label:field_data.label,value:field_data.value,secret:field_data.hidden===!0})}_credential.label&&credential_list.push(_credential);var progress={percent:i/json_objects.length*100,loaded:i,total:json_objects.length};this.call_progress(progress)}}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.dashLaneCsv={info:{name:"Dashlane 4 csv",id:"dashLaneCsv",exportSteps:["Create an csv export. Go to File -> export -> Unsecured archive (readable) in CSV format"]}},PassmanImporter.dashLaneCsv.readFile=function(file_data){return new C_Promise(function(){for(var rows=file_data.split("\n"),credential_list=[],i=0;i<rows.length;i++){var row=rows[i],row_data=row.split('","');'"'===row_data[0].charAt(0)&&(row_data[0]=row_data[0].substring(1)),'"'===row_data[row_data.length-1].toString().charAt(row_data[row_data.length-1].length-1)&&(row_data[row_data.length-1]=row_data[row_data.length-1].substring(0,row_data[row_data.length-1].length-1));var _credential=PassmanImporter.newCredential();_credential.label=row_data[0],_credential.username=row_data[2],_credential.password=row_data[row_data.length-2],_credential.url=row_data[0],_credential.description=row_data[row_data.length-1],_credential.label&&credential_list.push(_credential);var progress={percent:i/rows.length*100,loaded:i,total:rows.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){function parseEnpass(fileData){var lastProperty,matches,loginBlocks,property;loginBlocks=fileData.replaceAll("Title :","<~passman~>\nTitle :").split("<~passman~>\n").clean("");for(var regex=/(.*) : (.*)/,results=[],l=0;l<loginBlocks.length;l++){for(var loginBlock=loginBlocks[l],lrow=loginBlock.split("\n"),result={},r=0;r<lrow.length;r++){var row=lrow[r];matches=regex.exec(row),matches?(property=matches[1],result[property]=matches[2]):lastProperty&&(result[lastProperty]+="\n"+row),property&&(lastProperty=property)}results.push(result)}return results}PassmanImporter.EnPassTXT={info:{name:"EnPass text file",id:"EnPassTXT",exportSteps:['Access your Enpass Database. Select "File" > "Export" > "As Text"']}},PassmanImporter.EnPassTXT.readFile=function(file_data){var mapper={Title:"label",Username:"username",Password:"password",Email:"email",Url:"url",Note:"description"},secret_fields=["cvc","pin","security answer"];return new C_Promise(function(){for(var credential_list=[],credentials=parseEnpass(file_data),i=0;i<credentials.length;i++){var enpass_credential=credentials[i],new_credential=PassmanImporter.newCredential();for(var key in enpass_credential)if(enpass_credential.hasOwnProperty(key))if(mapper.hasOwnProperty(key)){var prop=mapper[key];new_credential[prop]=enpass_credential[key]}else if("TOTP"!==key){var isSecret=secret_fields.indexOf(key.toLowerCase())!==-1?1:0;new_credential.custom_fields.push({label:key,value:enpass_credential[key],secret:isSecret})}enpass_credential.hasOwnProperty("TOTP")&&(new_credential.otp.secret=enpass_credential.TOTP);var progress={percent:i/credentials.length*100,loaded:i,total:credentials.length};credential_list.push(new_credential),this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.keepassCsv={info:{name:"KeePass csv",id:"keepassCsv",exportSteps:["If using Keepass V1: Create an csv export with the following options enabled: http://i.imgur.com/CaeTA4d.png","With Keepass V2 or Keepass XC no configuration is needed"]}},PassmanImporter.keepassCsv.readFile=function(file_data){var p=new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=row.account,_credential.username=row.login_name,_credential.password=row.password,_credential.url=row.web_site,row.hasOwnProperty("expires")&&(row.expires=row.expires.replace('"',""),_credential.expire_time=new Date(row.expires).getTime()/1e3);var tags=row.group?[{text:row.group}]:[];if(row.hasOwnProperty("group_tree"))for(var exploded_tree=row.group_tree.split("\\\\"),t=0;t<exploded_tree.length;t++)exploded_tree[t].trim().length>0&&tags.push({text:exploded_tree[t].trim()});_credential.tags=tags,credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)});return p}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.lastpassCsv={info:{name:"LastPass csv",id:"lastpassCsv",exportSteps:["Create an csv export. Go to More options -> Advanced -> Export -> Last Pass CSV File"]}},PassmanImporter.lastpassCsv.readFile=function(file_data){return new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=PassmanImporter.htmlDecode(row.name),_credential.username=row.username,_credential.password=row.password,_credential.url=row.url,_credential.tags=row.grouping?[{text:row.grouping}]:[],_credential.description=row.extra,_credential.label&&"undefined"!==_credential.label&&credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){var steps=["Backups for the Passwords app need to be enabled on the Admin panel (they are disabled by default).","On the Passwords App, in the bottom left corner, press Settings",'Press "Download Backup"',"Confirm the export and save the file"];PassmanImporter.passwordsApp={info:{name:"Passwords App csv",id:"passwordsApp",exportSteps:steps}},PassmanImporter.passwordsApp.readFile=function(file_data){var p=new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=row.website+" - "+row.username,_credential.username=row.username,_credential.password=row.password,_credential.url=row.fulladdress,_credential.description=row.notes,credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)});return p}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.padlock={info:{name:"Padlock",id:"padlock",exportSteps:["Create a csv export. Go to Menu -> Settings -> Export Data and copy text into a .csv file"]}},PassmanImporter.padlock.readFile=function(file_data){return new C_Promise(function(){for(var rows=PassmanImporter.readCsv(file_data,!0),credential_list=[],i=0;i<rows.length;i++){var row=rows[i],_credential=PassmanImporter.newCredential(),j=0;for(var k in row)row[k]&&("name"!=k?"username"!=k?"password"!=k?"url"!=k.toLowerCase()?"e-mail"!=k.toLowerCase()&&"email"!=k.toLowerCase()?"description"!=k.toLowerCase()?(_credential.custom_fields[j]={label:k,value:row[k],secret:!0,field_type:"text"},j++):_credential.description=row[k]:_credential.email=row[k]:_credential.url=row[k]:_credential.password=row.password:_credential.username=row.username:_credential.label=row.name);_credential.label&&credential_list.push(_credential);var progress={percent:i/rows.length*100,loaded:i,total:rows.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.passmanJson={info:{name:"Passman JSON",id:"passmanJson",exportSteps:["Export the item in passman as passman json, with all fields enabled"]}},PassmanImporter.passmanJson.readFile=function(file_data){return new C_Promise(function(){for(var parsed_json=PassmanImporter.readJson(file_data),credential_list=[],i=0;i<parsed_json.length;i++){var item=parsed_json[i],_credential=PassmanImporter.newCredential();if(_credential.label=item.label,_credential.username=item.username,_credential.password=item.password,_credential.email=item.email,_credential.url=item.url,_credential.tags=item.tags,_credential.description=item.description,item.hasOwnProperty("customFields")&&item.customFields.length>0)for(var cf=0;cf<item.customFields.length;cf++)_credential.custom_fields.push({label:item.customFields[cf].label,value:item.customFields[cf].value,secret:"1"===item.customFields[cf].clicktoshow});item.hasOwnProperty("otp")&&item.otp&&(_credential.otp={issuer:item.otp.issuer,label:item.otp.label,qr_uri:{image:item.otp.qrCode,qrData:""},secret:item.otp.secret,type:item.otp.type}),_credential.label&&credential_list.push(_credential);var progress={percent:i/parsed_json.length*100,loaded:i,total:parsed_json.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.passpackCsv={info:{name:"Passpack csv",id:"passpackCsv",exportSteps:["Go to Tools -> Export. Select Comma Separated Values, All entries then continue."]}},PassmanImporter.passpackCsv.readFile=function(file_data){return new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data,!1),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=row[0],_credential.username=row[1],_credential.password=row[2],_credential.url=row[3];var tags=row[4].split(" ");tags.length>0&&(_credential.tags=tags.map(function(item){if(item)return{text:item}}).filter(function(item){return item})),_credential.description=row[5],_credential.email=row[6],_credential.label&&credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.randomData={info:{name:"Random data",id:"randomData",exportSteps:["Create's 50 random credentials for testing purposes."]}},PassmanImporter.randomData.readFile=function(){return new C_Promise(function(){var label,tags=["Social media","Hosting","Forums","Webshops","FTP","SSH","Banking","Applications","Server stuff","mysql","Wifi","Games","Certificate","Serials"],credential_list=[],_this=this,generateCredential=function(max,i,callback){if(jQuery){var url=OC.generateUrl("apps/passman/api/internal/generate_person");$.ajax({url:url,dataType:"json",success:function(data){if(data){var _credential=PassmanImporter.newCredential();label=Math.random()>=.5?data.domain:data.email_d+" - "+data.email_u,_credential.label=label,_credential.username=data.username,_credential.password=data.password,_credential.url=data.url;for(var tag_amount=Math.floor(5*Math.random()),ta=0,_tags=[];ta<tag_amount;){var item=tags[Math.floor(Math.random()*tags.length)];_tags.indexOf(item)===-1&&(_tags.push(item),ta++)}if(_credential.tags=_tags.map(function(item){if(item)return{text:item}}).filter(function(item){return item}),credential_list.push(_credential),i<max){var progress={percent:i/max*100,loaded:i,total:max};_this.call_progress(progress),generateCredential(max,i+1,callback)}else callback(credential_list)}else generateCredential(max,i,callback)}})}};generateCredential(50,1,function(credential_list){_this.call_then(credential_list)})})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.teamPassCsv={info:{name:"TeamPass csv",id:"teamPassCsv",exportSteps:["Go to Tools -> Export. Select Comma Separated Values, All entries then continue."]}},PassmanImporter.teamPassCsv.readFile=function(file_data){return new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data,!1),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=row[1],_credential.description=row[2],_credential.password=row[3],_credential.username=row[4];var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};credential_list.push(_credential),this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};if(function(window,$,PassmanImporter){PassmanImporter.zohoCsv={info:{name:"ZOHO csv",id:"zohoCsv",exportSteps:['Create an csv export. Go to Tools -> Export secrets -> Select "General CSV" and click "Export Secrets"']}},PassmanImporter.zohoCsv.readFile=function(file_data){return new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();if(_credential.label=row.secret_name,
+download(file_data,escapeHTML(file.filename),file.mimetype)};credential.hasOwnProperty("acl")?ShareService.downloadSharedFile(credential,file).then(callback):FileService.getFile(file).then(callback)},scope.showLabel=attrs.hasOwnProperty("showLabel")}}}])}(),function(){angular.module("passmanApp").directive("fileSelect",["$window",function($window){return{restrict:"A",scope:{success:"&success",error:"&error",progress:"&progress"},link:function(scope,el){scope.success=scope.success(),scope.error=scope.error(),scope.progress=scope.progress();var _currentFile,fileReader=new $window.FileReader;fileReader.onload=function(){_currentFile.data=fileReader.result,scope.success(_currentFile)},fileReader.onprogress=function(event){var percent=event.loaded/event.total*100;scope.progress&&scope.$apply(scope.progress({file_total:event.total,file_loaded:event.loaded,file_percent:percent}))},fileReader.onerror=function(){scope.error()},el.bind("change",function(e){var i,_queueTotalFileSize=0;for(i=0;i<e.target.files.length;i++)_queueTotalFileSize+=e.target.files[i].size;for(i=0;i<e.target.files.length;i++){_currentFile=e.target.files[i];var mb_limit=5;_currentFile.size>1024*mb_limit*1024&&scope.error("TO_BIG",_currentFile),fileReader.readAsDataURL(_currentFile)}})}}}])}(),function(){angular.module("passmanApp").directive("credentialIcon",["$window",function($window){return{template:'<img ng-src="{{ iconUrl }}" class="icon-image">',restrict:"E",scope:{credential:"="},link:function(scope,element){scope.credential&&scope.$watch("credential",function(){if(scope.credential.icon&&scope.credential.icon.type)scope.iconUrl="data:image/"+scope.credential.icon.type+";base64,"+scope.credential.icon.content;else if(scope.credential.url){var url=window.btoa(angular.copy(scope.credential.url)).replace("/","_");scope.iconUrl=OC.generateUrl("apps/passman/api/v2/icon/")+url+"/"+scope.credential.credential_id}},!0)}}}])}(),function(){angular.module("passmanApp").directive("iconPicker",["$window","IconService","$http","NotificationService","$translate",function($window,IconService,$http,NotificationService,$translate){return{templateUrl:"views/partials/icon-picker.html",restrict:"A",scope:{credential:"=iconPicker"},link:function(scope,element){IconService.getIcons().then(function(icons){scope.iconGroupsAll=icons,scope.iconGroups=icons}),scope.selectIcon=function(icon){scope.selectedIcon=icon},scope.jumpToGroup=function(groupName){var offset=$("#"+groupName).position();$(".iconList").scrollTop(offset.top)};var search=document.getElementById("iconPicker-Search");search.addEventListener("keypress",function(e){13===e.keyCode&&e.preventDefault()}),search.addEventListener("keyup",function(e){var g={};g.Numix=[],scope.iconGroupsAll.Numix.forEach(function(element){scope.isAllowedIcon(element)&&g.Numix.push(element)}),g["essential-collection"]=[],scope.iconGroupsAll["essential-collection"].forEach(function(element){scope.isAllowedIcon(element)&&g["essential-collection"].push(element)}),g["font-awesome"]=[],scope.iconGroupsAll["font-awesome"].forEach(function(element){scope.isAllowedIcon(element)&&g["font-awesome"].push(element)}),scope.iconGroups=g,scope.$apply()}),scope.isAllowedIcon=function(IconElement){var searchval=search.value.toLowerCase(),urlCropped=IconElement.url.substring(IconElement.url.lastIndexOf("/")+1,IconElement.url.length);return!(!urlCropped.includes(searchval)&&IconElement.pack.toLowerCase()!==searchval)},$("#iconPicker-CustomIcon").on("change",function(ev){scope.customIcon={};var f=ev.target.files[0],fr=new FileReader;fr.onload=function(ev2){scope.customIcon.data=ev2.target.result,scope.$apply()},fr.readAsDataURL(f)}),scope.deleteIcon=function(){delete scope.credential.icon.type,delete scope.credential.icon.content,delete scope.credential.icon,$("#iconPicker").dialog("close")},scope.refreshUrlIcon=function(){NotificationService.showNotification($translate.instant("use.icon.refresh.trying"),5e3);var queryUrl=OC.generateUrl("apps/passman/api/v2/geticon/"+btoa(scope.credential.url));$http.get(queryUrl).then(function(response){"undefined"!=typeof response.data.content?(scope.customIcon={},scope.customIcon.data="data:image/"+response.data.type+";base64,"+response.data.content):NotificationService.showNotification($translate.instant("use.icon.refresh.error"),5e3)})},scope.useIcon=function(){if(scope.customIcon){var data=scope.customIcon.data;scope.credential.icon.type=data.substring(data.lastIndexOf(":")+1,data.lastIndexOf(";")),scope.credential.icon.content=data.substring(data.lastIndexOf(",")+1,data.length)}else $http.get(scope.selectedIcon.url).then(function(result){var base64Data=window.btoa(result.data),mimeType="svg+xml";scope.credential.icon||(scope.credential.icon={}),scope.credential.icon.type=mimeType,scope.credential.icon.content=base64Data});$("#iconPicker").dialog("close")},$(element).click(function(){$("#iconPicker").dialog({width:800,height:380,modal:!0,dialogClass:"iconpicker-dialog",close:function(){$(this).dialog("destroy")}})})}}}])}(),function(){angular.module("passmanApp").directive("ngEnter",function(){return function(scope,element,attrs){element.bind("keydown keypress",function(event){13===event.which&&(scope.$apply(function(){scope.$eval(attrs.ngEnter)}),event.preventDefault())})}})}(),function(){angular.module("passmanApp").directive("otpGenerator",["$compile","$timeout",function($compile,$timeout){function dec2hex(s){return(s<15.5?"0":"")+Math.round(s).toString(16)}function hex2dec(s){return parseInt(s,16)}function base32tohex(base32){if(base32){var i,base32chars="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bits="",hex="";for(i=0;i<base32.length;i++){var val=base32chars.indexOf(base32.charAt(i).toUpperCase());bits+=leftpad(val.toString(2),5,"0")}for(i=0;i+4<=bits.length;i+=4){var chunk=bits.substr(i,4);hex+=parseInt(chunk,2).toString(16)}return hex.length%2?hex+"0":hex}}function leftpad(str,len,pad){return len+1>=str.length&&(str=Array(len+1-str.length).join(pad)+str),str}return{restrict:"A",template:'<span class="otp_generator"><span credential-field value="otp" secret="\'true\'"></span> <span ng-bind="timeleft"></span></span>',transclude:!1,scope:{secret:"="},replace:!0,link:function(scope){scope.otp=null,scope.timeleft=null,scope.timer=null;var updateOtp=function(){if(scope.secret){var key=base32tohex(scope.secret),epoch=Math.round((new Date).getTime()/1e3),time=leftpad(dec2hex(Math.floor(epoch/30)),16,"0"),hmacObj=new jsSHA(time,"HEX"),hmac=hmacObj.getHMAC(key,"HEX","SHA-1","HEX"),offset=hex2dec(hmac.substring(hmac.length-1)),otp=(hex2dec(hmac.substr(2*offset,8))&hex2dec("7fffffff"))+"";otp=otp.substr(otp.length-6,6),scope.otp=otp}},timer=function(){var epoch=Math.round((new Date).getTime()/1e3),countDown=30-epoch%30;epoch%30===0&&updateOtp(),scope.timeleft=countDown,scope.timer=$timeout(timer,1e3)};scope.$watch("secret",function(n){n?($timeout.cancel(scope.timer),updateOtp(),timer()):$timeout.cancel(scope.timer)},!0),scope.$on("$destroy",function(){$timeout.cancel(scope.timer)})}}}])}(),function(){angular.module("passmanApp").directive("passwordGen",function($timeout,$translate){function Arcfour(){this.j=this.i=0,this.S=[]}function ARC4init(r){var t,n,e;for(t=0;256>t;++t)this.S[t]=t;for(t=n=0;256>t;++t)n=n+this.S[t]+r[t%r.length]&255,e=this.S[t],this.S[t]=this.S[n],this.S[n]=e;this.j=this.i=0}function ARC4next(){var r;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,r=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=r,this.S[r+this.S[this.i]&255]}function prng_newstate(){return new Arcfour}function generatePassword(r,t,n,e,o,i,p,g){var _,a,s,f,d,h,u,l,c,v,w,y,m;if(void 0===r&&(r=8+get_random(0,1)),r>256&&(r=256,document.getElementById("length").value=256),i>256&&(i=256),void 0===t&&(t=!0),void 0===n&&(n=!0),void 0===e&&(e=!0),void 0===o&&(o=!1),void 0===i&&(i=0),void 0===p&&(p=!1),void 0===g&&(g=!0),_=0,a=0,s=0,g&&(_=a=s=1),f=[],n&&_>0)for(d=0;_>d;d++)f[f.length]="L";if(t&&a>0)for(d=0;a>d;d++)f[f.length]="U";if(e&&i>0)for(d=0;i>d;d++)f[f.length]="D";if(o&&s>0)for(d=0;s>d;d++)f[f.length]="S";for(;f.length<r;)f[f.length]="A";for(f.sort(function(){return 2*get_random(0,1)-1}),h="",u="abcdefghjkmnpqrstuvwxyz",p||(u+="ilo"),n&&(h+=u),l="ABCDEFGHJKMNPQRSTUVWXYZ",p||(l+="ILO"),t&&(h+=l),c="23456789",p||(c+="10"),e&&(h+=c),v="!@#$%^&*",o&&(h+=v),w="",y=0;r>y;y++){switch(f[y]){case"L":m=u;break;case"U":m=l;break;case"D":m=c;break;case"S":m=v;break;case"A":m=h}d=get_random(0,m.length-1),w+=m.charAt(d)}return w}function rng_seed_int(r){rng_pool[rng_pptr++]^=255&r,rng_pool[rng_pptr++]^=r>>8&255,rng_pool[rng_pptr++]^=r>>16&255,rng_pool[rng_pptr++]^=r>>24&255,rng_pptr>=rng_psize&&(rng_pptr-=rng_psize)}function rng_seed_time(){rng_seed_int((new Date).getTime())}function rng_get_byte(){if(null==rng_state){for(rng_seed_time(),rng_state=prng_newstate(),rng_state.init(rng_pool),rng_pptr=0;rng_pptr<rng_pool.length;++rng_pptr)rng_pool[rng_pptr]=0;rng_pptr=0}return rng_state.next()}function rng_get_bytes(r){var t;for(t=0;t<r.length;++t)r[t]=rng_get_byte()}function SecureRandom(){}function get_random(r,t){var n,e,o,i=t-r+1;for(rng_seed_time(),n=[],e=0;4>e;e++)n[e]=0;for(rng_get_bytes(n),o=0,e=0;4>e;e++)o*=256,o+=n[e];return o%=i,o+=r}var rng_psize,rng_state,rng_pool,rng_pptr,t,z,crypt_obj,num,buf,i;if(Arcfour.prototype.init=ARC4init,Arcfour.prototype.next=ARC4next,rng_psize=256,null==rng_pool){if(rng_pool=[],rng_pptr=0,"undefined"!=typeof navigator&&"Netscape"==navigator.appName&&navigator.appVersion<"5"&&"undefined"!=typeof window&&window.crypto)for(z=window.crypto.random(32),t=0;t<z.length;++t)rng_pool[rng_pptr++]=255&z.charCodeAt(t);try{if(crypt_obj=null,"undefined"!=typeof window&&void 0!==window.crypto?crypt_obj=window.crypto:"undefined"!=typeof window&&void 0!==window.msCrypto&&(crypt_obj=window.msCrypto),void 0!==crypt_obj&&"function"==typeof crypt_obj.getRandomValues&&rng_psize>rng_pptr)for(num=Math.floor((rng_psize-rng_pptr)/2)+1,buf=new Uint16Array(num),crypt_obj.getRandomValues(buf),i=0;i<buf.length;i++)t=buf[i],rng_pool[rng_pptr++]=t>>>8,rng_pool[rng_pptr++]=255&t}catch(e){}for(;rng_psize>rng_pptr;)t=Math.floor(65536*sjcl.random.randomWords(1)),rng_pool[rng_pptr++]=t>>>8,rng_pool[rng_pptr++]=255&t;rng_pptr=0,rng_seed_time()}return SecureRandom.prototype.nextBytes=rng_get_bytes,{scope:{model:"=ngModel",length:"@",placeholder:"@",settings:"=settings",callback:"&callback"},restrict:"E",replace:"true",template:'<div class=" pw-gen "><div class="input-group "><input ng-show="!passwordVisible" type="password" ng-disabled="disabled" class="form-control " ng-model="password" placeholder="{{placeholder}}"><input ng-show="passwordVisible" type="text" ng-disabled="disabled" class="form-control " ng-model="password" placeholder="{{placeholder}}"><span class="generate_pw"><div class="cell" tooltip="gen_msg" ng-click="generatePasswordStart()"><i class="fa fa-refresh"></i></div><div class="cell" tooltip="tggltxt" ng-click="toggleVisibility()"><i class="fa" ng-class="{\'fa-eye\': passwordVisible, \'fa-eye-slash\': !passwordVisible }"></i></div><div class="cell" tooltip="\'Copy password to clipboard\'"><i class="fa fa-clipboard" ngclipboard-success="onSuccess(e);" ngclipboard-error="onError(e);" ngclipboard data-clipboard-text="{{password}}"></i></div></button></div></div>',link:function(scope){scope.callback=scope.callback(),scope.$watch("model",function(){scope.password=scope.model}),scope.passwordVisible=!1,scope.toggleVisibility=function(){scope.passwordVisible=!scope.passwordVisible},scope.passwordNotNull=!1,scope.$watch("settings",function(){scope.settings&&!scope.password&&scope.settings.generateOnCreate&&scope.generatePasswordStart()}),$translate(["password.gen","password.copy","copied","toggle.visibility"]).then(function(translations){scope.tggltxt=translations["toggle.visibility"],scope.copy_msg=translations["password.copy"],scope.gen_msg=translations["password.gen"]}),scope.$watch("password",function(){scope.model=scope.password,scope.password_repeat=scope.model}),scope.onSuccess=function(e){OC.Notification.showTemporary($translate.instant("password.copied")),e.clearSelection()},scope.onError=function(){OC.Notification.showTemporary("Press Ctrl+C to copy!")},scope.progressDivShow=!1,scope.generatePasswordStart=function(){scope.progressDivShow=!0,scope.progressValue=0,scope.progressWidth={width:scope.progressValue+"%"},scope.generatePasswordProgress()},scope.generatePasswordProgress=function(){$timeout(function(){scope.progressValue<100?(scope.password=scope._generatePassword(scope.settings),scope.progressValue+=10,scope.progressWidth={width:scope.progressValue+"%"},scope.disabled=!0,scope.generatePasswordProgress()):(scope.disabled=!1,scope.callback&&scope.callback(scope.password))},10)},scope._generatePassword=function(settings){var _settings={length:12,useUppercase:!0,useLowercase:!0,useDigits:!0,useSpecialChars:!0,minimumDigitCount:3,avoidAmbiguousCharacters:!1,requireEveryCharType:!0};settings=angular.merge(_settings,settings);var password=generatePassword(settings.length,settings.useUppercase,settings.useLowercase,settings.useDigits,settings.useSpecialChars,settings.minimumDigitCount,settings.avoidAmbiguousCharacters,settings.requireEveryCharType);return password}}}})}(),function(){angular.module("passmanApp").directive("progressBar",["$translate",function($translate){return{restrict:"A",template:'<div class="progress"><div class="progress-bar" role="progressbar" aria-valuenow="{{progress}}"aria-valuemin="0" aria-valuemax="100" style="width:{{progress}}%;" use-theme><span class="sr-only">{{progress}}% {{completed_text}}</span><span ng-if="index && total" class="progress-label" use-theme type="\'color\'" color="\'true\'">{{index}} / {{total}}</span><span ng-if="!index && !total" class="progress-label" use-theme type="\'color\'" color="\'true\'">{{progress}}%</span></div></div>',scope:{progress:"=progressBar",index:"=index",total:"=total"},link:function(scope){$translate(["complete"]).then(function(translations){scope.completed_text=translations.complete})}}}])}(),function(){angular.module("passmanApp").directive("qrread",["$parse",function($parse){return{scope:!0,link:function(scope,element,attributes){var invoker=$parse(attributes.onRead);scope.imageData=null,qrcode.callback=function(result){invoker(scope,{qrdata:{qrData:result,image:scope.imageData}})},element.bind("change",function(changeEvent){var reader=new FileReader,file=changeEvent.target.files[0];reader.readAsDataURL(file),reader.onload=function(){return function(e){scope.imageData=e.target.result,qrcode.decode(e.target.result)}}(file)})}}}])}(),function(){angular.module("passmanApp").directive("tooltip",[function(){return{restrict:"A",scope:{tooltip:"=tooltip"},link:function(scope,el){scope.$watch("tooltip",function(){scope.tooltip&&(jQuery(el).attr("title",scope.tooltip),jQuery(el).tooltip(),jQuery(el).attr("title",scope.tooltip).tooltip("fixTitle"),jQuery(".tooltip-inner").text(scope.tooltip),jQuery(el).is(":visible"))})}}}])}(),function(){angular.module("passmanApp").directive("useTheme",[function(){function invertColor(hexTripletColor){var color=hexTripletColor;return color=color.substring(1),color=parseInt(color,16),color^=16777215,color=color.toString(16),color=("000000"+color).slice(-6),color="#"+color}return{restrict:"A",scope:{type:"=type",color:"=",negative:"="},link:function(scope,el){var _color=jQuery("#header").css("background-color"),_bg=_color;scope.negative&&(_bg=invertColor(_bg)),scope.type?jQuery(el).css(scope.type,_bg):jQuery(el).css("background-color",_bg),scope.color&&jQuery(el).css("color",invertColor(_color))}}}])}();var PassmanImporter={};!function(window,$,PassmanImporter){PassmanImporter.parseRow_=function(row){row=row.trim();var isQuoted=!1;return'"'===row.charAt(0)&&(row=row.substring(1),isQuoted=!0),'"'===row.charAt(row.length-2)&&(row=row.substring(0,row.length-2),isQuoted=!0),row=isQuoted===!0?row.split('","'):row.split(",")},PassmanImporter.htmlDecode=function(input){var e=document.createElement("div");return e.innerHTML=input,e.childNodes[0].nodeValue},PassmanImporter.toObject_=function(headings,row){for(var result={},i=0,ii=row.length;i<ii;i++)headings[i]?(headings[i]=headings[i].replace(",","_").toLowerCase().replace(" ","_").replace("(","").replace(")","").replace('"',""),result[headings[i]]=row[i]):result[ii]=row[i];return result},PassmanImporter.join_=function(arr,sep){for(var parts=[],i=0,ii=arr.length;i<ii;i++)arr[i]&&parts.push(arr[i]);return parts.join(sep)},PassmanImporter.newCredential=function(){var credential={credential_id:null,guid:null,vault_id:null,label:null,description:null,created:null,changed:null,tags:[],email:null,username:null,password:null,url:null,favicon:null,renew_interval:null,expire_time:0,delete_time:0,files:[],custom_fields:[],otp:{},hidden:!1,compromised:!1};return credential},PassmanImporter.readCsv=function(csv,hasHeadings){hasHeadings=void 0===hasHeadings||hasHeadings;var lines=[];return Papa.parse(csv,{complete:function(results){if(results.data)for(var headings=hasHeadings?results.data[0]:null,start=hasHeadings?1:0,i=start;i<results.data.length;i++){var _row=hasHeadings?PassmanImporter.toObject_(headings,results.data[i]):results.data[i];lines.push(_row)}}}),lines},PassmanImporter.readJson=function(string){return JSON.parse(string)}}(window,$,PassmanImporter),String.prototype.replaceAll=function(search,replacement){var target=this;return target.replace(new RegExp(search,"g"),replacement)},Array.prototype.clean=function(deleteValue){for(var i=0;i<this.length;i++)this[i]===deleteValue&&(this.splice(i,1),i--);return this};var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.clippers={info:{name:"Clipperz.is",id:"clippers",exportSteps:["Go to menu -> Export -> Download HTML + JSON. Fields will be imported as custom fields."]}},PassmanImporter.clippers.readFile=function(file_data){return new C_Promise(function(){var credential_list=[],re=/<textarea>(.*?)<\/textarea>/gi,matches=re.exec(file_data);if(matches){var raw_json=matches[0].substring(10);raw_json=PassmanImporter.htmlDecode(raw_json.slice(0,-11));for(var json_objects=PassmanImporter.readJson(raw_json),i=0;i<json_objects.length;i++){var card=json_objects[i];re=/(\w+)/gi;var tags=card.label.match(re);card.label=card.label.replace(tags.join(" "),"").trim(),tags=tags.map(function(item){return{text:item.replace("","")}});var _credential=PassmanImporter.newCredential();_credential.label=card.label,_credential.description=card.data.notes,_credential.tags=tags;for(var field in card.currentVersion.fields){var field_data=card.currentVersion.fields[field];_credential.custom_fields.push({label:field_data.label,value:field_data.value,secret:field_data.hidden===!0})}_credential.label&&credential_list.push(_credential);var progress={percent:i/json_objects.length*100,loaded:i,total:json_objects.length};this.call_progress(progress)}}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.dashLaneCsv={info:{name:"Dashlane 4 csv",id:"dashLaneCsv",exportSteps:["Create an csv export. Go to File -> export -> Unsecured archive (readable) in CSV format"]}},PassmanImporter.dashLaneCsv.readFile=function(file_data){return new C_Promise(function(){for(var rows=file_data.split("\n"),credential_list=[],i=0;i<rows.length;i++){var row=rows[i],row_data=row.split('","');'"'===row_data[0].charAt(0)&&(row_data[0]=row_data[0].substring(1)),'"'===row_data[row_data.length-1].toString().charAt(row_data[row_data.length-1].length-1)&&(row_data[row_data.length-1]=row_data[row_data.length-1].substring(0,row_data[row_data.length-1].length-1));var _credential=PassmanImporter.newCredential();_credential.label=row_data[0],_credential.username=row_data[2],_credential.password=row_data[row_data.length-2],_credential.url=row_data[0],_credential.description=row_data[row_data.length-1],_credential.label&&credential_list.push(_credential);var progress={percent:i/rows.length*100,loaded:i,total:rows.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){function parseEnpass(fileData){var lastProperty,matches,loginBlocks,property;loginBlocks=fileData.replaceAll("Title :","<~passman~>\nTitle :").split("<~passman~>\n").clean("");for(var regex=/(.*) : (.*)/,results=[],l=0;l<loginBlocks.length;l++){for(var loginBlock=loginBlocks[l],lrow=loginBlock.split("\n"),result={},r=0;r<lrow.length;r++){var row=lrow[r];matches=regex.exec(row),matches?(property=matches[1],result[property]=matches[2]):lastProperty&&(result[lastProperty]+="\n"+row),property&&(lastProperty=property)}results.push(result)}return results}PassmanImporter.EnPassTXT={info:{name:"EnPass text file",id:"EnPassTXT",exportSteps:['Access your Enpass Database. Select "File" > "Export" > "As Text"']}},PassmanImporter.EnPassTXT.readFile=function(file_data){var mapper={Title:"label",Username:"username",Password:"password",Email:"email",Url:"url",Note:"description"},secret_fields=["cvc","pin","security answer"];return new C_Promise(function(){for(var credential_list=[],credentials=parseEnpass(file_data),i=0;i<credentials.length;i++){var enpass_credential=credentials[i],new_credential=PassmanImporter.newCredential();for(var key in enpass_credential)if(enpass_credential.hasOwnProperty(key))if(mapper.hasOwnProperty(key)){var prop=mapper[key];new_credential[prop]=enpass_credential[key]}else if("TOTP"!==key){var isSecret=secret_fields.indexOf(key.toLowerCase())!==-1?1:0;new_credential.custom_fields.push({label:key,value:enpass_credential[key],secret:isSecret})}enpass_credential.hasOwnProperty("TOTP")&&(new_credential.otp.secret=enpass_credential.TOTP);var progress={percent:i/credentials.length*100,loaded:i,total:credentials.length};credential_list.push(new_credential),this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.keepassCsv={info:{name:"KeePass csv",id:"keepassCsv",exportSteps:["If using Keepass V1: Create an csv export with the following options enabled: http://i.imgur.com/CaeTA4d.png","With Keepass V2 or Keepass XC no configuration is needed"]}},PassmanImporter.keepassCsv.readFile=function(file_data){var p=new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=row.account,_credential.username=row.login_name,_credential.password=row.password,_credential.url=row.web_site,row.hasOwnProperty("expires")&&(row.expires=row.expires.replace('"',""),_credential.expire_time=new Date(row.expires).getTime()/1e3);var tags=row.group?[{text:row.group}]:[];if(row.hasOwnProperty("group_tree"))for(var exploded_tree=row.group_tree.split("\\\\"),t=0;t<exploded_tree.length;t++)exploded_tree[t].trim().length>0&&tags.push({text:exploded_tree[t].trim()});_credential.tags=tags,credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)});return p}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.lastpassCsv={info:{name:"LastPass csv",id:"lastpassCsv",exportSteps:["Create an csv export. Go to More options -> Advanced -> Export -> Last Pass CSV File"]}},PassmanImporter.lastpassCsv.readFile=function(file_data){return new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=PassmanImporter.htmlDecode(row.name),_credential.username=row.username,_credential.password=row.password,_credential.url=row.url,_credential.tags=row.grouping?[{text:row.grouping}]:[],_credential.description=row.extra,_credential.label&&"undefined"!==_credential.label&&credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){var steps=["Backups for the Passwords app need to be enabled on the Admin panel (they are disabled by default).","On the Passwords App, in the bottom left corner, press Settings",'Press "Download Backup"',"Confirm the export and save the file"];PassmanImporter.passwordsApp={info:{name:"Passwords App csv",id:"passwordsApp",exportSteps:steps}},PassmanImporter.passwordsApp.readFile=function(file_data){var p=new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=row.website+" - "+row.username,_credential.username=row.username,_credential.password=row.password,_credential.url=row.fulladdress,_credential.description=row.notes,credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)});return p}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.padlock={info:{name:"Padlock",id:"padlock",exportSteps:["Create a csv export. Go to Menu -> Settings -> Export Data and copy text into a .csv file"]}},PassmanImporter.padlock.readFile=function(file_data){return new C_Promise(function(){for(var rows=PassmanImporter.readCsv(file_data,!0),credential_list=[],i=0;i<rows.length;i++){var row=rows[i],_credential=PassmanImporter.newCredential(),j=0;for(var k in row)row[k]&&("name"!=k?"username"!=k?"password"!=k?"url"!=k.toLowerCase()?"e-mail"!=k.toLowerCase()&&"email"!=k.toLowerCase()?"description"!=k.toLowerCase()?(_credential.custom_fields[j]={label:k,value:row[k],secret:!0,field_type:"text"},j++):_credential.description=row[k]:_credential.email=row[k]:_credential.url=row[k]:_credential.password=row.password:_credential.username=row.username:_credential.label=row.name);_credential.label&&credential_list.push(_credential);var progress={percent:i/rows.length*100,loaded:i,total:rows.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.passmanJson={info:{name:"Passman JSON",id:"passmanJson",exportSteps:["Export the item in passman as passman json, with all fields enabled"]}},PassmanImporter.passmanJson.readFile=function(file_data){return new C_Promise(function(){for(var parsed_json=PassmanImporter.readJson(file_data),credential_list=[],i=0;i<parsed_json.length;i++){var item=parsed_json[i],_credential=PassmanImporter.newCredential();if(_credential.label=item.label,_credential.username=item.username,_credential.password=item.password,_credential.email=item.email,_credential.url=item.url,_credential.tags=item.tags,_credential.description=item.description,item.hasOwnProperty("customFields")&&item.customFields.length>0)for(var cf=0;cf<item.customFields.length;cf++)_credential.custom_fields.push({label:item.customFields[cf].label,value:item.customFields[cf].value,secret:"1"===item.customFields[cf].clicktoshow});item.hasOwnProperty("otp")&&item.otp&&(_credential.otp={issuer:item.otp.issuer,label:item.otp.label,qr_uri:{image:item.otp.qrCode,qrData:""},secret:item.otp.secret,type:item.otp.type}),_credential.label&&credential_list.push(_credential);var progress={percent:i/parsed_json.length*100,loaded:i,total:parsed_json.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.passpackCsv={info:{name:"Passpack csv",id:"passpackCsv",exportSteps:["Go to Tools -> Export. Select Comma Separated Values, All entries then continue."]}},PassmanImporter.passpackCsv.readFile=function(file_data){return new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data,!1),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=row[0],_credential.username=row[1],_credential.password=row[2],_credential.url=row[3];var tags=row[4].split(" ");tags.length>0&&(_credential.tags=tags.map(function(item){if(item)return{text:item}}).filter(function(item){return item})),_credential.description=row[5],_credential.email=row[6],_credential.label&&credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.randomData={info:{name:"Random data",id:"randomData",exportSteps:["Create's 50 random credentials for testing purposes."]}},PassmanImporter.randomData.readFile=function(){return new C_Promise(function(){var label,tags=["Social media","Hosting","Forums","Webshops","FTP","SSH","Banking","Applications","Server stuff","mysql","Wifi","Games","Certificate","Serials"],credential_list=[],_this=this,generateCredential=function(max,i,callback){if(jQuery){var url=OC.generateUrl("apps/passman/api/internal/generate_person");$.ajax({url:url,dataType:"json",success:function(data){if(data){var _credential=PassmanImporter.newCredential();label=Math.random()>=.5?data.domain:data.email_d+" - "+data.email_u,_credential.label=label,_credential.username=data.username,_credential.password=data.password,_credential.url=data.url;for(var tag_amount=Math.floor(5*Math.random()),ta=0,_tags=[];ta<tag_amount;){var item=tags[Math.floor(Math.random()*tags.length)];_tags.indexOf(item)===-1&&(_tags.push(item),ta++)}if(_credential.tags=_tags.map(function(item){if(item)return{text:item}}).filter(function(item){return item}),credential_list.push(_credential),i<max){var progress={percent:i/max*100,loaded:i,total:max};_this.call_progress(progress),generateCredential(max,i+1,callback)}else callback(credential_list)}else generateCredential(max,i,callback)}})}};generateCredential(50,1,function(credential_list){_this.call_then(credential_list)})})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.teamPassCsv={info:{name:"TeamPass csv",id:"teamPassCsv",exportSteps:["Go to Tools -> Export. Select Comma Separated Values, All entries then continue."]}},PassmanImporter.teamPassCsv.readFile=function(file_data){return new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data,!1),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=row[1],_credential.description=row[2],_credential.password=row[3],_credential.username=row[4];var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};credential_list.push(_credential),this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};if(function(window,$,PassmanImporter){PassmanImporter.zohoCsv={info:{name:"ZOHO csv",id:"zohoCsv",exportSteps:['Create an csv export. Go to Tools -> Export secrets -> Select "General CSV" and click "Export Secrets"']}},PassmanImporter.zohoCsv.readFile=function(file_data){return new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();if(_credential.label=row.secret_name,
_credential.url=row.secret_url,_credential.description=row.notes,row.hasOwnProperty("secretdata"))for(var rows=row.secretdata.split("\n"),r=0;r<rows.length;r++){var cells=rows[r].split(":"),key=cells[0],value=cells.slice(1).join(":");key&&value&&_credential.custom_fields.push({label:key,value:value,secret:!1})}""!==_credential.label&&credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter),!window.PassmanExporter)var PassmanExporter={getCredentialsWithFiles:function(credentials,FileService,EncryptService){var t={cred:credentials,FS:FileService,ES:EncryptService};return new C_Promise(function(){var _this=this.parent,credentials=_this.cred;this.parent.total=0,this.parent.finished=0,this.parent.fileGUID_cred=[],this.parent.files=[],this.parent.step=function(file){this.parent.finished++,this.call_progress({total:this.parent.total,finished:this.parent.finished});var dta=this.parent.fileGUID_cred[file.guid];file.filename=this.parent.ES.decryptString(file.filename,this.parent.cred[dta.cred_pos].vault_key),file.file_data=this.parent.ES.decryptString(file.file_data,this.parent.cred[dta.cred_pos].vault_key),"files"===dta.on?this.parent.cred[dta.cred_pos][dta.on][dta.at]=file:this.parent.cred[dta.cred_pos][dta.on][dta.at].value=file,this.parent.total===this.parent.finished&&this.call_then(this.parent.cred)}.bind(this);for(var i=0;i<credentials.length;i++){var item=credentials[i];for(c=0;c<item.custom_fields.length;c++){var cf=item.custom_fields[c];"file"===cf.field_type&&(this.parent.total++,this.parent.fileGUID_cred[cf.value.guid]={cred_pos:i,on:"custom_fields",at:c},this.parent.FS.getFile(cf.value).then(function(data){this.parent.step(data)}.bind(this)))}for(var c=0;c<item.files.length;c++)this.parent.total++,this.parent.fileGUID_cred[item.files[c].guid]={cred_pos:i,on:"files",at:c},this.parent.FS.getFile(item.files[c]).then(function(data){this.parent.step(data)}.bind(this))}0===this.parent.total&&this.call_then(this.parent.cred)},t)}};PassmanExporter.csv={info:{name:"CSV",id:"csv",description:"Export credentials as a csv file."}},PassmanExporter.csv.export=function(credentials,FileService,EncryptService){return new C_Promise(function(){PassmanExporter.getCredentialsWithFiles(credentials,FileService,EncryptService).then(function(){for(var headers=["label","username","password","email","description","tags","url","custom_fields","files"],file_data='"'+headers.join('","')+'"\n',i=0;i<credentials.length;i++){for(var _credential=credentials[i],row_data=[],h=0;h<headers.length;h++){var field=headers[h];if("tags"===field){for(var _tags=[],t=0;t<_credential[field].length;t++)_tags.push(_credential[field][t].text);var tag_data="["+_tags.join(",")+"]";row_data.push('"'+tag_data.replaceAll('"','""')+'"')}else if("custom_fields"==field||"files"==field){var _fields=JSON.stringify(_credential[field]);_fields=_fields.replaceAll('"','""'),row_data.push('"'+_fields+'"')}else{var data=_credential[field],value=null===data?"":data.replaceAll('"','""');row_data.push('"'+value+'"')}}var progress={percent:i/credentials.length*100,loaded:i,total:credentials.length};this.call_progress(progress),file_data+=row_data.join(",")+"\n"}this.call_then(),download(file_data,"passman-export.csv","text/csv")}.bind(this)).progress(function(){})})},PassmanExporter.json={info:{name:"JSON",id:"json",description:"Export credentials as a JSON file."}},PassmanExporter.json.export=function(credentials,FileService,EncryptService){return new C_Promise(function(){PassmanExporter.getCredentialsWithFiles(credentials,FileService,EncryptService).then(function(){for(var _output=[],i=0;i<credentials.length;i++){var _credential=angular.copy(credentials[i]);delete _credential.vault_key,delete _credential.vault_id,delete _credential.shared_key,_output.push(_credential);var progress={percent:i/credentials.length*100,loaded:i,total:credentials.length};this.call_progress(progress)}var file_data=JSON.stringify(_output);this.call_then(),download(file_data,"passman-export.json")}.bind(this)).progress(function(){})})},function(){angular.module("passmanApp").controller("BookmarkletCtrl",["$scope","$rootScope","$location","VaultService","CredentialService","SettingsService","NotificationService","EncryptService","TagService","FileService","ShareService","$translate",function($scope,$rootScope,$location,VaultService,CredentialService,SettingsService,NotificationService,EncryptService,TagService,FileService,ShareService,$translate){if($scope.active_vault=!1,$scope.http_warning_hidden=!0,"http"===$location.$$protocol&&($scope.using_http=!0),$scope.logout=function(){$rootScope.override_default_vault=!0,$scope.active_vault=!1},SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));VaultService.getVault(_vault).then(function(vault){vault.vaultKey=angular.copy(SettingsService.getSetting("defaultVaultPass")),VaultService.setActiveVault(vault),$scope.active_vault=vault,$scope.pwSettings=VaultService.getVaultSetting("pwSettings",{length:12,useUppercase:!0,useLowercase:!0,useDigits:!0,useSpecialChars:!0,minimumDigitCount:3,avoidAmbiguousCharacters:!1,requireEveryCharType:!0,generateOnCreate:!0})})}VaultService.getVaults().then(function(vaults){$scope.vaults=vaults}),$scope.default_vault=!1,$scope.remember_vault_password=!1,$scope.list_selected_vault=!1,$scope.toggleDefaultVault=function(){$scope.default_vault=!$scope.default_vault,$scope.default_vault===!0?SettingsService.setSetting("defaultVault",$scope.list_selected_vault):SettingsService.setSetting("defaultVault",null)},$scope.toggleRememberPassword=function(){$scope.remember_vault_password=!$scope.remember_vault_password,$scope.remember_vault_password&&(SettingsService.setSetting("defaultVault",$scope.list_selected_vault),$scope.default_vault=!0),$scope.remember_vault_password!==!0&&SettingsService.setSetting("defaultVault",null)},$scope.clearState=function(){$scope.list_selected_vault=!1,$scope.creating_vault=!1,$scope.error=!1},$scope.selectVault=function(vault){$scope.list_selected_vault=vault},$scope.sharing_keys={},$scope.newVault=function(){$scope.creating_vault=!0;var key_size=1024;ShareService.generateRSAKeys(key_size).progress(function(progress){var p=progress>0?2:1,msg=$translate.instant("generating.sharing.keys");msg=msg.replace("%step",p),$scope.creating_keys=msg,$scope.$digest()}).then(function(kp){var pem=ShareService.rsaKeyPairToPEM(kp);$scope.creating_keys=!1,$scope.sharing_keys.private_sharing_key=pem.privateKey,$scope.sharing_keys.public_sharing_key=pem.publicKey,$scope.$digest()})};var _loginToVault=function(vault,vault_key){var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),delete _vault.credentials,$scope.active_vault=_vault};$scope.vaultDecryptionKey="",$scope.loginToVault=function(vault,vault_key){$scope.error=!1;var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),VaultService.setActiveVault(_vault);try{EncryptService.decryptString(vault.challenge_password),$scope.remember_vault_password&&SettingsService.setSetting("defaultVaultPass",vault_key),_loginToVault(vault,vault_key)}catch(e){$scope.error=$translate.instant("invalid.vault.key")}},$scope.createVault=function(vault_name,vault_key,vault_key2){return vault_key!==vault_key2?void($scope.error=$translate.instant("password.do.not.match")):void VaultService.createVault(vault_name).then(function(vault){$scope.vaults.push(vault);var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),VaultService.setActiveVault(_vault);var test_credential=CredentialService.newCredential();test_credential.label="Test key for vault "+vault_name,test_credential.hidden=!0,test_credential.vault_id=vault.vault_id,test_credential.password="lorum ipsum",CredentialService.createCredential(test_credential).then(function(){_vault.public_sharing_key=angular.copy($scope.sharing_keys.public_sharing_key),_vault.private_sharing_key=EncryptService.encryptString(angular.copy($scope.sharing_keys.private_sharing_key)),VaultService.updateSharingKeys(_vault).then(function(){_loginToVault(vault,vault_key)})})})},$scope.storedCredential=CredentialService.newCredential();var QueryString=function(){for(var query_string={},query=window.location.search.substring(1),vars=query.split("&"),i=0;i<vars.length;i++){var pair=vars[i].split("=");if("undefined"==typeof query_string[pair[0]])query_string[pair[0]]=decodeURIComponent(pair[1]);else if("string"==typeof query_string[pair[0]]){var arr=[query_string[pair[0]],decodeURIComponent(pair[1])];query_string[pair[0]]=arr}else query_string[pair[0]].push(decodeURIComponent(pair[1]))}return query_string}(),query_string=QueryString;$scope.storedCredential.label=query_string.title,$scope.storedCredential.url=query_string.url,$scope.setHttpWarning=function(state){$scope.http_warning_hidden=state},$translate(["general","password","custom.fields","files","otp"]).then(function(translations){$scope.tabs=[{title:translations.general,url:"views/partials/forms/edit_credential/basics.html",color:"blue"},{title:translations.password,url:"views/partials/forms/edit_credential/password.html",color:"green"},{title:translations["custom.fields"],url:"views/partials/forms/edit_credential/custom_fields.html",color:"orange"},{title:translations.files,url:"views/partials/forms/edit_credential/files.html",color:"yellow"},{title:translations.otp,url:"views/partials/forms/edit_credential/otp.html",color:"purple"}],$scope.currentTab=$scope.tabs[0]}),$scope.getTags=function($query){return TagService.searchTag($query)},$scope.onClickTab=function(tab){$scope.currentTab=tab},$scope.isActiveTab=function(tab){return tab.url===$scope.currentTab.url},$scope.pwGenerated=function(pass){$scope.storedCredential.password_repeat=pass};var _customField={label:"",value:"",secret:!1,field_type:"text"};$scope.selected_field_type="text",$scope.new_custom_field=angular.copy(_customField),$scope.addCustomField=function(){var _field=angular.copy($scope.new_custom_field);if(_field.label||NotificationService.showNotification($translate.instant("error.no.label"),3e3),_field.value||NotificationService.showNotification($translate.instant("error.no.value"),3e3),_field.label&&_field.value)if($scope.selected_field_type="text",_field.secret=angular.copy("password"===$scope.selected_field_type),_field.field_type=angular.copy($scope.selected_field_type),"file"===_field.field_type){var _file=$scope.new_custom_field.value;FileService.uploadFile(_file).then(function(result){delete result.file_data,result.filename=EncryptService.decryptString(result.filename),_field.value=result,$scope.storedCredential.custom_fields.push(_field),$scope.new_custom_field=angular.copy(_customField)})}else $scope.storedCredential.custom_fields.push(_field),$scope.new_custom_field=angular.copy(_customField)},$scope.addFileToCustomField=function(file){var _file={filename:file.name,size:file.size,mimetype:file.type,data:file.data};$scope.new_custom_field.value=_file,$scope.$digest()},$scope.deleteCustomField=function(field){field.hasOwnProperty("field_type")&&"file"===field.field_type&&FileService.deleteFile(field.value);var idx=$scope.storedCredential.custom_fields.indexOf(field);$scope.storedCredential.custom_fields.splice(idx,1)},$scope.new_file={name:"",data:null},$scope.deleteFile=function(file){var idx=$scope.storedCredential.files.indexOf(file);FileService.deleteFile(file).then(function(){$scope.storedCredential.files.splice(idx,1)})},$scope.fileLoaded=function(file){var _file={filename:file.name,size:file.size,mimetype:file.type,data:file.data};FileService.uploadFile(_file).then(function(result){delete result.file_data,result.filename=EncryptService.decryptString(result.filename),$scope.storedCredential.files.push(result)}),$scope.$digest()},$scope.fileLoadError=function(error){return error},$scope.selected_file="",$scope.fileprogress=[],$scope.fileSelectProgress=function(progress){progress&&($scope.fileprogress=progress,$scope.$digest())},$scope.renewIntervalValue=0,$scope.renewIntervalModifier="0",$scope.updateInterval=function(renewIntervalValue,renewIntervalModifier){var value=parseInt(renewIntervalValue),modifier=parseInt(renewIntervalModifier);value&&modifier&&($scope.storedCredential.renew_interval=value*modifier)},$scope.parseQR=function(QRCode){var parsedQR,qrInfo,re=/otpauth:\/\/(totp|hotp)\/(.*)\?(secret|issuer)=(.*)&(issuer|secret)=(.*)/;qrInfo=[],parsedQR=QRCode.qrData.match(re),parsedQR&&(qrInfo={type:parsedQR[1],label:decodeURIComponent(parsedQR[2]),qr_uri:QRCode}),qrInfo[parsedQR[3]]=parsedQR[4],qrInfo[parsedQR[5]]=parsedQR[6],$scope.storedCredential.otp=qrInfo,$scope.$digest()},$scope.saveCredential=function(){delete $scope.storedCredential.password_repeat,$scope.storedCredential.credential_id||($scope.storedCredential.vault_id=$scope.active_vault.vault_id,CredentialService.createCredential($scope.storedCredential).then(function(){NotificationService.showNotification($translate.instant("credential.created"),5e3)}))}}])}(),function(){angular.module("passmanApp").controller("CredentialCtrl",["$scope","VaultService","SettingsService","$location","CredentialService","$rootScope","FileService","EncryptService","TagService","$timeout","NotificationService","CacheService","ShareService","SharingACL","$interval","$filter","$routeParams","$sce","$translate",function($scope,VaultService,SettingsService,$location,CredentialService,$rootScope,FileService,EncryptService,TagService,$timeout,NotificationService,CacheService,ShareService,SharingACL,$interval,$filter,$routeParams,$sce,$translate){if($scope.active_vault=VaultService.getActiveVault(),SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){if(SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));_vault.vaultKey=angular.copy(SettingsService.getSetting("defaultVaultPass")),VaultService.setActiveVault(_vault),$scope.active_vault=_vault}}else $scope.active_vault||$location.path("/");$scope.show_spinner=!0;var fetchCredentials=function(){VaultService.getVault({guid:$routeParams.vault_id}).then(function(vault){var vaultKey=angular.copy($scope.active_vault.vaultKey),_credentials=angular.copy(vault.credentials);vault.credentials=[],$scope.active_vault=vault,$scope.active_vault.vaultKey=vaultKey,$rootScope.vaultCache||($rootScope.vaultCache=[]),VaultService.setActiveVault($scope.active_vault);for(var i=0;i<_credentials.length;i++){var _credential=_credentials[i];try{if(_credential.shared_key){var enc_key=EncryptService.decryptString(_credential.shared_key);_credential=ShareService.decryptSharedCredential(angular.copy(_credential),enc_key)}else _credential=CredentialService.decryptCredential(angular.copy(_credential));_credential.tags_raw=_credential.tags}catch(e){NotificationService.showNotification($translate.instant("error.decrypt"),5e3)}_credentials[i]=_credential}ShareService.getCredendialsSharedWithUs(vault.guid).then(function(shared_credentials){for(var c=0;c<shared_credentials.length;c++){var _shared_credential_data,_shared_credential=shared_credentials[c],decrypted_key=EncryptService.decryptString(_shared_credential.shared_key);try{_shared_credential_data=ShareService.decryptSharedCredential(_shared_credential.credential_data,decrypted_key)}catch(e){}_shared_credential_data&&(delete _shared_credential.credential_data,_shared_credential_data.acl=_shared_credential,_shared_credential_data.acl.permissions=new SharingACL(_shared_credential_data.acl.permissions),_shared_credential_data.tags_raw=_shared_credential_data.tags,_credentials.push(_shared_credential_data))}if(angular.merge($scope.active_vault.credentials,_credentials),$scope.show_spinner=!1,$rootScope.$broadcast("credentials_loaded"),$rootScope.vaultCache[$scope.active_vault.guid]=angular.copy($scope.active_vault),!vault.private_sharing_key){var key_size=1024;ShareService.generateRSAKeys(key_size).then(function(kp){var pem=ShareService.rsaKeyPairToPEM(kp);$scope.creating_keys=!1,$scope.active_vault.private_sharing_key=pem.privateKey,$scope.active_vault.public_sharing_key=pem.publicKey,$scope.$digest(),VaultService.updateSharingKeys($scope.active_vault)})}})})},getPendingShareRequests=function(){ShareService.getPendingRequests().then(function(shareRequests){shareRequests.length>0&&($scope.incoming_share_requests=shareRequests,jQuery(".share_popup").dialog({width:800,modal:!0,dialogClass:"shareincoming-dialog"}))})},refresh_data_interval=null;$scope.active_vault&&($scope.$parent.selectedVault=!0,$rootScope.vaultCache&&$rootScope.vaultCache[$scope.active_vault.guid]?($scope.active_vault=$rootScope.vaultCache[$scope.active_vault.guid],$rootScope.$broadcast("credentials_loaded"),$scope.show_spinner=!1):fetchCredentials(),getPendingShareRequests(),refresh_data_interval=$interval(function(){fetchCredentials(),getPendingShareRequests()},3e5)),$scope.$on("$destroy",function(){$interval.cancel(refresh_data_interval)}),$scope.permissions=new SharingACL(0),$scope.hasPermission=function(acl,permission){if(acl){var tmp=new SharingACL(acl.permission);return tmp.hasPermission(permission)}return!0},$scope.acceptShareRequest=function(share_request){var crypted_shared_key=share_request.shared_key,private_key=EncryptService.decryptString(VaultService.getActiveVault().private_sharing_key);private_key=ShareService.rsaPrivateKeyFromPEM(private_key),crypted_shared_key=private_key.decrypt(forge.util.decode64(crypted_shared_key)),crypted_shared_key=EncryptService.encryptString(crypted_shared_key),ShareService.saveSharingRequest(share_request,crypted_shared_key).then(function(){var idx=$scope.incoming_share_requests.indexOf(share_request);$scope.incoming_share_requests.splice(idx,1);for(var active_share_requests=!1,v=0;v<$scope.incoming_share_requests.length;v++)$scope.incoming_share_requests[v].target_vault_id===$scope.active_vault.vault_id&&(active_share_requests=!0);active_share_requests===!1&&(jQuery(".ui-dialog").remove(),fetchCredentials())})},$scope.declineShareRequest=function(share_request){ShareService.declineSharingRequest(share_request).then(function(){var idx=$scope.incoming_share_requests.indexOf(share_request);$scope.incoming_share_requests.splice(idx,1);for(var active_share_requests=!1,v=0;v<$scope.incoming_share_requests.length;v++)$scope.incoming_share_requests[v].target_vault_id===$scope.active_vault.vault_id&&(active_share_requests=!0);active_share_requests===!1&&(jQuery(".ui-dialog").remove(),fetchCredentials())})};var settingsLoaded=function(){$scope.settings=SettingsService.getSettings()};SettingsService.getSetting("settings_loaded")?settingsLoaded():$rootScope.$on("settings_loaded",function(){settingsLoaded()}),$scope.addCredential=function(){var new_credential=CredentialService.newCredential(),enc_c=CredentialService.encryptCredential(new_credential);SettingsService.setSetting("edit_credential",enc_c),$location.path("/vault/"+$scope.active_vault.guid+"/new")},$scope.editCredential=function(credential){var _credential=angular.copy(credential);$rootScope.$emit("app_menu",!1),SettingsService.setSetting("edit_credential",CredentialService.encryptCredential(_credential)),$location.path("/vault/"+$scope.active_vault.guid+"/edit/"+_credential.guid)},$scope.getRevisions=function(credential){var _credential=angular.copy(credential);$rootScope.$emit("app_menu",!1),SettingsService.setSetting("revision_credential",CredentialService.encryptCredential(_credential)),$location.path("/vault/"+$scope.active_vault.guid+"/"+_credential.guid+"/revisions")},$scope.shareCredential=function(credential){var _credential=angular.copy(credential);$rootScope.$emit("app_menu",!1),SettingsService.setSetting("share_credential",CredentialService.encryptCredential(_credential)),$location.path("/vault/"+$scope.active_vault.guid+"/"+_credential.guid+"/share")};var notification;$scope.deleteCredential=function(credential){var _credential=angular.copy(credential);try{_credential=CredentialService.decryptCredential(_credential)}catch(e){}_credential.delete_time=(new Date).getTime()/1e3;for(var i=0;i<$scope.active_vault.credentials.length;i++)$scope.active_vault.credentials[i].credential_id===credential.credential_id&&($scope.active_vault.credentials[i].delete_time=_credential.delete_time);$scope.closeSelected(),notification&&NotificationService.hideNotification(notification);var key=CredentialService.getSharedKeyFromCredential(_credential);CredentialService.updateCredential(_credential,!1,key).then(function(){notification=NotificationService.showNotification($translate.instant("credential.deleted"),5e3)})},$scope.recoverCredential=function(credential){var _credential=angular.copy(credential);try{_credential=CredentialService.decryptCredential(_credential)}catch(e){}for(var i=0;i<$scope.active_vault.credentials.length;i++)$scope.active_vault.credentials[i].credential_id===credential.credential_id&&($scope.active_vault.credentials[i].delete_time=0);_credential.delete_time=0,$scope.closeSelected(),notification&&NotificationService.hideNotification(notification);var key=CredentialService.getSharedKeyFromCredential(_credential);CredentialService.updateCredential(_credential,!1,key).then(function(){NotificationService.showNotification($translate.instant("credential.recovered"),5e3)})},$scope.destroyCredential=function(credential){var _credential=angular.copy(credential);CredentialService.destroyCredential(_credential.guid).then(function(){for(var i=0;i<$scope.active_vault.credentials.length;i++)if($scope.active_vault.credentials[i].credential_id===credential.credential_id){$scope.active_vault.credentials.splice(i,1),NotificationService.showNotification($translate.instant("credential.destroyed"),5e3);break}})},$scope.view_mode="list",$scope.switchViewMode=function(viewMode){$scope.view_mode=viewMode},$rootScope.$on("push_decrypted_credential_to_list",function(){$rootScope.$broadcast("credentials_loaded")}),$scope.filterOptions={filterText:"",fields:["label","username","email","custom_fields"]},$scope.$on("nc_searchbox",function(event,searchterm,fields){$scope.filterOptions.filterText=searchterm,fields&&($scope.filterOptions.fields=fields)}),$scope.filtered_credentials=[],$scope.$watch("[selectedtags, filterOptions, delete_time, active_vault.credentials]",function(){if($scope.active_vault&&$scope.active_vault.credentials){var credentials=angular.copy($scope.active_vault.credentials),filtered_credentials=$filter("credentialSearch")(credentials,$scope.filterOptions);filtered_credentials=$filter("tagFilter")(filtered_credentials,$scope.selectedtags),filtered_credentials=$filter("filter")(filtered_credentials,{hidden:0}),$scope.filtered_credentials=filtered_credentials,$scope.filterOptions.selectedtags=angular.copy($scope.selectedtags);for(var i=0;i<$scope.active_vault.credentials.length;i++){var _credential=$scope.active_vault.credentials[i];_credential.tags&&TagService.addTags(_credential.tags)}}},!0),$scope.no_credentials_label=[],$scope.no_credentials_label.all=!0,$scope.no_credentials_label.s_good=!1,$scope.no_credentials_label.s_medium=!1,$scope.no_credentials_label.s_low=!1,$scope.no_credentials_label.expired=!1,$scope.disableAllLabels=function(){$scope.no_credentials_label.all=!1,$scope.no_credentials_label.s_good=!1,$scope.no_credentials_label.s_medium=!1,$scope.no_credentials_label.s_low=!1,$scope.no_credentials_label.expired=!1},$scope.$on("filterSpecial",function(event,args){switch($scope.disableAllLabels(),args){case"strength_good":$scope.filterStrength(3,1e3),$scope.no_credentials_label.s_good=!0;break;case"strength_medium":$scope.filterStrength(2,3),$scope.no_credentials_label.s_medium=!0;break;case"strength_low":$scope.filterStrength(0,1),$scope.no_credentials_label.s_low=!0;break;case"expired":$scope.filterExpired(),$scope.no_credentials_label.expired=!0;break;case"all":$scope.filterAll(),$scope.no_credentials_label.all=!0}}),$scope.getListSizes=function(){for(var l=$scope.filtered_credentials,deleted=0,i=0;i<l.length;i++)l[i].delete_time>0&&deleted++;var result=[];return result.listsize=l.length,result.listsize_wout_deleted=l.length-deleted,result.listsize_deleted=deleted,result},$scope.filterAll=function(){$scope.selectedtags=[],$scope.filterOptions.filterText="";for(var creds_filtered=[],i=0;i<$scope.active_vault.credentials.length;i++)0===$scope.active_vault.credentials[i].delete_time&&creds_filtered.push($scope.active_vault.credentials[i]);$scope.filtered_credentials=$scope.filterHidden(creds_filtered)},$scope.filterStrength=function(strength_min,strength_max){for(var initialCredentials=$scope.active_vault.credentials,postFiltered=[],i=0;i<initialCredentials.length;i++){var _credential=initialCredentials[i],zxcvbn_result=zxcvbn(_credential.password);zxcvbn_result.score>=strength_min&&zxcvbn_result.score<=strength_max&&postFiltered.push(initialCredentials[i])}$scope.filtered_credentials=$scope.filterHidden(postFiltered)},$scope.filterExpired=function(){for(var initialCredentials=$scope.active_vault.credentials,now=Date.now(),postFiltered=[],i=0;i<initialCredentials.length;i++){var _credential=initialCredentials[i];0!==_credential.expire_time&&_credential.expire_time<=now&&postFiltered.push(initialCredentials[i])}$scope.filtered_credentials=$scope.filterHidden(postFiltered)},$scope.filterHidden=function(list){for(var list_without_hidden=[],i=0;i<list.length;i++)1!==list[i].hidden&&list_without_hidden.push(list[i]);return list_without_hidden},$scope.selectedtags=[];var to;$rootScope.$on("selected_tags_updated",function(evt,_sTags){for(var _selectedTags=[],x=0;x<_sTags.length;x++)_selectedTags.push(_sTags[x].text);$scope.selectedtags=_selectedTags,$timeout.cancel(to),_selectedTags.length>0&&(to=$timeout(function(){if($scope.filtered_credentials){for(var _filtered_tags=[],i=0;i<$scope.filtered_credentials.length;i++)for(var tags=$scope.filtered_credentials[i].tags_raw,x=0;x<tags.length;x++){var tag=tags[x].text;_filtered_tags.indexOf(tag)===-1&&_filtered_tags.push(tag)}$rootScope.$emit("limit_tags_in_list",_filtered_tags)}},50))}),$scope.delete_time=0,$scope.showCredentialRow=function(credential){return 0===$scope.delete_time?0===credential.delete_time:credential.delete_time>$scope.delete_time},$rootScope.$on("set_delete_time",function(event,time){$scope.delete_time=time}),$scope.setDeleteTime=function(delete_time){$scope.delete_time=delete_time},$scope.selectedCredential=!1,$scope.selectCredential=function(credential){credential.description&&(credential.description_html=$sce.trustAsHtml(angular.copy(credential.description).replace("\n","<br />"))),$scope.selectedCredential=angular.copy(credential),$rootScope.$emit("app_menu",!0)},$scope.closeSelected=function(){$rootScope.$emit("app_menu",!1),$scope.selectedCredential=!1},$rootScope.$on("logout",function(){$scope.active_vault&&($rootScope.vaultCache[$scope.active_vault.guid]=null),$scope.active_vault=null,$scope.credentials=[],VaultService.clearVaultService()}),$scope.clearState=function(){$scope.delete_time=0}}])}(),function(){angular.module("passmanApp").controller("CredentialEditCtrl",["$scope","VaultService","CredentialService","SettingsService","$location","$routeParams","FileService","EncryptService","TagService","NotificationService","ShareService","$translate","$rootScope",function($scope,VaultService,CredentialService,SettingsService,$location,$routeParams,FileService,EncryptService,TagService,NotificationService,ShareService,$translate,$rootScope){if($scope.active_vault=VaultService.getActiveVault(),SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){if(SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));_vault.vaultKey=SettingsService.getSetting("defaultVaultPass"),VaultService.setActiveVault(_vault),$scope.active_vault=_vault}}else if(!$scope.active_vault)return void $location.path("/");VaultService.getVault($scope.active_vault).then(function(vault){vault.vaultKey=VaultService.getActiveVault().vaultKey,delete vault.credentials,VaultService.setActiveVault(vault),$scope.pwSettings=VaultService.getVaultSetting("pwSettings",{length:12,useUppercase:!0,useLowercase:!0,useDigits:!0,useSpecialChars:!0,minimumDigitCount:3,avoidAmbiguousCharacters:!1,requireEveryCharType:!0,generateOnCreate:!0})}),$scope.currentTab={title:$translate.instant("general"),url:"views/partials/forms/edit_credential/basics.html",color:"blue"},$scope.otpType="qrcode",$translate(["general","password","custom.fields","files","otp"]).then(function(translations){$scope.tabs=[{title:translations.general,url:"views/partials/forms/edit_credential/basics.html",color:"blue"},{title:translations.password,url:"views/partials/forms/edit_credential/password.html",color:"green"},{title:translations["custom.fields"],url:"views/partials/forms/edit_credential/custom_fields.html",color:"orange"},{title:translations.files,url:"views/partials/forms/edit_credential/files.html",color:"yellow"},{title:translations.otp,url:"views/partials/forms/edit_credential/otp.html",color:"purple"}],$scope.currentTab=$scope.tabs[0]}),$scope.active_vault&&($scope.$parent.selectedVault=!0);var storedCredential=SettingsService.getSetting("edit_credential");storedCredential?($scope.storedCredential=CredentialService.decryptCredential(angular.copy(storedCredential)),$scope.storedCredential.password_repeat=angular.copy($scope.storedCredential.password),$scope.storedCredential.expire_time=1e3*$scope.storedCredential.expire_time):CredentialService.getCredential($routeParams.credential_id).then(function(result){$scope.storedCredential=CredentialService.decryptCredential(angular.copy(result))}),$scope.oldPassword=$scope.storedCredential.password,$scope.getTags=function($query){return TagService.searchTag($query)},$scope.onClickTab=function(tab){$scope.currentTab=tab},$scope.isActiveTab=function(tab){return tab.url===$scope.currentTab.url},$scope.pwGenerated=function(pass){$scope.storedCredential.password_repeat=pass};var _customField={label:"",value:"",secret:!1,field_type:"text"};$scope.selected_field_type="text",$scope.new_custom_field=angular.copy(_customField),$scope.addCustomField=function(){var _field=angular.copy($scope.new_custom_field);if(_field.label||NotificationService.showNotification($translate.instant("error.no.label"),3e3),_field.value||NotificationService.showNotification($translate.instant("error.no.value"),3e3),_field.label&&_field.value)if($scope.selected_field_type="text",_field.secret="password"===_field.field_type,"file"===_field.field_type){var key=!1,_file=$scope.new_custom_field.value;!$scope.storedCredential.hasOwnProperty("acl")&&$scope.storedCredential.hasOwnProperty("shared_key")&&$scope.storedCredential.shared_key&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key))),$scope.storedCredential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.acl.shared_key))),FileService.uploadFile(_file,key).then(function(result){delete result.file_data,result.filename=EncryptService.decryptString(result.filename,key),_field.value=result,$scope.storedCredential.custom_fields.push(_field),$scope.new_custom_field=angular.copy(_customField)})}else $scope.storedCredential.custom_fields.push(_field),$scope.new_custom_field=angular.copy(_customField)},$scope.addFileToCustomField=function(file){$scope.new_custom_field.value={filename:file.name,size:file.size,mimetype:file.type,data:file.data},$scope.$digest()},$scope.deleteCustomField=function(field){field.hasOwnProperty("field_type")&&"file"===field.field_type&&FileService.deleteFile(field.value);var idx=$scope.storedCredential.custom_fields.indexOf(field);$scope.storedCredential.custom_fields.splice(idx,1)},$scope.new_file={name:"",data:null
},$scope.deleteFile=function(file){var idx=$scope.storedCredential.files.indexOf(file);FileService.deleteFile(file).then(function(){$scope.storedCredential.files.splice(idx,1)})},$scope.fileLoaded=function(file){var key,_file={filename:file.name,size:file.size,mimetype:file.type,data:file.data};!$scope.storedCredential.hasOwnProperty("acl")&&$scope.storedCredential.hasOwnProperty("shared_key")&&$scope.storedCredential.shared_key&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key))),$scope.storedCredential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.acl.shared_key))),FileService.uploadFile(_file,key).then(function(result){delete result.file_data,result.filename=EncryptService.decryptString(result.filename,key),$scope.storedCredential.files.push(result)}),$scope.$digest()},$scope.fileLoadError=function(error){console.log($translate.instant("error.loading.file"),error)},$scope.selected_file="",$scope.fileprogress=[],$scope.fileSelectProgress=function(progress){progress&&($scope.fileprogress=progress,$scope.$digest())},$scope.renewIntervalValue=0,$scope.renewIntervalModifier="0",$scope.updateInterval=function(renewIntervalValue,renewIntervalModifier){var value=parseInt(renewIntervalValue),modifier=parseInt(renewIntervalModifier);value&&modifier&&($scope.storedCredential.renew_interval=value*modifier)},$scope.parseQR=function(QRCode){if(!QRCode)return void NotificationService.showNotification($translate.instant("invalid.qr"),5e3);var uri=new URL(QRCode.qrData),type=uri.href.indexOf("totp/")!==-1?"totp":"hotp",label=uri.pathname.replace("//"+type+"/","");$scope.storedCredential.otp={type:type,label:decodeURIComponent(label),qr_uri:QRCode,issuer:uri.searchParams.get("issuer"),secret:uri.searchParams.get("secret")},$scope.$digest()},$scope.saving=!1,$scope.compromise=function(){console.log("This password was compromised"),$scope.storedCredential.compromised=!0},$scope.saveCredential=function(){if($scope.saving=!0,$scope.storedCredential.compromised&&$scope.oldPassword!==$scope.storedCredential.password&&($scope.storedCredential.compromised=!1),$scope.new_custom_field.label&&$scope.new_custom_field.value&&$scope.storedCredential.custom_fields.push(angular.copy($scope.new_custom_field)),$scope.storedCredential.password!==$scope.storedCredential.password_repeat)return $scope.saving=!1,void NotificationService.showNotification($translate.instant("password.do.not.match"),5e3);if(delete $scope.storedCredential.password_repeat,$scope.storedCredential.credential_id){var key,_credential;!$scope.storedCredential.hasOwnProperty("acl")&&$scope.storedCredential.hasOwnProperty("shared_key")&&$scope.storedCredential.shared_key&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key))),$scope.storedCredential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.acl.shared_key))),_credential=key?ShareService.encryptSharedCredential($scope.storedCredential,key):angular.copy($scope.storedCredential),delete _credential.shared_key;var _useKey=null!=key,regex=/(<([^>]+)>)/gi;_credential.description&&""!==_credential.description&&(_credential.description=_credential.description.replace(regex,"")),CredentialService.updateCredential(_credential,_useKey).then(function(updated_cred){$scope.saving=!1,SettingsService.setSetting("edit_credential",null),$location.path("/vault/"+$routeParams.vault_id),NotificationService.showNotification($translate.instant("credential.updated"),5e3),$scope.updateExistingListWithCredential(updated_cred)})}else $scope.storedCredential.vault_id=$scope.active_vault.vault_id,CredentialService.createCredential($scope.storedCredential).then(function(new_cred){$scope.saving=!1,$location.path("/vault/"+$routeParams.vault_id),NotificationService.showNotification($translate.instant("credential.created"),5e3),$scope.updateExistingListWithCredential(new_cred)})},$scope.updateExistingListWithCredential=function(credential){try{if(credential.shared_key){var enc_key=EncryptService.decryptString(credential.shared_key);credential=ShareService.decryptSharedCredential(credential,enc_key)}else credential=CredentialService.decryptCredential(credential);credential.tags_raw=credential.tags;for(var found=!1,credList=$rootScope.vaultCache[$scope.active_vault.guid].credentials,i=0;i<credList.length;i++)credList[i].credential_id===credential.credential_id&&($rootScope.vaultCache[$scope.active_vault.guid].credentials[i]=credential,found=!0);found||$rootScope.vaultCache[$scope.active_vault.guid].credentials.push(credential),$rootScope.$broadcast("push_decrypted_credential_to_list",credential)}catch(e){NotificationService.showNotification($translate.instant("error.decrypt"),5e3),console.log(e)}},$scope.cancel=function(){$location.path("/vault/"+$routeParams.vault_id)}}])}(),function(){angular.module("passmanApp").controller("ExportCtrl",["$scope","$window","CredentialService","VaultService","FileService","EncryptService","$translate",function($scope,$window,CredentialService,VaultService,FileService,EncryptService,$translate){$scope.available_exporters=[],$scope.active_vault=VaultService.getActiveVault(),$scope.confirm_key="",$scope.$watch(function(){return $window.PassmanExporter},function(exporters){exporters=Object.keys(angular.copy(exporters));for(var i=0;i<exporters.length;i++){var exporter=exporters[i];$window.PassmanExporter[exporter].hasOwnProperty("info")&&$scope.available_exporters.push($window.PassmanExporter[exporter].info)}},!0),$scope.log=[],$scope.setExporter=function(exporter){exporter=JSON.parse(exporter),$scope.selectedExporter=exporter};var _log=function(str){$scope.log.push(str)};$scope.startExport=function(){if($scope.error=!1,VaultService.getActiveVault().vaultKey!==$scope.confirm_key){var msg=$translate.instant("invalid.vault.key");return $scope.error=msg,void _log(msg)}_log($translate.instant("export.starting"));var _credentials=[];VaultService.getVault(VaultService.getActiveVault()).then(function(vault){if(_log($translate.instant("export.decrypt")),vault.hasOwnProperty("credentials")&&vault.credentials.length>0){for(var i=0;i<vault.credentials.length;i++){var _credential=angular.copy(vault.credentials[i]);if(0===_credential.hidden){var key=CredentialService.getSharedKeyFromCredential(_credential);_credential=CredentialService.decryptCredential(_credential,key),_credential.vault_key=key,_credentials.push(_credential)}}$window.PassmanExporter[$scope.selectedExporter.id].export(_credentials,FileService,EncryptService).then(function(){_log($translate.instant("done"))})}})}}])}(),function(){angular.module("passmanApp").controller("GenericCsvImportCtrl",["$scope","CredentialService","$translate",function($scope,CredentialService,$translate){$scope.hello="world",$scope.credentialProperties=[{label:"Label",prop:"label",matching:["label","title","name"]},{label:"Username",prop:"username",matching:["username","user","login","login name"]},{label:"Password",prop:"password",matching:["password","pass","pw"]},{label:"TOTP Secret",prop:"otp",matching:["totp"]},{label:"Custom field",prop:"custom_field"},{label:"Notes",prop:"description",matching:["notes","description","comments"]},{label:"Email",prop:"email",matching:["email","mail"]},{label:"URL",prop:"url",matching:["website","url","fulladdress","site","web site"]},{label:"Tags",prop:"tags"},{label:"Ignored",prop:null}];var tagMapper=function(t){return{text:t}},rowToCredential=function(row){for(var _credential=PassmanImporter.newCredential(),k=0;k<$scope.import_fields.length;k++){var field=$scope.import_fields[k];if(field)if("otp"===field)_credential.otp.secret=row[k];else if("custom_field"===field){var key=$scope.matched?$scope.parsed_csv[0][k]:"Custom field "+k;_credential.custom_fields.push({label:key,value:row[k],secret:0})}else if("tags"===field){if(row[k]){var tags=row[k].split(",");_credential.tags=tags.map(tagMapper)}}else _credential[field]=row[k]}return _credential};$scope.inspectCredential=function(row){$scope.inspected_credential=rowToCredential(row)},$scope.csvLoaded=function(file){$scope.import_fields=[],$scope.inspected_credential=!1,$scope.matched=!1,$scope.skipFirstRow=!1;var file_data=file.data.split(",");file_data=decodeURIComponent(escape(window.atob(file_data[1]))),Papa.parse(file_data,{complete:function(results){if(results.data){for(var i=0;i<results.data[0].length;i++){var propName=results.data[0][i];$scope.import_fields[i]=null;for(var p=0;p<$scope.credentialProperties.length;p++){var credentialProperty=$scope.credentialProperties[p];credentialProperty.matching&&credentialProperty.matching.indexOf(propName.toLowerCase())!==-1&&($scope.import_fields[i]=credentialProperty.prop,$scope.matched=!0)}}$scope.matched&&$scope.inspectCredential(results.data[1]),$scope.parsed_csv=results.data,$scope.$apply()}}})};var addCredential=function(index){function handleState(index){$scope.parsed_csv[index+1]?($scope.import_progress={progress:index/$scope.parsed_csv.length*100,loaded:index,total:$scope.parsed_csv.length},addCredential(index+1)):($scope.import_progress={progress:100,loaded:$scope.parsed_csv.length,total:$scope.parsed_csv.length},$scope.log.push($translate.instant("done")),$scope.importing=!1)}var _credential=rowToCredential($scope.parsed_csv[index]);return _credential.vault_id=$scope.active_vault.vault_id,_credential.label?($scope.log.push($translate.instant("import.adding",{credential:_credential.label})),void CredentialService.createCredential(_credential).then(function(result){result.credential_id&&($scope.log.push($translate.instant("import.added",{credential:_credential.label})),handleState(index))})):($scope.log.push($translate.instant("import.skipping",{line:index})),void handleState(index))};$scope.importing=!1,$scope.startCSVImport=function(){$scope.importing=!0,$scope.log=[];var start=$scope.skipFirstRow?1:0;addCredential(start)},$scope.updateExample=function(){var start=$scope.skipFirstRow?1:0;$scope.inspectCredential($scope.parsed_csv[start])}}])}(),function(){angular.module("passmanApp").controller("ImportCtrl",["$scope","$window","CredentialService","VaultService","$translate",function($scope,$window,CredentialService,VaultService,$translate){$scope.available_importers=[],$scope.active_vault=VaultService.getActiveVault(),$scope.$watch(function(){return $window.PassmanImporter},function(importers){for(var key in importers){var importer=importers[key];importer.hasOwnProperty("info")&&$scope.available_importers.push(importer.info)}},!0),$scope.log=[],$scope.setImporter=function(importer){importer=JSON.parse(importer),$scope.selectedImporter=importer};var file_data,_log=function(str){$scope.log.push(str)};$scope.fileLoaded=function(file){file_data=file.data.split(","),file_data=decodeURIComponent(escape(window.atob(file_data[1]))),_log($translate.instant("import.file.read")),$scope.$digest()},$scope.fileLoadError=function(file){console.error($translate.instant("error.loading.file"),file)},$scope.fileSelectProgress=function(){};var parsed_data;$scope.import_progress={progress:0,loaded:0,total:0};var addCredential=function(parsed_data_index){if(parsed_data[parsed_data_index]){var _credential=parsed_data[parsed_data_index];if(!_credential.label)return void(parsed_data[parsed_data_index+1]&&(_log($translate.instant("import.no.label")),addCredential(parsed_data_index+1)));_log($translate.instant("import.adding",{credential:_credential.label})),_credential.vault_id=$scope.active_vault.vault_id,CredentialService.createCredential(_credential).then(function(result){result.credential_id&&(_log($translate.instant("import.added",{credential:_credential.label})),parsed_data[parsed_data_index+1]?($scope.import_progress={progress:parsed_data_index/parsed_data.length*100,loaded:parsed_data_index,total:parsed_data.length},addCredential(parsed_data_index+1)):($scope.import_progress={progress:100,loaded:parsed_data.length,total:parsed_data.length},_log($translate.instant("done"))))})}};$scope.file_read_progress={percent:0,loaded:0,total:0},$scope.startImport=function(){$scope.import_progress=0,$scope.file_read_percent=0,file_data&&$window.PassmanImporter[$scope.selectedImporter.id].readFile(file_data).then(function(parseddata){parsed_data=parseddata,$scope.file_read_progress={percent:100,loaded:parsed_data.length,total:parsed_data.length};var msg=$translate.instant("import.loaded").replace("{{num}}",parsed_data.length);_log(msg),parsed_data.length>0&&addCredential(0)}).progress(function(progress){$scope.file_read_progress=progress,$scope.$digest()})}}])}(),function(){angular.module("passmanApp").controller("MainCtrl",["$scope","$rootScope","$location","SettingsService","$window","$interval","$filter",function($scope,$rootScope,$location,SettingsService,$window,$interval,$filter){$scope.selectedVault=!1,$scope.http_warning_hidden=!0,"http"===$location.$$protocol&&"localhost"!==$location.$$host&&"127.0.0.1"!==$location.$host&&($scope.using_http=!0,$scope.http_warning_hidden=!1),$scope.removeHiddenStyles=function(){document.getElementById("warning_bar").classList.remove("template-hidden")},$rootScope.$on("settings_loaded",function(){SettingsService.isEnabled("disable_contextmenu")&&document.addEventListener("contextmenu",function(event){event.preventDefault()}),SettingsService.isEnabled("https_check")&&($scope.http_warning_hidden=!0),SettingsService.isEnabled("disable_debugger")&&!function a(){try{!function b(i){1===(""+i/i).length&&i%20!==0||function(){}.constructor("debugger")(),b(++i)}(0)}catch(e){setTimeout(a,5e3)}}()}),$rootScope.setHttpWarning=function(state){$scope.http_warning_hidden=state},$rootScope.$on("app_menu",function(evt,shown){$scope.app_sidebar=shown}),$rootScope.$on("logout",function(){$scope.selectedVault=!1});var tickSessionTimer=function(){if($scope.session_time_left){$scope.session_time_left--;var session_time_left_formatted=$filter("toHHMMSS")($scope.session_time_left);$scope.translationData={session_time:session_time_left_formatted},$rootScope.$broadcast("logout_timer_tick_tack",$scope.session_time_left),0===$scope.session_time_left&&$window.location.reload()}};$scope.session_time_left=!1,$scope.$on("logout_timer_set",function(evt,timer){$scope.session_time_left=timer,$scope.translationData={session_time:timer},$interval(tickSessionTimer,1e3)})}])}(),function(){angular.module("passmanApp").controller("MenuCtrl",["$scope","VaultService","$location","$rootScope","TagService","SettingsService","$translate","SearchboxexpanderService",function($scope,VaultService,$location,$rootScope,TagService,SettingsService,$translate,SearchboxexpanderService){$rootScope.logout=function(){$rootScope.override_default_vault=!0,SettingsService.setSetting("defaultVaultPass",!1),TagService.resetTags(),$rootScope.$broadcast("logout"),$location.path("/")},$scope.removeHiddenStyles=function(){document.getElementById("app-navigation").classList.remove("template-hidden")},$scope.selectedTags=[],$scope.getTags=function($query){return TagService.searchTag($query)},$scope.$watch(function(){return VaultService.getActiveVault()},function(vault){$scope.active_vault=vault}),$scope.filtered_tags=[],$rootScope.$on("limit_tags_in_list",function(evt,tags){$scope.filtered_tags=[];for(var i=0;i<tags.length;i++){for(var tag={text:tags[i]},found=!1,x=0;x<$scope.selectedTags.length;x++)$scope.selectedTags[x].text===tag.text&&(found=!0);found===!1&&$scope.filtered_tags.push(tag)}}),$scope.$watch("selectedTags",function(){$rootScope.$broadcast("selected_tags_updated",$scope.selectedTags)},!0),$scope.tagSelected=function(tag){for(var i=0;i<$scope.selectedTags.length;i++)if($scope.selectedTags[i].text===tag.text)return!0;return!1},$scope.removeTagFromSelected=function(tag){for(var where=-1,i=0;i<$scope.selectedTags.length;i++)$scope.selectedTags[i].text===tag.text&&(where=i);$scope.selectedTags.splice(where,1)},$scope.clearForm=function(){document.getElementById("tagsearch").value=""},$scope.tagClickedString=function(tagtext){var tag=[];tag.text=tagtext,$scope.tagClicked(tag)},$scope.tagClicked=function(tag){$scope.tagSelected(tag)?$scope.removeTagFromSelected(tag):$scope.selectedTags.push(tag)},SearchboxexpanderService.expandSearch($rootScope,$scope),$scope.clickedNavigationItem="all",$scope.filterCredentialBySpecial=function(string){$scope.clickedNavigationItem=string,"nav_trashbin"!==string&&($scope.delete_time=0,$rootScope.$broadcast("set_delete_time",$scope.delete_time)),$scope.selectedTags=[],$rootScope.$broadcast("filterSpecial",string),$scope.settingsShown=!1},$scope.collapsedDefaultValue=!0,$scope.tagCollapsibleOpen=VaultService.getVaultSetting("vaultTagCollapsedState",$scope.collapsedDefaultValue),$scope.tagCollapsibleClicked=function(){VaultService.getVaultSetting("vaultTagCollapsedState",$scope.collapsedDefaultValue)===!0?VaultService.setVaultSetting("vaultTagCollapsedState",!1):VaultService.setVaultSetting("vaultTagCollapsedState",!0)},$scope.tagCollapsibleState=function(){return VaultService.getVaultSetting("vaultTagCollapsedState",$scope.collapsedDefaultValue)?"":"open"},$scope.initPlaceholder=function(){$translate.onReady().then(function(){var string=$translate.instant("navigation.advanced.filter");document.getElementById("tags-input-outer").setAttribute("placeholder",string),document.getElementById("tags-input-outer").firstChild.firstChild.childNodes[1].setAttribute("placeholder",string)})},$scope.legacyNavbarDefault=!0,$scope.legacyNavbarAlreadyInitialized=!1,"undefined"==typeof $scope.legacyNavbar&&($scope.legacyNavbar=$scope.legacyNavbarDefault),$scope.$watch("legacyNavbar",function(newValue,oldValue){VaultService.setVaultSetting("vaultNavBarLegacy",newValue)}),$scope.initializeNavbar=function(){$scope.legacyNavbarAlreadyInitialized||($scope.legacyNavbar=VaultService.getVaultSetting("vaultNavBarLegacy",$scope.legacyNavbarDefault),$scope.legacyNavbarAlreadyInitialized=!0)},$rootScope.$on("credentials_loaded",function(){$rootScope.$broadcast("selected_tags_updated",$scope.selectedTags),$scope.initializeNavbar()}),$scope.available_tags=TagService.getTags(),$scope.$watch(function(){return 0===$scope.selectedTags.length?TagService.getTags():TagService.getTags()},function(tags){$scope.available_tags=TagService.getTags()},!0),$scope.toggleDeleteTime=function(){$scope.delete_time>0?$scope.delete_time=0:($scope.delete_time=1,this.filterCredentialBySpecial("nav_trashbin")),$rootScope.$broadcast("set_delete_time",$scope.delete_time)}}])}(),function(){angular.module("passmanApp").controller("PublicSharedCredential",["$scope","ShareService","$window","EncryptService","NotificationService","$translate",function($scope,ShareService,$window,EncryptService,NotificationService,$translate){var _key;$scope.loading=!1,$scope.loadSharedCredential=function(){$scope.loading=!0;var data=window.atob($window.location.hash.replace("#","")).split("<::>"),guid=data[0];_key=data[1],ShareService.getPublicSharedCredential(guid).then(function(sharedCredential){$scope.loading=!1,200===sharedCredential.status?$scope.shared_credential=ShareService.decryptSharedCredential(sharedCredential.data.credential_data,_key):$scope.expired=!0})},$scope.downloadFile=function(credential,file){ShareService.downloadSharedFile(credential,file).then(function(result){if(!result.hasOwnProperty("file_data"))return void NotificationService.showNotification($translate.instant("error.loading.file.perm"),5e3);var file_data=EncryptService.decryptString(result.file_data,_key);download(file_data,escapeHTML(file.filename),file.mimetype)})}}])}(),function(){angular.module("passmanApp").controller("RevisionCtrl",["$scope","SettingsService","VaultService","CredentialService","$location","$routeParams","$rootScope","NotificationService","$filter","ShareService","EncryptService","$translate",function($scope,SettingsService,VaultService,CredentialService,$location,$routeParams,$rootScope,NotificationService,$filter,ShareService,EncryptService,$translate){if($scope.active_vault=VaultService.getActiveVault(),SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){if(SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));_vault.vaultKey=SettingsService.getSetting("defaultVaultPass"),VaultService.setActiveVault(_vault),VaultService.getVault(_vault).then(function(vault){vault.vaultKey=SettingsService.getSetting("defaultVaultPass"),VaultService.setActiveVault(vault),$scope.active_vault=vault,$scope.$parent.selectedVault=!0})}}else $scope.active_vault||$location.path("/");$scope.active_vault&&($scope.$parent.selectedVault=!0);var storedCredential=SettingsService.getSetting("revision_credential"),getRevisions=function(){CredentialService.getRevisions($scope.storedCredential.guid).then(function(revisions){$scope.revisions=revisions})};storedCredential?($scope.storedCredential=CredentialService.decryptCredential(angular.copy(storedCredential)),getRevisions()):CredentialService.getCredential($routeParams.credential_id).then(function(result){$scope.storedCredential=CredentialService.decryptCredential(angular.copy(result)),getRevisions()}),$scope.selectRevision=function(revision){var key;$scope.selectedRevision=angular.copy(revision),!$scope.storedCredential.hasOwnProperty("acl")&&$scope.storedCredential.hasOwnProperty("shared_key")&&$scope.storedCredential.shared_key&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key))),$scope.storedCredential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.acl.shared_key))),key?$scope.selectedRevision.credential_data=ShareService.decryptSharedCredential(angular.copy(revision.credential_data),key):$scope.selectedRevision.credential_data=CredentialService.decryptCredential(angular.copy(revision.credential_data)),$rootScope.$emit("app_menu",!0)},$scope.closeSelected=function(){$rootScope.$emit("app_menu",!1),$scope.selectedRevision=!1},$scope.deleteRevision=function(revision){CredentialService.deleteRevision($scope.storedCredential.guid,revision.revision_id).then(function(){for(var i=0;i<$scope.revisions.length;i++)if($scope.revisions[i].revision_id===revision.revision_id){$scope.revisions.splice(i,1),NotificationService.showNotification($translate.instant("revision.deleted"),5e3);break}})},$scope.restoreRevision=function(revision){var key,_revision=angular.copy(revision),_credential=_revision.credential_data;!$scope.storedCredential.hasOwnProperty("acl")&&$scope.storedCredential.hasOwnProperty("shared_key")&&$scope.storedCredential.shared_key&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key))),$scope.storedCredential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.acl.shared_key))),key&&(_credential=ShareService.encryptSharedCredential(_credential,key)),delete _credential.shared_key,_credential.revision_created=$filter("date")(1e3*_revision.created,"dd-MM-yyyy @ HH:mm:ss"),CredentialService.updateCredential(_credential,key).then(function(restored_cred){SettingsService.setSetting("revision_credential",null),$rootScope.$emit("app_menu",!1),$location.path("/vault/"+$routeParams.vault_id),NotificationService.showNotification($translate.instant("revision.restored"),5e3),$scope.updateExistingListWithCredential(restored_cred)})},$scope.updateExistingListWithCredential=function(credential){try{if(credential.shared_key){var enc_key=EncryptService.decryptString(credential.shared_key);credential=ShareService.decryptSharedCredential(credential,enc_key)}else credential=CredentialService.decryptCredential(credential);credential.tags_raw=credential.tags;for(var found=!1,credList=$rootScope.vaultCache[$scope.active_vault.guid].credentials,i=0;i<credList.length;i++)credList[i].credential_id===credential.credential_id&&($rootScope.vaultCache[$scope.active_vault.guid].credentials[i]=credential,found=!0);found||$rootScope.vaultCache[$scope.active_vault.guid].credentials.push(credential),$rootScope.$broadcast("push_decrypted_credential_to_list",credential)}catch(e){NotificationService.showNotification($translate.instant("error.decrypt"),5e3),console.log(e)}},$scope.cancelRevision=function(){$location.path("/vault/"+$routeParams.vault_id),$scope.storedCredential=null,SettingsService.setSetting("revision_credential",null)}}])}(),function(){angular.module("passmanApp").controller("SettingsCtrl",["$scope","$rootScope","SettingsService","VaultService","CredentialService","$location","$routeParams","$http","EncryptService","NotificationService","$sce","$translate",function($scope,$rootScope,SettingsService,VaultService,CredentialService,$location,$routeParams,$http,EncryptService,NotificationService,$sce,$translate){if($scope.vault_settings={},$scope.new_vault_name="",$scope.showGenericImport=!1,$scope.active_vault=VaultService.getActiveVault(),SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){if(SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));_vault.vaultKey=SettingsService.getSetting("defaultVaultPass"),VaultService.setActiveVault(_vault),$scope.active_vault=_vault}}else if(!$scope.active_vault)return void $location.path("/");VaultService.getVault($scope.active_vault).then(function(vault){vault.vaultKey=VaultService.getActiveVault().vaultKey,delete vault.credentials,VaultService.setActiveVault(vault),$scope.vault_settings=vault.vault_settings,$scope.vault_settings.hasOwnProperty("pwSettings")||($scope.vault_settings.pwSettings={length:12,useUppercase:!0,useLowercase:!0,useDigits:!0,useSpecialChars:!0,minimumDigitCount:3,avoidAmbiguousCharacters:!1,requireEveryCharType:!0,generateOnCreate:!0})});var key_strengths=["password.poor","password.poor","password.weak","password.good","password.strong"];$scope.minimal_value_key_strength=SettingsService.getSetting("vault_key_strength"),$translate(key_strengths[SettingsService.getSetting("vault_key_strength")]).then(function(translation){$scope.required_score={strength:translation}});var btn_txt=$translate.instant("bookmarklet.text"),http=location.protocol,slashes=http.concat("//"),host=slashes.concat(window.location.hostname),complete=host+location.pathname;$scope.bookmarklet=$sce.trustAsHtml('<a class="button" href="javascript:(function(){var a=window,b=document,c=encodeURIComponent,e=c(document.title),d=a.open(\''+complete+"bookmarklet?url='+c(b.location)+'&title='+e,'bkmk_popup','left='+((a.screenX||a.screenLeft)+10)+',top='+((a.screenY||a.screenTop)+10)+',height=750px,width=475px,resizable=0,alwaysRaised=1');a.setTimeout(function(){d.focus()},300);})();\">"+btn_txt+"</a>"),$scope.saveVaultSettings=function(){var _vault=$scope.active_vault;_vault.name=$scope.new_vault_name,_vault.vault_settings=angular.copy($scope.vault_settings),VaultService.updateVault(_vault).then(function(){$scope.active_vault.name=angular.copy(_vault.name),NotificationService.showNotification($translate.instant("settings.saved"),5e3)})},$scope.tabs=[{title:$translate.instant("settings.general"),url:"views/partials/forms/settings/general_settings.html"},{title:$translate.instant("settings.audit"),url:"views/partials/forms/settings/tool.html"},{title:$translate.instant("settings.password"),url:"views/partials/forms/settings/password_settings.html"},{title:$translate.instant("settings.import"),url:"views/partials/forms/settings/import.html"},{title:$translate.instant("settings.export"),url:"views/partials/forms/settings/export.html"},{title:$translate.instant("settings.sharing"),url:"views/partials/forms/settings/sharing.html"}],$scope.currentTab=$scope.tabs[0],$scope.onClickTab=function(tab){$scope.currentTab=tab},$scope.isActiveTab=function(tab){return tab.url===$scope.currentTab.url};var getPassmanVersion=function(){var url=OC.generateUrl("apps/passman/api/internal/version");$http.get(url).then(function(result){$scope.passman_version=result.data.version})};getPassmanVersion(),$scope.$watch(function(){return VaultService.getActiveVault()},function(vault){vault&&($scope.active_vault=vault)}),$rootScope.$on("logout",function(){$scope.selectedVault=!1});var getCurrentVaultCredentials=function(callback){VaultService.getVault($scope.active_vault).then(callback)};$scope.startScan=function(minStrength){getCurrentVaultCredentials(function(vault){for(var results=[],i=0;i<vault.credentials.length;i++){var c=angular.copy(vault.credentials[i]);if(c.password&&0===c.hidden)try{if(c=CredentialService.decryptCredential(c),c.password){var zxcvbn_result=zxcvbn(c.password);zxcvbn_result.score<=minStrength&&results.push({guid:c.guid,label:c.label,password:c.password,password_zxcvbn_result:zxcvbn_result})}}catch(e){console.warn(e)}}$scope.scan_result=results})},$scope.cur_state={},$scope.$on("$locationChangeStart",function(event){$scope.change_pw&&$scope.change_pw.total>0&&$scope.change_pw.done<$scope.change_pw.total&&(confirm($translate.instant("changepw.navigate.away.warning"))||event.preventDefault())}),$scope.changeVaultPassword=function(oldVaultPass,newVaultPass,newVaultPass2){return $scope.error="",oldVaultPass!==VaultService.getActiveVault().vaultKey?void($scope.error=$translate.instant("incorrect.password")):newVaultPass!==newVaultPass2?void($scope.error=$translate.instant("password.no.match")):(SettingsService.setSetting("defaultVault",null),SettingsService.setSetting("defaultVaultPass",null),void VaultService.getVault($scope.active_vault).then(function(vault){jQuery("input").attr("disabled",!0),jQuery("button").attr("disabled",!0);var _selected_credentials=angular.copy(vault.credentials);$scope.change_pw={percent:0,done:0,total:_selected_credentials.length};var changeCredential=function(index,oldVaultPass,newVaultPass){var usedKey=oldVaultPass;_selected_credentials[index].hasOwnProperty("shared_key")&&_selected_credentials[index].shared_key&&(usedKey=EncryptService.decryptString(angular.copy(_selected_credentials[index].shared_key),oldVaultPass)),CredentialService.reencryptCredential(_selected_credentials[index].guid,usedKey,newVaultPass).progress(function(data){$scope.cur_state=data}).then(function(){var percent=index/_selected_credentials.length*100;$scope.change_pw={percent:percent,done:index+1,total:_selected_credentials.length},index<_selected_credentials.length-1?changeCredential(index+1,oldVaultPass,newVaultPass):(vault.private_sharing_key=EncryptService.decryptString(angular.copy(vault.private_sharing_key),oldVaultPass),vault.private_sharing_key=EncryptService.encryptString(vault.private_sharing_key,newVaultPass),VaultService.updateSharingKeys(vault).then(function(){$rootScope.$broadcast("logout"),NotificationService.showNotification($translate.instant("login.new.pass"),5e3)}))})};changeCredential(0,VaultService.getActiveVault().vaultKey,newVaultPass)}))},$scope.confirm_vault_delete=!1,$scope.delete_vault_password="",$scope.delete_vault=function(){$scope.confirm_vault_delete&&$scope.delete_vault_password===VaultService.getActiveVault().vaultKey&&getCurrentVaultCredentials(function(vault){var credentials=vault.credentials;$scope.remove_pw={percent:0,done:0,total:vault.credentials.length};var deleteCredential=function(index){$scope.translationData={password:credentials[index].label},CredentialService.destroyCredential(credentials[index].guid).then(function(){var percent=index/vault.credentials.length*100;return $scope.remove_pw={percent:percent,done:index,total:vault.credentials.length},index===credentials.length-1?void VaultService.deleteVault(vault).then(function(){SettingsService.setSetting("defaultVaultPass",!1),SettingsService.setSetting("defaultVault",null),$rootScope.$broadcast("logout"),$location.path("/")}):void deleteCredential(index+1)})};deleteCredential(0)})},$rootScope.$on("logout",function(){$scope.active_vault=null,VaultService.setActiveVault(null),$location.path("/")}),$scope.cancel=function(){$location.path("/vault/"+$routeParams.vault_id);
}}])}(),function(){angular.module("passmanApp").controller("ShareCtrl",["$scope","VaultService","CredentialService","SettingsService","$location","$routeParams","ShareService","NotificationService","SharingACL","EncryptService","$translate","$rootScope",function($scope,VaultService,CredentialService,SettingsService,$location,$routeParams,ShareService,NotificationService,SharingACL,EncryptService,$translate,$rootScope){$scope.active_vault=VaultService.getActiveVault(),$scope.tabs=[{title:$translate.instant("share.u.g"),url:"views/partials/forms/share_credential/basics.html"},{title:$translate.instant("share.link"),url:"views/partials/forms/share_credential/link_sharing.html",color:"green"}],$scope.currentTab=$scope.tabs[0];var settingsLoaded=function(){var settings=SettingsService.getSettings();0!==settings.user_sharing_enabled&&"0"!==settings.user_sharing_enabled||$scope.tabs.splice(0,1),0!==settings.link_sharing_enabled&&"0"!==settings.link_sharing_enabled||$scope.tabs.splice(1,1),$scope.tabs.length>0&&($scope.currentTab=$scope.tabs[0])};if(SettingsService.getSetting("settings_loaded")?settingsLoaded():$rootScope.$on("settings_loaded",function(){settingsLoaded()}),$scope.onClickTab=function(tab){$scope.currentTab=tab},$scope.isActiveTab=function(tab){return tab.url===$scope.currentTab.url},SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){if(SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));_vault.vaultKey=angular.copy(SettingsService.getSetting("defaultVaultPass")),VaultService.setActiveVault(_vault),$scope.active_vault=_vault}}else $scope.active_vault||$location.path("/");var storedCredential=SettingsService.getSetting("share_credential");storedCredential?$scope.storedCredential=CredentialService.decryptCredential(angular.copy(storedCredential)):$location.path("/vault/"+$routeParams.vault_id),$scope.active_vault&&($scope.$parent.selectedVault=!0),$scope.cancel=function(){SettingsService.setSetting("share_credential",null),$location.path("/vault/"+$routeParams.vault_id)},$scope.default_permissions=new SharingACL(0),$scope.default_permissions.addPermission($scope.default_permissions.permissions.READ|$scope.default_permissions.permissions.WRITE|$scope.default_permissions.permissions.FILES);var link_acl=angular.copy($scope.default_permissions);link_acl.removePermission($scope.default_permissions.permissions.WRITE);var oneMonthLater=new Date;oneMonthLater.setMonth(oneMonthLater.getMonth()+1),$scope.share_settings={linkSharing:{enabled:!1,settings:{expire_time:oneMonthLater,expire_views:5,acl:link_acl}},credentialSharedWithUserAndGroup:[],cypher_progress:{done:0,total:0},upload_progress:{done:0,total:0}};var getAcl=function(){ShareService.getSharedCredentialACL($scope.storedCredential).then(function(aclList){for(var _list=[],enc_key=!!$scope.storedCredential.shared_key&&EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key)),i=0;i<aclList.length;i++){var acl=aclList[i];if(null===acl.user_id){if($scope.share_settings.linkSharing={enabled:!0,settings:{expire_time:new Date(1e3*acl.expire),expire_views:acl.expire_views,acl:new SharingACL(acl.permissions)}},enc_key){var hash=window.btoa($scope.storedCredential.guid+"<::>"+enc_key);$scope.share_link=getShareLink(hash)}}else{var obj={userId:acl.user_id,displayName:acl.user_id,type:"user",acl:new SharingACL(acl.permissions),acl_id:acl.acl_id,pending:acl.pending,credential_guid:acl.item_guid,created:acl.created};_list.push(obj)}}$scope.share_settings.credentialSharedWithUserAndGroup=_list})};getAcl();new SharingACL(0);$scope.$watch("share_settings.upload_progress.done",function(){$scope.share_settings.upload_progress.done===$scope.share_settings.upload_progress.total&&$scope.share_settings.upload_progress.total>0&&getAcl()}),$scope.inputSharedWith=[],$scope.searchUsers=function($query){return ShareService.search($query)},$scope.hasPermission=function(acl,permission){return acl.hasPermission(permission)},$scope.setPermission=function(acl,permission){acl.togglePermission(permission)},$scope.shareWith=function(shareWith){if($scope.inputSharedWith=[],shareWith.length>0)for(var i=0;i<shareWith.length;i++){for(var obj={userId:shareWith[i].uid,displayName:shareWith[i].text,type:shareWith[i].type,acl:angular.copy($scope.default_permissions),pending:!0,credential_guid:$scope.storedCredential.guid},found=!1,z=0;z<$scope.share_settings.credentialSharedWithUserAndGroup.length;z++)shareWith[z]&&$scope.share_settings.credentialSharedWithUserAndGroup[z].userId===shareWith[z].uid&&(found=!0);found===!1&&$scope.share_settings.credentialSharedWithUserAndGroup.push(obj)}},$scope.unshareUser=function(user){ShareService.unshareCredentialFromUser($scope.storedCredential,user.userId).then(function(result){if(result.result===!0){var idx=$scope.share_settings.credentialSharedWithUserAndGroup.indexOf(user);$scope.share_settings.credentialSharedWithUserAndGroup.splice(idx,1)}})},$scope.unshareCredential=function(credential){var _credential=angular.copy(credential),old_key=EncryptService.decryptString(angular.copy(_credential.shared_key)),new_key=VaultService.getActiveVault().vaultKey;_credential.shared_key=null,_credential.unshare_action=!0,_credential.skip_revision=!0,CredentialService.reencryptCredential(_credential.guid,old_key,new_key,!0).then(function(data){getAcl();var c=data.cryptogram;c.shared_key=null,c.unshare_action=!0,c.skip_revision=!0,ShareService.unshareCredential(c),CredentialService.updateCredential(c,!0).then(function(){NotificationService.showNotification($translate.instant("credential.unshared"),4e3),$scope.sharing_complete=!0,$scope.storedCredential.shared_key=null,$scope.share_settings.credentialSharedWithUserAndGroup=[]})})},$scope.applyShareToUser=function(user,enc_key){ShareService.getVaultsByUser(user.userId).then(function(data){$scope.share_settings.cypher_progress.total+=data.length,user.vaults=data;var start=(new Date).getTime()/1e3;ShareService.cypherRSAStringWithPublicKeyBulkAsync(user.vaults,enc_key).progress(function(){$scope.share_settings.cypher_progress.done++,$scope.share_settings.cypher_progress.percent=$scope.share_settings.cypher_progress.done/$scope.share_settings.cypher_progress.total*100,$scope.$digest()}).then(function(result){$scope.share_settings.cypher_progress.times.push({time:(new Date).getTime()/1e3-start,user:data[0].user_id}),user.vaults=result,user.hasOwnProperty("acl_id")||$scope.uploadChanges(user),$scope.$digest()})})},$scope.$on("$locationChangeStart",function(event){$scope.sharing_complete||confirm($translate.instant("share.navigate.away.warning"))||event.preventDefault()});var getShareLink=function(hash){var port,defaultPort="http"===$location.$$protocol?80:443;return port=defaultPort!==$location.$$port?":"+$location.$$port:"",$location.$$protocol+"://"+$location.$$host+port+OC.generateUrl("apps/passman/share/public#")+hash};$scope.sharing_complete=!0,$scope.applyShare=function(){if($scope.sharing_complete=!1,$scope.share_settings.cypher_progress.percent=0,$scope.share_settings.cypher_progress.done=0,$scope.share_settings.cypher_progress.total=0,$scope.share_settings.cypher_progress.times=[],$scope.share_settings.cypher_progress.times_total=[],$scope.share_settings.upload_progress.done=0,$scope.share_settings.upload_progress.total=0,$scope.storedCredential.shared_key&&""!==$scope.storedCredential.shared_key&&null!==$scope.storedCredential.shared_key){var enc_key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key));if($scope.share_settings.linkSharing.enabled){var expire_time=new Date(angular.copy($scope.share_settings.linkSharing.settings.expire_time)).getTime()/1e3,shareObj={item_id:$scope.storedCredential.credential_id,item_guid:$scope.storedCredential.guid,permissions:$scope.share_settings.linkSharing.settings.acl.getAccessLevel(),expire_timestamp:expire_time,expire_views:$scope.share_settings.linkSharing.settings.expire_views};ShareService.createPublicSharedCredential(shareObj).then(function(){var hash=window.btoa($scope.storedCredential.guid+"<::>"+enc_key);$scope.share_link=getShareLink(hash)})}for(var list=$scope.share_settings.credentialSharedWithUserAndGroup,i=0;i<list.length;i++){var iterator=i,target_user=list[i];if(target_user.hasOwnProperty("created")){var acl={user_id:target_user.userId,permission:target_user.acl.getAccessLevel()};ShareService.updateCredentialAcl($scope.storedCredential,acl)}else $scope.applyShareToUser(list[iterator],enc_key)}NotificationService.showNotification($translate.instant("saved"),4e3),$scope.sharing_complete=!0}else ShareService.generateSharedKey(20).then(function(key){var encryptedSharedCredential=angular.copy($scope.storedCredential),old_key=VaultService.getActiveVault().vaultKey;CredentialService.reencryptCredential(encryptedSharedCredential.guid,old_key,key).progress(function(){}).then(function(data){var _credential=data.cryptogram;_credential.set_share_key=!0,_credential.skip_revision=!0,_credential.shared_key=EncryptService.encryptString(key),CredentialService.updateCredential(_credential,!0).then(function(){$scope.storedCredential.shared_key=_credential.shared_key,NotificationService.showNotification($translate.instant("credential.shared"),4e3),$scope.sharing_complete=!0})});for(var list=$scope.share_settings.credentialSharedWithUserAndGroup,i=0;i<list.length;i++)"user"===list[i].type&&$scope.applyShareToUser(list[i],key);if($scope.share_settings.linkSharing.enabled){var expire_time=new Date(angular.copy($scope.share_settings.linkSharing.settings.expire_time)).getTime()/1e3,shareObj={item_id:$scope.storedCredential.credential_id,item_guid:$scope.storedCredential.guid,permissions:$scope.share_settings.linkSharing.settings.acl.getAccessLevel(),expire_timestamp:expire_time,expire_views:$scope.share_settings.linkSharing.settings.expire_views};ShareService.createPublicSharedCredential(shareObj).then(function(){var hash=window.btoa($scope.storedCredential.guid+"<::>"+key);$scope.share_link=getShareLink(hash)})}})},$scope.uploadChanges=function(user){$scope.share_settings.upload_progress.total++,user.accessLevel=angular.copy(user.acl.getAccessLevel()),ShareService.shareWithUser(storedCredential,user).then(function(){$scope.share_settings.upload_progress.done++,$scope.share_settings.upload_progress.percent=$scope.share_settings.upload_progress.done/$scope.share_settings.upload_progress.total*100})},$scope.calculate_total_time=function(){$scope.share_settings.cypher_progress.times=$scope.share_settings.cypher_progress.times||[];for(var total=0,i=0;i<$scope.share_settings.cypher_progress.times.length;i++)total+=$scope.share_settings.cypher_progress.times[i].time;return total}}])}(),function(){angular.module("passmanApp").controller("SharingSettingsCtrl",["$scope","VaultService","CredentialService","SettingsService","$location","$routeParams","ShareService","EncryptService",function($scope,VaultService,CredentialService,SettingsService,$location,$routeParams,ShareService,EncryptService){$scope.active_vault=VaultService.getActiveVault(),$scope.sharing_keys=angular.copy(ShareService.getSharingKeys()),$scope.progress=1,$scope.generating=!1,$scope.available_sizes=[{size:1024,name:1024},{size:2048,name:2048},{size:4096,name:4096}],$scope.setKeySize=function(size){for(var i=0;i<$scope.available_sizes.length;i++)if($scope.available_sizes[i].size===size)return void($scope.key_size=$scope.available_sizes[i])},$scope.setKeySize(2048),$scope.generateKeys=function(length){$scope.progress=1,$scope.generating=!0,ShareService.generateRSAKeys(length).progress(function(progress){$scope.progress=progress>0?2:1,$scope.$digest()}).then(function(kp){$scope.generating=!1;var pem=ShareService.rsaKeyPairToPEM(kp);$scope.active_vault.private_sharing_key=EncryptService.encryptString(pem.privateKey),$scope.active_vault.public_sharing_key=pem.publicKey,VaultService.updateSharingKeys($scope.active_vault).then(function(){$scope.sharing_keys=ShareService.getSharingKeys()})})},$scope.updateSharingKeys=function(){$scope.active_vault.private_sharing_key=EncryptService.encryptString(angular.copy($scope.sharing_keys.private_sharing_key)),$scope.active_vault.public_sharing_key=angular.copy($scope.sharing_keys.public_sharing_key),VaultService.updateSharingKeys($scope.active_vault).then(function(){$scope.sharing_keys=ShareService.getSharingKeys()})}}])}(),function(){angular.module("passmanApp").controller("VaultCtrl",["$scope","VaultService","SettingsService","CredentialService","$location","ShareService","EncryptService","$translate","$rootScope","$interval",function($scope,VaultService,SettingsService,CredentialService,$location,ShareService,EncryptService,$translate,$rootScope,$interval){VaultService.getVaults().then(function(vaults){if($scope.vaults=vaults,null!=SettingsService.getSetting("defaultVault"))for(var default_vault=SettingsService.getSetting("defaultVault"),i=0;i<vaults.length;i++){var vault=vaults[i];if(vault.guid===default_vault.guid){$scope.default_vault=!0,$rootScope.override_default_vault||($scope.list_selected_vault=vault,$rootScope.override_default_vault=!1),SettingsService.setSetting("defaultVault",vault),SettingsService.getSetting("defaultVaultPass")&&$location.path("/vault/"+vault.guid),$scope.vault_tries[vault.guid]={tries:0,timeout:0};break}}});var key_strengths=["password.poor","password.poor","password.weak","password.good","password.strong"];$scope.default_vault=!1,$scope.remember_vault_password=!1,$scope.auto_logout_timer=!1,$scope.logout_timer="0",$scope.list_selected_vault=!1,$scope.minimal_value_key_strength=3;var settingsLoaded=function(){$scope.minimal_value_key_strength=SettingsService.getSetting("vault_key_strength"),$translate(key_strengths[SettingsService.getSetting("vault_key_strength")]).then(function(translation){$scope.required_score={strength:translation}})};SettingsService.getSetting("settings_loaded")?settingsLoaded():$rootScope.$on("settings_loaded",function(){settingsLoaded()}),$scope.toggleDefaultVault=function(){$scope.default_vault=!$scope.default_vault,$scope.default_vault===!0?SettingsService.setSetting("defaultVault",$scope.list_selected_vault):SettingsService.setSetting("defaultVault",null)},$scope.toggleRememberPassword=function(){$scope.remember_vault_password=!$scope.remember_vault_password,$scope.remember_vault_password&&(SettingsService.setSetting("defaultVault",$scope.list_selected_vault),$scope.default_vault=!0),$scope.remember_vault_password!==!0&&SettingsService.setSetting("defaultVault",null)},$scope.toggleAutoLogout=function(){$scope.auto_logout_timer=!$scope.auto_logout_timer},$scope.clearState=function(){$scope.list_selected_vault=!1,$scope.creating_vault=!1,$scope.error=!1},$scope.selectVault=function(vault){$scope.list_selected_vault=vault,$scope.vault_tries[vault.guid]||($scope.vault_tries[vault.guid]={tries:0,timeout:0})},$scope.sharing_keys={},$scope.newVault=function(){$scope.creating_vault=!0;var key_size=1024;ShareService.generateRSAKeys(key_size).progress(function(progress){var p=progress>0?2:1,msg=$translate.instant("generating.sharing.keys");msg=msg.replace("%step",p),$scope.creating_keys=msg,$scope.$digest()}).then(function(kp){var pem=ShareService.rsaKeyPairToPEM(kp);$scope.creating_keys=!1,$scope.sharing_keys.private_sharing_key=pem.privateKey,$scope.sharing_keys.public_sharing_key=pem.publicKey,$scope.$digest()})},$scope.requestDeletion=function(vault){$location.path("/vault/"+vault.guid+"/request-deletion")};var _loginToVault=function(vault,vault_key){var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),delete _vault.credentials;var timer=parseInt($scope.logout_timer);$scope.auto_logout_timer&&timer>0&&$rootScope.$broadcast("logout_timer_set",60*timer),VaultService.setActiveVault(_vault),$location.path("/vault/"+vault.guid)};$scope.selectLogoutTimer=function(time){$scope.auto_logout_timer=!0,$scope.logout_timer=time};var tickLockTimer=function(guid){$scope.vault_tries[guid].timeout=$scope.vault_tries[guid].timeout-1,$scope.vault_tries[guid].timeout<=0&&($interval.cancel($scope.vault_tries[guid].timer),$scope.vault_tries[guid].timeout=0)};$scope.vault_tries={},$scope.vaultDecryptionKey="",$scope.loginToVault=function(vault,vault_key){$scope.error=!1;var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),VaultService.setActiveVault(_vault);try{EncryptService.decryptString(vault.challenge_password),$scope.remember_vault_password&&SettingsService.setSetting("defaultVaultPass",vault_key),_loginToVault(vault,vault_key)}catch(e){if($scope.error=$translate.instant("invalid.vault.key"),$scope.vault_tries[vault.guid].tries=$scope.vault_tries[vault.guid].tries+1,$scope.vault_tries[vault.guid].tries>=3){var duration=Math.pow(2,1/7)*Math.pow(15,4/7)*Math.pow(Math.pow(2,2/7)*Math.pow(15,1/7),$scope.vault_tries[vault.guid].tries);$scope.vault_tries[vault.guid].timeout=duration,$scope.vault_tries[vault.guid].hasOwnProperty("timer")&&$interval.cancel($scope.vault_tries[vault.guid].timer),$scope.vault_tries[vault.guid].timer=$interval(function(){tickLockTimer(vault.guid)},1e3)}}},$scope.createVault=function(vault_name,vault_key,vault_key2){return vault_key!==vault_key2?void($scope.error=$translate.instant("password.do.not.match")):void VaultService.createVault(vault_name).then(function(vault){$scope.vaults.push(vault);var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),VaultService.setActiveVault(_vault),SettingsService.setSetting("defaultVaultPass",null),SettingsService.setSetting("defaultVault",null);var test_credential=CredentialService.newCredential();test_credential.label="Test key for vault "+vault_name,test_credential.hidden=!0,test_credential.vault_id=vault.vault_id,test_credential.password="lorum ipsum",CredentialService.createCredential(test_credential).then(function(){_vault.public_sharing_key=angular.copy($scope.sharing_keys.public_sharing_key),_vault.private_sharing_key=EncryptService.encryptString(angular.copy($scope.sharing_keys.private_sharing_key)),VaultService.updateSharingKeys(_vault).then(function(){_loginToVault(vault,vault_key)})})})}}])}(),function(){angular.module("passmanApp").controller("RequestDeleteCtrl",["$scope","$location","$http","$routeParams","VaultService","NotificationService","$translate",function($scope,$location,$http,$routeParams,VaultService,NotificationService,$translate){$scope.reason="",VaultService.getVault({guid:$routeParams.vault_id}).then(function(vault){$scope.pending_deletion=vault.delete_request_pending}),$scope.requestDeletion=function(){var queryUrl=OC.generateUrl("apps/passman/admin/request-deletion/"+$routeParams.vault_id),params={reason:$scope.reason};$http.post(queryUrl,params).then(function(){NotificationService.showNotification($translate.instant("deletion.requested"),5e3),$location.path("#/")})},$scope.removeRequestDeletion=function(){var queryUrl=OC.generateUrl("apps/passman/admin/request-deletion/"+$routeParams.vault_id);$http.delete(queryUrl).then(function(){NotificationService.showNotification($translate.instant("deletion.removed"),5e3),$location.path("#/")})}}])}(),angular.module("templates-main",["views/credential_revisions.html","views/edit_credential.html","views/partials/credential_template.html","views/partials/forms/edit_credential/basics.html","views/partials/forms/edit_credential/custom_fields.html","views/partials/forms/edit_credential/files.html","views/partials/forms/edit_credential/otp.html","views/partials/forms/edit_credential/password.html","views/partials/forms/settings/export.html","views/partials/forms/settings/general_settings.html","views/partials/forms/settings/generic_csv_import.html","views/partials/forms/settings/import.html","views/partials/forms/settings/password_settings.html","views/partials/forms/settings/sharing.html","views/partials/forms/settings/tool.html","views/partials/forms/share_credential/basics.html","views/partials/forms/share_credential/link_sharing.html","views/partials/icon-picker.html","views/partials/password-meter.html","views/settings.html","views/share_credential.html","views/show_vault.html","views/vault_req_deletion.html","views/vaults.html"]),angular.module("views/credential_revisions.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/credential_revisions.html",'<div class="main_list" off-click-filter="\'.download-js-link, .sidebar-shown, #app-sidebar\'"><div id="passman-controls"><div class="actions creatable"><div class="breadcrumb"><div class="crumb svg ui-droppable"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg"><a ng-click="cancelRevision()">{{active_vault.name}}</a></div><div class="crumb svg last"><a ng-if="storedCredential.credential_id">{{ \'showing.revisions\' | translate}} "{{revision.credential_data.label}}"</a></div></div></div></div><table class="credential-table" ng-init="menuOpen = false;"><tr ng-repeat="revision in revisions | orderBy:\'-created\'" ng-click="selectRevision(revision)" ng-class="{\'selected\': selectedRevision.revision_id == revision.revision_id}"><td><span class="icon"><i class="fa fa-lock"></i></span> <span class="label">{{ \'revision.of\' | translate}} {{revision.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}} ({{revision.credential_data.label}}) <span ng-if="revision.edited_by">{{ \'revision.edited.by\' | translate}} {{revision.edited_by}}</span></span></td></tr><tr ng-show="revisions.length == 0"><td>{{ \'no.revisions\' | translate}}</td></tr></table></div><div id="app-sidebar" class="detailsView scroll-container app_sidebar" off-click="closeSelected()" ng-show="selectedRevision"><span class="close icon-close" ng-click="closeSelected()" alt="Close"></span> <b ng-show="selectedRevision">{{ \'revision.of\' | translate}} {{selectedRevision.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</b><div class="credential-data"><div class="row" ng-show="selectedRevision.credential_data.label"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'label\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.label"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.username"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'account\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.username"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.password"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'password\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.password" secret="\'true\'"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.otp.secret"><div class="col-xs-4 col-md-3 col-lg-3">{{\'otp\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span otp-generator secret="selectedRevision.credential_data.otp.secret"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.email"><div class="col-xs-4 col-md-3 col-lg-3">{{\'email\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.email"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.url"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'url\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.url"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.description"><div class="col-xs-4 col-md-3 col-lg-3">{{\'notes\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.description_html"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.files.length > 0"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'files\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><div ng-repeat="file in selectedRevision.credential_data.files" class="link" ng-click="downloadFile(selectedRevision.credential_data, file)">{{file.filename}} ({{file.size | bytes}})</div></div></div><div class="row" ng-repeat="field in selectedRevision.credential_data.custom_fields"><div class="col-xs-4 col-md-3 col-lg-3">{{field.label}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="field.value" secret="field.secret" ng-if="field.field_type !== \'file\' || !field.field_type"></span> <span ng-if="field.field_type === \'file\'" class="link" ng-click="downloadFile(selectedCredential, field.value)">{{field.value.filename}} ({{field.value.size | bytes}})</span></div></div><div class="row" ng-show="selectedRevision.credential_data.expire_time > 0"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'expire.time\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9">{{selectedRevision.credential_data.expire_time * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row" ng-show="selectedRevision.credential_data.changed"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'changed\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9">{{selectedRevision.credential_data.changed * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row" ng-show="selectedRevision.credential_data.created"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'created\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9">{{selectedRevision.credential_data.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row"><div class="col-xs-12"><div class="tags"><span class="tag" ng-repeat="tag in selectedRevision.credential_data.tags">{{tag.text}}</span></div></div></div></div><div ng-show="selectedRevision"><button class="button" ng-click="restoreRevision(selectedRevision)"><span class="fa fa-edit"></span> {{ \'restore.revision\' | translate}}</button> <button class="button" ng-click="deleteRevision(selectedRevision)"><span class="fa fa-trash"></span> {{ \'delete.revision\' | translate}}</button></div></div>')}]),angular.module("views/edit_credential.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/edit_credential.html",'<div id="passman-controls"><div class="breadcrumb"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg" data-dir="/Test"><a ng-click="cancel()">{{active_vault.name}}</a></div><div class="crumb svg last" data-dir="/Test"><a ng-if="storedCredential.credential_id">{{ \'edit.credential\' | translate}} "{{storedCredential.label}}"</a> <a ng-if="!storedCredential.credential_id">{{ \'create.credential\' | translate}}</a></div></div></div></div><div><ul class="tab_header"><li ng-repeat="tab in tabs track by $index" class="tab" ng-class="isActiveTab(tab)? \'active\' : \'inactive\'" ng-click="onClickTab(tab)" use-theme color="\'true\'">{{tab.title}}<div class="indicator" use-theme negative="\'true\'"></div></li></ul><div class="tab_container edit_credential" use-theme type="\'border-top-color\'"><div ng-include="currentTab.url"></div><button ng-click="saveCredential()" ng-disabled="saving"><i class="fa fa-spinner fa-spin" ng-show="saving"></i> {{ \'save\' | translate}}</button> <button ng-click="cancel()">{{ \'cancel\' | translate}}</button></div></div>')}]),angular.module("views/partials/credential_template.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/credential_template.html",'<div class="credential-data"><div class="row" ng-show="credential.label && showLabel"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'label\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.label"></span></div></div><div class="compromised-details" ng-show="credential.compromised"><div class="icon-error-color icon"></div><div class="text">{{ \'compromised.warning\' | translate }}</div></div><div class="row" ng-show="credential.username"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'account\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.username"></span></div></div><div class="row" ng-show="credential.password"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'password\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.password" secret="\'true\'"></span></div></div><div class="row" ng-show="credential.otp.secret"><div class="col-xs-4 col-md-3 col-lg-3">{{\'otp\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span otp-generator secret="credential.otp.secret"></span></div></div><div class="row" ng-show="credential.email"><div class="col-xs-4 col-md-3 col-lg-3">{{\'email\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.email"></span></div></div><div class="row" ng-show="credential.url"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'url\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.url" url="true"></span></div></div><div class="row" ng-show="credential.description"><div class="col-xs-4 col-md-3 col-lg-3">{{\'notes\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.description_html"></span></div></div><div class="row" ng-show="credential.files.length > 0"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'files\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><div ng-repeat="file in credential.files"><a class="link" ng-click="downloadFile(credential, file)">{{file.filename}} ({{file.size | bytes}})</a><br></div></div></div><div class="row" ng-repeat="field in credential.custom_fields"><div class="col-xs-4 col-md-3 col-lg-3">{{field.label}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="field.value" secret="field.secret" ng-if="field.field_type !== \'file\' || !field.field_type"></span> <span ng-if="field.field_type === \'file\'" class="link" ng-click="downloadFile(credential, field.value)">{{field.value.filename}} ({{field.value.size | bytes}})</span></div></div><div class="row" ng-show="credential.expire_time > 0"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'expire.time\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9">{{credential.expire_time * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row" ng-show="credential.changed"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'changed\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9">{{credential.changed * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row" ng-show="credential.created"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'created\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9">{{credential.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row"><div class="col-xs-12"><div class="tags"><span class="tag" ng-repeat="tag in credential.tags track by $index">{{tag.text}}</span></div></div></div></div>')}]),angular.module("views/partials/forms/edit_credential/basics.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/edit_credential/basics.html",'<div class="row"><div class="col-xs-12 col-md-6"><label>{{ \'label\' | translate}}</label><div class="icon-label"><div class="icon-picker" icon-picker="storedCredential"></div><input type="text" class="form-control" ng-model="storedCredential.label"></div><label>{{ \'username\' | translate}}</label><div><input type="text" ng-model="storedCredential.username"></div><label>{{ \'email\' | translate}}</label><div><input type="text" ng-model="storedCredential.email"></div><label>{{ \'password\' | translate}}</label><div><password-gen ng-model="storedCredential.password" settings="pwSettings" callback="pwGenerated"></password-gen><ng-password-meter password="storedCredential.password"></ng-password-meter></div><div><label>{{ \'password.r\' | translate}}</label><input type="password" ng-model="storedCredential.password_repeat"></div><label>{{ \'url\' | translate}}</label><div><input type="text" ng-model="storedCredential.url"></div></div><div class="col-xs-12 col-md-6"><label>{{ \'notes\' | translate}}</label><div><textarea class="credential_textarea" ng-model="storedCredential.description"></textarea></div><label>{{ \'add.tag\' | translate}}</label><div class="tags_input"><tags-input ng-model="storedCredential.tags" replace-spaces-with-dashes="false"><auto-complete source="getTags($query)" min-length="0"></auto-complete></tags-input></div></div><div class="col-xs-12 col-md-6"><button class="compromised-button" ng-click="compromise()">{{ \'compromised.label\' | translate}}</button><div class="compromised-details" ng-show="storedCredential.compromised"><div class="icon-error-color icon"></div><div class="text">{{ \'compromised.warning\' | translate }}</div></div></div></div>');
diff --git a/l10n/af.js b/l10n/af.js
new file mode 100644
index 00000000..44adbb01
--- /dev/null
+++ b/l10n/af.js
@@ -0,0 +1,67 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "Algemeen",
+ "Custom Fields" : "Pasgemaakte Velde",
+ "Done" : "Gereed",
+ "Settings saved" : "Instellings gestoor",
+ "Share with users and groups" : "Deel met gebruikers en groepe",
+ "Share link" : "Deelskakel",
+ "Saved!" : "Gestoor!",
+ "Good" : "Goed",
+ "Toggle visibility" : "Tokkel sigbaarheid",
+ "Generate password" : "Genereer wagwoord",
+ "Username" : "Gebruikersnaam",
+ "File" : "Lêer",
+ "Add" : "Voeg by",
+ "Value" : "Waarde",
+ "Type" : "Tipe",
+ "Actions" : "Aksies",
+ "Filename" : "Lêernaam",
+ "Size" : "Grootte",
+ "Secret" : "Geheim",
+ "Expiration date" : "Vervaldatum",
+ "Password length" : "Wagwoordlengte",
+ "Minimum amount of digits" : "Minimum aantal syfers",
+ "Avoid ambiguous characters" : "Vermy dubbelsinnige karakters",
+ "Require every character type" : "Vereis elke karaktertipe",
+ "Export" : "Voer uit",
+ "Version" : "Weergawe",
+ "Bookmarklet" : "Boekmerkie",
+ "Vault password" : "Kluiswagwoord",
+ "Import" : "Voer In",
+ "User" : "Gebruiker",
+ "Files" : " Lêers",
+ "Pending" : "Hangend",
+ "Details" : "Besonderhede",
+ "by" : "deur",
+ "Label" : "Etiket",
+ "Save" : "Stoor",
+ "Cancel" : "Kanselleer",
+ "Settings" : "Instellings",
+ "Unshare" : "Ontdeel",
+ "Account" : "Rekening",
+ "Password" : "Wagwoord",
+ "OTP" : "OTP",
+ "E-mail" : "E-pos",
+ "URL" : "Bronadres",
+ "Notes" : "Notas",
+ "Created" : "Geskep",
+ "Edit" : "Wysig",
+ "Delete" : "Skrap",
+ "Share" : "Deel",
+ "Date" : "Datum",
+ "Never" : "Nooit",
+ "Logout" : "Teken af",
+ "Donate" : "Skenk",
+ "Tags" : "Etikette",
+ "Loading…" : "Laai…",
+ "email" : "e-pos",
+ "Description" : "Beskrywing",
+ "Passman" : "Passman",
+ "Connection to server lost" : "Verbinding met bediener verloor",
+ "Saving..." : "Stoor tans…",
+ "Dismiss" : "Ontslaan",
+ "seconds ago" : "sekondes gelede"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/af.json b/l10n/af.json
new file mode 100644
index 00000000..5318f539
--- /dev/null
+++ b/l10n/af.json
@@ -0,0 +1,65 @@
+{ "translations": {
+ "General" : "Algemeen",
+ "Custom Fields" : "Pasgemaakte Velde",
+ "Done" : "Gereed",
+ "Settings saved" : "Instellings gestoor",
+ "Share with users and groups" : "Deel met gebruikers en groepe",
+ "Share link" : "Deelskakel",
+ "Saved!" : "Gestoor!",
+ "Good" : "Goed",
+ "Toggle visibility" : "Tokkel sigbaarheid",
+ "Generate password" : "Genereer wagwoord",
+ "Username" : "Gebruikersnaam",
+ "File" : "Lêer",
+ "Add" : "Voeg by",
+ "Value" : "Waarde",
+ "Type" : "Tipe",
+ "Actions" : "Aksies",
+ "Filename" : "Lêernaam",
+ "Size" : "Grootte",
+ "Secret" : "Geheim",
+ "Expiration date" : "Vervaldatum",
+ "Password length" : "Wagwoordlengte",
+ "Minimum amount of digits" : "Minimum aantal syfers",
+ "Avoid ambiguous characters" : "Vermy dubbelsinnige karakters",
+ "Require every character type" : "Vereis elke karaktertipe",
+ "Export" : "Voer uit",
+ "Version" : "Weergawe",
+ "Bookmarklet" : "Boekmerkie",
+ "Vault password" : "Kluiswagwoord",
+ "Import" : "Voer In",
+ "User" : "Gebruiker",
+ "Files" : " Lêers",
+ "Pending" : "Hangend",
+ "Details" : "Besonderhede",
+ "by" : "deur",
+ "Label" : "Etiket",
+ "Save" : "Stoor",
+ "Cancel" : "Kanselleer",
+ "Settings" : "Instellings",
+ "Unshare" : "Ontdeel",
+ "Account" : "Rekening",
+ "Password" : "Wagwoord",
+ "OTP" : "OTP",
+ "E-mail" : "E-pos",
+ "URL" : "Bronadres",
+ "Notes" : "Notas",
+ "Created" : "Geskep",
+ "Edit" : "Wysig",
+ "Delete" : "Skrap",
+ "Share" : "Deel",
+ "Date" : "Datum",
+ "Never" : "Nooit",
+ "Logout" : "Teken af",
+ "Donate" : "Skenk",
+ "Tags" : "Etikette",
+ "Loading…" : "Laai…",
+ "email" : "e-pos",
+ "Description" : "Beskrywing",
+ "Passman" : "Passman",
+ "Connection to server lost" : "Verbinding met bediener verloor",
+ "Saving..." : "Stoor tans…",
+ "Dismiss" : "Ontslaan",
+ "seconds ago" : "sekondes gelede"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/ar.js b/l10n/ar.js
index 28ce1566..b769d4c7 100644
--- a/l10n/ar.js
+++ b/l10n/ar.js
@@ -1,7 +1,7 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "الكلمات السرية",
+ "General" : "العامة",
"Starting export" : "عملية التصدير جارية",
"Done" : "تم",
"Skip first row" : "تجاهل الصف الأول",
@@ -9,11 +9,15 @@ OC.L10N.register(
"Settings saved" : "تم حفظ الإعدادات",
"General settings" : "الإعدادات العامة",
"Password settings" : "إعدادات كلمة السر",
+ "Sharing" : "المشاركة",
+ "Share with users and groups" : "شارك مع مستخدمين أو مجموعات",
"Share link" : "شارك الرابط",
"Poor" : "ضعيفة جدًا",
"Weak" : "ضعيفة",
"Good" : "جيّدة",
"Strong" : "قوية",
+ "Copy to clipboard" : "انسخه إلى الحافظة",
+ "Generate password" : "توليد كلمة سرية",
"Username" : "إسم المستخدم",
"Repeat password" : "أعد كتابة الكلمة السرية",
"Use this icon" : "إستخدم هذه الأيقونة",
@@ -23,34 +27,61 @@ OC.L10N.register(
"File" : "ملف",
"Add" : "إضافة",
"Value" : "القيمة",
+ "Type" : "حسب النوع",
"Actions" : "الإجراءات",
"Filename" : "إسم الملف",
"Upload date" : "آخر تحديث",
"Size" : "الحجم",
"Secret" : "السر",
+ "Expiration date" : "تاريخ إنتهاء الصلاحية",
+ "Disabled" : "معطّل",
"Password length" : "طول كلمة السر",
+ "Export" : "تصدير",
+ "Version" : "الإصدار",
+ "Import" : "استيراد",
+ "Public key" : "المفتاح العمومي",
+ "Uploading" : "جاري الرفع...",
"User" : "المستخدِم",
+ "Read" : "القراءة",
+ "Write" : "الكتابة",
"Files" : "الملفات",
+ "Pending" : "معلّق",
"Show files" : "إظهار الملفات",
"Details" : "التفاصيل",
"Hide details" : "إخفاء التفاصيل",
"Password score" : "قوة الكلمة السرية",
"Dictionary name" : "إسم القاموس",
+ "by" : "من قبل",
+ "Label" : "تسمية",
"Save" : "حفظ",
"Cancel" : "إلغاء",
"Settings" : "الإعدادات",
+ "Unshare" : "إلغاء المشاركة",
"Account" : "الحساب",
"Password" : "كلمة السر",
"E-mail" : "البريد الإلكتروني",
"URL" : "الرابط",
"Notes" : "الملاحظات",
+ "Created" : "أُنشئ",
"Edit" : "تعديل",
"Delete" : "حذف",
"Share" : "شارك",
"Permissions" : "التصريحات",
"Date" : "التاريخ",
+ "Accept" : "قبول",
+ "Decline" : "رفض",
+ "Never" : "أبدا",
"Show All" : "إظهار الكل",
"Tags" : "الوسوم",
- "Description" : "الوصف"
+ "Loading…" : "التحميل جارٍ…",
+ "email" : "البريد الإلكتروني",
+ "Description" : "الوصف",
+ "You created %1$s" : "لقد أنشأت %1$s",
+ "You deleted %1$s" : "حذفت %1$s",
+ "Passwords" : "الكلمات السرية",
+ "Connection to server lost" : "تم فقد الاتصال بالخادم",
+ "Saving..." : "جاري الحفظ...",
+ "Dismiss" : "تراجع",
+ "seconds ago" : "ثوان مضت"
},
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
diff --git a/l10n/ar.json b/l10n/ar.json
index 8fab602a..68db76df 100644
--- a/l10n/ar.json
+++ b/l10n/ar.json
@@ -1,5 +1,5 @@
{ "translations": {
- "Passwords" : "الكلمات السرية",
+ "General" : "العامة",
"Starting export" : "عملية التصدير جارية",
"Done" : "تم",
"Skip first row" : "تجاهل الصف الأول",
@@ -7,11 +7,15 @@
"Settings saved" : "تم حفظ الإعدادات",
"General settings" : "الإعدادات العامة",
"Password settings" : "إعدادات كلمة السر",
+ "Sharing" : "المشاركة",
+ "Share with users and groups" : "شارك مع مستخدمين أو مجموعات",
"Share link" : "شارك الرابط",
"Poor" : "ضعيفة جدًا",
"Weak" : "ضعيفة",
"Good" : "جيّدة",
"Strong" : "قوية",
+ "Copy to clipboard" : "انسخه إلى الحافظة",
+ "Generate password" : "توليد كلمة سرية",
"Username" : "إسم المستخدم",
"Repeat password" : "أعد كتابة الكلمة السرية",
"Use this icon" : "إستخدم هذه الأيقونة",
@@ -21,34 +25,61 @@
"File" : "ملف",
"Add" : "إضافة",
"Value" : "القيمة",
+ "Type" : "حسب النوع",
"Actions" : "الإجراءات",
"Filename" : "إسم الملف",
"Upload date" : "آخر تحديث",
"Size" : "الحجم",
"Secret" : "السر",
+ "Expiration date" : "تاريخ إنتهاء الصلاحية",
+ "Disabled" : "معطّل",
"Password length" : "طول كلمة السر",
+ "Export" : "تصدير",
+ "Version" : "الإصدار",
+ "Import" : "استيراد",
+ "Public key" : "المفتاح العمومي",
+ "Uploading" : "جاري الرفع...",
"User" : "المستخدِم",
+ "Read" : "القراءة",
+ "Write" : "الكتابة",
"Files" : "الملفات",
+ "Pending" : "معلّق",
"Show files" : "إظهار الملفات",
"Details" : "التفاصيل",
"Hide details" : "إخفاء التفاصيل",
"Password score" : "قوة الكلمة السرية",
"Dictionary name" : "إسم القاموس",
+ "by" : "من قبل",
+ "Label" : "تسمية",
"Save" : "حفظ",
"Cancel" : "إلغاء",
"Settings" : "الإعدادات",
+ "Unshare" : "إلغاء المشاركة",
"Account" : "الحساب",
"Password" : "كلمة السر",
"E-mail" : "البريد الإلكتروني",
"URL" : "الرابط",
"Notes" : "الملاحظات",
+ "Created" : "أُنشئ",
"Edit" : "تعديل",
"Delete" : "حذف",
"Share" : "شارك",
"Permissions" : "التصريحات",
"Date" : "التاريخ",
+ "Accept" : "قبول",
+ "Decline" : "رفض",
+ "Never" : "أبدا",
"Show All" : "إظهار الكل",
"Tags" : "الوسوم",
- "Description" : "الوصف"
+ "Loading…" : "التحميل جارٍ…",
+ "email" : "البريد الإلكتروني",
+ "Description" : "الوصف",
+ "You created %1$s" : "لقد أنشأت %1$s",
+ "You deleted %1$s" : "حذفت %1$s",
+ "Passwords" : "الكلمات السرية",
+ "Connection to server lost" : "تم فقد الاتصال بالخادم",
+ "Saving..." : "جاري الحفظ...",
+ "Dismiss" : "تراجع",
+ "seconds ago" : "ثوان مضت"
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
} \ No newline at end of file
diff --git a/l10n/ast.js b/l10n/ast.js
index 8efa3068..52483a7d 100644
--- a/l10n/ast.js
+++ b/l10n/ast.js
@@ -1,13 +1,13 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñes",
"Generating sharing keys ( %s / 2)" : "Xenerando claves de compartición ( %s / 2)",
"Passwords do not match" : "Les contraseñes nun concasen",
"General" : "Xeneral",
"Error loading file" : "Fallu cargando'l ficheru",
"An error occurred during decryption" : "Asocedió un fallu nel descifráu",
"Credential created!" : "¡Creose la credencial!",
+ "Credential updated" : "Anováronse les credenciales",
"Invalid QR code" : "Códigu QR non válidu",
"Decrypting credentials" : "Descifrando credenciales",
"Done" : "Fecho",
@@ -15,7 +15,11 @@ OC.L10N.register(
"Added {{credential}}" : "Amestóse {{credential}}",
"Skip first row" : "Saltar primer filera",
"The first 5 lines of the CSV are shown." : "Amuésense les 5 primeres llinies del CVS.",
+ "Settings saved" : "Axustes guardaos",
"General settings" : "Axustes xenerales",
+ "Sharing" : "Compartiendo",
+ "Share with users and groups" : "Compartir con usuarios y grupos",
+ "Share link" : "Share link",
"Saved!" : "¡Guardóse!",
"Poor" : "Probe",
"Weak" : "Feble",
@@ -28,10 +32,16 @@ OC.L10N.register(
"Text" : "Testu",
"File" : "Ficheru",
"Add" : "Amestar",
+ "Type" : "Type",
+ "Actions" : "Aiciones",
+ "Filename" : "Nome de ficheru",
+ "Size" : "Tamañu",
"Current OTP settings" : "Axustes OTP actuales",
+ "Secret" : "Secretu",
"Expiration date" : "Data de caducidá",
"No expiration date set" : "Nun s'afitó data de caducidá",
"Renew interval" : "Intervalu de renovación",
+ "Disabled" : "Deshabilitáu",
"Day(s)" : "Día(es)",
"Week(s)" : "Selmana(es)",
"Month(s)" : "Mes(es)",
@@ -40,13 +50,16 @@ OC.L10N.register(
"Minimum amount of digits" : "Cantidá mínima de díxitos",
"Use lowercase letters" : "Usar letres minúscules",
"Use special characters" : "Usar caráuteres especiales",
+ "Export" : "Esportar",
"Change" : "Camudar",
"Processing" : "Procesando",
"Total progress" : "Progresu total",
"About Passman" : "Tocante a Passman",
"Version" : "Versión",
"Donate to support development" : "Dona pa sofitar el desendolcu",
+ "Vault password" : "Contraseña del bagul",
"This process is irreversible" : "Esti procesu ye irreversible",
+ "Import" : "Importar",
"Private Key" : "Clave privada",
"Public key" : "Clave pública",
"Key size" : "Tamañu de clave",
@@ -60,6 +73,7 @@ OC.L10N.register(
"Action" : "Aición",
"Uploading" : "Xubiendo",
"User" : "Usuariu",
+ "Read" : "Lleer",
"Files" : "Ficheros",
"Revisions" : "Revisiones",
"Pending" : "Pendiente",
@@ -79,6 +93,7 @@ OC.L10N.register(
"Save" : "Guardar",
"Cancel" : "Encaboxar",
"Settings" : "Axustes",
+ "Unshare" : "Dexar de compartir",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Amosando {{number_filtered}} credenciales de {{credential_number}}",
"Account" : "Cuenta",
"Password" : "Contraseña",
@@ -86,6 +101,7 @@ OC.L10N.register(
"E-mail" : "Corréu",
"URL" : "URL",
"Notes" : "Notes",
+ "Created" : "Creóse",
"Edit" : "Editar",
"Delete" : "Desaniciar",
"Share" : "Compartir",
@@ -99,8 +115,11 @@ OC.L10N.register(
"Never" : "Enxamás",
"Logout" : "Zarrar sesión",
"Donate" : "Donar",
+ "Tags" : "Etiquetes",
"Someone has shared a credential with you." : "Daquién compartió una credencial contigo.",
"Loading…" : "Cargando...",
+ "email" : "corréu",
+ "Description" : "Descripción",
"Error while saving field" : "Fallu entrín se guardaba'l campu",
"A Passman item has expired" : "Caducó un elementu de Passman",
"A Passman item has been shared" : "Compartióse un elementu de Passman",
@@ -111,6 +130,7 @@ OC.L10N.register(
"You deleted %1$s" : "Desaniciesti %1$s",
"You recovered %1$s" : "Recuperesti %1$s",
"%s has been shared with a link" : "%s compartióse con un enllaz",
+ "Passwords" : "Contraseñes",
"Ignore" : "Inorar",
"%s shared \"%s\" with you. Click here to accept" : "%s compartió «%s» contigo. Primi equí p'aceutar",
"%s has declined your share request for \"%s\"." : "%s refugó la to solicitú de compartición pa «%s».",
diff --git a/l10n/ast.json b/l10n/ast.json
index a9877207..37cf342d 100644
--- a/l10n/ast.json
+++ b/l10n/ast.json
@@ -1,11 +1,11 @@
{ "translations": {
- "Passwords" : "Contraseñes",
"Generating sharing keys ( %s / 2)" : "Xenerando claves de compartición ( %s / 2)",
"Passwords do not match" : "Les contraseñes nun concasen",
"General" : "Xeneral",
"Error loading file" : "Fallu cargando'l ficheru",
"An error occurred during decryption" : "Asocedió un fallu nel descifráu",
"Credential created!" : "¡Creose la credencial!",
+ "Credential updated" : "Anováronse les credenciales",
"Invalid QR code" : "Códigu QR non válidu",
"Decrypting credentials" : "Descifrando credenciales",
"Done" : "Fecho",
@@ -13,7 +13,11 @@
"Added {{credential}}" : "Amestóse {{credential}}",
"Skip first row" : "Saltar primer filera",
"The first 5 lines of the CSV are shown." : "Amuésense les 5 primeres llinies del CVS.",
+ "Settings saved" : "Axustes guardaos",
"General settings" : "Axustes xenerales",
+ "Sharing" : "Compartiendo",
+ "Share with users and groups" : "Compartir con usuarios y grupos",
+ "Share link" : "Share link",
"Saved!" : "¡Guardóse!",
"Poor" : "Probe",
"Weak" : "Feble",
@@ -26,10 +30,16 @@
"Text" : "Testu",
"File" : "Ficheru",
"Add" : "Amestar",
+ "Type" : "Type",
+ "Actions" : "Aiciones",
+ "Filename" : "Nome de ficheru",
+ "Size" : "Tamañu",
"Current OTP settings" : "Axustes OTP actuales",
+ "Secret" : "Secretu",
"Expiration date" : "Data de caducidá",
"No expiration date set" : "Nun s'afitó data de caducidá",
"Renew interval" : "Intervalu de renovación",
+ "Disabled" : "Deshabilitáu",
"Day(s)" : "Día(es)",
"Week(s)" : "Selmana(es)",
"Month(s)" : "Mes(es)",
@@ -38,13 +48,16 @@
"Minimum amount of digits" : "Cantidá mínima de díxitos",
"Use lowercase letters" : "Usar letres minúscules",
"Use special characters" : "Usar caráuteres especiales",
+ "Export" : "Esportar",
"Change" : "Camudar",
"Processing" : "Procesando",
"Total progress" : "Progresu total",
"About Passman" : "Tocante a Passman",
"Version" : "Versión",
"Donate to support development" : "Dona pa sofitar el desendolcu",
+ "Vault password" : "Contraseña del bagul",
"This process is irreversible" : "Esti procesu ye irreversible",
+ "Import" : "Importar",
"Private Key" : "Clave privada",
"Public key" : "Clave pública",
"Key size" : "Tamañu de clave",
@@ -58,6 +71,7 @@
"Action" : "Aición",
"Uploading" : "Xubiendo",
"User" : "Usuariu",
+ "Read" : "Lleer",
"Files" : "Ficheros",
"Revisions" : "Revisiones",
"Pending" : "Pendiente",
@@ -77,6 +91,7 @@
"Save" : "Guardar",
"Cancel" : "Encaboxar",
"Settings" : "Axustes",
+ "Unshare" : "Dexar de compartir",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Amosando {{number_filtered}} credenciales de {{credential_number}}",
"Account" : "Cuenta",
"Password" : "Contraseña",
@@ -84,6 +99,7 @@
"E-mail" : "Corréu",
"URL" : "URL",
"Notes" : "Notes",
+ "Created" : "Creóse",
"Edit" : "Editar",
"Delete" : "Desaniciar",
"Share" : "Compartir",
@@ -97,8 +113,11 @@
"Never" : "Enxamás",
"Logout" : "Zarrar sesión",
"Donate" : "Donar",
+ "Tags" : "Etiquetes",
"Someone has shared a credential with you." : "Daquién compartió una credencial contigo.",
"Loading…" : "Cargando...",
+ "email" : "corréu",
+ "Description" : "Descripción",
"Error while saving field" : "Fallu entrín se guardaba'l campu",
"A Passman item has expired" : "Caducó un elementu de Passman",
"A Passman item has been shared" : "Compartióse un elementu de Passman",
@@ -109,6 +128,7 @@
"You deleted %1$s" : "Desaniciesti %1$s",
"You recovered %1$s" : "Recuperesti %1$s",
"%s has been shared with a link" : "%s compartióse con un enllaz",
+ "Passwords" : "Contraseñes",
"Ignore" : "Inorar",
"%s shared \"%s\" with you. Click here to accept" : "%s compartió «%s» contigo. Primi equí p'aceutar",
"%s has declined your share request for \"%s\"." : "%s refugó la to solicitú de compartición pa «%s».",
diff --git a/l10n/az.js b/l10n/az.js
new file mode 100644
index 00000000..e714d79a
--- /dev/null
+++ b/l10n/az.js
@@ -0,0 +1,45 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "Ümumi",
+ "Done" : "Done",
+ "Sharing" : "Paylaşılır",
+ "Share link" : "Linki yayımla",
+ "Username" : "İstifadəçi adı",
+ "File" : "File",
+ "Add" : "Əlavə etmək",
+ "Type" : "Type",
+ "Actions" : "İşlər",
+ "Size" : "Həcm",
+ "Disabled" : "Dayandırılıb",
+ "Export" : "Çıxarış",
+ "Version" : "Versiya",
+ "Import" : "Əlavə et",
+ "Public key" : "İctimai açar",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Read" : "Oxu",
+ "Files" : "Fayllar",
+ "Pending" : "Gözləmə",
+ "Details" : "Detallar",
+ "by" : "onunla",
+ "Save" : "Saxla",
+ "Cancel" : "Dayandır",
+ "Settings" : "Quraşdırmalar",
+ "Unshare" : "Paylaşımı durdur",
+ "Password" : "Şifrə",
+ "URL" : "URL",
+ "Notes" : "Qeydlər",
+ "Edit" : "Dəyişiklik et",
+ "Delete" : "Sil",
+ "Share" : "Paylaş",
+ "Date" : "Date",
+ "Never" : "Heç vaxt",
+ "Tags" : "Işarələr",
+ "Description" : "Açıqlanma",
+ "You created %1$s" : "Siz yaratdınız %1$s",
+ "You deleted %1$s" : "Siz silindiniz %1$s",
+ "Saving..." : "Saxlama...",
+ "seconds ago" : "saniyələr öncə"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/az.json b/l10n/az.json
new file mode 100644
index 00000000..d0c4e62e
--- /dev/null
+++ b/l10n/az.json
@@ -0,0 +1,43 @@
+{ "translations": {
+ "General" : "Ümumi",
+ "Done" : "Done",
+ "Sharing" : "Paylaşılır",
+ "Share link" : "Linki yayımla",
+ "Username" : "İstifadəçi adı",
+ "File" : "File",
+ "Add" : "Əlavə etmək",
+ "Type" : "Type",
+ "Actions" : "İşlər",
+ "Size" : "Həcm",
+ "Disabled" : "Dayandırılıb",
+ "Export" : "Çıxarış",
+ "Version" : "Versiya",
+ "Import" : "Əlavə et",
+ "Public key" : "İctimai açar",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Read" : "Oxu",
+ "Files" : "Fayllar",
+ "Pending" : "Gözləmə",
+ "Details" : "Detallar",
+ "by" : "onunla",
+ "Save" : "Saxla",
+ "Cancel" : "Dayandır",
+ "Settings" : "Quraşdırmalar",
+ "Unshare" : "Paylaşımı durdur",
+ "Password" : "Şifrə",
+ "URL" : "URL",
+ "Notes" : "Qeydlər",
+ "Edit" : "Dəyişiklik et",
+ "Delete" : "Sil",
+ "Share" : "Paylaş",
+ "Date" : "Date",
+ "Never" : "Heç vaxt",
+ "Tags" : "Işarələr",
+ "Description" : "Açıqlanma",
+ "You created %1$s" : "Siz yaratdınız %1$s",
+ "You deleted %1$s" : "Siz silindiniz %1$s",
+ "Saving..." : "Saxlama...",
+ "seconds ago" : "saniyələr öncə"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/be.js b/l10n/be.js
new file mode 100644
index 00000000..e5fce0ac
--- /dev/null
+++ b/l10n/be.js
@@ -0,0 +1,23 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Done" : "Done",
+ "Share link" : "Share link",
+ "Username" : "Username",
+ "File" : "File",
+ "Add" : "Add",
+ "Type" : "Type",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "Файлы",
+ "Save" : "Save",
+ "Cancel" : "Cancel",
+ "Settings" : "Налады",
+ "Password" : "Password",
+ "URL" : "Url",
+ "Notes" : "Notes",
+ "Delete" : "Delete",
+ "Share" : "Падзяліцца",
+ "Date" : "Date"
+},
+"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/l10n/be.json b/l10n/be.json
new file mode 100644
index 00000000..fbd54e5f
--- /dev/null
+++ b/l10n/be.json
@@ -0,0 +1,21 @@
+{ "translations": {
+ "Done" : "Done",
+ "Share link" : "Share link",
+ "Username" : "Username",
+ "File" : "File",
+ "Add" : "Add",
+ "Type" : "Type",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "Файлы",
+ "Save" : "Save",
+ "Cancel" : "Cancel",
+ "Settings" : "Налады",
+ "Password" : "Password",
+ "URL" : "Url",
+ "Notes" : "Notes",
+ "Delete" : "Delete",
+ "Share" : "Падзяліцца",
+ "Date" : "Date"
+},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
+} \ No newline at end of file
diff --git a/l10n/bg.js b/l10n/bg.js
index 62d8cca0..610d531e 100644
--- a/l10n/bg.js
+++ b/l10n/bg.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Пароли",
"Generating sharing keys ( %s / 2)" : "Генериране на ключове ( %s / 2)",
"Incorrect vault password!" : "Паролата за хранилището е грешна!",
"Passwords do not match" : "Паролите не съвпадат",
@@ -38,6 +37,9 @@ OC.L10N.register(
"Export credentials" : "Износ на идент. данни",
"Sharing" : "Споделяне",
"Please log in with your new vault password" : "Впишете се с новата парола",
+ "Share with users and groups" : "Споделяне с потребители и групи",
+ "Share link" : "Връзка за споделяне",
+ "Saved!" : "Записано!",
"Poor" : "Много проста",
"Weak" : "Проста",
"Good" : "Добра",
@@ -56,6 +58,7 @@ OC.L10N.register(
"Choose a file" : "Изберете файл",
"Text" : "Текст",
"File" : "Файл",
+ "Add" : "Добавяне",
"Value" : "Стойност",
"Type" : "Тип",
"Actions" : "Действия",
@@ -65,7 +68,9 @@ OC.L10N.register(
"Current OTP settings" : "Текущи OTP настройки",
"Issuer" : "Издател",
"Secret" : "Тайна",
+ "Expiration date" : "Валидност",
"No expiration date set" : "Не е зададен срок на валидност",
+ "Disabled" : "Изключено",
"Year(s)" : "Година",
"Password generation settings" : "Настройки за генериране на пароли",
"Password length" : "Дължина на паролата",
@@ -89,6 +94,7 @@ OC.L10N.register(
"About Passman" : "Относно Passman",
"Version" : "Версия",
"Donate to support development" : "Дарете, за да подпогнете развитието",
+ "Bookmarklet" : "Скриптова отметка",
"Save your passwords with one click." : "Записвайте пароли с едно кликване.",
"Drag below button to your bookmark toolbar." : "Завлечете долния бутон в лентата с отметки.",
"Delete vault" : "Изтрий хранилището",
@@ -110,10 +116,12 @@ OC.L10N.register(
"A total of {{scan_result}} weak credentials were found." : "Открити са {{scan_result}} прости пароли.",
"Score" : "Оценка",
"Action" : "Действие",
+ "Uploading" : "Качване",
"User" : "Потребител",
"Read" : "Четене",
"Write" : "Писане",
"Files" : "Файлове",
+ "Pending" : "Чакащо",
"Show files" : "Покажи файловете",
"Details" : "Подробности",
"Hide details" : "Скриване на подробностите",
@@ -127,11 +135,13 @@ OC.L10N.register(
"10B / second" : "10B / секунда",
"Pattern" : "Модел",
"Dictionary name" : "Име на речника",
+ "by" : "от",
"Label" : "Име",
"Create new credential" : "Идентификационните данни са записани",
"Save" : "Запиши",
"Cancel" : "Отказ",
"Settings" : "Настройки",
+ "Unshare" : "Прекрати споделянето",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Виждате {{number_filtered}} от {{credential_number}}",
"Account" : "Профил",
"Password" : "Парола",
@@ -209,6 +219,7 @@ OC.L10N.register(
"You permanently deleted %1$s" : "Изтрихте необратимо %1$s",
"%1$s has been shared with %2$s" : "%1$s бе споделено с %2$s",
"%s has been shared with a link" : "%s бе споделено с връзка",
+ "Passwords" : "Пароли",
"Remind me later" : "Напомни ми по-късно",
"Ignore" : "Игнорирай",
"%s shared \"%s\" with you. Click here to accept" : "%s сподели с вас \"%s\". Кликнете тук, за да приемете",
diff --git a/l10n/bg.json b/l10n/bg.json
index af119c25..a6f67fee 100644
--- a/l10n/bg.json
+++ b/l10n/bg.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Пароли",
"Generating sharing keys ( %s / 2)" : "Генериране на ключове ( %s / 2)",
"Incorrect vault password!" : "Паролата за хранилището е грешна!",
"Passwords do not match" : "Паролите не съвпадат",
@@ -36,6 +35,9 @@
"Export credentials" : "Износ на идент. данни",
"Sharing" : "Споделяне",
"Please log in with your new vault password" : "Впишете се с новата парола",
+ "Share with users and groups" : "Споделяне с потребители и групи",
+ "Share link" : "Връзка за споделяне",
+ "Saved!" : "Записано!",
"Poor" : "Много проста",
"Weak" : "Проста",
"Good" : "Добра",
@@ -54,6 +56,7 @@
"Choose a file" : "Изберете файл",
"Text" : "Текст",
"File" : "Файл",
+ "Add" : "Добавяне",
"Value" : "Стойност",
"Type" : "Тип",
"Actions" : "Действия",
@@ -63,7 +66,9 @@
"Current OTP settings" : "Текущи OTP настройки",
"Issuer" : "Издател",
"Secret" : "Тайна",
+ "Expiration date" : "Валидност",
"No expiration date set" : "Не е зададен срок на валидност",
+ "Disabled" : "Изключено",
"Year(s)" : "Година",
"Password generation settings" : "Настройки за генериране на пароли",
"Password length" : "Дължина на паролата",
@@ -87,6 +92,7 @@
"About Passman" : "Относно Passman",
"Version" : "Версия",
"Donate to support development" : "Дарете, за да подпогнете развитието",
+ "Bookmarklet" : "Скриптова отметка",
"Save your passwords with one click." : "Записвайте пароли с едно кликване.",
"Drag below button to your bookmark toolbar." : "Завлечете долния бутон в лентата с отметки.",
"Delete vault" : "Изтрий хранилището",
@@ -108,10 +114,12 @@
"A total of {{scan_result}} weak credentials were found." : "Открити са {{scan_result}} прости пароли.",
"Score" : "Оценка",
"Action" : "Действие",
+ "Uploading" : "Качване",
"User" : "Потребител",
"Read" : "Четене",
"Write" : "Писане",
"Files" : "Файлове",
+ "Pending" : "Чакащо",
"Show files" : "Покажи файловете",
"Details" : "Подробности",
"Hide details" : "Скриване на подробностите",
@@ -125,11 +133,13 @@
"10B / second" : "10B / секунда",
"Pattern" : "Модел",
"Dictionary name" : "Име на речника",
+ "by" : "от",
"Label" : "Име",
"Create new credential" : "Идентификационните данни са записани",
"Save" : "Запиши",
"Cancel" : "Отказ",
"Settings" : "Настройки",
+ "Unshare" : "Прекрати споделянето",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Виждате {{number_filtered}} от {{credential_number}}",
"Account" : "Профил",
"Password" : "Парола",
@@ -207,6 +217,7 @@
"You permanently deleted %1$s" : "Изтрихте необратимо %1$s",
"%1$s has been shared with %2$s" : "%1$s бе споделено с %2$s",
"%s has been shared with a link" : "%s бе споделено с връзка",
+ "Passwords" : "Пароли",
"Remind me later" : "Напомни ми по-късно",
"Ignore" : "Игнорирай",
"%s shared \"%s\" with you. Click here to accept" : "%s сподели с вас \"%s\". Кликнете тук, за да приемете",
diff --git a/l10n/bn_BD.js b/l10n/bn_BD.js
new file mode 100644
index 00000000..3326616c
--- /dev/null
+++ b/l10n/bn_BD.js
@@ -0,0 +1,44 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "সাধারণ",
+ "Done" : "Done",
+ "Sharing" : "ভাগাভাগিরত",
+ "Share link" : "লিংক ভাগাভাগি করেন",
+ "Username" : "ব্যবহারকারী",
+ "File" : "File",
+ "Add" : "যোগ করুন",
+ "Type" : "ধরণ",
+ "Actions" : "পদক্ষেপসমূহ",
+ "Size" : "আকার",
+ "Expiration date" : "মেয়াদোত্তীর্ণ হওয়ার তারিখ",
+ "Disabled" : "অকার্যকর",
+ "Export" : "রপ্তানি",
+ "Version" : "ভার্সন",
+ "Import" : "আমদানি",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Read" : "পড়",
+ "Files" : "ফাইল",
+ "Pending" : "মুলতুবি",
+ "Details" : "বিসতারিত",
+ "by" : "কর্তৃক",
+ "Save" : "সংরক্ষণ",
+ "Cancel" : "বাতির",
+ "Settings" : "সেটিংস",
+ "Unshare" : "ভাগাভাগি বাতিল ",
+ "Password" : "কূটশব্দ",
+ "URL" : "URL",
+ "Notes" : "নোট",
+ "Edit" : "সম্পাদনা",
+ "Delete" : "মুছে",
+ "Share" : "ভাগাভাগি কর",
+ "Date" : "Date",
+ "Tags" : "ট্যাগ",
+ "Description" : "বিবরণ",
+ "You created %1$s" : "আপনি তৈরি করেছেন %1$s",
+ "You deleted %1$s" : "আপনি ডিলিট করেছেন %1$s",
+ "Saving..." : "সংরক্ষণ করা হচ্ছে..",
+ "seconds ago" : "সেকেন্ড পূর্বে"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/bn_BD.json b/l10n/bn_BD.json
new file mode 100644
index 00000000..aba145ba
--- /dev/null
+++ b/l10n/bn_BD.json
@@ -0,0 +1,42 @@
+{ "translations": {
+ "General" : "সাধারণ",
+ "Done" : "Done",
+ "Sharing" : "ভাগাভাগিরত",
+ "Share link" : "লিংক ভাগাভাগি করেন",
+ "Username" : "ব্যবহারকারী",
+ "File" : "File",
+ "Add" : "যোগ করুন",
+ "Type" : "ধরণ",
+ "Actions" : "পদক্ষেপসমূহ",
+ "Size" : "আকার",
+ "Expiration date" : "মেয়াদোত্তীর্ণ হওয়ার তারিখ",
+ "Disabled" : "অকার্যকর",
+ "Export" : "রপ্তানি",
+ "Version" : "ভার্সন",
+ "Import" : "আমদানি",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Read" : "পড়",
+ "Files" : "ফাইল",
+ "Pending" : "মুলতুবি",
+ "Details" : "বিসতারিত",
+ "by" : "কর্তৃক",
+ "Save" : "সংরক্ষণ",
+ "Cancel" : "বাতির",
+ "Settings" : "সেটিংস",
+ "Unshare" : "ভাগাভাগি বাতিল ",
+ "Password" : "কূটশব্দ",
+ "URL" : "URL",
+ "Notes" : "নোট",
+ "Edit" : "সম্পাদনা",
+ "Delete" : "মুছে",
+ "Share" : "ভাগাভাগি কর",
+ "Date" : "Date",
+ "Tags" : "ট্যাগ",
+ "Description" : "বিবরণ",
+ "You created %1$s" : "আপনি তৈরি করেছেন %1$s",
+ "You deleted %1$s" : "আপনি ডিলিট করেছেন %1$s",
+ "Saving..." : "সংরক্ষণ করা হচ্ছে..",
+ "seconds ago" : "সেকেন্ড পূর্বে"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/br.js b/l10n/br.js
new file mode 100644
index 00000000..3c585a01
--- /dev/null
+++ b/l10n/br.js
@@ -0,0 +1,61 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "Hollek",
+ "Done" : "Graet",
+ "Settings saved" : "Stummoù enrollet",
+ "General settings" : "Stummoù hollek",
+ "Sharing" : "Rannan",
+ "Share with users and groups" : "Ranna gant implijourienn ha strolladoù",
+ "Share link" : "Rannan liamm",
+ "Saved!" : "Enrollet !",
+ "Username" : "anv implijer",
+ "File" : "Restr",
+ "Add" : "Ouzhpennañ",
+ "Type" : "Stumm",
+ "Actions" : "Oberoù",
+ "Filename" : "Anv restr",
+ "Size" : "Ment",
+ "Secret" : "Sekret",
+ "Expiration date" : "Deizad termen",
+ "Disabled" : "Disaotreañ",
+ "Change" : "Cheñch",
+ "Version" : "Stumm",
+ "Vault password" : "Ger-tremen ar c'houfr-houarnet",
+ "Import" : "Emporzhiañ ",
+ "Public key" : "Alc'hwez publik",
+ "Uploading" : "O pellkasañ",
+ "User" : "Implijer",
+ "Files" : "Restroù",
+ "Pending" : "O c'hortoz",
+ "Details" : "Munudoù",
+ "Hide details" : "Skoachañ ar munudoù",
+ "Pattern" : "Pattern",
+ "by" : "gant",
+ "Label" : "Tiketenn",
+ "Save" : "Enrollañ",
+ "Cancel" : "Arrest",
+ "Settings" : "Arventennoù",
+ "Unshare" : "Nag eskemm ken",
+ "Account" : "Kont",
+ "Password" : "Ger-tremen",
+ "E-mail" : "Postel",
+ "URL" : "URL",
+ "Edit" : "Cheñch",
+ "Delete" : "Dilemel",
+ "Share" : "Rannan",
+ "Date" : "Deizat",
+ "Accept" : "Kadarnaat",
+ "Never" : "James",
+ "Tags" : "Klavioù",
+ "Expired" : "Termenet",
+ "Loading…" : "O Kargañ",
+ "email" : "email",
+ "Description" : "Diskrivadur",
+ "Expires:" : "Termenn :",
+ "Connection to server lost" : "Kelet eo bet ar c'henstagañ gant ar servijour",
+ "Saving..." : "Oc'h enrolién",
+ "Dismiss" : "Arrest",
+ "seconds ago" : "eilenn zo"
+},
+"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);");
diff --git a/l10n/br.json b/l10n/br.json
new file mode 100644
index 00000000..97dc0b24
--- /dev/null
+++ b/l10n/br.json
@@ -0,0 +1,59 @@
+{ "translations": {
+ "General" : "Hollek",
+ "Done" : "Graet",
+ "Settings saved" : "Stummoù enrollet",
+ "General settings" : "Stummoù hollek",
+ "Sharing" : "Rannan",
+ "Share with users and groups" : "Ranna gant implijourienn ha strolladoù",
+ "Share link" : "Rannan liamm",
+ "Saved!" : "Enrollet !",
+ "Username" : "anv implijer",
+ "File" : "Restr",
+ "Add" : "Ouzhpennañ",
+ "Type" : "Stumm",
+ "Actions" : "Oberoù",
+ "Filename" : "Anv restr",
+ "Size" : "Ment",
+ "Secret" : "Sekret",
+ "Expiration date" : "Deizad termen",
+ "Disabled" : "Disaotreañ",
+ "Change" : "Cheñch",
+ "Version" : "Stumm",
+ "Vault password" : "Ger-tremen ar c'houfr-houarnet",
+ "Import" : "Emporzhiañ ",
+ "Public key" : "Alc'hwez publik",
+ "Uploading" : "O pellkasañ",
+ "User" : "Implijer",
+ "Files" : "Restroù",
+ "Pending" : "O c'hortoz",
+ "Details" : "Munudoù",
+ "Hide details" : "Skoachañ ar munudoù",
+ "Pattern" : "Pattern",
+ "by" : "gant",
+ "Label" : "Tiketenn",
+ "Save" : "Enrollañ",
+ "Cancel" : "Arrest",
+ "Settings" : "Arventennoù",
+ "Unshare" : "Nag eskemm ken",
+ "Account" : "Kont",
+ "Password" : "Ger-tremen",
+ "E-mail" : "Postel",
+ "URL" : "URL",
+ "Edit" : "Cheñch",
+ "Delete" : "Dilemel",
+ "Share" : "Rannan",
+ "Date" : "Deizat",
+ "Accept" : "Kadarnaat",
+ "Never" : "James",
+ "Tags" : "Klavioù",
+ "Expired" : "Termenet",
+ "Loading…" : "O Kargañ",
+ "email" : "email",
+ "Description" : "Diskrivadur",
+ "Expires:" : "Termenn :",
+ "Connection to server lost" : "Kelet eo bet ar c'henstagañ gant ar servijour",
+ "Saving..." : "Oc'h enrolién",
+ "Dismiss" : "Arrest",
+ "seconds ago" : "eilenn zo"
+},"pluralForm" :"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);"
+} \ No newline at end of file
diff --git a/l10n/bs.js b/l10n/bs.js
new file mode 100644
index 00000000..9090891e
--- /dev/null
+++ b/l10n/bs.js
@@ -0,0 +1,40 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Done" : "Done",
+ "Sharing" : "Dijeljenje",
+ "Share link" : "Podijelite vezu",
+ "Username" : "Korisničko ime",
+ "File" : "File",
+ "Add" : "Dodaj",
+ "Type" : "Type",
+ "Actions" : "Radnje",
+ "Size" : "Veličina",
+ "Secret" : "Tajna",
+ "Expiration date" : "Datum isteka",
+ "Disabled" : "Onemogućeno",
+ "Export" : "Izvezi",
+ "Version" : "Verzija",
+ "Import" : "Uvoz",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "Datoteke",
+ "Pending" : "Na čekanju",
+ "by" : "od strane",
+ "Save" : "Spremi",
+ "Cancel" : "Otkaži",
+ "Settings" : "Podešavanje",
+ "Unshare" : "Prestani dijeliti",
+ "Password" : "Lozinka",
+ "URL" : "Url",
+ "Notes" : "Notes",
+ "Edit" : "Izmjeni",
+ "Delete" : "Obriši",
+ "Share" : "Podjeli",
+ "Date" : "Date",
+ "Accept" : "Prihvati",
+ "Decline" : "Odbij",
+ "Description" : "Opis",
+ "Saving..." : "Spremanje..."
+},
+"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/l10n/bs.json b/l10n/bs.json
new file mode 100644
index 00000000..ffdc7e12
--- /dev/null
+++ b/l10n/bs.json
@@ -0,0 +1,38 @@
+{ "translations": {
+ "Done" : "Done",
+ "Sharing" : "Dijeljenje",
+ "Share link" : "Podijelite vezu",
+ "Username" : "Korisničko ime",
+ "File" : "File",
+ "Add" : "Dodaj",
+ "Type" : "Type",
+ "Actions" : "Radnje",
+ "Size" : "Veličina",
+ "Secret" : "Tajna",
+ "Expiration date" : "Datum isteka",
+ "Disabled" : "Onemogućeno",
+ "Export" : "Izvezi",
+ "Version" : "Verzija",
+ "Import" : "Uvoz",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "Datoteke",
+ "Pending" : "Na čekanju",
+ "by" : "od strane",
+ "Save" : "Spremi",
+ "Cancel" : "Otkaži",
+ "Settings" : "Podešavanje",
+ "Unshare" : "Prestani dijeliti",
+ "Password" : "Lozinka",
+ "URL" : "Url",
+ "Notes" : "Notes",
+ "Edit" : "Izmjeni",
+ "Delete" : "Obriši",
+ "Share" : "Podjeli",
+ "Date" : "Date",
+ "Accept" : "Prihvati",
+ "Decline" : "Odbij",
+ "Description" : "Opis",
+ "Saving..." : "Spremanje..."
+},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
+} \ No newline at end of file
diff --git a/l10n/ca.js b/l10n/ca.js
index b32762c3..39ee3c8c 100644
--- a/l10n/ca.js
+++ b/l10n/ca.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contrasenyes",
"Generating sharing keys ( %s / 2)" : "S'estan generant claus d'ús compartit ( %s / 2)",
"Incorrect vault password!" : "Contrasenya de la cripta incorrecta!",
"Passwords do not match" : "Les contrasenyes no coincideixen",
@@ -325,6 +324,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s s'ha compartit amb %2$s",
"You received a share request for %1$s from %2$s" : "Heu rebut una sol·licitud de compartició de %1$s des de %2$s",
"%s has been shared with a link" : "%s ha estat compartit amb un enllaç",
+ "Passwords" : "Contrasenyes",
"Your credential \"%s\" expired, click here to update the credential." : "La vostra credencial \"%s\" ha caducat, feu clic aquí per actualitzar la credencial.",
"Remind me later" : "Recorda-m'ho més tard",
"Ignore" : "Ignora",
diff --git a/l10n/ca.json b/l10n/ca.json
index fbb1a4c7..0e7bdcd7 100644
--- a/l10n/ca.json
+++ b/l10n/ca.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contrasenyes",
"Generating sharing keys ( %s / 2)" : "S'estan generant claus d'ús compartit ( %s / 2)",
"Incorrect vault password!" : "Contrasenya de la cripta incorrecta!",
"Passwords do not match" : "Les contrasenyes no coincideixen",
@@ -323,6 +322,7 @@
"%1$s has been shared with %2$s" : "%1$s s'ha compartit amb %2$s",
"You received a share request for %1$s from %2$s" : "Heu rebut una sol·licitud de compartició de %1$s des de %2$s",
"%s has been shared with a link" : "%s ha estat compartit amb un enllaç",
+ "Passwords" : "Contrasenyes",
"Your credential \"%s\" expired, click here to update the credential." : "La vostra credencial \"%s\" ha caducat, feu clic aquí per actualitzar la credencial.",
"Remind me later" : "Recorda-m'ho més tard",
"Ignore" : "Ignora",
diff --git a/l10n/cs.js b/l10n/cs.js
index b96f3059..1923c772 100644
--- a/l10n/cs.js
+++ b/l10n/cs.js
@@ -1,52 +1,51 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Hesla",
"Generating sharing keys ( %s / 2)" : "Vytváření klíčů pro sdílení ( %s / 2)",
"Incorrect vault password!" : "Neplatné heslo k trezoru!",
"Passwords do not match" : "Zadání hesla se neshodují",
"General" : "Obecné",
"Custom Fields" : "Uživatelsky určené kolonky",
- "Please fill in a label." : "Vyplňte popisek.",
+ "Please fill in a label." : "Vyplňte štítek.",
"Please fill in a value." : "Vyplňte hodnotu.",
"Error loading file" : "Chyba načítání souboru",
"An error occurred during decryption" : "Při rozšifrovávání došlo k chybě",
- "Credential created!" : "Pověření vytvořeno!",
- "Credential deleted" : "Pověření smazáno",
- "Credential updated" : "Pověření aktualizováno",
- "Credential recovered" : "Pověření obnoveno",
- "Credential destroyed" : "Pověření zničeno",
+ "Credential created!" : "Přihlašovací údaje vytvořeny!",
+ "Credential deleted" : "Přihlašovací údaj smazán",
+ "Credential updated" : "Přihlašovací údaje zaktualizovány",
+ "Credential recovered" : "Přihlašovací údaje obnoveny",
+ "Credential destroyed" : "Přihlašovací údaje zlikvidovány",
"Error downloading file, you probably have insufficient permissions" : "Chyba při stahování souboru, nejspíš nemáte potřebná oprávnění",
"Invalid QR code" : "Neplatný QR kód",
"Starting export" : "Začíná export",
- "Decrypting credentials" : "Dešifrování pověření",
+ "Decrypting credentials" : "Rozšifrovávání přihlašovacích údajů",
"Done" : "Hotovo",
"File read." : "Čtení souboru.",
"Proceed with the following steps to import your file" : "Pro import vašeho souboru se řiďte následujícími kroky",
"Skipping unlabeled credential" : "Přeskakuje se přihlašovací údaje bez štítku",
"Adding {{credential}}" : "Přidávání {{credential}}",
"Added {{credential}}" : "Přidáno {{credential}}",
- "Skipping credential, missing label on line {{line}}" : "Přeskočeno pověření na řádku {{line}}, chybí popisek",
- "Parsed {{num}} credentials, starting to import" : "Naparsováno {{num}} pověření, začíná import",
+ "Skipping credential, missing label on line {{line}}" : "Přeskočeno pověření na řádku {{line}}, chybí štítek",
+ "Parsed {{num}} credentials, starting to import" : "Zpracováno {{num}} přihlašovacích údajů – zahajuje se import",
"Importing" : "Importování",
"Start import" : "Spustit import",
"Select CSV file" : "Vybrat soubor CSV",
- "Parsed {{rows}} lines from CSV file" : "Z CSV souboru bylo parsováno {{rows}} řádků",
+ "Parsed {{rows}} lines from CSV file" : "Z CSV souboru bylo zpracováno {{rows}} řádků",
"Skip first row" : "Přeskočit první řádek",
- "You need to assign the label field before you can start the import." : "Před začátkem importu je třeba přiřadit kolonku popisku.",
- "The first 5 lines of the CSV are shown." : "Je zobrazeno prvních 5 řádků CSV souboru",
+ "You need to assign the label field before you can start the import." : "Před začátkem importu je třeba přiřadit kolonku štítku.",
+ "The first 5 lines of the CSV are shown." : "Je zobrazeno prvních 5 řádků CSV souboru.",
"Assign the proper fields to each column." : "Přiřaďte každému sloupci správné hodnoty.",
- "Example of imported credential" : "Příklad importovaného pověření",
+ "Example of imported credential" : "Příklad importovaných přihlašovacích údajů",
"Missing an importer? Try it with the generic CSV importer." : "Chybí importovač? Zkuste obecný importovač CSV.",
"Go back to importers." : "Přejít zpět k importovačům.",
"Revision deleted" : "Revize smazána",
- "Revision restored" : "Revize obnovena",
- "Save in Passman" : "Uložit v passmanu",
+ "Revision restored" : "Obnoveno do podoby revize",
+ "Save in Passman" : "Uložit v aplikaci Passman",
"Settings saved" : "Nastavení uložena",
"General settings" : "Obecná nastavení",
"Password audit" : "Audit hesel",
"Password settings" : "Nastavení hesla",
- "Import credentials" : "Importovat pověření",
+ "Import credentials" : "Importovat přihlašovací údaje",
"Export credentials" : "Exportovat pověření",
"Sharing" : "Sdílení",
"Are you sure you want to leave? This will destroy all your credentials" : "Opravdu chcete odejít? Všechna vaše pověření budou ztracena",
@@ -54,16 +53,16 @@ OC.L10N.register(
"New password does not match!" : "Zadání nového hesla se neshodují!",
"Please log in with your new vault password" : "Přihlaste se svým novým heslem trezoru",
"Share with users and groups" : "Sdílet s uživateli a skupinami",
- "Share link" : "Sdílet odkaz",
- "Are you sure you want to leave? This will corrupt this credential" : "Opravdu si přejete odejít? Poškodí to toto pověření",
- "Credential unshared" : "Sdílení pověření zrušeno",
- "Credential shared" : "Pověření nasdíleno",
+ "Share link" : "Odkaz pro sdílení",
+ "Are you sure you want to leave? This will corrupt this credential" : "Opravdu si přejete odejít? Poškodí to tyto přihlašovací údaje",
+ "Credential unshared" : "Sdílení přihlašovacích údajů zrušeno",
+ "Credential shared" : "Přihlašovací údaje nasdíleny",
"Saved!" : "Uloženo!",
- "Poor" : "Slabá",
- "Weak" : "Slabé",
- "Good" : "Dobrá",
- "Strong" : "Silné",
- "Toggle visibility" : "Přepnout viditelnost",
+ "Poor" : "velmi snadno prolomitelné",
+ "Weak" : "snadno prolomitelné",
+ "Good" : "Odolné",
+ "Strong" : "Velmi odolné",
+ "Toggle visibility" : "Vyp/zap. viditelnost",
"Copy to clipboard" : "Zkopírovat do schránky",
"Copied to clipboard!" : "Zkopírováno do schránky",
"Generate password" : "Vytvořit heslo",
@@ -71,7 +70,7 @@ OC.L10N.register(
"Password copied to clipboard!" : "Heslo zkopírováno do schránky!",
"Complete" : "Kompletní",
"Username" : "Uživatelské jméno",
- "Repeat password" : "Zopakujte heslo",
+ "Repeat password" : "Zopakujte zadání hesla",
"Add tag" : "Přidat štítek",
"Pick an icon" : "Vyberte si ikonu",
"Search icons" : "Hledat ikony",
@@ -80,9 +79,9 @@ OC.L10N.register(
"Delete current icon" : "Smazat stávající ikonu",
"Get icon from page" : "Získat ikonu ze stránky",
"This may take a few seconds…" : "Může to pár sekund trvat…",
- "There was an error fetching the icon!" : "Při stahování ikony došlo k chybě!",
+ "There was an error fetching the icon!" : "Při získávání ikony došlo k chybě!",
"Selected icon" : "Vybraná ikona",
- "Field label" : "Popisek pole",
+ "Field label" : "Štítek kolonky",
"Field value" : "Hodnota kolonky",
"Choose a file" : "Vyberte soubor",
"Text" : "Text",
@@ -118,13 +117,13 @@ OC.L10N.register(
"Require every character type" : "Vyžadovat každý typ znaku",
"Export type" : "Typ exportu",
"Export" : "Export",
- "Enter vault password to confirm export." : "Pro potvrzení exportu zadejte heslo trezoru.",
+ "Enter vault password to confirm export." : "Pro potvrzení exportu zadejte heslo k trezoru.",
"Rename vault" : "Přejmenovat trezor",
"New vault name" : "Název pro nový trezor",
"Change" : "Změnit",
- "Change vault key" : "Změnit klíč trezoru",
+ "Change vault key" : "Změnit klíč k trezoru",
"Old vault password" : "Původní heslo trezoru",
- "New vault password" : "Nové heslo trezoru",
+ "New vault password" : "Nové heslo k trezoru",
"Repeat new vault password" : "Zopakujte nové heslo trezoru",
"Please wait your vault is being updated, do not leave this page." : "Čekejte, váš trezor se aktualizuje, neopouštějte tuto stránku.",
"Processing" : "Zpracování",
@@ -136,18 +135,18 @@ OC.L10N.register(
"Save your passwords with one click." : "Uložte si své heslo jedním kliknutím.",
"Drag below button to your bookmark toolbar." : "Přetáhněte tlačítko níže do své lišty záložek.",
"Delete vault" : "Smazat trezor",
- "Vault password" : "Heslo trezoru",
+ "Vault password" : "Heslo k trezoru",
"This process is irreversible" : "Tato operace je nevratná",
- "Delete my precious passwords" : "Vymazat moje předešlá hesla",
+ "Delete my precious passwords" : "Vymazat moje vzácná hesla",
"Deleting {{password}}…" : "Mazání {{password}}…",
- "Yes, delete my precious passwords" : "Ano, vymazat moje předešlá hesla",
+ "Yes, delete my precious passwords" : "Ano, vymazat moje vzácná hesla",
"Import type" : "Typ importu",
"Import" : "Import",
"Read progress" : "Průběh čtení",
"Upload progress" : "Průběh nahrávání",
"Private Key" : "Soukromý klíč",
"Public key" : "Veřejný klíč",
- "Key size" : "Velikost klíče",
+ "Key size" : "Délka klíče",
"Save keys" : "Uložit klíče",
"Generate sharing keys" : "Vytvořit klíče pro sdílení",
"Generating sharing keys" : "Vytváření klíčů pro sdílení",
@@ -155,8 +154,8 @@ OC.L10N.register(
"Minimum password stength" : "Nejnižší odolnost hesla",
"Start scan" : "Zahájit sken",
"Result" : "Výsledek",
- "A total of {{scan_result}} weak credentials were found." : "Bylo nalezeno celkem {{scan_result}} slabých pověření.",
- "Score" : "Skóre",
+ "A total of {{scan_result}} weak credentials were found." : "Bylo nalezeno celkem {{scan_result}} snadno prolomitelných přihlašovacích údajů.",
+ "Score" : "Hodnocení",
"Action" : "Akce",
"Search users…" : "Vyhledat uživatele…",
"Missing users? Only users that have vaults are shown." : "Chybí uživatelé? Jsou zobrazeni pouze uživatelé, kteří mají trezor.",
@@ -170,23 +169,23 @@ OC.L10N.register(
"Files" : "Soubory",
"Revisions" : "Revize",
"Pending" : "Čeká",
- "Enable link sharing" : "Povolit sdílení odkazů",
+ "Enable link sharing" : "Povolit sdílení prostřednictvím odkazů",
"Share until date" : "Sdílet do data",
"Expire after views" : "Platnost skončí po zobrazeních",
"Click \\\"Share\\\" first" : "Nejprve klikněte na „Sdílet“",
"Show files" : "Zobrazit soubory",
"Details" : "Podrobnosti",
"Hide details" : "Skrýt podrobnosti",
- "Password score" : "Skóre hesla",
- "Cracking times" : "Časy prolomení",
+ "Password score" : "Hodnocení hesla",
+ "Cracking times" : "Doby potřebné k prolomení",
"100 / hour" : "100 za hodinu",
"Throttled online attack" : "Omezený online útok",
"10 / second" : "10 za sekundu",
"Unthrottled online attack" : "Neomezený online útok",
- "10k / second" : "10k za sekundu",
- "Offline attack, slow hash, many cores" : "Offline útok, pomalý hash, mnoho jader",
+ "10k / second" : "10 tis. za sekundu",
+ "Offline attack, slow hash, many cores" : "Offline útok, pomalý otisk (hash), mnoho jader",
"10B / second" : "10B za sekundu",
- "Offline attack, fast hash, many cores" : "Offline útok, rychlý hash, mnoho jader",
+ "Offline attack, fast hash, many cores" : "Offline útok, rychlý otisk (hash), mnoho jader",
"Match sequence" : "Sekvence shody",
"See match sequence" : "Zobrazit sekvenci shody",
"Pattern" : "Vzor",
@@ -202,20 +201,20 @@ OC.L10N.register(
"Revision of" : "Reviduje",
"by" : "od",
"No revisions found." : "Nenalezeny žádné revize.",
- "Label" : "Popisek",
+ "Label" : "Štítek",
"Restore revision" : "Obnovit revizi",
"Delete revision" : "Smazat revizi",
- "Edit credential" : "Upravit pověření",
- "Create new credential" : "Vytvořit nové pověření",
+ "Edit credential" : "Upravit přihlašovací údaje",
+ "Create new credential" : "Vytvořit nové přihlašovací údaje",
"Save" : "Uložit",
"Cancel" : "Storno",
"Settings" : "Nastavení",
- "Share credential {{credential}}" : "Sdílet pověření {{credential}}",
+ "Share credential {{credential}}" : "Sdílet přihlašovací údaje {{credential}}",
"Unshare" : "Přestat sdílet",
"Showing deleted since" : "Zobrazují se smazané od",
"Beginning" : "Začátek",
- "Showing {{number_filtered}} of {{credential_number}} credentials" : "Zobrazuje se {{number_filtered}} z {{credential_number}} pověření",
- "Search for credential…" : "Hledat pověření…",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Zobrazuje se {{number_filtered}} z {{credential_number}} přihlašovacích údajů",
+ "Search for credential…" : "Hledat přihlašovací údaje…",
"Account" : "Účet",
"Password" : "Heslo",
"OTP" : "OTP",
@@ -229,7 +228,7 @@ OC.L10N.register(
"Delete" : "Smazat",
"Share" : "Sdílet",
"Recover" : "Obnovit",
- "Destroy" : "Zničit",
+ "Destroy" : "Zlikvidovat",
"Use regex" : "Použít regulární výraz",
"You have incoming share requests." : "Máte příchozí požadavky na sdílení.",
"If you want to put the credential in another vault," : "Pokud chcete pověření umístit do jiného trezoru,",
@@ -241,7 +240,7 @@ OC.L10N.register(
"Decline" : "Zamítnout",
"You have {{session_time}} left before logout." : "Do odhlášení vám zbývá {{session_time}}.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Váš trezor byl na {{time}} kvůli {{tries}} chybným pokusům uzamčen!",
- "Hello there!" : "Zdravíme!",
+ "Hello there!" : "Zdravíme",
"It does not seem that you have any passwords. Do you want to add one?" : "Nezdá se, že byste měli nějaká hesla. Chcete nějaké přidat?",
"You don't have good credentials" : "Nemáte dobré přihlašovací údaje",
"You don't have medium credentials" : "Nemáte žádné středně bezpečné přihlašovací údaje",
@@ -255,30 +254,30 @@ OC.L10N.register(
"No vaults found, why not create one?" : "Nebyly nalezeny žádné trezory – co nějaký vytvořit?",
"Password strength must be at least: {{strength}}" : "Je třeba, aby odolnost hesla byla přinejmenším: {{strength}}",
"Please give your new vault a name." : "Nazvěte nějak svůj nový trezor.",
- "Repeat vault password" : "Zopakujte heslo trezoru",
+ "Repeat vault password" : "Zopakujte heslo k trezoru",
"Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Vaše sdílecí klíče budou mít délku 1024 bitů, což později můžete změnit v „Nastavení“.",
"Create vault" : "Vytvořit trezor",
"Go back to vaults" : "Jít zpět k trezorům",
"Please input the password for" : "Zadejte heslo pro",
"Set this vault as the default." : "Nastavit tento trezor jako výchozí.",
"Log into this vault automatically." : "Automaticky se přihlašovat k tomuto trezoru.",
- "Log out of this vault automatically after: " : "Automaticky se z tohoto trezoru odhlásit po: ",
+ "Log out of this vault automatically after: " : "Při nečinnosti, automaticky se z tohoto trezoru odhlásit po uplynutí: ",
"Decrypt vault" : "Rozšifrovat trezor",
"Seems you lost the vault password and you're unable to log in." : "Vypadá to, že jste ztratili heslo k trezoru a nemůžete se přihlásit.",
"If you want this vault to be removed you can request that here." : "Pokud chcete, aby byl tento trezor odstraněn, můžete o jeho odstranění požádat zde.",
"An admin then accepts or declines the request" : "Správce pak požadavek buď přijme nebo odmítne",
- "After an admin destroys this vault, all credentials in it will be lost" : "Poté,co administrátor potvrdí destrukci tohoto trezoru, všechna pověření budou ztracena",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Poté, co správce potvrdí likvidaci tohoto trezoru, všechna pověření budou ztracena",
"Reason for requesting deletion (optional):" : "Důvod žádosti o smazání (volitelné):",
"Request vault destruction" : "Požádat o zničení trezoru",
- "Yes, request an admin to destroy this vault" : "Ano, požádat administrátora o zničení tohoto trezoru",
- "Cancel destruction request" : "Zrušit požadavek na destrukci",
- "Vault destruction requested" : "Vyžádání zničení trezoru",
+ "Yes, request an admin to destroy this vault" : "Ano, požádat správce o zlikvidování tohoto trezoru",
+ "Cancel destruction request" : "Zrušit požadavek na likvidaci",
+ "Vault destruction requested" : "Vyžádáno zlikvidování trezoru",
"Request removed" : "Požadavek odebrán",
- "Destruction request pending" : "Požadavek na destrukci čeká",
+ "Destruction request pending" : "Požadavek na likvidaci čeká",
"Warning! Adding credentials over HTTP is insecure!" : "Varování! Přidávání pověření přes HTTP může být nebezpečné!",
"Logged into {{vault_name}}" : "Přihlášeni do {{vault_name}}",
"Change vault" : "Změnit trezor",
- "Deleted credentials" : "Smazaná pověření",
+ "Deleted credentials" : "Smazané přihlašovací údaje",
"Logout" : "Odhlásit se",
"Donate" : "Přispět",
"Show All" : "Zobrazit vše",
@@ -290,18 +289,19 @@ OC.L10N.register(
"Expired" : "Platnost skončila",
"Filter Tags" : "Filtrovat štítky",
"Simple Navigation" : "Jednoduchý navigační panel ",
- "Someone has shared a credential with you." : "Někdo s vvám nasdílel pověření",
+ "Someone has shared a credential with you." : "Někdo vám nasdílel přihlašovací údaj.",
"Click here to request it" : "Pro vyžádání klikněte sem",
"Loading…" : "Načítání…",
- "Awwhh… credential not found. Maybe it expired" : "Hmmmm… pověření nenalezeno. Možná jeho platnost skončila",
+ "Awwhh… credential not found. Maybe it expired" : "Hmmmm… přihlašovací údaje nenalezeny. Možná jejich platnost skončila",
"Compromise!" : "Kompromitovat!",
"Compromised!" : "Kompromitováno!",
+ "This password is compromised. You can only remove this warning by changing the password." : "Toto heslo je kompromitováno. Toto varování je možné zrušit pouze změnou hesla.",
"email" : "e-mail",
"Description" : "Popis",
"Url" : "URL adresa",
"Custom Search:" : "Uživatelsky určené hledání:",
- "Revert to defaults" : "Vrátit na výchozí",
- "Error while saving field" : "Chyba při ukládání pole",
+ "Revert to defaults" : "Vrátit zpět na výchozí hodnoty",
+ "Error while saving field" : "Chyba při ukládání obsahu kolonky",
"A Passman item has been created, modified or deleted" : "Položka v Passman byla vytvořena, změněna, nebo odstraněna",
"A Passman item has expired" : "Platnost položky v Passman skončila",
"A Passman item has been shared" : "Položka v Passmanu byla sdílena",
@@ -312,8 +312,8 @@ OC.L10N.register(
"You updated %1$s" : "Aktualizovali jste %1$s",
"%2$s has revised %1$s to the revision of %3$s" : "%2$s revidoval(a) %1$s na revizi %3$s",
"You reverted %1$s back to the revision of %3$s" : "Obnovili jste %1$s zpět na revizi %3$s",
- "%3$s has renamed %1$s to %2$s" : "%3$s přejmenoval %1$s na %2$s",
- "You renamed %1$s to %2$s" : "Přemenoval jste %1$s na %2$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s přejmenoval(a) %1$s na %2$s",
+ "You renamed %1$s to %2$s" : "Přejmenovali jste %1$s na %2$s",
"%1$s has been deleted by %2$s" : "%1$s byl odstraněn uživatelem %2$s",
"You deleted %1$s" : "Smazali jste %1$s",
"%1$s has been recovered by %2$s" : "%2$s obnovil(a) %1$s",
@@ -324,6 +324,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s byl nasdílen uživatelem %2$s",
"You received a share request for %1$s from %2$s" : "Obdrželi jste nový požadavek na sdílení %1$s od uživatele %2$s",
"%s has been shared with a link" : "%s byl nasdílen pomocí odkazu",
+ "Passwords" : "Hesla",
"Your credential \"%s\" expired, click here to update the credential." : "Platnost vašeho pověření „%s“ skončila, pro obnovení klikněte sem",
"Remind me later" : "Připomenout později",
"Ignore" : "Ignorovat",
@@ -332,29 +333,29 @@ OC.L10N.register(
"%s has accepted your share request for \"%s\"." : "%s přijal(a) váš požadavek na sdílení „%s“.",
"Passman" : "Passman",
"Passman is a full featured password manager." : "Passman je správce hesel s mnoha funkcemi.",
- "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman je plně vybavený správce hesel.\nFunkce:\n- Trezory\n- Klíč k serveru není nikdy odesílán na server\n- Rozšíření pro prohlížeč pro snadný přístup k heslům\n- Aplikace pro Android pro přístup na cestách\n- Přihlašovací údaje jsou na straně klienta šifrovány 256 bit AES\n- Přihlašovací údaje jsou na straně serveru šifrovány 256 bit AES\n- Možnost přidat vlastní kolonky do přihlašovacích údajů\n- Vestavěné vytváření OTP (jednorázového hesla)\n- Analyzátor hesel\n- Sdílení hesel interně a zabezpečeně prostřednictvím odkazu.\n- Import z různých správců hesel (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nPro ukázku této aplikace navštivte [https://demo.passman.cc](https://demo.passman.cc)",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman je plně vybavený správce hesel.\nFunkce:\n- Trezory\n- Klíč k trezoru není nikdy odesílán na server\n- Rozšíření do webového prohlížeče pro snadný přístup k heslům\n- Aplikace pro Android pro přístup na cestách\n- Přihlašovací údaje jsou na straně klienta šifrovány algoritmem 256 bit AES\n- Přihlašovací údaje jsou na straně serveru šifrovány algoritmem 256 bit AES\n- Možnost přidávat si do přihlašovacích údajů uživatelsky určené kolonky\n- Vestavěné vytváření OTP (jednorázového hesla)\n- Analyzátor stupně bezpečnosti hesel\n- Bezpečné sdílení hesel – interně nebo prostřednictvím odkazu.\n- Import z různých správců hesel (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nUkázka této aplikace je k dispozici na [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Nepodařilo se získat informace o verzi",
"Passman Settings" : "Nastavení pro passman",
"GitHub version:" : "verze na GitHub:",
"A newer version of Passman is available" : "Je dostupná nová verze Passman",
"Password sharing" : "Sdílení hesla",
- "Credential mover" : "Přesunovač pověření",
- "Vault destruction requests" : "Požadavky na zničení trezoru",
- "Check for new versions" : "Zkontrolovat nové verze",
+ "Credential mover" : "Přesunování přihlašovacích údajů",
+ "Vault destruction requests" : "Požadavky na likvidaci trezoru",
+ "Check for new versions" : "Zjistit dostupnost případných nových verzí",
"Enable HTTPS check" : "Povolit kontrolu HTTPS",
"Disable context menu" : "Zakázat kontextovou nabídku",
"Disable JavaScript debugger" : "Zakázat ladění JavaScriptu",
"Allow users on this server to share passwords with a link" : "Povolit na tomto serveru uživatelům sdílení hesel pomocí odkazu",
"Allow users on this server to share passwords with other users" : "Povolit na tomto serveru uživatelům sdílení hesel s ostatními uživateli",
- "Move credentials from one account to another" : "Přesuňte pověření z jednoho účtu do druhého",
+ "Move credentials from one account to another" : "Přesuňte přihlašovací údaje z jednoho účtu do druhého",
"Source account" : "Zdrojový účet",
"Destination account" : "Cílový účet",
"Credentials moved!" : "Přihlašovací údaje přesunuty!",
- "Requests to destroy vault" : "Požadavky na zničení trezoru",
+ "Requests to destroy vault" : "Požadavky na likvidaci trezoru",
"Request ID" : "Identifikátor požadavku",
"Requested by" : "Požadavek od",
"Reason" : "Důvod",
- "Click here to request\n\t\t\t\t\tit" : "Klikněte sem pro žádost",
+ "Click here to request\n\t\t\t\t\tit" : "Klikněte sem pro\n\t\t\t\t\tžádost",
"Loading&hellip;" : "Načítání&hellip;",
"Awwhh… could not find the credential. Maybe it expired?" : "Hmmmm… pověření nenalezeno. Možná jeho platnost skončila?",
"Expires:" : "Platnost končí:",
diff --git a/l10n/cs.json b/l10n/cs.json
index 82ab70e7..81597511 100644
--- a/l10n/cs.json
+++ b/l10n/cs.json
@@ -1,50 +1,49 @@
{ "translations": {
- "Passwords" : "Hesla",
"Generating sharing keys ( %s / 2)" : "Vytváření klíčů pro sdílení ( %s / 2)",
"Incorrect vault password!" : "Neplatné heslo k trezoru!",
"Passwords do not match" : "Zadání hesla se neshodují",
"General" : "Obecné",
"Custom Fields" : "Uživatelsky určené kolonky",
- "Please fill in a label." : "Vyplňte popisek.",
+ "Please fill in a label." : "Vyplňte štítek.",
"Please fill in a value." : "Vyplňte hodnotu.",
"Error loading file" : "Chyba načítání souboru",
"An error occurred during decryption" : "Při rozšifrovávání došlo k chybě",
- "Credential created!" : "Pověření vytvořeno!",
- "Credential deleted" : "Pověření smazáno",
- "Credential updated" : "Pověření aktualizováno",
- "Credential recovered" : "Pověření obnoveno",
- "Credential destroyed" : "Pověření zničeno",
+ "Credential created!" : "Přihlašovací údaje vytvořeny!",
+ "Credential deleted" : "Přihlašovací údaj smazán",
+ "Credential updated" : "Přihlašovací údaje zaktualizovány",
+ "Credential recovered" : "Přihlašovací údaje obnoveny",
+ "Credential destroyed" : "Přihlašovací údaje zlikvidovány",
"Error downloading file, you probably have insufficient permissions" : "Chyba při stahování souboru, nejspíš nemáte potřebná oprávnění",
"Invalid QR code" : "Neplatný QR kód",
"Starting export" : "Začíná export",
- "Decrypting credentials" : "Dešifrování pověření",
+ "Decrypting credentials" : "Rozšifrovávání přihlašovacích údajů",
"Done" : "Hotovo",
"File read." : "Čtení souboru.",
"Proceed with the following steps to import your file" : "Pro import vašeho souboru se řiďte následujícími kroky",
"Skipping unlabeled credential" : "Přeskakuje se přihlašovací údaje bez štítku",
"Adding {{credential}}" : "Přidávání {{credential}}",
"Added {{credential}}" : "Přidáno {{credential}}",
- "Skipping credential, missing label on line {{line}}" : "Přeskočeno pověření na řádku {{line}}, chybí popisek",
- "Parsed {{num}} credentials, starting to import" : "Naparsováno {{num}} pověření, začíná import",
+ "Skipping credential, missing label on line {{line}}" : "Přeskočeno pověření na řádku {{line}}, chybí štítek",
+ "Parsed {{num}} credentials, starting to import" : "Zpracováno {{num}} přihlašovacích údajů – zahajuje se import",
"Importing" : "Importování",
"Start import" : "Spustit import",
"Select CSV file" : "Vybrat soubor CSV",
- "Parsed {{rows}} lines from CSV file" : "Z CSV souboru bylo parsováno {{rows}} řádků",
+ "Parsed {{rows}} lines from CSV file" : "Z CSV souboru bylo zpracováno {{rows}} řádků",
"Skip first row" : "Přeskočit první řádek",
- "You need to assign the label field before you can start the import." : "Před začátkem importu je třeba přiřadit kolonku popisku.",
- "The first 5 lines of the CSV are shown." : "Je zobrazeno prvních 5 řádků CSV souboru",
+ "You need to assign the label field before you can start the import." : "Před začátkem importu je třeba přiřadit kolonku štítku.",
+ "The first 5 lines of the CSV are shown." : "Je zobrazeno prvních 5 řádků CSV souboru.",
"Assign the proper fields to each column." : "Přiřaďte každému sloupci správné hodnoty.",
- "Example of imported credential" : "Příklad importovaného pověření",
+ "Example of imported credential" : "Příklad importovaných přihlašovacích údajů",
"Missing an importer? Try it with the generic CSV importer." : "Chybí importovač? Zkuste obecný importovač CSV.",
"Go back to importers." : "Přejít zpět k importovačům.",
"Revision deleted" : "Revize smazána",
- "Revision restored" : "Revize obnovena",
- "Save in Passman" : "Uložit v passmanu",
+ "Revision restored" : "Obnoveno do podoby revize",
+ "Save in Passman" : "Uložit v aplikaci Passman",
"Settings saved" : "Nastavení uložena",
"General settings" : "Obecná nastavení",
"Password audit" : "Audit hesel",
"Password settings" : "Nastavení hesla",
- "Import credentials" : "Importovat pověření",
+ "Import credentials" : "Importovat přihlašovací údaje",
"Export credentials" : "Exportovat pověření",
"Sharing" : "Sdílení",
"Are you sure you want to leave? This will destroy all your credentials" : "Opravdu chcete odejít? Všechna vaše pověření budou ztracena",
@@ -52,16 +51,16 @@
"New password does not match!" : "Zadání nového hesla se neshodují!",
"Please log in with your new vault password" : "Přihlaste se svým novým heslem trezoru",
"Share with users and groups" : "Sdílet s uživateli a skupinami",
- "Share link" : "Sdílet odkaz",
- "Are you sure you want to leave? This will corrupt this credential" : "Opravdu si přejete odejít? Poškodí to toto pověření",
- "Credential unshared" : "Sdílení pověření zrušeno",
- "Credential shared" : "Pověření nasdíleno",
+ "Share link" : "Odkaz pro sdílení",
+ "Are you sure you want to leave? This will corrupt this credential" : "Opravdu si přejete odejít? Poškodí to tyto přihlašovací údaje",
+ "Credential unshared" : "Sdílení přihlašovacích údajů zrušeno",
+ "Credential shared" : "Přihlašovací údaje nasdíleny",
"Saved!" : "Uloženo!",
- "Poor" : "Slabá",
- "Weak" : "Slabé",
- "Good" : "Dobrá",
- "Strong" : "Silné",
- "Toggle visibility" : "Přepnout viditelnost",
+ "Poor" : "velmi snadno prolomitelné",
+ "Weak" : "snadno prolomitelné",
+ "Good" : "Odolné",
+ "Strong" : "Velmi odolné",
+ "Toggle visibility" : "Vyp/zap. viditelnost",
"Copy to clipboard" : "Zkopírovat do schránky",
"Copied to clipboard!" : "Zkopírováno do schránky",
"Generate password" : "Vytvořit heslo",
@@ -69,7 +68,7 @@
"Password copied to clipboard!" : "Heslo zkopírováno do schránky!",
"Complete" : "Kompletní",
"Username" : "Uživatelské jméno",
- "Repeat password" : "Zopakujte heslo",
+ "Repeat password" : "Zopakujte zadání hesla",
"Add tag" : "Přidat štítek",
"Pick an icon" : "Vyberte si ikonu",
"Search icons" : "Hledat ikony",
@@ -78,9 +77,9 @@
"Delete current icon" : "Smazat stávající ikonu",
"Get icon from page" : "Získat ikonu ze stránky",
"This may take a few seconds…" : "Může to pár sekund trvat…",
- "There was an error fetching the icon!" : "Při stahování ikony došlo k chybě!",
+ "There was an error fetching the icon!" : "Při získávání ikony došlo k chybě!",
"Selected icon" : "Vybraná ikona",
- "Field label" : "Popisek pole",
+ "Field label" : "Štítek kolonky",
"Field value" : "Hodnota kolonky",
"Choose a file" : "Vyberte soubor",
"Text" : "Text",
@@ -116,13 +115,13 @@
"Require every character type" : "Vyžadovat každý typ znaku",
"Export type" : "Typ exportu",
"Export" : "Export",
- "Enter vault password to confirm export." : "Pro potvrzení exportu zadejte heslo trezoru.",
+ "Enter vault password to confirm export." : "Pro potvrzení exportu zadejte heslo k trezoru.",
"Rename vault" : "Přejmenovat trezor",
"New vault name" : "Název pro nový trezor",
"Change" : "Změnit",
- "Change vault key" : "Změnit klíč trezoru",
+ "Change vault key" : "Změnit klíč k trezoru",
"Old vault password" : "Původní heslo trezoru",
- "New vault password" : "Nové heslo trezoru",
+ "New vault password" : "Nové heslo k trezoru",
"Repeat new vault password" : "Zopakujte nové heslo trezoru",
"Please wait your vault is being updated, do not leave this page." : "Čekejte, váš trezor se aktualizuje, neopouštějte tuto stránku.",
"Processing" : "Zpracování",
@@ -134,18 +133,18 @@
"Save your passwords with one click." : "Uložte si své heslo jedním kliknutím.",
"Drag below button to your bookmark toolbar." : "Přetáhněte tlačítko níže do své lišty záložek.",
"Delete vault" : "Smazat trezor",
- "Vault password" : "Heslo trezoru",
+ "Vault password" : "Heslo k trezoru",
"This process is irreversible" : "Tato operace je nevratná",
- "Delete my precious passwords" : "Vymazat moje předešlá hesla",
+ "Delete my precious passwords" : "Vymazat moje vzácná hesla",
"Deleting {{password}}…" : "Mazání {{password}}…",
- "Yes, delete my precious passwords" : "Ano, vymazat moje předešlá hesla",
+ "Yes, delete my precious passwords" : "Ano, vymazat moje vzácná hesla",
"Import type" : "Typ importu",
"Import" : "Import",
"Read progress" : "Průběh čtení",
"Upload progress" : "Průběh nahrávání",
"Private Key" : "Soukromý klíč",
"Public key" : "Veřejný klíč",
- "Key size" : "Velikost klíče",
+ "Key size" : "Délka klíče",
"Save keys" : "Uložit klíče",
"Generate sharing keys" : "Vytvořit klíče pro sdílení",
"Generating sharing keys" : "Vytváření klíčů pro sdílení",
@@ -153,8 +152,8 @@
"Minimum password stength" : "Nejnižší odolnost hesla",
"Start scan" : "Zahájit sken",
"Result" : "Výsledek",
- "A total of {{scan_result}} weak credentials were found." : "Bylo nalezeno celkem {{scan_result}} slabých pověření.",
- "Score" : "Skóre",
+ "A total of {{scan_result}} weak credentials were found." : "Bylo nalezeno celkem {{scan_result}} snadno prolomitelných přihlašovacích údajů.",
+ "Score" : "Hodnocení",
"Action" : "Akce",
"Search users…" : "Vyhledat uživatele…",
"Missing users? Only users that have vaults are shown." : "Chybí uživatelé? Jsou zobrazeni pouze uživatelé, kteří mají trezor.",
@@ -168,23 +167,23 @@
"Files" : "Soubory",
"Revisions" : "Revize",
"Pending" : "Čeká",
- "Enable link sharing" : "Povolit sdílení odkazů",
+ "Enable link sharing" : "Povolit sdílení prostřednictvím odkazů",
"Share until date" : "Sdílet do data",
"Expire after views" : "Platnost skončí po zobrazeních",
"Click \\\"Share\\\" first" : "Nejprve klikněte na „Sdílet“",
"Show files" : "Zobrazit soubory",
"Details" : "Podrobnosti",
"Hide details" : "Skrýt podrobnosti",
- "Password score" : "Skóre hesla",
- "Cracking times" : "Časy prolomení",
+ "Password score" : "Hodnocení hesla",
+ "Cracking times" : "Doby potřebné k prolomení",
"100 / hour" : "100 za hodinu",
"Throttled online attack" : "Omezený online útok",
"10 / second" : "10 za sekundu",
"Unthrottled online attack" : "Neomezený online útok",
- "10k / second" : "10k za sekundu",
- "Offline attack, slow hash, many cores" : "Offline útok, pomalý hash, mnoho jader",
+ "10k / second" : "10 tis. za sekundu",
+ "Offline attack, slow hash, many cores" : "Offline útok, pomalý otisk (hash), mnoho jader",
"10B / second" : "10B za sekundu",
- "Offline attack, fast hash, many cores" : "Offline útok, rychlý hash, mnoho jader",
+ "Offline attack, fast hash, many cores" : "Offline útok, rychlý otisk (hash), mnoho jader",
"Match sequence" : "Sekvence shody",
"See match sequence" : "Zobrazit sekvenci shody",
"Pattern" : "Vzor",
@@ -200,20 +199,20 @@
"Revision of" : "Reviduje",
"by" : "od",
"No revisions found." : "Nenalezeny žádné revize.",
- "Label" : "Popisek",
+ "Label" : "Štítek",
"Restore revision" : "Obnovit revizi",
"Delete revision" : "Smazat revizi",
- "Edit credential" : "Upravit pověření",
- "Create new credential" : "Vytvořit nové pověření",
+ "Edit credential" : "Upravit přihlašovací údaje",
+ "Create new credential" : "Vytvořit nové přihlašovací údaje",
"Save" : "Uložit",
"Cancel" : "Storno",
"Settings" : "Nastavení",
- "Share credential {{credential}}" : "Sdílet pověření {{credential}}",
+ "Share credential {{credential}}" : "Sdílet přihlašovací údaje {{credential}}",
"Unshare" : "Přestat sdílet",
"Showing deleted since" : "Zobrazují se smazané od",
"Beginning" : "Začátek",
- "Showing {{number_filtered}} of {{credential_number}} credentials" : "Zobrazuje se {{number_filtered}} z {{credential_number}} pověření",
- "Search for credential…" : "Hledat pověření…",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Zobrazuje se {{number_filtered}} z {{credential_number}} přihlašovacích údajů",
+ "Search for credential…" : "Hledat přihlašovací údaje…",
"Account" : "Účet",
"Password" : "Heslo",
"OTP" : "OTP",
@@ -227,7 +226,7 @@
"Delete" : "Smazat",
"Share" : "Sdílet",
"Recover" : "Obnovit",
- "Destroy" : "Zničit",
+ "Destroy" : "Zlikvidovat",
"Use regex" : "Použít regulární výraz",
"You have incoming share requests." : "Máte příchozí požadavky na sdílení.",
"If you want to put the credential in another vault," : "Pokud chcete pověření umístit do jiného trezoru,",
@@ -239,7 +238,7 @@
"Decline" : "Zamítnout",
"You have {{session_time}} left before logout." : "Do odhlášení vám zbývá {{session_time}}.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Váš trezor byl na {{time}} kvůli {{tries}} chybným pokusům uzamčen!",
- "Hello there!" : "Zdravíme!",
+ "Hello there!" : "Zdravíme",
"It does not seem that you have any passwords. Do you want to add one?" : "Nezdá se, že byste měli nějaká hesla. Chcete nějaké přidat?",
"You don't have good credentials" : "Nemáte dobré přihlašovací údaje",
"You don't have medium credentials" : "Nemáte žádné středně bezpečné přihlašovací údaje",
@@ -253,30 +252,30 @@
"No vaults found, why not create one?" : "Nebyly nalezeny žádné trezory – co nějaký vytvořit?",
"Password strength must be at least: {{strength}}" : "Je třeba, aby odolnost hesla byla přinejmenším: {{strength}}",
"Please give your new vault a name." : "Nazvěte nějak svůj nový trezor.",
- "Repeat vault password" : "Zopakujte heslo trezoru",
+ "Repeat vault password" : "Zopakujte heslo k trezoru",
"Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Vaše sdílecí klíče budou mít délku 1024 bitů, což později můžete změnit v „Nastavení“.",
"Create vault" : "Vytvořit trezor",
"Go back to vaults" : "Jít zpět k trezorům",
"Please input the password for" : "Zadejte heslo pro",
"Set this vault as the default." : "Nastavit tento trezor jako výchozí.",
"Log into this vault automatically." : "Automaticky se přihlašovat k tomuto trezoru.",
- "Log out of this vault automatically after: " : "Automaticky se z tohoto trezoru odhlásit po: ",
+ "Log out of this vault automatically after: " : "Při nečinnosti, automaticky se z tohoto trezoru odhlásit po uplynutí: ",
"Decrypt vault" : "Rozšifrovat trezor",
"Seems you lost the vault password and you're unable to log in." : "Vypadá to, že jste ztratili heslo k trezoru a nemůžete se přihlásit.",
"If you want this vault to be removed you can request that here." : "Pokud chcete, aby byl tento trezor odstraněn, můžete o jeho odstranění požádat zde.",
"An admin then accepts or declines the request" : "Správce pak požadavek buď přijme nebo odmítne",
- "After an admin destroys this vault, all credentials in it will be lost" : "Poté,co administrátor potvrdí destrukci tohoto trezoru, všechna pověření budou ztracena",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Poté, co správce potvrdí likvidaci tohoto trezoru, všechna pověření budou ztracena",
"Reason for requesting deletion (optional):" : "Důvod žádosti o smazání (volitelné):",
"Request vault destruction" : "Požádat o zničení trezoru",
- "Yes, request an admin to destroy this vault" : "Ano, požádat administrátora o zničení tohoto trezoru",
- "Cancel destruction request" : "Zrušit požadavek na destrukci",
- "Vault destruction requested" : "Vyžádání zničení trezoru",
+ "Yes, request an admin to destroy this vault" : "Ano, požádat správce o zlikvidování tohoto trezoru",
+ "Cancel destruction request" : "Zrušit požadavek na likvidaci",
+ "Vault destruction requested" : "Vyžádáno zlikvidování trezoru",
"Request removed" : "Požadavek odebrán",
- "Destruction request pending" : "Požadavek na destrukci čeká",
+ "Destruction request pending" : "Požadavek na likvidaci čeká",
"Warning! Adding credentials over HTTP is insecure!" : "Varování! Přidávání pověření přes HTTP může být nebezpečné!",
"Logged into {{vault_name}}" : "Přihlášeni do {{vault_name}}",
"Change vault" : "Změnit trezor",
- "Deleted credentials" : "Smazaná pověření",
+ "Deleted credentials" : "Smazané přihlašovací údaje",
"Logout" : "Odhlásit se",
"Donate" : "Přispět",
"Show All" : "Zobrazit vše",
@@ -288,18 +287,19 @@
"Expired" : "Platnost skončila",
"Filter Tags" : "Filtrovat štítky",
"Simple Navigation" : "Jednoduchý navigační panel ",
- "Someone has shared a credential with you." : "Někdo s vvám nasdílel pověření",
+ "Someone has shared a credential with you." : "Někdo vám nasdílel přihlašovací údaj.",
"Click here to request it" : "Pro vyžádání klikněte sem",
"Loading…" : "Načítání…",
- "Awwhh… credential not found. Maybe it expired" : "Hmmmm… pověření nenalezeno. Možná jeho platnost skončila",
+ "Awwhh… credential not found. Maybe it expired" : "Hmmmm… přihlašovací údaje nenalezeny. Možná jejich platnost skončila",
"Compromise!" : "Kompromitovat!",
"Compromised!" : "Kompromitováno!",
+ "This password is compromised. You can only remove this warning by changing the password." : "Toto heslo je kompromitováno. Toto varování je možné zrušit pouze změnou hesla.",
"email" : "e-mail",
"Description" : "Popis",
"Url" : "URL adresa",
"Custom Search:" : "Uživatelsky určené hledání:",
- "Revert to defaults" : "Vrátit na výchozí",
- "Error while saving field" : "Chyba při ukládání pole",
+ "Revert to defaults" : "Vrátit zpět na výchozí hodnoty",
+ "Error while saving field" : "Chyba při ukládání obsahu kolonky",
"A Passman item has been created, modified or deleted" : "Položka v Passman byla vytvořena, změněna, nebo odstraněna",
"A Passman item has expired" : "Platnost položky v Passman skončila",
"A Passman item has been shared" : "Položka v Passmanu byla sdílena",
@@ -310,8 +310,8 @@
"You updated %1$s" : "Aktualizovali jste %1$s",
"%2$s has revised %1$s to the revision of %3$s" : "%2$s revidoval(a) %1$s na revizi %3$s",
"You reverted %1$s back to the revision of %3$s" : "Obnovili jste %1$s zpět na revizi %3$s",
- "%3$s has renamed %1$s to %2$s" : "%3$s přejmenoval %1$s na %2$s",
- "You renamed %1$s to %2$s" : "Přemenoval jste %1$s na %2$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s přejmenoval(a) %1$s na %2$s",
+ "You renamed %1$s to %2$s" : "Přejmenovali jste %1$s na %2$s",
"%1$s has been deleted by %2$s" : "%1$s byl odstraněn uživatelem %2$s",
"You deleted %1$s" : "Smazali jste %1$s",
"%1$s has been recovered by %2$s" : "%2$s obnovil(a) %1$s",
@@ -322,6 +322,7 @@
"%1$s has been shared with %2$s" : "%1$s byl nasdílen uživatelem %2$s",
"You received a share request for %1$s from %2$s" : "Obdrželi jste nový požadavek na sdílení %1$s od uživatele %2$s",
"%s has been shared with a link" : "%s byl nasdílen pomocí odkazu",
+ "Passwords" : "Hesla",
"Your credential \"%s\" expired, click here to update the credential." : "Platnost vašeho pověření „%s“ skončila, pro obnovení klikněte sem",
"Remind me later" : "Připomenout později",
"Ignore" : "Ignorovat",
@@ -330,29 +331,29 @@
"%s has accepted your share request for \"%s\"." : "%s přijal(a) váš požadavek na sdílení „%s“.",
"Passman" : "Passman",
"Passman is a full featured password manager." : "Passman je správce hesel s mnoha funkcemi.",
- "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman je plně vybavený správce hesel.\nFunkce:\n- Trezory\n- Klíč k serveru není nikdy odesílán na server\n- Rozšíření pro prohlížeč pro snadný přístup k heslům\n- Aplikace pro Android pro přístup na cestách\n- Přihlašovací údaje jsou na straně klienta šifrovány 256 bit AES\n- Přihlašovací údaje jsou na straně serveru šifrovány 256 bit AES\n- Možnost přidat vlastní kolonky do přihlašovacích údajů\n- Vestavěné vytváření OTP (jednorázového hesla)\n- Analyzátor hesel\n- Sdílení hesel interně a zabezpečeně prostřednictvím odkazu.\n- Import z různých správců hesel (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nPro ukázku této aplikace navštivte [https://demo.passman.cc](https://demo.passman.cc)",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman je plně vybavený správce hesel.\nFunkce:\n- Trezory\n- Klíč k trezoru není nikdy odesílán na server\n- Rozšíření do webového prohlížeče pro snadný přístup k heslům\n- Aplikace pro Android pro přístup na cestách\n- Přihlašovací údaje jsou na straně klienta šifrovány algoritmem 256 bit AES\n- Přihlašovací údaje jsou na straně serveru šifrovány algoritmem 256 bit AES\n- Možnost přidávat si do přihlašovacích údajů uživatelsky určené kolonky\n- Vestavěné vytváření OTP (jednorázového hesla)\n- Analyzátor stupně bezpečnosti hesel\n- Bezpečné sdílení hesel – interně nebo prostřednictvím odkazu.\n- Import z různých správců hesel (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nUkázka této aplikace je k dispozici na [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Nepodařilo se získat informace o verzi",
"Passman Settings" : "Nastavení pro passman",
"GitHub version:" : "verze na GitHub:",
"A newer version of Passman is available" : "Je dostupná nová verze Passman",
"Password sharing" : "Sdílení hesla",
- "Credential mover" : "Přesunovač pověření",
- "Vault destruction requests" : "Požadavky na zničení trezoru",
- "Check for new versions" : "Zkontrolovat nové verze",
+ "Credential mover" : "Přesunování přihlašovacích údajů",
+ "Vault destruction requests" : "Požadavky na likvidaci trezoru",
+ "Check for new versions" : "Zjistit dostupnost případných nových verzí",
"Enable HTTPS check" : "Povolit kontrolu HTTPS",
"Disable context menu" : "Zakázat kontextovou nabídku",
"Disable JavaScript debugger" : "Zakázat ladění JavaScriptu",
"Allow users on this server to share passwords with a link" : "Povolit na tomto serveru uživatelům sdílení hesel pomocí odkazu",
"Allow users on this server to share passwords with other users" : "Povolit na tomto serveru uživatelům sdílení hesel s ostatními uživateli",
- "Move credentials from one account to another" : "Přesuňte pověření z jednoho účtu do druhého",
+ "Move credentials from one account to another" : "Přesuňte přihlašovací údaje z jednoho účtu do druhého",
"Source account" : "Zdrojový účet",
"Destination account" : "Cílový účet",
"Credentials moved!" : "Přihlašovací údaje přesunuty!",
- "Requests to destroy vault" : "Požadavky na zničení trezoru",
+ "Requests to destroy vault" : "Požadavky na likvidaci trezoru",
"Request ID" : "Identifikátor požadavku",
"Requested by" : "Požadavek od",
"Reason" : "Důvod",
- "Click here to request\n\t\t\t\t\tit" : "Klikněte sem pro žádost",
+ "Click here to request\n\t\t\t\t\tit" : "Klikněte sem pro\n\t\t\t\t\tžádost",
"Loading&hellip;" : "Načítání&hellip;",
"Awwhh… could not find the credential. Maybe it expired?" : "Hmmmm… pověření nenalezeno. Možná jeho platnost skončila?",
"Expires:" : "Platnost končí:",
diff --git a/l10n/cy_GB.js b/l10n/cy_GB.js
new file mode 100644
index 00000000..c033abac
--- /dev/null
+++ b/l10n/cy_GB.js
@@ -0,0 +1,42 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "Cyffredinol",
+ "Done" : "Done",
+ "Share link" : "Rhannu dolen",
+ "Username" : "Enw defnyddiwr",
+ "File" : "File",
+ "Add" : "Ychwanegu",
+ "Type" : "Math",
+ "Actions" : "Gweithredoedd",
+ "Size" : "Maint",
+ "Expiration date" : "Dyddiad dod i ben",
+ "Disabled" : "Analluogwyd",
+ "Export" : "Allforio",
+ "Version" : "Fersiwn",
+ "Import" : "Mewnforio",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "Ffeiliau",
+ "Pending" : "I ddod",
+ "Details" : "Manylion",
+ "by" : "gan",
+ "Save" : "Cadw",
+ "Cancel" : "Diddymu",
+ "Settings" : "Gosodiadau",
+ "Unshare" : "Dad-rannu",
+ "Account" : "Cyfrif",
+ "Password" : "Cyfrinair",
+ "URL" : "URL",
+ "Notes" : "Nodiadau",
+ "Edit" : "Golygu",
+ "Delete" : "Dileu",
+ "Share" : "Rhannu",
+ "Date" : "Date",
+ "Tags" : "Tagiau",
+ "Loading…" : "Yn llwytho…",
+ "Description" : "Disgrifiad",
+ "Saving..." : "Yn cadw...",
+ "seconds ago" : "eiliad yn ôl"
+},
+"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;");
diff --git a/l10n/cy_GB.json b/l10n/cy_GB.json
new file mode 100644
index 00000000..16e7a1a5
--- /dev/null
+++ b/l10n/cy_GB.json
@@ -0,0 +1,40 @@
+{ "translations": {
+ "General" : "Cyffredinol",
+ "Done" : "Done",
+ "Share link" : "Rhannu dolen",
+ "Username" : "Enw defnyddiwr",
+ "File" : "File",
+ "Add" : "Ychwanegu",
+ "Type" : "Math",
+ "Actions" : "Gweithredoedd",
+ "Size" : "Maint",
+ "Expiration date" : "Dyddiad dod i ben",
+ "Disabled" : "Analluogwyd",
+ "Export" : "Allforio",
+ "Version" : "Fersiwn",
+ "Import" : "Mewnforio",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "Ffeiliau",
+ "Pending" : "I ddod",
+ "Details" : "Manylion",
+ "by" : "gan",
+ "Save" : "Cadw",
+ "Cancel" : "Diddymu",
+ "Settings" : "Gosodiadau",
+ "Unshare" : "Dad-rannu",
+ "Account" : "Cyfrif",
+ "Password" : "Cyfrinair",
+ "URL" : "URL",
+ "Notes" : "Nodiadau",
+ "Edit" : "Golygu",
+ "Delete" : "Dileu",
+ "Share" : "Rhannu",
+ "Date" : "Date",
+ "Tags" : "Tagiau",
+ "Loading…" : "Yn llwytho…",
+ "Description" : "Disgrifiad",
+ "Saving..." : "Yn cadw...",
+ "seconds ago" : "eiliad yn ôl"
+},"pluralForm" :"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;"
+} \ No newline at end of file
diff --git a/l10n/da.js b/l10n/da.js
index 5e1ef9cd..7c540f54 100644
--- a/l10n/da.js
+++ b/l10n/da.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Adgangskoder",
"Generating sharing keys ( %s / 2)" : "Genererer delte nøgler (%s / 2)",
"Incorrect vault password!" : "Ukorrekt boks adgangskode",
"Passwords do not match" : "Kodeord matchede ikke",
@@ -232,6 +231,8 @@ OC.L10N.register(
"Loading…" : "Indlæser…",
"Compromise!" : "Marker kompromis!",
"Compromised!" : "Markeret kompromis!",
+ "email" : "e-mail",
+ "Description" : "Beskrivelse",
"Error while saving field" : "Fejl under lagring af felt",
"A Passman item has expired" : "Et element i Passman er udløbet",
"A Passman item has been shared" : "Et element i Passman er blevet delt",
@@ -249,11 +250,14 @@ OC.L10N.register(
"%1$s has been recovered by %2$s" : "%1$s er blevet gendannet af %2$s",
"You recovered %1$s" : "Du gendannede %1$s",
"%1$s has been permanently deleted by %2$s" : "%1$s er blevet slettet permanent af %2$s",
+ "Passwords" : "Adgangskoder",
"Remind me later" : "Påmind mig senere",
"Ignore" : "Ignorér",
+ "Passman" : "Passman",
"Passman Settings" : "Passman indstillinger",
"Password sharing" : "Password deling",
"Reason" : "Grund",
+ "Expires:" : "Udløber:",
"Connection to server lost" : "Mistede forbindelsen til serveren",
"Problem loading page, reloading in 5 seconds" : "Problem med indlæsning af side, genindlæser om 5 sekunder",
"Saving..." : "Gemmer...",
diff --git a/l10n/da.json b/l10n/da.json
index f98f8a7c..4325cbb4 100644
--- a/l10n/da.json
+++ b/l10n/da.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Adgangskoder",
"Generating sharing keys ( %s / 2)" : "Genererer delte nøgler (%s / 2)",
"Incorrect vault password!" : "Ukorrekt boks adgangskode",
"Passwords do not match" : "Kodeord matchede ikke",
@@ -230,6 +229,8 @@
"Loading…" : "Indlæser…",
"Compromise!" : "Marker kompromis!",
"Compromised!" : "Markeret kompromis!",
+ "email" : "e-mail",
+ "Description" : "Beskrivelse",
"Error while saving field" : "Fejl under lagring af felt",
"A Passman item has expired" : "Et element i Passman er udløbet",
"A Passman item has been shared" : "Et element i Passman er blevet delt",
@@ -247,11 +248,14 @@
"%1$s has been recovered by %2$s" : "%1$s er blevet gendannet af %2$s",
"You recovered %1$s" : "Du gendannede %1$s",
"%1$s has been permanently deleted by %2$s" : "%1$s er blevet slettet permanent af %2$s",
+ "Passwords" : "Adgangskoder",
"Remind me later" : "Påmind mig senere",
"Ignore" : "Ignorér",
+ "Passman" : "Passman",
"Passman Settings" : "Passman indstillinger",
"Password sharing" : "Password deling",
"Reason" : "Grund",
+ "Expires:" : "Udløber:",
"Connection to server lost" : "Mistede forbindelsen til serveren",
"Problem loading page, reloading in 5 seconds" : "Problem med indlæsning af side, genindlæser om 5 sekunder",
"Saving..." : "Gemmer...",
diff --git a/l10n/de.js b/l10n/de.js
index e740c3ea..3e84d767 100644
--- a/l10n/de.js
+++ b/l10n/de.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Passwörter",
"Generating sharing keys ( %s / 2)" : "Generiere Freigabe-Schlüssel (%s / 2)",
"Incorrect vault password!" : "Falsches Tresor-Passwort",
"Passwords do not match" : "Passwörter stimmen nicht überein",
@@ -53,8 +52,8 @@ OC.L10N.register(
"Old password field incorrect!" : "Altes Passwort-Feld falsch!",
"New password does not match!" : "Deine neuen Passwörter stimmen nicht überein!",
"Please log in with your new vault password" : "Bitte melde Dich mit Deinem neuen Tresor-Passwort an",
- "Share with users and groups" : "Mit Benutzern oder Gruppen teilen",
- "Share link" : "Link freigeben",
+ "Share with users and groups" : "Mit Benutzern und Gruppen teilen",
+ "Share link" : "Link teilen",
"Are you sure you want to leave? This will corrupt this credential" : "Möchtest Du dies wirklich verlassen? Dies wird diese Anmeldeinformation zerstören",
"Credential unshared" : "Anmeldeinformation wird nicht mehr geteilt",
"Credential shared" : "Anmeldeinformation wird geteilt",
@@ -80,10 +79,10 @@ OC.L10N.register(
"Delete current icon" : "Das aktuelle Symbol löschen",
"Get icon from page" : "Symbol von der Seite nutzen",
"This may take a few seconds…" : "Das kann einige Sekunden daueren...",
- "There was an error fetching the icon!" : "Fehler beim Laden desy Symbols!",
+ "There was an error fetching the icon!" : "Fehler beim Laden des Symbols!",
"Selected icon" : "Icon auswählen",
- "Field label" : "Beschriftung des Feldes",
- "Field value" : "Wert des Feldes",
+ "Field label" : "Feldbeschriftung",
+ "Field value" : "Feldwert",
"Choose a file" : "Datei auswählen",
"Text" : "Text",
"File" : "Datei",
@@ -158,11 +157,11 @@ OC.L10N.register(
"A total of {{scan_result}} weak credentials were found." : "Es wurden insgesamt {{scan_result}} schwache Anmeldeinformationen wurden gefunden.",
"Score" : "Bewertung",
"Action" : "Aktion",
- "Search users…" : "Suche Nutzer...",
- "Missing users? Only users that have vaults are shown." : "Nutzer gesucht? Es werden nur Nutzer mit einem Tresor angezeigt.",
+ "Search users…" : "Suche Benutzer…",
+ "Missing users? Only users that have vaults are shown." : "Benutzer gesucht? Es werden nur Benutzer mit einem Tresor angezeigt.",
"Cyphering" : "Verschlüsselung",
"Uploading" : "Lade hoch",
- "User" : "Nutzer",
+ "User" : "Benutzer",
"Crypto time" : "Verschlüsselungszeit",
"Total time spent encrypting" : "Insgesamt zur Verschlüsselung benötigte Zeit",
"Read" : "Lesen",
@@ -204,7 +203,7 @@ OC.L10N.register(
"No revisions found." : "Keine Revisionen gefunden.",
"Label" : "Beschriftung",
"Restore revision" : "Diese Revision wiederherstellen",
- "Delete revision" : "Diese Revision löschen",
+ "Delete revision" : "Revision löschen",
"Edit credential" : "Anmeldeinformation bearbeiten",
"Create new credential" : "Neue Anmeldeinformation erstellen",
"Save" : "Speichern",
@@ -218,7 +217,7 @@ OC.L10N.register(
"Search for credential…" : "Zugangsdaten suchen…",
"Account" : "Konto",
"Password" : "Passwort",
- "OTP" : "OTP (One Time Passwort)",
+ "OTP" : "OTP",
"E-mail" : "E-Mail",
"URL" : "URL",
"Notes" : "Notizen",
@@ -251,7 +250,7 @@ OC.L10N.register(
"There are no credentials with your selected tags" : "Keine Anmeldedaten mit den ausgewählten Schlagworten vorhanden",
"There are no credentials matching" : "Keine passenden Anmeldedaten",
"Last accessed" : "Letzter Zugriff",
- "Never" : "Nie",
+ "Never" : "Niemals",
"No vaults found, why not create one?" : "Kein Tresor gefunden, warum kein neues erstellen?",
"Password strength must be at least: {{strength}}" : "Mindest erforderliche Passwortstärke: {{strength}}",
"Please give your new vault a name." : "Bitte einen Namen für den neuen Tresor eingeben.",
@@ -325,6 +324,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s wurde mit %2$s geteilt",
"You received a share request for %1$s from %2$s" : "Du hast eine Anfrage zum Teilen von %1$s von %2$s erhalten",
"%s has been shared with a link" : "%s wurde über einen Link geteilt",
+ "Passwords" : "Passwörter",
"Your credential \"%s\" expired, click here to update the credential." : "Deine Anmeldedaten \"%s\" sind abgelaufen, klicke zur Aktualisierung Deiner Anmeldedaten hier.",
"Remind me later" : "Erinnere mich später",
"Ignore" : "Ignorieren",
@@ -356,7 +356,7 @@ OC.L10N.register(
"Requested by" : "Angefordert von",
"Reason" : "Grund",
"Click here to request\n\t\t\t\t\tit" : "Hier klicken um es\n\t\t\t\t\tanzufordern",
- "Loading&hellip;" : "Lade&hellip;",
+ "Loading&hellip;" : "Lade &hellip;",
"Awwhh… could not find the credential. Maybe it expired?" : "Oh… Zugangsdaten nicht gefunden. Vielleicht sind sie abgelaufen?",
"Expires:" : "Ablaufdatum:",
"Connection to server lost" : "Verbindung zum Server verloren",
diff --git a/l10n/de.json b/l10n/de.json
index e871cfb4..86dd3861 100644
--- a/l10n/de.json
+++ b/l10n/de.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Passwörter",
"Generating sharing keys ( %s / 2)" : "Generiere Freigabe-Schlüssel (%s / 2)",
"Incorrect vault password!" : "Falsches Tresor-Passwort",
"Passwords do not match" : "Passwörter stimmen nicht überein",
@@ -51,8 +50,8 @@
"Old password field incorrect!" : "Altes Passwort-Feld falsch!",
"New password does not match!" : "Deine neuen Passwörter stimmen nicht überein!",
"Please log in with your new vault password" : "Bitte melde Dich mit Deinem neuen Tresor-Passwort an",
- "Share with users and groups" : "Mit Benutzern oder Gruppen teilen",
- "Share link" : "Link freigeben",
+ "Share with users and groups" : "Mit Benutzern und Gruppen teilen",
+ "Share link" : "Link teilen",
"Are you sure you want to leave? This will corrupt this credential" : "Möchtest Du dies wirklich verlassen? Dies wird diese Anmeldeinformation zerstören",
"Credential unshared" : "Anmeldeinformation wird nicht mehr geteilt",
"Credential shared" : "Anmeldeinformation wird geteilt",
@@ -78,10 +77,10 @@
"Delete current icon" : "Das aktuelle Symbol löschen",
"Get icon from page" : "Symbol von der Seite nutzen",
"This may take a few seconds…" : "Das kann einige Sekunden daueren...",
- "There was an error fetching the icon!" : "Fehler beim Laden desy Symbols!",
+ "There was an error fetching the icon!" : "Fehler beim Laden des Symbols!",
"Selected icon" : "Icon auswählen",
- "Field label" : "Beschriftung des Feldes",
- "Field value" : "Wert des Feldes",
+ "Field label" : "Feldbeschriftung",
+ "Field value" : "Feldwert",
"Choose a file" : "Datei auswählen",
"Text" : "Text",
"File" : "Datei",
@@ -156,11 +155,11 @@
"A total of {{scan_result}} weak credentials were found." : "Es wurden insgesamt {{scan_result}} schwache Anmeldeinformationen wurden gefunden.",
"Score" : "Bewertung",
"Action" : "Aktion",
- "Search users…" : "Suche Nutzer...",
- "Missing users? Only users that have vaults are shown." : "Nutzer gesucht? Es werden nur Nutzer mit einem Tresor angezeigt.",
+ "Search users…" : "Suche Benutzer…",
+ "Missing users? Only users that have vaults are shown." : "Benutzer gesucht? Es werden nur Benutzer mit einem Tresor angezeigt.",
"Cyphering" : "Verschlüsselung",
"Uploading" : "Lade hoch",
- "User" : "Nutzer",
+ "User" : "Benutzer",
"Crypto time" : "Verschlüsselungszeit",
"Total time spent encrypting" : "Insgesamt zur Verschlüsselung benötigte Zeit",
"Read" : "Lesen",
@@ -202,7 +201,7 @@
"No revisions found." : "Keine Revisionen gefunden.",
"Label" : "Beschriftung",
"Restore revision" : "Diese Revision wiederherstellen",
- "Delete revision" : "Diese Revision löschen",
+ "Delete revision" : "Revision löschen",
"Edit credential" : "Anmeldeinformation bearbeiten",
"Create new credential" : "Neue Anmeldeinformation erstellen",
"Save" : "Speichern",
@@ -216,7 +215,7 @@
"Search for credential…" : "Zugangsdaten suchen…",
"Account" : "Konto",
"Password" : "Passwort",
- "OTP" : "OTP (One Time Passwort)",
+ "OTP" : "OTP",
"E-mail" : "E-Mail",
"URL" : "URL",
"Notes" : "Notizen",
@@ -249,7 +248,7 @@
"There are no credentials with your selected tags" : "Keine Anmeldedaten mit den ausgewählten Schlagworten vorhanden",
"There are no credentials matching" : "Keine passenden Anmeldedaten",
"Last accessed" : "Letzter Zugriff",
- "Never" : "Nie",
+ "Never" : "Niemals",
"No vaults found, why not create one?" : "Kein Tresor gefunden, warum kein neues erstellen?",
"Password strength must be at least: {{strength}}" : "Mindest erforderliche Passwortstärke: {{strength}}",
"Please give your new vault a name." : "Bitte einen Namen für den neuen Tresor eingeben.",
@@ -323,6 +322,7 @@
"%1$s has been shared with %2$s" : "%1$s wurde mit %2$s geteilt",
"You received a share request for %1$s from %2$s" : "Du hast eine Anfrage zum Teilen von %1$s von %2$s erhalten",
"%s has been shared with a link" : "%s wurde über einen Link geteilt",
+ "Passwords" : "Passwörter",
"Your credential \"%s\" expired, click here to update the credential." : "Deine Anmeldedaten \"%s\" sind abgelaufen, klicke zur Aktualisierung Deiner Anmeldedaten hier.",
"Remind me later" : "Erinnere mich später",
"Ignore" : "Ignorieren",
@@ -354,7 +354,7 @@
"Requested by" : "Angefordert von",
"Reason" : "Grund",
"Click here to request\n\t\t\t\t\tit" : "Hier klicken um es\n\t\t\t\t\tanzufordern",
- "Loading&hellip;" : "Lade&hellip;",
+ "Loading&hellip;" : "Lade &hellip;",
"Awwhh… could not find the credential. Maybe it expired?" : "Oh… Zugangsdaten nicht gefunden. Vielleicht sind sie abgelaufen?",
"Expires:" : "Ablaufdatum:",
"Connection to server lost" : "Verbindung zum Server verloren",
diff --git a/l10n/de_DE.js b/l10n/de_DE.js
index 9d3ffb37..0548cf44 100644
--- a/l10n/de_DE.js
+++ b/l10n/de_DE.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Passwörter",
"Generating sharing keys ( %s / 2)" : "Generiere Freigabe-Schlüssel ( %s / 2)",
"Incorrect vault password!" : "Tresor-Passwort nicht korrekt",
"Passwords do not match" : "Passwörter stimmen nicht überein",
@@ -80,7 +79,7 @@ OC.L10N.register(
"Delete current icon" : "Das aktuelle Symbol löschen",
"Get icon from page" : "Symbol von der Seite nutzen",
"This may take a few seconds…" : "Das kann einige Sekunden daueren...",
- "There was an error fetching the icon!" : "Fehler beim Laden desy Symbols!",
+ "There was an error fetching the icon!" : "Fehler beim Laden des Symbols!",
"Selected icon" : "Icon auswählen",
"Field label" : "Beschriftung des Feldes",
"Field value" : "Wert des Feldes",
@@ -159,7 +158,7 @@ OC.L10N.register(
"Score" : "Bewertung",
"Action" : "Aktion",
"Search users…" : "Suche Benutzer…",
- "Missing users? Only users that have vaults are shown." : "Nutzer gesucht? Es werden nur Nutzer mit einem Tresor angezeigt.",
+ "Missing users? Only users that have vaults are shown." : "Benutzer gesucht? Es werden nur Benutzer mit einem Tresor angezeigt.",
"Cyphering" : "Verschlüsselung",
"Uploading" : "Lade hoch",
"User" : "Benutzer",
@@ -218,7 +217,7 @@ OC.L10N.register(
"Search for credential…" : "Suche Anmeldeinformationen…",
"Account" : "Konto",
"Password" : "Passwort",
- "OTP" : "OTP (One Time Passwort)",
+ "OTP" : "OTP",
"E-mail" : "E-Mail",
"URL" : "URL",
"Notes" : "Notizen",
@@ -325,6 +324,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s wurde mit %2$s geteilt",
"You received a share request for %1$s from %2$s" : "Sie haben eine Anfrage zum Teilen von %1$s von %2$s erhalten",
"%s has been shared with a link" : "%s wurde über einen Link geteilt",
+ "Passwords" : "Passwörter",
"Your credential \"%s\" expired, click here to update the credential." : "Ihre Anmeldedaten \"%s\" sind abgelaufen, klicken Sie zur Aktualisierung ihrer Anmeldedaten hier.",
"Remind me later" : "Erinnern Sie mich später",
"Ignore" : "Ignorieren",
@@ -356,12 +356,12 @@ OC.L10N.register(
"Requested by" : "Angefragt von",
"Reason" : "Grund",
"Click here to request\n\t\t\t\t\tit" : "Hier klicken um es\n\t\t\t\t\tanzufordern",
- "Loading&hellip;" : "Lade&hellip;",
+ "Loading&hellip;" : "Lade &hellip;",
"Awwhh… could not find the credential. Maybe it expired?" : "Oh… Zugangsdaten nicht gefunden. Vielleicht sind sie abgelaufen?",
"Expires:" : "Ablaufdatum:",
"Connection to server lost" : "Verbindung zum Server verloren",
"Problem loading page, reloading in 5 seconds" : "Problem beim Laden der Seite, Seite wird in 5 Sekunden erneut geladen",
- "Saving..." : "Speichere …",
+ "Saving..." : "Speichere…",
"Dismiss" : "Ausblenden",
"seconds ago" : "Gerade eben"
},
diff --git a/l10n/de_DE.json b/l10n/de_DE.json
index cec92fc2..abaf11e9 100644
--- a/l10n/de_DE.json
+++ b/l10n/de_DE.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Passwörter",
"Generating sharing keys ( %s / 2)" : "Generiere Freigabe-Schlüssel ( %s / 2)",
"Incorrect vault password!" : "Tresor-Passwort nicht korrekt",
"Passwords do not match" : "Passwörter stimmen nicht überein",
@@ -78,7 +77,7 @@
"Delete current icon" : "Das aktuelle Symbol löschen",
"Get icon from page" : "Symbol von der Seite nutzen",
"This may take a few seconds…" : "Das kann einige Sekunden daueren...",
- "There was an error fetching the icon!" : "Fehler beim Laden desy Symbols!",
+ "There was an error fetching the icon!" : "Fehler beim Laden des Symbols!",
"Selected icon" : "Icon auswählen",
"Field label" : "Beschriftung des Feldes",
"Field value" : "Wert des Feldes",
@@ -157,7 +156,7 @@
"Score" : "Bewertung",
"Action" : "Aktion",
"Search users…" : "Suche Benutzer…",
- "Missing users? Only users that have vaults are shown." : "Nutzer gesucht? Es werden nur Nutzer mit einem Tresor angezeigt.",
+ "Missing users? Only users that have vaults are shown." : "Benutzer gesucht? Es werden nur Benutzer mit einem Tresor angezeigt.",
"Cyphering" : "Verschlüsselung",
"Uploading" : "Lade hoch",
"User" : "Benutzer",
@@ -216,7 +215,7 @@
"Search for credential…" : "Suche Anmeldeinformationen…",
"Account" : "Konto",
"Password" : "Passwort",
- "OTP" : "OTP (One Time Passwort)",
+ "OTP" : "OTP",
"E-mail" : "E-Mail",
"URL" : "URL",
"Notes" : "Notizen",
@@ -323,6 +322,7 @@
"%1$s has been shared with %2$s" : "%1$s wurde mit %2$s geteilt",
"You received a share request for %1$s from %2$s" : "Sie haben eine Anfrage zum Teilen von %1$s von %2$s erhalten",
"%s has been shared with a link" : "%s wurde über einen Link geteilt",
+ "Passwords" : "Passwörter",
"Your credential \"%s\" expired, click here to update the credential." : "Ihre Anmeldedaten \"%s\" sind abgelaufen, klicken Sie zur Aktualisierung ihrer Anmeldedaten hier.",
"Remind me later" : "Erinnern Sie mich später",
"Ignore" : "Ignorieren",
@@ -354,12 +354,12 @@
"Requested by" : "Angefragt von",
"Reason" : "Grund",
"Click here to request\n\t\t\t\t\tit" : "Hier klicken um es\n\t\t\t\t\tanzufordern",
- "Loading&hellip;" : "Lade&hellip;",
+ "Loading&hellip;" : "Lade &hellip;",
"Awwhh… could not find the credential. Maybe it expired?" : "Oh… Zugangsdaten nicht gefunden. Vielleicht sind sie abgelaufen?",
"Expires:" : "Ablaufdatum:",
"Connection to server lost" : "Verbindung zum Server verloren",
"Problem loading page, reloading in 5 seconds" : "Problem beim Laden der Seite, Seite wird in 5 Sekunden erneut geladen",
- "Saving..." : "Speichere …",
+ "Saving..." : "Speichere…",
"Dismiss" : "Ausblenden",
"seconds ago" : "Gerade eben"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/l10n/el.js b/l10n/el.js
index 81f02321..8c8d3a79 100644
--- a/l10n/el.js
+++ b/l10n/el.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Συνθηματικά",
"Generating sharing keys ( %s / 2)" : "Δημιουργία κλειδιών διαμοιρασμού (Βήμα %s / 2)",
"Incorrect vault password!" : "Εσφαλμένος κωδικός θαλάμου!",
"Passwords do not match" : "Δεν ταιριάζουν τα συθηματικά",
@@ -16,10 +15,14 @@ OC.L10N.register(
"Credential updated" : "Τα διαπιστευτήρια ενημερώθηκαν",
"Credential recovered" : "Τα διαπιστευτήρια ανακτήθηκαν",
"Credential destroyed" : "Τα διαπιστευτήρια καταστράφηκαν",
+ "Error downloading file, you probably have insufficient permissions" : "Σφάλμα λήψης αρχείου, μάλλον δεν έχετε αρκετά δικαιώματα",
"Invalid QR code" : "Με έγκυρος κώδικας QR",
"Starting export" : "Έναρξη εξαγωγής",
"Decrypting credentials" : "Αποκρυπτογράφηση διαπιστευτηρίων",
"Done" : "Ολοκληρώθηκε",
+ "File read." : "Ανάγνωση αρχείου.",
+ "Proceed with the following steps to import your file" : "Συνεχίστε με τα ακόλουθα βήματα για την εισαγωγή του αρχείου σας",
+ "Skipping unlabeled credential" : "Παράλειψη μη επισημασμένων διαπιστευτηρίων",
"Adding {{credential}}" : "Προσθήκη του {{credential}}",
"Added {{credential}}" : "Προστέθηκε {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Παράλειψη διαπιστευτηρίων, έλλειψη ετικέτας στη γραμμή {{line}}",
@@ -27,27 +30,56 @@ OC.L10N.register(
"Importing" : "Γίνεται εισαγωγή",
"Start import" : "Έναρξη εισαγωγής",
"Select CSV file" : "Επιλέξτε αρχείο CSV",
+ "Parsed {{rows}} lines from CSV file" : "Ανάλυση {{rows}} γραμμών από αρχείο CSV",
"Skip first row" : "Παράλειψη πρώτης σειράς",
+ "You need to assign the label field before you can start the import." : "Προσθέστε ετικέτα πριν την έναρξη της εισαγωγής.",
"The first 5 lines of the CSV are shown." : "Προβάλλονται οι πρώτες 5 γραμμές του CSV.",
+ "Assign the proper fields to each column." : "Καθορίστε τα κατάλληλα πεδία σε κάθε στήλη.",
+ "Example of imported credential" : "Παράδειγμα εισαχθέντος διαπιστευτηρίου",
+ "Missing an importer? Try it with the generic CSV importer." : "Λείπει στοιχείο; Δοκιμάστε το με το γενική εισαγωγή CSV.",
+ "Go back to importers." : "Επιστροφή στους εισαγωγείς.",
"Revision deleted" : "Διαγράφηκε η αναθεώρηση",
+ "Revision restored" : "Η αναθεώρηση επαναφέρθηκε",
+ "Save in Passman" : "Αποθήκευση στο passman",
"Settings saved" : "Οι ρυθμίσεις αποθηκεύτηκαν",
"General settings" : "Γενικές ρυθμίσεις",
+ "Password audit" : "Έλεγχος κωδικού πρόσβασης",
"Password settings" : "Ρυθμίσεις συνθηματικού",
"Import credentials" : "Εισαγωγή διαπιστευτηρίων",
"Export credentials" : "Εξαγωγή διαπιστευτηρίων",
+ "Sharing" : "Διαμοιρασμός",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Είστε βέβαιος ότι θέλετε να αποχωρήσετε; Θα διαγραφούν όλα τα διαπιστευτήριά σας",
+ "Old password field incorrect!" : "Εσφαλμένο παλαιό συνθηματικό!",
+ "New password does not match!" : "Ο νέος κωδικός δεν ταιριάζει!",
+ "Please log in with your new vault password" : "Παρακαλώ συνδεθείτε με τον νέο σας κωδικό πρόσβασης κρύπτης",
+ "Share with users and groups" : "Διαμοιρασμός με χρήστες και ομάδες",
"Share link" : "Διαμοιρασμός συνδέσμου",
+ "Are you sure you want to leave? This will corrupt this credential" : "Είστε βέβαιος ότι θέλετε να αποχωρήσετε; Θα διαγραφούν όλα τα διαπιστευτήριά σας",
+ "Credential unshared" : "Τα διαπιστευτήριά σας δεν είναι κοινόχρηστα",
+ "Credential shared" : "Διαπιστευτήρια σε κοινή χρήση",
"Saved!" : "Αποθηκεύτηκαν!",
+ "Poor" : "Φτωχός",
"Weak" : "Ασθενές",
+ "Good" : "Καλό",
+ "Strong" : "Ισχυρός",
+ "Toggle visibility" : "Εναλλαγή ορατότητας",
"Copy to clipboard" : "Αντιγραφή στο πρόχειρο",
"Copied to clipboard!" : "Αντιγράφηκε στο πρόχειρο!",
"Generate password" : "Δημιουργία συνθηματικού",
"Copy password to clipboard" : "Αντιγραφή συνθηματικού στο πρόχειρο",
"Password copied to clipboard!" : "Το συνθηματικό αντιγράφτηκε στο πρόχειρο.",
+ "Complete" : "Ολοκληρώθηκε",
"Username" : "Όνομα χρήστη",
"Repeat password" : "Επανάληψη συνθηματικού",
"Add tag" : "Πρόσθεσε ετικέτα",
"Pick an icon" : "Επιλογή εικονιδίου",
+ "Search icons" : "Αναζήτηση εικονιδίων",
+ "Upload a custom icon:" : "Μεταφόρτωση προσαρμοσμένου εικονιδίου:",
"Use this icon" : "Χρήση αυτού του εικονιδίου",
+ "Delete current icon" : "Διαγραφή τρέχων εικονιδίου",
+ "Get icon from page" : "Αποκτήστε το εικονίδιο από τη σελίδα",
+ "This may take a few seconds…" : "Χρειάζονται λίγα δευτερόλεπτα...",
+ "There was an error fetching the icon!" : "Σφάλμα κατά την ανάκτηση του εικονιδίου!",
"Selected icon" : "Επιλεγμένο εικονίδιο",
"Field label" : "Ετικέτα πεδίου",
"Field value" : "Τιμή πεδίου",
@@ -62,8 +94,13 @@ OC.L10N.register(
"Filename" : "Όνομα αρχείου",
"Upload date" : "Ημερομηνία μεταφόρτωσης",
"Size" : "Μέγεθος",
+ "Upload or enter your OTP secret" : "Μεταφορτώστε ή εισαγάγετε το μυστικό OTP",
+ "Current OTP settings" : "Τρέχουσες ρυθμίσεις ΟΤΡ",
+ "Issuer" : "Εκδότης",
"Secret" : "Μυστικό",
"Expiration date" : "Ημερομηνία λήξης",
+ "No expiration date set" : "Χωρίς λήξη",
+ "Renew interval" : "Ανανέωση διαστήματος",
"Disabled" : "Απενεργοποιημένο",
"Day(s)" : "Ημέρα(-ες)",
"Week(s)" : "Εβδομάδα(-ες)",
@@ -71,18 +108,38 @@ OC.L10N.register(
"Year(s)" : "Χρόνος(-ια)",
"Password generation settings" : "Ρυθμίσεις δημιουργίας συνθηματικών",
"Password length" : "Μέγεθος συνθηματικού",
+ "Minimum amount of digits" : "Ελάχιστη ποσότητα ψηφίων",
+ "Use uppercase letters" : "Χρήση κεφαλαίων γραμμάτων",
"Use lowercase letters" : "Χρησιμοποιήστε πεζούς χαρακτήρες",
"Use numbers" : "Χρήση αριθμών",
"Use special characters" : "Χρήση ειδικών χαρακτήρων",
+ "Avoid ambiguous characters" : "Αποφύγετε ασαφής χαρακτήρες",
+ "Require every character type" : "Απαιτείται κάθε τύπος χαρακτήρων",
"Export type" : "Τύπος εξαγωγής",
"Export" : "Εξαγωγή",
+ "Enter vault password to confirm export." : "Εισαγάγετε τον κωδικό πρόσβασης κρύπτης για επιβεβαίωση εξόδου.",
+ "Rename vault" : "Μετονομασία κρύπτης",
+ "New vault name" : "Νέο όνομα κρύπτης",
"Change" : "Αλλαγή",
+ "Change vault key" : "Αλλαγή κλειδιού κρύπτης",
+ "Old vault password" : "Παλαιός κωδικός κρύπτης",
+ "New vault password" : "Νέος κωδικός κρύπτης",
+ "Repeat new vault password" : "Επανάληψη νέου κωδικού κρύπτης",
+ "Please wait your vault is being updated, do not leave this page." : "Παρακαλώ περιμένετε η κρύπτη σας ενημερώνετε, μην κλείσετε την σελίδα.",
+ "Processing" : "Επεξεργασία",
"Total progress" : "Συνολική πρόοδος",
"About Passman" : "Περί εφαρμογής Passman",
"Version" : "Έκδοση",
"Donate to support development" : "Κάντε μια δωρεά για να υποστηρίξετε την ανάπτυξη",
+ "Bookmarklet" : "Εφαρμογίδιο Σελιδοδεικτών",
+ "Save your passwords with one click." : "Αποθηκεύστε το συνθηματικό σας με ένα κλικ.",
+ "Drag below button to your bookmark toolbar." : "Σύρεται το κουμπί παρακάτω στην γραμμή σελιδοδεικτών.",
+ "Delete vault" : "Διαγραφή κρύπτης",
+ "Vault password" : "Κωδικός πρόσβασης κρύπτης ",
+ "This process is irreversible" : "Αυτή η ενέργεια είναι μη αναστρέψιμη",
"Delete my precious passwords" : "Διαγραφή των πολύτιμων συνθηματικών μου",
"Deleting {{password}}…" : "Γίνεται διαγραφή {{password}}…",
+ "Yes, delete my precious passwords" : "Ναι, διαγραφή των πολύτιμων συνθηματικών μου",
"Import type" : "Τύπος εισαγωγής",
"Import" : "Εισαγωγή",
"Read progress" : "Πρόοδος ανάγνωσης",
@@ -91,12 +148,22 @@ OC.L10N.register(
"Public key" : "Δημόσιο κλειδί",
"Key size" : "Μέγεθος κλειδιού",
"Save keys" : "Αποθήκευση κλειδιών",
+ "Generate sharing keys" : "Δημιουργία κλειδιών κοινής χρήσης",
+ "Generating sharing keys" : "Δημιουργία κλειδιών κοινής χρήσης",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Το εργαλείο κωδικού πρόσβασης σαρώνει τον κωδικό σας, υπολογίζει το μέσο χρόνο παραβίασης, καταγράφοντας την αντοχή του.",
+ "Minimum password stength" : "Ελάχιστη ισχύς κωδικού πρόσβασης",
"Start scan" : "Εκκίνηση σάρωσης",
"Result" : "Αποτέλεσμα",
+ "A total of {{scan_result}} weak credentials were found." : "Συνολικά βρέθηκαν {{scan_result}} αδύναμα διαπιστευτήρια.",
+ "Score" : "Αποτέλεσμα",
"Action" : "Ενέργεια",
"Search users…" : "Αναζήτηση χρηστών…",
+ "Missing users? Only users that have vaults are shown." : "Λείπουν χρήστες; Εμφανίζονται μόνο οι χρήστες που έχουν κρύπτη.",
+ "Cyphering" : "Κρυπτογράφηση",
"Uploading" : "Γίνεται μεταφόρτωση",
"User" : "Χρήστης",
+ "Crypto time" : "Χρόνος κρυπτογράφησης",
+ "Total time spent encrypting" : "Συνολικός χρόνος που αφιερώθηκε για κρυπτογράφηση",
"Read" : "Ανάγνωση",
"Write" : "Εγγραφή",
"Files" : "Αρχεία",
@@ -105,17 +172,35 @@ OC.L10N.register(
"Enable link sharing" : "Ενεργοποίηση διαμοιρασμού συνδέσμου",
"Share until date" : "Διαμοιρασμός έως την ημερομηνία",
"Expire after views" : "Λήξη μετά από προβολές",
+ "Click \\\"Share\\\" first" : "Κλίκ \\\"Διαμοιρασμός\\\" πρώτα",
"Show files" : "Εμφάνιση αρχείων",
"Details" : "Λεπτομέρειες",
"Hide details" : "Απόκρυψη λεπτομερειών",
+ "Password score" : "Βαθμολογία κωδικού πρόσβασης",
+ "Cracking times" : "Σύνολο παραβιάσεων",
"100 / hour" : "100 / ώρα",
+ "Throttled online attack" : "Επίθεση online περιορισμού (Throttled) ",
"10 / second" : "10 / δευτερόλεπτο",
+ "Unthrottled online attack" : "Επίθεση online μη περιορισμού (Unthrottled) ",
"10k / second" : "10k / δευτερόλεπτο",
+ "Offline attack, slow hash, many cores" : "Επίθεση εκτός σύνδεσης, αργό hash, πολλοί πυρήνες",
"10B / second" : "10B / δευτερόλεπτο",
+ "Offline attack, fast hash, many cores" : "Επίθεση εκτός σύνδεσης, γρήγορο hash, πολλοί πυρήνες",
+ "Match sequence" : "Ακολουθία ομοίων",
+ "See match sequence" : "Εμφάνιση ακολουθίας ομοίων",
"Pattern" : "Μοτίβο",
+ "Matched word" : "Όμοια λέξη",
"Dictionary name" : "Όνομα λεξικου",
"Rank" : "Θέση",
+ "Reversed" : "Αντιστροφή",
+ "Guesses" : "Εικασίες",
+ "Base guesses" : "Βασικές εικασίες",
+ "Uppercase variations" : "Παραλλαγές κεφαλαίων",
+ "l33t-variations" : "l33t-παραλλαγές",
+ "Showing revisions of" : "Εμφάνιση αναθεωρήσεων του",
+ "Revision of" : "Αναθεώρηση του",
"by" : "από",
+ "No revisions found." : "Δεν βρέθηκε αναθεώρηση",
"Label" : "Ετικέτα",
"Restore revision" : "Επαναφορά αναθεώρησης",
"Delete revision" : "Διαγραφή αναθεώρησης",
@@ -124,8 +209,11 @@ OC.L10N.register(
"Save" : "Αποθήκευση",
"Cancel" : "Άκυρο",
"Settings" : "Ρυθμίσεις",
+ "Share credential {{credential}}" : "Διαμοιρασμός διαπιστευτηρίων {{credential}}",
"Unshare" : "Διακοπή διαμοιρασμού",
+ "Showing deleted since" : "Εμφάνιση διεγραμμένων από",
"Beginning" : "Έναρξη",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Εμφάνιση {{number_filtered}} από {{credential_number}} διαπιστευτηρίων",
"Search for credential…" : "Αναζήτηση για διαπιστευτήρια...",
"Account" : "Λογαριασμός",
"Password" : "Συνθηματικό",
@@ -134,59 +222,143 @@ OC.L10N.register(
"URL" : "URL",
"Notes" : "Σημειώσεις",
"Expiry time" : "Ώρα λήξης",
+ "Changed" : "Άλλαξε",
"Created" : "Δημιουργήθηκε",
"Edit" : "Επεξεργασία",
"Delete" : "Διαγραφή",
"Share" : "Διαμοιρασμός",
"Recover" : "Ανάκτηση",
"Destroy" : "Καταστροφή",
+ "Use regex" : "Χρήση regex",
+ "You have incoming share requests." : "Έχετε εισερχόμενα αιτήματα κοινόχρηστου.",
+ "If you want to put the credential in another vault," : "Εάν επιθυμείτε την εισαγωγή διαπιστευτηρίων σας σε άλλη κρύπτη,",
+ "log out of this vault and log into the vault you want the shared credential in." : "αποσυνδεθείτε από αυτή την κρύπτη και συνδεθείτε σε αυτή που θέλετε να μοιραστείτε το κοινόχρηστο πιστοποιητικό.",
"Permissions" : "Δικαιώματα",
"Received from" : "Ελήφθη από",
"Date" : "Ημερομηνία",
"Accept" : "Αποδοχή",
"Decline" : "Απόρριψη",
"You have {{session_time}} left before logout." : "Έχει απομείνει {{session_time}} πριν την έξοδο.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Η κρύπτη σας κλείδωσε για {{time}} επειδή έγιναν {{tries}} αποτυχημένες προσπάθειες!",
+ "Hello there!" : "Γειά σου!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "Φαίνεται πως δεν έχετε κανένα κωδικό. Θέλετε να προσθέσετε κάποιον;",
+ "You don't have good credentials" : "Δεν έχετε σωστά διαπιστευτήρια",
+ "You don't have medium credentials" : "Δεν έχετε μεσαία διαπιστευτήρια",
+ "You don't have bad credentials" : "Δεν έχετε άσχημα διαπιστευτήρια",
+ "You don't have expired credentials" : "Δεν έχετε ληγμένα διαπιστευτήρια",
+ "You don't have deleted credentials" : "Δεν έχετε διεγραμμένα διαπιστευτήρια",
+ "There are no credentials with your selected tags" : "Δεν υπάρχουν διαπιστευτήρια με τις ετικέτες που επιλέξατε",
+ "There are no credentials matching" : "Δεν υπάρχει συμφωνία διαπιστευτηρίων",
"Last accessed" : "Τελευταία προσπέλαση",
"Never" : "Ποτέ",
+ "No vaults found, why not create one?" : "Δεν βρέθηκε κρύπτη, γιατί δεν δημιουργείται μία;",
+ "Password strength must be at least: {{strength}}" : "Η ισχύς του κωδικού πρόσβασης πρέπει να είναι: {{strength}}",
+ "Please give your new vault a name." : "Παρακαλώ ονομάστε την νέα σα κρύπτη.",
+ "Repeat vault password" : "Επαναλάβετε τον κωδικό κρύπτης",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Το κοινής χρήσης κλειδί σας θα είναι ισχυρό με 1024 bit, όπου μπορείτε να αλλάξετε από τις \\\"Επιλογές\\\" αργότερα.",
+ "Create vault" : "Δημιουργία κρύπτης",
+ "Go back to vaults" : "Πίσω στις κρύπτες",
+ "Please input the password for" : "Παρκαλώ εισάγεται τον κωδικό για",
+ "Set this vault as the default." : "Ορισμός κρύπτης ώς προεπιλογής.",
+ "Log into this vault automatically." : "Σύνδεση σε αυτή την κρύπτη αυτόματα.",
+ "Log out of this vault automatically after: " : "Αποσύνδεση απο την κρύπτη αυτόματα μετά από:",
+ "Decrypt vault" : "Αποκρυπτογράφηση κρύπτης",
+ "Seems you lost the vault password and you're unable to log in." : "Φαίνεται πως ξεχάσατε τον κωδικό κρύπτης και δεν μπορείτε να συνδεθείτε.",
+ "If you want this vault to be removed you can request that here." : "Εάν επιθυμείτε την κατάργηση της κρύπτης αιτηθείτε το εδώ.",
+ "An admin then accepts or declines the request" : "Ένας διαχειριστής θα αποδεχθεί ή θα απορρίψει το αίτημα",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Μετά την καταστροφή της κρύπτης από διαχειριστή, όλα τα διαπιστευτήρια θα χαθούν",
+ "Reason for requesting deletion (optional):" : "Λόγος αίτησης διαγραφής (προαιρετικό):",
+ "Request vault destruction" : "Αίτημα καταστροφής κρύπτης",
+ "Yes, request an admin to destroy this vault" : "Ναι, αίτημα προς διαχειριστή να καταστρέψει την κρύπτη",
"Cancel destruction request" : "Αίτημα ακύρωσης καταστροφής",
+ "Vault destruction requested" : "Αίτημα καταστροφής κρύπτης καταχωρήθηκε",
+ "Request removed" : "Το αίτημα διαγράφηκε",
"Destruction request pending" : "Εκκρεμεί το αίτημα καταστροφής",
+ "Warning! Adding credentials over HTTP is insecure!" : "Προσοχή! Η προσθήκη διαπιστευτηρίων μέσω HTTP δεν είναι ασφαλής!",
+ "Logged into {{vault_name}}" : "Είσοδος στο {{vault_name}}",
+ "Change vault" : "Αλλαγή κρύπτης",
"Deleted credentials" : "Διεγραμμένα διαπιστευτήρια",
"Logout" : "Έξοδος",
"Donate" : "Δωρεά",
+ "Show All" : "Εμφάνιση όλων",
+ "Tags" : "Ετικέτες",
+ "Search Tags" : "Αναζήτηση Ετικετών",
+ "Good Strength" : "Καή Ισχύς",
+ "Medium Strength" : "Μεσαία Ισχύς",
+ "Bad Strength" : "Κακή Ισχύς",
+ "Expired" : "Έληξε",
+ "Filter Tags" : "Φίλτρο Ετικετών",
+ "Simple Navigation" : "Απλή Πλοήγηση",
"Someone has shared a credential with you." : "Κάποιος διαμοιράστηκε τα διαπιστευτήρια μαζί σας.",
"Click here to request it" : "Κάντε κλικ εδώ για να το αιτηθείτε",
"Loading…" : "Γίνεται φόρτωση...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh… τα διαπιστευτήρια δεν βρέθηκαν. Ίσως έληξαν",
+ "Compromise!" : "Διακινδυνευμένο!",
+ "Compromised!" : "Με κίνδυνο!",
+ "This password is compromised. You can only remove this warning by changing the password." : "Ο κωδικός είναι διακινδυνεμένος. Μπορείτε να αφαιρέσετε αυτή την προειδοποίηση αλλάζοντας τον κωδικό.",
+ "email" : "ηλεκτρονικό ταχυδρομείο",
+ "Description" : "Περιγραφή",
+ "Url" : "Url",
+ "Custom Search:" : "Προσαρμοσμένη Αναζήτηση:",
+ "Revert to defaults" : "Επαναφορά στις προεπιλογές",
"Error while saving field" : "Σφάλμα κατά την αποθήκευση πεδίου",
"A Passman item has been created, modified or deleted" : "Ένα αντικείμενο Passman δημιουργήθηκε, τροποποιήθηκε ή διαγράφηκε",
"A Passman item has expired" : "Έληξε ένα αντικείμενο Passman",
"A Passman item has been shared" : "Ένα αντικείμενο του Passman έχει διαμοιραστεί",
"A Passman item has been renamed" : "Μετονομάστηκε ένα αντικείμενο Passman",
+ "%1$s has been created by %2$s" : "%1$s δημιουργήθηκε από τον %2$s",
"You created %1$s" : "Δημιουργήσατε το %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ενημερώθηκε από τον %2$s",
"You updated %1$s" : "Ενημερώσατε %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s έχει αναθεωρηθεί %1$s στην αναθεώρηση της %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Επαναφέρατε το %1$s πίσω στην αναθεώρηση του%3$s",
"%3$s has renamed %1$s to %2$s" : "%3$s μετονόμασε το %1$s σε %2$s",
"You renamed %1$s to %2$s" : "Μετονομάσατε το %1$s σε %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s διαγράφηκε από τον %2$s",
"You deleted %1$s" : "Διαγράψατε το %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s επαναφέρθηκε από τον %2$s",
+ "You recovered %1$s" : "Επαναφέρατε %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s έχει διαγραφεί οριστικά από %2$s",
"You permanently deleted %1$s" : "Διαγράψατε μόνιμα το %1$s",
"The password of %1$s has expired, renew it now." : "Εληξε το συνθηματικό του %1$s, να ανανεωθεί τώρα.",
+ "%1$s has been shared with %2$s" : "%1$s έχει διαμοιραστεί με %2$s",
"You received a share request for %1$s from %2$s" : "Λάβατε αίτημα διαμοιρασμού για %1$s από τον %2$s",
"%s has been shared with a link" : "%s διαμοιράστηκε με σύνδεσμο",
+ "Passwords" : "Συνθηματικά",
+ "Your credential \"%s\" expired, click here to update the credential." : "Τα διαπιστευτήριά σας \"%s\" έληξαν, κλίκ εδώ για ανανέωσή τους.",
"Remind me later" : "Θύμισέ μου αργότερα",
"Ignore" : "Αγνόηση",
"%s shared \"%s\" with you. Click here to accept" : "%s διαμοιράστηκε \"%s\" μαζί σας. Κάντε κλίκ για αποδοχή",
+ "%s has declined your share request for \"%s\"." : "%s απορρίψατε το αίτημα διαμοιρσμού για \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "Ο %s αποδέχτηκε το αίτημα διαμοιρασμού σας για \"%s\"",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Ο Passman είναι ένας πλήρης διαχειριστής κωδικών πρόσβασης.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Η Passman είναι ένας πλήρης διαχειριστής κωδικών πρόσβασης.\nΧαρακτηριστηκά:\n- Κρύπτες\n- Τα κλειδιά Κρύπτης δεν στέλνονται στον διακομιστή\n- Πρόσθετα για φυλλομετρητή εύκολης πρόσβασης στους κωδικούς\n- Εφαρμογή Android για πρόσβαση εν κινήσει\n- Διαπιστευτήρια με κρυπτογράφηση του πελάτη με 256bit AES\n- Διαπιστευτήρια με κρυπτογράφηση του δαικομιστή με 256bit AES\n- Δυνατότητα προσθήκης προσαρμοσμένων πεδίων στα διαπιστευτήρια\n- Ενσωματωμένη γεννήτρια OTP (Κωδικός Μιας Χρήσης)\n- Αναλυτής κωδικών\n- Μοιραστείτε κωδικούς πρόσβασης εσωτερικά και μέσω συνδέσμου με απόλυτη ασφάλεια.\n- Εισαγωγή από διάφορους διαχειριστές κωδικών (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nΓια demo της εφαρμογής δείτε [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Αδυναμία λήψης πληροφορίες έκδοσης",
"Passman Settings" : "Ρυθμίσεις Passman",
"GitHub version:" : "Έκδοση GitHub:",
"A newer version of Passman is available" : "Μια νέα έκδοση του Passman είναι διαθέσιμη",
"Password sharing" : "Διαμοιρασμός συνθηματικών",
+ "Credential mover" : "Διακινητής διαπιστευτηρίων",
+ "Vault destruction requests" : "Αιτήματα καταστροφής κρύπτης",
"Check for new versions" : "Έλεγχος για νέες εκδόσεις",
"Enable HTTPS check" : "Ενεργοποίηση ελέγχου HTTPS",
+ "Disable context menu" : "Απενεργοποήηση μενού περιβάλλοντος",
+ "Disable JavaScript debugger" : "Απενεργοποιήστε τον εντοπισμό σφαλμάτων JavaScript",
+ "Allow users on this server to share passwords with a link" : "Επιτρέψτε στους χρήστες του διακομιστή να μοιράζονται κωδικούς πρόσβασης με σύνδεσμο",
+ "Allow users on this server to share passwords with other users" : "Επιτρέψτε στους χρήστες του διακομιστή να μοιράζονται κωδικούς πρόσβασης με άλλους χρήστες",
+ "Move credentials from one account to another" : "Μετακίνηση διαπιστευτηρίων από έναν λογαριασμό σε άλλον",
"Source account" : "Πηγαίος λογαριασμός",
"Destination account" : "Λογαριασμός προορισμού",
"Credentials moved!" : "Αφαιρέθηκαν τα διαπιστευτήρια!",
+ "Requests to destroy vault" : "Αιτήματα για καταστροφή κρύπτης",
"Request ID" : "Αίτημα ID",
"Requested by" : "Αιτήθηκε από",
"Reason" : "Λόγος",
+ "Click here to request\n\t\t\t\t\tit" : "Κλίκ εδώ για αίτημα\n\t\t\t\t\t",
+ "Loading&hellip;" : "Loading&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Awwhh… δεν βρέθηκαν τα διαπιστευτήρια. Μήπως έληξαν;",
+ "Expires:" : "Ληγμένα:",
"Connection to server lost" : "Η σύνδεση στον διακομιστή διακόπηκε",
"Problem loading page, reloading in 5 seconds" : "Πρόβλημα φόρτωσης σελίδας, φόρτωση ξανά σε 5 δευτερόλεπτα",
"Saving..." : "Γίνεται αποθήκευση...",
diff --git a/l10n/el.json b/l10n/el.json
index 1a2dc228..5c50e97a 100644
--- a/l10n/el.json
+++ b/l10n/el.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Συνθηματικά",
"Generating sharing keys ( %s / 2)" : "Δημιουργία κλειδιών διαμοιρασμού (Βήμα %s / 2)",
"Incorrect vault password!" : "Εσφαλμένος κωδικός θαλάμου!",
"Passwords do not match" : "Δεν ταιριάζουν τα συθηματικά",
@@ -14,10 +13,14 @@
"Credential updated" : "Τα διαπιστευτήρια ενημερώθηκαν",
"Credential recovered" : "Τα διαπιστευτήρια ανακτήθηκαν",
"Credential destroyed" : "Τα διαπιστευτήρια καταστράφηκαν",
+ "Error downloading file, you probably have insufficient permissions" : "Σφάλμα λήψης αρχείου, μάλλον δεν έχετε αρκετά δικαιώματα",
"Invalid QR code" : "Με έγκυρος κώδικας QR",
"Starting export" : "Έναρξη εξαγωγής",
"Decrypting credentials" : "Αποκρυπτογράφηση διαπιστευτηρίων",
"Done" : "Ολοκληρώθηκε",
+ "File read." : "Ανάγνωση αρχείου.",
+ "Proceed with the following steps to import your file" : "Συνεχίστε με τα ακόλουθα βήματα για την εισαγωγή του αρχείου σας",
+ "Skipping unlabeled credential" : "Παράλειψη μη επισημασμένων διαπιστευτηρίων",
"Adding {{credential}}" : "Προσθήκη του {{credential}}",
"Added {{credential}}" : "Προστέθηκε {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Παράλειψη διαπιστευτηρίων, έλλειψη ετικέτας στη γραμμή {{line}}",
@@ -25,27 +28,56 @@
"Importing" : "Γίνεται εισαγωγή",
"Start import" : "Έναρξη εισαγωγής",
"Select CSV file" : "Επιλέξτε αρχείο CSV",
+ "Parsed {{rows}} lines from CSV file" : "Ανάλυση {{rows}} γραμμών από αρχείο CSV",
"Skip first row" : "Παράλειψη πρώτης σειράς",
+ "You need to assign the label field before you can start the import." : "Προσθέστε ετικέτα πριν την έναρξη της εισαγωγής.",
"The first 5 lines of the CSV are shown." : "Προβάλλονται οι πρώτες 5 γραμμές του CSV.",
+ "Assign the proper fields to each column." : "Καθορίστε τα κατάλληλα πεδία σε κάθε στήλη.",
+ "Example of imported credential" : "Παράδειγμα εισαχθέντος διαπιστευτηρίου",
+ "Missing an importer? Try it with the generic CSV importer." : "Λείπει στοιχείο; Δοκιμάστε το με το γενική εισαγωγή CSV.",
+ "Go back to importers." : "Επιστροφή στους εισαγωγείς.",
"Revision deleted" : "Διαγράφηκε η αναθεώρηση",
+ "Revision restored" : "Η αναθεώρηση επαναφέρθηκε",
+ "Save in Passman" : "Αποθήκευση στο passman",
"Settings saved" : "Οι ρυθμίσεις αποθηκεύτηκαν",
"General settings" : "Γενικές ρυθμίσεις",
+ "Password audit" : "Έλεγχος κωδικού πρόσβασης",
"Password settings" : "Ρυθμίσεις συνθηματικού",
"Import credentials" : "Εισαγωγή διαπιστευτηρίων",
"Export credentials" : "Εξαγωγή διαπιστευτηρίων",
+ "Sharing" : "Διαμοιρασμός",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Είστε βέβαιος ότι θέλετε να αποχωρήσετε; Θα διαγραφούν όλα τα διαπιστευτήριά σας",
+ "Old password field incorrect!" : "Εσφαλμένο παλαιό συνθηματικό!",
+ "New password does not match!" : "Ο νέος κωδικός δεν ταιριάζει!",
+ "Please log in with your new vault password" : "Παρακαλώ συνδεθείτε με τον νέο σας κωδικό πρόσβασης κρύπτης",
+ "Share with users and groups" : "Διαμοιρασμός με χρήστες και ομάδες",
"Share link" : "Διαμοιρασμός συνδέσμου",
+ "Are you sure you want to leave? This will corrupt this credential" : "Είστε βέβαιος ότι θέλετε να αποχωρήσετε; Θα διαγραφούν όλα τα διαπιστευτήριά σας",
+ "Credential unshared" : "Τα διαπιστευτήριά σας δεν είναι κοινόχρηστα",
+ "Credential shared" : "Διαπιστευτήρια σε κοινή χρήση",
"Saved!" : "Αποθηκεύτηκαν!",
+ "Poor" : "Φτωχός",
"Weak" : "Ασθενές",
+ "Good" : "Καλό",
+ "Strong" : "Ισχυρός",
+ "Toggle visibility" : "Εναλλαγή ορατότητας",
"Copy to clipboard" : "Αντιγραφή στο πρόχειρο",
"Copied to clipboard!" : "Αντιγράφηκε στο πρόχειρο!",
"Generate password" : "Δημιουργία συνθηματικού",
"Copy password to clipboard" : "Αντιγραφή συνθηματικού στο πρόχειρο",
"Password copied to clipboard!" : "Το συνθηματικό αντιγράφτηκε στο πρόχειρο.",
+ "Complete" : "Ολοκληρώθηκε",
"Username" : "Όνομα χρήστη",
"Repeat password" : "Επανάληψη συνθηματικού",
"Add tag" : "Πρόσθεσε ετικέτα",
"Pick an icon" : "Επιλογή εικονιδίου",
+ "Search icons" : "Αναζήτηση εικονιδίων",
+ "Upload a custom icon:" : "Μεταφόρτωση προσαρμοσμένου εικονιδίου:",
"Use this icon" : "Χρήση αυτού του εικονιδίου",
+ "Delete current icon" : "Διαγραφή τρέχων εικονιδίου",
+ "Get icon from page" : "Αποκτήστε το εικονίδιο από τη σελίδα",
+ "This may take a few seconds…" : "Χρειάζονται λίγα δευτερόλεπτα...",
+ "There was an error fetching the icon!" : "Σφάλμα κατά την ανάκτηση του εικονιδίου!",
"Selected icon" : "Επιλεγμένο εικονίδιο",
"Field label" : "Ετικέτα πεδίου",
"Field value" : "Τιμή πεδίου",
@@ -60,8 +92,13 @@
"Filename" : "Όνομα αρχείου",
"Upload date" : "Ημερομηνία μεταφόρτωσης",
"Size" : "Μέγεθος",
+ "Upload or enter your OTP secret" : "Μεταφορτώστε ή εισαγάγετε το μυστικό OTP",
+ "Current OTP settings" : "Τρέχουσες ρυθμίσεις ΟΤΡ",
+ "Issuer" : "Εκδότης",
"Secret" : "Μυστικό",
"Expiration date" : "Ημερομηνία λήξης",
+ "No expiration date set" : "Χωρίς λήξη",
+ "Renew interval" : "Ανανέωση διαστήματος",
"Disabled" : "Απενεργοποιημένο",
"Day(s)" : "Ημέρα(-ες)",
"Week(s)" : "Εβδομάδα(-ες)",
@@ -69,18 +106,38 @@
"Year(s)" : "Χρόνος(-ια)",
"Password generation settings" : "Ρυθμίσεις δημιουργίας συνθηματικών",
"Password length" : "Μέγεθος συνθηματικού",
+ "Minimum amount of digits" : "Ελάχιστη ποσότητα ψηφίων",
+ "Use uppercase letters" : "Χρήση κεφαλαίων γραμμάτων",
"Use lowercase letters" : "Χρησιμοποιήστε πεζούς χαρακτήρες",
"Use numbers" : "Χρήση αριθμών",
"Use special characters" : "Χρήση ειδικών χαρακτήρων",
+ "Avoid ambiguous characters" : "Αποφύγετε ασαφής χαρακτήρες",
+ "Require every character type" : "Απαιτείται κάθε τύπος χαρακτήρων",
"Export type" : "Τύπος εξαγωγής",
"Export" : "Εξαγωγή",
+ "Enter vault password to confirm export." : "Εισαγάγετε τον κωδικό πρόσβασης κρύπτης για επιβεβαίωση εξόδου.",
+ "Rename vault" : "Μετονομασία κρύπτης",
+ "New vault name" : "Νέο όνομα κρύπτης",
"Change" : "Αλλαγή",
+ "Change vault key" : "Αλλαγή κλειδιού κρύπτης",
+ "Old vault password" : "Παλαιός κωδικός κρύπτης",
+ "New vault password" : "Νέος κωδικός κρύπτης",
+ "Repeat new vault password" : "Επανάληψη νέου κωδικού κρύπτης",
+ "Please wait your vault is being updated, do not leave this page." : "Παρακαλώ περιμένετε η κρύπτη σας ενημερώνετε, μην κλείσετε την σελίδα.",
+ "Processing" : "Επεξεργασία",
"Total progress" : "Συνολική πρόοδος",
"About Passman" : "Περί εφαρμογής Passman",
"Version" : "Έκδοση",
"Donate to support development" : "Κάντε μια δωρεά για να υποστηρίξετε την ανάπτυξη",
+ "Bookmarklet" : "Εφαρμογίδιο Σελιδοδεικτών",
+ "Save your passwords with one click." : "Αποθηκεύστε το συνθηματικό σας με ένα κλικ.",
+ "Drag below button to your bookmark toolbar." : "Σύρεται το κουμπί παρακάτω στην γραμμή σελιδοδεικτών.",
+ "Delete vault" : "Διαγραφή κρύπτης",
+ "Vault password" : "Κωδικός πρόσβασης κρύπτης ",
+ "This process is irreversible" : "Αυτή η ενέργεια είναι μη αναστρέψιμη",
"Delete my precious passwords" : "Διαγραφή των πολύτιμων συνθηματικών μου",
"Deleting {{password}}…" : "Γίνεται διαγραφή {{password}}…",
+ "Yes, delete my precious passwords" : "Ναι, διαγραφή των πολύτιμων συνθηματικών μου",
"Import type" : "Τύπος εισαγωγής",
"Import" : "Εισαγωγή",
"Read progress" : "Πρόοδος ανάγνωσης",
@@ -89,12 +146,22 @@
"Public key" : "Δημόσιο κλειδί",
"Key size" : "Μέγεθος κλειδιού",
"Save keys" : "Αποθήκευση κλειδιών",
+ "Generate sharing keys" : "Δημιουργία κλειδιών κοινής χρήσης",
+ "Generating sharing keys" : "Δημιουργία κλειδιών κοινής χρήσης",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Το εργαλείο κωδικού πρόσβασης σαρώνει τον κωδικό σας, υπολογίζει το μέσο χρόνο παραβίασης, καταγράφοντας την αντοχή του.",
+ "Minimum password stength" : "Ελάχιστη ισχύς κωδικού πρόσβασης",
"Start scan" : "Εκκίνηση σάρωσης",
"Result" : "Αποτέλεσμα",
+ "A total of {{scan_result}} weak credentials were found." : "Συνολικά βρέθηκαν {{scan_result}} αδύναμα διαπιστευτήρια.",
+ "Score" : "Αποτέλεσμα",
"Action" : "Ενέργεια",
"Search users…" : "Αναζήτηση χρηστών…",
+ "Missing users? Only users that have vaults are shown." : "Λείπουν χρήστες; Εμφανίζονται μόνο οι χρήστες που έχουν κρύπτη.",
+ "Cyphering" : "Κρυπτογράφηση",
"Uploading" : "Γίνεται μεταφόρτωση",
"User" : "Χρήστης",
+ "Crypto time" : "Χρόνος κρυπτογράφησης",
+ "Total time spent encrypting" : "Συνολικός χρόνος που αφιερώθηκε για κρυπτογράφηση",
"Read" : "Ανάγνωση",
"Write" : "Εγγραφή",
"Files" : "Αρχεία",
@@ -103,17 +170,35 @@
"Enable link sharing" : "Ενεργοποίηση διαμοιρασμού συνδέσμου",
"Share until date" : "Διαμοιρασμός έως την ημερομηνία",
"Expire after views" : "Λήξη μετά από προβολές",
+ "Click \\\"Share\\\" first" : "Κλίκ \\\"Διαμοιρασμός\\\" πρώτα",
"Show files" : "Εμφάνιση αρχείων",
"Details" : "Λεπτομέρειες",
"Hide details" : "Απόκρυψη λεπτομερειών",
+ "Password score" : "Βαθμολογία κωδικού πρόσβασης",
+ "Cracking times" : "Σύνολο παραβιάσεων",
"100 / hour" : "100 / ώρα",
+ "Throttled online attack" : "Επίθεση online περιορισμού (Throttled) ",
"10 / second" : "10 / δευτερόλεπτο",
+ "Unthrottled online attack" : "Επίθεση online μη περιορισμού (Unthrottled) ",
"10k / second" : "10k / δευτερόλεπτο",
+ "Offline attack, slow hash, many cores" : "Επίθεση εκτός σύνδεσης, αργό hash, πολλοί πυρήνες",
"10B / second" : "10B / δευτερόλεπτο",
+ "Offline attack, fast hash, many cores" : "Επίθεση εκτός σύνδεσης, γρήγορο hash, πολλοί πυρήνες",
+ "Match sequence" : "Ακολουθία ομοίων",
+ "See match sequence" : "Εμφάνιση ακολουθίας ομοίων",
"Pattern" : "Μοτίβο",
+ "Matched word" : "Όμοια λέξη",
"Dictionary name" : "Όνομα λεξικου",
"Rank" : "Θέση",
+ "Reversed" : "Αντιστροφή",
+ "Guesses" : "Εικασίες",
+ "Base guesses" : "Βασικές εικασίες",
+ "Uppercase variations" : "Παραλλαγές κεφαλαίων",
+ "l33t-variations" : "l33t-παραλλαγές",
+ "Showing revisions of" : "Εμφάνιση αναθεωρήσεων του",
+ "Revision of" : "Αναθεώρηση του",
"by" : "από",
+ "No revisions found." : "Δεν βρέθηκε αναθεώρηση",
"Label" : "Ετικέτα",
"Restore revision" : "Επαναφορά αναθεώρησης",
"Delete revision" : "Διαγραφή αναθεώρησης",
@@ -122,8 +207,11 @@
"Save" : "Αποθήκευση",
"Cancel" : "Άκυρο",
"Settings" : "Ρυθμίσεις",
+ "Share credential {{credential}}" : "Διαμοιρασμός διαπιστευτηρίων {{credential}}",
"Unshare" : "Διακοπή διαμοιρασμού",
+ "Showing deleted since" : "Εμφάνιση διεγραμμένων από",
"Beginning" : "Έναρξη",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Εμφάνιση {{number_filtered}} από {{credential_number}} διαπιστευτηρίων",
"Search for credential…" : "Αναζήτηση για διαπιστευτήρια...",
"Account" : "Λογαριασμός",
"Password" : "Συνθηματικό",
@@ -132,59 +220,143 @@
"URL" : "URL",
"Notes" : "Σημειώσεις",
"Expiry time" : "Ώρα λήξης",
+ "Changed" : "Άλλαξε",
"Created" : "Δημιουργήθηκε",
"Edit" : "Επεξεργασία",
"Delete" : "Διαγραφή",
"Share" : "Διαμοιρασμός",
"Recover" : "Ανάκτηση",
"Destroy" : "Καταστροφή",
+ "Use regex" : "Χρήση regex",
+ "You have incoming share requests." : "Έχετε εισερχόμενα αιτήματα κοινόχρηστου.",
+ "If you want to put the credential in another vault," : "Εάν επιθυμείτε την εισαγωγή διαπιστευτηρίων σας σε άλλη κρύπτη,",
+ "log out of this vault and log into the vault you want the shared credential in." : "αποσυνδεθείτε από αυτή την κρύπτη και συνδεθείτε σε αυτή που θέλετε να μοιραστείτε το κοινόχρηστο πιστοποιητικό.",
"Permissions" : "Δικαιώματα",
"Received from" : "Ελήφθη από",
"Date" : "Ημερομηνία",
"Accept" : "Αποδοχή",
"Decline" : "Απόρριψη",
"You have {{session_time}} left before logout." : "Έχει απομείνει {{session_time}} πριν την έξοδο.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Η κρύπτη σας κλείδωσε για {{time}} επειδή έγιναν {{tries}} αποτυχημένες προσπάθειες!",
+ "Hello there!" : "Γειά σου!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "Φαίνεται πως δεν έχετε κανένα κωδικό. Θέλετε να προσθέσετε κάποιον;",
+ "You don't have good credentials" : "Δεν έχετε σωστά διαπιστευτήρια",
+ "You don't have medium credentials" : "Δεν έχετε μεσαία διαπιστευτήρια",
+ "You don't have bad credentials" : "Δεν έχετε άσχημα διαπιστευτήρια",
+ "You don't have expired credentials" : "Δεν έχετε ληγμένα διαπιστευτήρια",
+ "You don't have deleted credentials" : "Δεν έχετε διεγραμμένα διαπιστευτήρια",
+ "There are no credentials with your selected tags" : "Δεν υπάρχουν διαπιστευτήρια με τις ετικέτες που επιλέξατε",
+ "There are no credentials matching" : "Δεν υπάρχει συμφωνία διαπιστευτηρίων",
"Last accessed" : "Τελευταία προσπέλαση",
"Never" : "Ποτέ",
+ "No vaults found, why not create one?" : "Δεν βρέθηκε κρύπτη, γιατί δεν δημιουργείται μία;",
+ "Password strength must be at least: {{strength}}" : "Η ισχύς του κωδικού πρόσβασης πρέπει να είναι: {{strength}}",
+ "Please give your new vault a name." : "Παρακαλώ ονομάστε την νέα σα κρύπτη.",
+ "Repeat vault password" : "Επαναλάβετε τον κωδικό κρύπτης",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Το κοινής χρήσης κλειδί σας θα είναι ισχυρό με 1024 bit, όπου μπορείτε να αλλάξετε από τις \\\"Επιλογές\\\" αργότερα.",
+ "Create vault" : "Δημιουργία κρύπτης",
+ "Go back to vaults" : "Πίσω στις κρύπτες",
+ "Please input the password for" : "Παρκαλώ εισάγεται τον κωδικό για",
+ "Set this vault as the default." : "Ορισμός κρύπτης ώς προεπιλογής.",
+ "Log into this vault automatically." : "Σύνδεση σε αυτή την κρύπτη αυτόματα.",
+ "Log out of this vault automatically after: " : "Αποσύνδεση απο την κρύπτη αυτόματα μετά από:",
+ "Decrypt vault" : "Αποκρυπτογράφηση κρύπτης",
+ "Seems you lost the vault password and you're unable to log in." : "Φαίνεται πως ξεχάσατε τον κωδικό κρύπτης και δεν μπορείτε να συνδεθείτε.",
+ "If you want this vault to be removed you can request that here." : "Εάν επιθυμείτε την κατάργηση της κρύπτης αιτηθείτε το εδώ.",
+ "An admin then accepts or declines the request" : "Ένας διαχειριστής θα αποδεχθεί ή θα απορρίψει το αίτημα",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Μετά την καταστροφή της κρύπτης από διαχειριστή, όλα τα διαπιστευτήρια θα χαθούν",
+ "Reason for requesting deletion (optional):" : "Λόγος αίτησης διαγραφής (προαιρετικό):",
+ "Request vault destruction" : "Αίτημα καταστροφής κρύπτης",
+ "Yes, request an admin to destroy this vault" : "Ναι, αίτημα προς διαχειριστή να καταστρέψει την κρύπτη",
"Cancel destruction request" : "Αίτημα ακύρωσης καταστροφής",
+ "Vault destruction requested" : "Αίτημα καταστροφής κρύπτης καταχωρήθηκε",
+ "Request removed" : "Το αίτημα διαγράφηκε",
"Destruction request pending" : "Εκκρεμεί το αίτημα καταστροφής",
+ "Warning! Adding credentials over HTTP is insecure!" : "Προσοχή! Η προσθήκη διαπιστευτηρίων μέσω HTTP δεν είναι ασφαλής!",
+ "Logged into {{vault_name}}" : "Είσοδος στο {{vault_name}}",
+ "Change vault" : "Αλλαγή κρύπτης",
"Deleted credentials" : "Διεγραμμένα διαπιστευτήρια",
"Logout" : "Έξοδος",
"Donate" : "Δωρεά",
+ "Show All" : "Εμφάνιση όλων",
+ "Tags" : "Ετικέτες",
+ "Search Tags" : "Αναζήτηση Ετικετών",
+ "Good Strength" : "Καή Ισχύς",
+ "Medium Strength" : "Μεσαία Ισχύς",
+ "Bad Strength" : "Κακή Ισχύς",
+ "Expired" : "Έληξε",
+ "Filter Tags" : "Φίλτρο Ετικετών",
+ "Simple Navigation" : "Απλή Πλοήγηση",
"Someone has shared a credential with you." : "Κάποιος διαμοιράστηκε τα διαπιστευτήρια μαζί σας.",
"Click here to request it" : "Κάντε κλικ εδώ για να το αιτηθείτε",
"Loading…" : "Γίνεται φόρτωση...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh… τα διαπιστευτήρια δεν βρέθηκαν. Ίσως έληξαν",
+ "Compromise!" : "Διακινδυνευμένο!",
+ "Compromised!" : "Με κίνδυνο!",
+ "This password is compromised. You can only remove this warning by changing the password." : "Ο κωδικός είναι διακινδυνεμένος. Μπορείτε να αφαιρέσετε αυτή την προειδοποίηση αλλάζοντας τον κωδικό.",
+ "email" : "ηλεκτρονικό ταχυδρομείο",
+ "Description" : "Περιγραφή",
+ "Url" : "Url",
+ "Custom Search:" : "Προσαρμοσμένη Αναζήτηση:",
+ "Revert to defaults" : "Επαναφορά στις προεπιλογές",
"Error while saving field" : "Σφάλμα κατά την αποθήκευση πεδίου",
"A Passman item has been created, modified or deleted" : "Ένα αντικείμενο Passman δημιουργήθηκε, τροποποιήθηκε ή διαγράφηκε",
"A Passman item has expired" : "Έληξε ένα αντικείμενο Passman",
"A Passman item has been shared" : "Ένα αντικείμενο του Passman έχει διαμοιραστεί",
"A Passman item has been renamed" : "Μετονομάστηκε ένα αντικείμενο Passman",
+ "%1$s has been created by %2$s" : "%1$s δημιουργήθηκε από τον %2$s",
"You created %1$s" : "Δημιουργήσατε το %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ενημερώθηκε από τον %2$s",
"You updated %1$s" : "Ενημερώσατε %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s έχει αναθεωρηθεί %1$s στην αναθεώρηση της %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Επαναφέρατε το %1$s πίσω στην αναθεώρηση του%3$s",
"%3$s has renamed %1$s to %2$s" : "%3$s μετονόμασε το %1$s σε %2$s",
"You renamed %1$s to %2$s" : "Μετονομάσατε το %1$s σε %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s διαγράφηκε από τον %2$s",
"You deleted %1$s" : "Διαγράψατε το %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s επαναφέρθηκε από τον %2$s",
+ "You recovered %1$s" : "Επαναφέρατε %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s έχει διαγραφεί οριστικά από %2$s",
"You permanently deleted %1$s" : "Διαγράψατε μόνιμα το %1$s",
"The password of %1$s has expired, renew it now." : "Εληξε το συνθηματικό του %1$s, να ανανεωθεί τώρα.",
+ "%1$s has been shared with %2$s" : "%1$s έχει διαμοιραστεί με %2$s",
"You received a share request for %1$s from %2$s" : "Λάβατε αίτημα διαμοιρασμού για %1$s από τον %2$s",
"%s has been shared with a link" : "%s διαμοιράστηκε με σύνδεσμο",
+ "Passwords" : "Συνθηματικά",
+ "Your credential \"%s\" expired, click here to update the credential." : "Τα διαπιστευτήριά σας \"%s\" έληξαν, κλίκ εδώ για ανανέωσή τους.",
"Remind me later" : "Θύμισέ μου αργότερα",
"Ignore" : "Αγνόηση",
"%s shared \"%s\" with you. Click here to accept" : "%s διαμοιράστηκε \"%s\" μαζί σας. Κάντε κλίκ για αποδοχή",
+ "%s has declined your share request for \"%s\"." : "%s απορρίψατε το αίτημα διαμοιρσμού για \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "Ο %s αποδέχτηκε το αίτημα διαμοιρασμού σας για \"%s\"",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Ο Passman είναι ένας πλήρης διαχειριστής κωδικών πρόσβασης.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Η Passman είναι ένας πλήρης διαχειριστής κωδικών πρόσβασης.\nΧαρακτηριστηκά:\n- Κρύπτες\n- Τα κλειδιά Κρύπτης δεν στέλνονται στον διακομιστή\n- Πρόσθετα για φυλλομετρητή εύκολης πρόσβασης στους κωδικούς\n- Εφαρμογή Android για πρόσβαση εν κινήσει\n- Διαπιστευτήρια με κρυπτογράφηση του πελάτη με 256bit AES\n- Διαπιστευτήρια με κρυπτογράφηση του δαικομιστή με 256bit AES\n- Δυνατότητα προσθήκης προσαρμοσμένων πεδίων στα διαπιστευτήρια\n- Ενσωματωμένη γεννήτρια OTP (Κωδικός Μιας Χρήσης)\n- Αναλυτής κωδικών\n- Μοιραστείτε κωδικούς πρόσβασης εσωτερικά και μέσω συνδέσμου με απόλυτη ασφάλεια.\n- Εισαγωγή από διάφορους διαχειριστές κωδικών (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nΓια demo της εφαρμογής δείτε [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Αδυναμία λήψης πληροφορίες έκδοσης",
"Passman Settings" : "Ρυθμίσεις Passman",
"GitHub version:" : "Έκδοση GitHub:",
"A newer version of Passman is available" : "Μια νέα έκδοση του Passman είναι διαθέσιμη",
"Password sharing" : "Διαμοιρασμός συνθηματικών",
+ "Credential mover" : "Διακινητής διαπιστευτηρίων",
+ "Vault destruction requests" : "Αιτήματα καταστροφής κρύπτης",
"Check for new versions" : "Έλεγχος για νέες εκδόσεις",
"Enable HTTPS check" : "Ενεργοποίηση ελέγχου HTTPS",
+ "Disable context menu" : "Απενεργοποήηση μενού περιβάλλοντος",
+ "Disable JavaScript debugger" : "Απενεργοποιήστε τον εντοπισμό σφαλμάτων JavaScript",
+ "Allow users on this server to share passwords with a link" : "Επιτρέψτε στους χρήστες του διακομιστή να μοιράζονται κωδικούς πρόσβασης με σύνδεσμο",
+ "Allow users on this server to share passwords with other users" : "Επιτρέψτε στους χρήστες του διακομιστή να μοιράζονται κωδικούς πρόσβασης με άλλους χρήστες",
+ "Move credentials from one account to another" : "Μετακίνηση διαπιστευτηρίων από έναν λογαριασμό σε άλλον",
"Source account" : "Πηγαίος λογαριασμός",
"Destination account" : "Λογαριασμός προορισμού",
"Credentials moved!" : "Αφαιρέθηκαν τα διαπιστευτήρια!",
+ "Requests to destroy vault" : "Αιτήματα για καταστροφή κρύπτης",
"Request ID" : "Αίτημα ID",
"Requested by" : "Αιτήθηκε από",
"Reason" : "Λόγος",
+ "Click here to request\n\t\t\t\t\tit" : "Κλίκ εδώ για αίτημα\n\t\t\t\t\t",
+ "Loading&hellip;" : "Loading&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Awwhh… δεν βρέθηκαν τα διαπιστευτήρια. Μήπως έληξαν;",
+ "Expires:" : "Ληγμένα:",
"Connection to server lost" : "Η σύνδεση στον διακομιστή διακόπηκε",
"Problem loading page, reloading in 5 seconds" : "Πρόβλημα φόρτωσης σελίδας, φόρτωση ξανά σε 5 δευτερόλεπτα",
"Saving..." : "Γίνεται αποθήκευση...",
diff --git a/l10n/en_GB.js b/l10n/en_GB.js
index 752d240e..cd81e3d9 100644
--- a/l10n/en_GB.js
+++ b/l10n/en_GB.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Passwords",
"Generating sharing keys ( %s / 2)" : "Generating sharing keys ( %s / 2)",
"Incorrect vault password!" : "Incorrect vault password!",
"Passwords do not match" : "Passwords do not match",
@@ -16,10 +15,12 @@ OC.L10N.register(
"Credential updated" : "Credential updated",
"Credential recovered" : "Credential recovered",
"Credential destroyed" : "Credential destroyed",
+ "Error downloading file, you probably have insufficient permissions" : "Error downloading file, you probably have insufficient permissions",
"Invalid QR code" : "Invalid QR code",
"Starting export" : "Starting export",
"Decrypting credentials" : "Decrypting credentials",
"Done" : "Done",
+ "File read." : "File read.",
"Proceed with the following steps to import your file" : "Proceed with the following steps to import your file",
"Adding {{credential}}" : "Adding {{credential}}",
"Added {{credential}}" : "Added {{credential}}",
@@ -47,6 +48,7 @@ OC.L10N.register(
"Export credentials" : "Export credentials",
"Sharing" : "Sharing",
"Are you sure you want to leave? This will destroy all your credentials" : "Are you sure you want to leave? This will destroy all your credentials",
+ "Old password field incorrect!" : "Old password field incorrect!",
"New password does not match!" : "New password does not match!",
"Please log in with your new vault password" : "Please log in with your new vault password",
"Share with users and groups" : "Share with users and groups",
@@ -70,7 +72,13 @@ OC.L10N.register(
"Repeat password" : "Repeat password",
"Add tag" : "Add tag",
"Pick an icon" : "Pick an icon",
+ "Search icons" : "Search icons",
+ "Upload a custom icon:" : "Upload a custom icon:",
"Use this icon" : "Use this icon",
+ "Delete current icon" : "Delete current icon",
+ "Get icon from page" : "Get icon from page",
+ "This may take a few seconds…" : "This may take a few seconds…",
+ "There was an error fetching the icon!" : "There was an error fetching the icon!",
"Selected icon" : "Selected icon",
"Field label" : "Field label",
"Field value" : "Field value",
@@ -123,6 +131,7 @@ OC.L10N.register(
"Version" : "Version",
"Donate to support development" : "Donate to support development",
"Bookmarklet" : "Bookmarklet",
+ "Save your passwords with one click." : "Save your passwords with one click.",
"Drag below button to your bookmark toolbar." : "Drag below button to your bookmark toolbar.",
"Delete vault" : "Delete vault",
"Vault password" : "Vault password",
@@ -140,6 +149,7 @@ OC.L10N.register(
"Save keys" : "Save keys",
"Generate sharing keys" : "Generate sharing keys",
"Generating sharing keys" : "Generating sharing keys",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "The password tool scans your password, calculates average cracking time, listing those below the threshold",
"Minimum password stength" : "Minimum password stength",
"Start scan" : "Start scan",
"Result" : "Result",
@@ -152,6 +162,7 @@ OC.L10N.register(
"Uploading" : "Uploading",
"User" : "User",
"Crypto time" : "Crypto time",
+ "Total time spent encrypting" : "Total time spent encrypting",
"Read" : "Read",
"Write" : "Write",
"Files" : "Files",
@@ -160,6 +171,7 @@ OC.L10N.register(
"Enable link sharing" : "Enable link sharing",
"Share until date" : "Share until date",
"Expire after views" : "Expire after views",
+ "Click \\\"Share\\\" first" : "Click \\\"Share\\\" first",
"Show files" : "Show files",
"Details" : "Details",
"Hide details" : "Hide details",
@@ -219,6 +231,7 @@ OC.L10N.register(
"Use regex" : "Use regex",
"You have incoming share requests." : "You have incoming share requests.",
"If you want to put the credential in another vault," : "If you want to put the credential in another vault,",
+ "log out of this vault and log into the vault you want the shared credential in." : "log out of this vault and log into the vault you want the shared credential in.",
"Permissions" : "Permissions",
"Received from" : "Received from",
"Date" : "Date",
@@ -226,12 +239,22 @@ OC.L10N.register(
"Decline" : "Decline",
"You have {{session_time}} left before logout." : "You have {{session_time}} left before logout.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Your vault has been locked for {{time}} because of {{tries}} failed attempts!",
+ "Hello there!" : "Hello there!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "It does not seem that you have any passwords. Do you want to add one?",
+ "You don't have good credentials" : "You don't have good credentials",
+ "You don't have medium credentials" : "You don't have medium credentials",
+ "You don't have bad credentials" : "You don't have bad credentials",
+ "You don't have expired credentials" : "You don't have expired credentials",
+ "You don't have deleted credentials" : "You don't have deleted credentials",
+ "There are no credentials with your selected tags" : "There are no credentials with your selected tags",
+ "There are no credentials matching" : "There are no credentials matching",
"Last accessed" : "Last accessed",
"Never" : "Never",
"No vaults found, why not create one?" : "No vaults found, why not create one?",
"Password strength must be at least: {{strength}}" : "Password strength must be at least: {{strength}}",
"Please give your new vault a name." : "Please give your new vault a name.",
"Repeat vault password" : "Repeat vault password",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later .",
"Create vault" : "Create vault",
"Go back to vaults" : "Go back to vaults",
"Please input the password for" : "Please input the password for",
@@ -251,14 +274,30 @@ OC.L10N.register(
"Request removed" : "Request removed",
"Destruction request pending" : "Destruction request pending",
"Warning! Adding credentials over HTTP is insecure!" : "Warning! Adding credentials over HTTP is insecure!",
+ "Logged into {{vault_name}}" : "Logged into {{vault_name}}",
"Change vault" : "Change vault",
"Deleted credentials" : "Deleted credentials",
"Logout" : "Logout",
"Donate" : "Donate",
+ "Show All" : "Show All",
+ "Tags" : "Tags",
+ "Search Tags" : "Search Tags",
+ "Good Strength" : "Good Strength",
+ "Medium Strength" : "Medium Strength",
+ "Bad Strength" : "Bad Strength",
+ "Expired" : "Expired",
+ "Filter Tags" : "Filter Tags",
+ "Simple Navigation" : "Simple Navigation",
"Someone has shared a credential with you." : "Someone has shared a credential with you.",
"Click here to request it" : "Click here to request it",
"Loading…" : "Loading…",
"Awwhh… credential not found. Maybe it expired" : "Awwhh… credential not found. Maybe it expired",
+ "This password is compromised. You can only remove this warning by changing the password." : "This password is compromised. You can only remove this warning by changing the password.",
+ "email" : "email",
+ "Description" : "Description",
+ "Url" : "Url",
+ "Custom Search:" : "Custom Search:",
+ "Revert to defaults" : "Revert to defaults",
"Error while saving field" : "Error while saving field",
"A Passman item has been created, modified or deleted" : "A Passman item has been created, modified or deleted",
"A Passman item has expired" : "A Passman item has expired",
@@ -282,6 +321,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s has been shared with %2$s",
"You received a share request for %1$s from %2$s" : "You received a share request for %1$s from %2$s",
"%s has been shared with a link" : "%s has been shared with a link",
+ "Passwords" : "Passwords",
"Your credential \"%s\" expired, click here to update the credential." : "Your credential \"%s\" expired, click here to update the credential.",
"Remind me later" : "Remind me later",
"Ignore" : "Ignore",
@@ -314,6 +354,7 @@ OC.L10N.register(
"Reason" : "Reason",
"Click here to request\n\t\t\t\t\tit" : "Click here to request\n\t\t\t\t\tit",
"Loading&hellip;" : "Loading&hellip;",
+ "Expires:" : "Expires:",
"Connection to server lost" : "Connection to server lost",
"Problem loading page, reloading in 5 seconds" : "Problem loading page, reloading in 5 seconds",
"Saving..." : "Saving...",
diff --git a/l10n/en_GB.json b/l10n/en_GB.json
index a325f463..8c12ada4 100644
--- a/l10n/en_GB.json
+++ b/l10n/en_GB.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Passwords",
"Generating sharing keys ( %s / 2)" : "Generating sharing keys ( %s / 2)",
"Incorrect vault password!" : "Incorrect vault password!",
"Passwords do not match" : "Passwords do not match",
@@ -14,10 +13,12 @@
"Credential updated" : "Credential updated",
"Credential recovered" : "Credential recovered",
"Credential destroyed" : "Credential destroyed",
+ "Error downloading file, you probably have insufficient permissions" : "Error downloading file, you probably have insufficient permissions",
"Invalid QR code" : "Invalid QR code",
"Starting export" : "Starting export",
"Decrypting credentials" : "Decrypting credentials",
"Done" : "Done",
+ "File read." : "File read.",
"Proceed with the following steps to import your file" : "Proceed with the following steps to import your file",
"Adding {{credential}}" : "Adding {{credential}}",
"Added {{credential}}" : "Added {{credential}}",
@@ -45,6 +46,7 @@
"Export credentials" : "Export credentials",
"Sharing" : "Sharing",
"Are you sure you want to leave? This will destroy all your credentials" : "Are you sure you want to leave? This will destroy all your credentials",
+ "Old password field incorrect!" : "Old password field incorrect!",
"New password does not match!" : "New password does not match!",
"Please log in with your new vault password" : "Please log in with your new vault password",
"Share with users and groups" : "Share with users and groups",
@@ -68,7 +70,13 @@
"Repeat password" : "Repeat password",
"Add tag" : "Add tag",
"Pick an icon" : "Pick an icon",
+ "Search icons" : "Search icons",
+ "Upload a custom icon:" : "Upload a custom icon:",
"Use this icon" : "Use this icon",
+ "Delete current icon" : "Delete current icon",
+ "Get icon from page" : "Get icon from page",
+ "This may take a few seconds…" : "This may take a few seconds…",
+ "There was an error fetching the icon!" : "There was an error fetching the icon!",
"Selected icon" : "Selected icon",
"Field label" : "Field label",
"Field value" : "Field value",
@@ -121,6 +129,7 @@
"Version" : "Version",
"Donate to support development" : "Donate to support development",
"Bookmarklet" : "Bookmarklet",
+ "Save your passwords with one click." : "Save your passwords with one click.",
"Drag below button to your bookmark toolbar." : "Drag below button to your bookmark toolbar.",
"Delete vault" : "Delete vault",
"Vault password" : "Vault password",
@@ -138,6 +147,7 @@
"Save keys" : "Save keys",
"Generate sharing keys" : "Generate sharing keys",
"Generating sharing keys" : "Generating sharing keys",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "The password tool scans your password, calculates average cracking time, listing those below the threshold",
"Minimum password stength" : "Minimum password stength",
"Start scan" : "Start scan",
"Result" : "Result",
@@ -150,6 +160,7 @@
"Uploading" : "Uploading",
"User" : "User",
"Crypto time" : "Crypto time",
+ "Total time spent encrypting" : "Total time spent encrypting",
"Read" : "Read",
"Write" : "Write",
"Files" : "Files",
@@ -158,6 +169,7 @@
"Enable link sharing" : "Enable link sharing",
"Share until date" : "Share until date",
"Expire after views" : "Expire after views",
+ "Click \\\"Share\\\" first" : "Click \\\"Share\\\" first",
"Show files" : "Show files",
"Details" : "Details",
"Hide details" : "Hide details",
@@ -217,6 +229,7 @@
"Use regex" : "Use regex",
"You have incoming share requests." : "You have incoming share requests.",
"If you want to put the credential in another vault," : "If you want to put the credential in another vault,",
+ "log out of this vault and log into the vault you want the shared credential in." : "log out of this vault and log into the vault you want the shared credential in.",
"Permissions" : "Permissions",
"Received from" : "Received from",
"Date" : "Date",
@@ -224,12 +237,22 @@
"Decline" : "Decline",
"You have {{session_time}} left before logout." : "You have {{session_time}} left before logout.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Your vault has been locked for {{time}} because of {{tries}} failed attempts!",
+ "Hello there!" : "Hello there!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "It does not seem that you have any passwords. Do you want to add one?",
+ "You don't have good credentials" : "You don't have good credentials",
+ "You don't have medium credentials" : "You don't have medium credentials",
+ "You don't have bad credentials" : "You don't have bad credentials",
+ "You don't have expired credentials" : "You don't have expired credentials",
+ "You don't have deleted credentials" : "You don't have deleted credentials",
+ "There are no credentials with your selected tags" : "There are no credentials with your selected tags",
+ "There are no credentials matching" : "There are no credentials matching",
"Last accessed" : "Last accessed",
"Never" : "Never",
"No vaults found, why not create one?" : "No vaults found, why not create one?",
"Password strength must be at least: {{strength}}" : "Password strength must be at least: {{strength}}",
"Please give your new vault a name." : "Please give your new vault a name.",
"Repeat vault password" : "Repeat vault password",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later .",
"Create vault" : "Create vault",
"Go back to vaults" : "Go back to vaults",
"Please input the password for" : "Please input the password for",
@@ -249,14 +272,30 @@
"Request removed" : "Request removed",
"Destruction request pending" : "Destruction request pending",
"Warning! Adding credentials over HTTP is insecure!" : "Warning! Adding credentials over HTTP is insecure!",
+ "Logged into {{vault_name}}" : "Logged into {{vault_name}}",
"Change vault" : "Change vault",
"Deleted credentials" : "Deleted credentials",
"Logout" : "Logout",
"Donate" : "Donate",
+ "Show All" : "Show All",
+ "Tags" : "Tags",
+ "Search Tags" : "Search Tags",
+ "Good Strength" : "Good Strength",
+ "Medium Strength" : "Medium Strength",
+ "Bad Strength" : "Bad Strength",
+ "Expired" : "Expired",
+ "Filter Tags" : "Filter Tags",
+ "Simple Navigation" : "Simple Navigation",
"Someone has shared a credential with you." : "Someone has shared a credential with you.",
"Click here to request it" : "Click here to request it",
"Loading…" : "Loading…",
"Awwhh… credential not found. Maybe it expired" : "Awwhh… credential not found. Maybe it expired",
+ "This password is compromised. You can only remove this warning by changing the password." : "This password is compromised. You can only remove this warning by changing the password.",
+ "email" : "email",
+ "Description" : "Description",
+ "Url" : "Url",
+ "Custom Search:" : "Custom Search:",
+ "Revert to defaults" : "Revert to defaults",
"Error while saving field" : "Error while saving field",
"A Passman item has been created, modified or deleted" : "A Passman item has been created, modified or deleted",
"A Passman item has expired" : "A Passman item has expired",
@@ -280,6 +319,7 @@
"%1$s has been shared with %2$s" : "%1$s has been shared with %2$s",
"You received a share request for %1$s from %2$s" : "You received a share request for %1$s from %2$s",
"%s has been shared with a link" : "%s has been shared with a link",
+ "Passwords" : "Passwords",
"Your credential \"%s\" expired, click here to update the credential." : "Your credential \"%s\" expired, click here to update the credential.",
"Remind me later" : "Remind me later",
"Ignore" : "Ignore",
@@ -312,6 +352,7 @@
"Reason" : "Reason",
"Click here to request\n\t\t\t\t\tit" : "Click here to request\n\t\t\t\t\tit",
"Loading&hellip;" : "Loading&hellip;",
+ "Expires:" : "Expires:",
"Connection to server lost" : "Connection to server lost",
"Problem loading page, reloading in 5 seconds" : "Problem loading page, reloading in 5 seconds",
"Saving..." : "Saving...",
diff --git a/l10n/eo.js b/l10n/eo.js
index 64b0c91e..8538b518 100644
--- a/l10n/eo.js
+++ b/l10n/eo.js
@@ -1,7 +1,7 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Pasvortoj",
+ "General" : "Ĝenerala",
"Done" : "Farita",
"File read." : "Dosiero legita.",
"Adding {{credential}}" : "Aldonado {{credential}}",
@@ -9,23 +9,78 @@ OC.L10N.register(
"Importing" : "Importado",
"Start import" : "Startigi importo",
"Select CSV file" : "Selektu CSV dosiero",
+ "Settings saved" : "Agordoj konservitaj",
"Sharing" : "Kunhavigo",
+ "Share with users and groups" : "Kunhavigi kun uzantoj kaj grupoj",
+ "Share link" : "Kunhavigi ligilon",
+ "Saved!" : "Konservita!",
"Poor" : "Malbona",
"Weak" : "Malforta",
"Good" : "Bona",
"Strong" : "Forta",
+ "Copy to clipboard" : "Kopii tondejen",
"Complete" : "Plenumita",
"Username" : "Uzantonomo",
"Repeat password" : "Ripetu la pasvorton",
"Text" : "Teksto",
"File" : "Dosiero",
"Add" : "Aldoni",
+ "Type" : "Tipo",
"Actions" : "Agoj",
+ "Empty" : "Malplena",
+ "Filename" : "Dosiernomo",
"Size" : "Grando",
+ "Secret" : "Sekreta",
+ "Expiration date" : "Limdato",
+ "No expiration date set" : "Neniu limdato agordita",
"Disabled" : "Malkapabligita",
"Day(s)" : "Tago(j)",
"Week(s)" : "Semajno(j)",
"Month(s)" : "Monato(j)",
- "Year(s)" : "Jaro(j)"
+ "Year(s)" : "Jaro(j)",
+ "Export" : "Eksporti",
+ "Change" : "Ŝanĝi",
+ "Version" : "Versio",
+ "Bookmarklet" : "Legosignilo",
+ "Import" : "Importi",
+ "Public key" : "Publika ŝlosilo",
+ "Uploading" : "Uploading",
+ "User" : "Uzanto",
+ "Read" : "Legi",
+ "Write" : "Skribi",
+ "Files" : "Dosieroj",
+ "Pending" : "Pritraktota",
+ "Details" : "Detaloj",
+ "Hide details" : "Kaŝi la detalojn",
+ "by" : "de",
+ "Save" : "Konservi",
+ "Cancel" : "Nuligi",
+ "Settings" : "Agordoj",
+ "Unshare" : "Malkunhavigi",
+ "Account" : "Konto",
+ "Password" : "Pasvorto",
+ "E-mail" : "Retpoŝto",
+ "URL" : "Retadreso",
+ "Notes" : "Notoj",
+ "Created" : "Kreita",
+ "Edit" : "Modifi",
+ "Delete" : "Forigi",
+ "Share" : "Kunhavigi",
+ "Date" : "Date",
+ "Accept" : "Akcepti",
+ "Decline" : "Malakcepti",
+ "Never" : "Neniam",
+ "Tags" : "Etikedoj",
+ "Expired" : "Senvalidiĝis",
+ "Loading…" : "Ŝargado...",
+ "email" : "retpoŝtadreso",
+ "Description" : "Priskribo",
+ "You created %1$s" : "Vi kreis %1$s",
+ "You deleted %1$s" : "Vi forigis %1$s",
+ "Passwords" : "Pasvortoj",
+ "Connection to server lost" : "Konekto al servilo perdita",
+ "Saving..." : "Konservado...",
+ "Dismiss" : "Preterpasi",
+ "seconds ago" : "antaŭ kelkaj sekundoj"
},
"nplurals=2; plural=(n != 1);");
diff --git a/l10n/eo.json b/l10n/eo.json
index 35039f0d..4fc75964 100644
--- a/l10n/eo.json
+++ b/l10n/eo.json
@@ -1,5 +1,5 @@
{ "translations": {
- "Passwords" : "Pasvortoj",
+ "General" : "Ĝenerala",
"Done" : "Farita",
"File read." : "Dosiero legita.",
"Adding {{credential}}" : "Aldonado {{credential}}",
@@ -7,23 +7,78 @@
"Importing" : "Importado",
"Start import" : "Startigi importo",
"Select CSV file" : "Selektu CSV dosiero",
+ "Settings saved" : "Agordoj konservitaj",
"Sharing" : "Kunhavigo",
+ "Share with users and groups" : "Kunhavigi kun uzantoj kaj grupoj",
+ "Share link" : "Kunhavigi ligilon",
+ "Saved!" : "Konservita!",
"Poor" : "Malbona",
"Weak" : "Malforta",
"Good" : "Bona",
"Strong" : "Forta",
+ "Copy to clipboard" : "Kopii tondejen",
"Complete" : "Plenumita",
"Username" : "Uzantonomo",
"Repeat password" : "Ripetu la pasvorton",
"Text" : "Teksto",
"File" : "Dosiero",
"Add" : "Aldoni",
+ "Type" : "Tipo",
"Actions" : "Agoj",
+ "Empty" : "Malplena",
+ "Filename" : "Dosiernomo",
"Size" : "Grando",
+ "Secret" : "Sekreta",
+ "Expiration date" : "Limdato",
+ "No expiration date set" : "Neniu limdato agordita",
"Disabled" : "Malkapabligita",
"Day(s)" : "Tago(j)",
"Week(s)" : "Semajno(j)",
"Month(s)" : "Monato(j)",
- "Year(s)" : "Jaro(j)"
+ "Year(s)" : "Jaro(j)",
+ "Export" : "Eksporti",
+ "Change" : "Ŝanĝi",
+ "Version" : "Versio",
+ "Bookmarklet" : "Legosignilo",
+ "Import" : "Importi",
+ "Public key" : "Publika ŝlosilo",
+ "Uploading" : "Uploading",
+ "User" : "Uzanto",
+ "Read" : "Legi",
+ "Write" : "Skribi",
+ "Files" : "Dosieroj",
+ "Pending" : "Pritraktota",
+ "Details" : "Detaloj",
+ "Hide details" : "Kaŝi la detalojn",
+ "by" : "de",
+ "Save" : "Konservi",
+ "Cancel" : "Nuligi",
+ "Settings" : "Agordoj",
+ "Unshare" : "Malkunhavigi",
+ "Account" : "Konto",
+ "Password" : "Pasvorto",
+ "E-mail" : "Retpoŝto",
+ "URL" : "Retadreso",
+ "Notes" : "Notoj",
+ "Created" : "Kreita",
+ "Edit" : "Modifi",
+ "Delete" : "Forigi",
+ "Share" : "Kunhavigi",
+ "Date" : "Date",
+ "Accept" : "Akcepti",
+ "Decline" : "Malakcepti",
+ "Never" : "Neniam",
+ "Tags" : "Etikedoj",
+ "Expired" : "Senvalidiĝis",
+ "Loading…" : "Ŝargado...",
+ "email" : "retpoŝtadreso",
+ "Description" : "Priskribo",
+ "You created %1$s" : "Vi kreis %1$s",
+ "You deleted %1$s" : "Vi forigis %1$s",
+ "Passwords" : "Pasvortoj",
+ "Connection to server lost" : "Konekto al servilo perdita",
+ "Saving..." : "Konservado...",
+ "Dismiss" : "Preterpasi",
+ "seconds ago" : "antaŭ kelkaj sekundoj"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/l10n/es.js b/l10n/es.js
index 0920b383..34b7692f 100644
--- a/l10n/es.js
+++ b/l10n/es.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves de compartición (%s / 2)",
"Incorrect vault password!" : "¡Contraseña incorrecta de la caja fuerte!",
"Passwords do not match" : "Contraseñas no coinciden",
@@ -172,7 +171,7 @@ OC.L10N.register(
"Pending" : "Pendiente",
"Enable link sharing" : "Activar compartir enlace",
"Share until date" : "Compartir hasta la fecha",
- "Expire after views" : "Expirar después de vistas",
+ "Expire after views" : "Caducar después de ver",
"Click \\\"Share\\\" first" : "Pulsa \\\"Compartir\\\" primero",
"Show files" : "Mostrar archivos",
"Details" : "Detalles",
@@ -246,7 +245,7 @@ OC.L10N.register(
"You don't have good credentials" : "No tienes contraseñas buenas",
"You don't have medium credentials" : "No tienes contraseñas medias",
"You don't have bad credentials" : "No tienes contraseñas malas",
- "You don't have expired credentials" : "No tienes contraseñas expiradas",
+ "You don't have expired credentials" : "No tienes contraseñas caducadas",
"You don't have deleted credentials" : "No tienes contraseñas eliminadas",
"There are no credentials with your selected tags" : "No hay contraseñas con las etiquetas seleccionadas",
"There are no credentials matching" : "No hay contraseñas coincidentes",
@@ -287,13 +286,13 @@ OC.L10N.register(
"Good Strength" : "Fortaleza buena",
"Medium Strength" : "Fortaleza media",
"Bad Strength" : "Fortaleza mala",
- "Expired" : "Expirada",
+ "Expired" : "Caducada",
"Filter Tags" : "Filtrar etiquetas",
"Simple Navigation" : "Navegación sencilla",
"Someone has shared a credential with you." : "Alguien ha compartido una contraseña contigo.",
"Click here to request it" : "Haz clic aquí para solicitarlo",
"Loading…" : "Cargando...",
- "Awwhh… credential not found. Maybe it expired" : "Ooooh... No se ha encontrado la contraseña. Quizás haya expirado",
+ "Awwhh… credential not found. Maybe it expired" : "Ooooh... No se ha encontrado la contraseña. Quizás haya caducado",
"Compromise!" : "¡Peligro!",
"Compromised!" : "¡Publicada!",
"This password is compromised. You can only remove this warning by changing the password." : "Esta contraseña ha sido publicada. Solo puedes eliminar esta advertencia cambiando la contraseña actual.",
@@ -304,7 +303,7 @@ OC.L10N.register(
"Revert to defaults" : "Volver a los valores por defecto",
"Error while saving field" : "Error mientras se guardaba el campo",
"A Passman item has been created, modified or deleted" : "Se ha creado, modificado o borrado un objeto de Passman",
- "A Passman item has expired" : "Un objeto Passman ha expirado",
+ "A Passman item has expired" : "Un objeto Passman ha caducado",
"A Passman item has been shared" : "Un objeto Passman ha sido compartido",
"A Passman item has been renamed" : "Un objeto Passman ha sido renombrado",
"%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
@@ -325,7 +324,8 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Has recibido una solicitud para compartir %1$s de %2$s",
"%s has been shared with a link" : "%s ha sido compartido con un link",
- "Your credential \"%s\" expired, click here to update the credential." : "Tu contraseña \"%s\" ha expirado, pincha aquí para actualizar la contraseña.",
+ "Passwords" : "Contraseñas",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tu contraseña \"%s\" ha caducado, pincha aquí para actualizar la contraseña.",
"Remind me later" : "Recuérdamelo más tarde",
"Ignore" : "Ignorar",
"%s shared \"%s\" with you. Click here to accept" : "%s comparte \"%s\" contigo. Hacer click aquí para aceptar",
@@ -357,7 +357,7 @@ OC.L10N.register(
"Reason" : "Razón",
"Click here to request\n\t\t\t\t\tit" : "Pulsa aquí para \n\t\t\t\tpedirlo",
"Loading&hellip;" : "Cargando&hellip;",
- "Awwhh… could not find the credential. Maybe it expired?" : "Ooooh... No se ha encontrado la contraseña. ¿Puede que haya expirado?",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Ooooh... No se ha encontrado la contraseña. ¿Puede que haya caducado?",
"Expires:" : "Caduca:",
"Connection to server lost" : "Se ha perdido la conexión al servidor",
"Problem loading page, reloading in 5 seconds" : "Problema al cargar la página, recargando en 5 segundos",
diff --git a/l10n/es.json b/l10n/es.json
index 10e75c08..ec00d21b 100644
--- a/l10n/es.json
+++ b/l10n/es.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves de compartición (%s / 2)",
"Incorrect vault password!" : "¡Contraseña incorrecta de la caja fuerte!",
"Passwords do not match" : "Contraseñas no coinciden",
@@ -170,7 +169,7 @@
"Pending" : "Pendiente",
"Enable link sharing" : "Activar compartir enlace",
"Share until date" : "Compartir hasta la fecha",
- "Expire after views" : "Expirar después de vistas",
+ "Expire after views" : "Caducar después de ver",
"Click \\\"Share\\\" first" : "Pulsa \\\"Compartir\\\" primero",
"Show files" : "Mostrar archivos",
"Details" : "Detalles",
@@ -244,7 +243,7 @@
"You don't have good credentials" : "No tienes contraseñas buenas",
"You don't have medium credentials" : "No tienes contraseñas medias",
"You don't have bad credentials" : "No tienes contraseñas malas",
- "You don't have expired credentials" : "No tienes contraseñas expiradas",
+ "You don't have expired credentials" : "No tienes contraseñas caducadas",
"You don't have deleted credentials" : "No tienes contraseñas eliminadas",
"There are no credentials with your selected tags" : "No hay contraseñas con las etiquetas seleccionadas",
"There are no credentials matching" : "No hay contraseñas coincidentes",
@@ -285,13 +284,13 @@
"Good Strength" : "Fortaleza buena",
"Medium Strength" : "Fortaleza media",
"Bad Strength" : "Fortaleza mala",
- "Expired" : "Expirada",
+ "Expired" : "Caducada",
"Filter Tags" : "Filtrar etiquetas",
"Simple Navigation" : "Navegación sencilla",
"Someone has shared a credential with you." : "Alguien ha compartido una contraseña contigo.",
"Click here to request it" : "Haz clic aquí para solicitarlo",
"Loading…" : "Cargando...",
- "Awwhh… credential not found. Maybe it expired" : "Ooooh... No se ha encontrado la contraseña. Quizás haya expirado",
+ "Awwhh… credential not found. Maybe it expired" : "Ooooh... No se ha encontrado la contraseña. Quizás haya caducado",
"Compromise!" : "¡Peligro!",
"Compromised!" : "¡Publicada!",
"This password is compromised. You can only remove this warning by changing the password." : "Esta contraseña ha sido publicada. Solo puedes eliminar esta advertencia cambiando la contraseña actual.",
@@ -302,7 +301,7 @@
"Revert to defaults" : "Volver a los valores por defecto",
"Error while saving field" : "Error mientras se guardaba el campo",
"A Passman item has been created, modified or deleted" : "Se ha creado, modificado o borrado un objeto de Passman",
- "A Passman item has expired" : "Un objeto Passman ha expirado",
+ "A Passman item has expired" : "Un objeto Passman ha caducado",
"A Passman item has been shared" : "Un objeto Passman ha sido compartido",
"A Passman item has been renamed" : "Un objeto Passman ha sido renombrado",
"%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
@@ -323,7 +322,8 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Has recibido una solicitud para compartir %1$s de %2$s",
"%s has been shared with a link" : "%s ha sido compartido con un link",
- "Your credential \"%s\" expired, click here to update the credential." : "Tu contraseña \"%s\" ha expirado, pincha aquí para actualizar la contraseña.",
+ "Passwords" : "Contraseñas",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tu contraseña \"%s\" ha caducado, pincha aquí para actualizar la contraseña.",
"Remind me later" : "Recuérdamelo más tarde",
"Ignore" : "Ignorar",
"%s shared \"%s\" with you. Click here to accept" : "%s comparte \"%s\" contigo. Hacer click aquí para aceptar",
@@ -355,7 +355,7 @@
"Reason" : "Razón",
"Click here to request\n\t\t\t\t\tit" : "Pulsa aquí para \n\t\t\t\tpedirlo",
"Loading&hellip;" : "Cargando&hellip;",
- "Awwhh… could not find the credential. Maybe it expired?" : "Ooooh... No se ha encontrado la contraseña. ¿Puede que haya expirado?",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Ooooh... No se ha encontrado la contraseña. ¿Puede que haya caducado?",
"Expires:" : "Caduca:",
"Connection to server lost" : "Se ha perdido la conexión al servidor",
"Problem loading page, reloading in 5 seconds" : "Problema al cargar la página, recargando en 5 segundos",
diff --git a/l10n/es_419.js b/l10n/es_419.js
index 4b84bb5a..2b4803bf 100644
--- a/l10n/es_419.js
+++ b/l10n/es_419.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -255,10 +254,13 @@ OC.L10N.register(
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -282,6 +284,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_419.json b/l10n/es_419.json
index fbb55de7..0539074e 100644
--- a/l10n/es_419.json
+++ b/l10n/es_419.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -253,10 +252,13 @@
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -280,6 +282,7 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_AR.js b/l10n/es_AR.js
index 5980d154..9d8d58d2 100644
--- a/l10n/es_AR.js
+++ b/l10n/es_AR.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
"General" : "General",
@@ -73,6 +72,8 @@ OC.L10N.register(
"Current OTP settings" : "Configuraciones actuales de OTP",
"Issuer" : "Quien levanta",
"Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
"Renew interval" : "Intervalo de renovación",
"Disabled" : "Deshabilitado",
"Day(s)" : "Día(s)",
@@ -223,8 +224,12 @@ OC.L10N.register(
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Donar",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales con usted. ",
"Click here to request it" : "Haga click para solicitarlo",
+ "Loading…" : "Cargando…",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -248,6 +253,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Usted ha recibido una solicitud para compartir de %1$s desde%2$s",
"%s has been shared with a link" : "%s ha sido compartido con un link",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Sus credenciales \"%s\" han expirado, haga click aquí para actualizarlas.",
"Remind me later" : "Recordarme más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_AR.json b/l10n/es_AR.json
index 5d5814bb..8e4a128a 100644
--- a/l10n/es_AR.json
+++ b/l10n/es_AR.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
"General" : "General",
@@ -71,6 +70,8 @@
"Current OTP settings" : "Configuraciones actuales de OTP",
"Issuer" : "Quien levanta",
"Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
"Renew interval" : "Intervalo de renovación",
"Disabled" : "Deshabilitado",
"Day(s)" : "Día(s)",
@@ -221,8 +222,12 @@
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Donar",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales con usted. ",
"Click here to request it" : "Haga click para solicitarlo",
+ "Loading…" : "Cargando…",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -246,6 +251,7 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Usted ha recibido una solicitud para compartir de %1$s desde%2$s",
"%s has been shared with a link" : "%s ha sido compartido con un link",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Sus credenciales \"%s\" han expirado, haga click aquí para actualizarlas.",
"Remind me later" : "Recordarme más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_CL.js b/l10n/es_CL.js
index 6a6032ba..2f4d10f5 100644
--- a/l10n/es_CL.js
+++ b/l10n/es_CL.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -255,10 +254,14 @@ OC.L10N.register(
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Cerrar sesión",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
+ "Expired" : "Expirado",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -282,6 +285,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_CL.json b/l10n/es_CL.json
index 5c2387db..e4bbb9c8 100644
--- a/l10n/es_CL.json
+++ b/l10n/es_CL.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -253,10 +252,14 @@
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Cerrar sesión",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
+ "Expired" : "Expirado",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -280,6 +283,7 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_CO.js b/l10n/es_CO.js
index 6a6032ba..2f4d10f5 100644
--- a/l10n/es_CO.js
+++ b/l10n/es_CO.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -255,10 +254,14 @@ OC.L10N.register(
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Cerrar sesión",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
+ "Expired" : "Expirado",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -282,6 +285,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_CO.json b/l10n/es_CO.json
index 5c2387db..e4bbb9c8 100644
--- a/l10n/es_CO.json
+++ b/l10n/es_CO.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -253,10 +252,14 @@
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Cerrar sesión",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
+ "Expired" : "Expirado",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -280,6 +283,7 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_CR.js b/l10n/es_CR.js
index 6a6032ba..2f4d10f5 100644
--- a/l10n/es_CR.js
+++ b/l10n/es_CR.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -255,10 +254,14 @@ OC.L10N.register(
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Cerrar sesión",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
+ "Expired" : "Expirado",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -282,6 +285,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_CR.json b/l10n/es_CR.json
index 5c2387db..e4bbb9c8 100644
--- a/l10n/es_CR.json
+++ b/l10n/es_CR.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -253,10 +252,14 @@
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Cerrar sesión",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
+ "Expired" : "Expirado",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -280,6 +283,7 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_DO.js b/l10n/es_DO.js
index 6a6032ba..2f4d10f5 100644
--- a/l10n/es_DO.js
+++ b/l10n/es_DO.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -255,10 +254,14 @@ OC.L10N.register(
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Cerrar sesión",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
+ "Expired" : "Expirado",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -282,6 +285,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_DO.json b/l10n/es_DO.json
index 5c2387db..e4bbb9c8 100644
--- a/l10n/es_DO.json
+++ b/l10n/es_DO.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -253,10 +252,14 @@
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Cerrar sesión",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
+ "Expired" : "Expirado",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -280,6 +283,7 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_EC.js b/l10n/es_EC.js
index 6a6032ba..2f4d10f5 100644
--- a/l10n/es_EC.js
+++ b/l10n/es_EC.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -255,10 +254,14 @@ OC.L10N.register(
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Cerrar sesión",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
+ "Expired" : "Expirado",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -282,6 +285,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_EC.json b/l10n/es_EC.json
index 5c2387db..e4bbb9c8 100644
--- a/l10n/es_EC.json
+++ b/l10n/es_EC.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -253,10 +252,14 @@
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Cerrar sesión",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
+ "Expired" : "Expirado",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -280,6 +283,7 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_GT.js b/l10n/es_GT.js
index 6a6032ba..2f4d10f5 100644
--- a/l10n/es_GT.js
+++ b/l10n/es_GT.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -255,10 +254,14 @@ OC.L10N.register(
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Cerrar sesión",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
+ "Expired" : "Expirado",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -282,6 +285,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_GT.json b/l10n/es_GT.json
index 5c2387db..e4bbb9c8 100644
--- a/l10n/es_GT.json
+++ b/l10n/es_GT.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -253,10 +252,14 @@
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Cerrar sesión",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
+ "Expired" : "Expirado",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -280,6 +283,7 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_HN.js b/l10n/es_HN.js
index 4b84bb5a..2b4803bf 100644
--- a/l10n/es_HN.js
+++ b/l10n/es_HN.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -255,10 +254,13 @@ OC.L10N.register(
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -282,6 +284,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_HN.json b/l10n/es_HN.json
index fbb55de7..0539074e 100644
--- a/l10n/es_HN.json
+++ b/l10n/es_HN.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -253,10 +252,13 @@
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -280,6 +282,7 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_MX.js b/l10n/es_MX.js
index c7459c46..e8381d36 100644
--- a/l10n/es_MX.js
+++ b/l10n/es_MX.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -255,10 +254,14 @@ OC.L10N.register(
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Cerrar sesión",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
+ "Expired" : "Expirado",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -282,6 +285,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_MX.json b/l10n/es_MX.json
index 675e2eec..afadb95a 100644
--- a/l10n/es_MX.json
+++ b/l10n/es_MX.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -253,10 +252,14 @@
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Cerrar sesión",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
+ "Expired" : "Expirado",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -280,6 +283,7 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_NI.js b/l10n/es_NI.js
index 4b84bb5a..2b4803bf 100644
--- a/l10n/es_NI.js
+++ b/l10n/es_NI.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -255,10 +254,13 @@ OC.L10N.register(
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -282,6 +284,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_NI.json b/l10n/es_NI.json
index fbb55de7..0539074e 100644
--- a/l10n/es_NI.json
+++ b/l10n/es_NI.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -253,10 +252,13 @@
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -280,6 +282,7 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_PA.js b/l10n/es_PA.js
index 4b84bb5a..2b4803bf 100644
--- a/l10n/es_PA.js
+++ b/l10n/es_PA.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -255,10 +254,13 @@ OC.L10N.register(
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -282,6 +284,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_PA.json b/l10n/es_PA.json
index fbb55de7..0539074e 100644
--- a/l10n/es_PA.json
+++ b/l10n/es_PA.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -253,10 +252,13 @@
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -280,6 +282,7 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_PE.js b/l10n/es_PE.js
index 4b84bb5a..2b4803bf 100644
--- a/l10n/es_PE.js
+++ b/l10n/es_PE.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -255,10 +254,13 @@ OC.L10N.register(
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -282,6 +284,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_PE.json b/l10n/es_PE.json
index fbb55de7..0539074e 100644
--- a/l10n/es_PE.json
+++ b/l10n/es_PE.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -253,10 +252,13 @@
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -280,6 +282,7 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_PR.js b/l10n/es_PR.js
index 4b84bb5a..2b4803bf 100644
--- a/l10n/es_PR.js
+++ b/l10n/es_PR.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -255,10 +254,13 @@ OC.L10N.register(
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -282,6 +284,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_PR.json b/l10n/es_PR.json
index fbb55de7..0539074e 100644
--- a/l10n/es_PR.json
+++ b/l10n/es_PR.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -253,10 +252,13 @@
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -280,6 +282,7 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_PY.js b/l10n/es_PY.js
index 4b84bb5a..2b4803bf 100644
--- a/l10n/es_PY.js
+++ b/l10n/es_PY.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -255,10 +254,13 @@ OC.L10N.register(
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -282,6 +284,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_PY.json b/l10n/es_PY.json
index fbb55de7..0539074e 100644
--- a/l10n/es_PY.json
+++ b/l10n/es_PY.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -253,10 +252,13 @@
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -280,6 +282,7 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_SV.js b/l10n/es_SV.js
index 6a6032ba..2f4d10f5 100644
--- a/l10n/es_SV.js
+++ b/l10n/es_SV.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -255,10 +254,14 @@ OC.L10N.register(
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Cerrar sesión",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
+ "Expired" : "Expirado",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -282,6 +285,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_SV.json b/l10n/es_SV.json
index 5c2387db..e4bbb9c8 100644
--- a/l10n/es_SV.json
+++ b/l10n/es_SV.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -253,10 +252,14 @@
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Cerrar sesión",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
+ "Expired" : "Expirado",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -280,6 +283,7 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_UY.js b/l10n/es_UY.js
index 4b84bb5a..2b4803bf 100644
--- a/l10n/es_UY.js
+++ b/l10n/es_UY.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -255,10 +254,13 @@ OC.L10N.register(
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -282,6 +284,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/es_UY.json b/l10n/es_UY.json
index fbb55de7..0539074e 100644
--- a/l10n/es_UY.json
+++ b/l10n/es_UY.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contraseñas",
"Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
@@ -253,10 +252,13 @@
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
"Donate" : "Dona",
+ "Tags" : "Etiquetas",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
"Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "email" : "correo electrónico",
+ "Description" : "Descripción",
"Error while saving field" : "Se presentó un error al guardar el campo",
"A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
"A Passman item has expired" : "El elemento de Passman ha expirado",
@@ -280,6 +282,7 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Passwords" : "Contraseñas",
"Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/et_EE.js b/l10n/et_EE.js
new file mode 100644
index 00000000..1959406b
--- /dev/null
+++ b/l10n/et_EE.js
@@ -0,0 +1,71 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords do not match" : "Paroolid ei kattu",
+ "General" : "Üldine",
+ "Custom Fields" : "Kohandatud väljad",
+ "Please fill in a value." : "Palun sisesta väärtus.",
+ "Done" : "Valmis",
+ "Settings saved" : "Seaded salvestatud",
+ "Sharing" : "Jagamine",
+ "Share with users and groups" : "Jaga kasutajate ja gruppidega",
+ "Share link" : "Jaga link",
+ "Saved!" : "Salvestatud!",
+ "Good" : "Hea",
+ "Copy to clipboard" : "Kopeeri lõikepuhvrisse",
+ "Username" : "Kasutajanimi",
+ "File" : "Fail",
+ "Add" : "Lisa",
+ "Type" : "Tüüp",
+ "Actions" : "Tegevused",
+ "Filename" : "Faili nimi",
+ "Size" : "Suurus",
+ "Secret" : "Salajane",
+ "Expiration date" : "Aegumise kuupäev",
+ "No expiration date set" : "Aegumise kuupäeva pole määratud",
+ "Disabled" : "Keelatud",
+ "Export" : "Ekspordi",
+ "Version" : "Versioon",
+ "Import" : "Impordi",
+ "Public key" : "Avalik võti",
+ "Uploading" : "Üleslaadimine",
+ "User" : "Kasutaja",
+ "Read" : "Lugemine",
+ "Files" : "Failid",
+ "Pending" : "Ootel",
+ "Details" : "Üksikasjad",
+ "by" : "lisas",
+ "Save" : "Salvesta",
+ "Cancel" : "Loobu",
+ "Settings" : "Seaded",
+ "Unshare" : "Lõpeta jagamine",
+ "Account" : "Konto",
+ "Password" : "Parool",
+ "E-mail" : "E-post",
+ "URL" : "URL",
+ "Notes" : "Märkmed",
+ "Created" : "Loodud",
+ "Edit" : "Redigeeri",
+ "Delete" : "Kustuta",
+ "Share" : "Jaga",
+ "Date" : "Kuupäev",
+ "Accept" : "Nõustu",
+ "Decline" : "Keeldu",
+ "Never" : "Mitte kunagi",
+ "Logout" : "Logi välja",
+ "Donate" : "Anneta",
+ "Tags" : "Sildid",
+ "Expired" : "Aegunud",
+ "Loading…" : "Laadimine...",
+ "email" : "e-post",
+ "Description" : "Kirjeldus",
+ "You created %1$s" : "Sa tekitasid %1$s",
+ "You deleted %1$s" : "Sa kustutasid %1$s",
+ "Passwords" : "Paroolid",
+ "Connection to server lost" : "Ühendus serveriga katkes",
+ "Problem loading page, reloading in 5 seconds" : "Tõrge lehe laadimisel, ümberlaadimine 5 sekundi pärast",
+ "Saving..." : "Salvestamine...",
+ "Dismiss" : "Jäta vahele",
+ "seconds ago" : "sekundit tagasi"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/et_EE.json b/l10n/et_EE.json
new file mode 100644
index 00000000..4c7b83f4
--- /dev/null
+++ b/l10n/et_EE.json
@@ -0,0 +1,69 @@
+{ "translations": {
+ "Passwords do not match" : "Paroolid ei kattu",
+ "General" : "Üldine",
+ "Custom Fields" : "Kohandatud väljad",
+ "Please fill in a value." : "Palun sisesta väärtus.",
+ "Done" : "Valmis",
+ "Settings saved" : "Seaded salvestatud",
+ "Sharing" : "Jagamine",
+ "Share with users and groups" : "Jaga kasutajate ja gruppidega",
+ "Share link" : "Jaga link",
+ "Saved!" : "Salvestatud!",
+ "Good" : "Hea",
+ "Copy to clipboard" : "Kopeeri lõikepuhvrisse",
+ "Username" : "Kasutajanimi",
+ "File" : "Fail",
+ "Add" : "Lisa",
+ "Type" : "Tüüp",
+ "Actions" : "Tegevused",
+ "Filename" : "Faili nimi",
+ "Size" : "Suurus",
+ "Secret" : "Salajane",
+ "Expiration date" : "Aegumise kuupäev",
+ "No expiration date set" : "Aegumise kuupäeva pole määratud",
+ "Disabled" : "Keelatud",
+ "Export" : "Ekspordi",
+ "Version" : "Versioon",
+ "Import" : "Impordi",
+ "Public key" : "Avalik võti",
+ "Uploading" : "Üleslaadimine",
+ "User" : "Kasutaja",
+ "Read" : "Lugemine",
+ "Files" : "Failid",
+ "Pending" : "Ootel",
+ "Details" : "Üksikasjad",
+ "by" : "lisas",
+ "Save" : "Salvesta",
+ "Cancel" : "Loobu",
+ "Settings" : "Seaded",
+ "Unshare" : "Lõpeta jagamine",
+ "Account" : "Konto",
+ "Password" : "Parool",
+ "E-mail" : "E-post",
+ "URL" : "URL",
+ "Notes" : "Märkmed",
+ "Created" : "Loodud",
+ "Edit" : "Redigeeri",
+ "Delete" : "Kustuta",
+ "Share" : "Jaga",
+ "Date" : "Kuupäev",
+ "Accept" : "Nõustu",
+ "Decline" : "Keeldu",
+ "Never" : "Mitte kunagi",
+ "Logout" : "Logi välja",
+ "Donate" : "Anneta",
+ "Tags" : "Sildid",
+ "Expired" : "Aegunud",
+ "Loading…" : "Laadimine...",
+ "email" : "e-post",
+ "Description" : "Kirjeldus",
+ "You created %1$s" : "Sa tekitasid %1$s",
+ "You deleted %1$s" : "Sa kustutasid %1$s",
+ "Passwords" : "Paroolid",
+ "Connection to server lost" : "Ühendus serveriga katkes",
+ "Problem loading page, reloading in 5 seconds" : "Tõrge lehe laadimisel, ümberlaadimine 5 sekundi pärast",
+ "Saving..." : "Salvestamine...",
+ "Dismiss" : "Jäta vahele",
+ "seconds ago" : "sekundit tagasi"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/eu.js b/l10n/eu.js
index e0a94799..1281c7ec 100644
--- a/l10n/eu.js
+++ b/l10n/eu.js
@@ -1,32 +1,79 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Pasahitzak",
+ "Generating sharing keys ( %s / 2)" : "Partekatze gakoak sortzen (%s/2)",
+ "Incorrect vault password!" : "Gordailuaren pasahitza ez da zuzena!",
"Passwords do not match" : "Pasahitzak ez datoz bat",
"General" : "Orokorra",
+ "Custom Fields" : "Eremu pertsonalizatuak",
+ "Please fill in a label." : "Bete etiketa bat.",
+ "Please fill in a value." : "Bete balio bat.",
+ "Error loading file" : "Errorea fitxategia kargatzen",
+ "An error occurred during decryption" : "Errore bat gertatu da deszifratu bitartean",
+ "Credential created!" : "Kredentziala sortuta!",
+ "Credential deleted" : "Kredentziala ezabatuta",
+ "Credential updated" : "Kredentziala eguneratuta",
+ "Credential recovered" : "Kredentziala berreskuratuta",
+ "Credential destroyed" : "Kredentziala suntsituta",
+ "Error downloading file, you probably have insufficient permissions" : "Errorea fitxategia deskargatzean, agian ez duzu baimen nahiko",
+ "Invalid QR code" : "Baliogabeko QR kodea",
+ "Starting export" : "Esportazioa hasten",
+ "Decrypting credentials" : "Kredentzialak deszifratzen",
"Done" : "Egina",
+ "File read." : "Fitxategia irakurri da.",
+ "Proceed with the following steps to import your file" : "Eman pauso hauek zure fitxategia inportatzeko",
+ "Skipping unlabeled credential" : "Etiketatu gabeko kredentziala ez da kontuan hartuko",
+ "Adding {{credential}}" : "{{credential}} gehitzen",
+ "Added {{credential}}" : "{{credential}} gehituta",
+ "Skipping credential, missing label on line {{line}}" : "Kredentziala ez da kontuan hartu, etiketa falta da {{line}} lerroan",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} kredentzial irakurri dira, inportazioa hasten",
"Importing" : "Inportatzen",
+ "Start import" : "Hasi inportazioa",
+ "Select CSV file" : "CSV fitxategia aukeratu",
+ "Parsed {{rows}} lines from CSV file" : "{{rows}} lerro irakurri dira CSV fitxategitik",
+ "Skip first row" : "Saltatu lehen errenkada",
+ "The first 5 lines of the CSV are shown." : "CSV fitxategiko lehen 5 lerroak erakusten dira.",
+ "Example of imported credential" : "Inportatutako krendetzial baten adibidea",
+ "Revision deleted" : "Berrikuspena ezabatu da",
+ "Revision restored" : "Berrikuspena leheneratu da",
+ "Save in Passman" : "Gorde Passmanen",
"Settings saved" : "Ezarpenak gordeta",
"General settings" : "Ezarpen orokorrak",
+ "Password audit" : "Pasahitzaren auditoretza",
"Password settings" : "Pasahitz-ezarpenak",
"Import credentials" : "Inportatu kredentzialak",
+ "Export credentials" : "Esportatu kredentzialak",
"Sharing" : "Partekatzea",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Ziur zaude utzi nahi duzula? Honek zure kredentzial guztiak suntsituko ditu",
+ "New password does not match!" : "Pasahitz berria ez dator bat!",
+ "Please log in with your new vault password" : "Hasi saioz gordailuaren pasahitz berriarekin",
+ "Share with users and groups" : "Erabiltzaile eta taldeekin partekatu",
"Share link" : "Partekatu esteka",
+ "Are you sure you want to leave? This will corrupt this credential" : "Ziur zaude utzi nahi duzula? Honek kredentzial hau hondatuko du",
+ "Credential unshared" : "Kredentziala partekatzeari utzi zaio",
"Saved!" : "Gordeta!",
"Poor" : "Pobrea",
"Weak" : "Ahula",
"Good" : "Ona",
"Strong" : "Sendoa",
+ "Toggle visibility" : "Txandakatu ikusgaitasuna",
"Copy to clipboard" : "Kopiatu arbelera",
"Copied to clipboard!" : "Arbelera kopiatua!",
"Generate password" : "Sortu pasahitza",
"Copy password to clipboard" : "Kopiatu pasahitza arbelera",
"Password copied to clipboard!" : "Pasahitza arbelera kopiatu da!",
+ "Complete" : "Osoa",
"Username" : "Erabiltzaile-izena",
"Repeat password" : "Errepikatu pasahitza",
+ "Add tag" : "Gehitu etiketa",
"Pick an icon" : "Hautatu ikono bat",
"Search icons" : "Bilatu ikonoak",
+ "Upload a custom icon:" : "Kargatu ikono pertsonalizatu bat:",
"Use this icon" : "Erabili ikono hau",
+ "Delete current icon" : "Ezabatu uneko ikonoa",
+ "Get icon from page" : "Lortu ikonoa orritik",
+ "This may take a few seconds…" : "Segundo batzuk beharko dira...",
+ "Selected icon" : "Hautatutako ikonoa",
"Field label" : "Eremuaren etiketa",
"Field value" : "Eremuaren balioa",
"Choose a file" : "Hautatu fitxategi bat",
@@ -38,64 +85,167 @@ OC.L10N.register(
"Actions" : "Ekintzak",
"Empty" : "Hutsik",
"Filename" : "Fitxategiaren izena",
+ "Upload date" : "Igoera data",
"Size" : "Tamaina",
+ "Upload or enter your OTP secret" : "Kargatu edo sartu zure OTP sekretua",
+ "Current OTP settings" : "Uneko OTP ezarpenak",
+ "Issuer" : "Jaulkitzailea",
"Secret" : "Sekretua",
"Expiration date" : "Iraungitze-data",
"No expiration date set" : "Ez da iraungitze-datarik ezarri",
+ "Renew interval" : "Berritze bitartea",
+ "Disabled" : "Desaktibatua",
+ "Day(s)" : "Egun",
+ "Week(s)" : "Aste",
+ "Month(s)" : "Hilabete",
+ "Year(s)" : "Urte",
"Password generation settings" : "Pasahitz sorreraren ezarpenak",
"Password length" : "Pasahitzaren luzera",
+ "Minimum amount of digits" : "Gutxieneko digitu kopurua",
+ "Use uppercase letters" : "Erabili maiuskulak",
+ "Use lowercase letters" : "Erabili letra minuskulak",
"Use numbers" : "Erabili zenbakiak",
+ "Use special characters" : "Erabili karaktere bereziak",
+ "Avoid ambiguous characters" : "Saihestu karaktere anbiguoak",
+ "Require every character type" : "Egin karaktere mota guztiak beharrezko",
+ "Export type" : "Esportazio mota",
"Export" : "Esportatu",
+ "Rename vault" : "Aldatu gordailuaren izena",
+ "New vault name" : "Gordailu berriaren izena",
"Change" : "Aldatu",
+ "Change vault key" : "Aldatu gordailuaren gakoa",
+ "Old vault password" : "Gordailu zaharraren pasahitza",
+ "New vault password" : "Gordailu berriaren pasahitza",
+ "Repeat new vault password" : "Errepikatu gordailuaren pasahitz berria",
"Processing" : "Prozesatzen",
+ "Total progress" : "Aurrerapen totala",
+ "About Passman" : "Passman aplikazioari buruz",
"Version" : "Bertsioa",
+ "Donate to support development" : "Egin dohaitza bat garapenean laguntzeko",
+ "Bookmarklet" : "applet-marka",
"Save your passwords with one click." : "Gorde zure pasahitzak klik batekin",
+ "Delete vault" : "Ezabatu gordailua",
+ "Vault password" : "Gordailuaren pasahitza",
+ "This process is irreversible" : "Prozesu honek ez du atzera bueltarik",
"Delete my precious passwords" : "Ezabatu nire pasahitz baliotsuak",
+ "Deleting {{password}}…" : "{{password}} ezabatzen...",
"Yes, delete my precious passwords" : "Bai, ezabatu nire pasahitz baliotsuak",
"Import type" : "Inportazio mota",
"Import" : "Inportatu",
+ "Read progress" : "Irakurri aurrerapena",
+ "Upload progress" : "Kargaren egoera",
+ "Private Key" : "Gako pribatua",
"Public key" : "Gako publikoa",
"Key size" : "Gakoaren tamaina",
"Save keys" : "Gorde gakoak",
+ "Generate sharing keys" : "Sortu partekatze-gakoak",
+ "Generating sharing keys" : "Partekatze-gakoak sortzen",
+ "Minimum password stength" : "Pasahitzaren gutxieneko indarra",
+ "Start scan" : "Hasi eskaneatzen",
"Result" : "Emaitza",
+ "A total of {{scan_result}} weak credentials were found." : "{{scan_result}} kredentzial ahul aurkitu dira guztira.",
+ "Score" : "Puntuazioa",
"Action" : "Ekintza",
"Search users…" : "Bilatu erabiltzaileak…",
+ "Missing users? Only users that have vaults are shown." : "Erabiltzaileak falta dira? Gordailuak dituzten erabiltzaileak soilik erakusten dira",
+ "Cyphering" : "Zifratzea",
"Uploading" : "Igotzen",
"User" : "Erabiltzailea",
+ "Crypto time" : "Zifratze-denbora",
+ "Total time spent encrypting" : "Enkriptatzen emandako denbora guztia",
"Read" : "Irakurri",
"Write" : "Idatzi",
"Files" : "Fitxategiak",
+ "Revisions" : "Berrikuspenak",
+ "Pending" : "Itxoiten",
+ "Enable link sharing" : "Gaitu esteken partekatzea",
+ "Share until date" : "Data arte partekatu",
+ "Click \\\"Share\\\" first" : "Egin klik \\\"Partekatu\\\" botoian lehenengo",
+ "Show files" : "Erakutsi fitxategiak",
"Details" : "Xehetasunak",
+ "Hide details" : "Ezkutatu xehetasunak",
+ "Password score" : "Pasahitzaren puntuazioa",
+ "Cracking times" : "Deszifratze-denbora",
"100 / hour" : "100 / orduko",
"10 / second" : "10 / segunduko",
+ "10k / second" : "10k / segundoko",
"10B / second" : "10B / segunduko",
+ "Offline attack, fast hash, many cores" : "Lineaz kanpoko erasoa, hash azkarra, nukleo asko",
"Pattern" : "Eredua",
+ "Matched word" : "Hitza bat dator",
"Dictionary name" : "Hiztegiaren izena",
+ "Uppercase variations" : "Maiuskula aldaerak",
+ "by" : "Nork",
+ "No revisions found." : "Ez da berrikuspenik aurkitu.",
"Label" : "Etiketa",
+ "Restore revision" : "Berezarri berrikuspena",
+ "Delete revision" : "Ezabatu berrikuspena",
+ "Edit credential" : "Editatu kredentziala",
+ "Create new credential" : "Sortu kredentzial berria",
"Save" : "Gorde",
"Cancel" : "Utzi",
"Settings" : "Ezarpenak",
+ "Share credential {{credential}}" : "Partekatu {{credential}} kredentziala",
"Unshare" : "Ez partekatu",
+ "Showing deleted since" : "Egun honetatik ezabatuak erakusten:",
"Beginning" : "Hasiera",
+ "Search for credential…" : "Bilatu kredentziala...",
"Account" : "Kontua",
"Password" : "Pasahitza",
"OTP" : "OTP",
+ "E-mail" : "E-maila",
"URL" : "URLa",
"Notes" : "Oharrak",
+ "Expiry time" : "Iraungitze ordua",
+ "Changed" : "Aldatuta",
"Created" : "Sortua",
"Edit" : "Editatu",
"Delete" : "Ezabatu",
"Share" : "Partekatu",
"Recover" : "Berreskuratu",
"Destroy" : "Suntsitu",
+ "Use regex" : "Erabili regex",
+ "You have incoming share requests." : "Sarrerako partekatze eskaerak dituzu.",
+ "If you want to put the credential in another vault," : "Kredentziala beste gordailu batean jarri nahi baduzu,",
"Permissions" : "Baimenak",
"Date" : "Data",
"Accept" : "Onartu",
+ "Decline" : "Uko egin",
"Hello there!" : "Kaixo!",
+ "You don't have good credentials" : "Ez duzu kredentzial onik",
+ "You don't have medium credentials" : "Ez duzu kredentzial ertainik",
+ "You don't have bad credentials" : "Ez duzu kredentzial okerrik",
+ "You don't have deleted credentials" : "Ez duzu ezabatutako kredentzialik",
+ "There are no credentials matching" : "Ez duzu bat datorren kredentzialik",
+ "Last accessed" : "Azkenengoz atzituta",
"Never" : "Inoiz ez",
+ "No vaults found, why not create one?" : "Ez da gordailurik aurkitu, zergatik ez sortu berria?",
"Password strength must be at least: {{strength}}" : "Pasahitzaren gutxieneko sendotasuna: {{strength}}",
+ "Please give your new vault a name." : "Eman izena gordailu berriari.",
+ "Repeat vault password" : "Errepikatu gordailuaren pasahitza",
"Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Zure partekatze gakoek 1024 bitetako sendotasuna izango dute, hau \\\"Ezarpenak\\\" atalean aldatu dezakezu gero ere.",
+ "Create vault" : "Sortu gordailua",
+ "Go back to vaults" : "Itzuli gordailuetara",
+ "Please input the password for" : "Mesedez sartu honetarako pasahitza:",
+ "Set this vault as the default." : "Ezarri gordailu hau lehenetsi gisa.",
+ "Log into this vault automatically." : "Hasi saioa gordailu honetan automatikoki.",
+ "Decrypt vault" : "Dezifratu gordailua",
+ "Seems you lost the vault password and you're unable to log in." : "Badirudi gordailuaren pasahitza galdu duzula eta ezin duzula saioa hasi.",
+ "If you want this vault to be removed you can request that here." : "Gordailu hau kendu nahi baduzu, hemen eskatu dezakezu norbaitek ken dezala.",
+ "An admin then accepts or declines the request" : "Administratzaile batek orduan eskaera onartu edo baztertu",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Administratzaile batek gordailu hau suntsitzen badu, kredentzial guztiak galduko dira",
+ "Reason for requesting deletion (optional):" : "Arrazoia ezabapena eskatzeko (aukerazkoa):",
+ "Request vault destruction" : "Eskatu gordailua suntsitzea",
+ "Yes, request an admin to destroy this vault" : "Bai, eskatu administratzaile bati gordailu hau suntsitu dezan",
+ "Cancel destruction request" : "Utzi suntsipen eskaera",
+ "Vault destruction requested" : "Gordailua suntsitzea eskatu da",
+ "Request removed" : "Eskakizuna kenduta",
+ "Destruction request pending" : "Suntsipen eskaera zain",
+ "Warning! Adding credentials over HTTP is insecure!" : "Kontuz! Kredentzialak HTTP bidez gehitzea ez da segurua!",
+ "Change vault" : "Aldatu gordailua",
+ "Deleted credentials" : "Ezabatutako kredentzialak",
"Logout" : "Amaitu saioa",
+ "Donate" : "Donazioa egin",
"Show All" : "Erakutsi guztiak",
"Tags" : "Etiketak",
"Search Tags" : "Bilatu etiketak",
@@ -105,12 +255,67 @@ OC.L10N.register(
"Expired" : "Iraungita",
"Filter Tags" : "Iragazi etiketak",
"Simple Navigation" : "Nabigazio sinplea",
+ "Someone has shared a credential with you." : "Norbaitek kredentzial bat partekatu du zurekin.",
+ "Click here to request it" : "Egin klik hemen hura eskatzeko",
+ "Loading…" : "Kargatzen…",
+ "Awwhh… credential not found. Maybe it expired" : "Ooohh... ez da kredentziala aurkitu. Agian iraungitu da ",
+ "email" : "posta elektronikoa",
+ "Description" : "Deskribapena",
+ "Url" : "Url",
+ "Custom Search:" : "Bilaketa pertsonalizatua:",
+ "Revert to defaults" : "Berezarri lehenetsitakoak",
+ "Error while saving field" : "Errorea eremua gordetzean",
+ "A Passman item has been created, modified or deleted" : "Passman elementu bat sortu, aldatu edo ezabatu da",
+ "A Passman item has expired" : "Passmal elementu bat iraungi da",
+ "A Passman item has been shared" : "Passman elementu bat partekatu da",
+ "A Passman item has been renamed" : "Passman elementu bat izenez aldatu da",
+ "%1$s has been created by %2$s" : "%2$s(e)k %1$s sortu du",
+ "You created %1$s" : "%1$s zuk sortu duzu",
+ "%1$s has been updated by %2$s" : "%2$s(e)k %1$s eguneratu du",
"You updated %1$s" : "%1$s eguneratu duzu",
+ "You renamed %1$s to %2$s" : "%1$s %2$s(e)ra berrizendatu duzu",
+ "%1$s has been deleted by %2$s" : "%2$s(e)k %1$s ezabatu du",
+ "You deleted %1$s" : "%1$s ezabatu duzu",
+ "%1$s has been recovered by %2$s" : "%2$s(e)k %1$s berreskuratu du",
+ "You recovered %1$s" : "%1$s berreskuratu duzu",
+ "%1$s has been permanently deleted by %2$s" : "%2$s(e)k %1$s behin betiko ezabatu du",
"You permanently deleted %1$s" : "%1$s behin betiko ezabatu duzu",
+ "The password of %1$s has expired, renew it now." : "%1$s(r)en pasahitza iraungi da, berritu ezazu orain.",
+ "%1$s has been shared with %2$s" : "%1$s %2$s(r)ekin partekatu da",
+ "%s has been shared with a link" : "%s esteka batekin partekatu da",
+ "Passwords" : "Pasahitzak",
+ "Your credential \"%s\" expired, click here to update the credential." : "Zure \"%s\" kredentziala iraungi da, egin klik hemen kredentziala eguneratzeko.",
"Remind me later" : "Gogoratu geroago",
"Ignore" : "Ezikusi",
+ "%s shared \"%s\" with you. Click here to accept" : "%s(e)k \"%s\" partekatu du zurekin. Egin klik hemen onartzeko ",
+ "Passman" : "Passman",
+ "Unable to get version info" : "Ezin izan da bertsio informazioa lortu",
+ "Passman Settings" : "Passman ezarpenak",
+ "GitHub version:" : "GitHub bertsioa:",
+ "A newer version of Passman is available" : "Passman bertsio berri bat dago eskuragarri",
+ "Password sharing" : "Pasahitzaren partekatzea",
+ "Credential mover" : "Kredentzial mugitzailea",
+ "Vault destruction requests" : "Gordailuak suntsitzeko eskariak",
+ "Check for new versions" : "Begiratu bertsio berririk dagoen",
+ "Enable HTTPS check" : "Gaitu HTTPS egiaztapena",
+ "Disable context menu" : "Desgaitu laster-menua",
+ "Disable JavaScript debugger" : "Desgaitu JavaScript araztailea",
+ "Allow users on this server to share passwords with a link" : "Baimendu zerbitzari honetako erabiltzaileek pasahitzak partekatu dezaten esteka batekin",
+ "Allow users on this server to share passwords with other users" : "Baimendu zerbitzari honetako erabiltzaileek beste erabiltzaileekin pasahitzak partekatzea",
+ "Source account" : "Iturburuko kontua",
+ "Destination account" : "Helburuko kontua",
+ "Credentials moved!" : "Kredentzialak mugituta!",
+ "Requests to destroy vault" : "Gordailua suntsitzeko eskariak",
+ "Request ID" : "Eskariaren IDa",
+ "Requested by" : "Honek eskatuta:",
"Reason" : "Arrazoia",
+ "Loading&hellip;" : "Kargatzen&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Ooohh... ezin izan da kredentziala aurkitu. Agian iraungi da?",
+ "Expires:" : "Iraungitzea:",
+ "Connection to server lost" : "Zerbitzariarekiko konexioa eten da",
+ "Problem loading page, reloading in 5 seconds" : "Arazoa orria kargatzerakoan, 5 segundotan birkargatzen",
"Saving..." : "Gordetzen...",
+ "Dismiss" : "Baztertu",
"seconds ago" : "duela segundo batzuk"
},
"nplurals=2; plural=(n != 1);");
diff --git a/l10n/eu.json b/l10n/eu.json
index e66d0977..e6cefd72 100644
--- a/l10n/eu.json
+++ b/l10n/eu.json
@@ -1,30 +1,77 @@
{ "translations": {
- "Passwords" : "Pasahitzak",
+ "Generating sharing keys ( %s / 2)" : "Partekatze gakoak sortzen (%s/2)",
+ "Incorrect vault password!" : "Gordailuaren pasahitza ez da zuzena!",
"Passwords do not match" : "Pasahitzak ez datoz bat",
"General" : "Orokorra",
+ "Custom Fields" : "Eremu pertsonalizatuak",
+ "Please fill in a label." : "Bete etiketa bat.",
+ "Please fill in a value." : "Bete balio bat.",
+ "Error loading file" : "Errorea fitxategia kargatzen",
+ "An error occurred during decryption" : "Errore bat gertatu da deszifratu bitartean",
+ "Credential created!" : "Kredentziala sortuta!",
+ "Credential deleted" : "Kredentziala ezabatuta",
+ "Credential updated" : "Kredentziala eguneratuta",
+ "Credential recovered" : "Kredentziala berreskuratuta",
+ "Credential destroyed" : "Kredentziala suntsituta",
+ "Error downloading file, you probably have insufficient permissions" : "Errorea fitxategia deskargatzean, agian ez duzu baimen nahiko",
+ "Invalid QR code" : "Baliogabeko QR kodea",
+ "Starting export" : "Esportazioa hasten",
+ "Decrypting credentials" : "Kredentzialak deszifratzen",
"Done" : "Egina",
+ "File read." : "Fitxategia irakurri da.",
+ "Proceed with the following steps to import your file" : "Eman pauso hauek zure fitxategia inportatzeko",
+ "Skipping unlabeled credential" : "Etiketatu gabeko kredentziala ez da kontuan hartuko",
+ "Adding {{credential}}" : "{{credential}} gehitzen",
+ "Added {{credential}}" : "{{credential}} gehituta",
+ "Skipping credential, missing label on line {{line}}" : "Kredentziala ez da kontuan hartu, etiketa falta da {{line}} lerroan",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} kredentzial irakurri dira, inportazioa hasten",
"Importing" : "Inportatzen",
+ "Start import" : "Hasi inportazioa",
+ "Select CSV file" : "CSV fitxategia aukeratu",
+ "Parsed {{rows}} lines from CSV file" : "{{rows}} lerro irakurri dira CSV fitxategitik",
+ "Skip first row" : "Saltatu lehen errenkada",
+ "The first 5 lines of the CSV are shown." : "CSV fitxategiko lehen 5 lerroak erakusten dira.",
+ "Example of imported credential" : "Inportatutako krendetzial baten adibidea",
+ "Revision deleted" : "Berrikuspena ezabatu da",
+ "Revision restored" : "Berrikuspena leheneratu da",
+ "Save in Passman" : "Gorde Passmanen",
"Settings saved" : "Ezarpenak gordeta",
"General settings" : "Ezarpen orokorrak",
+ "Password audit" : "Pasahitzaren auditoretza",
"Password settings" : "Pasahitz-ezarpenak",
"Import credentials" : "Inportatu kredentzialak",
+ "Export credentials" : "Esportatu kredentzialak",
"Sharing" : "Partekatzea",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Ziur zaude utzi nahi duzula? Honek zure kredentzial guztiak suntsituko ditu",
+ "New password does not match!" : "Pasahitz berria ez dator bat!",
+ "Please log in with your new vault password" : "Hasi saioz gordailuaren pasahitz berriarekin",
+ "Share with users and groups" : "Erabiltzaile eta taldeekin partekatu",
"Share link" : "Partekatu esteka",
+ "Are you sure you want to leave? This will corrupt this credential" : "Ziur zaude utzi nahi duzula? Honek kredentzial hau hondatuko du",
+ "Credential unshared" : "Kredentziala partekatzeari utzi zaio",
"Saved!" : "Gordeta!",
"Poor" : "Pobrea",
"Weak" : "Ahula",
"Good" : "Ona",
"Strong" : "Sendoa",
+ "Toggle visibility" : "Txandakatu ikusgaitasuna",
"Copy to clipboard" : "Kopiatu arbelera",
"Copied to clipboard!" : "Arbelera kopiatua!",
"Generate password" : "Sortu pasahitza",
"Copy password to clipboard" : "Kopiatu pasahitza arbelera",
"Password copied to clipboard!" : "Pasahitza arbelera kopiatu da!",
+ "Complete" : "Osoa",
"Username" : "Erabiltzaile-izena",
"Repeat password" : "Errepikatu pasahitza",
+ "Add tag" : "Gehitu etiketa",
"Pick an icon" : "Hautatu ikono bat",
"Search icons" : "Bilatu ikonoak",
+ "Upload a custom icon:" : "Kargatu ikono pertsonalizatu bat:",
"Use this icon" : "Erabili ikono hau",
+ "Delete current icon" : "Ezabatu uneko ikonoa",
+ "Get icon from page" : "Lortu ikonoa orritik",
+ "This may take a few seconds…" : "Segundo batzuk beharko dira...",
+ "Selected icon" : "Hautatutako ikonoa",
"Field label" : "Eremuaren etiketa",
"Field value" : "Eremuaren balioa",
"Choose a file" : "Hautatu fitxategi bat",
@@ -36,64 +83,167 @@
"Actions" : "Ekintzak",
"Empty" : "Hutsik",
"Filename" : "Fitxategiaren izena",
+ "Upload date" : "Igoera data",
"Size" : "Tamaina",
+ "Upload or enter your OTP secret" : "Kargatu edo sartu zure OTP sekretua",
+ "Current OTP settings" : "Uneko OTP ezarpenak",
+ "Issuer" : "Jaulkitzailea",
"Secret" : "Sekretua",
"Expiration date" : "Iraungitze-data",
"No expiration date set" : "Ez da iraungitze-datarik ezarri",
+ "Renew interval" : "Berritze bitartea",
+ "Disabled" : "Desaktibatua",
+ "Day(s)" : "Egun",
+ "Week(s)" : "Aste",
+ "Month(s)" : "Hilabete",
+ "Year(s)" : "Urte",
"Password generation settings" : "Pasahitz sorreraren ezarpenak",
"Password length" : "Pasahitzaren luzera",
+ "Minimum amount of digits" : "Gutxieneko digitu kopurua",
+ "Use uppercase letters" : "Erabili maiuskulak",
+ "Use lowercase letters" : "Erabili letra minuskulak",
"Use numbers" : "Erabili zenbakiak",
+ "Use special characters" : "Erabili karaktere bereziak",
+ "Avoid ambiguous characters" : "Saihestu karaktere anbiguoak",
+ "Require every character type" : "Egin karaktere mota guztiak beharrezko",
+ "Export type" : "Esportazio mota",
"Export" : "Esportatu",
+ "Rename vault" : "Aldatu gordailuaren izena",
+ "New vault name" : "Gordailu berriaren izena",
"Change" : "Aldatu",
+ "Change vault key" : "Aldatu gordailuaren gakoa",
+ "Old vault password" : "Gordailu zaharraren pasahitza",
+ "New vault password" : "Gordailu berriaren pasahitza",
+ "Repeat new vault password" : "Errepikatu gordailuaren pasahitz berria",
"Processing" : "Prozesatzen",
+ "Total progress" : "Aurrerapen totala",
+ "About Passman" : "Passman aplikazioari buruz",
"Version" : "Bertsioa",
+ "Donate to support development" : "Egin dohaitza bat garapenean laguntzeko",
+ "Bookmarklet" : "applet-marka",
"Save your passwords with one click." : "Gorde zure pasahitzak klik batekin",
+ "Delete vault" : "Ezabatu gordailua",
+ "Vault password" : "Gordailuaren pasahitza",
+ "This process is irreversible" : "Prozesu honek ez du atzera bueltarik",
"Delete my precious passwords" : "Ezabatu nire pasahitz baliotsuak",
+ "Deleting {{password}}…" : "{{password}} ezabatzen...",
"Yes, delete my precious passwords" : "Bai, ezabatu nire pasahitz baliotsuak",
"Import type" : "Inportazio mota",
"Import" : "Inportatu",
+ "Read progress" : "Irakurri aurrerapena",
+ "Upload progress" : "Kargaren egoera",
+ "Private Key" : "Gako pribatua",
"Public key" : "Gako publikoa",
"Key size" : "Gakoaren tamaina",
"Save keys" : "Gorde gakoak",
+ "Generate sharing keys" : "Sortu partekatze-gakoak",
+ "Generating sharing keys" : "Partekatze-gakoak sortzen",
+ "Minimum password stength" : "Pasahitzaren gutxieneko indarra",
+ "Start scan" : "Hasi eskaneatzen",
"Result" : "Emaitza",
+ "A total of {{scan_result}} weak credentials were found." : "{{scan_result}} kredentzial ahul aurkitu dira guztira.",
+ "Score" : "Puntuazioa",
"Action" : "Ekintza",
"Search users…" : "Bilatu erabiltzaileak…",
+ "Missing users? Only users that have vaults are shown." : "Erabiltzaileak falta dira? Gordailuak dituzten erabiltzaileak soilik erakusten dira",
+ "Cyphering" : "Zifratzea",
"Uploading" : "Igotzen",
"User" : "Erabiltzailea",
+ "Crypto time" : "Zifratze-denbora",
+ "Total time spent encrypting" : "Enkriptatzen emandako denbora guztia",
"Read" : "Irakurri",
"Write" : "Idatzi",
"Files" : "Fitxategiak",
+ "Revisions" : "Berrikuspenak",
+ "Pending" : "Itxoiten",
+ "Enable link sharing" : "Gaitu esteken partekatzea",
+ "Share until date" : "Data arte partekatu",
+ "Click \\\"Share\\\" first" : "Egin klik \\\"Partekatu\\\" botoian lehenengo",
+ "Show files" : "Erakutsi fitxategiak",
"Details" : "Xehetasunak",
+ "Hide details" : "Ezkutatu xehetasunak",
+ "Password score" : "Pasahitzaren puntuazioa",
+ "Cracking times" : "Deszifratze-denbora",
"100 / hour" : "100 / orduko",
"10 / second" : "10 / segunduko",
+ "10k / second" : "10k / segundoko",
"10B / second" : "10B / segunduko",
+ "Offline attack, fast hash, many cores" : "Lineaz kanpoko erasoa, hash azkarra, nukleo asko",
"Pattern" : "Eredua",
+ "Matched word" : "Hitza bat dator",
"Dictionary name" : "Hiztegiaren izena",
+ "Uppercase variations" : "Maiuskula aldaerak",
+ "by" : "Nork",
+ "No revisions found." : "Ez da berrikuspenik aurkitu.",
"Label" : "Etiketa",
+ "Restore revision" : "Berezarri berrikuspena",
+ "Delete revision" : "Ezabatu berrikuspena",
+ "Edit credential" : "Editatu kredentziala",
+ "Create new credential" : "Sortu kredentzial berria",
"Save" : "Gorde",
"Cancel" : "Utzi",
"Settings" : "Ezarpenak",
+ "Share credential {{credential}}" : "Partekatu {{credential}} kredentziala",
"Unshare" : "Ez partekatu",
+ "Showing deleted since" : "Egun honetatik ezabatuak erakusten:",
"Beginning" : "Hasiera",
+ "Search for credential…" : "Bilatu kredentziala...",
"Account" : "Kontua",
"Password" : "Pasahitza",
"OTP" : "OTP",
+ "E-mail" : "E-maila",
"URL" : "URLa",
"Notes" : "Oharrak",
+ "Expiry time" : "Iraungitze ordua",
+ "Changed" : "Aldatuta",
"Created" : "Sortua",
"Edit" : "Editatu",
"Delete" : "Ezabatu",
"Share" : "Partekatu",
"Recover" : "Berreskuratu",
"Destroy" : "Suntsitu",
+ "Use regex" : "Erabili regex",
+ "You have incoming share requests." : "Sarrerako partekatze eskaerak dituzu.",
+ "If you want to put the credential in another vault," : "Kredentziala beste gordailu batean jarri nahi baduzu,",
"Permissions" : "Baimenak",
"Date" : "Data",
"Accept" : "Onartu",
+ "Decline" : "Uko egin",
"Hello there!" : "Kaixo!",
+ "You don't have good credentials" : "Ez duzu kredentzial onik",
+ "You don't have medium credentials" : "Ez duzu kredentzial ertainik",
+ "You don't have bad credentials" : "Ez duzu kredentzial okerrik",
+ "You don't have deleted credentials" : "Ez duzu ezabatutako kredentzialik",
+ "There are no credentials matching" : "Ez duzu bat datorren kredentzialik",
+ "Last accessed" : "Azkenengoz atzituta",
"Never" : "Inoiz ez",
+ "No vaults found, why not create one?" : "Ez da gordailurik aurkitu, zergatik ez sortu berria?",
"Password strength must be at least: {{strength}}" : "Pasahitzaren gutxieneko sendotasuna: {{strength}}",
+ "Please give your new vault a name." : "Eman izena gordailu berriari.",
+ "Repeat vault password" : "Errepikatu gordailuaren pasahitza",
"Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Zure partekatze gakoek 1024 bitetako sendotasuna izango dute, hau \\\"Ezarpenak\\\" atalean aldatu dezakezu gero ere.",
+ "Create vault" : "Sortu gordailua",
+ "Go back to vaults" : "Itzuli gordailuetara",
+ "Please input the password for" : "Mesedez sartu honetarako pasahitza:",
+ "Set this vault as the default." : "Ezarri gordailu hau lehenetsi gisa.",
+ "Log into this vault automatically." : "Hasi saioa gordailu honetan automatikoki.",
+ "Decrypt vault" : "Dezifratu gordailua",
+ "Seems you lost the vault password and you're unable to log in." : "Badirudi gordailuaren pasahitza galdu duzula eta ezin duzula saioa hasi.",
+ "If you want this vault to be removed you can request that here." : "Gordailu hau kendu nahi baduzu, hemen eskatu dezakezu norbaitek ken dezala.",
+ "An admin then accepts or declines the request" : "Administratzaile batek orduan eskaera onartu edo baztertu",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Administratzaile batek gordailu hau suntsitzen badu, kredentzial guztiak galduko dira",
+ "Reason for requesting deletion (optional):" : "Arrazoia ezabapena eskatzeko (aukerazkoa):",
+ "Request vault destruction" : "Eskatu gordailua suntsitzea",
+ "Yes, request an admin to destroy this vault" : "Bai, eskatu administratzaile bati gordailu hau suntsitu dezan",
+ "Cancel destruction request" : "Utzi suntsipen eskaera",
+ "Vault destruction requested" : "Gordailua suntsitzea eskatu da",
+ "Request removed" : "Eskakizuna kenduta",
+ "Destruction request pending" : "Suntsipen eskaera zain",
+ "Warning! Adding credentials over HTTP is insecure!" : "Kontuz! Kredentzialak HTTP bidez gehitzea ez da segurua!",
+ "Change vault" : "Aldatu gordailua",
+ "Deleted credentials" : "Ezabatutako kredentzialak",
"Logout" : "Amaitu saioa",
+ "Donate" : "Donazioa egin",
"Show All" : "Erakutsi guztiak",
"Tags" : "Etiketak",
"Search Tags" : "Bilatu etiketak",
@@ -103,12 +253,67 @@
"Expired" : "Iraungita",
"Filter Tags" : "Iragazi etiketak",
"Simple Navigation" : "Nabigazio sinplea",
+ "Someone has shared a credential with you." : "Norbaitek kredentzial bat partekatu du zurekin.",
+ "Click here to request it" : "Egin klik hemen hura eskatzeko",
+ "Loading…" : "Kargatzen…",
+ "Awwhh… credential not found. Maybe it expired" : "Ooohh... ez da kredentziala aurkitu. Agian iraungitu da ",
+ "email" : "posta elektronikoa",
+ "Description" : "Deskribapena",
+ "Url" : "Url",
+ "Custom Search:" : "Bilaketa pertsonalizatua:",
+ "Revert to defaults" : "Berezarri lehenetsitakoak",
+ "Error while saving field" : "Errorea eremua gordetzean",
+ "A Passman item has been created, modified or deleted" : "Passman elementu bat sortu, aldatu edo ezabatu da",
+ "A Passman item has expired" : "Passmal elementu bat iraungi da",
+ "A Passman item has been shared" : "Passman elementu bat partekatu da",
+ "A Passman item has been renamed" : "Passman elementu bat izenez aldatu da",
+ "%1$s has been created by %2$s" : "%2$s(e)k %1$s sortu du",
+ "You created %1$s" : "%1$s zuk sortu duzu",
+ "%1$s has been updated by %2$s" : "%2$s(e)k %1$s eguneratu du",
"You updated %1$s" : "%1$s eguneratu duzu",
+ "You renamed %1$s to %2$s" : "%1$s %2$s(e)ra berrizendatu duzu",
+ "%1$s has been deleted by %2$s" : "%2$s(e)k %1$s ezabatu du",
+ "You deleted %1$s" : "%1$s ezabatu duzu",
+ "%1$s has been recovered by %2$s" : "%2$s(e)k %1$s berreskuratu du",
+ "You recovered %1$s" : "%1$s berreskuratu duzu",
+ "%1$s has been permanently deleted by %2$s" : "%2$s(e)k %1$s behin betiko ezabatu du",
"You permanently deleted %1$s" : "%1$s behin betiko ezabatu duzu",
+ "The password of %1$s has expired, renew it now." : "%1$s(r)en pasahitza iraungi da, berritu ezazu orain.",
+ "%1$s has been shared with %2$s" : "%1$s %2$s(r)ekin partekatu da",
+ "%s has been shared with a link" : "%s esteka batekin partekatu da",
+ "Passwords" : "Pasahitzak",
+ "Your credential \"%s\" expired, click here to update the credential." : "Zure \"%s\" kredentziala iraungi da, egin klik hemen kredentziala eguneratzeko.",
"Remind me later" : "Gogoratu geroago",
"Ignore" : "Ezikusi",
+ "%s shared \"%s\" with you. Click here to accept" : "%s(e)k \"%s\" partekatu du zurekin. Egin klik hemen onartzeko ",
+ "Passman" : "Passman",
+ "Unable to get version info" : "Ezin izan da bertsio informazioa lortu",
+ "Passman Settings" : "Passman ezarpenak",
+ "GitHub version:" : "GitHub bertsioa:",
+ "A newer version of Passman is available" : "Passman bertsio berri bat dago eskuragarri",
+ "Password sharing" : "Pasahitzaren partekatzea",
+ "Credential mover" : "Kredentzial mugitzailea",
+ "Vault destruction requests" : "Gordailuak suntsitzeko eskariak",
+ "Check for new versions" : "Begiratu bertsio berririk dagoen",
+ "Enable HTTPS check" : "Gaitu HTTPS egiaztapena",
+ "Disable context menu" : "Desgaitu laster-menua",
+ "Disable JavaScript debugger" : "Desgaitu JavaScript araztailea",
+ "Allow users on this server to share passwords with a link" : "Baimendu zerbitzari honetako erabiltzaileek pasahitzak partekatu dezaten esteka batekin",
+ "Allow users on this server to share passwords with other users" : "Baimendu zerbitzari honetako erabiltzaileek beste erabiltzaileekin pasahitzak partekatzea",
+ "Source account" : "Iturburuko kontua",
+ "Destination account" : "Helburuko kontua",
+ "Credentials moved!" : "Kredentzialak mugituta!",
+ "Requests to destroy vault" : "Gordailua suntsitzeko eskariak",
+ "Request ID" : "Eskariaren IDa",
+ "Requested by" : "Honek eskatuta:",
"Reason" : "Arrazoia",
+ "Loading&hellip;" : "Kargatzen&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Ooohh... ezin izan da kredentziala aurkitu. Agian iraungi da?",
+ "Expires:" : "Iraungitzea:",
+ "Connection to server lost" : "Zerbitzariarekiko konexioa eten da",
+ "Problem loading page, reloading in 5 seconds" : "Arazoa orria kargatzerakoan, 5 segundotan birkargatzen",
"Saving..." : "Gordetzen...",
+ "Dismiss" : "Baztertu",
"seconds ago" : "duela segundo batzuk"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/l10n/fa.js b/l10n/fa.js
new file mode 100644
index 00000000..25abeca8
--- /dev/null
+++ b/l10n/fa.js
@@ -0,0 +1,368 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Generating sharing keys ( %s / 2)" : "ایجاد کلیدهای اشتراکی ( %s / 2)",
+ "Incorrect vault password!" : "گذرواژه نادرست!",
+ "Passwords do not match" : "رمزهای ورود مطابقت ندارند",
+ "General" : "عمومی",
+ "Custom Fields" : "فیلدهای سفارشی",
+ "Please fill in a label." : "لطفاً یک برچسب را پر کنید.",
+ "Please fill in a value." : "لطفاً یک مقدار را پر کنید.",
+ "Error loading file" : "خطا در بارگیری پرونده",
+ "An error occurred during decryption" : "هنگام رمزگشایی خطایی روی داد",
+ "Credential created!" : "اعتبار ایجاد شده!",
+ "Credential deleted" : "اعتبارنامه حذف شد",
+ "Credential updated" : "اعتبار به روز شد",
+ "Credential recovered" : "اعتبار بازیابی شد",
+ "Credential destroyed" : "اعتبار از بین رفت",
+ "Error downloading file, you probably have insufficient permissions" : "هنگام بارگیری در خطا ، احتمالاً مجوزهای کافی ندارید",
+ "Invalid QR code" : "کد QR نامعتبر است",
+ "Starting export" : "شروع صادرات",
+ "Decrypting credentials" : "رمزگشایی اعتبار",
+ "Done" : "انجام شد",
+ "File read." : "پرونده را بخوانید",
+ "Proceed with the following steps to import your file" : "مراحل زیر را برای وارد کردن پرونده خود انجام دهید",
+ "Skipping unlabeled credential" : "جستجوی اعتبار بدون برچسب",
+ "Adding {{credential}}" : "افزودن {{}} اعتبارنامه",
+ "Added {{credential}}" : "اضافه شده {{}} اعتبارنامه",
+ "Skipping credential, missing label on line {{line}}" : "جستجوی اعتبار ، برچسب موجود در خط {{خط}}",
+ "Parsed {{num}} credentials, starting to import" : "تجزیه {{NUM}} اعتبار، شروع به واردات",
+ "Importing" : "واردات",
+ "Start import" : "واردات را شروع کنید",
+ "Select CSV file" : "پرونده CSV را انتخاب کنید",
+ "Parsed {{rows}} lines from CSV file" : "تجزیه {{}} ردیف خطوط از فایل CSV",
+ "Skip first row" : "ردیف اول پرش کنید",
+ "You need to assign the label field before you can start the import." : "قبل از شروع واردات ، باید قسمت لیبل را اختصاص دهید.",
+ "The first 5 lines of the CSV are shown." : "5 خط اول CSV نشان داده شده است.",
+ "Assign the proper fields to each column." : "قسمت های مناسب را به هر ستون اختصاص دهید.",
+ "Example of imported credential" : "نمونه ای از اعتبار وارداتی",
+ "Missing an importer? Try it with the generic CSV importer." : "واردکننده ندارید؟ آن را با وارد کننده CSV عمومی امتحان کنید.",
+ "Go back to importers." : "به واردکنندگان برگردید",
+ "Revision deleted" : "نسخه حذف شد",
+ "Revision restored" : "نسخه بازسازی شد",
+ "Save in Passman" : "در Passman ذخیره کنید",
+ "Settings saved" : "تنظیمات ذخیره شد",
+ "General settings" : "تنظیمات عمومی",
+ "Password audit" : "حسابرسی رمز عبور",
+ "Password settings" : "تنظیمات گذرواژه",
+ "Import credentials" : "اعتبار واردات",
+ "Export credentials" : "اعتبارنامه صادرات",
+ "Sharing" : "اشتراک گذاری",
+ "Are you sure you want to leave? This will destroy all your credentials" : "آیا مطمئن هستی که می خواهی ترک کنی؟ این اعتبار همه اعتبارات شما را از بین می برد",
+ "Old password field incorrect!" : "فیلد رمز عبور قدیمی نادرست است!",
+ "New password does not match!" : "رمز عبور جدید مطابقت ندارد!",
+ "Please log in with your new vault password" : "لطفاً با رمز جدید طاق خود وارد شوید",
+ "Share with users and groups" : "با کاربران و گروه ها به اشتراک بگذارید",
+ "Share link" : "Share link",
+ "Are you sure you want to leave? This will corrupt this credential" : "آیا مطمئن هستی که می خواهی ترک کنی؟ این اعتبار را خراب می کند",
+ "Credential unshared" : "اعتبار نامشخص",
+ "Credential shared" : "اعتبار به اشتراک گذاشته شد",
+ "Saved!" : "ذخیره!",
+ "Poor" : "فقیر",
+ "Weak" : "هفته",
+ "Good" : "خوب",
+ "Strong" : "قوی",
+ "Toggle visibility" : "تغییر دید",
+ "Copy to clipboard" : "کپی کردن به حافظه موقت",
+ "Copied to clipboard!" : "در حافظه موقت کپی شده!",
+ "Generate password" : "ایجاد گذرواژه",
+ "Copy password to clipboard" : "رمز عبور را در حافظه موقت کپی کردن",
+ "Password copied to clipboard!" : "رمز عبور در حافظه موقت کپی شده!",
+ "Complete" : "کامل کردن",
+ "Username" : "نام کاربری",
+ "Repeat password" : "تکرار رمز عبور",
+ "Add tag" : "افزودن تگ",
+ "Pick an icon" : "یک نماد را انتخاب کنید",
+ "Search icons" : "نمادهای جستجو",
+ "Upload a custom icon:" : "بارگیری یک نماد سفارشی:",
+ "Use this icon" : "از این نماد استفاده کنید",
+ "Delete current icon" : "نماد فعلی را حذف کنید",
+ "Get icon from page" : "نماد را از صفحه دریافت کنید",
+ "This may take a few seconds…" : "این ممکن است چند ثانیه طول بکشد…",
+ "There was an error fetching the icon!" : "هنگام واگذاری نماد خطایی رخ داد!",
+ "Selected icon" : "نماد انتخاب شده است",
+ "Field label" : "برچسب زمینه",
+ "Field value" : "مقدار فیلد",
+ "Choose a file" : "پرونده ای را انتخاب کردن",
+ "Text" : "متن",
+ "File" : "File",
+ "Add" : "افزودن",
+ "Value" : "ارزش",
+ "Type" : "Type",
+ "Actions" : "فعالیت ها",
+ "Empty" : "خالی",
+ "Filename" : "نام فایل",
+ "Upload date" : "تاریخ بارگذاری",
+ "Size" : "اندازه",
+ "Upload or enter your OTP secret" : "راز OTP خود را بارگذاری یا وارد کنید",
+ "Current OTP settings" : "تنظیمات OTP فعلی",
+ "Issuer" : "صادر کننده",
+ "Secret" : "راز",
+ "Expiration date" : "تاریخ انقضا",
+ "No expiration date set" : "تاریخ انقضا ست نشده است",
+ "Renew interval" : "فاصله را تمدید کنید",
+ "Disabled" : "غیرفعال شده",
+ "Day(s)" : "روز(s)",
+ "Week(s)" : "هفته(s)",
+ "Month(s)" : "ماه(s)",
+ "Year(s)" : "سال(s)",
+ "Password generation settings" : "تنظیمات تولید گذرواژه",
+ "Password length" : "طول رمز عبور",
+ "Minimum amount of digits" : "حداقل رقم",
+ "Use uppercase letters" : "از حروف بزرگ استفاده کنید",
+ "Use lowercase letters" : "از حروف کوچک استفاده کنید",
+ "Use numbers" : "از اعداد استفاده کنید",
+ "Use special characters" : "از کاراکترهای ویژه استفاده کنید",
+ "Avoid ambiguous characters" : "از شخصیت های مبهم خودداری کنید",
+ "Require every character type" : "به هر نوع شخصیت نیاز دارید",
+ "Export type" : "نوع صادرات",
+ "Export" : "گرفتن خروجی",
+ "Enter vault password to confirm export." : "رمز عبور طاق را برای تائید صادرات وارد کنید.",
+ "Rename vault" : "تغییر طاق",
+ "New vault name" : "نام طاق جدید",
+ "Change" : "تغییر دادن",
+ "Change vault key" : "کلید طاق را تغییر دهید",
+ "Old vault password" : "رمز عبور قدیمی طاق",
+ "New vault password" : "رمز عبور جدید طاق",
+ "Repeat new vault password" : "رمز عبور جدید طاق را تکرار کنید",
+ "Please wait your vault is being updated, do not leave this page." : "لطفاً صبر کنید تا طاق شما به روز شود ، این صفحه را ترک نکنید.",
+ "Processing" : "در حال پردازش",
+ "Total progress" : "پیشرفت کل",
+ "About Passman" : "درباره Passman",
+ "Version" : "نسخه",
+ "Donate to support development" : "کمک مالی برای حمایت از توسعه",
+ "Bookmarklet" : "نشانک",
+ "Save your passwords with one click." : "پسورد های خود را با یک کلیک ذخیره کنید.",
+ "Drag below button to your bookmark toolbar." : "دکمه زیر را به نوار ابزار نشانک خود بکشید.",
+ "Delete vault" : "طاق را حذف کنید",
+ "Vault password" : "رمز عبور طاق",
+ "This process is irreversible" : "این روند غیرقابل برگشت است",
+ "Delete my precious passwords" : "کلمات عبور ارزشمند من را حذف کنید",
+ "Deleting {{password}}…" : "حذف {{گذرواژه}}…",
+ "Yes, delete my precious passwords" : "بله ، کلمات عبور ارزشمند من را حذف کنید",
+ "Import type" : "نوع واردات",
+ "Import" : "وارد کردن",
+ "Read progress" : "پیشرفت را بخوانید",
+ "Upload progress" : "پیشرفت بارگذاری شود",
+ "Private Key" : "کلید خصوصی",
+ "Public key" : "کلید عمومی",
+ "Key size" : "اندازه کلیدی",
+ "Save keys" : "ذخیره کلیدها",
+ "Generate sharing keys" : "کلیدهای اشتراکی ایجاد کنید",
+ "Generating sharing keys" : "ایجاد کلیدهای اشتراکی",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "ابزار رمز عبور رمزعبور شما را اسکن می کند ، میانگین زمان ترک خوردگی را محاسبه می کند و لیست های زیر آستانه را لیست می کند",
+ "Minimum password stength" : "حداقل قدرت رمز عبور",
+ "Start scan" : "شروع به اسکن کنید",
+ "Result" : "شروع به اسکنیک",
+ "A total of {{scan_result}} weak credentials were found." : "در مجموع {{}} scan_result اعتبار ضعیف پیدا شد.",
+ "Score" : "نمره",
+ "Action" : "عمل",
+ "Search users…" : "جستجوی کاربران…",
+ "Missing users? Only users that have vaults are shown." : "کاربران از دست رفته؟ فقط کاربرانی که دارای طاق هستند نمایش داده می شوند.",
+ "Cyphering" : "رمزگذاری",
+ "Uploading" : "در حال آپلود",
+ "User" : "User",
+ "Crypto time" : "زمان رمزنگاری",
+ "Total time spent encrypting" : "کل زمان صرف رمزگذاری شده است",
+ "Read" : "خواندن",
+ "Write" : "نوشتن",
+ "Files" : "فایل",
+ "Revisions" : "بازنگری",
+ "Pending" : "در انتظار",
+ "Enable link sharing" : "اشتراک گذاری پیوند را فعال کنید",
+ "Share until date" : "به اشتراک بگذارید تا تاریخ",
+ "Expire after views" : "بعد از نمایش",
+ "Click \\\"Share\\\" first" : "کلیک کنید \\ \"اشتراک \\\" برای اولین بار",
+ "Show files" : "نمایش پرونده ها",
+ "Details" : "جزئیات",
+ "Hide details" : "مخفی کردن جزئیات",
+ "Password score" : "امتیاز رمز عبور",
+ "Cracking times" : "زمان شکستن",
+ "100 / hour" : "100 / ساعت",
+ "Throttled online attack" : "حمله آنلاین را برانگیخت",
+ "10 / second" : "10 / ثانیه",
+ "Unthrottled online attack" : "حمله آنلاین بدون بیان",
+ "10k / second" : "10k / ثانیه",
+ "Offline attack, slow hash, many cores" : "حمله آفلاین ، هش کند ، بسیاری از هسته",
+ "10B / second" : "10B / ثانیه",
+ "Offline attack, fast hash, many cores" : "حمله آفلاین ، هش سریع ، هسته های زیادی",
+ "Match sequence" : "دنباله بازی",
+ "See match sequence" : "دنباله مسابقه را مشاهده کنید",
+ "Pattern" : "الگو",
+ "Matched word" : "کلمه همسان",
+ "Dictionary name" : "نام فرهنگ لغت",
+ "Rank" : "رتبه",
+ "Reversed" : "معکوس شد",
+ "Guesses" : "حدس می زنم",
+ "Base guesses" : "حدس های پایه",
+ "Uppercase variations" : "تغییرات بزرگ",
+ "l33t-variations" : "تغییرات l33t",
+ "Showing revisions of" : "نمایش تجدید نظر در",
+ "Revision of" : "تجدید نظر در",
+ "by" : "با",
+ "No revisions found." : "هیچ نسخه ای یافت نشد.",
+ "Label" : "برچسب",
+ "Restore revision" : "بازگرداندن تجدید نظر",
+ "Delete revision" : "ویرایش را حذف کنید",
+ "Edit credential" : "اعتبار را ویرایش کردن",
+ "Create new credential" : "اعتبار جدید ایجاد کنید",
+ "Save" : "ذخیره",
+ "Cancel" : "لغو",
+ "Settings" : "تنظیمات",
+ "Share credential {{credential}}" : "به اشتراک اعتبارنامه {{}} اعتبارنامه",
+ "Unshare" : "لغو اشتراک",
+ "Showing deleted since" : "نمایش از زمان حذف شده است",
+ "Beginning" : "شروع",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "نمایش اعتبار {{number_filtered}} از {{اعتبار_نمایش}} اعتبار",
+ "Search for credential…" : "جستجوی اطلاعات ...",
+ "Account" : "حساب",
+ "Password" : "گذرواژه",
+ "OTP" : "OTP",
+ "E-mail" : "پست الکترونیک",
+ "URL" : "URL",
+ "Notes" : "یادداشت ها",
+ "Expiry time" : "زمان انقضا",
+ "Changed" : "تغییر کرد",
+ "Created" : "ایجاد شده",
+ "Edit" : "ویرایش کردن",
+ "Delete" : "حذف",
+ "Share" : "هم‌رسانی",
+ "Recover" : "بازیابی",
+ "Destroy" : "از بین رفتن",
+ "Use regex" : "از regex استفاده کنید",
+ "You have incoming share requests." : "شما درخواست اشتراک اشتراکی دارید",
+ "If you want to put the credential in another vault," : "اگر می خواهید اعتبار را در طاق دیگری قرار دهید ،",
+ "log out of this vault and log into the vault you want the shared credential in." : "از این طاق خارج شوید و وارد طاق مورد نظر شوید که اعتبار مشترک را در آن بخواهید.",
+ "Permissions" : "مجوزها",
+ "Received from" : "دریافت شده از",
+ "Date" : "Date",
+ "Accept" : "پذیرش",
+ "Decline" : "کاهش می یابد",
+ "You have {{session_time}} left before logout." : "شما {{}} session_time قبل از خروج از سیستم را ترک کرد.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "طاق شما برای {{زمان}} به دلیل {{}} تلاش می کند تلاش های شکست خورده قفل شده است!",
+ "Hello there!" : "سلام!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "به نظر نمی رسد که رمز عبوری داشته باشید. آیا میخواهید افزودن یکی؟",
+ "You don't have good credentials" : "شما مدارک معتبر ندارید",
+ "You don't have medium credentials" : "شما اعتبار متوسط ندارید",
+ "You don't have bad credentials" : "شما مدارک بدی ندارید",
+ "You don't have expired credentials" : "اعتبارنامه منقضی نشده اید",
+ "You don't have deleted credentials" : "شما اعتبارنامه را حذف نکرده اید",
+ "There are no credentials with your selected tags" : "هیچ گواهی با برچسب های انتخابی شما وجود ندارد",
+ "There are no credentials matching" : "هیچ تطبیقی اعتبار وجود ندارد",
+ "Last accessed" : "آخرین دسترسی",
+ "Never" : "هرگز",
+ "No vaults found, why not create one?" : "هیچ طاقچه ای پیدا نشده است ، چرا یکی را ایجاد نمی کنید؟",
+ "Password strength must be at least: {{strength}}" : "قدرت رمز عبور باید حداقل: {{قدرت}}",
+ "Please give your new vault a name." : "لطفا نام طاق جدید خود را بدهید.",
+ "Repeat vault password" : "رمز عبور طاق را تکرار کنید",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "کلید به اشتراک گذاری خود را به یک قدرت 1024 بیت، که شما می توانید \\ \"تنظیمات \\\" بعد از تغییر در داشته باشد.",
+ "Create vault" : "خرک ایجاد کنید",
+ "Go back to vaults" : "بازگشت به طاق ها",
+ "Please input the password for" : "لطفاً رمز ورود را وارد کنید",
+ "Set this vault as the default." : "این طاق را به صورت پیش فرض تنظیم کنید.",
+ "Log into this vault automatically." : "به طور خودکار وارد این طاق شوید.",
+ "Log out of this vault automatically after: " : "پس از ورود به صورت خودکار از این طاق خارج شوید:",
+ "Decrypt vault" : "رمزگشایی طاق",
+ "Seems you lost the vault password and you're unable to log in." : "به نظر می رسد رمزعبور طاق را گم کرده اید و نمی توانید وارد شوید.",
+ "If you want this vault to be removed you can request that here." : "اگر می خواهید این طاق حذف شود ، می توانید در اینجا درخواست کنید.",
+ "An admin then accepts or declines the request" : "یک مدیر سپس درخواست را می پذیرد یا رد می کند",
+ "After an admin destroys this vault, all credentials in it will be lost" : "بعد از اینکه یک مدیر این طاق را از بین ببرد ، تمام اعتبارنامه موجود در آن از بین می رود",
+ "Reason for requesting deletion (optional):" : "دلیل درخواست حذف (اختیاری):",
+ "Request vault destruction" : "درخواست تخریب طاق",
+ "Yes, request an admin to destroy this vault" : "بله ، از یک مدیر بخواهید تا این طاق را خراب کند",
+ "Cancel destruction request" : "درخواست تخریب را لغو کنید",
+ "Vault destruction requested" : "تخریب طاق درخواست شد",
+ "Request removed" : "درخواست حذف شد",
+ "Destruction request pending" : "درخواست تخریب در انتظار است",
+ "Warning! Adding credentials over HTTP is insecure!" : "هشدار! اضافه کردن اعتبار از طریق HTTP ناامن است!",
+ "Logged into {{vault_name}}" : "وارد {{}} vault_name",
+ "Change vault" : "طاق را تغییر دهید",
+ "Deleted credentials" : "اعتبارنامه حذف شد",
+ "Logout" : "خروج از حساب کاربری",
+ "Donate" : "اهدا کنید",
+ "Show All" : "نمایش همه",
+ "Tags" : "برچسب‌ها",
+ "Search Tags" : "جستجوی برچسب ها",
+ "Good Strength" : "قدرت خوب",
+ "Medium Strength" : "مقاومت متوسط",
+ "Bad Strength" : "قدرت بد",
+ "Expired" : "منقضی شده",
+ "Filter Tags" : "برچسب های فیلتر",
+ "Simple Navigation" : "پیمایش ساده",
+ "Someone has shared a credential with you." : "شخصی اعتبار خود را با شما به اشتراک گذاشته است.",
+ "Click here to request it" : "به درخواست آن را در اینجا کلیک کنید",
+ "Loading…" : "بار کردن…",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh ... اعتبار یافت نشد. شاید منقضی شده باشد",
+ "Compromise!" : "به خطر افتادن!",
+ "Compromised!" : "در معرض خطر!",
+ "This password is compromised. You can only remove this warning by changing the password." : "این رمز عبور به خطر افتاده است. فقط با تغییر رمز عبور می توانید این هشدار را حذف کنید.",
+ "email" : "ایمیل",
+ "Description" : "توضیحات",
+ "Url" : "آدرس",
+ "Custom Search:" : "جستجوی سفارشی:",
+ "Revert to defaults" : "به پیش فرض برگردید",
+ "Error while saving field" : "هنگام ذخیره فیلد خطایی رخ داد",
+ "A Passman item has been created, modified or deleted" : "یک مورد Passman ایجاد شده ، اصلاح یا حذف شده است",
+ "A Passman item has expired" : "یک مورد Passman منقضی شده است",
+ "A Passman item has been shared" : "یک مورد Passman به اشتراک گذاشته شد",
+ "A Passman item has been renamed" : "یک مورد Passman تغییر نام یافت",
+ "%1$s has been created by %2$s" : "%1$s توسط ایجاد شده است %2$s",
+ "You created %1$s" : "شما %1$s را ایجاد شده",
+ "%1$s has been updated by %2$s" : "%1$s توسط به روز شده است %2$s",
+ "You updated %1$s" : "شما به روز کردید %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s تجدید نظر کرده است %1$s به تجدید نظر در %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "شما برگردید%1$s بازگشت به نسخه %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s تغییر نام داده است %1$s به %2$s",
+ "You renamed %1$s to %2$s" : "شما تغییر نام دادید %1$s به %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s حذف شده است %2$s",
+ "You deleted %1$s" : "شما حذف%1$s",
+ "%1$s has been recovered by %2$s" : "%1$s توسط بازیابی شده است %2$s",
+ "You recovered %1$s" : "شما بهبود یافتید %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s به طور دائمی توسط حذف شده است %2$s",
+ "You permanently deleted %1$s" : "شما برای همیشه حذف کردید%1$s",
+ "The password of %1$s has expired, renew it now." : "رمز عبور %1$s منقضی شده است ، اکنون آن را تمدید کنید",
+ "%1$s has been shared with %2$s" : "%1$s با آنها به اشتراک گذاشته شده است %2$s",
+ "You received a share request for %1$s from %2$s" : "برای شما درخواست اشتراک دریافت کرده است %1$s از جانب %2$s",
+ "%s has been shared with a link" : "%s با پیوند به اشتراک گذاشته شده است",
+ "Passwords" : "کلمات عبور",
+ "Your credential \"%s\" expired, click here to update the credential." : "اعتبار شما \"%s\"منقضی شده است ، برای به روزرسانی اعتبار اینجا را کلیک کنید.",
+ "Remind me later" : "بعدا به من یادآوری کن",
+ "Ignore" : "چشم پوشی",
+ "%s shared \"%s\" with you. Click here to accept" : "%s اشتراکی \"%s\"با شما. برای پذیرش اینجا را کلیک کنید",
+ "%s has declined your share request for \"%s\"." : "%s درخواست اشتراک شما را برای \"رد کرده است\"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s درخواست اشتراک شما را برای \"%s\".",
+ "Passman" : "رهگذر",
+ "Passman is a full featured password manager." : "Passman یک مدیر رمز عبور کامل است.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman یک مدیر رمز عبور کامل است.\nامکانات:\n- حواس\n- کلید Vault هرگز به سرور ارسال نمی شود\n- برنامه افزودنی مرورگر برای دسترسی آسان به رمزهای عبور\n- برنامه اندروید برای دسترسی به جاده\n- اعتبارنامه ها توسط مشتری رمزگذاری شده با AES 256bit رمزگذاری شده اند\n- اعتبارنامه ها سمت سرور رمزگذاری شده با 256bit AES هستند\n- امکان افزودن فیلدهای سفارشی به اعتبارنامه\n- ژنراتور OTP (رمز عبور یک بار) ساخته شده است\n- آنالایزر رمز عبور\n- گذرواژه‌ها را در داخل و از طریق پیوند به روشی ایمن به اشتراک بگذارید.\n- وارد کردن از مدیران مختلف رمز عبور (KeePass ، LastPass ، DashLane ، ZOHO ، Clipperz.is)\nبرای نمایشی از این برنامه به [https://demo.passman.cc] مراجعه کنید (https://demo.passman.cc)",
+ "Unable to get version info" : "اطلاعات نسخه امکان پذیر نیست",
+ "Passman Settings" : "تنظیمات Passman",
+ "GitHub version:" : "نسخه GitHub:",
+ "A newer version of Passman is available" : "نسخه جدیدتری از Passman در دسترس است",
+ "Password sharing" : "اشتراک گذرواژه",
+ "Credential mover" : "جابجایی اعتبار",
+ "Vault destruction requests" : "درخواست تخریب طاق",
+ "Check for new versions" : "نسخه های جدید را بررسی کنید",
+ "Enable HTTPS check" : "بررسی HTTPS را فعال کنید",
+ "Disable context menu" : "غیرفعال کردن فهرست زمینه",
+ "Disable JavaScript debugger" : "اشکال زدایی JavaScript را غیرفعال کردن",
+ "Allow users on this server to share passwords with a link" : "به کاربران موجود در این سرور اجازه دهید رمزهای عبور را با یک پیوند به اشتراک بگذارند",
+ "Allow users on this server to share passwords with other users" : "به کاربران موجود در این سرور اجازه دهید رمزهای عبور را با سایر کاربران به اشتراک بگذارند",
+ "Move credentials from one account to another" : "اعتبارنامه را از یک حساب دیگر به حساب دیگر منتقل کنید",
+ "Source account" : "حساب منبع",
+ "Destination account" : "حساب مقصد",
+ "Credentials moved!" : "اعتبارنامه منتقل شد!",
+ "Requests to destroy vault" : "درخواست تخریب طاق",
+ "Request ID" : "درخواست شناسه",
+ "Requested by" : "درخواست شده توسط",
+ "Reason" : "دلیل",
+ "Click here to request\n\t\t\t\t\tit" : "برای درخواست اینجا را کلیک کنید\n\t\t\t\t\tآی تی",
+ "Loading&hellip;" : "بارگذاری&جهنم;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Awwhh ... نتوانست اعتبار را پیدا کند. شاید منقضی شده باشد؟",
+ "Expires:" : "منقضی می شود:",
+ "Connection to server lost" : "اتصال به سرور از دست رفته است",
+ "Problem loading page, reloading in 5 seconds" : "صفحه بارگیری مشکل ، بارگیری مجدد در 5 ثانیه",
+ "Saving..." : "در حال ذخیره سازی...",
+ "Dismiss" : "پنهان کن",
+ "seconds ago" : "ثانیه‌هایی پیش"
+},
+"nplurals=2; plural=(n > 1);");
diff --git a/l10n/fa.json b/l10n/fa.json
new file mode 100644
index 00000000..47a727a2
--- /dev/null
+++ b/l10n/fa.json
@@ -0,0 +1,366 @@
+{ "translations": {
+ "Generating sharing keys ( %s / 2)" : "ایجاد کلیدهای اشتراکی ( %s / 2)",
+ "Incorrect vault password!" : "گذرواژه نادرست!",
+ "Passwords do not match" : "رمزهای ورود مطابقت ندارند",
+ "General" : "عمومی",
+ "Custom Fields" : "فیلدهای سفارشی",
+ "Please fill in a label." : "لطفاً یک برچسب را پر کنید.",
+ "Please fill in a value." : "لطفاً یک مقدار را پر کنید.",
+ "Error loading file" : "خطا در بارگیری پرونده",
+ "An error occurred during decryption" : "هنگام رمزگشایی خطایی روی داد",
+ "Credential created!" : "اعتبار ایجاد شده!",
+ "Credential deleted" : "اعتبارنامه حذف شد",
+ "Credential updated" : "اعتبار به روز شد",
+ "Credential recovered" : "اعتبار بازیابی شد",
+ "Credential destroyed" : "اعتبار از بین رفت",
+ "Error downloading file, you probably have insufficient permissions" : "هنگام بارگیری در خطا ، احتمالاً مجوزهای کافی ندارید",
+ "Invalid QR code" : "کد QR نامعتبر است",
+ "Starting export" : "شروع صادرات",
+ "Decrypting credentials" : "رمزگشایی اعتبار",
+ "Done" : "انجام شد",
+ "File read." : "پرونده را بخوانید",
+ "Proceed with the following steps to import your file" : "مراحل زیر را برای وارد کردن پرونده خود انجام دهید",
+ "Skipping unlabeled credential" : "جستجوی اعتبار بدون برچسب",
+ "Adding {{credential}}" : "افزودن {{}} اعتبارنامه",
+ "Added {{credential}}" : "اضافه شده {{}} اعتبارنامه",
+ "Skipping credential, missing label on line {{line}}" : "جستجوی اعتبار ، برچسب موجود در خط {{خط}}",
+ "Parsed {{num}} credentials, starting to import" : "تجزیه {{NUM}} اعتبار، شروع به واردات",
+ "Importing" : "واردات",
+ "Start import" : "واردات را شروع کنید",
+ "Select CSV file" : "پرونده CSV را انتخاب کنید",
+ "Parsed {{rows}} lines from CSV file" : "تجزیه {{}} ردیف خطوط از فایل CSV",
+ "Skip first row" : "ردیف اول پرش کنید",
+ "You need to assign the label field before you can start the import." : "قبل از شروع واردات ، باید قسمت لیبل را اختصاص دهید.",
+ "The first 5 lines of the CSV are shown." : "5 خط اول CSV نشان داده شده است.",
+ "Assign the proper fields to each column." : "قسمت های مناسب را به هر ستون اختصاص دهید.",
+ "Example of imported credential" : "نمونه ای از اعتبار وارداتی",
+ "Missing an importer? Try it with the generic CSV importer." : "واردکننده ندارید؟ آن را با وارد کننده CSV عمومی امتحان کنید.",
+ "Go back to importers." : "به واردکنندگان برگردید",
+ "Revision deleted" : "نسخه حذف شد",
+ "Revision restored" : "نسخه بازسازی شد",
+ "Save in Passman" : "در Passman ذخیره کنید",
+ "Settings saved" : "تنظیمات ذخیره شد",
+ "General settings" : "تنظیمات عمومی",
+ "Password audit" : "حسابرسی رمز عبور",
+ "Password settings" : "تنظیمات گذرواژه",
+ "Import credentials" : "اعتبار واردات",
+ "Export credentials" : "اعتبارنامه صادرات",
+ "Sharing" : "اشتراک گذاری",
+ "Are you sure you want to leave? This will destroy all your credentials" : "آیا مطمئن هستی که می خواهی ترک کنی؟ این اعتبار همه اعتبارات شما را از بین می برد",
+ "Old password field incorrect!" : "فیلد رمز عبور قدیمی نادرست است!",
+ "New password does not match!" : "رمز عبور جدید مطابقت ندارد!",
+ "Please log in with your new vault password" : "لطفاً با رمز جدید طاق خود وارد شوید",
+ "Share with users and groups" : "با کاربران و گروه ها به اشتراک بگذارید",
+ "Share link" : "Share link",
+ "Are you sure you want to leave? This will corrupt this credential" : "آیا مطمئن هستی که می خواهی ترک کنی؟ این اعتبار را خراب می کند",
+ "Credential unshared" : "اعتبار نامشخص",
+ "Credential shared" : "اعتبار به اشتراک گذاشته شد",
+ "Saved!" : "ذخیره!",
+ "Poor" : "فقیر",
+ "Weak" : "هفته",
+ "Good" : "خوب",
+ "Strong" : "قوی",
+ "Toggle visibility" : "تغییر دید",
+ "Copy to clipboard" : "کپی کردن به حافظه موقت",
+ "Copied to clipboard!" : "در حافظه موقت کپی شده!",
+ "Generate password" : "ایجاد گذرواژه",
+ "Copy password to clipboard" : "رمز عبور را در حافظه موقت کپی کردن",
+ "Password copied to clipboard!" : "رمز عبور در حافظه موقت کپی شده!",
+ "Complete" : "کامل کردن",
+ "Username" : "نام کاربری",
+ "Repeat password" : "تکرار رمز عبور",
+ "Add tag" : "افزودن تگ",
+ "Pick an icon" : "یک نماد را انتخاب کنید",
+ "Search icons" : "نمادهای جستجو",
+ "Upload a custom icon:" : "بارگیری یک نماد سفارشی:",
+ "Use this icon" : "از این نماد استفاده کنید",
+ "Delete current icon" : "نماد فعلی را حذف کنید",
+ "Get icon from page" : "نماد را از صفحه دریافت کنید",
+ "This may take a few seconds…" : "این ممکن است چند ثانیه طول بکشد…",
+ "There was an error fetching the icon!" : "هنگام واگذاری نماد خطایی رخ داد!",
+ "Selected icon" : "نماد انتخاب شده است",
+ "Field label" : "برچسب زمینه",
+ "Field value" : "مقدار فیلد",
+ "Choose a file" : "پرونده ای را انتخاب کردن",
+ "Text" : "متن",
+ "File" : "File",
+ "Add" : "افزودن",
+ "Value" : "ارزش",
+ "Type" : "Type",
+ "Actions" : "فعالیت ها",
+ "Empty" : "خالی",
+ "Filename" : "نام فایل",
+ "Upload date" : "تاریخ بارگذاری",
+ "Size" : "اندازه",
+ "Upload or enter your OTP secret" : "راز OTP خود را بارگذاری یا وارد کنید",
+ "Current OTP settings" : "تنظیمات OTP فعلی",
+ "Issuer" : "صادر کننده",
+ "Secret" : "راز",
+ "Expiration date" : "تاریخ انقضا",
+ "No expiration date set" : "تاریخ انقضا ست نشده است",
+ "Renew interval" : "فاصله را تمدید کنید",
+ "Disabled" : "غیرفعال شده",
+ "Day(s)" : "روز(s)",
+ "Week(s)" : "هفته(s)",
+ "Month(s)" : "ماه(s)",
+ "Year(s)" : "سال(s)",
+ "Password generation settings" : "تنظیمات تولید گذرواژه",
+ "Password length" : "طول رمز عبور",
+ "Minimum amount of digits" : "حداقل رقم",
+ "Use uppercase letters" : "از حروف بزرگ استفاده کنید",
+ "Use lowercase letters" : "از حروف کوچک استفاده کنید",
+ "Use numbers" : "از اعداد استفاده کنید",
+ "Use special characters" : "از کاراکترهای ویژه استفاده کنید",
+ "Avoid ambiguous characters" : "از شخصیت های مبهم خودداری کنید",
+ "Require every character type" : "به هر نوع شخصیت نیاز دارید",
+ "Export type" : "نوع صادرات",
+ "Export" : "گرفتن خروجی",
+ "Enter vault password to confirm export." : "رمز عبور طاق را برای تائید صادرات وارد کنید.",
+ "Rename vault" : "تغییر طاق",
+ "New vault name" : "نام طاق جدید",
+ "Change" : "تغییر دادن",
+ "Change vault key" : "کلید طاق را تغییر دهید",
+ "Old vault password" : "رمز عبور قدیمی طاق",
+ "New vault password" : "رمز عبور جدید طاق",
+ "Repeat new vault password" : "رمز عبور جدید طاق را تکرار کنید",
+ "Please wait your vault is being updated, do not leave this page." : "لطفاً صبر کنید تا طاق شما به روز شود ، این صفحه را ترک نکنید.",
+ "Processing" : "در حال پردازش",
+ "Total progress" : "پیشرفت کل",
+ "About Passman" : "درباره Passman",
+ "Version" : "نسخه",
+ "Donate to support development" : "کمک مالی برای حمایت از توسعه",
+ "Bookmarklet" : "نشانک",
+ "Save your passwords with one click." : "پسورد های خود را با یک کلیک ذخیره کنید.",
+ "Drag below button to your bookmark toolbar." : "دکمه زیر را به نوار ابزار نشانک خود بکشید.",
+ "Delete vault" : "طاق را حذف کنید",
+ "Vault password" : "رمز عبور طاق",
+ "This process is irreversible" : "این روند غیرقابل برگشت است",
+ "Delete my precious passwords" : "کلمات عبور ارزشمند من را حذف کنید",
+ "Deleting {{password}}…" : "حذف {{گذرواژه}}…",
+ "Yes, delete my precious passwords" : "بله ، کلمات عبور ارزشمند من را حذف کنید",
+ "Import type" : "نوع واردات",
+ "Import" : "وارد کردن",
+ "Read progress" : "پیشرفت را بخوانید",
+ "Upload progress" : "پیشرفت بارگذاری شود",
+ "Private Key" : "کلید خصوصی",
+ "Public key" : "کلید عمومی",
+ "Key size" : "اندازه کلیدی",
+ "Save keys" : "ذخیره کلیدها",
+ "Generate sharing keys" : "کلیدهای اشتراکی ایجاد کنید",
+ "Generating sharing keys" : "ایجاد کلیدهای اشتراکی",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "ابزار رمز عبور رمزعبور شما را اسکن می کند ، میانگین زمان ترک خوردگی را محاسبه می کند و لیست های زیر آستانه را لیست می کند",
+ "Minimum password stength" : "حداقل قدرت رمز عبور",
+ "Start scan" : "شروع به اسکن کنید",
+ "Result" : "شروع به اسکنیک",
+ "A total of {{scan_result}} weak credentials were found." : "در مجموع {{}} scan_result اعتبار ضعیف پیدا شد.",
+ "Score" : "نمره",
+ "Action" : "عمل",
+ "Search users…" : "جستجوی کاربران…",
+ "Missing users? Only users that have vaults are shown." : "کاربران از دست رفته؟ فقط کاربرانی که دارای طاق هستند نمایش داده می شوند.",
+ "Cyphering" : "رمزگذاری",
+ "Uploading" : "در حال آپلود",
+ "User" : "User",
+ "Crypto time" : "زمان رمزنگاری",
+ "Total time spent encrypting" : "کل زمان صرف رمزگذاری شده است",
+ "Read" : "خواندن",
+ "Write" : "نوشتن",
+ "Files" : "فایل",
+ "Revisions" : "بازنگری",
+ "Pending" : "در انتظار",
+ "Enable link sharing" : "اشتراک گذاری پیوند را فعال کنید",
+ "Share until date" : "به اشتراک بگذارید تا تاریخ",
+ "Expire after views" : "بعد از نمایش",
+ "Click \\\"Share\\\" first" : "کلیک کنید \\ \"اشتراک \\\" برای اولین بار",
+ "Show files" : "نمایش پرونده ها",
+ "Details" : "جزئیات",
+ "Hide details" : "مخفی کردن جزئیات",
+ "Password score" : "امتیاز رمز عبور",
+ "Cracking times" : "زمان شکستن",
+ "100 / hour" : "100 / ساعت",
+ "Throttled online attack" : "حمله آنلاین را برانگیخت",
+ "10 / second" : "10 / ثانیه",
+ "Unthrottled online attack" : "حمله آنلاین بدون بیان",
+ "10k / second" : "10k / ثانیه",
+ "Offline attack, slow hash, many cores" : "حمله آفلاین ، هش کند ، بسیاری از هسته",
+ "10B / second" : "10B / ثانیه",
+ "Offline attack, fast hash, many cores" : "حمله آفلاین ، هش سریع ، هسته های زیادی",
+ "Match sequence" : "دنباله بازی",
+ "See match sequence" : "دنباله مسابقه را مشاهده کنید",
+ "Pattern" : "الگو",
+ "Matched word" : "کلمه همسان",
+ "Dictionary name" : "نام فرهنگ لغت",
+ "Rank" : "رتبه",
+ "Reversed" : "معکوس شد",
+ "Guesses" : "حدس می زنم",
+ "Base guesses" : "حدس های پایه",
+ "Uppercase variations" : "تغییرات بزرگ",
+ "l33t-variations" : "تغییرات l33t",
+ "Showing revisions of" : "نمایش تجدید نظر در",
+ "Revision of" : "تجدید نظر در",
+ "by" : "با",
+ "No revisions found." : "هیچ نسخه ای یافت نشد.",
+ "Label" : "برچسب",
+ "Restore revision" : "بازگرداندن تجدید نظر",
+ "Delete revision" : "ویرایش را حذف کنید",
+ "Edit credential" : "اعتبار را ویرایش کردن",
+ "Create new credential" : "اعتبار جدید ایجاد کنید",
+ "Save" : "ذخیره",
+ "Cancel" : "لغو",
+ "Settings" : "تنظیمات",
+ "Share credential {{credential}}" : "به اشتراک اعتبارنامه {{}} اعتبارنامه",
+ "Unshare" : "لغو اشتراک",
+ "Showing deleted since" : "نمایش از زمان حذف شده است",
+ "Beginning" : "شروع",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "نمایش اعتبار {{number_filtered}} از {{اعتبار_نمایش}} اعتبار",
+ "Search for credential…" : "جستجوی اطلاعات ...",
+ "Account" : "حساب",
+ "Password" : "گذرواژه",
+ "OTP" : "OTP",
+ "E-mail" : "پست الکترونیک",
+ "URL" : "URL",
+ "Notes" : "یادداشت ها",
+ "Expiry time" : "زمان انقضا",
+ "Changed" : "تغییر کرد",
+ "Created" : "ایجاد شده",
+ "Edit" : "ویرایش کردن",
+ "Delete" : "حذف",
+ "Share" : "هم‌رسانی",
+ "Recover" : "بازیابی",
+ "Destroy" : "از بین رفتن",
+ "Use regex" : "از regex استفاده کنید",
+ "You have incoming share requests." : "شما درخواست اشتراک اشتراکی دارید",
+ "If you want to put the credential in another vault," : "اگر می خواهید اعتبار را در طاق دیگری قرار دهید ،",
+ "log out of this vault and log into the vault you want the shared credential in." : "از این طاق خارج شوید و وارد طاق مورد نظر شوید که اعتبار مشترک را در آن بخواهید.",
+ "Permissions" : "مجوزها",
+ "Received from" : "دریافت شده از",
+ "Date" : "Date",
+ "Accept" : "پذیرش",
+ "Decline" : "کاهش می یابد",
+ "You have {{session_time}} left before logout." : "شما {{}} session_time قبل از خروج از سیستم را ترک کرد.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "طاق شما برای {{زمان}} به دلیل {{}} تلاش می کند تلاش های شکست خورده قفل شده است!",
+ "Hello there!" : "سلام!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "به نظر نمی رسد که رمز عبوری داشته باشید. آیا میخواهید افزودن یکی؟",
+ "You don't have good credentials" : "شما مدارک معتبر ندارید",
+ "You don't have medium credentials" : "شما اعتبار متوسط ندارید",
+ "You don't have bad credentials" : "شما مدارک بدی ندارید",
+ "You don't have expired credentials" : "اعتبارنامه منقضی نشده اید",
+ "You don't have deleted credentials" : "شما اعتبارنامه را حذف نکرده اید",
+ "There are no credentials with your selected tags" : "هیچ گواهی با برچسب های انتخابی شما وجود ندارد",
+ "There are no credentials matching" : "هیچ تطبیقی اعتبار وجود ندارد",
+ "Last accessed" : "آخرین دسترسی",
+ "Never" : "هرگز",
+ "No vaults found, why not create one?" : "هیچ طاقچه ای پیدا نشده است ، چرا یکی را ایجاد نمی کنید؟",
+ "Password strength must be at least: {{strength}}" : "قدرت رمز عبور باید حداقل: {{قدرت}}",
+ "Please give your new vault a name." : "لطفا نام طاق جدید خود را بدهید.",
+ "Repeat vault password" : "رمز عبور طاق را تکرار کنید",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "کلید به اشتراک گذاری خود را به یک قدرت 1024 بیت، که شما می توانید \\ \"تنظیمات \\\" بعد از تغییر در داشته باشد.",
+ "Create vault" : "خرک ایجاد کنید",
+ "Go back to vaults" : "بازگشت به طاق ها",
+ "Please input the password for" : "لطفاً رمز ورود را وارد کنید",
+ "Set this vault as the default." : "این طاق را به صورت پیش فرض تنظیم کنید.",
+ "Log into this vault automatically." : "به طور خودکار وارد این طاق شوید.",
+ "Log out of this vault automatically after: " : "پس از ورود به صورت خودکار از این طاق خارج شوید:",
+ "Decrypt vault" : "رمزگشایی طاق",
+ "Seems you lost the vault password and you're unable to log in." : "به نظر می رسد رمزعبور طاق را گم کرده اید و نمی توانید وارد شوید.",
+ "If you want this vault to be removed you can request that here." : "اگر می خواهید این طاق حذف شود ، می توانید در اینجا درخواست کنید.",
+ "An admin then accepts or declines the request" : "یک مدیر سپس درخواست را می پذیرد یا رد می کند",
+ "After an admin destroys this vault, all credentials in it will be lost" : "بعد از اینکه یک مدیر این طاق را از بین ببرد ، تمام اعتبارنامه موجود در آن از بین می رود",
+ "Reason for requesting deletion (optional):" : "دلیل درخواست حذف (اختیاری):",
+ "Request vault destruction" : "درخواست تخریب طاق",
+ "Yes, request an admin to destroy this vault" : "بله ، از یک مدیر بخواهید تا این طاق را خراب کند",
+ "Cancel destruction request" : "درخواست تخریب را لغو کنید",
+ "Vault destruction requested" : "تخریب طاق درخواست شد",
+ "Request removed" : "درخواست حذف شد",
+ "Destruction request pending" : "درخواست تخریب در انتظار است",
+ "Warning! Adding credentials over HTTP is insecure!" : "هشدار! اضافه کردن اعتبار از طریق HTTP ناامن است!",
+ "Logged into {{vault_name}}" : "وارد {{}} vault_name",
+ "Change vault" : "طاق را تغییر دهید",
+ "Deleted credentials" : "اعتبارنامه حذف شد",
+ "Logout" : "خروج از حساب کاربری",
+ "Donate" : "اهدا کنید",
+ "Show All" : "نمایش همه",
+ "Tags" : "برچسب‌ها",
+ "Search Tags" : "جستجوی برچسب ها",
+ "Good Strength" : "قدرت خوب",
+ "Medium Strength" : "مقاومت متوسط",
+ "Bad Strength" : "قدرت بد",
+ "Expired" : "منقضی شده",
+ "Filter Tags" : "برچسب های فیلتر",
+ "Simple Navigation" : "پیمایش ساده",
+ "Someone has shared a credential with you." : "شخصی اعتبار خود را با شما به اشتراک گذاشته است.",
+ "Click here to request it" : "به درخواست آن را در اینجا کلیک کنید",
+ "Loading…" : "بار کردن…",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh ... اعتبار یافت نشد. شاید منقضی شده باشد",
+ "Compromise!" : "به خطر افتادن!",
+ "Compromised!" : "در معرض خطر!",
+ "This password is compromised. You can only remove this warning by changing the password." : "این رمز عبور به خطر افتاده است. فقط با تغییر رمز عبور می توانید این هشدار را حذف کنید.",
+ "email" : "ایمیل",
+ "Description" : "توضیحات",
+ "Url" : "آدرس",
+ "Custom Search:" : "جستجوی سفارشی:",
+ "Revert to defaults" : "به پیش فرض برگردید",
+ "Error while saving field" : "هنگام ذخیره فیلد خطایی رخ داد",
+ "A Passman item has been created, modified or deleted" : "یک مورد Passman ایجاد شده ، اصلاح یا حذف شده است",
+ "A Passman item has expired" : "یک مورد Passman منقضی شده است",
+ "A Passman item has been shared" : "یک مورد Passman به اشتراک گذاشته شد",
+ "A Passman item has been renamed" : "یک مورد Passman تغییر نام یافت",
+ "%1$s has been created by %2$s" : "%1$s توسط ایجاد شده است %2$s",
+ "You created %1$s" : "شما %1$s را ایجاد شده",
+ "%1$s has been updated by %2$s" : "%1$s توسط به روز شده است %2$s",
+ "You updated %1$s" : "شما به روز کردید %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s تجدید نظر کرده است %1$s به تجدید نظر در %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "شما برگردید%1$s بازگشت به نسخه %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s تغییر نام داده است %1$s به %2$s",
+ "You renamed %1$s to %2$s" : "شما تغییر نام دادید %1$s به %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s حذف شده است %2$s",
+ "You deleted %1$s" : "شما حذف%1$s",
+ "%1$s has been recovered by %2$s" : "%1$s توسط بازیابی شده است %2$s",
+ "You recovered %1$s" : "شما بهبود یافتید %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s به طور دائمی توسط حذف شده است %2$s",
+ "You permanently deleted %1$s" : "شما برای همیشه حذف کردید%1$s",
+ "The password of %1$s has expired, renew it now." : "رمز عبور %1$s منقضی شده است ، اکنون آن را تمدید کنید",
+ "%1$s has been shared with %2$s" : "%1$s با آنها به اشتراک گذاشته شده است %2$s",
+ "You received a share request for %1$s from %2$s" : "برای شما درخواست اشتراک دریافت کرده است %1$s از جانب %2$s",
+ "%s has been shared with a link" : "%s با پیوند به اشتراک گذاشته شده است",
+ "Passwords" : "کلمات عبور",
+ "Your credential \"%s\" expired, click here to update the credential." : "اعتبار شما \"%s\"منقضی شده است ، برای به روزرسانی اعتبار اینجا را کلیک کنید.",
+ "Remind me later" : "بعدا به من یادآوری کن",
+ "Ignore" : "چشم پوشی",
+ "%s shared \"%s\" with you. Click here to accept" : "%s اشتراکی \"%s\"با شما. برای پذیرش اینجا را کلیک کنید",
+ "%s has declined your share request for \"%s\"." : "%s درخواست اشتراک شما را برای \"رد کرده است\"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s درخواست اشتراک شما را برای \"%s\".",
+ "Passman" : "رهگذر",
+ "Passman is a full featured password manager." : "Passman یک مدیر رمز عبور کامل است.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman یک مدیر رمز عبور کامل است.\nامکانات:\n- حواس\n- کلید Vault هرگز به سرور ارسال نمی شود\n- برنامه افزودنی مرورگر برای دسترسی آسان به رمزهای عبور\n- برنامه اندروید برای دسترسی به جاده\n- اعتبارنامه ها توسط مشتری رمزگذاری شده با AES 256bit رمزگذاری شده اند\n- اعتبارنامه ها سمت سرور رمزگذاری شده با 256bit AES هستند\n- امکان افزودن فیلدهای سفارشی به اعتبارنامه\n- ژنراتور OTP (رمز عبور یک بار) ساخته شده است\n- آنالایزر رمز عبور\n- گذرواژه‌ها را در داخل و از طریق پیوند به روشی ایمن به اشتراک بگذارید.\n- وارد کردن از مدیران مختلف رمز عبور (KeePass ، LastPass ، DashLane ، ZOHO ، Clipperz.is)\nبرای نمایشی از این برنامه به [https://demo.passman.cc] مراجعه کنید (https://demo.passman.cc)",
+ "Unable to get version info" : "اطلاعات نسخه امکان پذیر نیست",
+ "Passman Settings" : "تنظیمات Passman",
+ "GitHub version:" : "نسخه GitHub:",
+ "A newer version of Passman is available" : "نسخه جدیدتری از Passman در دسترس است",
+ "Password sharing" : "اشتراک گذرواژه",
+ "Credential mover" : "جابجایی اعتبار",
+ "Vault destruction requests" : "درخواست تخریب طاق",
+ "Check for new versions" : "نسخه های جدید را بررسی کنید",
+ "Enable HTTPS check" : "بررسی HTTPS را فعال کنید",
+ "Disable context menu" : "غیرفعال کردن فهرست زمینه",
+ "Disable JavaScript debugger" : "اشکال زدایی JavaScript را غیرفعال کردن",
+ "Allow users on this server to share passwords with a link" : "به کاربران موجود در این سرور اجازه دهید رمزهای عبور را با یک پیوند به اشتراک بگذارند",
+ "Allow users on this server to share passwords with other users" : "به کاربران موجود در این سرور اجازه دهید رمزهای عبور را با سایر کاربران به اشتراک بگذارند",
+ "Move credentials from one account to another" : "اعتبارنامه را از یک حساب دیگر به حساب دیگر منتقل کنید",
+ "Source account" : "حساب منبع",
+ "Destination account" : "حساب مقصد",
+ "Credentials moved!" : "اعتبارنامه منتقل شد!",
+ "Requests to destroy vault" : "درخواست تخریب طاق",
+ "Request ID" : "درخواست شناسه",
+ "Requested by" : "درخواست شده توسط",
+ "Reason" : "دلیل",
+ "Click here to request\n\t\t\t\t\tit" : "برای درخواست اینجا را کلیک کنید\n\t\t\t\t\tآی تی",
+ "Loading&hellip;" : "بارگذاری&جهنم;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Awwhh ... نتوانست اعتبار را پیدا کند. شاید منقضی شده باشد؟",
+ "Expires:" : "منقضی می شود:",
+ "Connection to server lost" : "اتصال به سرور از دست رفته است",
+ "Problem loading page, reloading in 5 seconds" : "صفحه بارگیری مشکل ، بارگیری مجدد در 5 ثانیه",
+ "Saving..." : "در حال ذخیره سازی...",
+ "Dismiss" : "پنهان کن",
+ "seconds ago" : "ثانیه‌هایی پیش"
+},"pluralForm" :"nplurals=2; plural=(n > 1);"
+} \ No newline at end of file
diff --git a/l10n/fi.js b/l10n/fi.js
index eb63ae07..ffc520b9 100644
--- a/l10n/fi.js
+++ b/l10n/fi.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Salasanat",
"Generating sharing keys ( %s / 2)" : "Luodaan jakamisavaimia ( %s / 2)",
"Incorrect vault password!" : "Virheellinen holvin salasana!",
"Passwords do not match" : "Salasanat eivät täsmää",
@@ -73,6 +72,7 @@ OC.L10N.register(
"Size" : "Koko",
"Current OTP settings" : "Nykyiset OTP-asetukset",
"Issuer" : "Myöntäjä",
+ "Secret" : "Salainen",
"Expiration date" : "Vanhenemispäivä",
"No expiration date set" : "Vanhenemispäivää ei ole asetettu",
"Renew interval" : "Uusimisväli",
@@ -83,6 +83,7 @@ OC.L10N.register(
"Year(s)" : "Vuosi(a)",
"Password generation settings" : "Salasanan luomisen asetuket",
"Password length" : "Salasanan pituus",
+ "Minimum amount of digits" : "Numeroiden vähimmäismäärä",
"Use uppercase letters" : "Käytä suuria kirjaimia",
"Use lowercase letters" : "Käytä pieniä kirjaimia",
"Use numbers" : "Käytä numeroita",
@@ -103,6 +104,7 @@ OC.L10N.register(
"About Passman" : "Tietoja Passmanista",
"Version" : "Versio",
"Donate to support development" : "Lahjoita tukeaksesi kehitystä",
+ "Bookmarklet" : "Sovelluskirjanmerkki",
"Save your passwords with one click." : "Tallenna salasanasi yhdellä napsautuksella.",
"Drag below button to your bookmark toolbar." : "Raahaa alla oleva painike kirjanmerkkipalkkiisi.",
"Delete vault" : "Poista holvi",
@@ -135,6 +137,8 @@ OC.L10N.register(
"Password score" : "Salasanan pisteytys",
"100 / hour" : "100 / tunti",
"10 / second" : "10 / sekunti",
+ "Pattern" : "Kuvio",
+ "by" : " Kirjoittaja:",
"Edit credential" : "Muokkaa tilitietoa",
"Create new credential" : "Luo uusi tilitieto",
"Save" : "Tallenna",
@@ -188,9 +192,11 @@ OC.L10N.register(
"Show All" : "Näytä kaikki",
"Tags" : "Tunnisteet",
"Search Tags" : "Etsi tunneisteita",
+ "Expired" : "Vanhentunut",
"Someone has shared a credential with you." : "Joku on jakanut tilitiedot kanssasi.",
"Loading…" : "Ladataan…",
"Awwhh… credential not found. Maybe it expired" : "Voi ei… tilitietoa ei löytynyt. Kenties se vanheni",
+ "email" : "sähköposti",
"Description" : "Kuvaus",
"Error while saving field" : "Virhe kenttää tallentaessa",
"A Passman item has been created, modified or deleted" : "Passman-tietu on luotu, sitä on muokattu tai se on poistettu",
@@ -200,6 +206,7 @@ OC.L10N.register(
"You created %1$s" : "Loit %1$s",
"You updated %1$s" : "Päivitit %1$s",
"You deleted %1$s" : "Poistit %1$s",
+ "Passwords" : "Salasanat",
"Remind me later" : "Muistuta myöhemmin",
"Ignore" : "Ohita",
"Passman" : "Passman",
diff --git a/l10n/fi.json b/l10n/fi.json
index 502c9b93..db259ef4 100644
--- a/l10n/fi.json
+++ b/l10n/fi.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Salasanat",
"Generating sharing keys ( %s / 2)" : "Luodaan jakamisavaimia ( %s / 2)",
"Incorrect vault password!" : "Virheellinen holvin salasana!",
"Passwords do not match" : "Salasanat eivät täsmää",
@@ -71,6 +70,7 @@
"Size" : "Koko",
"Current OTP settings" : "Nykyiset OTP-asetukset",
"Issuer" : "Myöntäjä",
+ "Secret" : "Salainen",
"Expiration date" : "Vanhenemispäivä",
"No expiration date set" : "Vanhenemispäivää ei ole asetettu",
"Renew interval" : "Uusimisväli",
@@ -81,6 +81,7 @@
"Year(s)" : "Vuosi(a)",
"Password generation settings" : "Salasanan luomisen asetuket",
"Password length" : "Salasanan pituus",
+ "Minimum amount of digits" : "Numeroiden vähimmäismäärä",
"Use uppercase letters" : "Käytä suuria kirjaimia",
"Use lowercase letters" : "Käytä pieniä kirjaimia",
"Use numbers" : "Käytä numeroita",
@@ -101,6 +102,7 @@
"About Passman" : "Tietoja Passmanista",
"Version" : "Versio",
"Donate to support development" : "Lahjoita tukeaksesi kehitystä",
+ "Bookmarklet" : "Sovelluskirjanmerkki",
"Save your passwords with one click." : "Tallenna salasanasi yhdellä napsautuksella.",
"Drag below button to your bookmark toolbar." : "Raahaa alla oleva painike kirjanmerkkipalkkiisi.",
"Delete vault" : "Poista holvi",
@@ -133,6 +135,8 @@
"Password score" : "Salasanan pisteytys",
"100 / hour" : "100 / tunti",
"10 / second" : "10 / sekunti",
+ "Pattern" : "Kuvio",
+ "by" : " Kirjoittaja:",
"Edit credential" : "Muokkaa tilitietoa",
"Create new credential" : "Luo uusi tilitieto",
"Save" : "Tallenna",
@@ -186,9 +190,11 @@
"Show All" : "Näytä kaikki",
"Tags" : "Tunnisteet",
"Search Tags" : "Etsi tunneisteita",
+ "Expired" : "Vanhentunut",
"Someone has shared a credential with you." : "Joku on jakanut tilitiedot kanssasi.",
"Loading…" : "Ladataan…",
"Awwhh… credential not found. Maybe it expired" : "Voi ei… tilitietoa ei löytynyt. Kenties se vanheni",
+ "email" : "sähköposti",
"Description" : "Kuvaus",
"Error while saving field" : "Virhe kenttää tallentaessa",
"A Passman item has been created, modified or deleted" : "Passman-tietu on luotu, sitä on muokattu tai se on poistettu",
@@ -198,6 +204,7 @@
"You created %1$s" : "Loit %1$s",
"You updated %1$s" : "Päivitit %1$s",
"You deleted %1$s" : "Poistit %1$s",
+ "Passwords" : "Salasanat",
"Remind me later" : "Muistuta myöhemmin",
"Ignore" : "Ohita",
"Passman" : "Passman",
diff --git a/l10n/fr.js b/l10n/fr.js
index 718c0bec..583b3473 100644
--- a/l10n/fr.js
+++ b/l10n/fr.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Mots de passe",
"Generating sharing keys ( %s / 2)" : "Génération des clés de partage ( %s/ 2 )",
"Incorrect vault password!" : "Mot de passe du coffre-fort incorrect",
"Passwords do not match" : "Les mots de passe ne correspondent pas",
@@ -54,7 +53,7 @@ OC.L10N.register(
"New password does not match!" : "Le nouveau mot de passe ne correspond pas !",
"Please log in with your new vault password" : "Veuillez vous connecter avec votre nouveau mot de passe du coffre-fort",
"Share with users and groups" : "Partager avec des utilisateurs et des groupes",
- "Share link" : "Partager un lien",
+ "Share link" : "Lien de partage",
"Are you sure you want to leave? This will corrupt this credential" : "Êtes-vous sûr de vouloir quitter ? Cela va corrompre cette information d'identification",
"Credential unshared" : "Arrêt du partage de l'information d'identification ",
"Credential shared" : "Information d'identification partagée",
@@ -325,6 +324,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s a été partagé avec %2$s",
"You received a share request for %1$s from %2$s" : "Vous avez reçu une demande de partage pour %1$s de %2$s",
"%s has been shared with a link" : "%s a été partagé avec un lien",
+ "Passwords" : "Mots de passe",
"Your credential \"%s\" expired, click here to update the credential." : "Votre identifiant \"%s\" a expiré, cliquez ici pour le mettre à jour.",
"Remind me later" : "Rappelez-moi plus tard",
"Ignore" : "Ignorer",
@@ -359,7 +359,7 @@ OC.L10N.register(
"Loading&hellip;" : "Chargement&hellip;",
"Awwhh… could not find the credential. Maybe it expired?" : "Awwhh… n'a pas pu trouver le justificatif d'identité. Peut-être a t-il expiré ?",
"Expires:" : "Expire le :",
- "Connection to server lost" : "Connexion au serveur perdue",
+ "Connection to server lost" : "La connexion au serveur a été perdue",
"Problem loading page, reloading in 5 seconds" : "Problème de chargement de la page, actualisation dans 5 secondes",
"Saving..." : "Enregistrement…",
"Dismiss" : "Ignorer",
diff --git a/l10n/fr.json b/l10n/fr.json
index 615eb48f..0d9b67d2 100644
--- a/l10n/fr.json
+++ b/l10n/fr.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Mots de passe",
"Generating sharing keys ( %s / 2)" : "Génération des clés de partage ( %s/ 2 )",
"Incorrect vault password!" : "Mot de passe du coffre-fort incorrect",
"Passwords do not match" : "Les mots de passe ne correspondent pas",
@@ -52,7 +51,7 @@
"New password does not match!" : "Le nouveau mot de passe ne correspond pas !",
"Please log in with your new vault password" : "Veuillez vous connecter avec votre nouveau mot de passe du coffre-fort",
"Share with users and groups" : "Partager avec des utilisateurs et des groupes",
- "Share link" : "Partager un lien",
+ "Share link" : "Lien de partage",
"Are you sure you want to leave? This will corrupt this credential" : "Êtes-vous sûr de vouloir quitter ? Cela va corrompre cette information d'identification",
"Credential unshared" : "Arrêt du partage de l'information d'identification ",
"Credential shared" : "Information d'identification partagée",
@@ -323,6 +322,7 @@
"%1$s has been shared with %2$s" : "%1$s a été partagé avec %2$s",
"You received a share request for %1$s from %2$s" : "Vous avez reçu une demande de partage pour %1$s de %2$s",
"%s has been shared with a link" : "%s a été partagé avec un lien",
+ "Passwords" : "Mots de passe",
"Your credential \"%s\" expired, click here to update the credential." : "Votre identifiant \"%s\" a expiré, cliquez ici pour le mettre à jour.",
"Remind me later" : "Rappelez-moi plus tard",
"Ignore" : "Ignorer",
@@ -357,7 +357,7 @@
"Loading&hellip;" : "Chargement&hellip;",
"Awwhh… could not find the credential. Maybe it expired?" : "Awwhh… n'a pas pu trouver le justificatif d'identité. Peut-être a t-il expiré ?",
"Expires:" : "Expire le :",
- "Connection to server lost" : "Connexion au serveur perdue",
+ "Connection to server lost" : "La connexion au serveur a été perdue",
"Problem loading page, reloading in 5 seconds" : "Problème de chargement de la page, actualisation dans 5 secondes",
"Saving..." : "Enregistrement…",
"Dismiss" : "Ignorer",
diff --git a/l10n/gl.js b/l10n/gl.js
index 0d1fbcac..8e67fafd 100644
--- a/l10n/gl.js
+++ b/l10n/gl.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Contrasinais",
"Generating sharing keys ( %s / 2)" : "Xerando chaves de compartición ( %s / 2)",
"Incorrect vault password!" : "Contrasinal da bóveda incorrecta!",
"Passwords do not match" : "Os contrasinais non coinciden",
@@ -80,7 +79,7 @@ OC.L10N.register(
"Delete current icon" : "Eliminar a icona actual",
"Get icon from page" : "Obtér a icona da páxina",
"This may take a few seconds…" : "Isto pode levar uns segundos…",
- "There was an error fetching the icon!" : "Produciuse un erro ao obter a icona!",
+ "There was an error fetching the icon!" : "Produciuse un erro ao recuperar a icona!",
"Selected icon" : "Icona seleccionada",
"Field label" : "Campo etiqueta",
"Field value" : "Campo valor",
@@ -95,13 +94,13 @@ OC.L10N.register(
"Filename" : "Nome de ficheiro",
"Upload date" : "Data de envío",
"Size" : "Tamaño",
- "Upload or enter your OTP secret" : "Envíe ou Introduza o seu secreto OTP",
+ "Upload or enter your OTP secret" : "Envíe ou introduza o seu segredo OTP",
"Current OTP settings" : "Axustes OTP actuais",
"Issuer" : "Emisor",
- "Secret" : "Secreto",
+ "Secret" : "Segredo",
"Expiration date" : "Data de caducidade",
"No expiration date set" : "Non se definiu a data de caducidade",
- "Renew interval" : "Intervalo de renovación",
+ "Renew interval" : "Renovar o intervalo",
"Disabled" : "Desactivado",
"Day(s)" : "Día(s)",
"Week(s)" : "Semana(s)",
@@ -319,12 +318,13 @@ OC.L10N.register(
"You deleted %1$s" : "Vostede eliminou %1$s",
"%1$s has been recovered by %2$s" : "%1$s foi recuperado por %2$s",
"You recovered %1$s" : "Vostede restaurou %1$s",
- "%1$s has been permanently deleted by %2$s" : "%1$s foi eliminado permanentemente por %2$s",
- "You permanently deleted %1$s" : "Vostede eliminou permanentemente %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s foi eliminado de xeito permanente por %2$s",
+ "You permanently deleted %1$s" : "Vostede eliminou %1$s de xeito permanente",
"The password of %1$s has expired, renew it now." : "O contrasinal de %1$s caducou, renóvea agora.",
"%1$s has been shared with %2$s" : "%1$s foi compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Vostede recibiu unha solicitude para compartir %1$s dende %2$s",
"%s has been shared with a link" : "%s foi compartido cunha ligazón",
+ "Passwords" : "Contrasinais",
"Your credential \"%s\" expired, click here to update the credential." : "A sua credencial «%s» caducou, prema aquí para actualizar a credencial.",
"Remind me later" : "Lembrarmo más adiante",
"Ignore" : "Ignorar",
@@ -363,6 +363,6 @@ OC.L10N.register(
"Problem loading page, reloading in 5 seconds" : "Produciuse un problema ao cargar a páxina, volverá cargar en 5 segundos",
"Saving..." : "Gardando…",
"Dismiss" : "Rexeitar",
- "seconds ago" : "segundos atrás"
+ "seconds ago" : "hai uns segundos"
},
"nplurals=2; plural=(n != 1);");
diff --git a/l10n/gl.json b/l10n/gl.json
index 9790a2cf..fee6d834 100644
--- a/l10n/gl.json
+++ b/l10n/gl.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Contrasinais",
"Generating sharing keys ( %s / 2)" : "Xerando chaves de compartición ( %s / 2)",
"Incorrect vault password!" : "Contrasinal da bóveda incorrecta!",
"Passwords do not match" : "Os contrasinais non coinciden",
@@ -78,7 +77,7 @@
"Delete current icon" : "Eliminar a icona actual",
"Get icon from page" : "Obtér a icona da páxina",
"This may take a few seconds…" : "Isto pode levar uns segundos…",
- "There was an error fetching the icon!" : "Produciuse un erro ao obter a icona!",
+ "There was an error fetching the icon!" : "Produciuse un erro ao recuperar a icona!",
"Selected icon" : "Icona seleccionada",
"Field label" : "Campo etiqueta",
"Field value" : "Campo valor",
@@ -93,13 +92,13 @@
"Filename" : "Nome de ficheiro",
"Upload date" : "Data de envío",
"Size" : "Tamaño",
- "Upload or enter your OTP secret" : "Envíe ou Introduza o seu secreto OTP",
+ "Upload or enter your OTP secret" : "Envíe ou introduza o seu segredo OTP",
"Current OTP settings" : "Axustes OTP actuais",
"Issuer" : "Emisor",
- "Secret" : "Secreto",
+ "Secret" : "Segredo",
"Expiration date" : "Data de caducidade",
"No expiration date set" : "Non se definiu a data de caducidade",
- "Renew interval" : "Intervalo de renovación",
+ "Renew interval" : "Renovar o intervalo",
"Disabled" : "Desactivado",
"Day(s)" : "Día(s)",
"Week(s)" : "Semana(s)",
@@ -317,12 +316,13 @@
"You deleted %1$s" : "Vostede eliminou %1$s",
"%1$s has been recovered by %2$s" : "%1$s foi recuperado por %2$s",
"You recovered %1$s" : "Vostede restaurou %1$s",
- "%1$s has been permanently deleted by %2$s" : "%1$s foi eliminado permanentemente por %2$s",
- "You permanently deleted %1$s" : "Vostede eliminou permanentemente %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s foi eliminado de xeito permanente por %2$s",
+ "You permanently deleted %1$s" : "Vostede eliminou %1$s de xeito permanente",
"The password of %1$s has expired, renew it now." : "O contrasinal de %1$s caducou, renóvea agora.",
"%1$s has been shared with %2$s" : "%1$s foi compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Vostede recibiu unha solicitude para compartir %1$s dende %2$s",
"%s has been shared with a link" : "%s foi compartido cunha ligazón",
+ "Passwords" : "Contrasinais",
"Your credential \"%s\" expired, click here to update the credential." : "A sua credencial «%s» caducou, prema aquí para actualizar a credencial.",
"Remind me later" : "Lembrarmo más adiante",
"Ignore" : "Ignorar",
@@ -361,6 +361,6 @@
"Problem loading page, reloading in 5 seconds" : "Produciuse un problema ao cargar a páxina, volverá cargar en 5 segundos",
"Saving..." : "Gardando…",
"Dismiss" : "Rexeitar",
- "seconds ago" : "segundos atrás"
+ "seconds ago" : "hai uns segundos"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/l10n/he.js b/l10n/he.js
index 1036eef1..0b094bc7 100644
--- a/l10n/he.js
+++ b/l10n/he.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "ססמאות",
"Generating sharing keys ( %s / 2)" : "מפתחות השיתוף נוצרים ( %s / 2)",
"Incorrect vault password!" : "ססמת הכספת שגויה!",
"Passwords do not match" : "הססמאות אינן תואמות",
@@ -27,6 +26,10 @@ OC.L10N.register(
"Start import" : "התחלת ייבוא",
"Select CSV file" : "בחירת קובץ CSV",
"Skip first row" : "דילוג על השורה הראשונה",
+ "Assign the proper fields to each column." : "הקצאת השדות המתאימים לכל עמודה.",
+ "Example of imported credential" : "דוגמה של פרטי גישה שייובאו",
+ "Missing an importer? Try it with the generic CSV importer." : "חסר לך מייבא? כדאי לנסות עם מייבא ה־CSV הכללי.",
+ "Go back to importers." : "לחזור למייבאים.",
"Revision deleted" : "מהדורה נמחקה",
"Revision restored" : "מהדורה שוחזרה",
"Save in Passman" : "שמירה ב־Passman",
@@ -38,16 +41,20 @@ OC.L10N.register(
"Export credentials" : "ייצוא פרטי גישה",
"Sharing" : "שיתוף",
"Are you sure you want to leave? This will destroy all your credentials" : "לצאת? פעולה זו תהרוס את כל פרטי הגישה שלך",
+ "Old password field incorrect!" : "שדה הססמה הישנה שגוי!",
"New password does not match!" : "הססמה החדשה לא תואמת!",
"Please log in with your new vault password" : "נא להיכנס עם ססמת הכספת החדשה שלך",
"Share with users and groups" : "שיתוף עם משתמשים וקבוצות",
"Share link" : "קישור לשיתוף",
"Are you sure you want to leave? This will corrupt this credential" : "לצאת? פעולה זו תשחית את פרטי הגישה",
+ "Credential unshared" : "פרטי הגישה לא שותפו",
+ "Credential shared" : "פרטי הגישה שותפו",
"Saved!" : "נשמר!",
"Poor" : "עלובה",
"Weak" : "חלשה",
"Good" : "טובה",
"Strong" : "חזקה",
+ "Toggle visibility" : "הפעלת מצב חשיפה",
"Copy to clipboard" : "העתקה ללוח הגזירים",
"Copied to clipboard!" : "הועתקה ללוח הגזירים!",
"Generate password" : "יצירת ססמה",
@@ -57,7 +64,13 @@ OC.L10N.register(
"Repeat password" : "חזרה על הססמה",
"Add tag" : "הוספת תגית",
"Pick an icon" : "נא לבחור סמל",
+ "Search icons" : "חיפוש סמלים",
+ "Upload a custom icon:" : "העלאת סמל מותאם אישית:",
"Use this icon" : "להשתמש בסמל זה",
+ "Delete current icon" : "מחיקת הסמל הנוכחי",
+ "Get icon from page" : "משיכת סמל מהעמוד",
+ "This may take a few seconds…" : "פעולה זו עשויה לארוך מספר שניות…",
+ "There was an error fetching the icon!" : "אירעה שגיאה במשיכת הסמל!",
"Selected icon" : "סמל שנבחר",
"Field label" : "תווית שדה",
"Field value" : "ערך שדה",
@@ -72,10 +85,15 @@ OC.L10N.register(
"Filename" : "שם קובץ",
"Upload date" : "תאריך העלאה",
"Size" : "גודל",
+ "Issuer" : "מנפיק",
"Secret" : "סוד",
"Expiration date" : "תאריך תפוגה",
"No expiration date set" : "לא הוגדר תאריך תפוגה",
"Disabled" : "מושבת",
+ "Day(s)" : "ימים",
+ "Week(s)" : "שבועות",
+ "Month(s)" : "חודשים",
+ "Year(s)" : "שנים",
"Password generation settings" : "הגדרות יצירת ססמאות",
"Password length" : "אורך ססמה",
"Minimum amount of digits" : "כמות התווים המזערית",
@@ -101,6 +119,8 @@ OC.L10N.register(
"About Passman" : "על אודות Passman",
"Version" : "גרסה",
"Donate to support development" : "ניתן לתרום כדי לתרום בפיתוח",
+ "Bookmarklet" : "יישומון סימנייה",
+ "Save your passwords with one click." : "שמירת הססמאות שלך בלחיצה בודדת.",
"Delete vault" : "מחיקת כספת",
"Vault password" : "ססמה לכספ",
"This process is irreversible" : "תהליך זה אינו הפיך",
@@ -122,11 +142,13 @@ OC.L10N.register(
"Action" : "פעולה",
"Search users…" : "חיפוש משתמשים…",
"Missing users? Only users that have vaults are shown." : "חסרים משתמשים? רק משתמשים שיש להם כספת מופיעים.",
+ "Uploading" : "מתבצעת העלאה",
"User" : "משתמש",
"Read" : "קריאה",
"Write" : "כתיבה",
"Files" : "קבצים",
"Revisions" : "מהדורות",
+ "Pending" : "בהמתנה",
"Enable link sharing" : "הפעלת שיתוף קישורים",
"Share until date" : "לשתף עד לתאריך",
"Show files" : "הצגת קבצים",
@@ -146,8 +168,12 @@ OC.L10N.register(
"Dictionary name" : "שם המילון",
"Rank" : "דירוג",
"Guesses" : "ניחושים",
+ "Base guesses" : "ניחושים בסיסיים",
+ "Uppercase variations" : "הגוונים על אותיות גדולות",
+ "l33t-variations" : "הגוונים על l33t",
"Showing revisions of" : "הצגת מהדורות של",
"Revision of" : "מהדורה של",
+ "by" : "מאת",
"No revisions found." : "לא נמצאו מהדורות.",
"Label" : "תווית",
"Restore revision" : "שחזור מהדורה",
@@ -161,10 +187,12 @@ OC.L10N.register(
"Unshare" : "ביטול שיתוף",
"Account" : "חשבון",
"Password" : "ססמה",
+ "OTP" : "ססמה חד פעמית (OTP)",
"E-mail" : "דוא״ל",
"URL" : "כתובת",
"Notes" : "הערות",
"Expiry time" : "מועד תפוגה",
+ "Created" : "מועד היצירה",
"Edit" : "עריכה",
"Delete" : "מחיקה",
"Share" : "שיתוף",
@@ -177,12 +205,20 @@ OC.L10N.register(
"Date" : "תאריך",
"Accept" : "קבלה",
"Decline" : "דחייה",
+ "You don't have good credentials" : "אין לך פרטי כניסה טובים",
+ "You don't have medium credentials" : "אין לך פרטי גישה בינוניים",
+ "You don't have bad credentials" : "אין לך פרטי גישה גרועים",
+ "You don't have expired credentials" : "אין לך פרטי גישה שתוקפם פג",
+ "You don't have deleted credentials" : "אין לך פרטי גישה שנמחקו",
+ "There are no credentials with your selected tags" : "אין פרטי גישה עם התגיות שבחרת",
+ "There are no credentials matching" : "אין פרטי גישה תואמים",
"Last accessed" : "גישה אחרונה",
"Never" : "מעולם לא",
"No vaults found, why not create one?" : "לא נמצאו כספות, למה שלא ליצור אחת?",
"Password strength must be at least: {{strength}}" : "חוזק הססמה חייב להיות לפחות: {{strength}}",
"Please give your new vault a name." : "נא להעניק שם לכספת החדשה שלך.",
"Repeat vault password" : "חזרה על ססמת הכספת",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "למפתחות השיתוף שלך יהיה חוזק של 1024 סיביות, הגדרה שניתן לשנות ב„הגדרות” בהמשך.",
"Create vault" : "יצירת כספת",
"Go back to vaults" : "חזרה לכספות",
"Please input the password for" : "נא להכניס את הססמה עבור",
@@ -190,20 +226,62 @@ OC.L10N.register(
"Log into this vault automatically." : "כניסה לכספת הזאת אוטומטית.",
"Log out of this vault automatically after: " : "יציאה אוטומטית מהכספת הזאת לאחר:",
"Decrypt vault" : "פענוח כספת",
+ "Seems you lost the vault password and you're unable to log in." : "נראה כי איבדת את המפתח לכספת ואין לך אפשרות להיכנס.",
"If you want this vault to be removed you can request that here." : "אם ברצונך להסיר את הכספת הזאת ניתן לבקש זאת כאן.",
+ "An admin then accepts or declines the request" : "מנהל מקבל או דוחה את הבקשה",
+ "After an admin destroys this vault, all credentials in it will be lost" : "לאחר שההנהלה משמידה את הכספת הזאת, כל פרטי הגישה יאבדו",
"Reason for requesting deletion (optional):" : "סיבת בקשת המחיקה (רשות):",
"Request vault destruction" : "בקשת השמדת כספת",
+ "Yes, request an admin to destroy this vault" : "כן, לבקש מההנהלה להשמיד את הכספת הזאת.",
"Cancel destruction request" : "ביטול בקשת השמדה",
"Vault destruction requested" : "התקבלה בקשה להשמדת כספת",
"Request removed" : "בקשה הוסרה",
+ "Destruction request pending" : "בקשת השמדה ממתינה",
+ "Warning! Adding credentials over HTTP is insecure!" : "אזהרה! הוספת פרטי גישה דרך HTTP אינה מאובטחת!",
+ "Logged into {{vault_name}}" : "נכנסת אל {{vault_name}}",
"Change vault" : "החלפת כספת",
+ "Deleted credentials" : "פרטי גישה שנמחקו",
"Logout" : "יציאה",
"Donate" : "תרומה",
+ "Show All" : "להציג הכול",
+ "Tags" : "תגיות",
+ "Search Tags" : "חיפוש תגיות",
+ "Good Strength" : "חוזק טוב",
+ "Medium Strength" : "חוזק בינוני",
+ "Bad Strength" : "חוזק גרוע",
+ "Expired" : "פג",
+ "Filter Tags" : "סינון תגיות",
+ "Simple Navigation" : "ניווט פשוט",
+ "Someone has shared a credential with you." : "מישהו שיתף אתך פרטי גישה.",
"Click here to request it" : "יש ללחוץ כאן כדי לבקש זאת",
"Loading…" : "בטעינה…",
+ "Awwhh… credential not found. Maybe it expired" : "אוףףףףף… לא נמצאו פרטי גישה. אולי תוקפם פג",
+ "email" : "דוא״ל",
+ "Description" : "תיאור",
+ "Url" : "כתובת",
+ "Custom Search:" : "חיפוש מותאם אישית:",
+ "Revert to defaults" : "החזרה לבררות מחדל",
"Error while saving field" : "אירעה שגיאה במהלך שמירת השדה",
+ "A Passman item has been created, modified or deleted" : "פריט ב־Passman נוצר, נערך או נמחק",
+ "A Passman item has expired" : "תוקפו של פריט ב־Passman פג",
+ "A Passman item has been shared" : "פריט ב־Passman שותף",
+ "A Passman item has been renamed" : "שמו של פריט ב־Passman נערך",
+ "You created %1$s" : "יצרת %1$s",
+ "You updated %1$s" : "עדכנת את %1$s",
+ "%3$s has renamed %1$s to %2$s" : "השם של %1$s השתנה לכדי %2$s על ידי %3$s",
+ "You renamed %1$s to %2$s" : "שינית את השם של %1$s לכדי %2$s",
+ "You deleted %1$s" : "מחקת %1$s",
+ "You recovered %1$s" : "שחזרת את %1$s",
+ "You permanently deleted %1$s" : "מחקת את %1$s לצמיתות",
+ "The password of %1$s has expired, renew it now." : "תוקף הססמה עבור %1$s פג, יש לחדש אותה כעת.",
+ "You received a share request for %1$s from %2$s" : "קיבלת בקשת שיתוף עבור %1$s מאת %2$s",
+ "Passwords" : "ססמאות",
"Remind me later" : "להזכיר לי מאוחר יותר",
"Ignore" : "להתעלם",
+ "Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman הוא מנהל ססמאות רחב ידיים.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman הוא מנהל ססמאות רחב ידיים.\nתכונות:\n- כספות\n- מפתח הכספת אף פעם לא נשלח לשרת\n- הרחבה לדפדפן לצורך גישה פשוטה לססמאות\n- יישומון Android לגישה פשוטה מכל מקום\n- פרטי הגישה בצד הלקוח מוצפנים ב־AES של 256 סיביות\n- פרטי הגישה בצד השרת מוצפנים ב־AES של 256 סיביות\n- אפשרות להוסיף שדות מותאמים אישית לפרטי גישה\n- מחולל OTP‏ (One Time Password - ססמה חד פעמית) מובנה\n- מנתח ססמאות\n- שיתוף ססמאות פנימית ודרך קישורים באופן מאובטח.\n- ייבוא ממגוון מנהלי ססמאות (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nלהדגמה של היישומון הזה [https://demo.passman.cc](https://demo.passman.cc)",
+ "Unable to get version info" : "לא ניתן לקבל את פרטי הגרסה",
"Passman Settings" : "הגדרות Passman",
"GitHub version:" : "גרסת GitHub:",
"A newer version of Passman is available" : "קיימת גרסה חדשה של Passman",
@@ -226,6 +304,8 @@ OC.L10N.register(
"Reason" : "סיבה",
"Click here to request\n\t\t\t\t\tit" : "נא ללחוץ כאן כדי\n\t\t\tלבקש זאת",
"Loading&hellip;" : "בטעינה&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "אוףףףף… לא ניתן למצוא את פרטי הגישה. אולי תוקפם פג?",
+ "Expires:" : "תפוגה:",
"Connection to server lost" : "החיבור לשרת אבד",
"Problem loading page, reloading in 5 seconds" : "אירעה שגיאה בעת טעינת העמוד, יתרענן בעוד 5 שניות",
"Saving..." : "מתבצעת שמירה…",
diff --git a/l10n/he.json b/l10n/he.json
index f24a4154..2eb64612 100644
--- a/l10n/he.json
+++ b/l10n/he.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "ססמאות",
"Generating sharing keys ( %s / 2)" : "מפתחות השיתוף נוצרים ( %s / 2)",
"Incorrect vault password!" : "ססמת הכספת שגויה!",
"Passwords do not match" : "הססמאות אינן תואמות",
@@ -25,6 +24,10 @@
"Start import" : "התחלת ייבוא",
"Select CSV file" : "בחירת קובץ CSV",
"Skip first row" : "דילוג על השורה הראשונה",
+ "Assign the proper fields to each column." : "הקצאת השדות המתאימים לכל עמודה.",
+ "Example of imported credential" : "דוגמה של פרטי גישה שייובאו",
+ "Missing an importer? Try it with the generic CSV importer." : "חסר לך מייבא? כדאי לנסות עם מייבא ה־CSV הכללי.",
+ "Go back to importers." : "לחזור למייבאים.",
"Revision deleted" : "מהדורה נמחקה",
"Revision restored" : "מהדורה שוחזרה",
"Save in Passman" : "שמירה ב־Passman",
@@ -36,16 +39,20 @@
"Export credentials" : "ייצוא פרטי גישה",
"Sharing" : "שיתוף",
"Are you sure you want to leave? This will destroy all your credentials" : "לצאת? פעולה זו תהרוס את כל פרטי הגישה שלך",
+ "Old password field incorrect!" : "שדה הססמה הישנה שגוי!",
"New password does not match!" : "הססמה החדשה לא תואמת!",
"Please log in with your new vault password" : "נא להיכנס עם ססמת הכספת החדשה שלך",
"Share with users and groups" : "שיתוף עם משתמשים וקבוצות",
"Share link" : "קישור לשיתוף",
"Are you sure you want to leave? This will corrupt this credential" : "לצאת? פעולה זו תשחית את פרטי הגישה",
+ "Credential unshared" : "פרטי הגישה לא שותפו",
+ "Credential shared" : "פרטי הגישה שותפו",
"Saved!" : "נשמר!",
"Poor" : "עלובה",
"Weak" : "חלשה",
"Good" : "טובה",
"Strong" : "חזקה",
+ "Toggle visibility" : "הפעלת מצב חשיפה",
"Copy to clipboard" : "העתקה ללוח הגזירים",
"Copied to clipboard!" : "הועתקה ללוח הגזירים!",
"Generate password" : "יצירת ססמה",
@@ -55,7 +62,13 @@
"Repeat password" : "חזרה על הססמה",
"Add tag" : "הוספת תגית",
"Pick an icon" : "נא לבחור סמל",
+ "Search icons" : "חיפוש סמלים",
+ "Upload a custom icon:" : "העלאת סמל מותאם אישית:",
"Use this icon" : "להשתמש בסמל זה",
+ "Delete current icon" : "מחיקת הסמל הנוכחי",
+ "Get icon from page" : "משיכת סמל מהעמוד",
+ "This may take a few seconds…" : "פעולה זו עשויה לארוך מספר שניות…",
+ "There was an error fetching the icon!" : "אירעה שגיאה במשיכת הסמל!",
"Selected icon" : "סמל שנבחר",
"Field label" : "תווית שדה",
"Field value" : "ערך שדה",
@@ -70,10 +83,15 @@
"Filename" : "שם קובץ",
"Upload date" : "תאריך העלאה",
"Size" : "גודל",
+ "Issuer" : "מנפיק",
"Secret" : "סוד",
"Expiration date" : "תאריך תפוגה",
"No expiration date set" : "לא הוגדר תאריך תפוגה",
"Disabled" : "מושבת",
+ "Day(s)" : "ימים",
+ "Week(s)" : "שבועות",
+ "Month(s)" : "חודשים",
+ "Year(s)" : "שנים",
"Password generation settings" : "הגדרות יצירת ססמאות",
"Password length" : "אורך ססמה",
"Minimum amount of digits" : "כמות התווים המזערית",
@@ -99,6 +117,8 @@
"About Passman" : "על אודות Passman",
"Version" : "גרסה",
"Donate to support development" : "ניתן לתרום כדי לתרום בפיתוח",
+ "Bookmarklet" : "יישומון סימנייה",
+ "Save your passwords with one click." : "שמירת הססמאות שלך בלחיצה בודדת.",
"Delete vault" : "מחיקת כספת",
"Vault password" : "ססמה לכספ",
"This process is irreversible" : "תהליך זה אינו הפיך",
@@ -120,11 +140,13 @@
"Action" : "פעולה",
"Search users…" : "חיפוש משתמשים…",
"Missing users? Only users that have vaults are shown." : "חסרים משתמשים? רק משתמשים שיש להם כספת מופיעים.",
+ "Uploading" : "מתבצעת העלאה",
"User" : "משתמש",
"Read" : "קריאה",
"Write" : "כתיבה",
"Files" : "קבצים",
"Revisions" : "מהדורות",
+ "Pending" : "בהמתנה",
"Enable link sharing" : "הפעלת שיתוף קישורים",
"Share until date" : "לשתף עד לתאריך",
"Show files" : "הצגת קבצים",
@@ -144,8 +166,12 @@
"Dictionary name" : "שם המילון",
"Rank" : "דירוג",
"Guesses" : "ניחושים",
+ "Base guesses" : "ניחושים בסיסיים",
+ "Uppercase variations" : "הגוונים על אותיות גדולות",
+ "l33t-variations" : "הגוונים על l33t",
"Showing revisions of" : "הצגת מהדורות של",
"Revision of" : "מהדורה של",
+ "by" : "מאת",
"No revisions found." : "לא נמצאו מהדורות.",
"Label" : "תווית",
"Restore revision" : "שחזור מהדורה",
@@ -159,10 +185,12 @@
"Unshare" : "ביטול שיתוף",
"Account" : "חשבון",
"Password" : "ססמה",
+ "OTP" : "ססמה חד פעמית (OTP)",
"E-mail" : "דוא״ל",
"URL" : "כתובת",
"Notes" : "הערות",
"Expiry time" : "מועד תפוגה",
+ "Created" : "מועד היצירה",
"Edit" : "עריכה",
"Delete" : "מחיקה",
"Share" : "שיתוף",
@@ -175,12 +203,20 @@
"Date" : "תאריך",
"Accept" : "קבלה",
"Decline" : "דחייה",
+ "You don't have good credentials" : "אין לך פרטי כניסה טובים",
+ "You don't have medium credentials" : "אין לך פרטי גישה בינוניים",
+ "You don't have bad credentials" : "אין לך פרטי גישה גרועים",
+ "You don't have expired credentials" : "אין לך פרטי גישה שתוקפם פג",
+ "You don't have deleted credentials" : "אין לך פרטי גישה שנמחקו",
+ "There are no credentials with your selected tags" : "אין פרטי גישה עם התגיות שבחרת",
+ "There are no credentials matching" : "אין פרטי גישה תואמים",
"Last accessed" : "גישה אחרונה",
"Never" : "מעולם לא",
"No vaults found, why not create one?" : "לא נמצאו כספות, למה שלא ליצור אחת?",
"Password strength must be at least: {{strength}}" : "חוזק הססמה חייב להיות לפחות: {{strength}}",
"Please give your new vault a name." : "נא להעניק שם לכספת החדשה שלך.",
"Repeat vault password" : "חזרה על ססמת הכספת",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "למפתחות השיתוף שלך יהיה חוזק של 1024 סיביות, הגדרה שניתן לשנות ב„הגדרות” בהמשך.",
"Create vault" : "יצירת כספת",
"Go back to vaults" : "חזרה לכספות",
"Please input the password for" : "נא להכניס את הססמה עבור",
@@ -188,20 +224,62 @@
"Log into this vault automatically." : "כניסה לכספת הזאת אוטומטית.",
"Log out of this vault automatically after: " : "יציאה אוטומטית מהכספת הזאת לאחר:",
"Decrypt vault" : "פענוח כספת",
+ "Seems you lost the vault password and you're unable to log in." : "נראה כי איבדת את המפתח לכספת ואין לך אפשרות להיכנס.",
"If you want this vault to be removed you can request that here." : "אם ברצונך להסיר את הכספת הזאת ניתן לבקש זאת כאן.",
+ "An admin then accepts or declines the request" : "מנהל מקבל או דוחה את הבקשה",
+ "After an admin destroys this vault, all credentials in it will be lost" : "לאחר שההנהלה משמידה את הכספת הזאת, כל פרטי הגישה יאבדו",
"Reason for requesting deletion (optional):" : "סיבת בקשת המחיקה (רשות):",
"Request vault destruction" : "בקשת השמדת כספת",
+ "Yes, request an admin to destroy this vault" : "כן, לבקש מההנהלה להשמיד את הכספת הזאת.",
"Cancel destruction request" : "ביטול בקשת השמדה",
"Vault destruction requested" : "התקבלה בקשה להשמדת כספת",
"Request removed" : "בקשה הוסרה",
+ "Destruction request pending" : "בקשת השמדה ממתינה",
+ "Warning! Adding credentials over HTTP is insecure!" : "אזהרה! הוספת פרטי גישה דרך HTTP אינה מאובטחת!",
+ "Logged into {{vault_name}}" : "נכנסת אל {{vault_name}}",
"Change vault" : "החלפת כספת",
+ "Deleted credentials" : "פרטי גישה שנמחקו",
"Logout" : "יציאה",
"Donate" : "תרומה",
+ "Show All" : "להציג הכול",
+ "Tags" : "תגיות",
+ "Search Tags" : "חיפוש תגיות",
+ "Good Strength" : "חוזק טוב",
+ "Medium Strength" : "חוזק בינוני",
+ "Bad Strength" : "חוזק גרוע",
+ "Expired" : "פג",
+ "Filter Tags" : "סינון תגיות",
+ "Simple Navigation" : "ניווט פשוט",
+ "Someone has shared a credential with you." : "מישהו שיתף אתך פרטי גישה.",
"Click here to request it" : "יש ללחוץ כאן כדי לבקש זאת",
"Loading…" : "בטעינה…",
+ "Awwhh… credential not found. Maybe it expired" : "אוףףףףף… לא נמצאו פרטי גישה. אולי תוקפם פג",
+ "email" : "דוא״ל",
+ "Description" : "תיאור",
+ "Url" : "כתובת",
+ "Custom Search:" : "חיפוש מותאם אישית:",
+ "Revert to defaults" : "החזרה לבררות מחדל",
"Error while saving field" : "אירעה שגיאה במהלך שמירת השדה",
+ "A Passman item has been created, modified or deleted" : "פריט ב־Passman נוצר, נערך או נמחק",
+ "A Passman item has expired" : "תוקפו של פריט ב־Passman פג",
+ "A Passman item has been shared" : "פריט ב־Passman שותף",
+ "A Passman item has been renamed" : "שמו של פריט ב־Passman נערך",
+ "You created %1$s" : "יצרת %1$s",
+ "You updated %1$s" : "עדכנת את %1$s",
+ "%3$s has renamed %1$s to %2$s" : "השם של %1$s השתנה לכדי %2$s על ידי %3$s",
+ "You renamed %1$s to %2$s" : "שינית את השם של %1$s לכדי %2$s",
+ "You deleted %1$s" : "מחקת %1$s",
+ "You recovered %1$s" : "שחזרת את %1$s",
+ "You permanently deleted %1$s" : "מחקת את %1$s לצמיתות",
+ "The password of %1$s has expired, renew it now." : "תוקף הססמה עבור %1$s פג, יש לחדש אותה כעת.",
+ "You received a share request for %1$s from %2$s" : "קיבלת בקשת שיתוף עבור %1$s מאת %2$s",
+ "Passwords" : "ססמאות",
"Remind me later" : "להזכיר לי מאוחר יותר",
"Ignore" : "להתעלם",
+ "Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman הוא מנהל ססמאות רחב ידיים.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman הוא מנהל ססמאות רחב ידיים.\nתכונות:\n- כספות\n- מפתח הכספת אף פעם לא נשלח לשרת\n- הרחבה לדפדפן לצורך גישה פשוטה לססמאות\n- יישומון Android לגישה פשוטה מכל מקום\n- פרטי הגישה בצד הלקוח מוצפנים ב־AES של 256 סיביות\n- פרטי הגישה בצד השרת מוצפנים ב־AES של 256 סיביות\n- אפשרות להוסיף שדות מותאמים אישית לפרטי גישה\n- מחולל OTP‏ (One Time Password - ססמה חד פעמית) מובנה\n- מנתח ססמאות\n- שיתוף ססמאות פנימית ודרך קישורים באופן מאובטח.\n- ייבוא ממגוון מנהלי ססמאות (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nלהדגמה של היישומון הזה [https://demo.passman.cc](https://demo.passman.cc)",
+ "Unable to get version info" : "לא ניתן לקבל את פרטי הגרסה",
"Passman Settings" : "הגדרות Passman",
"GitHub version:" : "גרסת GitHub:",
"A newer version of Passman is available" : "קיימת גרסה חדשה של Passman",
@@ -224,6 +302,8 @@
"Reason" : "סיבה",
"Click here to request\n\t\t\t\t\tit" : "נא ללחוץ כאן כדי\n\t\t\tלבקש זאת",
"Loading&hellip;" : "בטעינה&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "אוףףףף… לא ניתן למצוא את פרטי הגישה. אולי תוקפם פג?",
+ "Expires:" : "תפוגה:",
"Connection to server lost" : "החיבור לשרת אבד",
"Problem loading page, reloading in 5 seconds" : "אירעה שגיאה בעת טעינת העמוד, יתרענן בעוד 5 שניות",
"Saving..." : "מתבצעת שמירה…",
diff --git a/l10n/hr.js b/l10n/hr.js
index 276aa3c6..8d4eb6c9 100644
--- a/l10n/hr.js
+++ b/l10n/hr.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Zaporke",
"Generating sharing keys ( %s / 2)" : "Generiranje ključeva za dijeljenje (%s / 2)",
"Incorrect vault password!" : "Netočna zaporka trezora!",
"Passwords do not match" : "Zaporke se ne podudaraju",
@@ -325,6 +324,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s je podijeljeno s %2$s",
"You received a share request for %1$s from %2$s" : "Primili ste zahtjev za dijeljenje za %1$s od %2$s",
"%s has been shared with a link" : "%s je podijeljeno putem poveznice",
+ "Passwords" : "Zaporke",
"Your credential \"%s\" expired, click here to update the credential." : "Vaša je vjerodajnica „%s” istekla, kliknite ovdje kako biste ažurirali vjerodajnicu.",
"Remind me later" : "Podsjeti me kasnije",
"Ignore" : "Zanemari",
diff --git a/l10n/hr.json b/l10n/hr.json
index 47e94f9c..9c39dc13 100644
--- a/l10n/hr.json
+++ b/l10n/hr.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Zaporke",
"Generating sharing keys ( %s / 2)" : "Generiranje ključeva za dijeljenje (%s / 2)",
"Incorrect vault password!" : "Netočna zaporka trezora!",
"Passwords do not match" : "Zaporke se ne podudaraju",
@@ -323,6 +322,7 @@
"%1$s has been shared with %2$s" : "%1$s je podijeljeno s %2$s",
"You received a share request for %1$s from %2$s" : "Primili ste zahtjev za dijeljenje za %1$s od %2$s",
"%s has been shared with a link" : "%s je podijeljeno putem poveznice",
+ "Passwords" : "Zaporke",
"Your credential \"%s\" expired, click here to update the credential." : "Vaša je vjerodajnica „%s” istekla, kliknite ovdje kako biste ažurirali vjerodajnicu.",
"Remind me later" : "Podsjeti me kasnije",
"Ignore" : "Zanemari",
diff --git a/l10n/hu.js b/l10n/hu.js
index acd7d2b2..d80019ac 100644
--- a/l10n/hu.js
+++ b/l10n/hu.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Jelszavak",
"Generating sharing keys ( %s / 2)" : "Megosztási kulcsok generálása ( %s / 2)",
"Incorrect vault password!" : "Érvénytelen széf jelszó!",
"Passwords do not match" : "A jelszavak nem egyeznek",
@@ -36,7 +35,7 @@ OC.L10N.register(
"The first 5 lines of the CSV are shown." : "A CSV első 5 sorát mutatjuk.",
"Assign the proper fields to each column." : "Rendeld a megfelelő mezőket az oszlopokhoz.",
"Example of imported credential" : "Példa az importált hitelesítőadatokból",
- "Missing an importer? Try it with the generic CSV importer." : "Hiányzik egy importer? Próbáld ki az általános CSV betöltőt.",
+ "Missing an importer? Try it with the generic CSV importer." : "Hiányzik egy importáló? Próbálja ki az általános CSV importálót.",
"Go back to importers." : "Vissza az importálókhoz.",
"Revision deleted" : "Változat törölve",
"Revision restored" : "Változat visszaállítva",
@@ -191,7 +190,7 @@ OC.L10N.register(
"l33t-variations" : "l33t variációk",
"Showing revisions of" : "A következő felülvizsgálatainak mutatása:",
"Revision of" : "Felülvizsgálata ennek",
- "by" : "által",
+ "by" : "szerzők:",
"No revisions found." : "Nincsenek felülvizsgálatok.",
"Label" : "Címke",
"Restore revision" : "Felülvizsgálat visszaállítása",
@@ -261,10 +260,14 @@ OC.L10N.register(
"Deleted credentials" : "Hitelesítőadatok törlése",
"Logout" : "Kijelentkezés",
"Donate" : "Adományozás",
+ "Tags" : "Címkék",
+ "Expired" : "Lejárt",
"Someone has shared a credential with you." : "Valaki hitelesítőadatokat osztott meg veled.",
"Click here to request it" : "Kattints ide a kérvényezéshez",
"Loading…" : "Betöltés…",
"Awwhh… credential not found. Maybe it expired" : "Awwhh… nincs hitelesítőadat. Talán lejárt",
+ "email" : "e-mail",
+ "Description" : "Leírás",
"Error while saving field" : "Hiba a mező mentésekor",
"A Passman item has been created, modified or deleted" : "Egy Jelszókezelő elem létrehozva, módosítva vagy törölve",
"A Passman item has expired" : "Egy Jelszókezelő elem lejárt",
@@ -288,6 +291,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s megosztva vele: %2$s",
"You received a share request for %1$s from %2$s" : "Megosztási kérést érkezett ehhez: %1$s tőle: %2$s",
"%s has been shared with a link" : "%s megosztva hivatkozással",
+ "Passwords" : "Jelszavak",
"Your credential \"%s\" expired, click here to update the credential." : "A hitelesítésed lejárt, kattints ide a frissítéshez: \"%s\"",
"Remind me later" : "Emlékeztess később",
"Ignore" : "Mellőz",
diff --git a/l10n/hu.json b/l10n/hu.json
index 0e85060c..f0c1c633 100644
--- a/l10n/hu.json
+++ b/l10n/hu.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Jelszavak",
"Generating sharing keys ( %s / 2)" : "Megosztási kulcsok generálása ( %s / 2)",
"Incorrect vault password!" : "Érvénytelen széf jelszó!",
"Passwords do not match" : "A jelszavak nem egyeznek",
@@ -34,7 +33,7 @@
"The first 5 lines of the CSV are shown." : "A CSV első 5 sorát mutatjuk.",
"Assign the proper fields to each column." : "Rendeld a megfelelő mezőket az oszlopokhoz.",
"Example of imported credential" : "Példa az importált hitelesítőadatokból",
- "Missing an importer? Try it with the generic CSV importer." : "Hiányzik egy importer? Próbáld ki az általános CSV betöltőt.",
+ "Missing an importer? Try it with the generic CSV importer." : "Hiányzik egy importáló? Próbálja ki az általános CSV importálót.",
"Go back to importers." : "Vissza az importálókhoz.",
"Revision deleted" : "Változat törölve",
"Revision restored" : "Változat visszaállítva",
@@ -189,7 +188,7 @@
"l33t-variations" : "l33t variációk",
"Showing revisions of" : "A következő felülvizsgálatainak mutatása:",
"Revision of" : "Felülvizsgálata ennek",
- "by" : "által",
+ "by" : "szerzők:",
"No revisions found." : "Nincsenek felülvizsgálatok.",
"Label" : "Címke",
"Restore revision" : "Felülvizsgálat visszaállítása",
@@ -259,10 +258,14 @@
"Deleted credentials" : "Hitelesítőadatok törlése",
"Logout" : "Kijelentkezés",
"Donate" : "Adományozás",
+ "Tags" : "Címkék",
+ "Expired" : "Lejárt",
"Someone has shared a credential with you." : "Valaki hitelesítőadatokat osztott meg veled.",
"Click here to request it" : "Kattints ide a kérvényezéshez",
"Loading…" : "Betöltés…",
"Awwhh… credential not found. Maybe it expired" : "Awwhh… nincs hitelesítőadat. Talán lejárt",
+ "email" : "e-mail",
+ "Description" : "Leírás",
"Error while saving field" : "Hiba a mező mentésekor",
"A Passman item has been created, modified or deleted" : "Egy Jelszókezelő elem létrehozva, módosítva vagy törölve",
"A Passman item has expired" : "Egy Jelszókezelő elem lejárt",
@@ -286,6 +289,7 @@
"%1$s has been shared with %2$s" : "%1$s megosztva vele: %2$s",
"You received a share request for %1$s from %2$s" : "Megosztási kérést érkezett ehhez: %1$s tőle: %2$s",
"%s has been shared with a link" : "%s megosztva hivatkozással",
+ "Passwords" : "Jelszavak",
"Your credential \"%s\" expired, click here to update the credential." : "A hitelesítésed lejárt, kattints ide a frissítéshez: \"%s\"",
"Remind me later" : "Emlékeztess később",
"Ignore" : "Mellőz",
diff --git a/l10n/hy.js b/l10n/hy.js
new file mode 100644
index 00000000..6302e014
--- /dev/null
+++ b/l10n/hy.js
@@ -0,0 +1,38 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "Ընդհանուր",
+ "Done" : "Done",
+ "Share link" : "Կիսվել հղմամբ",
+ "Username" : "Օգտանուն",
+ "File" : "File",
+ "Add" : "Ավելացնել",
+ "Type" : "Տիպ",
+ "Size" : "Չափս",
+ "Expiration date" : "Վավերականության ժամկետ",
+ "Export" : "Արտահանում",
+ "Version" : "տարբերակ",
+ "Import" : "Ներմուծում",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "Ֆայլեր",
+ "Details" : "Մանրամասներ",
+ "Save" : "Պահպանել",
+ "Cancel" : "ընդհատել",
+ "Settings" : "կարգավորումներ",
+ "Unshare" : "Չկիսվել",
+ "Password" : "Գաղտնաբառ",
+ "URL" : "URL",
+ "Notes" : "Notes",
+ "Edit" : "մշակել",
+ "Delete" : "հեռացնել",
+ "Share" : "Կիսվել",
+ "Date" : "Date",
+ "Never" : "Երբեք",
+ "Description" : "Նկարագրություն",
+ "You created %1$s" : "Դու ստեղծեցիր %1$s",
+ "You deleted %1$s" : "Դու ջնջեցիր %1$s",
+ "Saving..." : "Պահում եմ...",
+ "seconds ago" : "վրկ. առաջ"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/hy.json b/l10n/hy.json
new file mode 100644
index 00000000..33c3573b
--- /dev/null
+++ b/l10n/hy.json
@@ -0,0 +1,36 @@
+{ "translations": {
+ "General" : "Ընդհանուր",
+ "Done" : "Done",
+ "Share link" : "Կիսվել հղմամբ",
+ "Username" : "Օգտանուն",
+ "File" : "File",
+ "Add" : "Ավելացնել",
+ "Type" : "Տիպ",
+ "Size" : "Չափս",
+ "Expiration date" : "Վավերականության ժամկետ",
+ "Export" : "Արտահանում",
+ "Version" : "տարբերակ",
+ "Import" : "Ներմուծում",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "Ֆայլեր",
+ "Details" : "Մանրամասներ",
+ "Save" : "Պահպանել",
+ "Cancel" : "ընդհատել",
+ "Settings" : "կարգավորումներ",
+ "Unshare" : "Չկիսվել",
+ "Password" : "Գաղտնաբառ",
+ "URL" : "URL",
+ "Notes" : "Notes",
+ "Edit" : "մշակել",
+ "Delete" : "հեռացնել",
+ "Share" : "Կիսվել",
+ "Date" : "Date",
+ "Never" : "Երբեք",
+ "Description" : "Նկարագրություն",
+ "You created %1$s" : "Դու ստեղծեցիր %1$s",
+ "You deleted %1$s" : "Դու ջնջեցիր %1$s",
+ "Saving..." : "Պահում եմ...",
+ "seconds ago" : "վրկ. առաջ"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/ia.js b/l10n/ia.js
new file mode 100644
index 00000000..46085c95
--- /dev/null
+++ b/l10n/ia.js
@@ -0,0 +1,50 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "General",
+ "Done" : "Preste",
+ "Settings saved" : "Configurationes salveguardate",
+ "Sharing" : "Compartente",
+ "Share link" : "Compartir ligamine",
+ "Username" : "Nomine de usator",
+ "File" : "File",
+ "Add" : "Adder",
+ "Type" : "Typo",
+ "Actions" : "Actiones",
+ "Size" : "Dimension",
+ "Expiration date" : "Data de expiration",
+ "No expiration date set" : "Nulle data de expiration definite",
+ "Export" : "Exportar",
+ "Version" : "Version",
+ "Import" : "Importar",
+ "Public key" : "Clave public",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "Files",
+ "Pending" : "Pendente",
+ "Details" : "Detalios",
+ "by" : "per",
+ "Save" : "Salveguardar",
+ "Cancel" : "Cancellar",
+ "Settings" : "Configurationes",
+ "Unshare" : "Cessa de compartir",
+ "Password" : "Contrasigno",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Edit" : "Modificar",
+ "Delete" : "Deler",
+ "Share" : "Compartir",
+ "Date" : "Date",
+ "Accept" : "Acceptar",
+ "Decline" : "Refusar",
+ "Never" : "Nunquam",
+ "Tags" : "Etiquettas",
+ "Loading…" : "Cargante...",
+ "Description" : "Description",
+ "You created %1$s" : "Tu creava %1$s",
+ "You deleted %1$s" : "Tu deleva %1$s",
+ "Saving..." : "Salveguardante...",
+ "Dismiss" : "Dimitter",
+ "seconds ago" : "secundas passate"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/ia.json b/l10n/ia.json
new file mode 100644
index 00000000..94b1c980
--- /dev/null
+++ b/l10n/ia.json
@@ -0,0 +1,48 @@
+{ "translations": {
+ "General" : "General",
+ "Done" : "Preste",
+ "Settings saved" : "Configurationes salveguardate",
+ "Sharing" : "Compartente",
+ "Share link" : "Compartir ligamine",
+ "Username" : "Nomine de usator",
+ "File" : "File",
+ "Add" : "Adder",
+ "Type" : "Typo",
+ "Actions" : "Actiones",
+ "Size" : "Dimension",
+ "Expiration date" : "Data de expiration",
+ "No expiration date set" : "Nulle data de expiration definite",
+ "Export" : "Exportar",
+ "Version" : "Version",
+ "Import" : "Importar",
+ "Public key" : "Clave public",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "Files",
+ "Pending" : "Pendente",
+ "Details" : "Detalios",
+ "by" : "per",
+ "Save" : "Salveguardar",
+ "Cancel" : "Cancellar",
+ "Settings" : "Configurationes",
+ "Unshare" : "Cessa de compartir",
+ "Password" : "Contrasigno",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Edit" : "Modificar",
+ "Delete" : "Deler",
+ "Share" : "Compartir",
+ "Date" : "Date",
+ "Accept" : "Acceptar",
+ "Decline" : "Refusar",
+ "Never" : "Nunquam",
+ "Tags" : "Etiquettas",
+ "Loading…" : "Cargante...",
+ "Description" : "Description",
+ "You created %1$s" : "Tu creava %1$s",
+ "You deleted %1$s" : "Tu deleva %1$s",
+ "Saving..." : "Salveguardante...",
+ "Dismiss" : "Dimitter",
+ "seconds ago" : "secundas passate"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/id.js b/l10n/id.js
new file mode 100644
index 00000000..3849f2bd
--- /dev/null
+++ b/l10n/id.js
@@ -0,0 +1,67 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "Umum",
+ "Done" : "Selesai",
+ "Settings saved" : "Pengaturan disimpan",
+ "Sharing" : "Berbagi",
+ "Share with users and groups" : "Bagikan dengan pengguna atau grup",
+ "Share link" : "Bagikan tautan",
+ "Good" : "Bagus",
+ "Username" : "Nama pengguna",
+ "File" : "Berkas",
+ "Add" : "Masukkan",
+ "Type" : "tipe",
+ "Actions" : "Tindakan",
+ "Filename" : "Nama berkas",
+ "Size" : "Ukuran",
+ "Secret" : "Rahasia",
+ "Expiration date" : "Tanggal kadaluarsa",
+ "No expiration date set" : "Tanggal kedaluwarsa tidak diatur",
+ "Disabled" : "Dinonaktifkan",
+ "Export" : "Ekspor",
+ "Change" : "Ubah",
+ "Version" : "Versi",
+ "Import" : "Impor",
+ "Public key" : "Kunci Public",
+ "Uploading" : "Menunggah",
+ "User" : "Pengguna",
+ "Read" : "Baca",
+ "Files" : "Berkas",
+ "Pending" : "Tunggu",
+ "Details" : "Detil",
+ "Hide details" : "Sembunyikan detail",
+ "by" : "oleh",
+ "Save" : "Simpan",
+ "Cancel" : "Membatalkan",
+ "Settings" : "Setelan",
+ "Unshare" : "Batalkan berbagi",
+ "Password" : "Kata kunci",
+ "E-mail" : "Surel",
+ "URL" : "URL",
+ "Notes" : "Catatan",
+ "Created" : "Dibuat",
+ "Edit" : "Sunting",
+ "Delete" : "Hapus",
+ "Share" : "Bagikan",
+ "Date" : "Date",
+ "Accept" : "Terima",
+ "Decline" : "Tolak",
+ "Never" : "Tidak pernah",
+ "Tags" : "Tag",
+ "Loading…" : "Memuat…",
+ "email" : "surel",
+ "Description" : "Deskrisi",
+ "%1$s has been created by %2$s" : "%1$s dibuat oleh %2$s",
+ "You created %1$s" : "Anda membuat %1$s",
+ "%1$s has been updated by %2$s" : "%1$s diperbaharui oleh %2$s",
+ "You updated %1$s" : "Anda memperbaharui %1$s",
+ "You deleted %1$s" : "Anda menghapus %1$s",
+ "Passwords" : "Kata sandi",
+ "Connection to server lost" : "Koneksi ke server gagal",
+ "Problem loading page, reloading in 5 seconds" : "Terjadi masalah dalam memuat laman, mencoba lagi dalam 5 detik",
+ "Saving..." : "Menyimpan...",
+ "Dismiss" : "Batal",
+ "seconds ago" : "beberapa detik yang lalu"
+},
+"nplurals=1; plural=0;");
diff --git a/l10n/id.json b/l10n/id.json
new file mode 100644
index 00000000..7f197c96
--- /dev/null
+++ b/l10n/id.json
@@ -0,0 +1,65 @@
+{ "translations": {
+ "General" : "Umum",
+ "Done" : "Selesai",
+ "Settings saved" : "Pengaturan disimpan",
+ "Sharing" : "Berbagi",
+ "Share with users and groups" : "Bagikan dengan pengguna atau grup",
+ "Share link" : "Bagikan tautan",
+ "Good" : "Bagus",
+ "Username" : "Nama pengguna",
+ "File" : "Berkas",
+ "Add" : "Masukkan",
+ "Type" : "tipe",
+ "Actions" : "Tindakan",
+ "Filename" : "Nama berkas",
+ "Size" : "Ukuran",
+ "Secret" : "Rahasia",
+ "Expiration date" : "Tanggal kadaluarsa",
+ "No expiration date set" : "Tanggal kedaluwarsa tidak diatur",
+ "Disabled" : "Dinonaktifkan",
+ "Export" : "Ekspor",
+ "Change" : "Ubah",
+ "Version" : "Versi",
+ "Import" : "Impor",
+ "Public key" : "Kunci Public",
+ "Uploading" : "Menunggah",
+ "User" : "Pengguna",
+ "Read" : "Baca",
+ "Files" : "Berkas",
+ "Pending" : "Tunggu",
+ "Details" : "Detil",
+ "Hide details" : "Sembunyikan detail",
+ "by" : "oleh",
+ "Save" : "Simpan",
+ "Cancel" : "Membatalkan",
+ "Settings" : "Setelan",
+ "Unshare" : "Batalkan berbagi",
+ "Password" : "Kata kunci",
+ "E-mail" : "Surel",
+ "URL" : "URL",
+ "Notes" : "Catatan",
+ "Created" : "Dibuat",
+ "Edit" : "Sunting",
+ "Delete" : "Hapus",
+ "Share" : "Bagikan",
+ "Date" : "Date",
+ "Accept" : "Terima",
+ "Decline" : "Tolak",
+ "Never" : "Tidak pernah",
+ "Tags" : "Tag",
+ "Loading…" : "Memuat…",
+ "email" : "surel",
+ "Description" : "Deskrisi",
+ "%1$s has been created by %2$s" : "%1$s dibuat oleh %2$s",
+ "You created %1$s" : "Anda membuat %1$s",
+ "%1$s has been updated by %2$s" : "%1$s diperbaharui oleh %2$s",
+ "You updated %1$s" : "Anda memperbaharui %1$s",
+ "You deleted %1$s" : "Anda menghapus %1$s",
+ "Passwords" : "Kata sandi",
+ "Connection to server lost" : "Koneksi ke server gagal",
+ "Problem loading page, reloading in 5 seconds" : "Terjadi masalah dalam memuat laman, mencoba lagi dalam 5 detik",
+ "Saving..." : "Menyimpan...",
+ "Dismiss" : "Batal",
+ "seconds ago" : "beberapa detik yang lalu"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/l10n/is.js b/l10n/is.js
index 67e52222..8cc09975 100644
--- a/l10n/is.js
+++ b/l10n/is.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Lykilorð",
"Generating sharing keys ( %s / 2)" : "Útbý deilingarlykla ( %s / 2)",
"Incorrect vault password!" : "Rangt lykilorð fyrir lykilorðageymslu!",
"Passwords do not match" : "Lykilorðin stemma ekki",
@@ -79,6 +78,7 @@ OC.L10N.register(
"Use this icon" : "Nota þessa táknmynd",
"Delete current icon" : "Eyða núverandi táknmynd",
"Get icon from page" : "Velja táknmynd af síðu",
+ "This may take a few seconds…" : "Þetta gæti tekið örfáar sekúndur…",
"There was an error fetching the icon!" : "Það kom upp villa við að ná í táknmyndina!",
"Selected icon" : "Valin táknmynd",
"Field label" : "Skýring gagnasviðs",
@@ -295,6 +295,7 @@ OC.L10N.register(
"Awwhh… credential not found. Maybe it expired" : "Æjæjæ... auðkenni fundust ekki. Kannski þau séu útrunnin",
"Compromise!" : "Berskjaldað!",
"Compromised!" : "Berskjaldað!",
+ "This password is compromised. You can only remove this warning by changing the password." : "Þetta lykilorð er berskjaldað, og því ekki nothæft lengur. Þú getur aðeins losnað við þessa aðvörun með því að skipta um lykilorð.",
"email" : "tölvupóstur",
"Description" : "Lýsing",
"Url" : "Slóð (URL)",
@@ -323,6 +324,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s hefur verið deilt með %2$s",
"You received a share request for %1$s from %2$s" : "Þú fékkst beiðni um deilingu á %1$s frá %2$s",
"%s has been shared with a link" : "%s hefur verið deilt með tengli",
+ "Passwords" : "Lykilorð",
"Your credential \"%s\" expired, click here to update the credential." : "Auðkennin \"%s\" eru útrunninn, smelltu hér til að uppfæra auðkennin.",
"Remind me later" : "Áminna mig síðar",
"Ignore" : "Hunsa",
diff --git a/l10n/is.json b/l10n/is.json
index 2428e914..d89cec6f 100644
--- a/l10n/is.json
+++ b/l10n/is.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Lykilorð",
"Generating sharing keys ( %s / 2)" : "Útbý deilingarlykla ( %s / 2)",
"Incorrect vault password!" : "Rangt lykilorð fyrir lykilorðageymslu!",
"Passwords do not match" : "Lykilorðin stemma ekki",
@@ -77,6 +76,7 @@
"Use this icon" : "Nota þessa táknmynd",
"Delete current icon" : "Eyða núverandi táknmynd",
"Get icon from page" : "Velja táknmynd af síðu",
+ "This may take a few seconds…" : "Þetta gæti tekið örfáar sekúndur…",
"There was an error fetching the icon!" : "Það kom upp villa við að ná í táknmyndina!",
"Selected icon" : "Valin táknmynd",
"Field label" : "Skýring gagnasviðs",
@@ -293,6 +293,7 @@
"Awwhh… credential not found. Maybe it expired" : "Æjæjæ... auðkenni fundust ekki. Kannski þau séu útrunnin",
"Compromise!" : "Berskjaldað!",
"Compromised!" : "Berskjaldað!",
+ "This password is compromised. You can only remove this warning by changing the password." : "Þetta lykilorð er berskjaldað, og því ekki nothæft lengur. Þú getur aðeins losnað við þessa aðvörun með því að skipta um lykilorð.",
"email" : "tölvupóstur",
"Description" : "Lýsing",
"Url" : "Slóð (URL)",
@@ -321,6 +322,7 @@
"%1$s has been shared with %2$s" : "%1$s hefur verið deilt með %2$s",
"You received a share request for %1$s from %2$s" : "Þú fékkst beiðni um deilingu á %1$s frá %2$s",
"%s has been shared with a link" : "%s hefur verið deilt með tengli",
+ "Passwords" : "Lykilorð",
"Your credential \"%s\" expired, click here to update the credential." : "Auðkennin \"%s\" eru útrunninn, smelltu hér til að uppfæra auðkennin.",
"Remind me later" : "Áminna mig síðar",
"Ignore" : "Hunsa",
diff --git a/l10n/it.js b/l10n/it.js
index 3e965c59..96175916 100644
--- a/l10n/it.js
+++ b/l10n/it.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Password",
"Generating sharing keys ( %s / 2)" : "Generazione chiavi condivise ( %s / 2)",
"Incorrect vault password!" : "Password della cassaforte non corretta!",
"Passwords do not match" : "Le password non corrispondono",
@@ -256,7 +255,7 @@ OC.L10N.register(
"Password strength must be at least: {{strength}}" : "La robustezza della password deve essere almeno: {{strength}}",
"Please give your new vault a name." : "Dai un nome alla tua nuova cassaforte.",
"Repeat vault password" : "Ripeti la password della cassaforte",
- "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Le tue chiavi di condivisione avranno una lunghezza di 1024 bit, che puoii modificare successivamente in \\\"Impostazioni\\\".",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Le tue chiavi di condivisione avranno una lunghezza di 1024 bit, che puoi modificare successivamente in \\\"Impostazioni\\\".",
"Create vault" : "Crea cassaforte",
"Go back to vaults" : "Torna alle casseforti",
"Please input the password for" : "Digita la password per",
@@ -325,6 +324,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s è stato condiviso con %2$s",
"You received a share request for %1$s from %2$s" : "Hai ricevuto una richiesta di condivisione per %1$s da %2$s",
"%s has been shared with a link" : "%s è stato condiviso con un collegamento",
+ "Passwords" : "Password",
"Your credential \"%s\" expired, click here to update the credential." : "Le tue credenziali \"%s\" sono scadute, fai clic qui per aggiornarle.",
"Remind me later" : "Ricordamelo più tardi",
"Ignore" : "Ignora",
@@ -336,7 +336,7 @@ OC.L10N.register(
"Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman è un gestore di password pieno di funzionalità.\nFunzionalità:\n- Casseforti \n- La chiave della cassaforte non è mai inviata al server\n- Estensione del browser per accedere rapidamente alle password\n- Applicazione Android per l'accesso mobile\n- Le credenziali sono cifrate lato client con AES a 256 bit\n- Le credenziali sono cifrate lato server con AES a 256 bit\n- Abilità di aggiungere campi personalizzati alle credenziali\n- Generatore OTP (One Time Password) integrato\n- Analizzatore delle password\n- Condivisione delle password internamente e tramite collegamento in maniera sicura\n- Importazione da vari gestori delle password (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nPer una dimostrazione di questa applicazione visita [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Impossibile ottenere le informazioni di versione",
"Passman Settings" : "Impostazioni di Passman",
- "GitHub version:" : "Versione di Github:",
+ "GitHub version:" : "Versione di GitHub:",
"A newer version of Passman is available" : "Una nuova versione di Passman è disponibile",
"Password sharing" : "Condivisione password",
"Credential mover" : "Sposta credenziali",
@@ -344,7 +344,7 @@ OC.L10N.register(
"Check for new versions" : "Controlla la presenza di nuove versioni",
"Enable HTTPS check" : "Abilita controllo HTTPS",
"Disable context menu" : "Disabilita menu contestuale",
- "Disable JavaScript debugger" : "Disabilita debugger javascript",
+ "Disable JavaScript debugger" : "Disabilita debugger JavaScript",
"Allow users on this server to share passwords with a link" : "Consenti agli utenti su questo server di condividere le password tramite un collegamento",
"Allow users on this server to share passwords with other users" : "Consenti agli utenti su questo server di condividere le password con altri utenti",
"Move credentials from one account to another" : "Sposta le credenziali da un account a un altro",
diff --git a/l10n/it.json b/l10n/it.json
index ec70f47c..2d3f595b 100644
--- a/l10n/it.json
+++ b/l10n/it.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Password",
"Generating sharing keys ( %s / 2)" : "Generazione chiavi condivise ( %s / 2)",
"Incorrect vault password!" : "Password della cassaforte non corretta!",
"Passwords do not match" : "Le password non corrispondono",
@@ -254,7 +253,7 @@
"Password strength must be at least: {{strength}}" : "La robustezza della password deve essere almeno: {{strength}}",
"Please give your new vault a name." : "Dai un nome alla tua nuova cassaforte.",
"Repeat vault password" : "Ripeti la password della cassaforte",
- "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Le tue chiavi di condivisione avranno una lunghezza di 1024 bit, che puoii modificare successivamente in \\\"Impostazioni\\\".",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Le tue chiavi di condivisione avranno una lunghezza di 1024 bit, che puoi modificare successivamente in \\\"Impostazioni\\\".",
"Create vault" : "Crea cassaforte",
"Go back to vaults" : "Torna alle casseforti",
"Please input the password for" : "Digita la password per",
@@ -323,6 +322,7 @@
"%1$s has been shared with %2$s" : "%1$s è stato condiviso con %2$s",
"You received a share request for %1$s from %2$s" : "Hai ricevuto una richiesta di condivisione per %1$s da %2$s",
"%s has been shared with a link" : "%s è stato condiviso con un collegamento",
+ "Passwords" : "Password",
"Your credential \"%s\" expired, click here to update the credential." : "Le tue credenziali \"%s\" sono scadute, fai clic qui per aggiornarle.",
"Remind me later" : "Ricordamelo più tardi",
"Ignore" : "Ignora",
@@ -334,7 +334,7 @@
"Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman è un gestore di password pieno di funzionalità.\nFunzionalità:\n- Casseforti \n- La chiave della cassaforte non è mai inviata al server\n- Estensione del browser per accedere rapidamente alle password\n- Applicazione Android per l'accesso mobile\n- Le credenziali sono cifrate lato client con AES a 256 bit\n- Le credenziali sono cifrate lato server con AES a 256 bit\n- Abilità di aggiungere campi personalizzati alle credenziali\n- Generatore OTP (One Time Password) integrato\n- Analizzatore delle password\n- Condivisione delle password internamente e tramite collegamento in maniera sicura\n- Importazione da vari gestori delle password (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nPer una dimostrazione di questa applicazione visita [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Impossibile ottenere le informazioni di versione",
"Passman Settings" : "Impostazioni di Passman",
- "GitHub version:" : "Versione di Github:",
+ "GitHub version:" : "Versione di GitHub:",
"A newer version of Passman is available" : "Una nuova versione di Passman è disponibile",
"Password sharing" : "Condivisione password",
"Credential mover" : "Sposta credenziali",
@@ -342,7 +342,7 @@
"Check for new versions" : "Controlla la presenza di nuove versioni",
"Enable HTTPS check" : "Abilita controllo HTTPS",
"Disable context menu" : "Disabilita menu contestuale",
- "Disable JavaScript debugger" : "Disabilita debugger javascript",
+ "Disable JavaScript debugger" : "Disabilita debugger JavaScript",
"Allow users on this server to share passwords with a link" : "Consenti agli utenti su questo server di condividere le password tramite un collegamento",
"Allow users on this server to share passwords with other users" : "Consenti agli utenti su questo server di condividere le password con altri utenti",
"Move credentials from one account to another" : "Sposta le credenziali da un account a un altro",
diff --git a/l10n/ja.js b/l10n/ja.js
index 5f98ac3b..481a18fb 100644
--- a/l10n/ja.js
+++ b/l10n/ja.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "パスワード",
"Generating sharing keys ( %s / 2)" : "共有キーを生成しています ( %s / 2)",
"Incorrect vault password!" : "保管庫パスワードが間違っています!",
"Passwords do not match" : "パスワードが一致しません",
@@ -325,6 +324,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s を %2$s と共有しました",
"You received a share request for %1$s from %2$s" : "%2$s から %1$s の共有リクエストを受信しました",
"%s has been shared with a link" : "%s がリンクで共有されました",
+ "Passwords" : "パスワード",
"Your credential \"%s\" expired, click here to update the credential." : "証明書 ”%s” は期限切れです。証明書を更新するにはここをクリックしてください。",
"Remind me later" : "後で通知する",
"Ignore" : "無視する",
diff --git a/l10n/ja.json b/l10n/ja.json
index 7bffde43..a218b21d 100644
--- a/l10n/ja.json
+++ b/l10n/ja.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "パスワード",
"Generating sharing keys ( %s / 2)" : "共有キーを生成しています ( %s / 2)",
"Incorrect vault password!" : "保管庫パスワードが間違っています!",
"Passwords do not match" : "パスワードが一致しません",
@@ -323,6 +322,7 @@
"%1$s has been shared with %2$s" : "%1$s を %2$s と共有しました",
"You received a share request for %1$s from %2$s" : "%2$s から %1$s の共有リクエストを受信しました",
"%s has been shared with a link" : "%s がリンクで共有されました",
+ "Passwords" : "パスワード",
"Your credential \"%s\" expired, click here to update the credential." : "証明書 ”%s” は期限切れです。証明書を更新するにはここをクリックしてください。",
"Remind me later" : "後で通知する",
"Ignore" : "無視する",
diff --git a/l10n/ka_GE.js b/l10n/ka_GE.js
index 6eb604a1..da5da059 100644
--- a/l10n/ka_GE.js
+++ b/l10n/ka_GE.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "პაროლები",
"Generating sharing keys ( %s / 2)" : "გაზიარების გასაღებების გენერირება (%s / 2)",
"Incorrect vault password!" : "სეიფის არასწორი პაროლი",
"Passwords do not match" : "პაროლები ერთმანეთს არ ემთხვევა",
@@ -255,10 +254,14 @@ OC.L10N.register(
"Deleted credentials" : "წაშლილი უფლებამოსილებები",
"Logout" : "გასვლა",
"Donate" : "შემოწირულობა",
+ "Tags" : "ტეგები",
+ "Expired" : "გაუქმდა",
"Someone has shared a credential with you." : "ვიღაცამ გაგიზიარათ უფლებამოსილება.",
"Click here to request it" : "მოთხოვნისთვის დააწკაპუნეთ აქ",
"Loading…" : "იტვირთება…",
"Awwhh… credential not found. Maybe it expired" : "უფლებამოსილების მოძიება ვერ მოხერხდა. შეიძლება ის გაუქმდა",
+ "email" : "ელ-ფოსტა",
+ "Description" : "აღწერილობა",
"Error while saving field" : "ველის შენახვისას წარმოიქმნა შეცდომა",
"A Passman item has been created, modified or deleted" : "Passman-ის ელემენტი შეიქმნა, შეიცვალა ან გაუქმდა",
"A Passman item has expired" : "Passman-ის ელემენტს გაუვიდა ვადა",
@@ -282,6 +285,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s გაზიარდა მომხმარებელთან %2$s",
"You received a share request for %1$s from %2$s" : "%2$s მომხმარებლისგან მოგივიდათ გაზიარების მოთხოვნა %1$s-ზე",
"%s has been shared with a link" : "%s გაზიარდა ბმულით",
+ "Passwords" : "პაროლები",
"Your credential \"%s\" expired, click here to update the credential." : "თქვენს უფლებამოსილებას \"%s\"-ს გაუვიდა ვადა, გასანახლებლად დააწკაპუნეთ აქ.",
"Remind me later" : "გამახსენეთ მოგვიანებით",
"Ignore" : "იგნორი",
diff --git a/l10n/ka_GE.json b/l10n/ka_GE.json
index 8e721ba9..4e70e8b8 100644
--- a/l10n/ka_GE.json
+++ b/l10n/ka_GE.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "პაროლები",
"Generating sharing keys ( %s / 2)" : "გაზიარების გასაღებების გენერირება (%s / 2)",
"Incorrect vault password!" : "სეიფის არასწორი პაროლი",
"Passwords do not match" : "პაროლები ერთმანეთს არ ემთხვევა",
@@ -253,10 +252,14 @@
"Deleted credentials" : "წაშლილი უფლებამოსილებები",
"Logout" : "გასვლა",
"Donate" : "შემოწირულობა",
+ "Tags" : "ტეგები",
+ "Expired" : "გაუქმდა",
"Someone has shared a credential with you." : "ვიღაცამ გაგიზიარათ უფლებამოსილება.",
"Click here to request it" : "მოთხოვნისთვის დააწკაპუნეთ აქ",
"Loading…" : "იტვირთება…",
"Awwhh… credential not found. Maybe it expired" : "უფლებამოსილების მოძიება ვერ მოხერხდა. შეიძლება ის გაუქმდა",
+ "email" : "ელ-ფოსტა",
+ "Description" : "აღწერილობა",
"Error while saving field" : "ველის შენახვისას წარმოიქმნა შეცდომა",
"A Passman item has been created, modified or deleted" : "Passman-ის ელემენტი შეიქმნა, შეიცვალა ან გაუქმდა",
"A Passman item has expired" : "Passman-ის ელემენტს გაუვიდა ვადა",
@@ -280,6 +283,7 @@
"%1$s has been shared with %2$s" : "%1$s გაზიარდა მომხმარებელთან %2$s",
"You received a share request for %1$s from %2$s" : "%2$s მომხმარებლისგან მოგივიდათ გაზიარების მოთხოვნა %1$s-ზე",
"%s has been shared with a link" : "%s გაზიარდა ბმულით",
+ "Passwords" : "პაროლები",
"Your credential \"%s\" expired, click here to update the credential." : "თქვენს უფლებამოსილებას \"%s\"-ს გაუვიდა ვადა, გასანახლებლად დააწკაპუნეთ აქ.",
"Remind me later" : "გამახსენეთ მოგვიანებით",
"Ignore" : "იგნორი",
diff --git a/l10n/km.js b/l10n/km.js
new file mode 100644
index 00000000..ad4ecb2d
--- /dev/null
+++ b/l10n/km.js
@@ -0,0 +1,42 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "ទូទៅ",
+ "Done" : "Done",
+ "Sharing" : "ការ​ចែក​រំលែក",
+ "Share link" : "Share link",
+ "Username" : "ឈ្មោះ​អ្នកប្រើ",
+ "File" : "File",
+ "Add" : "បញ្ចូល",
+ "Type" : "Type",
+ "Size" : "ទំហំ",
+ "Expiration date" : "ពេល​ផុត​កំណត់",
+ "Disabled" : "បាន​បិទ",
+ "Export" : "នាំចេញ",
+ "Version" : "កំណែ",
+ "Import" : "នាំយកចូល",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "ឯកសារ",
+ "Pending" : "កំពុង​រង់ចាំ",
+ "Details" : "ព័ត៌មាន​លម្អិត",
+ "by" : "ដោយ",
+ "Save" : "រក្សាទុក",
+ "Cancel" : "បោះបង់",
+ "Settings" : "ការកំណត់",
+ "Unshare" : "លែង​ចែក​រំលែក",
+ "Password" : "ពាក្យសម្ងាត់",
+ "URL" : "URL",
+ "Notes" : "កំណត់​ចំណាំ",
+ "Edit" : "កែប្រែ",
+ "Delete" : "លុប",
+ "Share" : "ចែក​រំលែក",
+ "Date" : "Date",
+ "Tags" : "ស្លាក",
+ "Description" : "ការ​អធិប្បាយ",
+ "You created %1$s" : "អ្នក​បាន​បង្កើត %1$s",
+ "You deleted %1$s" : "អ្នក​បាន​លុប %1$s",
+ "Saving..." : "កំពុង​រក្សាទុក",
+ "seconds ago" : "វិនាទី​មុន"
+},
+"nplurals=1; plural=0;");
diff --git a/l10n/km.json b/l10n/km.json
new file mode 100644
index 00000000..92c6e281
--- /dev/null
+++ b/l10n/km.json
@@ -0,0 +1,40 @@
+{ "translations": {
+ "General" : "ទូទៅ",
+ "Done" : "Done",
+ "Sharing" : "ការ​ចែក​រំលែក",
+ "Share link" : "Share link",
+ "Username" : "ឈ្មោះ​អ្នកប្រើ",
+ "File" : "File",
+ "Add" : "បញ្ចូល",
+ "Type" : "Type",
+ "Size" : "ទំហំ",
+ "Expiration date" : "ពេល​ផុត​កំណត់",
+ "Disabled" : "បាន​បិទ",
+ "Export" : "នាំចេញ",
+ "Version" : "កំណែ",
+ "Import" : "នាំយកចូល",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "ឯកសារ",
+ "Pending" : "កំពុង​រង់ចាំ",
+ "Details" : "ព័ត៌មាន​លម្អិត",
+ "by" : "ដោយ",
+ "Save" : "រក្សាទុក",
+ "Cancel" : "បោះបង់",
+ "Settings" : "ការកំណត់",
+ "Unshare" : "លែង​ចែក​រំលែក",
+ "Password" : "ពាក្យសម្ងាត់",
+ "URL" : "URL",
+ "Notes" : "កំណត់​ចំណាំ",
+ "Edit" : "កែប្រែ",
+ "Delete" : "លុប",
+ "Share" : "ចែក​រំលែក",
+ "Date" : "Date",
+ "Tags" : "ស្លាក",
+ "Description" : "ការ​អធិប្បាយ",
+ "You created %1$s" : "អ្នក​បាន​បង្កើត %1$s",
+ "You deleted %1$s" : "អ្នក​បាន​លុប %1$s",
+ "Saving..." : "កំពុង​រក្សាទុក",
+ "seconds ago" : "វិនាទី​មុន"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/l10n/kn.js b/l10n/kn.js
new file mode 100644
index 00000000..53107407
--- /dev/null
+++ b/l10n/kn.js
@@ -0,0 +1,34 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Done" : "Done",
+ "Sharing" : "ಹಂಚಿಕೆ",
+ "Share link" : "ಸಂಪರ್ಕ ಕೊಂಡಿಯನ್ನು ಹಂಚಿಕೊಳ್ಳಬಹುದು",
+ "Username" : "ಬಳಕೆಯ ಹೆಸರು",
+ "File" : "File",
+ "Add" : "ಸೇರಿಸಿ",
+ "Type" : "Type",
+ "Size" : " ಗಾತ್ರ",
+ "Expiration date" : "ಮುಕ್ತಾಯ ದಿನಾಂಕ",
+ "Disabled" : "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ",
+ "Export" : "ರಫ್ತು",
+ "Version" : "ಆವೃತ್ತಿ",
+ "Import" : "ಆಮದು",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "ಕಡತಗಳು",
+ "Pending" : "ಬಾಕಿ ಇದೆ",
+ "Save" : "ಉಳಿಸಿ",
+ "Cancel" : "ರದ್ದು",
+ "Settings" : "ಆಯ್ಕೆ",
+ "Unshare" : "ಹಂಚಿಕೆಯನ್ನು ಹಿಂತೆಗೆ",
+ "Password" : "ಗುಪ್ತ ಪದ",
+ "URL" : "ಜಾಲದ ಕೊಂಡಿ",
+ "Notes" : "Notes",
+ "Edit" : "ಸಂಪಾದಿಸು",
+ "Delete" : "ಅಳಿಸಿ",
+ "Share" : "ಹಂಚಿಕೊಳ್ಳಿ",
+ "Date" : "Date",
+ "Saving..." : "ಉಳಿಸಲಾಗುತ್ತಿದೆ ..."
+},
+"nplurals=2; plural=(n > 1);");
diff --git a/l10n/kn.json b/l10n/kn.json
new file mode 100644
index 00000000..290639c6
--- /dev/null
+++ b/l10n/kn.json
@@ -0,0 +1,32 @@
+{ "translations": {
+ "Done" : "Done",
+ "Sharing" : "ಹಂಚಿಕೆ",
+ "Share link" : "ಸಂಪರ್ಕ ಕೊಂಡಿಯನ್ನು ಹಂಚಿಕೊಳ್ಳಬಹುದು",
+ "Username" : "ಬಳಕೆಯ ಹೆಸರು",
+ "File" : "File",
+ "Add" : "ಸೇರಿಸಿ",
+ "Type" : "Type",
+ "Size" : " ಗಾತ್ರ",
+ "Expiration date" : "ಮುಕ್ತಾಯ ದಿನಾಂಕ",
+ "Disabled" : "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ",
+ "Export" : "ರಫ್ತು",
+ "Version" : "ಆವೃತ್ತಿ",
+ "Import" : "ಆಮದು",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "ಕಡತಗಳು",
+ "Pending" : "ಬಾಕಿ ಇದೆ",
+ "Save" : "ಉಳಿಸಿ",
+ "Cancel" : "ರದ್ದು",
+ "Settings" : "ಆಯ್ಕೆ",
+ "Unshare" : "ಹಂಚಿಕೆಯನ್ನು ಹಿಂತೆಗೆ",
+ "Password" : "ಗುಪ್ತ ಪದ",
+ "URL" : "ಜಾಲದ ಕೊಂಡಿ",
+ "Notes" : "Notes",
+ "Edit" : "ಸಂಪಾದಿಸು",
+ "Delete" : "ಅಳಿಸಿ",
+ "Share" : "ಹಂಚಿಕೊಳ್ಳಿ",
+ "Date" : "Date",
+ "Saving..." : "ಉಳಿಸಲಾಗುತ್ತಿದೆ ..."
+},"pluralForm" :"nplurals=2; plural=(n > 1);"
+} \ No newline at end of file
diff --git a/l10n/ko.js b/l10n/ko.js
index 19a5882d..e4afe544 100644
--- a/l10n/ko.js
+++ b/l10n/ko.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "암호",
"Generating sharing keys ( %s / 2)" : "공유 키 생성 중 (%s/2)",
"Incorrect vault password!" : "비밀 저장소 암호가 잘못되었습니다!",
"Passwords do not match" : "암호가 일치하지 않습니다",
@@ -255,10 +254,14 @@ OC.L10N.register(
"Deleted credentials" : "삭제된 인증 정보",
"Logout" : "로그아웃",
"Donate" : "기부하기",
+ "Tags" : "태그",
+ "Expired" : "만료됨",
"Someone has shared a credential with you." : "누군가가 여러분과 인증 정보를 공유했습니다.",
"Click here to request it" : "여기를 눌러서 요청하십시오",
"Loading…" : "불러오는 중…",
"Awwhh… credential not found. Maybe it expired" : "어… 인증 정보를 찾을 수 없습니다. 만료되었을 수도 있습니다",
+ "email" : "이메일",
+ "Description" : "설명",
"Error while saving field" : "필드를 저장하는 중 오류 발생",
"A Passman item has been created, modified or deleted" : "Passman 항목이 생성, 수정 및 삭제됨",
"A Passman item has expired" : "Passman 항목이 만료됨",
@@ -282,6 +285,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s이(가) %2$s 님과 공유됨",
"You received a share request for %1$s from %2$s" : "%2$s 님의 %1$s 공유 요청을 받음",
"%s has been shared with a link" : "%s이(가) 링크로 공유됨",
+ "Passwords" : "암호",
"Your credential \"%s\" expired, click here to update the credential." : "\"%s\" 인증 정보가 만료되었습니다. 여기를 눌러서 업데이트하십시오.",
"Remind me later" : "나중에 다시 알림",
"Ignore" : "무시",
diff --git a/l10n/ko.json b/l10n/ko.json
index c3ea4bf2..e6d74a82 100644
--- a/l10n/ko.json
+++ b/l10n/ko.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "암호",
"Generating sharing keys ( %s / 2)" : "공유 키 생성 중 (%s/2)",
"Incorrect vault password!" : "비밀 저장소 암호가 잘못되었습니다!",
"Passwords do not match" : "암호가 일치하지 않습니다",
@@ -253,10 +252,14 @@
"Deleted credentials" : "삭제된 인증 정보",
"Logout" : "로그아웃",
"Donate" : "기부하기",
+ "Tags" : "태그",
+ "Expired" : "만료됨",
"Someone has shared a credential with you." : "누군가가 여러분과 인증 정보를 공유했습니다.",
"Click here to request it" : "여기를 눌러서 요청하십시오",
"Loading…" : "불러오는 중…",
"Awwhh… credential not found. Maybe it expired" : "어… 인증 정보를 찾을 수 없습니다. 만료되었을 수도 있습니다",
+ "email" : "이메일",
+ "Description" : "설명",
"Error while saving field" : "필드를 저장하는 중 오류 발생",
"A Passman item has been created, modified or deleted" : "Passman 항목이 생성, 수정 및 삭제됨",
"A Passman item has expired" : "Passman 항목이 만료됨",
@@ -280,6 +283,7 @@
"%1$s has been shared with %2$s" : "%1$s이(가) %2$s 님과 공유됨",
"You received a share request for %1$s from %2$s" : "%2$s 님의 %1$s 공유 요청을 받음",
"%s has been shared with a link" : "%s이(가) 링크로 공유됨",
+ "Passwords" : "암호",
"Your credential \"%s\" expired, click here to update the credential." : "\"%s\" 인증 정보가 만료되었습니다. 여기를 눌러서 업데이트하십시오.",
"Remind me later" : "나중에 다시 알림",
"Ignore" : "무시",
diff --git a/l10n/lb.js b/l10n/lb.js
new file mode 100644
index 00000000..731f480d
--- /dev/null
+++ b/l10n/lb.js
@@ -0,0 +1,44 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "Allgemeng",
+ "Done" : "Done",
+ "Sharing" : "Gedeelt",
+ "Share with users and groups" : "Mat Benotzer a Gruppen deelen",
+ "Share link" : "Link deelen",
+ "Username" : "Benotzernumm",
+ "File" : "File",
+ "Add" : "Derbäimaachen",
+ "Type" : "Typ",
+ "Actions" : "Aktiounen",
+ "Size" : "Gréisst",
+ "Expiration date" : "Verfallsdatum",
+ "Disabled" : "Deaktivéiert",
+ "Export" : "Exportéieren",
+ "Import" : "Importéieren",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "Fichieren",
+ "Pending" : "Ausstoend",
+ "Details" : "Detailer",
+ "by" : "vun",
+ "Save" : "Späicheren",
+ "Cancel" : "Ofbriechen",
+ "Settings" : "Astellungen",
+ "Unshare" : "Net méi deelen",
+ "Password" : "Passwuert",
+ "URL" : "URL",
+ "Notes" : "Notizen",
+ "Edit" : "Änneren",
+ "Delete" : "Läschen",
+ "Share" : "Deelen",
+ "Date" : "Date",
+ "Tags" : "Tags",
+ "Loading…" : "Et gëtt gelueden",
+ "Description" : "Beschreiwung",
+ "Connection to server lost" : "Verbindung zum Server verluer",
+ "Saving..." : "Speicheren...",
+ "Dismiss" : "Ofbriechen",
+ "seconds ago" : "Sekonnen hier"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/lb.json b/l10n/lb.json
new file mode 100644
index 00000000..c2197cc5
--- /dev/null
+++ b/l10n/lb.json
@@ -0,0 +1,42 @@
+{ "translations": {
+ "General" : "Allgemeng",
+ "Done" : "Done",
+ "Sharing" : "Gedeelt",
+ "Share with users and groups" : "Mat Benotzer a Gruppen deelen",
+ "Share link" : "Link deelen",
+ "Username" : "Benotzernumm",
+ "File" : "File",
+ "Add" : "Derbäimaachen",
+ "Type" : "Typ",
+ "Actions" : "Aktiounen",
+ "Size" : "Gréisst",
+ "Expiration date" : "Verfallsdatum",
+ "Disabled" : "Deaktivéiert",
+ "Export" : "Exportéieren",
+ "Import" : "Importéieren",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "Fichieren",
+ "Pending" : "Ausstoend",
+ "Details" : "Detailer",
+ "by" : "vun",
+ "Save" : "Späicheren",
+ "Cancel" : "Ofbriechen",
+ "Settings" : "Astellungen",
+ "Unshare" : "Net méi deelen",
+ "Password" : "Passwuert",
+ "URL" : "URL",
+ "Notes" : "Notizen",
+ "Edit" : "Änneren",
+ "Delete" : "Läschen",
+ "Share" : "Deelen",
+ "Date" : "Date",
+ "Tags" : "Tags",
+ "Loading…" : "Et gëtt gelueden",
+ "Description" : "Beschreiwung",
+ "Connection to server lost" : "Verbindung zum Server verluer",
+ "Saving..." : "Speicheren...",
+ "Dismiss" : "Ofbriechen",
+ "seconds ago" : "Sekonnen hier"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/lt_LT.js b/l10n/lt_LT.js
index 89d3a8d5..dde49028 100644
--- a/l10n/lt_LT.js
+++ b/l10n/lt_LT.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Slaptažodžiai",
"Incorrect vault password!" : "Neteisingas slėptuvės slaptažodis!",
"Passwords do not match" : "Slaptažodžiai nesutampa",
"General" : "Bendras",
@@ -46,9 +45,9 @@ OC.L10N.register(
"Sharing" : "Bendrinimas",
"Are you sure you want to leave? This will destroy all your credentials" : "Ar Jūs tikrai norite išeiti? Tai sunaikins Jūsų prisijungimo duomenis",
"New password does not match!" : "Naujieji slaptažodžiai nesutampa!",
- "Please log in with your new vault password" : "Prisijunkite su nauju slėptuvės slaptažodžiu",
- "Share with users and groups" : "Dalintis su vartotojais ir jų grupėmis",
- "Share link" : "Dalinimosi nuoroda",
+ "Please log in with your new vault password" : "Prisijunkite naudodami naują slėptuvės slaptažodį",
+ "Share with users and groups" : "Bendrinti su naudotojais ir grupėmis",
+ "Share link" : "Bendrinimo nuoroda",
"Are you sure you want to leave? This will corrupt this credential" : "Ar tikrai norite išeiti? Tai pakenks jūsų prisijungimo duomenims",
"Credential unshared" : "Prisijungimo duomenys nebendrinami",
"Credential shared" : "Prisijungimo duomenys bendrinami",
@@ -87,7 +86,9 @@ OC.L10N.register(
"Upload date" : "Įkėlimo data",
"Size" : "Dydis",
"Current OTP settings" : "Esami OTP nustatymai",
+ "Secret" : "Paslaptis",
"Expiration date" : "Galiojimo laikas",
+ "No expiration date set" : "Nenustatyta jokia galiojimo pabaigos data",
"Renew interval" : "Atnaujinimo intervalas",
"Disabled" : "Išjungta",
"Day(s)" : "Diena(os)",
@@ -131,23 +132,32 @@ OC.L10N.register(
"Missing users? Only users that have vaults are shown." : "Trūksta naudotojų? Yra rodomi tik naudotojai, turintys slėptuves.",
"Uploading" : "Įkeliama",
"User" : "Naudotojas",
+ "Read" : "Skaityti",
+ "Write" : "Rašyti",
+ "Files" : "Failai",
+ "Pending" : "Laukiantis",
"Show files" : "Rodyti failus",
"Details" : "Išsamesnė informacija",
"Hide details" : "Slėpti išsamesnę informaciją",
"Pattern" : "Šablonas",
"Dictionary name" : "Žodyno pavadinimas",
+ "by" : "pagal",
"Label" : "Etiketė",
"Restore revision" : "Atkurti poversijį",
"Delete revision" : "Ištrinti poversijį",
"Save" : "Įrašyti",
"Cancel" : "Atsisakyti",
"Settings" : "Nustatymai",
+ "Unshare" : "Nustoti bendrinti",
"Account" : "Paskyra",
"Password" : "Slaptažodis",
"E-mail" : "El. paštas",
"URL" : "URL",
+ "Notes" : "Užrašai",
+ "Created" : "Sukurta",
"Edit" : "Taisyti",
"Delete" : "Ištrinti",
+ "Share" : "Bendrinti",
"Destroy" : "Sunaikinti",
"Permissions" : "Leidimai",
"Date" : "Data",
@@ -177,8 +187,11 @@ OC.L10N.register(
"Request removed" : "Užklausa pašalinta",
"Change vault" : "Pakeisti slėptuvę",
"Logout" : "Atsijungti",
+ "Donate" : "Paaukoti",
"Tags" : "Žymės",
+ "Expired" : "Nebegalioja",
"Loading…" : "Įkeliama…",
+ "email" : "elektroninis paštas",
"Description" : "Aprašas",
"Url" : "Url",
"Error while saving field" : "Klaida įrašant lauką",
@@ -198,6 +211,7 @@ OC.L10N.register(
"You recovered %1$s" : "Jūs atkūrėte %1$s",
"%1$s has been permanently deleted by %2$s" : "%2$s visiems laikams ištrynė %1$s",
"You permanently deleted %1$s" : "Jūs visiems laikams ištrynėte %1$s",
+ "Passwords" : "Slaptažodžiai",
"Remind me later" : "Priminti vėliau",
"Ignore" : "Nepaisyti",
"Passman" : "Passman",
@@ -212,9 +226,11 @@ OC.L10N.register(
"Disable JavaScript debugger" : "Išjungti JavaScript derintuvę",
"Source account" : "Šaltinio paskyra",
"Destination account" : "Paskirties paskyra",
+ "Request ID" : "Užklausos ID",
"Requested by" : "Užklausė",
"Reason" : "Priežastis",
"Loading&hellip;" : "Įkeliama&hellip;",
+ "Expires:" : "Galioja iki:",
"Connection to server lost" : "Ryšys su serveriu nutrūko",
"Problem loading page, reloading in 5 seconds" : "Problemos, įkeliant puslapį, po 5 sekundžių įkeliama iš naujo",
"Saving..." : "Įrašoma...",
diff --git a/l10n/lt_LT.json b/l10n/lt_LT.json
index c2d965d8..553f1ba3 100644
--- a/l10n/lt_LT.json
+++ b/l10n/lt_LT.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Slaptažodžiai",
"Incorrect vault password!" : "Neteisingas slėptuvės slaptažodis!",
"Passwords do not match" : "Slaptažodžiai nesutampa",
"General" : "Bendras",
@@ -44,9 +43,9 @@
"Sharing" : "Bendrinimas",
"Are you sure you want to leave? This will destroy all your credentials" : "Ar Jūs tikrai norite išeiti? Tai sunaikins Jūsų prisijungimo duomenis",
"New password does not match!" : "Naujieji slaptažodžiai nesutampa!",
- "Please log in with your new vault password" : "Prisijunkite su nauju slėptuvės slaptažodžiu",
- "Share with users and groups" : "Dalintis su vartotojais ir jų grupėmis",
- "Share link" : "Dalinimosi nuoroda",
+ "Please log in with your new vault password" : "Prisijunkite naudodami naują slėptuvės slaptažodį",
+ "Share with users and groups" : "Bendrinti su naudotojais ir grupėmis",
+ "Share link" : "Bendrinimo nuoroda",
"Are you sure you want to leave? This will corrupt this credential" : "Ar tikrai norite išeiti? Tai pakenks jūsų prisijungimo duomenims",
"Credential unshared" : "Prisijungimo duomenys nebendrinami",
"Credential shared" : "Prisijungimo duomenys bendrinami",
@@ -85,7 +84,9 @@
"Upload date" : "Įkėlimo data",
"Size" : "Dydis",
"Current OTP settings" : "Esami OTP nustatymai",
+ "Secret" : "Paslaptis",
"Expiration date" : "Galiojimo laikas",
+ "No expiration date set" : "Nenustatyta jokia galiojimo pabaigos data",
"Renew interval" : "Atnaujinimo intervalas",
"Disabled" : "Išjungta",
"Day(s)" : "Diena(os)",
@@ -129,23 +130,32 @@
"Missing users? Only users that have vaults are shown." : "Trūksta naudotojų? Yra rodomi tik naudotojai, turintys slėptuves.",
"Uploading" : "Įkeliama",
"User" : "Naudotojas",
+ "Read" : "Skaityti",
+ "Write" : "Rašyti",
+ "Files" : "Failai",
+ "Pending" : "Laukiantis",
"Show files" : "Rodyti failus",
"Details" : "Išsamesnė informacija",
"Hide details" : "Slėpti išsamesnę informaciją",
"Pattern" : "Šablonas",
"Dictionary name" : "Žodyno pavadinimas",
+ "by" : "pagal",
"Label" : "Etiketė",
"Restore revision" : "Atkurti poversijį",
"Delete revision" : "Ištrinti poversijį",
"Save" : "Įrašyti",
"Cancel" : "Atsisakyti",
"Settings" : "Nustatymai",
+ "Unshare" : "Nustoti bendrinti",
"Account" : "Paskyra",
"Password" : "Slaptažodis",
"E-mail" : "El. paštas",
"URL" : "URL",
+ "Notes" : "Užrašai",
+ "Created" : "Sukurta",
"Edit" : "Taisyti",
"Delete" : "Ištrinti",
+ "Share" : "Bendrinti",
"Destroy" : "Sunaikinti",
"Permissions" : "Leidimai",
"Date" : "Data",
@@ -175,8 +185,11 @@
"Request removed" : "Užklausa pašalinta",
"Change vault" : "Pakeisti slėptuvę",
"Logout" : "Atsijungti",
+ "Donate" : "Paaukoti",
"Tags" : "Žymės",
+ "Expired" : "Nebegalioja",
"Loading…" : "Įkeliama…",
+ "email" : "elektroninis paštas",
"Description" : "Aprašas",
"Url" : "Url",
"Error while saving field" : "Klaida įrašant lauką",
@@ -196,6 +209,7 @@
"You recovered %1$s" : "Jūs atkūrėte %1$s",
"%1$s has been permanently deleted by %2$s" : "%2$s visiems laikams ištrynė %1$s",
"You permanently deleted %1$s" : "Jūs visiems laikams ištrynėte %1$s",
+ "Passwords" : "Slaptažodžiai",
"Remind me later" : "Priminti vėliau",
"Ignore" : "Nepaisyti",
"Passman" : "Passman",
@@ -210,9 +224,11 @@
"Disable JavaScript debugger" : "Išjungti JavaScript derintuvę",
"Source account" : "Šaltinio paskyra",
"Destination account" : "Paskirties paskyra",
+ "Request ID" : "Užklausos ID",
"Requested by" : "Užklausė",
"Reason" : "Priežastis",
"Loading&hellip;" : "Įkeliama&hellip;",
+ "Expires:" : "Galioja iki:",
"Connection to server lost" : "Ryšys su serveriu nutrūko",
"Problem loading page, reloading in 5 seconds" : "Problemos, įkeliant puslapį, po 5 sekundžių įkeliama iš naujo",
"Saving..." : "Įrašoma...",
diff --git a/l10n/lv.js b/l10n/lv.js
index a94c742a..73ac705c 100644
--- a/l10n/lv.js
+++ b/l10n/lv.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Paroles",
"Incorrect vault password!" : "Nepareiza akreditācijas datu parole!",
"Passwords do not match" : "Paroles nesakrīt",
"General" : "Vispārīgi",
@@ -42,6 +41,7 @@ OC.L10N.register(
"Add" : "Pievienot",
"Value" : "Vērtība",
"Type" : "Tips",
+ "Actions" : "Darbības",
"Empty" : "Tukšs",
"Filename" : "Datnes nosaukums",
"Upload date" : "Augšupielādes datums",
@@ -49,6 +49,8 @@ OC.L10N.register(
"Current OTP settings" : "Pašreizējāie OTP iestatījumi",
"Issuer" : "Izdevējs",
"Secret" : "Noslēpums",
+ "Expiration date" : "Termiņa datums",
+ "No expiration date set" : "Nav noteikts derīguma termiņa beigu datums",
"Disabled" : "Atspējots",
"Day(s)" : "Diena(s)",
"Week(s)" : "Nedēļa(s)",
@@ -67,6 +69,7 @@ OC.L10N.register(
"About Passman" : "Par Passman",
"Version" : "Versija",
"Bookmarklet" : "Grāmatzīmes",
+ "Vault password" : "Akreditācijas datu komplekta parole",
"Import type" : "Importa tips",
"Import" : "Importēt",
"Upload progress" : "Augšupielādes norise",
@@ -83,6 +86,7 @@ OC.L10N.register(
"Read" : "Lasīt",
"Write" : "Rakstīt",
"Files" : "Datnes",
+ "Pending" : "Gaida",
"Enable link sharing" : "Iespējot saites kopīgošana",
"Share until date" : "Koplietot līdz datumam",
"Show files" : "Rādīt datnes",
@@ -98,11 +102,13 @@ OC.L10N.register(
"Rank" : "Rangs",
"Reversed" : "Apvērsta",
"l33t-variations" : "l33t-variācijas",
+ "by" : "līdz",
"Label" : "Apzīmējums",
"Restore revision" : "Atjaunot revīziju",
"Save" : "Saglabāt",
"Cancel" : "Atcelt",
"Settings" : "Iestatījumi",
+ "Unshare" : "Pārtraukt dalīšanos",
"Account" : "Konts",
"Password" : "Parole",
"OTP" : "OTP",
@@ -132,6 +138,8 @@ OC.L10N.register(
"Tags" : "Birkas",
"Search Tags" : "Meklēt birkas",
"Click here to request it" : "Noklikšķiniet šeit, lai pieprasītu",
+ "Loading…" : "Notiek ielāde...",
+ "email" : "e-pasts",
"Description" : "Apraksts",
"Error while saving field" : "Kļūda, saglabājot lauku",
"You created %1$s" : "Jūs izveidojāt %1$s",
@@ -143,10 +151,12 @@ OC.L10N.register(
"%1$s has been permanently deleted by %2$s" : "%1$s neatgriezeniski izdzēsa %2$s",
"You permanently deleted %1$s" : "Jūs neatgriezeniski izdzēsāt %1$s",
"%s has been shared with a link" : "%s koplietots izmantojot saiti",
+ "Passwords" : "Paroles",
"Your credential \"%s\" expired, click here to update the credential." : "Jūsu akreditācijai \"%s\" beidzies derīgums. noklikšķiniet šeit, lai atjauninātu akreditācijas datus.",
"Remind me later" : "Atgādināt vēlāk",
"Ignore" : "Ignorēt",
"%s shared \"%s\" with you. Click here to accept" : "%s koplietots \"%s\" ar tevi. Noklikšķiniet šeit, lai akceptētu",
+ "Passman" : "Passman",
"Unable to get version info" : "Nevar iegūt versijas informāciju",
"Passman Settings" : "Passman iestatījumi",
"Check for new versions" : "Pārbaudīt, vai nav jaunas versijas",
diff --git a/l10n/lv.json b/l10n/lv.json
index b5ba7f1f..029e3a09 100644
--- a/l10n/lv.json
+++ b/l10n/lv.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Paroles",
"Incorrect vault password!" : "Nepareiza akreditācijas datu parole!",
"Passwords do not match" : "Paroles nesakrīt",
"General" : "Vispārīgi",
@@ -40,6 +39,7 @@
"Add" : "Pievienot",
"Value" : "Vērtība",
"Type" : "Tips",
+ "Actions" : "Darbības",
"Empty" : "Tukšs",
"Filename" : "Datnes nosaukums",
"Upload date" : "Augšupielādes datums",
@@ -47,6 +47,8 @@
"Current OTP settings" : "Pašreizējāie OTP iestatījumi",
"Issuer" : "Izdevējs",
"Secret" : "Noslēpums",
+ "Expiration date" : "Termiņa datums",
+ "No expiration date set" : "Nav noteikts derīguma termiņa beigu datums",
"Disabled" : "Atspējots",
"Day(s)" : "Diena(s)",
"Week(s)" : "Nedēļa(s)",
@@ -65,6 +67,7 @@
"About Passman" : "Par Passman",
"Version" : "Versija",
"Bookmarklet" : "Grāmatzīmes",
+ "Vault password" : "Akreditācijas datu komplekta parole",
"Import type" : "Importa tips",
"Import" : "Importēt",
"Upload progress" : "Augšupielādes norise",
@@ -81,6 +84,7 @@
"Read" : "Lasīt",
"Write" : "Rakstīt",
"Files" : "Datnes",
+ "Pending" : "Gaida",
"Enable link sharing" : "Iespējot saites kopīgošana",
"Share until date" : "Koplietot līdz datumam",
"Show files" : "Rādīt datnes",
@@ -96,11 +100,13 @@
"Rank" : "Rangs",
"Reversed" : "Apvērsta",
"l33t-variations" : "l33t-variācijas",
+ "by" : "līdz",
"Label" : "Apzīmējums",
"Restore revision" : "Atjaunot revīziju",
"Save" : "Saglabāt",
"Cancel" : "Atcelt",
"Settings" : "Iestatījumi",
+ "Unshare" : "Pārtraukt dalīšanos",
"Account" : "Konts",
"Password" : "Parole",
"OTP" : "OTP",
@@ -130,6 +136,8 @@
"Tags" : "Birkas",
"Search Tags" : "Meklēt birkas",
"Click here to request it" : "Noklikšķiniet šeit, lai pieprasītu",
+ "Loading…" : "Notiek ielāde...",
+ "email" : "e-pasts",
"Description" : "Apraksts",
"Error while saving field" : "Kļūda, saglabājot lauku",
"You created %1$s" : "Jūs izveidojāt %1$s",
@@ -141,10 +149,12 @@
"%1$s has been permanently deleted by %2$s" : "%1$s neatgriezeniski izdzēsa %2$s",
"You permanently deleted %1$s" : "Jūs neatgriezeniski izdzēsāt %1$s",
"%s has been shared with a link" : "%s koplietots izmantojot saiti",
+ "Passwords" : "Paroles",
"Your credential \"%s\" expired, click here to update the credential." : "Jūsu akreditācijai \"%s\" beidzies derīgums. noklikšķiniet šeit, lai atjauninātu akreditācijas datus.",
"Remind me later" : "Atgādināt vēlāk",
"Ignore" : "Ignorēt",
"%s shared \"%s\" with you. Click here to accept" : "%s koplietots \"%s\" ar tevi. Noklikšķiniet šeit, lai akceptētu",
+ "Passman" : "Passman",
"Unable to get version info" : "Nevar iegūt versijas informāciju",
"Passman Settings" : "Passman iestatījumi",
"Check for new versions" : "Pārbaudīt, vai nav jaunas versijas",
diff --git a/l10n/mk.js b/l10n/mk.js
new file mode 100644
index 00000000..2a42eaa7
--- /dev/null
+++ b/l10n/mk.js
@@ -0,0 +1,67 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "Општо",
+ "Done" : "Готово",
+ "Settings saved" : "Параматрите се зачувани",
+ "General settings" : "Општи параметри",
+ "Sharing" : "Споделување",
+ "Share with users and groups" : "Сподели со корисници и групи",
+ "Share link" : "Сподели линк",
+ "Saved!" : "Зачувано!",
+ "Good" : "Добро",
+ "Copy to clipboard" : "Копирај во клипборд",
+ "Username" : "Корисничко име",
+ "File" : "Датотека",
+ "Add" : "Додади",
+ "Type" : "Вид",
+ "Actions" : "Акции",
+ "Empty" : "Празно",
+ "Filename" : "Име на датотека",
+ "Size" : "Големина",
+ "Secret" : "Тајна",
+ "Expiration date" : "Рок на траење",
+ "No expiration date set" : "Не е поставен рок на траење",
+ "Disabled" : "Оневозможен",
+ "Export" : "Извези",
+ "Change" : "Измени",
+ "Version" : "Верзија",
+ "Import" : "Увези",
+ "Public key" : "Јавен клуч",
+ "Uploading" : "Uploading",
+ "User" : "Корисник",
+ "Read" : "Читај",
+ "Files" : "Датотеки",
+ "Pending" : "Чекање",
+ "Details" : "Детали",
+ "Hide details" : "Сокриј детали",
+ "by" : "од",
+ "Save" : "Зачувај",
+ "Cancel" : "Откажи",
+ "Settings" : "Параметри",
+ "Unshare" : "Несподелувај",
+ "Account" : "Сметка",
+ "Password" : "Лозинка",
+ "E-mail" : "е-пошта",
+ "URL" : "Адреса",
+ "Notes" : "Белешки",
+ "Edit" : "Уреди",
+ "Delete" : "Избриши",
+ "Share" : "Сподели",
+ "Date" : "Date",
+ "Accept" : "Прифати",
+ "Decline" : "Одбиј",
+ "Never" : "Никогаш",
+ "Logout" : "Одјава",
+ "Tags" : "Ознаки",
+ "Loading…" : "Се вчитува…",
+ "email" : "е-пошта",
+ "Description" : "Опис",
+ "You created %1$s" : "Креиравте %1$s",
+ "You deleted %1$s" : "Избришавте %1$s",
+ "Connection to server lost" : "Изгубена е врската со серверот",
+ "Saving..." : "Зачувува ...",
+ "Dismiss" : "Отфрли",
+ "seconds ago" : "пред неколку секунди"
+},
+"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;");
diff --git a/l10n/mk.json b/l10n/mk.json
new file mode 100644
index 00000000..ce8678c8
--- /dev/null
+++ b/l10n/mk.json
@@ -0,0 +1,65 @@
+{ "translations": {
+ "General" : "Општо",
+ "Done" : "Готово",
+ "Settings saved" : "Параматрите се зачувани",
+ "General settings" : "Општи параметри",
+ "Sharing" : "Споделување",
+ "Share with users and groups" : "Сподели со корисници и групи",
+ "Share link" : "Сподели линк",
+ "Saved!" : "Зачувано!",
+ "Good" : "Добро",
+ "Copy to clipboard" : "Копирај во клипборд",
+ "Username" : "Корисничко име",
+ "File" : "Датотека",
+ "Add" : "Додади",
+ "Type" : "Вид",
+ "Actions" : "Акции",
+ "Empty" : "Празно",
+ "Filename" : "Име на датотека",
+ "Size" : "Големина",
+ "Secret" : "Тајна",
+ "Expiration date" : "Рок на траење",
+ "No expiration date set" : "Не е поставен рок на траење",
+ "Disabled" : "Оневозможен",
+ "Export" : "Извези",
+ "Change" : "Измени",
+ "Version" : "Верзија",
+ "Import" : "Увези",
+ "Public key" : "Јавен клуч",
+ "Uploading" : "Uploading",
+ "User" : "Корисник",
+ "Read" : "Читај",
+ "Files" : "Датотеки",
+ "Pending" : "Чекање",
+ "Details" : "Детали",
+ "Hide details" : "Сокриј детали",
+ "by" : "од",
+ "Save" : "Зачувај",
+ "Cancel" : "Откажи",
+ "Settings" : "Параметри",
+ "Unshare" : "Несподелувај",
+ "Account" : "Сметка",
+ "Password" : "Лозинка",
+ "E-mail" : "е-пошта",
+ "URL" : "Адреса",
+ "Notes" : "Белешки",
+ "Edit" : "Уреди",
+ "Delete" : "Избриши",
+ "Share" : "Сподели",
+ "Date" : "Date",
+ "Accept" : "Прифати",
+ "Decline" : "Одбиј",
+ "Never" : "Никогаш",
+ "Logout" : "Одјава",
+ "Tags" : "Ознаки",
+ "Loading…" : "Се вчитува…",
+ "email" : "е-пошта",
+ "Description" : "Опис",
+ "You created %1$s" : "Креиравте %1$s",
+ "You deleted %1$s" : "Избришавте %1$s",
+ "Connection to server lost" : "Изгубена е врската со серверот",
+ "Saving..." : "Зачувува ...",
+ "Dismiss" : "Отфрли",
+ "seconds ago" : "пред неколку секунди"
+},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
+} \ No newline at end of file
diff --git a/l10n/mn.js b/l10n/mn.js
new file mode 100644
index 00000000..0d0639fb
--- /dev/null
+++ b/l10n/mn.js
@@ -0,0 +1,59 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "Ерөнхий",
+ "Done" : "Хийсэн",
+ "Settings saved" : "Тохиргоо хадгалагдлаа",
+ "Sharing" : "Түгээх",
+ "Share link" : "Холбоос хуваалцах",
+ "Saved!" : "Хадгалагдлаа!",
+ "Good" : "Сайн",
+ "Username" : "Хэрэглэгчийн нэр",
+ "File" : "File",
+ "Add" : "нэмэх",
+ "Value" : "Үнийн дүн",
+ "Type" : "Төрөл",
+ "Actions" : "Үйл ажиллагаа",
+ "Filename" : "Файлын нэр",
+ "Size" : "Хэмжээ",
+ "Disabled" : "идэвхигүй",
+ "Password generation settings" : "Нууц үг үеийн тохиргоо",
+ "Export" : "Экспорт",
+ "Version" : "төрөл",
+ "Import" : "Импорт",
+ "Uploading" : "Uploading",
+ "User" : "Хэрэглэгч",
+ "Files" : "файлууд",
+ "Revisions" : "Хяналт",
+ "Pending" : "Хүлээгдэж байгаа",
+ "Details" : "Дэлгэрэнгүй",
+ "Label" : "Хаяг",
+ "Save" : "Хадгалах",
+ "Cancel" : "болиулах",
+ "Settings" : "Тохиргоо",
+ "Unshare" : "Түгээлтийг зогсоох",
+ "Account" : "аккаунт",
+ "Password" : "Нууц үг",
+ "E-mail" : "И-мэйл",
+ "URL" : "URL",
+ "Notes" : "Шинэ ",
+ "Changed" : "Өөрчилсөн",
+ "Created" : "Үүсгэсэн",
+ "Edit" : "засварлах",
+ "Delete" : "Устгах",
+ "Share" : "Түгээх",
+ "Date" : "Он сар өдөр",
+ "Accept" : "Хүлээн зөвшөөрөх",
+ "Decline" : "Зөвшөөрөхгүй",
+ "Never" : "хэзээч",
+ "Tags" : "Tag-үүд",
+ "Loading…" : "уншиж байна",
+ "email" : "цахим шуудан",
+ "Description" : "Тодорхойлолт",
+ "You created %1$s" : "Та %1$s үүсгэлээ",
+ "You deleted %1$s" : "Та %1$s-ийг устгалаа",
+ "Ignore" : "Үл тоох",
+ "Dismiss" : "Арилгах",
+ "seconds ago" : "хоёрдахь өмнө"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/mn.json b/l10n/mn.json
new file mode 100644
index 00000000..8ddd1ee1
--- /dev/null
+++ b/l10n/mn.json
@@ -0,0 +1,57 @@
+{ "translations": {
+ "General" : "Ерөнхий",
+ "Done" : "Хийсэн",
+ "Settings saved" : "Тохиргоо хадгалагдлаа",
+ "Sharing" : "Түгээх",
+ "Share link" : "Холбоос хуваалцах",
+ "Saved!" : "Хадгалагдлаа!",
+ "Good" : "Сайн",
+ "Username" : "Хэрэглэгчийн нэр",
+ "File" : "File",
+ "Add" : "нэмэх",
+ "Value" : "Үнийн дүн",
+ "Type" : "Төрөл",
+ "Actions" : "Үйл ажиллагаа",
+ "Filename" : "Файлын нэр",
+ "Size" : "Хэмжээ",
+ "Disabled" : "идэвхигүй",
+ "Password generation settings" : "Нууц үг үеийн тохиргоо",
+ "Export" : "Экспорт",
+ "Version" : "төрөл",
+ "Import" : "Импорт",
+ "Uploading" : "Uploading",
+ "User" : "Хэрэглэгч",
+ "Files" : "файлууд",
+ "Revisions" : "Хяналт",
+ "Pending" : "Хүлээгдэж байгаа",
+ "Details" : "Дэлгэрэнгүй",
+ "Label" : "Хаяг",
+ "Save" : "Хадгалах",
+ "Cancel" : "болиулах",
+ "Settings" : "Тохиргоо",
+ "Unshare" : "Түгээлтийг зогсоох",
+ "Account" : "аккаунт",
+ "Password" : "Нууц үг",
+ "E-mail" : "И-мэйл",
+ "URL" : "URL",
+ "Notes" : "Шинэ ",
+ "Changed" : "Өөрчилсөн",
+ "Created" : "Үүсгэсэн",
+ "Edit" : "засварлах",
+ "Delete" : "Устгах",
+ "Share" : "Түгээх",
+ "Date" : "Он сар өдөр",
+ "Accept" : "Хүлээн зөвшөөрөх",
+ "Decline" : "Зөвшөөрөхгүй",
+ "Never" : "хэзээч",
+ "Tags" : "Tag-үүд",
+ "Loading…" : "уншиж байна",
+ "email" : "цахим шуудан",
+ "Description" : "Тодорхойлолт",
+ "You created %1$s" : "Та %1$s үүсгэлээ",
+ "You deleted %1$s" : "Та %1$s-ийг устгалаа",
+ "Ignore" : "Үл тоох",
+ "Dismiss" : "Арилгах",
+ "seconds ago" : "хоёрдахь өмнө"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/ms_MY.js b/l10n/ms_MY.js
new file mode 100644
index 00000000..85abeb7c
--- /dev/null
+++ b/l10n/ms_MY.js
@@ -0,0 +1,33 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "Umum",
+ "Done" : "Done",
+ "Share link" : "Share link",
+ "Username" : "Nama pengguna",
+ "File" : "File",
+ "Add" : "Tambah",
+ "Type" : "Jenis",
+ "Size" : "Saiz",
+ "Export" : "Eksport",
+ "Import" : "Import",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "Fail",
+ "Pending" : "Dalam proses",
+ "by" : "oleh",
+ "Save" : "Simpan",
+ "Cancel" : "Batal",
+ "Settings" : "Tetapan",
+ "Password" : "Kata laluan",
+ "URL" : "URL",
+ "Notes" : "Nota",
+ "Edit" : "Sunting",
+ "Delete" : "Padam",
+ "Share" : "Kongsi",
+ "Date" : "Date",
+ "Description" : "Keterangan",
+ "You created %1$s" : "Anda telah membina %1$s",
+ "Saving..." : "Sedang menyimpan..."
+},
+"nplurals=1; plural=0;");
diff --git a/l10n/ms_MY.json b/l10n/ms_MY.json
new file mode 100644
index 00000000..d25c7333
--- /dev/null
+++ b/l10n/ms_MY.json
@@ -0,0 +1,31 @@
+{ "translations": {
+ "General" : "Umum",
+ "Done" : "Done",
+ "Share link" : "Share link",
+ "Username" : "Nama pengguna",
+ "File" : "File",
+ "Add" : "Tambah",
+ "Type" : "Jenis",
+ "Size" : "Saiz",
+ "Export" : "Eksport",
+ "Import" : "Import",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "Fail",
+ "Pending" : "Dalam proses",
+ "by" : "oleh",
+ "Save" : "Simpan",
+ "Cancel" : "Batal",
+ "Settings" : "Tetapan",
+ "Password" : "Kata laluan",
+ "URL" : "URL",
+ "Notes" : "Nota",
+ "Edit" : "Sunting",
+ "Delete" : "Padam",
+ "Share" : "Kongsi",
+ "Date" : "Date",
+ "Description" : "Keterangan",
+ "You created %1$s" : "Anda telah membina %1$s",
+ "Saving..." : "Sedang menyimpan..."
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/l10n/nb.js b/l10n/nb.js
index f53025ac..a8106ed7 100644
--- a/l10n/nb.js
+++ b/l10n/nb.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Passord",
"Generating sharing keys ( %s / 2)" : "Oppretter delingsnøkler ( %s / 2)",
"Incorrect vault password!" : "Feil hvelv-passord!",
"Passwords do not match" : "Passordene samsvarer ikke",
@@ -255,10 +254,14 @@ OC.L10N.register(
"Deleted credentials" : "Slett påloggingsdetaljer",
"Logout" : "Logg ut",
"Donate" : "Doner",
+ "Tags" : "Merkelapper",
+ "Expired" : "Utløpt",
"Someone has shared a credential with you." : "Noen har delt en påloggingsinformasjon med deg.",
"Click here to request it" : "Klikk her for å forespørre det",
"Loading…" : "Laster…",
"Awwhh… credential not found. Maybe it expired" : "Huffda… innloggingsdetaljen ble ikke funnet. Kanskje den har utløpt",
+ "email" : "e-post",
+ "Description" : "Beskrivelse",
"Error while saving field" : "Feil under lagring av felt",
"A Passman item has been created, modified or deleted" : "Et Passman element er opprettet, endret eller slettet",
"A Passman item has expired" : "Et Passman element er utløpt",
@@ -282,6 +285,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s er delt med %2$s",
"You received a share request for %1$s from %2$s" : "Du mottok et delingsønske fra %1$s til %2$s",
"%s has been shared with a link" : "%s er delt med en lenke",
+ "Passwords" : "Passord",
"Your credential \"%s\" expired, click here to update the credential." : "Identiteten \"%s\" er utløpt, klikk her for å oppdatere.",
"Remind me later" : "Påminnn meg senere",
"Ignore" : "Ignorer",
diff --git a/l10n/nb.json b/l10n/nb.json
index 14dbea7d..4f87572a 100644
--- a/l10n/nb.json
+++ b/l10n/nb.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Passord",
"Generating sharing keys ( %s / 2)" : "Oppretter delingsnøkler ( %s / 2)",
"Incorrect vault password!" : "Feil hvelv-passord!",
"Passwords do not match" : "Passordene samsvarer ikke",
@@ -253,10 +252,14 @@
"Deleted credentials" : "Slett påloggingsdetaljer",
"Logout" : "Logg ut",
"Donate" : "Doner",
+ "Tags" : "Merkelapper",
+ "Expired" : "Utløpt",
"Someone has shared a credential with you." : "Noen har delt en påloggingsinformasjon med deg.",
"Click here to request it" : "Klikk her for å forespørre det",
"Loading…" : "Laster…",
"Awwhh… credential not found. Maybe it expired" : "Huffda… innloggingsdetaljen ble ikke funnet. Kanskje den har utløpt",
+ "email" : "e-post",
+ "Description" : "Beskrivelse",
"Error while saving field" : "Feil under lagring av felt",
"A Passman item has been created, modified or deleted" : "Et Passman element er opprettet, endret eller slettet",
"A Passman item has expired" : "Et Passman element er utløpt",
@@ -280,6 +283,7 @@
"%1$s has been shared with %2$s" : "%1$s er delt med %2$s",
"You received a share request for %1$s from %2$s" : "Du mottok et delingsønske fra %1$s til %2$s",
"%s has been shared with a link" : "%s er delt med en lenke",
+ "Passwords" : "Passord",
"Your credential \"%s\" expired, click here to update the credential." : "Identiteten \"%s\" er utløpt, klikk her for å oppdatere.",
"Remind me later" : "Påminnn meg senere",
"Ignore" : "Ignorer",
diff --git a/l10n/nl.js b/l10n/nl.js
index cf79086e..1025e947 100644
--- a/l10n/nl.js
+++ b/l10n/nl.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Wachtwoorden",
"Generating sharing keys ( %s / 2)" : "Genereren share sleutels ( %s / 2)",
"Incorrect vault password!" : "Onjuist kluiswachtwoord",
"Passwords do not match" : "Wachtwoorden komen niet overeen.",
@@ -325,6 +324,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s is gedeeld met %2$s",
"You received a share request for %1$s from %2$s" : "Je ontving een verzoek om %1$s te delen met %2$s",
"%s has been shared with a link" : "%s is gedeeld met een link",
+ "Passwords" : "Wachtwoorden",
"Your credential \"%s\" expired, click here to update the credential." : "Je inloggegevens \"%s\" zijn vervallen, klik hier om ze te vernieuwen.",
"Remind me later" : "Herinner me later",
"Ignore" : "Negeren",
diff --git a/l10n/nl.json b/l10n/nl.json
index 81c1a016..12960d2f 100644
--- a/l10n/nl.json
+++ b/l10n/nl.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Wachtwoorden",
"Generating sharing keys ( %s / 2)" : "Genereren share sleutels ( %s / 2)",
"Incorrect vault password!" : "Onjuist kluiswachtwoord",
"Passwords do not match" : "Wachtwoorden komen niet overeen.",
@@ -323,6 +322,7 @@
"%1$s has been shared with %2$s" : "%1$s is gedeeld met %2$s",
"You received a share request for %1$s from %2$s" : "Je ontving een verzoek om %1$s te delen met %2$s",
"%s has been shared with a link" : "%s is gedeeld met een link",
+ "Passwords" : "Wachtwoorden",
"Your credential \"%s\" expired, click here to update the credential." : "Je inloggegevens \"%s\" zijn vervallen, klik hier om ze te vernieuwen.",
"Remind me later" : "Herinner me later",
"Ignore" : "Negeren",
diff --git a/l10n/nn_NO.js b/l10n/nn_NO.js
new file mode 100644
index 00000000..934c2bab
--- /dev/null
+++ b/l10n/nn_NO.js
@@ -0,0 +1,48 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "Generelt",
+ "Done" : "Ferdig",
+ "Sharing" : "Deling",
+ "Share link" : "Del lenkje",
+ "Good" : "Bra",
+ "Username" : "Brukarnamn",
+ "File" : "Fil",
+ "Add" : "Legg til",
+ "Type" : "Type",
+ "Actions" : "Handlingar",
+ "Size" : "Storleik",
+ "Expiration date" : "Utløpsdato",
+ "Export" : "Eksporter",
+ "Version" : "Utgåve",
+ "Import" : "Importer",
+ "Uploading" : "Uploading",
+ "User" : "Bruker",
+ "Files" : "Filer",
+ "Pending" : "Under vegs",
+ "Details" : "Detaljar",
+ "by" : "av",
+ "Save" : "Lagre",
+ "Cancel" : "Avbryt",
+ "Settings" : "Instillingar",
+ "Unshare" : "Fjern deling",
+ "Password" : "Passord",
+ "E-mail" : "E-post",
+ "URL" : "URL",
+ "Notes" : "Notat",
+ "Created" : "Lagd",
+ "Edit" : "Endra",
+ "Delete" : "Ta bort",
+ "Share" : "Del",
+ "Date" : "Date",
+ "Never" : "Aldri",
+ "Donate" : "Donér",
+ "Tags" : "Emneord",
+ "Description" : "Skildring",
+ "You created %1$s" : "Du oppretta %1$s",
+ "You deleted %1$s" : "Du sletta %1$s",
+ "Saving..." : "Lagrar …",
+ "Dismiss" : "Forkast",
+ "seconds ago" : "sekund sidan"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/nn_NO.json b/l10n/nn_NO.json
new file mode 100644
index 00000000..efdb656e
--- /dev/null
+++ b/l10n/nn_NO.json
@@ -0,0 +1,46 @@
+{ "translations": {
+ "General" : "Generelt",
+ "Done" : "Ferdig",
+ "Sharing" : "Deling",
+ "Share link" : "Del lenkje",
+ "Good" : "Bra",
+ "Username" : "Brukarnamn",
+ "File" : "Fil",
+ "Add" : "Legg til",
+ "Type" : "Type",
+ "Actions" : "Handlingar",
+ "Size" : "Storleik",
+ "Expiration date" : "Utløpsdato",
+ "Export" : "Eksporter",
+ "Version" : "Utgåve",
+ "Import" : "Importer",
+ "Uploading" : "Uploading",
+ "User" : "Bruker",
+ "Files" : "Filer",
+ "Pending" : "Under vegs",
+ "Details" : "Detaljar",
+ "by" : "av",
+ "Save" : "Lagre",
+ "Cancel" : "Avbryt",
+ "Settings" : "Instillingar",
+ "Unshare" : "Fjern deling",
+ "Password" : "Passord",
+ "E-mail" : "E-post",
+ "URL" : "URL",
+ "Notes" : "Notat",
+ "Created" : "Lagd",
+ "Edit" : "Endra",
+ "Delete" : "Ta bort",
+ "Share" : "Del",
+ "Date" : "Date",
+ "Never" : "Aldri",
+ "Donate" : "Donér",
+ "Tags" : "Emneord",
+ "Description" : "Skildring",
+ "You created %1$s" : "Du oppretta %1$s",
+ "You deleted %1$s" : "Du sletta %1$s",
+ "Saving..." : "Lagrar …",
+ "Dismiss" : "Forkast",
+ "seconds ago" : "sekund sidan"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/oc.js b/l10n/oc.js
new file mode 100644
index 00000000..05d78959
--- /dev/null
+++ b/l10n/oc.js
@@ -0,0 +1,42 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "Generals",
+ "Done" : "Done",
+ "Settings saved" : "Paramètres enregistrats",
+ "Sharing" : "Partiment",
+ "Share link" : "Partejar lo ligam",
+ "Username" : "Nom d'utilizaire",
+ "File" : "File",
+ "Add" : "Apondre",
+ "Type" : "Tipe",
+ "Actions" : "Accions",
+ "Size" : "Talha",
+ "Expiration date" : "Data d'expiracion",
+ "Export" : "Exportar",
+ "Import" : "Importar",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Read" : "Legit",
+ "Files" : "Fichièrs",
+ "Details" : "Detalhs",
+ "by" : "per",
+ "Save" : "Salvar",
+ "Cancel" : "Anullar",
+ "Settings" : "Paramètres",
+ "Unshare" : "Partejar pas",
+ "Password" : "Senhal",
+ "URL" : "URL",
+ "Notes" : "Nòtas",
+ "Edit" : "Modificar",
+ "Delete" : "Suprimir",
+ "Share" : "Partejar",
+ "Date" : "Date",
+ "Never" : "Pas jamais",
+ "Loading…" : "Cargament...",
+ "Description" : "Descripcion",
+ "Saving..." : "Enregistrament...",
+ "Dismiss" : "Ignorar",
+ "seconds ago" : "i a qualques segondas"
+},
+"nplurals=2; plural=(n > 1);");
diff --git a/l10n/oc.json b/l10n/oc.json
new file mode 100644
index 00000000..0f3f3048
--- /dev/null
+++ b/l10n/oc.json
@@ -0,0 +1,40 @@
+{ "translations": {
+ "General" : "Generals",
+ "Done" : "Done",
+ "Settings saved" : "Paramètres enregistrats",
+ "Sharing" : "Partiment",
+ "Share link" : "Partejar lo ligam",
+ "Username" : "Nom d'utilizaire",
+ "File" : "File",
+ "Add" : "Apondre",
+ "Type" : "Tipe",
+ "Actions" : "Accions",
+ "Size" : "Talha",
+ "Expiration date" : "Data d'expiracion",
+ "Export" : "Exportar",
+ "Import" : "Importar",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Read" : "Legit",
+ "Files" : "Fichièrs",
+ "Details" : "Detalhs",
+ "by" : "per",
+ "Save" : "Salvar",
+ "Cancel" : "Anullar",
+ "Settings" : "Paramètres",
+ "Unshare" : "Partejar pas",
+ "Password" : "Senhal",
+ "URL" : "URL",
+ "Notes" : "Nòtas",
+ "Edit" : "Modificar",
+ "Delete" : "Suprimir",
+ "Share" : "Partejar",
+ "Date" : "Date",
+ "Never" : "Pas jamais",
+ "Loading…" : "Cargament...",
+ "Description" : "Descripcion",
+ "Saving..." : "Enregistrament...",
+ "Dismiss" : "Ignorar",
+ "seconds ago" : "i a qualques segondas"
+},"pluralForm" :"nplurals=2; plural=(n > 1);"
+} \ No newline at end of file
diff --git a/l10n/pl.js b/l10n/pl.js
index d112a5b6..e06790f1 100644
--- a/l10n/pl.js
+++ b/l10n/pl.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Hasła",
"Generating sharing keys ( %s / 2)" : "Tworzenie kluczy współdzielonych ( %s / 2)",
"Incorrect vault password!" : "Nieprawidłowe hasło sejfu!",
"Passwords do not match" : "Hasła nie są jednakowe",
@@ -54,8 +53,8 @@ OC.L10N.register(
"New password does not match!" : "Nowe hasła nie pasują do siebie",
"Please log in with your new vault password" : "Zaloguj się do sejfu używając nowego hasła",
"Share with users and groups" : "Udostępnij użytkownikom i grupom",
- "Share link" : "Łącze udostępniania",
- "Are you sure you want to leave? This will corrupt this credential" : "Na pewno chcesz wyjść? To uszkodzi twoje poświadczenia",
+ "Share link" : "Udostępnij link",
+ "Are you sure you want to leave? This will corrupt this credential" : "Na pewno chcesz wyjść? Spowoduje to uszkodzenie tego poświadczenia",
"Credential unshared" : "Poświadczenia nie udostępnione",
"Credential shared" : "Poświadczenia udostepnione",
"Saved!" : "Zapisano!",
@@ -170,7 +169,7 @@ OC.L10N.register(
"Files" : "Pliki",
"Revisions" : "Wersje",
"Pending" : "Oczekuje",
- "Enable link sharing" : "Włącz link udostępniania",
+ "Enable link sharing" : "Włącz udostępnianie linkiem",
"Share until date" : "Udostępniaj do daty",
"Expire after views" : "Wygaś po oglądaniu",
"Click \\\"Share\\\" first" : "Najpierw zaznacz \"Włącz link...\"",
@@ -179,13 +178,13 @@ OC.L10N.register(
"Hide details" : "Ukryj szczegóły",
"Password score" : "Punktacja hasła",
"Cracking times" : "Czasy crackowania",
- "100 / hour" : "100 / godzinę",
+ "100 / hour" : "100/godzinę",
"Throttled online attack" : "Spowolniony atak online",
- "10 / second" : "10 / sekundę",
+ "10 / second" : "10/sekundę",
"Unthrottled online attack" : "Nie dławiony atak online",
- "10k / second" : "10k / sekundę",
+ "10k / second" : "10k/sekundę",
"Offline attack, slow hash, many cores" : "Atak offline, wolne hashowanie, dużo rdzeni",
- "10B / second" : "10B / sekundę",
+ "10B / second" : "10B/sekundę",
"Offline attack, fast hash, many cores" : "Atak offline, szybki hashowanie, dużo rdzeni",
"Match sequence" : "Pasująca sekwencja",
"See match sequence" : "Zobacz pasującą sekwencję",
@@ -290,8 +289,8 @@ OC.L10N.register(
"Expired" : "Przedawnione hasła",
"Filter Tags" : "Filtruj etykiety",
"Simple Navigation" : "Nawigacja prosta",
- "Someone has shared a credential with you." : "Ktoś udostępnił ci poświadczenia",
- "Click here to request it" : "Kliknij to, aby zażądać tego",
+ "Someone has shared a credential with you." : "Ktoś udostępnił Tobie poświadczenie.",
+ "Click here to request it" : "Kliknij tutaj, aby o to poprosić",
"Loading…" : "Ładowanie…",
"Awwhh… credential not found. Maybe it expired" : "Ups… poświadczenie nie znalezione. Może wygasło.",
"Compromise!" : "Kompromis!",
@@ -300,7 +299,7 @@ OC.L10N.register(
"email" : "e-mail",
"Description" : "Opis",
"Url" : "URL",
- "Custom Search:" : "Niestandardowe wyszukiwanie:",
+ "Custom Search:" : "Nietypowe wyszukiwanie:",
"Revert to defaults" : "Przywróć ustawienia domyślne",
"Error while saving field" : "Błąd podczas zapisywania pola",
"A Passman item has been created, modified or deleted" : "Pozycja Passman została utworzona, zmodyfikowana lub skasowana",
@@ -308,29 +307,30 @@ OC.L10N.register(
"A Passman item has been shared" : "Pozycja Passman została udostępniona",
"A Passman item has been renamed" : "Pozycja Passman została zmieniona",
"%1$s has been created by %2$s" : "%1$s został utworzony przez %2$s",
- "You created %1$s" : "Utworzono %1$s",
+ "You created %1$s" : "Utworzyłeś %1$s",
"%1$s has been updated by %2$s" : "%1$s został zaktualizowany przez %2$s",
- "You updated %1$s" : "Zaktualizowano %1$s",
+ "You updated %1$s" : "Zaktualizowałeś %1$s",
"%2$s has revised %1$s to the revision of %3$s" : "%2$s przywrócił %1$s do wersji z %3$s",
"You reverted %1$s back to the revision of %3$s" : "Cofnąłeś %1$s do wersji z %3$s",
"%3$s has renamed %1$s to %2$s" : "%3$s zmienił(-ła) %1$s na %2$s",
- "You renamed %1$s to %2$s" : "Zmieniono nazwę %1$s na %2$s",
+ "You renamed %1$s to %2$s" : "Zmieniłeś nazwę %1$s na %2$s",
"%1$s has been deleted by %2$s" : "%1$s został usunięty przez %2$s",
- "You deleted %1$s" : "Został usunięty %1$s",
+ "You deleted %1$s" : "Usunąłeś %1$s",
"%1$s has been recovered by %2$s" : "%1$s został odtworzony przez %2$s",
- "You recovered %1$s" : "Odzyskano %1$s",
+ "You recovered %1$s" : "Odzyskałeś %1$s",
"%1$s has been permanently deleted by %2$s" : "%1$s został trwale usunięty przez %2$s",
- "You permanently deleted %1$s" : "Trwale usunięto %1$s",
+ "You permanently deleted %1$s" : "Trwale usunąłeś %1$s",
"The password of %1$s has expired, renew it now." : "Hasło %1$s wygasło, odnów je teraz.",
"%1$s has been shared with %2$s" : "%1$s udostępniono dla %2$s",
- "You received a share request for %1$s from %2$s" : "Użytkownik %2$s poprosił Cię o udstępnienie %1$s",
+ "You received a share request for %1$s from %2$s" : "Użytkownik %2$s poprosił Cię o udostępnienie %1$s",
"%s has been shared with a link" : "%s został udostępniony łączem",
- "Your credential \"%s\" expired, click here to update the credential." : "Twoje poświadczenie \"%s\" wygasła, kliknij tu, aby je zaktualizować.",
+ "Passwords" : "Hasła",
+ "Your credential \"%s\" expired, click here to update the credential." : "Twoje poświadczenie \"%s\" wygasło, kliknij tutaj, aby je zaktualizować.",
"Remind me later" : "Przypomnij mi później",
"Ignore" : "Ignoruj",
- "%s shared \"%s\" with you. Click here to accept" : "%s udostępnił ci \"%s\". Kliknij, aby zaakceptować",
- "%s has declined your share request for \"%s\"." : "%s odrzucił twoją prośbę o udostępnienie \"%s\".",
- "%s has accepted your share request for \"%s\"." : "%s zaakceptował twoją prośbę o udostępnienie \"%s\".",
+ "%s shared \"%s\" with you. Click here to accept" : "%s udostępnił Tobie \"%s\". Kliknij tutaj, aby zaakceptować",
+ "%s has declined your share request for \"%s\"." : "%s odrzucił Twoją prośbę o udostępnienie \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s zaakceptował Twoją prośbę o udostępnienie \"%s\".",
"Passman" : "Passman",
"Passman is a full featured password manager." : "Passman to w pełni funkcjonalny menedżer haseł.",
"Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman to w pełni funkcjonalny menedżer haseł.\nFunkcje:\n- Sejfy\n- Klucz Sejfu nigdy nie jest wysyłany na serwer\n- Rozszerzenie przeglądarki dla łatwego dostępu do haseł\n- Aplikacja na Androida na dostęp do drogi\n- Poświadczenia są po stronie klienta zaszyfrowane za pomocą 256-bitowej AES\n- Poświadczenia są szyfrowane po stronie serwera za pomocą 256-bitowej AES\n- Możliwość dodawania pól niestandardowych do poświadczeń\n- Wbudowany generator OTP (One Time Password)\n- Analizator haseł\n- Udostępniaj hasła wewnętrznie i przez łącze w bezpieczny sposób.\n- Importowanie z różnych menedżerów haseł (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nAby zapoznać się z demonstracją tej aplikacji, odwiedź [https://demo.passman.cc](https://demo.passman.cc)",
@@ -345,8 +345,8 @@ OC.L10N.register(
"Enable HTTPS check" : "Włącz sprawdzenie HTTPS",
"Disable context menu" : "Wyłącz menu kontekstowe",
"Disable JavaScript debugger" : "Wyłącz debugger JavaScript",
- "Allow users on this server to share passwords with a link" : "Zezwól użytkownikom tego serwera na udostępnianie haseł łączem",
- "Allow users on this server to share passwords with other users" : "Zezwól użytkownikom tego serwera na udostępnianie haseł innym użytkownikom",
+ "Allow users on this server to share passwords with a link" : "Zezwalaj użytkownikom tego serwera na udostępnianie haseł za pomocą linku",
+ "Allow users on this server to share passwords with other users" : "Zezwalaj użytkownikom tego serwera na udostępnianie haseł innym użytkownikom",
"Move credentials from one account to another" : "Przenieś poświadczenia pomiędzy kontami",
"Source account" : "Konto źródłowe",
"Destination account" : "Konto docelowe",
diff --git a/l10n/pl.json b/l10n/pl.json
index 72d60d8e..b610c8c5 100644
--- a/l10n/pl.json
+++ b/l10n/pl.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Hasła",
"Generating sharing keys ( %s / 2)" : "Tworzenie kluczy współdzielonych ( %s / 2)",
"Incorrect vault password!" : "Nieprawidłowe hasło sejfu!",
"Passwords do not match" : "Hasła nie są jednakowe",
@@ -52,8 +51,8 @@
"New password does not match!" : "Nowe hasła nie pasują do siebie",
"Please log in with your new vault password" : "Zaloguj się do sejfu używając nowego hasła",
"Share with users and groups" : "Udostępnij użytkownikom i grupom",
- "Share link" : "Łącze udostępniania",
- "Are you sure you want to leave? This will corrupt this credential" : "Na pewno chcesz wyjść? To uszkodzi twoje poświadczenia",
+ "Share link" : "Udostępnij link",
+ "Are you sure you want to leave? This will corrupt this credential" : "Na pewno chcesz wyjść? Spowoduje to uszkodzenie tego poświadczenia",
"Credential unshared" : "Poświadczenia nie udostępnione",
"Credential shared" : "Poświadczenia udostepnione",
"Saved!" : "Zapisano!",
@@ -168,7 +167,7 @@
"Files" : "Pliki",
"Revisions" : "Wersje",
"Pending" : "Oczekuje",
- "Enable link sharing" : "Włącz link udostępniania",
+ "Enable link sharing" : "Włącz udostępnianie linkiem",
"Share until date" : "Udostępniaj do daty",
"Expire after views" : "Wygaś po oglądaniu",
"Click \\\"Share\\\" first" : "Najpierw zaznacz \"Włącz link...\"",
@@ -177,13 +176,13 @@
"Hide details" : "Ukryj szczegóły",
"Password score" : "Punktacja hasła",
"Cracking times" : "Czasy crackowania",
- "100 / hour" : "100 / godzinę",
+ "100 / hour" : "100/godzinę",
"Throttled online attack" : "Spowolniony atak online",
- "10 / second" : "10 / sekundę",
+ "10 / second" : "10/sekundę",
"Unthrottled online attack" : "Nie dławiony atak online",
- "10k / second" : "10k / sekundę",
+ "10k / second" : "10k/sekundę",
"Offline attack, slow hash, many cores" : "Atak offline, wolne hashowanie, dużo rdzeni",
- "10B / second" : "10B / sekundę",
+ "10B / second" : "10B/sekundę",
"Offline attack, fast hash, many cores" : "Atak offline, szybki hashowanie, dużo rdzeni",
"Match sequence" : "Pasująca sekwencja",
"See match sequence" : "Zobacz pasującą sekwencję",
@@ -288,8 +287,8 @@
"Expired" : "Przedawnione hasła",
"Filter Tags" : "Filtruj etykiety",
"Simple Navigation" : "Nawigacja prosta",
- "Someone has shared a credential with you." : "Ktoś udostępnił ci poświadczenia",
- "Click here to request it" : "Kliknij to, aby zażądać tego",
+ "Someone has shared a credential with you." : "Ktoś udostępnił Tobie poświadczenie.",
+ "Click here to request it" : "Kliknij tutaj, aby o to poprosić",
"Loading…" : "Ładowanie…",
"Awwhh… credential not found. Maybe it expired" : "Ups… poświadczenie nie znalezione. Może wygasło.",
"Compromise!" : "Kompromis!",
@@ -298,7 +297,7 @@
"email" : "e-mail",
"Description" : "Opis",
"Url" : "URL",
- "Custom Search:" : "Niestandardowe wyszukiwanie:",
+ "Custom Search:" : "Nietypowe wyszukiwanie:",
"Revert to defaults" : "Przywróć ustawienia domyślne",
"Error while saving field" : "Błąd podczas zapisywania pola",
"A Passman item has been created, modified or deleted" : "Pozycja Passman została utworzona, zmodyfikowana lub skasowana",
@@ -306,29 +305,30 @@
"A Passman item has been shared" : "Pozycja Passman została udostępniona",
"A Passman item has been renamed" : "Pozycja Passman została zmieniona",
"%1$s has been created by %2$s" : "%1$s został utworzony przez %2$s",
- "You created %1$s" : "Utworzono %1$s",
+ "You created %1$s" : "Utworzyłeś %1$s",
"%1$s has been updated by %2$s" : "%1$s został zaktualizowany przez %2$s",
- "You updated %1$s" : "Zaktualizowano %1$s",
+ "You updated %1$s" : "Zaktualizowałeś %1$s",
"%2$s has revised %1$s to the revision of %3$s" : "%2$s przywrócił %1$s do wersji z %3$s",
"You reverted %1$s back to the revision of %3$s" : "Cofnąłeś %1$s do wersji z %3$s",
"%3$s has renamed %1$s to %2$s" : "%3$s zmienił(-ła) %1$s na %2$s",
- "You renamed %1$s to %2$s" : "Zmieniono nazwę %1$s na %2$s",
+ "You renamed %1$s to %2$s" : "Zmieniłeś nazwę %1$s na %2$s",
"%1$s has been deleted by %2$s" : "%1$s został usunięty przez %2$s",
- "You deleted %1$s" : "Został usunięty %1$s",
+ "You deleted %1$s" : "Usunąłeś %1$s",
"%1$s has been recovered by %2$s" : "%1$s został odtworzony przez %2$s",
- "You recovered %1$s" : "Odzyskano %1$s",
+ "You recovered %1$s" : "Odzyskałeś %1$s",
"%1$s has been permanently deleted by %2$s" : "%1$s został trwale usunięty przez %2$s",
- "You permanently deleted %1$s" : "Trwale usunięto %1$s",
+ "You permanently deleted %1$s" : "Trwale usunąłeś %1$s",
"The password of %1$s has expired, renew it now." : "Hasło %1$s wygasło, odnów je teraz.",
"%1$s has been shared with %2$s" : "%1$s udostępniono dla %2$s",
- "You received a share request for %1$s from %2$s" : "Użytkownik %2$s poprosił Cię o udstępnienie %1$s",
+ "You received a share request for %1$s from %2$s" : "Użytkownik %2$s poprosił Cię o udostępnienie %1$s",
"%s has been shared with a link" : "%s został udostępniony łączem",
- "Your credential \"%s\" expired, click here to update the credential." : "Twoje poświadczenie \"%s\" wygasła, kliknij tu, aby je zaktualizować.",
+ "Passwords" : "Hasła",
+ "Your credential \"%s\" expired, click here to update the credential." : "Twoje poświadczenie \"%s\" wygasło, kliknij tutaj, aby je zaktualizować.",
"Remind me later" : "Przypomnij mi później",
"Ignore" : "Ignoruj",
- "%s shared \"%s\" with you. Click here to accept" : "%s udostępnił ci \"%s\". Kliknij, aby zaakceptować",
- "%s has declined your share request for \"%s\"." : "%s odrzucił twoją prośbę o udostępnienie \"%s\".",
- "%s has accepted your share request for \"%s\"." : "%s zaakceptował twoją prośbę o udostępnienie \"%s\".",
+ "%s shared \"%s\" with you. Click here to accept" : "%s udostępnił Tobie \"%s\". Kliknij tutaj, aby zaakceptować",
+ "%s has declined your share request for \"%s\"." : "%s odrzucił Twoją prośbę o udostępnienie \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s zaakceptował Twoją prośbę o udostępnienie \"%s\".",
"Passman" : "Passman",
"Passman is a full featured password manager." : "Passman to w pełni funkcjonalny menedżer haseł.",
"Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman to w pełni funkcjonalny menedżer haseł.\nFunkcje:\n- Sejfy\n- Klucz Sejfu nigdy nie jest wysyłany na serwer\n- Rozszerzenie przeglądarki dla łatwego dostępu do haseł\n- Aplikacja na Androida na dostęp do drogi\n- Poświadczenia są po stronie klienta zaszyfrowane za pomocą 256-bitowej AES\n- Poświadczenia są szyfrowane po stronie serwera za pomocą 256-bitowej AES\n- Możliwość dodawania pól niestandardowych do poświadczeń\n- Wbudowany generator OTP (One Time Password)\n- Analizator haseł\n- Udostępniaj hasła wewnętrznie i przez łącze w bezpieczny sposób.\n- Importowanie z różnych menedżerów haseł (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nAby zapoznać się z demonstracją tej aplikacji, odwiedź [https://demo.passman.cc](https://demo.passman.cc)",
@@ -343,8 +343,8 @@
"Enable HTTPS check" : "Włącz sprawdzenie HTTPS",
"Disable context menu" : "Wyłącz menu kontekstowe",
"Disable JavaScript debugger" : "Wyłącz debugger JavaScript",
- "Allow users on this server to share passwords with a link" : "Zezwól użytkownikom tego serwera na udostępnianie haseł łączem",
- "Allow users on this server to share passwords with other users" : "Zezwól użytkownikom tego serwera na udostępnianie haseł innym użytkownikom",
+ "Allow users on this server to share passwords with a link" : "Zezwalaj użytkownikom tego serwera na udostępnianie haseł za pomocą linku",
+ "Allow users on this server to share passwords with other users" : "Zezwalaj użytkownikom tego serwera na udostępnianie haseł innym użytkownikom",
"Move credentials from one account to another" : "Przenieś poświadczenia pomiędzy kontami",
"Source account" : "Konto źródłowe",
"Destination account" : "Konto docelowe",
diff --git a/l10n/ps.js b/l10n/ps.js
new file mode 100644
index 00000000..193a50eb
--- /dev/null
+++ b/l10n/ps.js
@@ -0,0 +1,23 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Share link" : "د شرېکېدو لېنک",
+ "Username" : "کارن نوم",
+ "Actions" : "کړنې",
+ "Size" : "کچه",
+ "Expiration date" : "د پای نېټه",
+ "Files" : "فایلونه",
+ "Pending" : "د انتظار په حال کې",
+ "Details" : "معلومات",
+ "Save" : "ساتل",
+ "Cancel" : "پرېښول",
+ "Settings" : "سمونې",
+ "Unshare" : "له شرېکوالي ويستل",
+ "Password" : "پاسورډ",
+ "Notes" : "شسیب",
+ "Delete" : "ړنګول",
+ "Share" : "شریکول",
+ "Tags" : "نښکې",
+ "email" : "ايمیل"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/ps.json b/l10n/ps.json
new file mode 100644
index 00000000..fbb9c020
--- /dev/null
+++ b/l10n/ps.json
@@ -0,0 +1,21 @@
+{ "translations": {
+ "Share link" : "د شرېکېدو لېنک",
+ "Username" : "کارن نوم",
+ "Actions" : "کړنې",
+ "Size" : "کچه",
+ "Expiration date" : "د پای نېټه",
+ "Files" : "فایلونه",
+ "Pending" : "د انتظار په حال کې",
+ "Details" : "معلومات",
+ "Save" : "ساتل",
+ "Cancel" : "پرېښول",
+ "Settings" : "سمونې",
+ "Unshare" : "له شرېکوالي ويستل",
+ "Password" : "پاسورډ",
+ "Notes" : "شسیب",
+ "Delete" : "ړنګول",
+ "Share" : "شریکول",
+ "Tags" : "نښکې",
+ "email" : "ايمیل"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/pt_BR.js b/l10n/pt_BR.js
index cb5deae9..7445078b 100644
--- a/l10n/pt_BR.js
+++ b/l10n/pt_BR.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Senhas",
"Generating sharing keys ( %s / 2)" : "Gerando chaves de compartilhamento ( %s / 2)",
"Incorrect vault password!" : "Senha do cofre incorreta",
"Passwords do not match" : "As senhas não coincidem",
@@ -134,7 +133,7 @@ OC.L10N.register(
"Donate to support development" : "Doar para apoiar o desenvolvimento",
"Bookmarklet" : "Marcado",
"Save your passwords with one click." : "Salve suas senhas com um clique.",
- "Drag below button to your bookmark toolbar." : "Arraste o botão abaixo para a barra de ferramentas de marcadores.",
+ "Drag below button to your bookmark toolbar." : "Arraste o botão abaixo para a barra de ferramentas de favoritos.",
"Delete vault" : "Excluir o cofre",
"Vault password" : "Senha do cofre",
"This process is irreversible" : "Este processo é irreversível",
@@ -325,6 +324,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s foi compartilhado com %2$s",
"You received a share request for %1$s from %2$s" : "Você recebeu uma solicitação de compartilhamento para %1$s de %2$s",
"%s has been shared with a link" : "%s foi compartilhado com um link",
+ "Passwords" : "Senhas",
"Your credential \"%s\" expired, click here to update the credential." : "Suas credenciais \"%s\" expiraram. Clique aqui para atualizar a credencial.",
"Remind me later" : "Lembre-me mais tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/pt_BR.json b/l10n/pt_BR.json
index 7ba01adf..8a2a181e 100644
--- a/l10n/pt_BR.json
+++ b/l10n/pt_BR.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Senhas",
"Generating sharing keys ( %s / 2)" : "Gerando chaves de compartilhamento ( %s / 2)",
"Incorrect vault password!" : "Senha do cofre incorreta",
"Passwords do not match" : "As senhas não coincidem",
@@ -132,7 +131,7 @@
"Donate to support development" : "Doar para apoiar o desenvolvimento",
"Bookmarklet" : "Marcado",
"Save your passwords with one click." : "Salve suas senhas com um clique.",
- "Drag below button to your bookmark toolbar." : "Arraste o botão abaixo para a barra de ferramentas de marcadores.",
+ "Drag below button to your bookmark toolbar." : "Arraste o botão abaixo para a barra de ferramentas de favoritos.",
"Delete vault" : "Excluir o cofre",
"Vault password" : "Senha do cofre",
"This process is irreversible" : "Este processo é irreversível",
@@ -323,6 +322,7 @@
"%1$s has been shared with %2$s" : "%1$s foi compartilhado com %2$s",
"You received a share request for %1$s from %2$s" : "Você recebeu uma solicitação de compartilhamento para %1$s de %2$s",
"%s has been shared with a link" : "%s foi compartilhado com um link",
+ "Passwords" : "Senhas",
"Your credential \"%s\" expired, click here to update the credential." : "Suas credenciais \"%s\" expiraram. Clique aqui para atualizar a credencial.",
"Remind me later" : "Lembre-me mais tarde",
"Ignore" : "Ignorar",
diff --git a/l10n/pt_PT.js b/l10n/pt_PT.js
new file mode 100644
index 00000000..449e5dd8
--- /dev/null
+++ b/l10n/pt_PT.js
@@ -0,0 +1,76 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "Geral",
+ "Done" : "Concluído",
+ "Settings saved" : "Definições guardadas",
+ "Sharing" : "Partilha",
+ "Share with users and groups" : "Partilhar com utilizadores e grupos",
+ "Share link" : "Partilhar hiperligação",
+ "Saved!" : "Gravado!",
+ "Good" : "Bom",
+ "Generate password" : "Gerar palavra-passe",
+ "Username" : "Nome de utilizador",
+ "Text" : "Texto",
+ "File" : "Ficheiro",
+ "Add" : "Adicionar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Ações",
+ "Filename" : "Nome do ficheiro",
+ "Size" : "Tamanho",
+ "Secret" : "Secreto",
+ "Expiration date" : "Data de expiração",
+ "No expiration date set" : "Data de expiração não definida",
+ "Disabled" : "Desactivado",
+ "Export" : "Exportar",
+ "Version" : "Versão",
+ "Vault password" : "Senha do cofre",
+ "Import" : "Importar",
+ "Public key" : "Chave pública",
+ "Generate sharing keys" : "Gerar chaves de partilha",
+ "Uploading" : "A carregar",
+ "User" : "Utilizador",
+ "Read" : "Ler",
+ "Write" : "Escrever",
+ "Files" : "Ficheiros",
+ "Pending" : "Pendente",
+ "Enable link sharing" : "Ativar partilha de hiperligação",
+ "Details" : "Detalhes",
+ "Hide details" : "Ocultar detalhes",
+ "by" : "por",
+ "Label" : "Legenda",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Definições",
+ "Unshare" : "Cancelar partilha",
+ "Account" : "Conta",
+ "Password" : "Palavra-passe",
+ "E-mail" : "Correio Eletrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Created" : "Criado",
+ "Edit" : "Editar",
+ "Delete" : "Apagar",
+ "Share" : "Partilhar",
+ "Date" : "Data",
+ "Accept" : "Aceitar",
+ "Decline" : "Recusar",
+ "Never" : "Nunca",
+ "Tags" : "Marcações",
+ "Expired" : "Expirado",
+ "Loading…" : "A carregar...",
+ "email" : "email",
+ "Description" : "Descrição",
+ "You created %1$s" : "Criou %1$s",
+ "You deleted %1$s" : "Eliminou %1$s",
+ "%s has been shared with a link" : "%s partilhou uma hiperligação",
+ "Passwords" : "Palavras-passe",
+ "Allow users on this server to share passwords with a link" : "Permitir que os utilizadores neste servidor partilhem as palavras-passe com uma hiperligação",
+ "Connection to server lost" : "Ligação perdida ao servidor",
+ "Problem loading page, reloading in 5 seconds" : "Problema a carregar a página, a recarregar em 5 segundos",
+ "Saving..." : "A guardar...",
+ "Dismiss" : "Dispensar",
+ "seconds ago" : "segundos atrás"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/pt_PT.json b/l10n/pt_PT.json
new file mode 100644
index 00000000..ed09ea41
--- /dev/null
+++ b/l10n/pt_PT.json
@@ -0,0 +1,74 @@
+{ "translations": {
+ "General" : "Geral",
+ "Done" : "Concluído",
+ "Settings saved" : "Definições guardadas",
+ "Sharing" : "Partilha",
+ "Share with users and groups" : "Partilhar com utilizadores e grupos",
+ "Share link" : "Partilhar hiperligação",
+ "Saved!" : "Gravado!",
+ "Good" : "Bom",
+ "Generate password" : "Gerar palavra-passe",
+ "Username" : "Nome de utilizador",
+ "Text" : "Texto",
+ "File" : "Ficheiro",
+ "Add" : "Adicionar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Ações",
+ "Filename" : "Nome do ficheiro",
+ "Size" : "Tamanho",
+ "Secret" : "Secreto",
+ "Expiration date" : "Data de expiração",
+ "No expiration date set" : "Data de expiração não definida",
+ "Disabled" : "Desactivado",
+ "Export" : "Exportar",
+ "Version" : "Versão",
+ "Vault password" : "Senha do cofre",
+ "Import" : "Importar",
+ "Public key" : "Chave pública",
+ "Generate sharing keys" : "Gerar chaves de partilha",
+ "Uploading" : "A carregar",
+ "User" : "Utilizador",
+ "Read" : "Ler",
+ "Write" : "Escrever",
+ "Files" : "Ficheiros",
+ "Pending" : "Pendente",
+ "Enable link sharing" : "Ativar partilha de hiperligação",
+ "Details" : "Detalhes",
+ "Hide details" : "Ocultar detalhes",
+ "by" : "por",
+ "Label" : "Legenda",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Definições",
+ "Unshare" : "Cancelar partilha",
+ "Account" : "Conta",
+ "Password" : "Palavra-passe",
+ "E-mail" : "Correio Eletrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Created" : "Criado",
+ "Edit" : "Editar",
+ "Delete" : "Apagar",
+ "Share" : "Partilhar",
+ "Date" : "Data",
+ "Accept" : "Aceitar",
+ "Decline" : "Recusar",
+ "Never" : "Nunca",
+ "Tags" : "Marcações",
+ "Expired" : "Expirado",
+ "Loading…" : "A carregar...",
+ "email" : "email",
+ "Description" : "Descrição",
+ "You created %1$s" : "Criou %1$s",
+ "You deleted %1$s" : "Eliminou %1$s",
+ "%s has been shared with a link" : "%s partilhou uma hiperligação",
+ "Passwords" : "Palavras-passe",
+ "Allow users on this server to share passwords with a link" : "Permitir que os utilizadores neste servidor partilhem as palavras-passe com uma hiperligação",
+ "Connection to server lost" : "Ligação perdida ao servidor",
+ "Problem loading page, reloading in 5 seconds" : "Problema a carregar a página, a recarregar em 5 segundos",
+ "Saving..." : "A guardar...",
+ "Dismiss" : "Dispensar",
+ "seconds ago" : "segundos atrás"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/ro.js b/l10n/ro.js
new file mode 100644
index 00000000..00427969
--- /dev/null
+++ b/l10n/ro.js
@@ -0,0 +1,67 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "General",
+ "Done" : "Realizat",
+ "Settings saved" : "Setările au fost salvate",
+ "Sharing" : "Partajare",
+ "Share with users and groups" : "Partajează cu utilizatori și grupuri",
+ "Share link" : "Partajează link-ul",
+ "Saved!" : "Salvat!",
+ "Username" : "Nume utilizator",
+ "Text" : "Text",
+ "File" : "Fișier",
+ "Add" : "Adaugă",
+ "Type" : "Tip",
+ "Actions" : "Acțiuni",
+ "Filename" : "Nume fișier",
+ "Size" : "Mărime",
+ "Secret" : "Secret",
+ "Expiration date" : "Data expirării",
+ "No expiration date set" : "Data expirării nu e setată",
+ "Disabled" : "Dezactivați",
+ "Export" : "Exportă",
+ "Version" : "Versiune",
+ "Vault password" : "Parolă seif",
+ "Import" : "Importă",
+ "Public key" : "Cheie publică",
+ "Uploading" : "Încărcare",
+ "User" : "Utilizator",
+ "Read" : "Citeşte",
+ "Files" : "Fișiere",
+ "Pending" : "În așteptare",
+ "Details" : "Detalii",
+ "Hide details" : "Ascunde detaliile",
+ "by" : "de",
+ "Label" : "Etichetă",
+ "Save" : "Salvează",
+ "Cancel" : "Anulează",
+ "Settings" : "Setări",
+ "Unshare" : "Oprește partajarea",
+ "Account" : "Cont",
+ "Password" : "Parolă",
+ "E-mail" : "E-mail",
+ "URL" : "URL",
+ "Notes" : "Notițe",
+ "Edit" : "Editează",
+ "Delete" : "Șterge",
+ "Share" : "Partajează",
+ "Date" : "Date",
+ "Accept" : "Accept",
+ "Decline" : "Refuză",
+ "Last accessed" : "Ultima accesare",
+ "Never" : "Niciodată",
+ "Tags" : "Etichete",
+ "Loading…" : "Se încarcă…",
+ "email" : "email",
+ "Description" : "Descriere",
+ "You created %1$s" : "Ai creat %1$s",
+ "You deleted %1$s" : "Ai şters %1$s",
+ "Passwords" : "Parole",
+ "Connection to server lost" : "S-a pierdut conexiunea la server",
+ "Problem loading page, reloading in 5 seconds" : "A apărut o problemă la încărcarea paginii, se reîncearcă în 5 secunde",
+ "Saving..." : "Se salvează...",
+ "Dismiss" : "Elimină",
+ "seconds ago" : "secunde în urmă"
+},
+"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));");
diff --git a/l10n/ro.json b/l10n/ro.json
new file mode 100644
index 00000000..0be0ec6c
--- /dev/null
+++ b/l10n/ro.json
@@ -0,0 +1,65 @@
+{ "translations": {
+ "General" : "General",
+ "Done" : "Realizat",
+ "Settings saved" : "Setările au fost salvate",
+ "Sharing" : "Partajare",
+ "Share with users and groups" : "Partajează cu utilizatori și grupuri",
+ "Share link" : "Partajează link-ul",
+ "Saved!" : "Salvat!",
+ "Username" : "Nume utilizator",
+ "Text" : "Text",
+ "File" : "Fișier",
+ "Add" : "Adaugă",
+ "Type" : "Tip",
+ "Actions" : "Acțiuni",
+ "Filename" : "Nume fișier",
+ "Size" : "Mărime",
+ "Secret" : "Secret",
+ "Expiration date" : "Data expirării",
+ "No expiration date set" : "Data expirării nu e setată",
+ "Disabled" : "Dezactivați",
+ "Export" : "Exportă",
+ "Version" : "Versiune",
+ "Vault password" : "Parolă seif",
+ "Import" : "Importă",
+ "Public key" : "Cheie publică",
+ "Uploading" : "Încărcare",
+ "User" : "Utilizator",
+ "Read" : "Citeşte",
+ "Files" : "Fișiere",
+ "Pending" : "În așteptare",
+ "Details" : "Detalii",
+ "Hide details" : "Ascunde detaliile",
+ "by" : "de",
+ "Label" : "Etichetă",
+ "Save" : "Salvează",
+ "Cancel" : "Anulează",
+ "Settings" : "Setări",
+ "Unshare" : "Oprește partajarea",
+ "Account" : "Cont",
+ "Password" : "Parolă",
+ "E-mail" : "E-mail",
+ "URL" : "URL",
+ "Notes" : "Notițe",
+ "Edit" : "Editează",
+ "Delete" : "Șterge",
+ "Share" : "Partajează",
+ "Date" : "Date",
+ "Accept" : "Accept",
+ "Decline" : "Refuză",
+ "Last accessed" : "Ultima accesare",
+ "Never" : "Niciodată",
+ "Tags" : "Etichete",
+ "Loading…" : "Se încarcă…",
+ "email" : "email",
+ "Description" : "Descriere",
+ "You created %1$s" : "Ai creat %1$s",
+ "You deleted %1$s" : "Ai şters %1$s",
+ "Passwords" : "Parole",
+ "Connection to server lost" : "S-a pierdut conexiunea la server",
+ "Problem loading page, reloading in 5 seconds" : "A apărut o problemă la încărcarea paginii, se reîncearcă în 5 secunde",
+ "Saving..." : "Se salvează...",
+ "Dismiss" : "Elimină",
+ "seconds ago" : "secunde în urmă"
+},"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"
+} \ No newline at end of file
diff --git a/l10n/ru.js b/l10n/ru.js
index ed6462d9..a0feb2ca 100644
--- a/l10n/ru.js
+++ b/l10n/ru.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Пароли",
"Generating sharing keys ( %s / 2)" : "Создаются ключи общего доступа (%s/ 2)",
"Incorrect vault password!" : "Неверный пароль хранилища!",
"Passwords do not match" : "Пароли не совпадают",
@@ -16,11 +15,14 @@ OC.L10N.register(
"Credential updated" : "Запись обновлена",
"Credential recovered" : "Запись восстановлена",
"Credential destroyed" : "Учетные данные уничтожены",
+ "Error downloading file, you probably have insufficient permissions" : "Ошибка загрузки файла, возможно недостаточно прав доступа",
"Invalid QR code" : "Неверный QR код",
"Starting export" : "Начинается экспорт",
"Decrypting credentials" : "Расшифровка записей",
"Done" : "Готово",
+ "File read." : "Файл прочитан.",
"Proceed with the following steps to import your file" : "Для импорта файла выполните следующее",
+ "Skipping unlabeled credential" : "Пропуск записей без меток",
"Adding {{credential}}" : "Добавляется {{credential}}",
"Added {{credential}}" : "Добавлено {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Запись пропускается, отсутствует метка на строке {{line}}",
@@ -40,13 +42,14 @@ OC.L10N.register(
"Revision restored" : "Версия восстановлена",
"Save in Passman" : "Сохранить в Passman",
"Settings saved" : "Настройки сохранены",
- "General settings" : "Основные настройки",
+ "General settings" : "Общие параметры",
"Password audit" : "Аудит пароля",
"Password settings" : "Настройки пароля",
"Import credentials" : "Импортировать записи",
"Export credentials" : "Экспортировать записи",
"Sharing" : "Общий доступ",
"Are you sure you want to leave? This will destroy all your credentials" : "Действительно выйти? Это повредит все ваши записи",
+ "Old password field incorrect!" : "Неверное поле старого пароля.",
"New password does not match!" : "Новые пароли не совпадают!",
"Please log in with your new vault password" : "Войдите в систему используя новый пароль хранилища",
"Share with users and groups" : "Поделиться с пользователями и группами",
@@ -70,7 +73,13 @@ OC.L10N.register(
"Repeat password" : "Повторите пароль",
"Add tag" : "Добавить метку",
"Pick an icon" : "Выбрать значок",
+ "Search icons" : "Поиск значков",
+ "Upload a custom icon:" : "Загрузить свой значок",
"Use this icon" : "Использовать этот значок",
+ "Delete current icon" : "Удалить текущий значок",
+ "Get icon from page" : "Загрузить значок со страницы",
+ "This may take a few seconds…" : "Подождите немного…",
+ "There was an error fetching the icon!" : "Не удалось получить значок.",
"Selected icon" : "Выбранный значок",
"Field label" : "Название поля",
"Field value" : "Значение поля",
@@ -123,6 +132,7 @@ OC.L10N.register(
"Version" : "Версия",
"Donate to support development" : "Пожертвовать на поддержку разработки",
"Bookmarklet" : "Приложение для панели закладок",
+ "Save your passwords with one click." : "Сохраняйте свои пароли одним щелчком мыши.",
"Drag below button to your bookmark toolbar." : "Перетащите кнопку, находящуюся ниже, на вашу панель закладок.",
"Delete vault" : "Удалить хранилище",
"Vault password" : "Пароль хранилища",
@@ -140,6 +150,7 @@ OC.L10N.register(
"Save keys" : "Сохранить ключи",
"Generate sharing keys" : "Создать ключи общего доступа",
"Generating sharing keys" : "Ключи общего доступа создаются",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Инструмент паролей просканирует пароли, вычислит среднее время, необходимое для из взлома, и, если оно окажется ниже порогового значения, покажет их",
"Minimum password stength" : "Минимальная устойчивость пароля",
"Start scan" : "Запустить сканирование",
"Result" : "Результат",
@@ -152,6 +163,7 @@ OC.L10N.register(
"Uploading" : "Передача",
"User" : "Пользователь",
"Crypto time" : "Время шифрования",
+ "Total time spent encrypting" : "Всего использовано времени на шифрование",
"Read" : "Прочитано",
"Write" : "Записано",
"Files" : "Файлов",
@@ -160,6 +172,7 @@ OC.L10N.register(
"Enable link sharing" : "Разрешить обмен ссылками",
"Share until date" : "Поделиться до даты",
"Expire after views" : "Истекает после просмотров",
+ "Click \\\"Share\\\" first" : "Сначала нажмите «Поделиться»",
"Show files" : "Показать файлы",
"Details" : "Подробно",
"Hide details" : "Скрыть подробности",
@@ -219,6 +232,7 @@ OC.L10N.register(
"Use regex" : "Использовать регулярные выражения",
"You have incoming share requests." : "У вас входящий запрос на общий доступ.",
"If you want to put the credential in another vault," : "Если Вы хотите поместить записи в другое хранилище,",
+ "log out of this vault and log into the vault you want the shared credential in." : "выйдите из этого хранилища и войдите в хранилище с которым вы хотите поделиться.",
"Permissions" : "Права доступа",
"Received from" : "Получено от",
"Date" : "Дата",
@@ -226,12 +240,22 @@ OC.L10N.register(
"Decline" : "Отклонить",
"You have {{session_time}} left before logout." : "У вас осталось {{session_time}} до выхода.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Ваше хранилище было заблокировано на {{time}} по причине {{tries}} неудачных попыток входа!",
+ "Hello there!" : "Здравствуйте!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "У вас не сохранено ни одного пароля. Создать запись?",
+ "You don't have good credentials" : "У вас нет хороших пар логин-пароль",
+ "You don't have medium credentials" : "У вас нет средних пар логин-пароль",
+ "You don't have bad credentials" : "У вас нет плохих пар логин-пароль",
+ "You don't have expired credentials" : "У вас нет истёкших пар логин-пароль",
+ "You don't have deleted credentials" : "У вас в корзине нет пар логин-пароль",
+ "There are no credentials with your selected tags" : "У вас нет пар логин-пароль с выбранными метками",
+ "There are no credentials matching" : "Не найдено совпадающих записей",
"Last accessed" : "Посл. доступ",
"Never" : "Никогда",
"No vaults found, why not create one?" : "Хранилищ не найдено, почему бы не создать?",
"Password strength must be at least: {{strength}}" : "Устойчивать пароля должна быть не ниже: {{strength}}",
"Please give your new vault a name." : "Укажите имя нового хранилища.",
"Repeat vault password" : "Повторите пароль хранилища",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Общий ключ будет иметь устойчивость 1024 бита, позже вы можете изменить её в настройках.",
"Create vault" : "Создать хранилище",
"Go back to vaults" : "Вернуться в хранилище",
"Please input the password for" : "Введите пароль для",
@@ -251,14 +275,32 @@ OC.L10N.register(
"Request removed" : "Запрос удалён",
"Destruction request pending" : "Запрос на удаление в ожидании",
"Warning! Adding credentials over HTTP is insecure!" : "Предупреждение! Добавление записей по HTTP небезопасно!",
+ "Logged into {{vault_name}}" : "Выполнен вход в {{vault_name}}",
"Change vault" : "Изменить хранилище",
"Deleted credentials" : "Удалённые реквизиты",
"Logout" : "Выйти",
"Donate" : "Пожертвовать",
+ "Show All" : "Показать все",
+ "Tags" : "Метки",
+ "Search Tags" : "Поиск по меткам",
+ "Good Strength" : "Хорошая надёжность",
+ "Medium Strength" : "Средняя надёжность",
+ "Bad Strength" : "Плохая надёжность",
+ "Expired" : "Закончилась",
+ "Filter Tags" : "Применить фильтр меток",
+ "Simple Navigation" : "Упрощённая навигация",
"Someone has shared a credential with you." : "Кто-то поделился с вами записью.",
"Click here to request it" : "Нажмите здесь для их получения.",
"Loading…" : "Загрузка…",
"Awwhh… credential not found. Maybe it expired" : "Запись не найдена. Возможно, закончился срок её действия.",
+ "Compromise!" : "Компрометация",
+ "Compromised!" : "Скомпрометирован!",
+ "This password is compromised. You can only remove this warning by changing the password." : "Этот пароль скомпрометирован. Единственный способ скрыть этот предупреждение — сменить пароль.",
+ "email" : "эл. почта",
+ "Description" : "Описание",
+ "Url" : "URL",
+ "Custom Search:" : "Пользовательский поиск",
+ "Revert to defaults" : "Сбросить к значениям по умолчанию",
"Error while saving field" : "Ошибка при сохранении поля",
"A Passman item has been created, modified or deleted" : "Элемент Passman был создан, изменён или удалён",
"A Passman item has expired" : "У элемента Passman закончился срок действия",
@@ -282,6 +324,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s поделились с %2$s",
"You received a share request for %1$s from %2$s" : "Вы получили запрос на предоставление общего доступа к %1$s от %2$s",
"%s has been shared with a link" : "к %s был предоставлен общий доступ ссылкой",
+ "Passwords" : "Пароли",
"Your credential \"%s\" expired, click here to update the credential." : "Истёк срок действия записи «%s», нажмите здесь для обновления.",
"Remind me later" : "Напомнить позже",
"Ignore" : "Пропустить",
@@ -314,6 +357,8 @@ OC.L10N.register(
"Reason" : "Причина",
"Click here to request\n\t\t\t\t\tit" : "Нажмите здесь для их получения.",
"Loading&hellip;" : "Загрузка&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Запись не найдена. Возможно, истёк срок её действия.",
+ "Expires:" : "Истекает:",
"Connection to server lost" : "Подключение к серверу потеряно",
"Problem loading page, reloading in 5 seconds" : "Проблема при загрузке страницы, перезагрузка через 5 сек.",
"Saving..." : "Сохранение…",
diff --git a/l10n/ru.json b/l10n/ru.json
index 971f874b..cfa90804 100644
--- a/l10n/ru.json
+++ b/l10n/ru.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Пароли",
"Generating sharing keys ( %s / 2)" : "Создаются ключи общего доступа (%s/ 2)",
"Incorrect vault password!" : "Неверный пароль хранилища!",
"Passwords do not match" : "Пароли не совпадают",
@@ -14,11 +13,14 @@
"Credential updated" : "Запись обновлена",
"Credential recovered" : "Запись восстановлена",
"Credential destroyed" : "Учетные данные уничтожены",
+ "Error downloading file, you probably have insufficient permissions" : "Ошибка загрузки файла, возможно недостаточно прав доступа",
"Invalid QR code" : "Неверный QR код",
"Starting export" : "Начинается экспорт",
"Decrypting credentials" : "Расшифровка записей",
"Done" : "Готово",
+ "File read." : "Файл прочитан.",
"Proceed with the following steps to import your file" : "Для импорта файла выполните следующее",
+ "Skipping unlabeled credential" : "Пропуск записей без меток",
"Adding {{credential}}" : "Добавляется {{credential}}",
"Added {{credential}}" : "Добавлено {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Запись пропускается, отсутствует метка на строке {{line}}",
@@ -38,13 +40,14 @@
"Revision restored" : "Версия восстановлена",
"Save in Passman" : "Сохранить в Passman",
"Settings saved" : "Настройки сохранены",
- "General settings" : "Основные настройки",
+ "General settings" : "Общие параметры",
"Password audit" : "Аудит пароля",
"Password settings" : "Настройки пароля",
"Import credentials" : "Импортировать записи",
"Export credentials" : "Экспортировать записи",
"Sharing" : "Общий доступ",
"Are you sure you want to leave? This will destroy all your credentials" : "Действительно выйти? Это повредит все ваши записи",
+ "Old password field incorrect!" : "Неверное поле старого пароля.",
"New password does not match!" : "Новые пароли не совпадают!",
"Please log in with your new vault password" : "Войдите в систему используя новый пароль хранилища",
"Share with users and groups" : "Поделиться с пользователями и группами",
@@ -68,7 +71,13 @@
"Repeat password" : "Повторите пароль",
"Add tag" : "Добавить метку",
"Pick an icon" : "Выбрать значок",
+ "Search icons" : "Поиск значков",
+ "Upload a custom icon:" : "Загрузить свой значок",
"Use this icon" : "Использовать этот значок",
+ "Delete current icon" : "Удалить текущий значок",
+ "Get icon from page" : "Загрузить значок со страницы",
+ "This may take a few seconds…" : "Подождите немного…",
+ "There was an error fetching the icon!" : "Не удалось получить значок.",
"Selected icon" : "Выбранный значок",
"Field label" : "Название поля",
"Field value" : "Значение поля",
@@ -121,6 +130,7 @@
"Version" : "Версия",
"Donate to support development" : "Пожертвовать на поддержку разработки",
"Bookmarklet" : "Приложение для панели закладок",
+ "Save your passwords with one click." : "Сохраняйте свои пароли одним щелчком мыши.",
"Drag below button to your bookmark toolbar." : "Перетащите кнопку, находящуюся ниже, на вашу панель закладок.",
"Delete vault" : "Удалить хранилище",
"Vault password" : "Пароль хранилища",
@@ -138,6 +148,7 @@
"Save keys" : "Сохранить ключи",
"Generate sharing keys" : "Создать ключи общего доступа",
"Generating sharing keys" : "Ключи общего доступа создаются",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Инструмент паролей просканирует пароли, вычислит среднее время, необходимое для из взлома, и, если оно окажется ниже порогового значения, покажет их",
"Minimum password stength" : "Минимальная устойчивость пароля",
"Start scan" : "Запустить сканирование",
"Result" : "Результат",
@@ -150,6 +161,7 @@
"Uploading" : "Передача",
"User" : "Пользователь",
"Crypto time" : "Время шифрования",
+ "Total time spent encrypting" : "Всего использовано времени на шифрование",
"Read" : "Прочитано",
"Write" : "Записано",
"Files" : "Файлов",
@@ -158,6 +170,7 @@
"Enable link sharing" : "Разрешить обмен ссылками",
"Share until date" : "Поделиться до даты",
"Expire after views" : "Истекает после просмотров",
+ "Click \\\"Share\\\" first" : "Сначала нажмите «Поделиться»",
"Show files" : "Показать файлы",
"Details" : "Подробно",
"Hide details" : "Скрыть подробности",
@@ -217,6 +230,7 @@
"Use regex" : "Использовать регулярные выражения",
"You have incoming share requests." : "У вас входящий запрос на общий доступ.",
"If you want to put the credential in another vault," : "Если Вы хотите поместить записи в другое хранилище,",
+ "log out of this vault and log into the vault you want the shared credential in." : "выйдите из этого хранилища и войдите в хранилище с которым вы хотите поделиться.",
"Permissions" : "Права доступа",
"Received from" : "Получено от",
"Date" : "Дата",
@@ -224,12 +238,22 @@
"Decline" : "Отклонить",
"You have {{session_time}} left before logout." : "У вас осталось {{session_time}} до выхода.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Ваше хранилище было заблокировано на {{time}} по причине {{tries}} неудачных попыток входа!",
+ "Hello there!" : "Здравствуйте!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "У вас не сохранено ни одного пароля. Создать запись?",
+ "You don't have good credentials" : "У вас нет хороших пар логин-пароль",
+ "You don't have medium credentials" : "У вас нет средних пар логин-пароль",
+ "You don't have bad credentials" : "У вас нет плохих пар логин-пароль",
+ "You don't have expired credentials" : "У вас нет истёкших пар логин-пароль",
+ "You don't have deleted credentials" : "У вас в корзине нет пар логин-пароль",
+ "There are no credentials with your selected tags" : "У вас нет пар логин-пароль с выбранными метками",
+ "There are no credentials matching" : "Не найдено совпадающих записей",
"Last accessed" : "Посл. доступ",
"Never" : "Никогда",
"No vaults found, why not create one?" : "Хранилищ не найдено, почему бы не создать?",
"Password strength must be at least: {{strength}}" : "Устойчивать пароля должна быть не ниже: {{strength}}",
"Please give your new vault a name." : "Укажите имя нового хранилища.",
"Repeat vault password" : "Повторите пароль хранилища",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Общий ключ будет иметь устойчивость 1024 бита, позже вы можете изменить её в настройках.",
"Create vault" : "Создать хранилище",
"Go back to vaults" : "Вернуться в хранилище",
"Please input the password for" : "Введите пароль для",
@@ -249,14 +273,32 @@
"Request removed" : "Запрос удалён",
"Destruction request pending" : "Запрос на удаление в ожидании",
"Warning! Adding credentials over HTTP is insecure!" : "Предупреждение! Добавление записей по HTTP небезопасно!",
+ "Logged into {{vault_name}}" : "Выполнен вход в {{vault_name}}",
"Change vault" : "Изменить хранилище",
"Deleted credentials" : "Удалённые реквизиты",
"Logout" : "Выйти",
"Donate" : "Пожертвовать",
+ "Show All" : "Показать все",
+ "Tags" : "Метки",
+ "Search Tags" : "Поиск по меткам",
+ "Good Strength" : "Хорошая надёжность",
+ "Medium Strength" : "Средняя надёжность",
+ "Bad Strength" : "Плохая надёжность",
+ "Expired" : "Закончилась",
+ "Filter Tags" : "Применить фильтр меток",
+ "Simple Navigation" : "Упрощённая навигация",
"Someone has shared a credential with you." : "Кто-то поделился с вами записью.",
"Click here to request it" : "Нажмите здесь для их получения.",
"Loading…" : "Загрузка…",
"Awwhh… credential not found. Maybe it expired" : "Запись не найдена. Возможно, закончился срок её действия.",
+ "Compromise!" : "Компрометация",
+ "Compromised!" : "Скомпрометирован!",
+ "This password is compromised. You can only remove this warning by changing the password." : "Этот пароль скомпрометирован. Единственный способ скрыть этот предупреждение — сменить пароль.",
+ "email" : "эл. почта",
+ "Description" : "Описание",
+ "Url" : "URL",
+ "Custom Search:" : "Пользовательский поиск",
+ "Revert to defaults" : "Сбросить к значениям по умолчанию",
"Error while saving field" : "Ошибка при сохранении поля",
"A Passman item has been created, modified or deleted" : "Элемент Passman был создан, изменён или удалён",
"A Passman item has expired" : "У элемента Passman закончился срок действия",
@@ -280,6 +322,7 @@
"%1$s has been shared with %2$s" : "%1$s поделились с %2$s",
"You received a share request for %1$s from %2$s" : "Вы получили запрос на предоставление общего доступа к %1$s от %2$s",
"%s has been shared with a link" : "к %s был предоставлен общий доступ ссылкой",
+ "Passwords" : "Пароли",
"Your credential \"%s\" expired, click here to update the credential." : "Истёк срок действия записи «%s», нажмите здесь для обновления.",
"Remind me later" : "Напомнить позже",
"Ignore" : "Пропустить",
@@ -312,6 +355,8 @@
"Reason" : "Причина",
"Click here to request\n\t\t\t\t\tit" : "Нажмите здесь для их получения.",
"Loading&hellip;" : "Загрузка&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Запись не найдена. Возможно, истёк срок её действия.",
+ "Expires:" : "Истекает:",
"Connection to server lost" : "Подключение к серверу потеряно",
"Problem loading page, reloading in 5 seconds" : "Проблема при загрузке страницы, перезагрузка через 5 сек.",
"Saving..." : "Сохранение…",
diff --git a/l10n/si_LK.js b/l10n/si_LK.js
new file mode 100644
index 00000000..387f0220
--- /dev/null
+++ b/l10n/si_LK.js
@@ -0,0 +1,36 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "සාමාන්‍යයෙන්",
+ "Done" : "Done",
+ "Sharing" : "හුවමාරු කිරීම",
+ "Share link" : "Share link",
+ "Username" : "පරිශීලක නම",
+ "File" : "File",
+ "Add" : "එක් කරන්න",
+ "Type" : "වර්ගය",
+ "Size" : "ප්‍රමාණය",
+ "Expiration date" : "කල් ඉකුත් විමේ දිනය",
+ "Export" : "නිර්යාත කරන්න",
+ "Import" : "ආයාත කරන්න",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "ගොනු",
+ "by" : "විසින්",
+ "Save" : "සුරකින්න",
+ "Cancel" : "අවලංගු කරන්න",
+ "Settings" : "සැකසුම්",
+ "Unshare" : "නොබෙදු",
+ "Password" : "මුර පදය",
+ "URL" : "URL",
+ "Notes" : "සටහන්",
+ "Edit" : "සකසන්න",
+ "Delete" : "ඉවත් කරන්න",
+ "Share" : "බෙදා හදා ගන්න",
+ "Date" : "Date",
+ "Tags" : "ටැග",
+ "Description" : "විස්තරය",
+ "Saving..." : "සුරැකෙමින් පවතී...",
+ "seconds ago" : "තත්පරයන්ට පෙර"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/si_LK.json b/l10n/si_LK.json
new file mode 100644
index 00000000..c0425246
--- /dev/null
+++ b/l10n/si_LK.json
@@ -0,0 +1,34 @@
+{ "translations": {
+ "General" : "සාමාන්‍යයෙන්",
+ "Done" : "Done",
+ "Sharing" : "හුවමාරු කිරීම",
+ "Share link" : "Share link",
+ "Username" : "පරිශීලක නම",
+ "File" : "File",
+ "Add" : "එක් කරන්න",
+ "Type" : "වර්ගය",
+ "Size" : "ප්‍රමාණය",
+ "Expiration date" : "කල් ඉකුත් විමේ දිනය",
+ "Export" : "නිර්යාත කරන්න",
+ "Import" : "ආයාත කරන්න",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "ගොනු",
+ "by" : "විසින්",
+ "Save" : "සුරකින්න",
+ "Cancel" : "අවලංගු කරන්න",
+ "Settings" : "සැකසුම්",
+ "Unshare" : "නොබෙදු",
+ "Password" : "මුර පදය",
+ "URL" : "URL",
+ "Notes" : "සටහන්",
+ "Edit" : "සකසන්න",
+ "Delete" : "ඉවත් කරන්න",
+ "Share" : "බෙදා හදා ගන්න",
+ "Date" : "Date",
+ "Tags" : "ටැග",
+ "Description" : "විස්තරය",
+ "Saving..." : "සුරැකෙමින් පවතී...",
+ "seconds ago" : "තත්පරයන්ට පෙර"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/sk.js b/l10n/sk.js
index 48972d3c..929b37c7 100644
--- a/l10n/sk.js
+++ b/l10n/sk.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Heslá",
"Generating sharing keys ( %s / 2)" : "Generovanie kľúčov pre sprístupnenie ( %s / 2)",
"Incorrect vault password!" : "Nesprávne heslo trezora!",
"Passwords do not match" : "Heslá sa nezhodujú",
@@ -16,11 +15,14 @@ OC.L10N.register(
"Credential updated" : "Prihlasovací údaj bol aktualizovaný",
"Credential recovered" : "Prihlasovací údaj bol obnovený",
"Credential destroyed" : "Prihlasovací údaj bol zničený",
+ "Error downloading file, you probably have insufficient permissions" : "Chyba pri sťahovaní súboru, pravdepodobne nemáte dostatočné povolenia",
"Invalid QR code" : "Neplatný QR kód",
"Starting export" : "Začína sa exportovať",
"Decrypting credentials" : "Dešifrovanie prihlasovacích údajov",
"Done" : "Hotovo",
+ "File read." : "Čítanie súboru.",
"Proceed with the following steps to import your file" : "Pre importovanie vášho súboru použite nasledujúce kroky",
+ "Skipping unlabeled credential" : "Preskakujú sa prihlasovacie údaje bez štítku",
"Adding {{credential}}" : "Pridávam {{credential}}",
"Added {{credential}}" : "Pridaných {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Preskakujem prihlasovací údaj, chýba štítok na riadku {{line}}",
@@ -47,6 +49,7 @@ OC.L10N.register(
"Export credentials" : "Exportovať prihlasovacie údaje",
"Sharing" : "Sprístupnenie",
"Are you sure you want to leave? This will destroy all your credentials" : "Ste si istý, že chcete opustiť stránku? Všetky prístupy budú zahodené.",
+ "Old password field incorrect!" : "Kolónka staré heslo nie je vyplnená nesprávne!",
"New password does not match!" : "Nové heslo nesedí!",
"Please log in with your new vault password" : "Prihláste sa prosím s vaším novým heslom do trezora",
"Share with users and groups" : "Sprístupniť používateľom a skupinám",
@@ -70,7 +73,13 @@ OC.L10N.register(
"Repeat password" : "Zopakujte heslo",
"Add tag" : "Pridať štítok",
"Pick an icon" : "Vybrať ikonu",
+ "Search icons" : "Hľadať ikony",
+ "Upload a custom icon:" : "Nahrať vlastnú ikonu:",
"Use this icon" : "Použiť túto ikonu",
+ "Delete current icon" : "Vymazať vlastnú ikonu:",
+ "Get icon from page" : "Získať ikonu zo stránky",
+ "This may take a few seconds…" : "Toto zaberie pár sekúnd…",
+ "There was an error fetching the icon!" : "Pri načítavaní ikony sa vyskytla chyba!",
"Selected icon" : "Vybraná ikona",
"Field label" : "Názov poľa",
"Field value" : "Hodnota poľa",
@@ -123,6 +132,7 @@ OC.L10N.register(
"Version" : "Verzia",
"Donate to support development" : "Prispejte a podporte vývoj",
"Bookmarklet" : "Chytrá záložka",
+ "Save your passwords with one click." : "Uložte si heslá jedným kliknutím.",
"Drag below button to your bookmark toolbar." : "Potiahnite spodné tlačidlo na Váš panel záložiek.",
"Delete vault" : "Zmazať trezor",
"Vault password" : "Heslo trezora",
@@ -140,6 +150,7 @@ OC.L10N.register(
"Save keys" : "Uložiť kľúče",
"Generate sharing keys" : "Vytvor zdieľaný kľúč",
"Generating sharing keys" : "Vytvárajú sa zdieľané kľúče",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Nástroj pre heslá skontroluje vaše heslá, vypočíta priemernú dobu potrebnú na ich prelomenie a vypíše tie, ktoré sú pod hranicou bezpečnosti",
"Minimum password stength" : "Minimálna sila hesla",
"Start scan" : "Začnite skenovanie",
"Result" : "Výsledok",
@@ -152,6 +163,7 @@ OC.L10N.register(
"Uploading" : "Nahrávanie",
"User" : "Používateľ",
"Crypto time" : "Šifrovanie",
+ "Total time spent encrypting" : "Celkový čas strávený šifrovaním",
"Read" : "Čítať",
"Write" : "Písať",
"Files" : "Súbory",
@@ -159,15 +171,23 @@ OC.L10N.register(
"Pending" : "Prebieha",
"Enable link sharing" : "Povoliť zdieľanie odkazov",
"Share until date" : "Zdieľať do dátumu",
+ "Expire after views" : "Platnosť vyprší po zobrazení",
+ "Click \\\"Share\\\" first" : "Najprv kliknite na „Zdieľať“",
"Show files" : "Zobraziť súbory",
"Details" : "Detaily",
"Hide details" : "Skryť detaily",
"Password score" : "Skóre hesla",
"Cracking times" : "Časy prelomenia hesla",
"100 / hour" : "100 / hodina",
+ "Throttled online attack" : "Obmedzený online útok",
"10 / second" : "10 / sekunda",
+ "Unthrottled online attack" : "Neobmedzený online útok",
"10k / second" : "10k / sekunda",
+ "Offline attack, slow hash, many cores" : "Offline útok, pomalé hashovanie, veľa jadier",
"10B / second" : "10B / sekunda",
+ "Offline attack, fast hash, many cores" : "Offline útok, rýchle hashovanie, veľa jadier",
+ "Match sequence" : "Sekvencia zhody",
+ "See match sequence" : "Zobraziť sekvenciu zhody",
"Pattern" : "Vzor",
"Matched word" : "Zodpovedajúce slovo",
"Dictionary name" : "Názov slovníka",
@@ -175,6 +195,8 @@ OC.L10N.register(
"Reversed" : "Opačný",
"Guesses" : "Odhady",
"Base guesses" : "Základné odhady",
+ "Uppercase variations" : "Variácia s veľkými písmenami",
+ "l33t-variations" : "Variácia l33t",
"Showing revisions of" : "Zobrazujú sa revízie",
"Revision of" : "Revízia",
"by" : "od",
@@ -189,6 +211,7 @@ OC.L10N.register(
"Settings" : "Nastavenia",
"Share credential {{credential}}" : "Sprístupnenie prístupového údaju {{credential}}",
"Unshare" : "Zneprístupniť",
+ "Showing deleted since" : "Zobrazujú sa zmazané od",
"Beginning" : "Začiatok",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Zobrazuje sa {{number_filtered}} z {{credential_number}} prístupových údajov",
"Search for credential…" : "Vyhľadať prístupové údaje...",
@@ -209,6 +232,7 @@ OC.L10N.register(
"Use regex" : "Použi regulárny výraz",
"You have incoming share requests." : "Máte prichádzajúce požiadavky na zdieľanie",
"If you want to put the credential in another vault," : "Ak chete premiestniť prihlasovací údaj do iného trezora,",
+ "log out of this vault and log into the vault you want the shared credential in." : "odhláste sa z tohto trezoru a prihláste sa do trezoru, v ktorom chcete zdieľané prihlasovacie údaje.",
"Permissions" : "Oprávnenia",
"Received from" : "Prijaté od",
"Date" : "Dátum",
@@ -216,12 +240,22 @@ OC.L10N.register(
"Decline" : "Odmietnuť",
"You have {{session_time}} left before logout." : "Máte {{session_time}} do odhlásenia",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Váš trezor bol uzamknutý po dobu {{time}} z dôvodu {{tries}} neúspešných pokusov!",
+ "Hello there!" : "Zdravím!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "Nezdá sa, že by ste mali nejaké heslá. Chcete nejaké pridať?",
+ "You don't have good credentials" : "Nemáte bezpečné prihlasovacie údaje",
+ "You don't have medium credentials" : "Nemáte priemerne bezpečné prihlasovacie údaje",
+ "You don't have bad credentials" : "Nemáte málo bezpečné prihlasovacie údaje",
+ "You don't have expired credentials" : "Nemáte prihlasovacie údaje po skončení platnosti",
+ "You don't have deleted credentials" : "Nemáte vymazané prihlasovacie údaje",
+ "There are no credentials with your selected tags" : "Nemáte prihlasovacie údaje so štítkami",
+ "There are no credentials matching" : "Nemáte zodpovedajúce prihlasovacie údaje",
"Last accessed" : "Posledný prístup",
"Never" : "Nikdy",
"No vaults found, why not create one?" : "Žiadne trezory, prečo jeden nevytvoriť?",
"Password strength must be at least: {{strength}}" : "Sila hesla musí byť aspoň: {{strength}}",
"Please give your new vault a name." : "Dajte svojmu novému trezoru meno, prosím.",
"Repeat vault password" : "Zopakujte heslo trezora",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Vaše zdieľacie kľúče budú mať dĺžku 1024 bitov, čo môžete neskôr zmeniť v časti „Nastavenia“.",
"Create vault" : "Vytvoriť trezor",
"Go back to vaults" : "Späť k trezorom",
"Please input the password for" : "Prosím zadajte heslo k",
@@ -241,14 +275,32 @@ OC.L10N.register(
"Request removed" : "Požiadavka odstránená",
"Destruction request pending" : "Čakajúce požiadavky na zničenie",
"Warning! Adding credentials over HTTP is insecure!" : "Varovanie! Pridávanie prihlasovacích údajov cez HTTP je nebezpečné!",
+ "Logged into {{vault_name}}" : "Prihlásený do {{vault_name}}",
"Change vault" : "Zmeniť trezor",
"Deleted credentials" : "Prihlasovacie údaje vymazané",
"Logout" : "Odhlásiť",
"Donate" : "Darovať",
+ "Show All" : "Zobraziť všetko",
+ "Tags" : "Štítky",
+ "Search Tags" : "Vyhľadať štítky",
+ "Good Strength" : "Dobrá sila",
+ "Medium Strength" : "Stredná sila",
+ "Bad Strength" : "Nedostatočná sila",
+ "Expired" : "Platnosť skončila",
+ "Filter Tags" : "Filtrovať štítky",
+ "Simple Navigation" : "Jednoduchý navigační panel",
"Someone has shared a credential with you." : "Niekto vám sprístupnil prihlasovací údaj.",
"Click here to request it" : "Kliknite sem pre vytvorenie požiadavky",
"Loading…" : "Načítavam...",
"Awwhh… credential not found. Maybe it expired" : "Prihlasovací údaj nenájdený. Je možné že mu skončila platnosť.",
+ "Compromise!" : "Kompromis!",
+ "Compromised!" : "Ohrozené!",
+ "This password is compromised. You can only remove this warning by changing the password." : "Toto heslo je ohrozené. Toto upozornenie môžete odstrániť iba zmenou hesla.",
+ "email" : "E-mail",
+ "Description" : "Popis",
+ "Url" : "URL",
+ "Custom Search:" : "Vlastné vyhľadávanie:",
+ "Revert to defaults" : "Vrátiť sa k predvoleným hodnotám",
"Error while saving field" : "Chyba počas ukladania poľa",
"A Passman item has been created, modified or deleted" : "Položka v Passman bola vytvorená, modifikovaná alebo vymazaná",
"A Passman item has expired" : "Položke v Passman skončila platnosť",
@@ -258,6 +310,7 @@ OC.L10N.register(
"You created %1$s" : "Vytvorili ste %1$s",
"%1$s has been updated by %2$s" : "%2$s aktualizoval %1$s",
"You updated %1$s" : "Aktualizovali ste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s revidované %1$s na revíziu z %3$s",
"You reverted %1$s back to the revision of %3$s" : "Vrátili ste späť %1$s na revíziu %3$s",
"%3$s has renamed %1$s to %2$s" : "%3$s premenoval %1$s na %2$s",
"You renamed %1$s to %2$s" : "Premenovali ste %1$s na %2$s",
@@ -271,6 +324,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s bol sprístupnený %2$s",
"You received a share request for %1$s from %2$s" : "Obdržali ste požiadavku na sprístupnenie %1$s od %2$s",
"%s has been shared with a link" : "%s bol sprístupnený prostredníctvom odkazu",
+ "Passwords" : "Heslá",
"Your credential \"%s\" expired, click here to update the credential." : "Vášmu prístupovému údaju \"%s\" skončila platnosť, kliknite sem pre aktualizáciu.",
"Remind me later" : "Pripomenúť neskôr",
"Ignore" : "Ignorovať",
@@ -279,6 +333,7 @@ OC.L10N.register(
"%s has accepted your share request for \"%s\"." : "%s akceptoval požiadavku na sprístupnenie \"%s\".",
"Passman" : "Passman",
"Passman is a full featured password manager." : "Passman je plnohodnotný manažér hesiel.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman je plne vybavený správca hesiel.\nVlastnosti:\n- Trezory\n- Kľúč ktrezoru sa nikdy neposiela na server\n- Rozšírenie prehľadávača pre ľahký prístup k heslám\n- Aplikácia pre Android pre prístup na cestách\n- Prihlasovacie údaje sú na strane klienta šifrované pomocou 256 bitového AES\n- Prihlasovacie údaje sú na strane servera šifrované pomocou 256 bitového AES\n- Možnosť k prihlasovacím údajom pridať vlastné kolónky\n- Vlastný generátor jednorázového hesla.\n- Analyzátor bezpečnosti hesiel\n- Bezpečne zdieľajte hesiel - interne alebo prostredníctvom odkazu.\n- Import z rôznych správcov hesiel (KeePass, LastPass,DashLane, ZOHO, Clipperz.is )\nPre ukážku tejto aplikácie navštívte [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Nepodarilo sa určiť verziu",
"Passman Settings" : "Passman nastavenia",
"GitHub version:" : "GitHub verzia:",
@@ -302,6 +357,8 @@ OC.L10N.register(
"Reason" : "Dôvod",
"Click here to request\n\t\t\t\t\tit" : "Kliknite sem pre vytvorenie požiadavky",
"Loading&hellip;" : "Načítavanie",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Joj… nemôžem nájsť prihlasovacie údaje. Neskončila im platnosť?",
+ "Expires:" : "Platnosť končí:",
"Connection to server lost" : "Stratené spojenie so serverom",
"Problem loading page, reloading in 5 seconds" : "Nastal problém pri načítaní stránky, pokus sa zopakuje o 5 sekúnd",
"Saving..." : "Ukladám...",
diff --git a/l10n/sk.json b/l10n/sk.json
index fbb324ed..3104a0b7 100644
--- a/l10n/sk.json
+++ b/l10n/sk.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Heslá",
"Generating sharing keys ( %s / 2)" : "Generovanie kľúčov pre sprístupnenie ( %s / 2)",
"Incorrect vault password!" : "Nesprávne heslo trezora!",
"Passwords do not match" : "Heslá sa nezhodujú",
@@ -14,11 +13,14 @@
"Credential updated" : "Prihlasovací údaj bol aktualizovaný",
"Credential recovered" : "Prihlasovací údaj bol obnovený",
"Credential destroyed" : "Prihlasovací údaj bol zničený",
+ "Error downloading file, you probably have insufficient permissions" : "Chyba pri sťahovaní súboru, pravdepodobne nemáte dostatočné povolenia",
"Invalid QR code" : "Neplatný QR kód",
"Starting export" : "Začína sa exportovať",
"Decrypting credentials" : "Dešifrovanie prihlasovacích údajov",
"Done" : "Hotovo",
+ "File read." : "Čítanie súboru.",
"Proceed with the following steps to import your file" : "Pre importovanie vášho súboru použite nasledujúce kroky",
+ "Skipping unlabeled credential" : "Preskakujú sa prihlasovacie údaje bez štítku",
"Adding {{credential}}" : "Pridávam {{credential}}",
"Added {{credential}}" : "Pridaných {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Preskakujem prihlasovací údaj, chýba štítok na riadku {{line}}",
@@ -45,6 +47,7 @@
"Export credentials" : "Exportovať prihlasovacie údaje",
"Sharing" : "Sprístupnenie",
"Are you sure you want to leave? This will destroy all your credentials" : "Ste si istý, že chcete opustiť stránku? Všetky prístupy budú zahodené.",
+ "Old password field incorrect!" : "Kolónka staré heslo nie je vyplnená nesprávne!",
"New password does not match!" : "Nové heslo nesedí!",
"Please log in with your new vault password" : "Prihláste sa prosím s vaším novým heslom do trezora",
"Share with users and groups" : "Sprístupniť používateľom a skupinám",
@@ -68,7 +71,13 @@
"Repeat password" : "Zopakujte heslo",
"Add tag" : "Pridať štítok",
"Pick an icon" : "Vybrať ikonu",
+ "Search icons" : "Hľadať ikony",
+ "Upload a custom icon:" : "Nahrať vlastnú ikonu:",
"Use this icon" : "Použiť túto ikonu",
+ "Delete current icon" : "Vymazať vlastnú ikonu:",
+ "Get icon from page" : "Získať ikonu zo stránky",
+ "This may take a few seconds…" : "Toto zaberie pár sekúnd…",
+ "There was an error fetching the icon!" : "Pri načítavaní ikony sa vyskytla chyba!",
"Selected icon" : "Vybraná ikona",
"Field label" : "Názov poľa",
"Field value" : "Hodnota poľa",
@@ -121,6 +130,7 @@
"Version" : "Verzia",
"Donate to support development" : "Prispejte a podporte vývoj",
"Bookmarklet" : "Chytrá záložka",
+ "Save your passwords with one click." : "Uložte si heslá jedným kliknutím.",
"Drag below button to your bookmark toolbar." : "Potiahnite spodné tlačidlo na Váš panel záložiek.",
"Delete vault" : "Zmazať trezor",
"Vault password" : "Heslo trezora",
@@ -138,6 +148,7 @@
"Save keys" : "Uložiť kľúče",
"Generate sharing keys" : "Vytvor zdieľaný kľúč",
"Generating sharing keys" : "Vytvárajú sa zdieľané kľúče",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Nástroj pre heslá skontroluje vaše heslá, vypočíta priemernú dobu potrebnú na ich prelomenie a vypíše tie, ktoré sú pod hranicou bezpečnosti",
"Minimum password stength" : "Minimálna sila hesla",
"Start scan" : "Začnite skenovanie",
"Result" : "Výsledok",
@@ -150,6 +161,7 @@
"Uploading" : "Nahrávanie",
"User" : "Používateľ",
"Crypto time" : "Šifrovanie",
+ "Total time spent encrypting" : "Celkový čas strávený šifrovaním",
"Read" : "Čítať",
"Write" : "Písať",
"Files" : "Súbory",
@@ -157,15 +169,23 @@
"Pending" : "Prebieha",
"Enable link sharing" : "Povoliť zdieľanie odkazov",
"Share until date" : "Zdieľať do dátumu",
+ "Expire after views" : "Platnosť vyprší po zobrazení",
+ "Click \\\"Share\\\" first" : "Najprv kliknite na „Zdieľať“",
"Show files" : "Zobraziť súbory",
"Details" : "Detaily",
"Hide details" : "Skryť detaily",
"Password score" : "Skóre hesla",
"Cracking times" : "Časy prelomenia hesla",
"100 / hour" : "100 / hodina",
+ "Throttled online attack" : "Obmedzený online útok",
"10 / second" : "10 / sekunda",
+ "Unthrottled online attack" : "Neobmedzený online útok",
"10k / second" : "10k / sekunda",
+ "Offline attack, slow hash, many cores" : "Offline útok, pomalé hashovanie, veľa jadier",
"10B / second" : "10B / sekunda",
+ "Offline attack, fast hash, many cores" : "Offline útok, rýchle hashovanie, veľa jadier",
+ "Match sequence" : "Sekvencia zhody",
+ "See match sequence" : "Zobraziť sekvenciu zhody",
"Pattern" : "Vzor",
"Matched word" : "Zodpovedajúce slovo",
"Dictionary name" : "Názov slovníka",
@@ -173,6 +193,8 @@
"Reversed" : "Opačný",
"Guesses" : "Odhady",
"Base guesses" : "Základné odhady",
+ "Uppercase variations" : "Variácia s veľkými písmenami",
+ "l33t-variations" : "Variácia l33t",
"Showing revisions of" : "Zobrazujú sa revízie",
"Revision of" : "Revízia",
"by" : "od",
@@ -187,6 +209,7 @@
"Settings" : "Nastavenia",
"Share credential {{credential}}" : "Sprístupnenie prístupového údaju {{credential}}",
"Unshare" : "Zneprístupniť",
+ "Showing deleted since" : "Zobrazujú sa zmazané od",
"Beginning" : "Začiatok",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Zobrazuje sa {{number_filtered}} z {{credential_number}} prístupových údajov",
"Search for credential…" : "Vyhľadať prístupové údaje...",
@@ -207,6 +230,7 @@
"Use regex" : "Použi regulárny výraz",
"You have incoming share requests." : "Máte prichádzajúce požiadavky na zdieľanie",
"If you want to put the credential in another vault," : "Ak chete premiestniť prihlasovací údaj do iného trezora,",
+ "log out of this vault and log into the vault you want the shared credential in." : "odhláste sa z tohto trezoru a prihláste sa do trezoru, v ktorom chcete zdieľané prihlasovacie údaje.",
"Permissions" : "Oprávnenia",
"Received from" : "Prijaté od",
"Date" : "Dátum",
@@ -214,12 +238,22 @@
"Decline" : "Odmietnuť",
"You have {{session_time}} left before logout." : "Máte {{session_time}} do odhlásenia",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Váš trezor bol uzamknutý po dobu {{time}} z dôvodu {{tries}} neúspešných pokusov!",
+ "Hello there!" : "Zdravím!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "Nezdá sa, že by ste mali nejaké heslá. Chcete nejaké pridať?",
+ "You don't have good credentials" : "Nemáte bezpečné prihlasovacie údaje",
+ "You don't have medium credentials" : "Nemáte priemerne bezpečné prihlasovacie údaje",
+ "You don't have bad credentials" : "Nemáte málo bezpečné prihlasovacie údaje",
+ "You don't have expired credentials" : "Nemáte prihlasovacie údaje po skončení platnosti",
+ "You don't have deleted credentials" : "Nemáte vymazané prihlasovacie údaje",
+ "There are no credentials with your selected tags" : "Nemáte prihlasovacie údaje so štítkami",
+ "There are no credentials matching" : "Nemáte zodpovedajúce prihlasovacie údaje",
"Last accessed" : "Posledný prístup",
"Never" : "Nikdy",
"No vaults found, why not create one?" : "Žiadne trezory, prečo jeden nevytvoriť?",
"Password strength must be at least: {{strength}}" : "Sila hesla musí byť aspoň: {{strength}}",
"Please give your new vault a name." : "Dajte svojmu novému trezoru meno, prosím.",
"Repeat vault password" : "Zopakujte heslo trezora",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Vaše zdieľacie kľúče budú mať dĺžku 1024 bitov, čo môžete neskôr zmeniť v časti „Nastavenia“.",
"Create vault" : "Vytvoriť trezor",
"Go back to vaults" : "Späť k trezorom",
"Please input the password for" : "Prosím zadajte heslo k",
@@ -239,14 +273,32 @@
"Request removed" : "Požiadavka odstránená",
"Destruction request pending" : "Čakajúce požiadavky na zničenie",
"Warning! Adding credentials over HTTP is insecure!" : "Varovanie! Pridávanie prihlasovacích údajov cez HTTP je nebezpečné!",
+ "Logged into {{vault_name}}" : "Prihlásený do {{vault_name}}",
"Change vault" : "Zmeniť trezor",
"Deleted credentials" : "Prihlasovacie údaje vymazané",
"Logout" : "Odhlásiť",
"Donate" : "Darovať",
+ "Show All" : "Zobraziť všetko",
+ "Tags" : "Štítky",
+ "Search Tags" : "Vyhľadať štítky",
+ "Good Strength" : "Dobrá sila",
+ "Medium Strength" : "Stredná sila",
+ "Bad Strength" : "Nedostatočná sila",
+ "Expired" : "Platnosť skončila",
+ "Filter Tags" : "Filtrovať štítky",
+ "Simple Navigation" : "Jednoduchý navigační panel",
"Someone has shared a credential with you." : "Niekto vám sprístupnil prihlasovací údaj.",
"Click here to request it" : "Kliknite sem pre vytvorenie požiadavky",
"Loading…" : "Načítavam...",
"Awwhh… credential not found. Maybe it expired" : "Prihlasovací údaj nenájdený. Je možné že mu skončila platnosť.",
+ "Compromise!" : "Kompromis!",
+ "Compromised!" : "Ohrozené!",
+ "This password is compromised. You can only remove this warning by changing the password." : "Toto heslo je ohrozené. Toto upozornenie môžete odstrániť iba zmenou hesla.",
+ "email" : "E-mail",
+ "Description" : "Popis",
+ "Url" : "URL",
+ "Custom Search:" : "Vlastné vyhľadávanie:",
+ "Revert to defaults" : "Vrátiť sa k predvoleným hodnotám",
"Error while saving field" : "Chyba počas ukladania poľa",
"A Passman item has been created, modified or deleted" : "Položka v Passman bola vytvorená, modifikovaná alebo vymazaná",
"A Passman item has expired" : "Položke v Passman skončila platnosť",
@@ -256,6 +308,7 @@
"You created %1$s" : "Vytvorili ste %1$s",
"%1$s has been updated by %2$s" : "%2$s aktualizoval %1$s",
"You updated %1$s" : "Aktualizovali ste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s revidované %1$s na revíziu z %3$s",
"You reverted %1$s back to the revision of %3$s" : "Vrátili ste späť %1$s na revíziu %3$s",
"%3$s has renamed %1$s to %2$s" : "%3$s premenoval %1$s na %2$s",
"You renamed %1$s to %2$s" : "Premenovali ste %1$s na %2$s",
@@ -269,6 +322,7 @@
"%1$s has been shared with %2$s" : "%1$s bol sprístupnený %2$s",
"You received a share request for %1$s from %2$s" : "Obdržali ste požiadavku na sprístupnenie %1$s od %2$s",
"%s has been shared with a link" : "%s bol sprístupnený prostredníctvom odkazu",
+ "Passwords" : "Heslá",
"Your credential \"%s\" expired, click here to update the credential." : "Vášmu prístupovému údaju \"%s\" skončila platnosť, kliknite sem pre aktualizáciu.",
"Remind me later" : "Pripomenúť neskôr",
"Ignore" : "Ignorovať",
@@ -277,6 +331,7 @@
"%s has accepted your share request for \"%s\"." : "%s akceptoval požiadavku na sprístupnenie \"%s\".",
"Passman" : "Passman",
"Passman is a full featured password manager." : "Passman je plnohodnotný manažér hesiel.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman je plne vybavený správca hesiel.\nVlastnosti:\n- Trezory\n- Kľúč ktrezoru sa nikdy neposiela na server\n- Rozšírenie prehľadávača pre ľahký prístup k heslám\n- Aplikácia pre Android pre prístup na cestách\n- Prihlasovacie údaje sú na strane klienta šifrované pomocou 256 bitového AES\n- Prihlasovacie údaje sú na strane servera šifrované pomocou 256 bitového AES\n- Možnosť k prihlasovacím údajom pridať vlastné kolónky\n- Vlastný generátor jednorázového hesla.\n- Analyzátor bezpečnosti hesiel\n- Bezpečne zdieľajte hesiel - interne alebo prostredníctvom odkazu.\n- Import z rôznych správcov hesiel (KeePass, LastPass,DashLane, ZOHO, Clipperz.is )\nPre ukážku tejto aplikácie navštívte [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Nepodarilo sa určiť verziu",
"Passman Settings" : "Passman nastavenia",
"GitHub version:" : "GitHub verzia:",
@@ -300,6 +355,8 @@
"Reason" : "Dôvod",
"Click here to request\n\t\t\t\t\tit" : "Kliknite sem pre vytvorenie požiadavky",
"Loading&hellip;" : "Načítavanie",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Joj… nemôžem nájsť prihlasovacie údaje. Neskončila im platnosť?",
+ "Expires:" : "Platnosť končí:",
"Connection to server lost" : "Stratené spojenie so serverom",
"Problem loading page, reloading in 5 seconds" : "Nastal problém pri načítaní stránky, pokus sa zopakuje o 5 sekúnd",
"Saving..." : "Ukladám...",
diff --git a/l10n/sl.js b/l10n/sl.js
index db4ed96b..9e432920 100644
--- a/l10n/sl.js
+++ b/l10n/sl.js
@@ -1,38 +1,88 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Gesla",
- "Incorrect vault password!" : "Napačno geslo trezorja!",
+ "Generating sharing keys ( %s / 2)" : "Poteka ustvarjanje ključev za souporabo ( %s / 2)",
+ "Incorrect vault password!" : "Napačno geslo zbirnika!",
"Passwords do not match" : "Gesli se ne skladata",
"General" : "Splošno",
"Custom Fields" : "Polja po meri",
+ "Please fill in a label." : "Vpisati je treba oznako.",
+ "Please fill in a value." : "Vpisati je treba vprednost.",
"Error loading file" : "Napaka nalaganja datoteke",
+ "An error occurred during decryption" : "Med odšifriranjem je prišlo do napake.",
"Credential created!" : "Poverila so ustvarjena!",
"Credential deleted" : "Poverila so izbrisana",
"Credential updated" : "Poverila so posodobljena",
+ "Credential recovered" : "Poverilo je uspešno obnovljeno",
"Credential destroyed" : "Poverila so uničena",
+ "Error downloading file, you probably have insufficient permissions" : "Napaka med prejemanjem datoteke. Najverjetneje nimate ustreznih dovoljenj za do opravilo",
"Invalid QR code" : "Neveljavna koda QR",
+ "Starting export" : "Začenjanje izvoza",
+ "Decrypting credentials" : "Poteka odšifriranje poveril",
"Done" : "Končano",
+ "File read." : "Vsebina datoteke je prebrana.",
+ "Proceed with the following steps to import your file" : "Za uvoz datoteke sledite korakom",
+ "Skipping unlabeled credential" : "Izpuščeno je neoznačeno poverilo",
+ "Adding {{credential}}" : "Dodajanje poverila {{credential}}",
+ "Added {{credential}}" : "Dodano poverilo {{credential}}",
+ "Skipping credential, missing label on line {{line}}" : "Izpuščeno je poverilo, ki nima oznake v vrstici {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "Poverila so razčlenjena {{num}}; začet je postopek uvoza",
+ "Importing" : "Poteka uvažanje",
+ "Start import" : "Začetek uvoza",
+ "Select CSV file" : "Izbor datoteke CSV",
+ "Parsed {{rows}} lines from CSV file" : "Razčlenjenih {{rows}} vrstic iz CSV datoteke",
+ "Skip first row" : "Preskoči prvo vrstico",
+ "You need to assign the label field before you can start the import." : "Pred uvozom je treba najprej določiti polje z oznako.",
+ "The first 5 lines of the CSV are shown." : "Prikazanih je prvih 5 vrstic datoteke CSV.",
+ "Assign the proper fields to each column." : "Vsak stolpec mora imeti ustrezno oznako.",
+ "Example of imported credential" : "Primeri uvoženih poveril",
+ "Missing an importer? Try it with the generic CSV importer." : "Ni ustreznega programnika za uvoz? Priporočljivo je poskusiti tudi izvorni uvoznik CSV.",
+ "Go back to importers." : "Nazaj na uvoznike.",
+ "Revision deleted" : "Predelava je izbrisana",
+ "Revision restored" : "Predelava je obnovljena",
+ "Save in Passman" : "Shrani v program Passman",
"Settings saved" : "Nastavitve so shranjene.",
"General settings" : "Splošne nastavitve",
+ "Password audit" : "Pregled gesla",
"Password settings" : "Nastavitve gesla",
+ "Import credentials" : "Uvozi poverila",
+ "Export credentials" : "Izvozi poverila",
"Sharing" : "Souporaba",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Ali ste prepričani, da želite oditi? Z odhodom bodo uničena tudi vsa vaša poverila.",
+ "Old password field incorrect!" : "Staro geslo ni pravo!",
+ "New password does not match!" : "Novo geslo ni skladno!",
+ "Please log in with your new vault password" : "Prijavite se z novim geslom zbirnika",
+ "Share with users and groups" : "Omogoči souporabo s skupinami ali z uporabniki",
"Share link" : "Povezava za souporabo",
+ "Are you sure you want to leave? This will corrupt this credential" : "Ali ste prepričani, da želite zapustiti stran? Z odhodom bo trenutno poverilo uničeno.",
+ "Credential unshared" : "Souporaba poverila je preklicana",
+ "Credential shared" : "Souporaba poverila je omogočena",
"Saved!" : "Shranjeno!",
"Poor" : "Slabo",
"Weak" : "Šibko",
"Good" : "Dobro",
"Strong" : "Močno",
"Toggle visibility" : "Preklopi vidnost",
+ "Copy to clipboard" : "Kopiraj v odložišče",
+ "Copied to clipboard!" : "Kopirano v odložišče!",
"Generate password" : "Ustvari geslo",
+ "Copy password to clipboard" : "Kopiraj geslo v odložišče",
+ "Password copied to clipboard!" : "Geslo je kopirano v odložišče!",
+ "Complete" : "Končano",
"Username" : "Uporabniško ime",
+ "Repeat password" : "Ponovi geslo",
"Add tag" : "Dodaj oznako",
"Pick an icon" : "Izbor ikone",
"Search icons" : "Iskanje ikon",
+ "Upload a custom icon:" : "Pošlji ikono po meri:",
"Use this icon" : "Uporabi ikono",
"Delete current icon" : "Izbriši trenutno ikono",
+ "Get icon from page" : "Pridobi ikono s spletne strani",
+ "This may take a few seconds…" : "Opravilo se lahko izvaja nekaj sekund ...",
+ "There was an error fetching the icon!" : "Prišlo je do napake med pridobivanjem ikone!",
"Selected icon" : "Izbrana ikona",
"Field label" : "Oznaka polja",
+ "Field value" : "Vrednost polja",
"Choose a file" : "Izbor datoteke",
"Text" : "Besedilo",
"File" : "Datoteka",
@@ -44,9 +94,18 @@ OC.L10N.register(
"Filename" : "Ime datoteke",
"Upload date" : "Datum pošiljanja",
"Size" : "Velikost",
+ "Upload or enter your OTP secret" : "Pošljite oziroma vnesite skrivno kodo OTP",
+ "Current OTP settings" : "Trenutne nastavitve OTP",
"Issuer" : "Izdajatelj",
+ "Secret" : "Skrivna koda",
"Expiration date" : "Datum preteka",
+ "No expiration date set" : "Datum poteka ni določen",
+ "Renew interval" : "Časovni razmik obnovitve",
"Disabled" : "Onemogočeno",
+ "Day(s)" : "Dnevi",
+ "Week(s)" : "Tedni",
+ "Month(s)" : "Meseci",
+ "Year(s)" : "Leta",
"Password generation settings" : "Nastavitve ustvarjanja gesel",
"Password length" : "Dolžina gesla",
"Minimum amount of digits" : "Najmanjše število znakov",
@@ -56,34 +115,228 @@ OC.L10N.register(
"Use special characters" : "Uporabi posebne znake",
"Avoid ambiguous characters" : "Izogni se dvoumnim znakom",
"Require every character type" : "Zahtevaj vse vrste znakov",
+ "Export type" : "Vrsta izvoza",
"Export" : "Izvozi",
- "Rename vault" : "Preimenuj trezor",
- "New vault name" : "Novo ime trezorja",
+ "Enter vault password to confirm export." : "Izvoz je treba potrditi z vpisom gesla zbirnika.",
+ "Rename vault" : "Preimenuj zbirnik gesel",
+ "New vault name" : "Novo ime zbirnika gesel",
"Change" : "Spremeni",
+ "Change vault key" : "Spremeni ključ zbirnika gesel",
+ "Old vault password" : "Staro geslo zbirnika",
+ "New vault password" : "Novo geslo zbirnika",
+ "Repeat new vault password" : "Ponovni vpis novega gesla zbirnika",
+ "Please wait your vault is being updated, do not leave this page." : "Geslo zbirnika se posodablja. Pustite stran odprto in počakajte do konca opravila.",
+ "Processing" : "Poteka obdelava zahteve ...",
+ "Total progress" : "Skupni napredek",
+ "About Passman" : "O programu Passman",
"Version" : "Različica",
+ "Donate to support development" : "Podprite razvoj projekta",
+ "Bookmarklet" : "Program za zaznamke",
+ "Save your passwords with one click." : "Shranite gesla z enim klikom.",
+ "Drag below button to your bookmark toolbar." : "Povlecite spodnji gumb v orodno vrstico zaznamkov.",
+ "Delete vault" : "Izbriši zbirnik gesel",
+ "Vault password" : "Geslo zbirnika",
+ "This process is irreversible" : "To opravilo ni obrnljivo",
+ "Delete my precious passwords" : "Izbriši vsa gesla",
+ "Deleting {{password}}…" : "Poteka brisanje gesla {{password}} …",
+ "Yes, delete my precious passwords" : "Da, zbriši vsa gesla",
+ "Import type" : "Uvozi vrsto",
"Import" : "Uvozi",
+ "Read progress" : "Napredek branja",
"Upload progress" : "Napredek pošiljanja",
"Private Key" : "Zasebni ključ",
"Public key" : "Javni ključ",
"Key size" : "Velikost ključa",
+ "Save keys" : "Shrani ključe",
+ "Generate sharing keys" : "Ustvari ključe za souporabo",
+ "Generating sharing keys" : "Poteka ustvarjanje ključev za souporabo",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Orodje preveri vpisana gesla, izračuna predviden čas zloma zaščite in izpiše tista, ki so pod priporočenim pragom.",
+ "Minimum password stength" : "Najmanjša moč gesla",
+ "Start scan" : "Začni pregled",
+ "Result" : "Rezultat",
+ "Score" : "Ocena",
+ "Action" : "Dejanje",
+ "Search users…" : "Poišči uporabnike ...",
+ "Missing users? Only users that have vaults are shown." : "Ne vidite vseh uporabnikov? Prikazani so le uporabniki, ki imajo ustvarjen zbirnik gesel.",
+ "Cyphering" : "Poteka šifriranje",
"Uploading" : "Poteka pošiljanje",
+ "User" : "Uporabnik",
+ "Crypto time" : "Čas šifriranja",
+ "Total time spent encrypting" : "Skupen čas, porabljen za šifriranje",
+ "Read" : "Branje",
+ "Write" : "Zapisovanje",
+ "Files" : "Datoteke",
+ "Revisions" : "Predelave",
+ "Pending" : "Na čakanju ...",
+ "Enable link sharing" : "Omogoči souporabo povezave",
+ "Share until date" : "Omogoči souporabo do datuma",
+ "Expire after views" : "Povezava naj poteče po številu ogledov",
+ "Click \\\"Share\\\" first" : "Najprej je treba izbrati \\\"Souporabo\\\"",
+ "Show files" : "Pokaži datoteke",
"Details" : "Podrobnosti",
"Hide details" : "Skrij podrobnosti",
+ "Password score" : "Ocena gesla",
+ "Cracking times" : "Čas zloma zaščite",
+ "100 / hour" : "100 / uro",
+ "10 / second" : "10 / sekundo",
+ "10k / second" : "10k / sekundo",
+ "10B / second" : "10B / sekundo",
+ "Pattern" : "Maska",
+ "Matched word" : "Skladna beseda",
+ "Dictionary name" : "Ime slovarja",
+ "Rank" : "Rang",
+ "Reversed" : "Obrnjeno",
+ "Guesses" : "Ugibanja",
+ "Base guesses" : "Osnovna ugibanja",
+ "Uppercase variations" : "Različice z velikimi črkami",
+ "l33t-variations" : "Različice uporabe l33t",
+ "Showing revisions of" : "Prikaz predelave",
+ "Revision of" : "Predelava",
+ "by" : "s strani",
+ "No revisions found." : "Ni najdenih predelav.",
+ "Label" : "Oznaka",
+ "Restore revision" : "Obnovi predelavo",
+ "Delete revision" : "Izbriši predelavo",
+ "Edit credential" : "Uredi poverilo",
"Create new credential" : "Ustvari novo poverilo",
+ "Save" : "Shrani",
"Cancel" : "Prekliči",
"Settings" : "Nastavitve",
+ "Share credential {{credential}}" : "Omogoči souporabo poverila {{credential}}",
+ "Unshare" : "Prekini souporabo",
+ "Showing deleted since" : "Pokaži izbrisane od",
+ "Beginning" : "Začetka",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Prikazanih je {{number_filtered}} od {{credential_number}} poveril",
+ "Search for credential…" : "Iskanje poveril ...",
"Account" : "Račun",
+ "Password" : "Geslo",
+ "OTP" : "OTP",
+ "E-mail" : "Elektronski naslov",
"URL" : "Naslov URL",
+ "Notes" : "Opombe",
+ "Expiry time" : "Čas preteka",
+ "Changed" : "Spremenjeno",
+ "Created" : "Ustvarjeno",
+ "Edit" : "Uredi",
+ "Delete" : "Izbriši",
+ "Share" : "Souporaba",
+ "Recover" : "Obnovi",
+ "Destroy" : "Uniči",
+ "Use regex" : "Uporabi logični izraz",
+ "If you want to put the credential in another vault," : "Če želite postaviti poverila v drug zbirnik gesel,",
+ "log out of this vault and log into the vault you want the shared credential in." : "se odjavite iz trenutnega in se prijavite v tistega, ki naj bo ciljni zbirnik.",
+ "Permissions" : "Dovoljenja",
+ "Date" : "Datum",
+ "Accept" : "Sprejmi",
"Decline" : "Zavrni",
- "Cancel destruction request" : "Prkliči zahtevo po uničenju",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Zbirniki so zaklenjeni za {{time}} zaradi {{tries}} neuspelih poskusov!",
+ "Hello there!" : "Pozdravljeni!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "Kaže, da še ni vpisanih gesel. Ali želite dodati prvo v zbirnik?",
+ "You don't have good credentials" : "Ni nobenega kakovostnega poverila",
+ "You don't have medium credentials" : "Ni nobenega zadovoljivega poverila",
+ "You don't have bad credentials" : "Ni nobenega slabega poverila",
+ "You don't have expired credentials" : "Ni nobenega potečenega poverila",
+ "You don't have deleted credentials" : "Ni nobenega izbrisanega poverila",
+ "There are no credentials with your selected tags" : "Ni poveril, skladnih z izbrano oznako",
+ "There are no credentials matching" : "Ni skladnih poveril",
+ "Last accessed" : "Zadnji dostop",
+ "Never" : "Nikoli",
+ "No vaults found, why not create one?" : "Ni najdenih zbirnikov gesel. Ali ga želite ustvariti?",
+ "Password strength must be at least: {{strength}}" : "Moč gesla mora biti vsaj {{strength}}",
+ "Please give your new vault a name." : "Zbirniku gesel je treba dodeliti ime.",
+ "Repeat vault password" : "Ponovi geslo zbirnika",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Ustvarjen ključ souporabe je 1024-bitni, nastavitev pa lahko spremenite tudi kasneje med nastavitvami.",
+ "Create vault" : "Ustvari zbirnik gesel",
+ "Go back to vaults" : "Skoči nazaj na seznam zbirnikov",
+ "Please input the password for" : "Vpišite geslo za račun",
+ "Set this vault as the default." : "Zbirnik gesel nastavi kot privzeti zbirnik.",
+ "Log into this vault automatically." : "V zbirnik se prijavi samodejno.",
+ "Log out of this vault automatically after: " : "Samodejno odjavi po preteku:",
+ "Decrypt vault" : "Odšifriraj zbirnik",
+ "Seems you lost the vault password and you're unable to log in." : "Kaže, da ste pozabili geslo zbirnika in se ne uspete prijaviti.",
+ "If you want this vault to be removed you can request that here." : "Če želite ta zbirnik odstraniti, lahko pošljete zahtevo.",
+ "An admin then accepts or declines the request" : "Skrbnik nato sprejme ali pa zavrne zahtevo.",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Ko skrbnik uniči zbirnik gesel, so vsa poverila trajno izbrisana.",
+ "Reason for requesting deletion (optional):" : "Kakšen je razlog za izbris (izbirno):",
+ "Request vault destruction" : "Zahtevaj uničenje zbirnika",
+ "Yes, request an admin to destroy this vault" : "Da, skrbniku pošlji zahtevo za uničenje zbirnika",
+ "Cancel destruction request" : "Prekliči zahtevo za uničenje",
+ "Vault destruction requested" : "Poslana je zahteva za uničenje zbirnika",
+ "Request removed" : "Zahteva je odstranjena",
+ "Destruction request pending" : "Zahteva za uničenje je na čakanju",
+ "Warning! Adding credentials over HTTP is insecure!" : "Opozorilo! Dodajanje poveril prek HTTP ni varno!",
+ "Logged into {{vault_name}}" : "Vzpostavljena je prijava v zbirnik {{vault_name}}",
+ "Change vault" : "Zamenjaj zbirnik gesel",
+ "Deleted credentials" : "Izbrisana poverila",
"Logout" : "Odjava",
+ "Donate" : "Podpri",
+ "Show All" : "Pokaži vse",
+ "Tags" : "Oznake",
+ "Search Tags" : "Poišči oznake",
+ "Good Strength" : "Dobra moč gesla",
+ "Medium Strength" : "Srednja moč gesla",
+ "Bad Strength" : "Šibko geslo",
+ "Expired" : "Poteklo",
+ "Filter Tags" : "Filtriraj oznake",
+ "Simple Navigation" : "Enostavno krmarjenje",
+ "Someone has shared a credential with you." : "Nekdo vam je omogočil souporabo poverila.",
+ "Click here to request it" : "Kliknite za potrditev",
+ "Loading…" : "Poteka nalaganje …",
+ "Awwhh… credential not found. Maybe it expired" : "Ojoj ... poverila ni mogoče najti. Ali je morda poteklo?",
+ "Compromise!" : "Označi kot ogroženo!",
+ "Compromised!" : "Označeno kot ogroženo!",
+ "This password is compromised. You can only remove this warning by changing the password." : "To geslo je ogroženo. Opozorilo je mogoče odstraniti le z zamenjavo gesla.",
+ "email" : "elektronska pošta",
+ "Description" : "Opis",
+ "Url" : "Naslov URL",
+ "Custom Search:" : "Iskane po meri:",
+ "Revert to defaults" : "Povrni na privzeto",
+ "Error while saving field" : "Napaka med shranjevanjem vpisa polja",
+ "A Passman item has been created, modified or deleted" : "Predmet Passman je bil ustvarjen, spremenjen ali izbrisan",
+ "A Passman item has expired" : "Predmet Passman je potekel",
+ "A Passman item has been renamed" : "Predmet Passman je preimenovan",
+ "You created %1$s" : "Ustvarite %1$s",
+ "You updated %1$s" : "Posodobite %1$s",
+ "You reverted %1$s back to the revision of %3$s" : "Datoteko %1$s povrnete nazaj na predelavo %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s preimenuje %1$s v %2$s",
+ "You renamed %1$s to %2$s" : "Preimenujete %1$s v %2$s",
+ "%1$s has been deleted by %2$s" : " %2$s izbriše datoteko %1$s",
+ "You deleted %1$s" : "Izbrisali ste %1$s",
+ "%1$s has been recovered by %2$s" : " %2$s obnovi datoteko %1$s",
+ "You recovered %1$s" : "Obnovite predmet %1$s",
+ "You permanently deleted %1$s" : "Trajno izbrišete %1$s",
+ "Passwords" : "Gesla",
+ "Your credential \"%s\" expired, click here to update the credential." : "Poverilo »%s« je poteklo. S klikom ga lahko obnovite.",
+ "Remind me later" : "Opomni me kasneje",
"Ignore" : "Prezri",
+ "Passman" : "Passman",
+ "Passman is a full featured password manager." : "Program Passman je zmogljivo orodje za upravljanje z gesli.",
+ "Unable to get version info" : "Ni mogoče pridobiti podrobnosti različice",
"Passman Settings" : "Nastavitve Passman",
"GitHub version:" : "Različica GitHub:",
"A newer version of Passman is available" : "Na voljo je nova različica programa Passman",
"Password sharing" : "Souporaba gesla",
+ "Credential mover" : "Premikanje poveril",
+ "Vault destruction requests" : "Zahteve za uničenje zbirnika",
+ "Check for new versions" : "Preveri za nove različice",
+ "Enable HTTPS check" : "Omogoči preverjanje HTTPS",
+ "Disable context menu" : "Onemogoči vsebinski meni",
+ "Disable JavaScript debugger" : "Onemogoči razhroščevalnik JavaScript",
+ "Allow users on this server to share passwords with a link" : "Dovoli uporabnikom tega strežnika souporabo gesel prek povezave",
+ "Allow users on this server to share passwords with other users" : "Dovoli uporabnikom tega strežnika souporabo gesel z drugimi uporabniki",
+ "Move credentials from one account to another" : "Premakni poverila iz enega računa v drugega",
"Source account" : "Izvorni račun",
"Destination account" : "Ciljni račun",
- "Dismiss" : "Opusti"
+ "Credentials moved!" : "Poverila so premaknjena!",
+ "Requests to destroy vault" : "Zahteve za uničenje zbirnika",
+ "Request ID" : "ID zahteve",
+ "Reason" : "Razlog",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Ojoj ... poverila ni mogoče najti. Ali je morda poteklo?",
+ "Expires:" : "Poteče:",
+ "Connection to server lost" : "Povezava s strežnikom je prekinjena",
+ "Problem loading page, reloading in 5 seconds" : "Napaka nalaganja strani! Ponovni poskus bo izveden čez 5 sekund.",
+ "Saving..." : "Poteka shranjevanje ...",
+ "Dismiss" : "Opusti",
+ "seconds ago" : "pred nekaj sekundami"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/l10n/sl.json b/l10n/sl.json
index 6d0ffd1e..0bf29afe 100644
--- a/l10n/sl.json
+++ b/l10n/sl.json
@@ -1,36 +1,86 @@
{ "translations": {
- "Passwords" : "Gesla",
- "Incorrect vault password!" : "Napačno geslo trezorja!",
+ "Generating sharing keys ( %s / 2)" : "Poteka ustvarjanje ključev za souporabo ( %s / 2)",
+ "Incorrect vault password!" : "Napačno geslo zbirnika!",
"Passwords do not match" : "Gesli se ne skladata",
"General" : "Splošno",
"Custom Fields" : "Polja po meri",
+ "Please fill in a label." : "Vpisati je treba oznako.",
+ "Please fill in a value." : "Vpisati je treba vprednost.",
"Error loading file" : "Napaka nalaganja datoteke",
+ "An error occurred during decryption" : "Med odšifriranjem je prišlo do napake.",
"Credential created!" : "Poverila so ustvarjena!",
"Credential deleted" : "Poverila so izbrisana",
"Credential updated" : "Poverila so posodobljena",
+ "Credential recovered" : "Poverilo je uspešno obnovljeno",
"Credential destroyed" : "Poverila so uničena",
+ "Error downloading file, you probably have insufficient permissions" : "Napaka med prejemanjem datoteke. Najverjetneje nimate ustreznih dovoljenj za do opravilo",
"Invalid QR code" : "Neveljavna koda QR",
+ "Starting export" : "Začenjanje izvoza",
+ "Decrypting credentials" : "Poteka odšifriranje poveril",
"Done" : "Končano",
+ "File read." : "Vsebina datoteke je prebrana.",
+ "Proceed with the following steps to import your file" : "Za uvoz datoteke sledite korakom",
+ "Skipping unlabeled credential" : "Izpuščeno je neoznačeno poverilo",
+ "Adding {{credential}}" : "Dodajanje poverila {{credential}}",
+ "Added {{credential}}" : "Dodano poverilo {{credential}}",
+ "Skipping credential, missing label on line {{line}}" : "Izpuščeno je poverilo, ki nima oznake v vrstici {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "Poverila so razčlenjena {{num}}; začet je postopek uvoza",
+ "Importing" : "Poteka uvažanje",
+ "Start import" : "Začetek uvoza",
+ "Select CSV file" : "Izbor datoteke CSV",
+ "Parsed {{rows}} lines from CSV file" : "Razčlenjenih {{rows}} vrstic iz CSV datoteke",
+ "Skip first row" : "Preskoči prvo vrstico",
+ "You need to assign the label field before you can start the import." : "Pred uvozom je treba najprej določiti polje z oznako.",
+ "The first 5 lines of the CSV are shown." : "Prikazanih je prvih 5 vrstic datoteke CSV.",
+ "Assign the proper fields to each column." : "Vsak stolpec mora imeti ustrezno oznako.",
+ "Example of imported credential" : "Primeri uvoženih poveril",
+ "Missing an importer? Try it with the generic CSV importer." : "Ni ustreznega programnika za uvoz? Priporočljivo je poskusiti tudi izvorni uvoznik CSV.",
+ "Go back to importers." : "Nazaj na uvoznike.",
+ "Revision deleted" : "Predelava je izbrisana",
+ "Revision restored" : "Predelava je obnovljena",
+ "Save in Passman" : "Shrani v program Passman",
"Settings saved" : "Nastavitve so shranjene.",
"General settings" : "Splošne nastavitve",
+ "Password audit" : "Pregled gesla",
"Password settings" : "Nastavitve gesla",
+ "Import credentials" : "Uvozi poverila",
+ "Export credentials" : "Izvozi poverila",
"Sharing" : "Souporaba",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Ali ste prepričani, da želite oditi? Z odhodom bodo uničena tudi vsa vaša poverila.",
+ "Old password field incorrect!" : "Staro geslo ni pravo!",
+ "New password does not match!" : "Novo geslo ni skladno!",
+ "Please log in with your new vault password" : "Prijavite se z novim geslom zbirnika",
+ "Share with users and groups" : "Omogoči souporabo s skupinami ali z uporabniki",
"Share link" : "Povezava za souporabo",
+ "Are you sure you want to leave? This will corrupt this credential" : "Ali ste prepričani, da želite zapustiti stran? Z odhodom bo trenutno poverilo uničeno.",
+ "Credential unshared" : "Souporaba poverila je preklicana",
+ "Credential shared" : "Souporaba poverila je omogočena",
"Saved!" : "Shranjeno!",
"Poor" : "Slabo",
"Weak" : "Šibko",
"Good" : "Dobro",
"Strong" : "Močno",
"Toggle visibility" : "Preklopi vidnost",
+ "Copy to clipboard" : "Kopiraj v odložišče",
+ "Copied to clipboard!" : "Kopirano v odložišče!",
"Generate password" : "Ustvari geslo",
+ "Copy password to clipboard" : "Kopiraj geslo v odložišče",
+ "Password copied to clipboard!" : "Geslo je kopirano v odložišče!",
+ "Complete" : "Končano",
"Username" : "Uporabniško ime",
+ "Repeat password" : "Ponovi geslo",
"Add tag" : "Dodaj oznako",
"Pick an icon" : "Izbor ikone",
"Search icons" : "Iskanje ikon",
+ "Upload a custom icon:" : "Pošlji ikono po meri:",
"Use this icon" : "Uporabi ikono",
"Delete current icon" : "Izbriši trenutno ikono",
+ "Get icon from page" : "Pridobi ikono s spletne strani",
+ "This may take a few seconds…" : "Opravilo se lahko izvaja nekaj sekund ...",
+ "There was an error fetching the icon!" : "Prišlo je do napake med pridobivanjem ikone!",
"Selected icon" : "Izbrana ikona",
"Field label" : "Oznaka polja",
+ "Field value" : "Vrednost polja",
"Choose a file" : "Izbor datoteke",
"Text" : "Besedilo",
"File" : "Datoteka",
@@ -42,9 +92,18 @@
"Filename" : "Ime datoteke",
"Upload date" : "Datum pošiljanja",
"Size" : "Velikost",
+ "Upload or enter your OTP secret" : "Pošljite oziroma vnesite skrivno kodo OTP",
+ "Current OTP settings" : "Trenutne nastavitve OTP",
"Issuer" : "Izdajatelj",
+ "Secret" : "Skrivna koda",
"Expiration date" : "Datum preteka",
+ "No expiration date set" : "Datum poteka ni določen",
+ "Renew interval" : "Časovni razmik obnovitve",
"Disabled" : "Onemogočeno",
+ "Day(s)" : "Dnevi",
+ "Week(s)" : "Tedni",
+ "Month(s)" : "Meseci",
+ "Year(s)" : "Leta",
"Password generation settings" : "Nastavitve ustvarjanja gesel",
"Password length" : "Dolžina gesla",
"Minimum amount of digits" : "Najmanjše število znakov",
@@ -54,34 +113,228 @@
"Use special characters" : "Uporabi posebne znake",
"Avoid ambiguous characters" : "Izogni se dvoumnim znakom",
"Require every character type" : "Zahtevaj vse vrste znakov",
+ "Export type" : "Vrsta izvoza",
"Export" : "Izvozi",
- "Rename vault" : "Preimenuj trezor",
- "New vault name" : "Novo ime trezorja",
+ "Enter vault password to confirm export." : "Izvoz je treba potrditi z vpisom gesla zbirnika.",
+ "Rename vault" : "Preimenuj zbirnik gesel",
+ "New vault name" : "Novo ime zbirnika gesel",
"Change" : "Spremeni",
+ "Change vault key" : "Spremeni ključ zbirnika gesel",
+ "Old vault password" : "Staro geslo zbirnika",
+ "New vault password" : "Novo geslo zbirnika",
+ "Repeat new vault password" : "Ponovni vpis novega gesla zbirnika",
+ "Please wait your vault is being updated, do not leave this page." : "Geslo zbirnika se posodablja. Pustite stran odprto in počakajte do konca opravila.",
+ "Processing" : "Poteka obdelava zahteve ...",
+ "Total progress" : "Skupni napredek",
+ "About Passman" : "O programu Passman",
"Version" : "Različica",
+ "Donate to support development" : "Podprite razvoj projekta",
+ "Bookmarklet" : "Program za zaznamke",
+ "Save your passwords with one click." : "Shranite gesla z enim klikom.",
+ "Drag below button to your bookmark toolbar." : "Povlecite spodnji gumb v orodno vrstico zaznamkov.",
+ "Delete vault" : "Izbriši zbirnik gesel",
+ "Vault password" : "Geslo zbirnika",
+ "This process is irreversible" : "To opravilo ni obrnljivo",
+ "Delete my precious passwords" : "Izbriši vsa gesla",
+ "Deleting {{password}}…" : "Poteka brisanje gesla {{password}} …",
+ "Yes, delete my precious passwords" : "Da, zbriši vsa gesla",
+ "Import type" : "Uvozi vrsto",
"Import" : "Uvozi",
+ "Read progress" : "Napredek branja",
"Upload progress" : "Napredek pošiljanja",
"Private Key" : "Zasebni ključ",
"Public key" : "Javni ključ",
"Key size" : "Velikost ključa",
+ "Save keys" : "Shrani ključe",
+ "Generate sharing keys" : "Ustvari ključe za souporabo",
+ "Generating sharing keys" : "Poteka ustvarjanje ključev za souporabo",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Orodje preveri vpisana gesla, izračuna predviden čas zloma zaščite in izpiše tista, ki so pod priporočenim pragom.",
+ "Minimum password stength" : "Najmanjša moč gesla",
+ "Start scan" : "Začni pregled",
+ "Result" : "Rezultat",
+ "Score" : "Ocena",
+ "Action" : "Dejanje",
+ "Search users…" : "Poišči uporabnike ...",
+ "Missing users? Only users that have vaults are shown." : "Ne vidite vseh uporabnikov? Prikazani so le uporabniki, ki imajo ustvarjen zbirnik gesel.",
+ "Cyphering" : "Poteka šifriranje",
"Uploading" : "Poteka pošiljanje",
+ "User" : "Uporabnik",
+ "Crypto time" : "Čas šifriranja",
+ "Total time spent encrypting" : "Skupen čas, porabljen za šifriranje",
+ "Read" : "Branje",
+ "Write" : "Zapisovanje",
+ "Files" : "Datoteke",
+ "Revisions" : "Predelave",
+ "Pending" : "Na čakanju ...",
+ "Enable link sharing" : "Omogoči souporabo povezave",
+ "Share until date" : "Omogoči souporabo do datuma",
+ "Expire after views" : "Povezava naj poteče po številu ogledov",
+ "Click \\\"Share\\\" first" : "Najprej je treba izbrati \\\"Souporabo\\\"",
+ "Show files" : "Pokaži datoteke",
"Details" : "Podrobnosti",
"Hide details" : "Skrij podrobnosti",
+ "Password score" : "Ocena gesla",
+ "Cracking times" : "Čas zloma zaščite",
+ "100 / hour" : "100 / uro",
+ "10 / second" : "10 / sekundo",
+ "10k / second" : "10k / sekundo",
+ "10B / second" : "10B / sekundo",
+ "Pattern" : "Maska",
+ "Matched word" : "Skladna beseda",
+ "Dictionary name" : "Ime slovarja",
+ "Rank" : "Rang",
+ "Reversed" : "Obrnjeno",
+ "Guesses" : "Ugibanja",
+ "Base guesses" : "Osnovna ugibanja",
+ "Uppercase variations" : "Različice z velikimi črkami",
+ "l33t-variations" : "Različice uporabe l33t",
+ "Showing revisions of" : "Prikaz predelave",
+ "Revision of" : "Predelava",
+ "by" : "s strani",
+ "No revisions found." : "Ni najdenih predelav.",
+ "Label" : "Oznaka",
+ "Restore revision" : "Obnovi predelavo",
+ "Delete revision" : "Izbriši predelavo",
+ "Edit credential" : "Uredi poverilo",
"Create new credential" : "Ustvari novo poverilo",
+ "Save" : "Shrani",
"Cancel" : "Prekliči",
"Settings" : "Nastavitve",
+ "Share credential {{credential}}" : "Omogoči souporabo poverila {{credential}}",
+ "Unshare" : "Prekini souporabo",
+ "Showing deleted since" : "Pokaži izbrisane od",
+ "Beginning" : "Začetka",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Prikazanih je {{number_filtered}} od {{credential_number}} poveril",
+ "Search for credential…" : "Iskanje poveril ...",
"Account" : "Račun",
+ "Password" : "Geslo",
+ "OTP" : "OTP",
+ "E-mail" : "Elektronski naslov",
"URL" : "Naslov URL",
+ "Notes" : "Opombe",
+ "Expiry time" : "Čas preteka",
+ "Changed" : "Spremenjeno",
+ "Created" : "Ustvarjeno",
+ "Edit" : "Uredi",
+ "Delete" : "Izbriši",
+ "Share" : "Souporaba",
+ "Recover" : "Obnovi",
+ "Destroy" : "Uniči",
+ "Use regex" : "Uporabi logični izraz",
+ "If you want to put the credential in another vault," : "Če želite postaviti poverila v drug zbirnik gesel,",
+ "log out of this vault and log into the vault you want the shared credential in." : "se odjavite iz trenutnega in se prijavite v tistega, ki naj bo ciljni zbirnik.",
+ "Permissions" : "Dovoljenja",
+ "Date" : "Datum",
+ "Accept" : "Sprejmi",
"Decline" : "Zavrni",
- "Cancel destruction request" : "Prkliči zahtevo po uničenju",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Zbirniki so zaklenjeni za {{time}} zaradi {{tries}} neuspelih poskusov!",
+ "Hello there!" : "Pozdravljeni!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "Kaže, da še ni vpisanih gesel. Ali želite dodati prvo v zbirnik?",
+ "You don't have good credentials" : "Ni nobenega kakovostnega poverila",
+ "You don't have medium credentials" : "Ni nobenega zadovoljivega poverila",
+ "You don't have bad credentials" : "Ni nobenega slabega poverila",
+ "You don't have expired credentials" : "Ni nobenega potečenega poverila",
+ "You don't have deleted credentials" : "Ni nobenega izbrisanega poverila",
+ "There are no credentials with your selected tags" : "Ni poveril, skladnih z izbrano oznako",
+ "There are no credentials matching" : "Ni skladnih poveril",
+ "Last accessed" : "Zadnji dostop",
+ "Never" : "Nikoli",
+ "No vaults found, why not create one?" : "Ni najdenih zbirnikov gesel. Ali ga želite ustvariti?",
+ "Password strength must be at least: {{strength}}" : "Moč gesla mora biti vsaj {{strength}}",
+ "Please give your new vault a name." : "Zbirniku gesel je treba dodeliti ime.",
+ "Repeat vault password" : "Ponovi geslo zbirnika",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Ustvarjen ključ souporabe je 1024-bitni, nastavitev pa lahko spremenite tudi kasneje med nastavitvami.",
+ "Create vault" : "Ustvari zbirnik gesel",
+ "Go back to vaults" : "Skoči nazaj na seznam zbirnikov",
+ "Please input the password for" : "Vpišite geslo za račun",
+ "Set this vault as the default." : "Zbirnik gesel nastavi kot privzeti zbirnik.",
+ "Log into this vault automatically." : "V zbirnik se prijavi samodejno.",
+ "Log out of this vault automatically after: " : "Samodejno odjavi po preteku:",
+ "Decrypt vault" : "Odšifriraj zbirnik",
+ "Seems you lost the vault password and you're unable to log in." : "Kaže, da ste pozabili geslo zbirnika in se ne uspete prijaviti.",
+ "If you want this vault to be removed you can request that here." : "Če želite ta zbirnik odstraniti, lahko pošljete zahtevo.",
+ "An admin then accepts or declines the request" : "Skrbnik nato sprejme ali pa zavrne zahtevo.",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Ko skrbnik uniči zbirnik gesel, so vsa poverila trajno izbrisana.",
+ "Reason for requesting deletion (optional):" : "Kakšen je razlog za izbris (izbirno):",
+ "Request vault destruction" : "Zahtevaj uničenje zbirnika",
+ "Yes, request an admin to destroy this vault" : "Da, skrbniku pošlji zahtevo za uničenje zbirnika",
+ "Cancel destruction request" : "Prekliči zahtevo za uničenje",
+ "Vault destruction requested" : "Poslana je zahteva za uničenje zbirnika",
+ "Request removed" : "Zahteva je odstranjena",
+ "Destruction request pending" : "Zahteva za uničenje je na čakanju",
+ "Warning! Adding credentials over HTTP is insecure!" : "Opozorilo! Dodajanje poveril prek HTTP ni varno!",
+ "Logged into {{vault_name}}" : "Vzpostavljena je prijava v zbirnik {{vault_name}}",
+ "Change vault" : "Zamenjaj zbirnik gesel",
+ "Deleted credentials" : "Izbrisana poverila",
"Logout" : "Odjava",
+ "Donate" : "Podpri",
+ "Show All" : "Pokaži vse",
+ "Tags" : "Oznake",
+ "Search Tags" : "Poišči oznake",
+ "Good Strength" : "Dobra moč gesla",
+ "Medium Strength" : "Srednja moč gesla",
+ "Bad Strength" : "Šibko geslo",
+ "Expired" : "Poteklo",
+ "Filter Tags" : "Filtriraj oznake",
+ "Simple Navigation" : "Enostavno krmarjenje",
+ "Someone has shared a credential with you." : "Nekdo vam je omogočil souporabo poverila.",
+ "Click here to request it" : "Kliknite za potrditev",
+ "Loading…" : "Poteka nalaganje …",
+ "Awwhh… credential not found. Maybe it expired" : "Ojoj ... poverila ni mogoče najti. Ali je morda poteklo?",
+ "Compromise!" : "Označi kot ogroženo!",
+ "Compromised!" : "Označeno kot ogroženo!",
+ "This password is compromised. You can only remove this warning by changing the password." : "To geslo je ogroženo. Opozorilo je mogoče odstraniti le z zamenjavo gesla.",
+ "email" : "elektronska pošta",
+ "Description" : "Opis",
+ "Url" : "Naslov URL",
+ "Custom Search:" : "Iskane po meri:",
+ "Revert to defaults" : "Povrni na privzeto",
+ "Error while saving field" : "Napaka med shranjevanjem vpisa polja",
+ "A Passman item has been created, modified or deleted" : "Predmet Passman je bil ustvarjen, spremenjen ali izbrisan",
+ "A Passman item has expired" : "Predmet Passman je potekel",
+ "A Passman item has been renamed" : "Predmet Passman je preimenovan",
+ "You created %1$s" : "Ustvarite %1$s",
+ "You updated %1$s" : "Posodobite %1$s",
+ "You reverted %1$s back to the revision of %3$s" : "Datoteko %1$s povrnete nazaj na predelavo %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s preimenuje %1$s v %2$s",
+ "You renamed %1$s to %2$s" : "Preimenujete %1$s v %2$s",
+ "%1$s has been deleted by %2$s" : " %2$s izbriše datoteko %1$s",
+ "You deleted %1$s" : "Izbrisali ste %1$s",
+ "%1$s has been recovered by %2$s" : " %2$s obnovi datoteko %1$s",
+ "You recovered %1$s" : "Obnovite predmet %1$s",
+ "You permanently deleted %1$s" : "Trajno izbrišete %1$s",
+ "Passwords" : "Gesla",
+ "Your credential \"%s\" expired, click here to update the credential." : "Poverilo »%s« je poteklo. S klikom ga lahko obnovite.",
+ "Remind me later" : "Opomni me kasneje",
"Ignore" : "Prezri",
+ "Passman" : "Passman",
+ "Passman is a full featured password manager." : "Program Passman je zmogljivo orodje za upravljanje z gesli.",
+ "Unable to get version info" : "Ni mogoče pridobiti podrobnosti različice",
"Passman Settings" : "Nastavitve Passman",
"GitHub version:" : "Različica GitHub:",
"A newer version of Passman is available" : "Na voljo je nova različica programa Passman",
"Password sharing" : "Souporaba gesla",
+ "Credential mover" : "Premikanje poveril",
+ "Vault destruction requests" : "Zahteve za uničenje zbirnika",
+ "Check for new versions" : "Preveri za nove različice",
+ "Enable HTTPS check" : "Omogoči preverjanje HTTPS",
+ "Disable context menu" : "Onemogoči vsebinski meni",
+ "Disable JavaScript debugger" : "Onemogoči razhroščevalnik JavaScript",
+ "Allow users on this server to share passwords with a link" : "Dovoli uporabnikom tega strežnika souporabo gesel prek povezave",
+ "Allow users on this server to share passwords with other users" : "Dovoli uporabnikom tega strežnika souporabo gesel z drugimi uporabniki",
+ "Move credentials from one account to another" : "Premakni poverila iz enega računa v drugega",
"Source account" : "Izvorni račun",
"Destination account" : "Ciljni račun",
- "Dismiss" : "Opusti"
+ "Credentials moved!" : "Poverila so premaknjena!",
+ "Requests to destroy vault" : "Zahteve za uničenje zbirnika",
+ "Request ID" : "ID zahteve",
+ "Reason" : "Razlog",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Ojoj ... poverila ni mogoče najti. Ali je morda poteklo?",
+ "Expires:" : "Poteče:",
+ "Connection to server lost" : "Povezava s strežnikom je prekinjena",
+ "Problem loading page, reloading in 5 seconds" : "Napaka nalaganja strani! Ponovni poskus bo izveden čez 5 sekund.",
+ "Saving..." : "Poteka shranjevanje ...",
+ "Dismiss" : "Opusti",
+ "seconds ago" : "pred nekaj sekundami"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/l10n/sq.js b/l10n/sq.js
index defdb846..378caf85 100644
--- a/l10n/sq.js
+++ b/l10n/sq.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Fjalëkalimet",
"Incorrect vault password!" : "Fjalëkalimi i kasafortës është i pasakt!",
"Passwords do not match" : "Fjalëkalimet nuk përputhen",
"General" : "I Përgjithshëm",
@@ -250,10 +249,13 @@ OC.L10N.register(
"Deleted credentials" : "Kredencialet e fshira",
"Logout" : "Dil",
"Donate" : "Dhuroni",
+ "Tags" : "Etiketat",
"Someone has shared a credential with you." : "Dikush ka ndarë me ty një kredencial",
"Click here to request it" : "Klikoni këtu për ta porositur atë",
"Loading…" : "Duke u ngarkuar...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... kredenciali nuk u gjet. Ndoshta i ka mbaruar afati",
+ "email" : "postë elektronike",
+ "Description" : "Përshkrim",
"Error while saving field" : "Gabim gjatë ruajtjes së fushës",
"A Passman item has been created, modified or deleted" : "Një artikull Passman-i është krijuar, modifikuar ose fshirë",
"A Passman item has expired" : "Një artikull Passman-i ka skaduar",
@@ -277,6 +279,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$sështë ndar me %2$s",
"You received a share request for %1$s from %2$s" : "Ju morët një kërkesë për ndarje për %1$snga %2$s",
"%s has been shared with a link" : "%sështë ndar me një link",
+ "Passwords" : "Fjalëkalimet",
"Your credential \"%s\" expired, click here to update the credential." : "Kredenciali juaj \"%s\" skadoi, klikoni këtu për të përditësuar kredencialin.",
"Remind me later" : "Më kujto më vonë",
"Ignore" : "Injoro",
diff --git a/l10n/sq.json b/l10n/sq.json
index 39166702..2d69ab48 100644
--- a/l10n/sq.json
+++ b/l10n/sq.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Fjalëkalimet",
"Incorrect vault password!" : "Fjalëkalimi i kasafortës është i pasakt!",
"Passwords do not match" : "Fjalëkalimet nuk përputhen",
"General" : "I Përgjithshëm",
@@ -248,10 +247,13 @@
"Deleted credentials" : "Kredencialet e fshira",
"Logout" : "Dil",
"Donate" : "Dhuroni",
+ "Tags" : "Etiketat",
"Someone has shared a credential with you." : "Dikush ka ndarë me ty një kredencial",
"Click here to request it" : "Klikoni këtu për ta porositur atë",
"Loading…" : "Duke u ngarkuar...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... kredenciali nuk u gjet. Ndoshta i ka mbaruar afati",
+ "email" : "postë elektronike",
+ "Description" : "Përshkrim",
"Error while saving field" : "Gabim gjatë ruajtjes së fushës",
"A Passman item has been created, modified or deleted" : "Një artikull Passman-i është krijuar, modifikuar ose fshirë",
"A Passman item has expired" : "Një artikull Passman-i ka skaduar",
@@ -275,6 +277,7 @@
"%1$s has been shared with %2$s" : "%1$sështë ndar me %2$s",
"You received a share request for %1$s from %2$s" : "Ju morët një kërkesë për ndarje për %1$snga %2$s",
"%s has been shared with a link" : "%sështë ndar me një link",
+ "Passwords" : "Fjalëkalimet",
"Your credential \"%s\" expired, click here to update the credential." : "Kredenciali juaj \"%s\" skadoi, klikoni këtu për të përditësuar kredencialin.",
"Remind me later" : "Më kujto më vonë",
"Ignore" : "Injoro",
diff --git a/l10n/sr.js b/l10n/sr.js
index 2c9ea964..4bac8a62 100644
--- a/l10n/sr.js
+++ b/l10n/sr.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Лозинке",
"Generating sharing keys ( %s / 2)" : "Генеришем дељене кључеве (%s/2)",
"Incorrect vault password!" : "Неисправна лозинка за сеф!",
"Passwords do not match" : "Лозинке се не поклапају",
@@ -211,7 +210,7 @@ OC.L10N.register(
"Cancel" : "Одустани",
"Settings" : "Поставке",
"Share credential {{credential}}" : "Подели акредитив {{credential}}",
- "Unshare" : "Склони дељење",
+ "Unshare" : "Не дели",
"Showing deleted since" : "Приказујем обрисане од",
"Beginning" : "Почетка",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Приказујем {{number_filtered}} од {{credential_number}} акредитива",
@@ -325,6 +324,7 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s је подељено са %2$s",
"You received a share request for %1$s from %2$s" : "Примили сте захтев за дељење %1$s са %2$s",
"%s has been shared with a link" : "%s је подељено везом",
+ "Passwords" : "Лозинке",
"Your credential \"%s\" expired, click here to update the credential." : "Ваш акредитив \"%s\" је истекао, кликните овде да ажурирате акредитив.",
"Remind me later" : "Подсети ме касније",
"Ignore" : "Игнориши",
@@ -345,8 +345,8 @@ OC.L10N.register(
"Enable HTTPS check" : "Укључи провери за HTTPS везом",
"Disable context menu" : "Искључи контекстни мени",
"Disable JavaScript debugger" : "Искључи ЈаваСкрипт дебагер",
- "Allow users on this server to share passwords with a link" : "Дозвољава корисницима овог сервера да деле лозинке преко везе",
- "Allow users on this server to share passwords with other users" : "Дозвољава корисницима овог сервера да деле лозинке са осталим корисницима",
+ "Allow users on this server to share passwords with a link" : "Дозволи корисницима овог сервера да деле лозинке помоћу везе",
+ "Allow users on this server to share passwords with other users" : "Дозволи корисницима овог сервера да деле лозинке са осталим корисницима",
"Move credentials from one account to another" : "Пресели акредитиве са једног налога на други",
"Source account" : "Изворни налог",
"Destination account" : "Одредишни налог",
diff --git a/l10n/sr.json b/l10n/sr.json
index c6aa09ee..0e99fadb 100644
--- a/l10n/sr.json
+++ b/l10n/sr.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Лозинке",
"Generating sharing keys ( %s / 2)" : "Генеришем дељене кључеве (%s/2)",
"Incorrect vault password!" : "Неисправна лозинка за сеф!",
"Passwords do not match" : "Лозинке се не поклапају",
@@ -209,7 +208,7 @@
"Cancel" : "Одустани",
"Settings" : "Поставке",
"Share credential {{credential}}" : "Подели акредитив {{credential}}",
- "Unshare" : "Склони дељење",
+ "Unshare" : "Не дели",
"Showing deleted since" : "Приказујем обрисане од",
"Beginning" : "Почетка",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Приказујем {{number_filtered}} од {{credential_number}} акредитива",
@@ -323,6 +322,7 @@
"%1$s has been shared with %2$s" : "%1$s је подељено са %2$s",
"You received a share request for %1$s from %2$s" : "Примили сте захтев за дељење %1$s са %2$s",
"%s has been shared with a link" : "%s је подељено везом",
+ "Passwords" : "Лозинке",
"Your credential \"%s\" expired, click here to update the credential." : "Ваш акредитив \"%s\" је истекао, кликните овде да ажурирате акредитив.",
"Remind me later" : "Подсети ме касније",
"Ignore" : "Игнориши",
@@ -343,8 +343,8 @@
"Enable HTTPS check" : "Укључи провери за HTTPS везом",
"Disable context menu" : "Искључи контекстни мени",
"Disable JavaScript debugger" : "Искључи ЈаваСкрипт дебагер",
- "Allow users on this server to share passwords with a link" : "Дозвољава корисницима овог сервера да деле лозинке преко везе",
- "Allow users on this server to share passwords with other users" : "Дозвољава корисницима овог сервера да деле лозинке са осталим корисницима",
+ "Allow users on this server to share passwords with a link" : "Дозволи корисницима овог сервера да деле лозинке помоћу везе",
+ "Allow users on this server to share passwords with other users" : "Дозволи корисницима овог сервера да деле лозинке са осталим корисницима",
"Move credentials from one account to another" : "Пресели акредитиве са једног налога на други",
"Source account" : "Изворни налог",
"Destination account" : "Одредишни налог",
diff --git a/l10n/sr@latin.js b/l10n/sr@latin.js
new file mode 100644
index 00000000..ead94a5f
--- /dev/null
+++ b/l10n/sr@latin.js
@@ -0,0 +1,43 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "Opšte",
+ "Done" : "Done",
+ "Sharing" : "Deljenje",
+ "Share with users and groups" : "Deljenje sa korisnicima i grupama",
+ "Share link" : "Veza deljenja",
+ "Username" : "Username",
+ "File" : "File",
+ "Add" : "Dodaj",
+ "Type" : "Type",
+ "Filename" : "Ime fajla",
+ "Expiration date" : "Datum isteka",
+ "Version" : "Verzija",
+ "Import" : "Uvezi",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Read" : "Čitaj",
+ "Files" : "Fajlovi",
+ "Pending" : "Na čekanju",
+ "Details" : "Detalji",
+ "Save" : "Save",
+ "Cancel" : "Cancel",
+ "Settings" : "Postavke",
+ "Unshare" : "Ne deli",
+ "Password" : "Password",
+ "E-mail" : "Adresa e-pošte",
+ "URL" : "Url",
+ "Notes" : "Notes",
+ "Edit" : "Uredi",
+ "Delete" : "Delete",
+ "Share" : "Deljenje",
+ "Date" : "Date",
+ "Never" : "Nikad",
+ "Tags" : "Oznake",
+ "Loading…" : "Učitavanje...",
+ "Description" : "Opis",
+ "Saving..." : "Upisujem...",
+ "Dismiss" : "Odbaci",
+ "seconds ago" : "pre par sekundi"
+},
+"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/l10n/sr@latin.json b/l10n/sr@latin.json
new file mode 100644
index 00000000..76c9f2a6
--- /dev/null
+++ b/l10n/sr@latin.json
@@ -0,0 +1,41 @@
+{ "translations": {
+ "General" : "Opšte",
+ "Done" : "Done",
+ "Sharing" : "Deljenje",
+ "Share with users and groups" : "Deljenje sa korisnicima i grupama",
+ "Share link" : "Veza deljenja",
+ "Username" : "Username",
+ "File" : "File",
+ "Add" : "Dodaj",
+ "Type" : "Type",
+ "Filename" : "Ime fajla",
+ "Expiration date" : "Datum isteka",
+ "Version" : "Verzija",
+ "Import" : "Uvezi",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Read" : "Čitaj",
+ "Files" : "Fajlovi",
+ "Pending" : "Na čekanju",
+ "Details" : "Detalji",
+ "Save" : "Save",
+ "Cancel" : "Cancel",
+ "Settings" : "Postavke",
+ "Unshare" : "Ne deli",
+ "Password" : "Password",
+ "E-mail" : "Adresa e-pošte",
+ "URL" : "Url",
+ "Notes" : "Notes",
+ "Edit" : "Uredi",
+ "Delete" : "Delete",
+ "Share" : "Deljenje",
+ "Date" : "Date",
+ "Never" : "Nikad",
+ "Tags" : "Oznake",
+ "Loading…" : "Učitavanje...",
+ "Description" : "Opis",
+ "Saving..." : "Upisujem...",
+ "Dismiss" : "Odbaci",
+ "seconds ago" : "pre par sekundi"
+},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
+} \ No newline at end of file
diff --git a/l10n/sv.js b/l10n/sv.js
index c0337c3f..b1062789 100644
--- a/l10n/sv.js
+++ b/l10n/sv.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Lösenord",
"Generating sharing keys ( %s / 2)" : "Genererar delningsnycklar ( %s / 2)",
"Incorrect vault password!" : "Felaktigt valvlösenord!",
"Passwords do not match" : "Lösenorden matchar inte",
@@ -16,6 +15,7 @@ OC.L10N.register(
"Credential updated" : "Uppgifterna uppdaterade",
"Credential recovered" : "Uppgifterna återställda",
"Credential destroyed" : "Uppgifterna förstörda",
+ "Error downloading file, you probably have insufficient permissions" : "Fel vid hämtning av fil, du har förmodligen otillräckliga behörigheter",
"Invalid QR code" : "Ogiltig QR-kod",
"Starting export" : "Påbörjar exportering",
"Decrypting credentials" : "Dekrypterar uppgifterna",
@@ -73,7 +73,12 @@ OC.L10N.register(
"Add tag" : "Lägg till tagg",
"Pick an icon" : "Välj en ikon",
"Search icons" : "Sök efter ikoner",
+ "Upload a custom icon:" : "Ladda upp en anpassad ikon:",
"Use this icon" : "Använd denna ikon",
+ "Delete current icon" : "Radera aktuell ikon",
+ "Get icon from page" : "Hämta ikonen från sidan",
+ "This may take a few seconds…" : "Detta kan ta några sekunder…",
+ "There was an error fetching the icon!" : "Det gick inte att hämta ikonen!",
"Selected icon" : "Vald ikon",
"Field label" : "Fältetikett",
"Field value" : "Fältvärde",
@@ -144,6 +149,7 @@ OC.L10N.register(
"Save keys" : "Spara nycklar",
"Generate sharing keys" : "Generera delningsnycklar",
"Generating sharing keys" : "Genererar delningsnycklar",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Lösenordsverktyget skannar ditt lösenord, beräknar den genomsnittliga spricktiden och listar de under tröskeln",
"Minimum password stength" : "Minsta lösenordsstyrka",
"Start scan" : "Påbörja skanning",
"Result" : "Resultat",
@@ -156,6 +162,7 @@ OC.L10N.register(
"Uploading" : "Laddar upp",
"User" : "Användare",
"Crypto time" : "Krypteringstid",
+ "Total time spent encrypting" : "Total tid för kryptering",
"Read" : "Läs",
"Write" : "Skriv",
"Files" : "Filer",
@@ -203,7 +210,7 @@ OC.L10N.register(
"Settings" : "Inställningar",
"Share credential {{credential}}" : "Dela uppgifter {{credential}}",
"Unshare" : "Ta bort delning",
- "Showing deleted since" : "Visar raderade sedan",
+ "Showing deleted since" : "Visar borttagna sedan",
"Beginning" : "Påbörjar",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Visar {{number_filtered}} av {{credential_number}} uppgifter",
"Search for credential…" : "Söker efter uppgifter...",
@@ -267,13 +274,23 @@ OC.L10N.register(
"Show All" : "Visa alla",
"Tags" : "Taggar",
"Search Tags" : "Sök efter taggar",
+ "Good Strength" : "Bra styrka",
+ "Medium Strength" : "Medium styrka",
"Bad Strength" : "Dålig styrka",
"Expired" : "Utgånget",
"Filter Tags" : "Filtertaggar",
+ "Simple Navigation" : "Enkel navigering",
"Someone has shared a credential with you." : "Någon delade uppgifter med dig",
"Click here to request it" : "Klicka här för att begära det",
- "Loading…" : "Laddar...",
+ "Loading…" : "Läser in...",
"Awwhh… credential not found. Maybe it expired" : "Oops... uppgifter hittades inte. Kanske har de gått ut",
+ "Compromise!" : "Komprimera!",
+ "Compromised!" : "Komprimerad!",
+ "email" : "e-post",
+ "Description" : "Beskrivning",
+ "Url" : "Webbadress",
+ "Custom Search:" : "Anpassad sökning:",
+ "Revert to defaults" : "Återgå till standardvärden",
"Error while saving field" : "Fel vid sparande av fält",
"A Passman item has been created, modified or deleted" : "Ett Passman-objekt har skapats, ändrats eller raderats",
"A Passman item has expired" : "Ett Passman-objekt har utgått",
@@ -288,15 +305,16 @@ OC.L10N.register(
"%3$s has renamed %1$s to %2$s" : "%3$s har döpt om %1$s till %2$s",
"You renamed %1$s to %2$s" : "Du har döpt om %1$s till %2$s",
"%1$s has been deleted by %2$s" : "%1$s har raderats av %2$s",
- "You deleted %1$s" : "Du raderade %1$s",
+ "You deleted %1$s" : "Du tog bort %1$s",
"%1$s has been recovered by %2$s" : "%1$s har blivit återställd av %2$s",
"You recovered %1$s" : "Du återställde %1$s",
"%1$s has been permanently deleted by %2$s" : "%1$s har blivit permanent raderad %2$s",
- "You permanently deleted %1$s" : "Du raderade permanent %1$s",
+ "You permanently deleted %1$s" : "Du tog bort permanent %1$s",
"The password of %1$s has expired, renew it now." : "Lösenordet för %1$s har utgått, förnya det genast.",
"%1$s has been shared with %2$s" : "%1$s har delats med %2$s",
"You received a share request for %1$s from %2$s" : "Du har mottagit en delningsförfrågan av %1$s från %2$s",
"%s has been shared with a link" : "%s har delats som en länk",
+ "Passwords" : "Lösenord",
"Your credential \"%s\" expired, click here to update the credential." : "Dina uppgifter \"%s\" har utgått, klicka här för att nya dessa.",
"Remind me later" : "Påminn mig senare",
"Ignore" : "Ignorera",
@@ -329,9 +347,10 @@ OC.L10N.register(
"Reason" : "Anledning",
"Click here to request\n\t\t\t\t\tit" : "Klicka här för att efterfråga\n\t\t\t\t\tit",
"Loading&hellip;" : "Läser in&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Awwhh... kunde inte hitta uppgiften. Kanske gick den ut?",
"Expires:" : "Förfaller:",
"Connection to server lost" : "Anslutning till servern förlorad",
- "Problem loading page, reloading in 5 seconds" : "Problem att ladda sidan, provar igen om 5 sekunder",
+ "Problem loading page, reloading in 5 seconds" : "Problem att läsa in sidan, provar igen om 5 sekunder",
"Saving..." : "Sparar...",
"Dismiss" : "Avfärda",
"seconds ago" : "sekunder sedan"
diff --git a/l10n/sv.json b/l10n/sv.json
index 69308b35..ece51251 100644
--- a/l10n/sv.json
+++ b/l10n/sv.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Lösenord",
"Generating sharing keys ( %s / 2)" : "Genererar delningsnycklar ( %s / 2)",
"Incorrect vault password!" : "Felaktigt valvlösenord!",
"Passwords do not match" : "Lösenorden matchar inte",
@@ -14,6 +13,7 @@
"Credential updated" : "Uppgifterna uppdaterade",
"Credential recovered" : "Uppgifterna återställda",
"Credential destroyed" : "Uppgifterna förstörda",
+ "Error downloading file, you probably have insufficient permissions" : "Fel vid hämtning av fil, du har förmodligen otillräckliga behörigheter",
"Invalid QR code" : "Ogiltig QR-kod",
"Starting export" : "Påbörjar exportering",
"Decrypting credentials" : "Dekrypterar uppgifterna",
@@ -71,7 +71,12 @@
"Add tag" : "Lägg till tagg",
"Pick an icon" : "Välj en ikon",
"Search icons" : "Sök efter ikoner",
+ "Upload a custom icon:" : "Ladda upp en anpassad ikon:",
"Use this icon" : "Använd denna ikon",
+ "Delete current icon" : "Radera aktuell ikon",
+ "Get icon from page" : "Hämta ikonen från sidan",
+ "This may take a few seconds…" : "Detta kan ta några sekunder…",
+ "There was an error fetching the icon!" : "Det gick inte att hämta ikonen!",
"Selected icon" : "Vald ikon",
"Field label" : "Fältetikett",
"Field value" : "Fältvärde",
@@ -142,6 +147,7 @@
"Save keys" : "Spara nycklar",
"Generate sharing keys" : "Generera delningsnycklar",
"Generating sharing keys" : "Genererar delningsnycklar",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Lösenordsverktyget skannar ditt lösenord, beräknar den genomsnittliga spricktiden och listar de under tröskeln",
"Minimum password stength" : "Minsta lösenordsstyrka",
"Start scan" : "Påbörja skanning",
"Result" : "Resultat",
@@ -154,6 +160,7 @@
"Uploading" : "Laddar upp",
"User" : "Användare",
"Crypto time" : "Krypteringstid",
+ "Total time spent encrypting" : "Total tid för kryptering",
"Read" : "Läs",
"Write" : "Skriv",
"Files" : "Filer",
@@ -201,7 +208,7 @@
"Settings" : "Inställningar",
"Share credential {{credential}}" : "Dela uppgifter {{credential}}",
"Unshare" : "Ta bort delning",
- "Showing deleted since" : "Visar raderade sedan",
+ "Showing deleted since" : "Visar borttagna sedan",
"Beginning" : "Påbörjar",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Visar {{number_filtered}} av {{credential_number}} uppgifter",
"Search for credential…" : "Söker efter uppgifter...",
@@ -265,13 +272,23 @@
"Show All" : "Visa alla",
"Tags" : "Taggar",
"Search Tags" : "Sök efter taggar",
+ "Good Strength" : "Bra styrka",
+ "Medium Strength" : "Medium styrka",
"Bad Strength" : "Dålig styrka",
"Expired" : "Utgånget",
"Filter Tags" : "Filtertaggar",
+ "Simple Navigation" : "Enkel navigering",
"Someone has shared a credential with you." : "Någon delade uppgifter med dig",
"Click here to request it" : "Klicka här för att begära det",
- "Loading…" : "Laddar...",
+ "Loading…" : "Läser in...",
"Awwhh… credential not found. Maybe it expired" : "Oops... uppgifter hittades inte. Kanske har de gått ut",
+ "Compromise!" : "Komprimera!",
+ "Compromised!" : "Komprimerad!",
+ "email" : "e-post",
+ "Description" : "Beskrivning",
+ "Url" : "Webbadress",
+ "Custom Search:" : "Anpassad sökning:",
+ "Revert to defaults" : "Återgå till standardvärden",
"Error while saving field" : "Fel vid sparande av fält",
"A Passman item has been created, modified or deleted" : "Ett Passman-objekt har skapats, ändrats eller raderats",
"A Passman item has expired" : "Ett Passman-objekt har utgått",
@@ -286,15 +303,16 @@
"%3$s has renamed %1$s to %2$s" : "%3$s har döpt om %1$s till %2$s",
"You renamed %1$s to %2$s" : "Du har döpt om %1$s till %2$s",
"%1$s has been deleted by %2$s" : "%1$s har raderats av %2$s",
- "You deleted %1$s" : "Du raderade %1$s",
+ "You deleted %1$s" : "Du tog bort %1$s",
"%1$s has been recovered by %2$s" : "%1$s har blivit återställd av %2$s",
"You recovered %1$s" : "Du återställde %1$s",
"%1$s has been permanently deleted by %2$s" : "%1$s har blivit permanent raderad %2$s",
- "You permanently deleted %1$s" : "Du raderade permanent %1$s",
+ "You permanently deleted %1$s" : "Du tog bort permanent %1$s",
"The password of %1$s has expired, renew it now." : "Lösenordet för %1$s har utgått, förnya det genast.",
"%1$s has been shared with %2$s" : "%1$s har delats med %2$s",
"You received a share request for %1$s from %2$s" : "Du har mottagit en delningsförfrågan av %1$s från %2$s",
"%s has been shared with a link" : "%s har delats som en länk",
+ "Passwords" : "Lösenord",
"Your credential \"%s\" expired, click here to update the credential." : "Dina uppgifter \"%s\" har utgått, klicka här för att nya dessa.",
"Remind me later" : "Påminn mig senare",
"Ignore" : "Ignorera",
@@ -327,9 +345,10 @@
"Reason" : "Anledning",
"Click here to request\n\t\t\t\t\tit" : "Klicka här för att efterfråga\n\t\t\t\t\tit",
"Loading&hellip;" : "Läser in&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Awwhh... kunde inte hitta uppgiften. Kanske gick den ut?",
"Expires:" : "Förfaller:",
"Connection to server lost" : "Anslutning till servern förlorad",
- "Problem loading page, reloading in 5 seconds" : "Problem att ladda sidan, provar igen om 5 sekunder",
+ "Problem loading page, reloading in 5 seconds" : "Problem att läsa in sidan, provar igen om 5 sekunder",
"Saving..." : "Sparar...",
"Dismiss" : "Avfärda",
"seconds ago" : "sekunder sedan"
diff --git a/l10n/ta_LK.js b/l10n/ta_LK.js
new file mode 100644
index 00000000..4a46169b
--- /dev/null
+++ b/l10n/ta_LK.js
@@ -0,0 +1,38 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "பொதுவான",
+ "Done" : "Done",
+ "Share link" : "Share link",
+ "Username" : "பயனாளர் பெயர்",
+ "File" : "File",
+ "Add" : "சேர்க்க",
+ "Type" : "வகை",
+ "Actions" : "செயல்கள்",
+ "Size" : "அளவு",
+ "Expiration date" : "காலவதியாகும் திகதி",
+ "Export" : "ஏற்றுமதி",
+ "Import" : "இறக்குமதி",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "கோப்புகள்",
+ "Pending" : "நிலுவையிலுள்ள",
+ "Details" : "விவரங்கள்",
+ "by" : "மூலம்",
+ "Save" : "சேமிக்க ",
+ "Cancel" : "இரத்து செய்க",
+ "Settings" : "அமைப்புகள்",
+ "Unshare" : "பகிரப்படாதது",
+ "Password" : "கடவுச்சொல்",
+ "URL" : "URL",
+ "Notes" : "குறிப்புகள்",
+ "Edit" : "தொகுக்க",
+ "Delete" : "நீக்குக",
+ "Share" : "பகிர்வு",
+ "Date" : "Date",
+ "Tags" : "சீட்டுகள்",
+ "Description" : "விவரிப்பு",
+ "Saving..." : "சேமிக்கப்படுகிறது...",
+ "seconds ago" : "செக்கன்களுக்கு முன்"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/ta_LK.json b/l10n/ta_LK.json
new file mode 100644
index 00000000..3b1318fc
--- /dev/null
+++ b/l10n/ta_LK.json
@@ -0,0 +1,36 @@
+{ "translations": {
+ "General" : "பொதுவான",
+ "Done" : "Done",
+ "Share link" : "Share link",
+ "Username" : "பயனாளர் பெயர்",
+ "File" : "File",
+ "Add" : "சேர்க்க",
+ "Type" : "வகை",
+ "Actions" : "செயல்கள்",
+ "Size" : "அளவு",
+ "Expiration date" : "காலவதியாகும் திகதி",
+ "Export" : "ஏற்றுமதி",
+ "Import" : "இறக்குமதி",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "கோப்புகள்",
+ "Pending" : "நிலுவையிலுள்ள",
+ "Details" : "விவரங்கள்",
+ "by" : "மூலம்",
+ "Save" : "சேமிக்க ",
+ "Cancel" : "இரத்து செய்க",
+ "Settings" : "அமைப்புகள்",
+ "Unshare" : "பகிரப்படாதது",
+ "Password" : "கடவுச்சொல்",
+ "URL" : "URL",
+ "Notes" : "குறிப்புகள்",
+ "Edit" : "தொகுக்க",
+ "Delete" : "நீக்குக",
+ "Share" : "பகிர்வு",
+ "Date" : "Date",
+ "Tags" : "சீட்டுகள்",
+ "Description" : "விவரிப்பு",
+ "Saving..." : "சேமிக்கப்படுகிறது...",
+ "seconds ago" : "செக்கன்களுக்கு முன்"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/th.js b/l10n/th.js
new file mode 100644
index 00000000..5f3ef2b8
--- /dev/null
+++ b/l10n/th.js
@@ -0,0 +1,53 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "ทั่วไป",
+ "Done" : "Done",
+ "Sharing" : "แชร์ข้อมูล",
+ "Share with users and groups" : "แชร์กับผู้ใช้และกลุ่ม",
+ "Share link" : "แชร์ลิงค์",
+ "Username" : "ชื่อผู้ใช้",
+ "File" : "File",
+ "Add" : "เพิ่ม",
+ "Type" : "ประเภท",
+ "Actions" : "การกระทำ",
+ "Size" : "ขนาด",
+ "Expiration date" : "วันที่หมดอายุ",
+ "Disabled" : "ปิดการใช้งาน",
+ "Export" : "ส่งออก",
+ "Version" : "รุ่น",
+ "Import" : "นำเข้า",
+ "Public key" : "คีย์สาธารณะ",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Read" : "อ่าน",
+ "Files" : "ไฟล์",
+ "Pending" : "อยู่ระหว่างดำเนินการ",
+ "Details" : "รายละเอียด",
+ "by" : "โดย",
+ "Save" : "บันทึก",
+ "Cancel" : "ยกเลิก",
+ "Settings" : "ตั้งค่า",
+ "Unshare" : "ยกเลิกการแชร์",
+ "Password" : "รหัสผ่าน",
+ "URL" : "URL",
+ "Notes" : "บันทึกย่อ",
+ "Edit" : "แก้ไข",
+ "Delete" : "ลบ",
+ "Share" : "แชร์",
+ "Date" : "Date",
+ "Accept" : "ยอมรับ",
+ "Decline" : "ลดลง",
+ "Never" : "ไม่เคย",
+ "Donate" : "บริจาค/สนับสนุน",
+ "Tags" : "ป้ายกำกับ",
+ "Loading…" : "กำลังโหลด...",
+ "Description" : "รายละเอียด",
+ "You created %1$s" : "คุณสร้าง %1$s",
+ "You deleted %1$s" : "คุณลบ %1$s ออก",
+ "Problem loading page, reloading in 5 seconds" : "เกิดปัญหาขณะโหลดหน้าเว็บ จะรีโหลดหน้าเว็บภายใน 5 วินาที",
+ "Saving..." : "กำลังบันทึกข้อมูล...",
+ "Dismiss" : "ยกเลิก",
+ "seconds ago" : "วินาที ก่อนหน้านี้"
+},
+"nplurals=1; plural=0;");
diff --git a/l10n/th.json b/l10n/th.json
new file mode 100644
index 00000000..ea3f2baa
--- /dev/null
+++ b/l10n/th.json
@@ -0,0 +1,51 @@
+{ "translations": {
+ "General" : "ทั่วไป",
+ "Done" : "Done",
+ "Sharing" : "แชร์ข้อมูล",
+ "Share with users and groups" : "แชร์กับผู้ใช้และกลุ่ม",
+ "Share link" : "แชร์ลิงค์",
+ "Username" : "ชื่อผู้ใช้",
+ "File" : "File",
+ "Add" : "เพิ่ม",
+ "Type" : "ประเภท",
+ "Actions" : "การกระทำ",
+ "Size" : "ขนาด",
+ "Expiration date" : "วันที่หมดอายุ",
+ "Disabled" : "ปิดการใช้งาน",
+ "Export" : "ส่งออก",
+ "Version" : "รุ่น",
+ "Import" : "นำเข้า",
+ "Public key" : "คีย์สาธารณะ",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Read" : "อ่าน",
+ "Files" : "ไฟล์",
+ "Pending" : "อยู่ระหว่างดำเนินการ",
+ "Details" : "รายละเอียด",
+ "by" : "โดย",
+ "Save" : "บันทึก",
+ "Cancel" : "ยกเลิก",
+ "Settings" : "ตั้งค่า",
+ "Unshare" : "ยกเลิกการแชร์",
+ "Password" : "รหัสผ่าน",
+ "URL" : "URL",
+ "Notes" : "บันทึกย่อ",
+ "Edit" : "แก้ไข",
+ "Delete" : "ลบ",
+ "Share" : "แชร์",
+ "Date" : "Date",
+ "Accept" : "ยอมรับ",
+ "Decline" : "ลดลง",
+ "Never" : "ไม่เคย",
+ "Donate" : "บริจาค/สนับสนุน",
+ "Tags" : "ป้ายกำกับ",
+ "Loading…" : "กำลังโหลด...",
+ "Description" : "รายละเอียด",
+ "You created %1$s" : "คุณสร้าง %1$s",
+ "You deleted %1$s" : "คุณลบ %1$s ออก",
+ "Problem loading page, reloading in 5 seconds" : "เกิดปัญหาขณะโหลดหน้าเว็บ จะรีโหลดหน้าเว็บภายใน 5 วินาที",
+ "Saving..." : "กำลังบันทึกข้อมูล...",
+ "Dismiss" : "ยกเลิก",
+ "seconds ago" : "วินาที ก่อนหน้านี้"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/l10n/tr.js b/l10n/tr.js
index 05e5758f..779e0682 100644
--- a/l10n/tr.js
+++ b/l10n/tr.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "Parolalar",
"Generating sharing keys ( %s / 2)" : "Paylaşım anahtarları üretiliyor ( %s / 2)",
"Incorrect vault password!" : "Kasa parolası yanlış!",
"Passwords do not match" : "Parola ile onayı aynı değil",
@@ -79,7 +78,7 @@ OC.L10N.register(
"Use this icon" : "Bu simge kullanılsın",
"Delete current icon" : "Geçerli simgeyi sil",
"Get icon from page" : "Simge sayfadan alınsın",
- "This may take a few seconds…" : "Bu işlem bir kaç saniye sürebilir…",
+ "This may take a few seconds…" : "Bu işlem bir kaç saniye sürebilir …",
"There was an error fetching the icon!" : "Simge alınırken bir sorun çıktı!",
"Selected icon" : "Seçilmiş simge",
"Field label" : "Alan Etiketi",
@@ -139,7 +138,7 @@ OC.L10N.register(
"Vault password" : "Kasa parolası",
"This process is irreversible" : "Bu işlem geri alınamaz",
"Delete my precious passwords" : "Değerli parolalarımı sil",
- "Deleting {{password}}…" : "{{password}} siliniyor...",
+ "Deleting {{password}}…" : "{{password}} siliniyor …",
"Yes, delete my precious passwords" : "Evet, değerli parolalarımı sil",
"Import type" : "İçe aktarma türü",
"Import" : "İçe aktar",
@@ -158,7 +157,7 @@ OC.L10N.register(
"A total of {{scan_result}} weak credentials were found." : "Toplam {{scan_result}} zayıf parola bulundu.",
"Score" : "Değerlendirme",
"Action" : "İşlem",
- "Search users…" : "Kullanıcı arama…",
+ "Search users…" : "Kullanıcı arama …",
"Missing users? Only users that have vaults are shown." : "Kullanıcılar eksik mi? Yalnız kasası olan kullanıcılar görüntüleniyor.",
"Cyphering" : "Şifreleme",
"Uploading" : "Yükleniyor",
@@ -215,7 +214,7 @@ OC.L10N.register(
"Showing deleted since" : "Şu tarihten sonra silinenler görüntüleniyor",
"Beginning" : "Başlangıç",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "{{number_filtered}} / {{credential_number}} kimlik doğrulama bilgisi görüntüleniyor",
- "Search for credential…" : "Kimlik doğrulama bilgisi ara...",
+ "Search for credential…" : "Kimlik doğrulama bilgisi arama …",
"Account" : "Hesap",
"Password" : "Parola",
"OTP" : "OTP",
@@ -237,7 +236,7 @@ OC.L10N.register(
"Permissions" : "İzinler",
"Received from" : "Gönderen",
"Date" : "Tarih",
- "Accept" : "Onayla",
+ "Accept" : "Kabul et",
"Decline" : "Reddet",
"You have {{session_time}} left before logout." : "Oturumunuzun kapanmasına {{session_time}} var.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "{{tries}} başarısız oturum açma girişiminde bulunduğunuz için kasanız {{time}} süreyle kilitlendi!",
@@ -292,8 +291,8 @@ OC.L10N.register(
"Simple Navigation" : "Basit Gezinme",
"Someone has shared a credential with you." : "Sizinle bir kimlik doğrulama bilgisi paylaşıldı.",
"Click here to request it" : "İstekte bulunmak için buraya tıklayın",
- "Loading…" : "Yükleniyor...",
- "Awwhh… credential not found. Maybe it expired" : "Kimlik doğrulama bilgileri bulunamadı. Süresi geçmiş olabilir",
+ "Loading…" : "Yükleniyor …",
+ "Awwhh… credential not found. Maybe it expired" : "Hmm… kimlik doğrulama bilgileri bulunamadı. Süresi geçmiş olabilir",
"Compromise!" : "Tehlikeli!",
"Compromised!" : "Tehlikeye atılmış!",
"This password is compromised. You can only remove this warning by changing the password." : "Bu parolayı kullanmak tehlikeli. Bu uyarı yalnız parolayı değiştirerek kaldırabilirsiniz.",
@@ -325,12 +324,13 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s %2$s üzerinden paylaşıldı",
"You received a share request for %1$s from %2$s" : "%1$s için %2$s üzerinden bir paylaşım isteği aldınız",
"%s has been shared with a link" : "%s bağlantı ile paylaşıldı",
+ "Passwords" : "Parolalar",
"Your credential \"%s\" expired, click here to update the credential." : "\"%s\" kimlik doğrulama bilgilerinizin süresi geçmiş, güncellemek için buraya tıklayın.",
"Remind me later" : "Sonra hatırlat",
- "Ignore" : "Yoksay",
- "%s shared \"%s\" with you. Click here to accept" : "%s sizinle \"%s\" ögesini paylaştı. Onaylamak için buraya tıklayın",
+ "Ignore" : "Yok say",
+ "%s shared \"%s\" with you. Click here to accept" : "%s sizinle \"%s\" ögesini paylaştı. Kabul etmek için buraya tıklayın",
"%s has declined your share request for \"%s\"." : "%s, \"%s\" ögesini paylaşma isteğinizi reddetti.",
- "%s has accepted your share request for \"%s\"." : "%s, \"%s\" ögesini paylaşma isteğinizi onayladı.",
+ "%s has accepted your share request for \"%s\"." : "%s, \"%s\" ögesini paylaşma isteğinizi kabul etti.",
"Passman" : "Passman",
"Passman is a full featured password manager." : "Passman uygulaması tam özellikli bir parola yönetimi sağlar.",
"Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman tam özellikli bir parola yönetimi uygulamasıdır.\nÖzellikleri:\n- Kasalar\n- Kasa anahtarı asla sunucuya gönderilmez\n- Parolalara kolay erişim için web tarayıcı eklentisi\n- Yolda erişim için Android uygulaması\n- Kimlik doğrulama bilgileri istemci tarafında 256bit AES ile şifrelenir\n- Kimlik doğrulama bilgileri sunucu tarafında 256bit AES ile şifrelenir\n- Kimlik doğrulama bilgilerine özel alanlar ekleyebilme\n- İç OTP üreteci (Tek Kullanımlık Parola)\n- Parola inceleyici\n- İçeride ve bağlantı ile güvenli parola paylaşımı\n- Çeşitli parola yönetimi uygulamalarından içe veri aktarma (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nBu uygulamanın örneğini görmek için [https://demo.passman.cc](https://demo.passman.cc) adresine bakabilirsiniz.",
@@ -357,7 +357,7 @@ OC.L10N.register(
"Reason" : "Neden",
"Click here to request\n\t\t\t\t\tit" : "Buraya tıklayarak \n\t\t\t\t\tisteyin",
"Loading&hellip;" : "Yükleniyor&hellip;",
- "Awwhh… could not find the credential. Maybe it expired?" : "Kimlik doğrulama bilgileri bulunamadı. Süresi geçmiş olabilir",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Hmm … kimlik doğrulama bilgileri bulunamadı. Süresi geçmiş olabilir",
"Expires:" : "Sona Erme:",
"Connection to server lost" : "Sunucu bağlantısı kesildi",
"Problem loading page, reloading in 5 seconds" : "Sayfa yüklenirken sorun çıktı, 5 saniye içinde yeniden yüklenecek",
diff --git a/l10n/tr.json b/l10n/tr.json
index d76d8d08..d99d90d4 100644
--- a/l10n/tr.json
+++ b/l10n/tr.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "Parolalar",
"Generating sharing keys ( %s / 2)" : "Paylaşım anahtarları üretiliyor ( %s / 2)",
"Incorrect vault password!" : "Kasa parolası yanlış!",
"Passwords do not match" : "Parola ile onayı aynı değil",
@@ -77,7 +76,7 @@
"Use this icon" : "Bu simge kullanılsın",
"Delete current icon" : "Geçerli simgeyi sil",
"Get icon from page" : "Simge sayfadan alınsın",
- "This may take a few seconds…" : "Bu işlem bir kaç saniye sürebilir…",
+ "This may take a few seconds…" : "Bu işlem bir kaç saniye sürebilir …",
"There was an error fetching the icon!" : "Simge alınırken bir sorun çıktı!",
"Selected icon" : "Seçilmiş simge",
"Field label" : "Alan Etiketi",
@@ -137,7 +136,7 @@
"Vault password" : "Kasa parolası",
"This process is irreversible" : "Bu işlem geri alınamaz",
"Delete my precious passwords" : "Değerli parolalarımı sil",
- "Deleting {{password}}…" : "{{password}} siliniyor...",
+ "Deleting {{password}}…" : "{{password}} siliniyor …",
"Yes, delete my precious passwords" : "Evet, değerli parolalarımı sil",
"Import type" : "İçe aktarma türü",
"Import" : "İçe aktar",
@@ -156,7 +155,7 @@
"A total of {{scan_result}} weak credentials were found." : "Toplam {{scan_result}} zayıf parola bulundu.",
"Score" : "Değerlendirme",
"Action" : "İşlem",
- "Search users…" : "Kullanıcı arama…",
+ "Search users…" : "Kullanıcı arama …",
"Missing users? Only users that have vaults are shown." : "Kullanıcılar eksik mi? Yalnız kasası olan kullanıcılar görüntüleniyor.",
"Cyphering" : "Şifreleme",
"Uploading" : "Yükleniyor",
@@ -213,7 +212,7 @@
"Showing deleted since" : "Şu tarihten sonra silinenler görüntüleniyor",
"Beginning" : "Başlangıç",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "{{number_filtered}} / {{credential_number}} kimlik doğrulama bilgisi görüntüleniyor",
- "Search for credential…" : "Kimlik doğrulama bilgisi ara...",
+ "Search for credential…" : "Kimlik doğrulama bilgisi arama …",
"Account" : "Hesap",
"Password" : "Parola",
"OTP" : "OTP",
@@ -235,7 +234,7 @@
"Permissions" : "İzinler",
"Received from" : "Gönderen",
"Date" : "Tarih",
- "Accept" : "Onayla",
+ "Accept" : "Kabul et",
"Decline" : "Reddet",
"You have {{session_time}} left before logout." : "Oturumunuzun kapanmasına {{session_time}} var.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "{{tries}} başarısız oturum açma girişiminde bulunduğunuz için kasanız {{time}} süreyle kilitlendi!",
@@ -290,8 +289,8 @@
"Simple Navigation" : "Basit Gezinme",
"Someone has shared a credential with you." : "Sizinle bir kimlik doğrulama bilgisi paylaşıldı.",
"Click here to request it" : "İstekte bulunmak için buraya tıklayın",
- "Loading…" : "Yükleniyor...",
- "Awwhh… credential not found. Maybe it expired" : "Kimlik doğrulama bilgileri bulunamadı. Süresi geçmiş olabilir",
+ "Loading…" : "Yükleniyor …",
+ "Awwhh… credential not found. Maybe it expired" : "Hmm… kimlik doğrulama bilgileri bulunamadı. Süresi geçmiş olabilir",
"Compromise!" : "Tehlikeli!",
"Compromised!" : "Tehlikeye atılmış!",
"This password is compromised. You can only remove this warning by changing the password." : "Bu parolayı kullanmak tehlikeli. Bu uyarı yalnız parolayı değiştirerek kaldırabilirsiniz.",
@@ -323,12 +322,13 @@
"%1$s has been shared with %2$s" : "%1$s %2$s üzerinden paylaşıldı",
"You received a share request for %1$s from %2$s" : "%1$s için %2$s üzerinden bir paylaşım isteği aldınız",
"%s has been shared with a link" : "%s bağlantı ile paylaşıldı",
+ "Passwords" : "Parolalar",
"Your credential \"%s\" expired, click here to update the credential." : "\"%s\" kimlik doğrulama bilgilerinizin süresi geçmiş, güncellemek için buraya tıklayın.",
"Remind me later" : "Sonra hatırlat",
- "Ignore" : "Yoksay",
- "%s shared \"%s\" with you. Click here to accept" : "%s sizinle \"%s\" ögesini paylaştı. Onaylamak için buraya tıklayın",
+ "Ignore" : "Yok say",
+ "%s shared \"%s\" with you. Click here to accept" : "%s sizinle \"%s\" ögesini paylaştı. Kabul etmek için buraya tıklayın",
"%s has declined your share request for \"%s\"." : "%s, \"%s\" ögesini paylaşma isteğinizi reddetti.",
- "%s has accepted your share request for \"%s\"." : "%s, \"%s\" ögesini paylaşma isteğinizi onayladı.",
+ "%s has accepted your share request for \"%s\"." : "%s, \"%s\" ögesini paylaşma isteğinizi kabul etti.",
"Passman" : "Passman",
"Passman is a full featured password manager." : "Passman uygulaması tam özellikli bir parola yönetimi sağlar.",
"Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman tam özellikli bir parola yönetimi uygulamasıdır.\nÖzellikleri:\n- Kasalar\n- Kasa anahtarı asla sunucuya gönderilmez\n- Parolalara kolay erişim için web tarayıcı eklentisi\n- Yolda erişim için Android uygulaması\n- Kimlik doğrulama bilgileri istemci tarafında 256bit AES ile şifrelenir\n- Kimlik doğrulama bilgileri sunucu tarafında 256bit AES ile şifrelenir\n- Kimlik doğrulama bilgilerine özel alanlar ekleyebilme\n- İç OTP üreteci (Tek Kullanımlık Parola)\n- Parola inceleyici\n- İçeride ve bağlantı ile güvenli parola paylaşımı\n- Çeşitli parola yönetimi uygulamalarından içe veri aktarma (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nBu uygulamanın örneğini görmek için [https://demo.passman.cc](https://demo.passman.cc) adresine bakabilirsiniz.",
@@ -355,7 +355,7 @@
"Reason" : "Neden",
"Click here to request\n\t\t\t\t\tit" : "Buraya tıklayarak \n\t\t\t\t\tisteyin",
"Loading&hellip;" : "Yükleniyor&hellip;",
- "Awwhh… could not find the credential. Maybe it expired?" : "Kimlik doğrulama bilgileri bulunamadı. Süresi geçmiş olabilir",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Hmm … kimlik doğrulama bilgileri bulunamadı. Süresi geçmiş olabilir",
"Expires:" : "Sona Erme:",
"Connection to server lost" : "Sunucu bağlantısı kesildi",
"Problem loading page, reloading in 5 seconds" : "Sayfa yüklenirken sorun çıktı, 5 saniye içinde yeniden yüklenecek",
diff --git a/l10n/ug.js b/l10n/ug.js
new file mode 100644
index 00000000..51b30e90
--- /dev/null
+++ b/l10n/ug.js
@@ -0,0 +1,37 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "ئادەتتىكى",
+ "Done" : "Done",
+ "Sharing" : "ھەمبەھىر",
+ "Share link" : "Share link",
+ "Username" : "ئىشلەتكۈچى ئاتى",
+ "File" : "File",
+ "Add" : "قوش",
+ "Type" : "Type",
+ "Actions" : "مەشغۇلاتلار",
+ "Size" : "چوڭلۇقى",
+ "Export" : "چىقار",
+ "Version" : "نەشرى",
+ "Import" : "ئەكىر",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "ھۆججەتلەر",
+ "Pending" : "كۈتۈۋاتىدۇ",
+ "by" : "سەنئەتكار",
+ "Save" : "ساقلا",
+ "Cancel" : "ۋاز كەچ",
+ "Settings" : "تەڭشەكلەر",
+ "Unshare" : "ھەمبەھىرلىمە",
+ "Password" : "ئىم",
+ "URL" : "URL",
+ "Notes" : "ئىزاھاتلار",
+ "Edit" : "تەھرىر",
+ "Delete" : "ئۆچۈر",
+ "Share" : "ھەمبەھىر",
+ "Date" : "Date",
+ "Tags" : "بەلگەلەر",
+ "Description" : "چۈشەندۈرۈش",
+ "Saving..." : "ساقلاۋاتىدۇ…"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/ug.json b/l10n/ug.json
new file mode 100644
index 00000000..bc857efe
--- /dev/null
+++ b/l10n/ug.json
@@ -0,0 +1,35 @@
+{ "translations": {
+ "General" : "ئادەتتىكى",
+ "Done" : "Done",
+ "Sharing" : "ھەمبەھىر",
+ "Share link" : "Share link",
+ "Username" : "ئىشلەتكۈچى ئاتى",
+ "File" : "File",
+ "Add" : "قوش",
+ "Type" : "Type",
+ "Actions" : "مەشغۇلاتلار",
+ "Size" : "چوڭلۇقى",
+ "Export" : "چىقار",
+ "Version" : "نەشرى",
+ "Import" : "ئەكىر",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "ھۆججەتلەر",
+ "Pending" : "كۈتۈۋاتىدۇ",
+ "by" : "سەنئەتكار",
+ "Save" : "ساقلا",
+ "Cancel" : "ۋاز كەچ",
+ "Settings" : "تەڭشەكلەر",
+ "Unshare" : "ھەمبەھىرلىمە",
+ "Password" : "ئىم",
+ "URL" : "URL",
+ "Notes" : "ئىزاھاتلار",
+ "Edit" : "تەھرىر",
+ "Delete" : "ئۆچۈر",
+ "Share" : "ھەمبەھىر",
+ "Date" : "Date",
+ "Tags" : "بەلگەلەر",
+ "Description" : "چۈشەندۈرۈش",
+ "Saving..." : "ساقلاۋاتىدۇ…"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/uk.js b/l10n/uk.js
new file mode 100644
index 00000000..32cf5031
--- /dev/null
+++ b/l10n/uk.js
@@ -0,0 +1,86 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Generating sharing keys ( %s / 2)" : "Генерування ключів спільного доступу ( %s / 2)",
+ "Incorrect vault password!" : "Невірний пароль для сховища!",
+ "Passwords do not match" : "Паролі не збігаються",
+ "General" : "Загальна",
+ "Custom Fields" : "Користувацькі поля",
+ "Please fill in a label." : "Будь ласка, введіть мітку.",
+ "Please fill in a value." : "Будь ласка, введіть значення.",
+ "Error loading file" : "Помилка завантаження файлу",
+ "An error occurred during decryption" : "Під час розшифрування сталася помилка",
+ "Credential created!" : "Магістрант створено!",
+ "Invalid QR code" : "Недійсний QR-код",
+ "Starting export" : "Початок експорту",
+ "Done" : "Готово",
+ "Settings saved" : "Налаштування збережено",
+ "General settings" : "Загальні налаштування",
+ "Sharing" : "Поділитись",
+ "Share with users and groups" : "Поділитися з користувачами та групами",
+ "Share link" : "Поширити посилання",
+ "Saved!" : "Збережено!",
+ "Good" : "Добре",
+ "Username" : "Логін",
+ "Add tag" : "Додати позначку",
+ "Text" : "Текст",
+ "File" : "Файл",
+ "Add" : "Додати",
+ "Type" : "Тип",
+ "Actions" : "Дії",
+ "Empty" : "Порожньо",
+ "Filename" : "Ім'я файлу",
+ "Size" : "Розмір",
+ "Secret" : "Секретне",
+ "Expiration date" : "Термін дії",
+ "No expiration date set" : "Не встановлено терміну дії",
+ "Disabled" : "Вимкнено",
+ "Export" : "Експорт",
+ "Change" : "Змінити",
+ "Version" : "Версія",
+ "Vault password" : "Пароль для сховища",
+ "Import" : "Імпорт",
+ "Public key" : "Відкритий ключ",
+ "Uploading" : "Uploading",
+ "User" : "Користувач",
+ "Read" : "Читати",
+ "Write" : "Запис",
+ "Files" : "Файли",
+ "Pending" : "Очікування",
+ "Details" : "Деталі",
+ "Hide details" : "Приховати деталі",
+ "Pattern" : "Шаблон",
+ "by" : "від",
+ "Label" : "Мітка",
+ "Save" : "Зберегти",
+ "Cancel" : "Скасувати",
+ "Settings" : "Налаштування",
+ "Unshare" : "Закрити доступ",
+ "Account" : "Обліковий запис",
+ "Password" : "Пароль",
+ "E-mail" : "Електронна пошта",
+ "URL" : "URL-адреса",
+ "Notes" : "Нотатки",
+ "Created" : "Створено",
+ "Edit" : "Редашувати",
+ "Delete" : "Вилучити",
+ "Share" : "Поділитися",
+ "Date" : "Date",
+ "Accept" : "Прийняти",
+ "Decline" : "Відхилити",
+ "Never" : "Ніколи",
+ "Tags" : "Позначки",
+ "Loading…" : "Завантаження…",
+ "email" : "електронна пошта",
+ "Description" : "Опис",
+ "You created %1$s" : "Вами створено %1$s",
+ "You deleted %1$s" : "Ви вилучили %1$s",
+ "Passwords" : "Паролі",
+ "Expires:" : "Термін дії до:",
+ "Connection to server lost" : "З'єднання з сервером втрачено",
+ "Problem loading page, reloading in 5 seconds" : "Проблема під час завантаження сторінки, повторне завантаження за 5 сек.",
+ "Saving..." : "Збереження...",
+ "Dismiss" : "Припинити",
+ "seconds ago" : "секунд назад"
+},
+"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);");
diff --git a/l10n/uk.json b/l10n/uk.json
new file mode 100644
index 00000000..872b3104
--- /dev/null
+++ b/l10n/uk.json
@@ -0,0 +1,84 @@
+{ "translations": {
+ "Generating sharing keys ( %s / 2)" : "Генерування ключів спільного доступу ( %s / 2)",
+ "Incorrect vault password!" : "Невірний пароль для сховища!",
+ "Passwords do not match" : "Паролі не збігаються",
+ "General" : "Загальна",
+ "Custom Fields" : "Користувацькі поля",
+ "Please fill in a label." : "Будь ласка, введіть мітку.",
+ "Please fill in a value." : "Будь ласка, введіть значення.",
+ "Error loading file" : "Помилка завантаження файлу",
+ "An error occurred during decryption" : "Під час розшифрування сталася помилка",
+ "Credential created!" : "Магістрант створено!",
+ "Invalid QR code" : "Недійсний QR-код",
+ "Starting export" : "Початок експорту",
+ "Done" : "Готово",
+ "Settings saved" : "Налаштування збережено",
+ "General settings" : "Загальні налаштування",
+ "Sharing" : "Поділитись",
+ "Share with users and groups" : "Поділитися з користувачами та групами",
+ "Share link" : "Поширити посилання",
+ "Saved!" : "Збережено!",
+ "Good" : "Добре",
+ "Username" : "Логін",
+ "Add tag" : "Додати позначку",
+ "Text" : "Текст",
+ "File" : "Файл",
+ "Add" : "Додати",
+ "Type" : "Тип",
+ "Actions" : "Дії",
+ "Empty" : "Порожньо",
+ "Filename" : "Ім'я файлу",
+ "Size" : "Розмір",
+ "Secret" : "Секретне",
+ "Expiration date" : "Термін дії",
+ "No expiration date set" : "Не встановлено терміну дії",
+ "Disabled" : "Вимкнено",
+ "Export" : "Експорт",
+ "Change" : "Змінити",
+ "Version" : "Версія",
+ "Vault password" : "Пароль для сховища",
+ "Import" : "Імпорт",
+ "Public key" : "Відкритий ключ",
+ "Uploading" : "Uploading",
+ "User" : "Користувач",
+ "Read" : "Читати",
+ "Write" : "Запис",
+ "Files" : "Файли",
+ "Pending" : "Очікування",
+ "Details" : "Деталі",
+ "Hide details" : "Приховати деталі",
+ "Pattern" : "Шаблон",
+ "by" : "від",
+ "Label" : "Мітка",
+ "Save" : "Зберегти",
+ "Cancel" : "Скасувати",
+ "Settings" : "Налаштування",
+ "Unshare" : "Закрити доступ",
+ "Account" : "Обліковий запис",
+ "Password" : "Пароль",
+ "E-mail" : "Електронна пошта",
+ "URL" : "URL-адреса",
+ "Notes" : "Нотатки",
+ "Created" : "Створено",
+ "Edit" : "Редашувати",
+ "Delete" : "Вилучити",
+ "Share" : "Поділитися",
+ "Date" : "Date",
+ "Accept" : "Прийняти",
+ "Decline" : "Відхилити",
+ "Never" : "Ніколи",
+ "Tags" : "Позначки",
+ "Loading…" : "Завантаження…",
+ "email" : "електронна пошта",
+ "Description" : "Опис",
+ "You created %1$s" : "Вами створено %1$s",
+ "You deleted %1$s" : "Ви вилучили %1$s",
+ "Passwords" : "Паролі",
+ "Expires:" : "Термін дії до:",
+ "Connection to server lost" : "З'єднання з сервером втрачено",
+ "Problem loading page, reloading in 5 seconds" : "Проблема під час завантаження сторінки, повторне завантаження за 5 сек.",
+ "Saving..." : "Збереження...",
+ "Dismiss" : "Припинити",
+ "seconds ago" : "секунд назад"
+},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
+} \ No newline at end of file
diff --git a/l10n/ur_PK.js b/l10n/ur_PK.js
new file mode 100644
index 00000000..21b17212
--- /dev/null
+++ b/l10n/ur_PK.js
@@ -0,0 +1,28 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Done" : "Done",
+ "Share link" : "اشتراک لنک",
+ "Username" : "یوزر نیم",
+ "File" : "File",
+ "Add" : "شامل کریں",
+ "Type" : "Type",
+ "Expiration date" : "تاریخ معیاد",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Save" : "حفظ",
+ "Cancel" : "منسوخ کریں",
+ "Settings" : "سیٹینگز",
+ "Unshare" : "شئیرنگ ختم کریں",
+ "Password" : "پاسورڈ",
+ "URL" : "یو ار ایل",
+ "Notes" : "Notes",
+ "Edit" : "تدوین کریں",
+ "Delete" : "حذف کریں",
+ "Share" : "تقسیم",
+ "Date" : "Date",
+ "Description" : "تصریح",
+ "Saving..." : "محفوظ ھو رہا ہے ...",
+ "seconds ago" : "سیکنڈز پہلے"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/ur_PK.json b/l10n/ur_PK.json
new file mode 100644
index 00000000..ee310b99
--- /dev/null
+++ b/l10n/ur_PK.json
@@ -0,0 +1,26 @@
+{ "translations": {
+ "Done" : "Done",
+ "Share link" : "اشتراک لنک",
+ "Username" : "یوزر نیم",
+ "File" : "File",
+ "Add" : "شامل کریں",
+ "Type" : "Type",
+ "Expiration date" : "تاریخ معیاد",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Save" : "حفظ",
+ "Cancel" : "منسوخ کریں",
+ "Settings" : "سیٹینگز",
+ "Unshare" : "شئیرنگ ختم کریں",
+ "Password" : "پاسورڈ",
+ "URL" : "یو ار ایل",
+ "Notes" : "Notes",
+ "Edit" : "تدوین کریں",
+ "Delete" : "حذف کریں",
+ "Share" : "تقسیم",
+ "Date" : "Date",
+ "Description" : "تصریح",
+ "Saving..." : "محفوظ ھو رہا ہے ...",
+ "seconds ago" : "سیکنڈز پہلے"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/uz.js b/l10n/uz.js
new file mode 100644
index 00000000..425b99bb
--- /dev/null
+++ b/l10n/uz.js
@@ -0,0 +1,32 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "Umumiy",
+ "Error loading file" : "Faylni yuklashda xato",
+ "Done" : "Bajarildi",
+ "Share link" : "Ulanishni ulashing",
+ "Saved!" : "Saqlangan!",
+ "Username" : "Foydalanuvchi nomi",
+ "File" : "Fayl",
+ "Add" : "Qo'shish",
+ "Search users…" : "Foydalanuvchilarni qidirish...",
+ "Uploading" : "Yuklash",
+ "Files" : "Fayllar",
+ "Pending" : "Kutilmoqda",
+ "Save" : "Saqlash",
+ "Cancel" : "Bekor qilish",
+ "Settings" : "Sozlamalar",
+ "Unshare" : "Ajablanmaslik",
+ "Password" : "Parol",
+ "Notes" : "Eslatmalar",
+ "Delete" : "O'chir",
+ "Tags" : "Teglar",
+ "Loading…" : "Yuklanmoqda…",
+ "email" : "elektron pochta",
+ "Passwords" : "Parollar",
+ "Connection to server lost" : "Serverga ulanish yo'qoldi",
+ "Saving..." : "Saqlanmoqda...",
+ "Dismiss" : "Tashlab qo'ymang",
+ "seconds ago" : "soniya oldin"
+},
+"nplurals=1; plural=0;");
diff --git a/l10n/uz.json b/l10n/uz.json
new file mode 100644
index 00000000..dcfb1ec0
--- /dev/null
+++ b/l10n/uz.json
@@ -0,0 +1,30 @@
+{ "translations": {
+ "General" : "Umumiy",
+ "Error loading file" : "Faylni yuklashda xato",
+ "Done" : "Bajarildi",
+ "Share link" : "Ulanishni ulashing",
+ "Saved!" : "Saqlangan!",
+ "Username" : "Foydalanuvchi nomi",
+ "File" : "Fayl",
+ "Add" : "Qo'shish",
+ "Search users…" : "Foydalanuvchilarni qidirish...",
+ "Uploading" : "Yuklash",
+ "Files" : "Fayllar",
+ "Pending" : "Kutilmoqda",
+ "Save" : "Saqlash",
+ "Cancel" : "Bekor qilish",
+ "Settings" : "Sozlamalar",
+ "Unshare" : "Ajablanmaslik",
+ "Password" : "Parol",
+ "Notes" : "Eslatmalar",
+ "Delete" : "O'chir",
+ "Tags" : "Teglar",
+ "Loading…" : "Yuklanmoqda…",
+ "email" : "elektron pochta",
+ "Passwords" : "Parollar",
+ "Connection to server lost" : "Serverga ulanish yo'qoldi",
+ "Saving..." : "Saqlanmoqda...",
+ "Dismiss" : "Tashlab qo'ymang",
+ "seconds ago" : "soniya oldin"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/l10n/vi.js b/l10n/vi.js
new file mode 100644
index 00000000..9d520c95
--- /dev/null
+++ b/l10n/vi.js
@@ -0,0 +1,80 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Generating sharing keys ( %s / 2)" : "Đang tạo các khóa chia sẽ ( %s / 2)",
+ "Incorrect vault password!" : "Mật khẩu hòm khóa không đúng!",
+ "Passwords do not match" : "Mật khẩu không khớp",
+ "General" : "Tổng hợp",
+ "Please fill in a label." : "Vui lòng điền vào một nhãn",
+ "Please fill in a value." : "Vui lòng điền vào một giá trị.",
+ "Error loading file" : "Có lỗi khi đang tải tệp",
+ "An error occurred during decryption" : "Một lỗi đã xảy ra trong quá trình giải mã",
+ "Credential created!" : "Mã ủy nhiệm được tạo!",
+ "Credential deleted" : "Mã ủy nhiệm đã xóa",
+ "Credential updated" : "Mã ủy nhiệm đã cập nhập",
+ "Credential recovered" : "Mã ủy nhiệm đã được khôi phục",
+ "Error downloading file, you probably have insufficient permissions" : "Có lỗi khi tải tệp, bạn rất có thể không đủ quyền hạn",
+ "Invalid QR code" : "Mã QR không khả dụng",
+ "Starting export" : "Bắt đầu xuất ",
+ "Decrypting credentials" : "Giải mã các mã ủy nhiệm",
+ "Done" : "Hoàn thành",
+ "File read." : "Tệp đã được đọc",
+ "Proceed with the following steps to import your file" : "Tiến hành các bước sau nhập tệp của bạn",
+ "Skipping unlabeled credential" : "Bỏ qua các mã ủy nhiệm không nhãn",
+ "Adding {{credential}}" : "Đang thêm {{credential}}",
+ "Added {{credential}}" : "{{credential}} đã được thêm vào",
+ "Settings saved" : "Cấu hình đã được lưu",
+ "Sharing" : "Đang chia sẽ",
+ "Share with users and groups" : "Chia sẽ với người dùng hoặc nhóm",
+ "Share link" : "Chia sẽ liên kết",
+ "Good" : "Tốt",
+ "Username" : "Tài khoản",
+ "File" : "Tập tin",
+ "Add" : "Thêm",
+ "Type" : "Loại",
+ "Actions" : "Hành động",
+ "Filename" : "Tên tập tin",
+ "Size" : "Kích cỡ",
+ "Secret" : "Mật khẩu",
+ "Expiration date" : "Ngày kết thúc",
+ "Disabled" : "Tắt",
+ "Export" : "Xuất ra",
+ "Change" : "Chỉnh sửa",
+ "Version" : "Phiên bản",
+ "Import" : "Nhập vào",
+ "Uploading" : "Uploading",
+ "User" : "Người dùng",
+ "Read" : "Đọc",
+ "Files" : "Tệp tin",
+ "Pending" : "Đang dừng",
+ "Details" : "Thông tin",
+ "by" : "bởi",
+ "Save" : "Lưu",
+ "Cancel" : "Hủy bỏ",
+ "Settings" : "Thiết lập",
+ "Unshare" : "Bỏ chia sẽ",
+ "Account" : "Tài khoản",
+ "Password" : "Mật khẩu",
+ "E-mail" : "Email",
+ "URL" : "URL",
+ "Notes" : "Ghi chép",
+ "Created" : "Đã tạo",
+ "Edit" : "Chỉnh sửa",
+ "Delete" : "Xóa",
+ "Share" : "Chia sẻ",
+ "Date" : "Date",
+ "Accept" : "Đồng ý",
+ "Never" : "Không bao giờ",
+ "Tags" : "Thẻ",
+ "Loading…" : "Đang tải…",
+ "email" : "Thư điện tử",
+ "Description" : "Mô tả",
+ "You created %1$s" : "Bạn đã tạo %1$s",
+ "You deleted %1$s" : "Bạn đã xóa %1$s",
+ "Connection to server lost" : "Kết nối tới máy chủ bị mất",
+ "Problem loading page, reloading in 5 seconds" : "Có vấn đề khi nạp trang, nạp lại trang trong vòng 5 giây",
+ "Saving..." : "Đang lưu...",
+ "Dismiss" : "Bỏ qua",
+ "seconds ago" : "vài giây trước"
+},
+"nplurals=1; plural=0;");
diff --git a/l10n/vi.json b/l10n/vi.json
new file mode 100644
index 00000000..92ed1829
--- /dev/null
+++ b/l10n/vi.json
@@ -0,0 +1,78 @@
+{ "translations": {
+ "Generating sharing keys ( %s / 2)" : "Đang tạo các khóa chia sẽ ( %s / 2)",
+ "Incorrect vault password!" : "Mật khẩu hòm khóa không đúng!",
+ "Passwords do not match" : "Mật khẩu không khớp",
+ "General" : "Tổng hợp",
+ "Please fill in a label." : "Vui lòng điền vào một nhãn",
+ "Please fill in a value." : "Vui lòng điền vào một giá trị.",
+ "Error loading file" : "Có lỗi khi đang tải tệp",
+ "An error occurred during decryption" : "Một lỗi đã xảy ra trong quá trình giải mã",
+ "Credential created!" : "Mã ủy nhiệm được tạo!",
+ "Credential deleted" : "Mã ủy nhiệm đã xóa",
+ "Credential updated" : "Mã ủy nhiệm đã cập nhập",
+ "Credential recovered" : "Mã ủy nhiệm đã được khôi phục",
+ "Error downloading file, you probably have insufficient permissions" : "Có lỗi khi tải tệp, bạn rất có thể không đủ quyền hạn",
+ "Invalid QR code" : "Mã QR không khả dụng",
+ "Starting export" : "Bắt đầu xuất ",
+ "Decrypting credentials" : "Giải mã các mã ủy nhiệm",
+ "Done" : "Hoàn thành",
+ "File read." : "Tệp đã được đọc",
+ "Proceed with the following steps to import your file" : "Tiến hành các bước sau nhập tệp của bạn",
+ "Skipping unlabeled credential" : "Bỏ qua các mã ủy nhiệm không nhãn",
+ "Adding {{credential}}" : "Đang thêm {{credential}}",
+ "Added {{credential}}" : "{{credential}} đã được thêm vào",
+ "Settings saved" : "Cấu hình đã được lưu",
+ "Sharing" : "Đang chia sẽ",
+ "Share with users and groups" : "Chia sẽ với người dùng hoặc nhóm",
+ "Share link" : "Chia sẽ liên kết",
+ "Good" : "Tốt",
+ "Username" : "Tài khoản",
+ "File" : "Tập tin",
+ "Add" : "Thêm",
+ "Type" : "Loại",
+ "Actions" : "Hành động",
+ "Filename" : "Tên tập tin",
+ "Size" : "Kích cỡ",
+ "Secret" : "Mật khẩu",
+ "Expiration date" : "Ngày kết thúc",
+ "Disabled" : "Tắt",
+ "Export" : "Xuất ra",
+ "Change" : "Chỉnh sửa",
+ "Version" : "Phiên bản",
+ "Import" : "Nhập vào",
+ "Uploading" : "Uploading",
+ "User" : "Người dùng",
+ "Read" : "Đọc",
+ "Files" : "Tệp tin",
+ "Pending" : "Đang dừng",
+ "Details" : "Thông tin",
+ "by" : "bởi",
+ "Save" : "Lưu",
+ "Cancel" : "Hủy bỏ",
+ "Settings" : "Thiết lập",
+ "Unshare" : "Bỏ chia sẽ",
+ "Account" : "Tài khoản",
+ "Password" : "Mật khẩu",
+ "E-mail" : "Email",
+ "URL" : "URL",
+ "Notes" : "Ghi chép",
+ "Created" : "Đã tạo",
+ "Edit" : "Chỉnh sửa",
+ "Delete" : "Xóa",
+ "Share" : "Chia sẻ",
+ "Date" : "Date",
+ "Accept" : "Đồng ý",
+ "Never" : "Không bao giờ",
+ "Tags" : "Thẻ",
+ "Loading…" : "Đang tải…",
+ "email" : "Thư điện tử",
+ "Description" : "Mô tả",
+ "You created %1$s" : "Bạn đã tạo %1$s",
+ "You deleted %1$s" : "Bạn đã xóa %1$s",
+ "Connection to server lost" : "Kết nối tới máy chủ bị mất",
+ "Problem loading page, reloading in 5 seconds" : "Có vấn đề khi nạp trang, nạp lại trang trong vòng 5 giây",
+ "Saving..." : "Đang lưu...",
+ "Dismiss" : "Bỏ qua",
+ "seconds ago" : "vài giây trước"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/l10n/zh_CN.js b/l10n/zh_CN.js
index e34de9e9..c5c026f9 100644
--- a/l10n/zh_CN.js
+++ b/l10n/zh_CN.js
@@ -1,7 +1,6 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "密码",
"Generating sharing keys ( %s / 2)" : "生成共享秘钥(%s / 2)",
"Incorrect vault password!" : "错误的保险箱密码!",
"Passwords do not match" : "密码不匹配",
@@ -12,7 +11,7 @@ OC.L10N.register(
"Error loading file" : "加载文件错误 ",
"An error occurred during decryption" : "解密时发生错误",
"Credential created!" : "创建凭证",
- "Credential deleted" : "凭证删除",
+ "Credential deleted" : "凭据已删除",
"Credential updated" : "凭证更新",
"Credential recovered" : "凭证回收",
"Credential destroyed" : "凭证销毁",
@@ -67,7 +66,7 @@ OC.L10N.register(
"Copy to clipboard" : "复制到剪贴板",
"Copied to clipboard!" : "复制到剪贴板!",
"Generate password" : "生成的密码",
- "Copy password to clipboard" : "复制密码到剪贴板",
+ "Copy password to clipboard" : "将密码复制到剪贴板",
"Password copied to clipboard!" : "密码复制到剪贴板! ",
"Complete" : "完成",
"Username" : "用户名",
@@ -189,7 +188,7 @@ OC.L10N.register(
"Offline attack, fast hash, many cores" : "离线攻击,快速哈希,多核心",
"Match sequence" : "匹配序列",
"See match sequence" : "查看匹配序列",
- "Pattern" : "模式",
+ "Pattern" : "图案",
"Matched word" : "匹配的词",
"Dictionary name" : "字典名",
"Rank" : "评级",
@@ -216,7 +215,7 @@ OC.L10N.register(
"Beginning" : "开始",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "显示{{credential_number}}凭据的{{number_filtered}}",
"Search for credential…" : "搜索凭证...",
- "Account" : "账户",
+ "Account" : "账号",
"Password" : "密码",
"OTP" : "OTP",
"E-mail" : "电子邮件",
@@ -233,13 +232,13 @@ OC.L10N.register(
"Use regex" : "使用正则表达式",
"You have incoming share requests." : "您接收到共享请求。",
"If you want to put the credential in another vault," : "如果您想将证书放在另一个保险箱中,",
- "log out of this vault and log into the vault you want the shared credential in." : "退出此保险箱并登录到您要共享证书的保险箱。",
+ "log out of this vault and log into the vault you want the shared credential in." : "登出此保险箱并登录到您要共享证书的保险箱。",
"Permissions" : "权限",
"Received from" : "接受自",
"Date" : "日期",
"Accept" : "接受",
"Decline" : "拒绝",
- "You have {{session_time}} left before logout." : "您在注销前还剩 {{session_time}} 。",
+ "You have {{session_time}} left before logout." : "登出前还剩 {{session_time}} 。",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "由于{{试图}}尝试已失败,您的保险箱已锁定{{time}}",
"Hello there!" : "嘿,您好!",
"It does not seem that you have any passwords. Do you want to add one?" : "您似乎没有任何密码。需要添加一个吗?",
@@ -262,7 +261,7 @@ OC.L10N.register(
"Please input the password for" : "请输入密码为",
"Set this vault as the default." : "将此保险箱设置为默认值。",
"Log into this vault automatically." : "自动登入保险箱",
- "Log out of this vault automatically after: " : "之后自动退出此保险箱:",
+ "Log out of this vault automatically after: " : "在以下情况下自动登出此保险库:",
"Decrypt vault" : "加密保险箱",
"Seems you lost the vault password and you're unable to log in." : "似乎丢失了保险箱密码,您无法登录。",
"If you want this vault to be removed you can request that here." : "如果您想删除这个保险箱,您可以在这里请求。",
@@ -279,7 +278,7 @@ OC.L10N.register(
"Logged into {{vault_name}}" : "计入日志到 {{vault_name}} ",
"Change vault" : "更改保险箱",
"Deleted credentials" : "删除的凭证",
- "Logout" : "注销",
+ "Logout" : "登出",
"Donate" : "捐助",
"Show All" : "显示所有",
"Tags" : "标签",
@@ -292,7 +291,7 @@ OC.L10N.register(
"Simple Navigation" : "简单导航",
"Someone has shared a credential with you." : "有人向您共享了一个证书。",
"Click here to request it" : "点击这里请求",
- "Loading…" : "加载中...",
+ "Loading…" : "正在加载…",
"Awwhh… credential not found. Maybe it expired" : "哎呀... 没有找到证书。也许它过期了",
"Compromise!" : "密码泄露!",
"Compromised!" : "已被泄露!",
@@ -316,15 +315,16 @@ OC.L10N.register(
"%3$s has renamed %1$s to %2$s" : "%3$s 已重命名 %1$s 为 %2$s",
"You renamed %1$s to %2$s" : "已重命名 %1$s 为 %2$s",
"%1$s has been deleted by %2$s" : "%1$s 已被 %2$s 删除",
- "You deleted %1$s" : "已删除 %1$s",
- "%1$s has been recovered by %2$s" : "%1$s 已被%2$s 恢复",
- "You recovered %1$s" : "已恢复 %1$s",
+ "You deleted %1$s" : "你删除了 %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s 已被%2$s 还原",
+ "You recovered %1$s" : "你还原了 %1$s",
"%1$s has been permanently deleted by %2$s" : "%1$s 已被 %2$s 永久删除",
"You permanently deleted %1$s" : "您将永久删除 %1$s",
"The password of %1$s has expired, renew it now." : "密码 %1$s 已过期,请续订。",
"%1$s has been shared with %2$s" : "%1$s 已经共享被 %2$s",
"You received a share request for %1$s from %2$s" : "您收到 %2$s 的共享 %1$s 请求 ",
"%s has been shared with a link" : "%s 已被共享通过链接",
+ "Passwords" : "密码",
"Your credential \"%s\" expired, click here to update the credential." : "您的凭据%s已过期,请点击此处更新凭证。",
"Remind me later" : "以后提醒我 ",
"Ignore" : "忽略",
@@ -347,21 +347,21 @@ OC.L10N.register(
"Disable JavaScript debugger" : "禁用 JavaScript 调试器",
"Allow users on this server to share passwords with a link" : "允许此服务器上的用户通过链接共享密码 ",
"Allow users on this server to share passwords with other users" : "允许此服务器上的用户与其他用户共享密码 ",
- "Move credentials from one account to another" : "将凭据从一个帐户移动到另一个",
- "Source account" : "资源账户",
- "Destination account" : "终点账户",
+ "Move credentials from one account to another" : "将凭据从一个账号移动到另一个",
+ "Source account" : "来源账号",
+ "Destination account" : "目标账号",
"Credentials moved!" : "证书已移动了!",
"Requests to destroy vault" : "要求销毁保险箱",
"Request ID" : "请求 ID",
"Requested by" : "被要求",
"Reason" : "原因",
"Click here to request\n\t\t\t\t\tit" : "点击这里请求\n\t\t\t\t\t它",
- "Loading&hellip;" : "加载中&hellip;",
+ "Loading&hellip;" : "正在加载...",
"Awwhh… could not find the credential. Maybe it expired?" : "哎呀... 没有找到证书。也许它过期了?",
"Expires:" : "过期:",
"Connection to server lost" : "与服务器的连接断开",
"Problem loading page, reloading in 5 seconds" : "加载页面出现问题,在 5 秒内重新加载",
- "Saving..." : "保存中...",
+ "Saving..." : "正在保存…",
"Dismiss" : "忽略",
"seconds ago" : "几秒前"
},
diff --git a/l10n/zh_CN.json b/l10n/zh_CN.json
index cd816a12..c252909f 100644
--- a/l10n/zh_CN.json
+++ b/l10n/zh_CN.json
@@ -1,5 +1,4 @@
{ "translations": {
- "Passwords" : "密码",
"Generating sharing keys ( %s / 2)" : "生成共享秘钥(%s / 2)",
"Incorrect vault password!" : "错误的保险箱密码!",
"Passwords do not match" : "密码不匹配",
@@ -10,7 +9,7 @@
"Error loading file" : "加载文件错误 ",
"An error occurred during decryption" : "解密时发生错误",
"Credential created!" : "创建凭证",
- "Credential deleted" : "凭证删除",
+ "Credential deleted" : "凭据已删除",
"Credential updated" : "凭证更新",
"Credential recovered" : "凭证回收",
"Credential destroyed" : "凭证销毁",
@@ -65,7 +64,7 @@
"Copy to clipboard" : "复制到剪贴板",
"Copied to clipboard!" : "复制到剪贴板!",
"Generate password" : "生成的密码",
- "Copy password to clipboard" : "复制密码到剪贴板",
+ "Copy password to clipboard" : "将密码复制到剪贴板",
"Password copied to clipboard!" : "密码复制到剪贴板! ",
"Complete" : "完成",
"Username" : "用户名",
@@ -187,7 +186,7 @@
"Offline attack, fast hash, many cores" : "离线攻击,快速哈希,多核心",
"Match sequence" : "匹配序列",
"See match sequence" : "查看匹配序列",
- "Pattern" : "模式",
+ "Pattern" : "图案",
"Matched word" : "匹配的词",
"Dictionary name" : "字典名",
"Rank" : "评级",
@@ -214,7 +213,7 @@
"Beginning" : "开始",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "显示{{credential_number}}凭据的{{number_filtered}}",
"Search for credential…" : "搜索凭证...",
- "Account" : "账户",
+ "Account" : "账号",
"Password" : "密码",
"OTP" : "OTP",
"E-mail" : "电子邮件",
@@ -231,13 +230,13 @@
"Use regex" : "使用正则表达式",
"You have incoming share requests." : "您接收到共享请求。",
"If you want to put the credential in another vault," : "如果您想将证书放在另一个保险箱中,",
- "log out of this vault and log into the vault you want the shared credential in." : "退出此保险箱并登录到您要共享证书的保险箱。",
+ "log out of this vault and log into the vault you want the shared credential in." : "登出此保险箱并登录到您要共享证书的保险箱。",
"Permissions" : "权限",
"Received from" : "接受自",
"Date" : "日期",
"Accept" : "接受",
"Decline" : "拒绝",
- "You have {{session_time}} left before logout." : "您在注销前还剩 {{session_time}} 。",
+ "You have {{session_time}} left before logout." : "登出前还剩 {{session_time}} 。",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "由于{{试图}}尝试已失败,您的保险箱已锁定{{time}}",
"Hello there!" : "嘿,您好!",
"It does not seem that you have any passwords. Do you want to add one?" : "您似乎没有任何密码。需要添加一个吗?",
@@ -260,7 +259,7 @@
"Please input the password for" : "请输入密码为",
"Set this vault as the default." : "将此保险箱设置为默认值。",
"Log into this vault automatically." : "自动登入保险箱",
- "Log out of this vault automatically after: " : "之后自动退出此保险箱:",
+ "Log out of this vault automatically after: " : "在以下情况下自动登出此保险库:",
"Decrypt vault" : "加密保险箱",
"Seems you lost the vault password and you're unable to log in." : "似乎丢失了保险箱密码,您无法登录。",
"If you want this vault to be removed you can request that here." : "如果您想删除这个保险箱,您可以在这里请求。",
@@ -277,7 +276,7 @@
"Logged into {{vault_name}}" : "计入日志到 {{vault_name}} ",
"Change vault" : "更改保险箱",
"Deleted credentials" : "删除的凭证",
- "Logout" : "注销",
+ "Logout" : "登出",
"Donate" : "捐助",
"Show All" : "显示所有",
"Tags" : "标签",
@@ -290,7 +289,7 @@
"Simple Navigation" : "简单导航",
"Someone has shared a credential with you." : "有人向您共享了一个证书。",
"Click here to request it" : "点击这里请求",
- "Loading…" : "加载中...",
+ "Loading…" : "正在加载…",
"Awwhh… credential not found. Maybe it expired" : "哎呀... 没有找到证书。也许它过期了",
"Compromise!" : "密码泄露!",
"Compromised!" : "已被泄露!",
@@ -314,15 +313,16 @@
"%3$s has renamed %1$s to %2$s" : "%3$s 已重命名 %1$s 为 %2$s",
"You renamed %1$s to %2$s" : "已重命名 %1$s 为 %2$s",
"%1$s has been deleted by %2$s" : "%1$s 已被 %2$s 删除",
- "You deleted %1$s" : "已删除 %1$s",
- "%1$s has been recovered by %2$s" : "%1$s 已被%2$s 恢复",
- "You recovered %1$s" : "已恢复 %1$s",
+ "You deleted %1$s" : "你删除了 %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s 已被%2$s 还原",
+ "You recovered %1$s" : "你还原了 %1$s",
"%1$s has been permanently deleted by %2$s" : "%1$s 已被 %2$s 永久删除",
"You permanently deleted %1$s" : "您将永久删除 %1$s",
"The password of %1$s has expired, renew it now." : "密码 %1$s 已过期,请续订。",
"%1$s has been shared with %2$s" : "%1$s 已经共享被 %2$s",
"You received a share request for %1$s from %2$s" : "您收到 %2$s 的共享 %1$s 请求 ",
"%s has been shared with a link" : "%s 已被共享通过链接",
+ "Passwords" : "密码",
"Your credential \"%s\" expired, click here to update the credential." : "您的凭据%s已过期,请点击此处更新凭证。",
"Remind me later" : "以后提醒我 ",
"Ignore" : "忽略",
@@ -345,21 +345,21 @@
"Disable JavaScript debugger" : "禁用 JavaScript 调试器",
"Allow users on this server to share passwords with a link" : "允许此服务器上的用户通过链接共享密码 ",
"Allow users on this server to share passwords with other users" : "允许此服务器上的用户与其他用户共享密码 ",
- "Move credentials from one account to another" : "将凭据从一个帐户移动到另一个",
- "Source account" : "资源账户",
- "Destination account" : "终点账户",
+ "Move credentials from one account to another" : "将凭据从一个账号移动到另一个",
+ "Source account" : "来源账号",
+ "Destination account" : "目标账号",
"Credentials moved!" : "证书已移动了!",
"Requests to destroy vault" : "要求销毁保险箱",
"Request ID" : "请求 ID",
"Requested by" : "被要求",
"Reason" : "原因",
"Click here to request\n\t\t\t\t\tit" : "点击这里请求\n\t\t\t\t\t它",
- "Loading&hellip;" : "加载中&hellip;",
+ "Loading&hellip;" : "正在加载...",
"Awwhh… could not find the credential. Maybe it expired?" : "哎呀... 没有找到证书。也许它过期了?",
"Expires:" : "过期:",
"Connection to server lost" : "与服务器的连接断开",
"Problem loading page, reloading in 5 seconds" : "加载页面出现问题,在 5 秒内重新加载",
- "Saving..." : "保存中...",
+ "Saving..." : "正在保存…",
"Dismiss" : "忽略",
"seconds ago" : "几秒前"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/l10n/zh_HK.js b/l10n/zh_HK.js
new file mode 100644
index 00000000..62a321ff
--- /dev/null
+++ b/l10n/zh_HK.js
@@ -0,0 +1,39 @@
+OC.L10N.register(
+ "passman",
+ {
+ "General" : "一般",
+ "Done" : "Done",
+ "Sharing" : "分享",
+ "Share link" : "分享連結",
+ "Good" : "好",
+ "Username" : "用戶名稱",
+ "File" : "File",
+ "Add" : "加入",
+ "Type" : "類別",
+ "Size" : "大小",
+ "Expiration date" : "分享期限",
+ "Disabled" : "停用",
+ "Export" : "滙出",
+ "Version" : "版本",
+ "Import" : "導入",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "檔案",
+ "Save" : "儲存",
+ "Cancel" : "取消",
+ "Settings" : "設定",
+ "Unshare" : "取消分享",
+ "Password" : "密碼",
+ "URL" : "網址",
+ "Notes" : "筆記",
+ "Edit" : "編輯",
+ "Delete" : "刪除",
+ "Share" : "分享",
+ "Date" : "Date",
+ "Description" : "描述",
+ "You created %1$s" : "你新增了%1$s",
+ "You deleted %1$s" : "你刪除了%1$s",
+ "Saving..." : "儲存中...",
+ "seconds ago" : "秒前"
+},
+"nplurals=1; plural=0;");
diff --git a/l10n/zh_HK.json b/l10n/zh_HK.json
new file mode 100644
index 00000000..8216374f
--- /dev/null
+++ b/l10n/zh_HK.json
@@ -0,0 +1,37 @@
+{ "translations": {
+ "General" : "一般",
+ "Done" : "Done",
+ "Sharing" : "分享",
+ "Share link" : "分享連結",
+ "Good" : "好",
+ "Username" : "用戶名稱",
+ "File" : "File",
+ "Add" : "加入",
+ "Type" : "類別",
+ "Size" : "大小",
+ "Expiration date" : "分享期限",
+ "Disabled" : "停用",
+ "Export" : "滙出",
+ "Version" : "版本",
+ "Import" : "導入",
+ "Uploading" : "Uploading",
+ "User" : "User",
+ "Files" : "檔案",
+ "Save" : "儲存",
+ "Cancel" : "取消",
+ "Settings" : "設定",
+ "Unshare" : "取消分享",
+ "Password" : "密碼",
+ "URL" : "網址",
+ "Notes" : "筆記",
+ "Edit" : "編輯",
+ "Delete" : "刪除",
+ "Share" : "分享",
+ "Date" : "Date",
+ "Description" : "描述",
+ "You created %1$s" : "你新增了%1$s",
+ "You deleted %1$s" : "你刪除了%1$s",
+ "Saving..." : "儲存中...",
+ "seconds ago" : "秒前"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/l10n/zh_TW.js b/l10n/zh_TW.js
index 4f46b931..cd1adfbd 100644
--- a/l10n/zh_TW.js
+++ b/l10n/zh_TW.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"passman",
{
- "Passwords" : "密碼",
"General" : "一般",
"Custom Fields" : "自定義欄位",
"Error loading file" : "載入檔案錯誤",
"An error occurred during decryption" : "解密時發生錯誤",
+ "Credential updated" : "憑據已更新",
"Invalid QR code" : "無效的QR code",
"Starting export" : "開始輸出",
"Decrypting credentials" : "帳號密碼加密中",
@@ -13,25 +13,37 @@ OC.L10N.register(
"Importing" : "匯入中",
"Start import" : "開始匯入",
"Select CSV file" : "請選擇一個CSV檔案",
+ "Settings saved" : "設定已儲存",
"General settings" : "一般設定",
"Password settings" : "密碼設定",
"Sharing" : "分享",
"New password does not match!" : "密碼不相符",
+ "Share with users and groups" : "分享給其他使用者或群組",
"Share link" : "分享連結",
"Saved!" : "已儲存",
+ "Good" : "不錯",
+ "Toggle visibility" : "調整可見度",
"Copy to clipboard" : "複製到剪貼簿",
"Generate password" : "產生密碼",
"Complete" : "完成",
+ "Username" : "使用者名稱",
"Repeat password" : "再輸入一次密碼",
+ "Add tag" : "加入標籤",
"Text" : "文字",
"File" : "檔案",
"Add" : "新增",
+ "Value" : "值",
"Type" : "類型",
+ "Actions" : "動作",
"Empty" : "空的",
"Filename" : "檔名",
"Upload date" : "上傳日期",
"Size" : "大小",
"Current OTP settings" : "目前OTP設定",
+ "Secret" : "私密",
+ "Expiration date" : "到期日",
+ "No expiration date set" : "未指定到期日",
+ "Disabled" : "停用",
"Week(s)" : "週",
"Month(s)" : "月",
"Year(s)" : "年",
@@ -45,8 +57,11 @@ OC.L10N.register(
"Require every character type" : "需要全部符號類型",
"Export type" : "匯出類型",
"Export" : "匯出",
+ "Change" : "更改",
"Repeat new vault password" : "再輸入一次新密碼",
"Version" : "版本",
+ "Bookmarklet" : "書籤",
+ "Vault password" : "空間密碼",
"Import" : "匯入",
"Private Key" : "私鑰",
"Public key" : "公鑰",
@@ -55,23 +70,53 @@ OC.L10N.register(
"Start scan" : "開始掃描",
"Result" : "結果",
"Score" : "分數",
+ "Uploading" : "上傳中...",
"User" : "使用者",
"Read" : "讀取",
"Write" : "寫入",
"Files" : "檔案",
+ "Pending" : "擱置中",
"Show files" : "顯示檔案",
"Details" : "詳細資料",
+ "Hide details" : "隱藏細節",
"Rank" : "排名",
+ "by" : "由",
+ "Label" : "標籤",
"Save" : "儲存",
"Cancel" : "Cancel",
"Settings" : "設定",
"Unshare" : "取消分享",
+ "Account" : "帳戶",
+ "Password" : "密碼",
+ "OTP" : "OTP",
"E-mail" : "E-mail",
"URL" : "URL",
+ "Notes" : "筆記",
"Created" : "已新增",
+ "Edit" : "退出",
+ "Delete" : "刪除",
+ "Share" : "分享",
+ "Date" : "日期",
+ "Accept" : "接受",
"Decline" : "拒絕",
+ "Never" : "絕不",
+ "Donate" : "斗內",
+ "Tags" : "標籤",
+ "Expired" : "已過期",
+ "Loading…" : "載入中…",
+ "email" : "電子郵件",
+ "Description" : "描述",
+ "You created %1$s" : "您建立了 %1$s",
+ "You deleted %1$s" : "您刪除了 %1$s",
+ "Passwords" : "密碼",
"Remind me later" : "稍後提醒我",
"Ignore" : "忽略",
- "Connection to server lost" : "伺服器斷線了"
+ "Passman" : "Passman",
+ "Expires:" : "到期日:",
+ "Connection to server lost" : "伺服器斷線了",
+ "Problem loading page, reloading in 5 seconds" : "載入頁面出錯,5 秒後重新整理",
+ "Saving..." : "儲存中...",
+ "Dismiss" : "取消",
+ "seconds ago" : "幾秒前"
},
"nplurals=1; plural=0;");
diff --git a/l10n/zh_TW.json b/l10n/zh_TW.json
index f5509cef..150cdd6b 100644
--- a/l10n/zh_TW.json
+++ b/l10n/zh_TW.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Passwords" : "密碼",
"General" : "一般",
"Custom Fields" : "自定義欄位",
"Error loading file" : "載入檔案錯誤",
"An error occurred during decryption" : "解密時發生錯誤",
+ "Credential updated" : "憑據已更新",
"Invalid QR code" : "無效的QR code",
"Starting export" : "開始輸出",
"Decrypting credentials" : "帳號密碼加密中",
@@ -11,25 +11,37 @@
"Importing" : "匯入中",
"Start import" : "開始匯入",
"Select CSV file" : "請選擇一個CSV檔案",
+ "Settings saved" : "設定已儲存",
"General settings" : "一般設定",
"Password settings" : "密碼設定",
"Sharing" : "分享",
"New password does not match!" : "密碼不相符",
+ "Share with users and groups" : "分享給其他使用者或群組",
"Share link" : "分享連結",
"Saved!" : "已儲存",
+ "Good" : "不錯",
+ "Toggle visibility" : "調整可見度",
"Copy to clipboard" : "複製到剪貼簿",
"Generate password" : "產生密碼",
"Complete" : "完成",
+ "Username" : "使用者名稱",
"Repeat password" : "再輸入一次密碼",
+ "Add tag" : "加入標籤",
"Text" : "文字",
"File" : "檔案",
"Add" : "新增",
+ "Value" : "值",
"Type" : "類型",
+ "Actions" : "動作",
"Empty" : "空的",
"Filename" : "檔名",
"Upload date" : "上傳日期",
"Size" : "大小",
"Current OTP settings" : "目前OTP設定",
+ "Secret" : "私密",
+ "Expiration date" : "到期日",
+ "No expiration date set" : "未指定到期日",
+ "Disabled" : "停用",
"Week(s)" : "週",
"Month(s)" : "月",
"Year(s)" : "年",
@@ -43,8 +55,11 @@
"Require every character type" : "需要全部符號類型",
"Export type" : "匯出類型",
"Export" : "匯出",
+ "Change" : "更改",
"Repeat new vault password" : "再輸入一次新密碼",
"Version" : "版本",
+ "Bookmarklet" : "書籤",
+ "Vault password" : "空間密碼",
"Import" : "匯入",
"Private Key" : "私鑰",
"Public key" : "公鑰",
@@ -53,23 +68,53 @@
"Start scan" : "開始掃描",
"Result" : "結果",
"Score" : "分數",
+ "Uploading" : "上傳中...",
"User" : "使用者",
"Read" : "讀取",
"Write" : "寫入",
"Files" : "檔案",
+ "Pending" : "擱置中",
"Show files" : "顯示檔案",
"Details" : "詳細資料",
+ "Hide details" : "隱藏細節",
"Rank" : "排名",
+ "by" : "由",
+ "Label" : "標籤",
"Save" : "儲存",
"Cancel" : "Cancel",
"Settings" : "設定",
"Unshare" : "取消分享",
+ "Account" : "帳戶",
+ "Password" : "密碼",
+ "OTP" : "OTP",
"E-mail" : "E-mail",
"URL" : "URL",
+ "Notes" : "筆記",
"Created" : "已新增",
+ "Edit" : "退出",
+ "Delete" : "刪除",
+ "Share" : "分享",
+ "Date" : "日期",
+ "Accept" : "接受",
"Decline" : "拒絕",
+ "Never" : "絕不",
+ "Donate" : "斗內",
+ "Tags" : "標籤",
+ "Expired" : "已過期",
+ "Loading…" : "載入中…",
+ "email" : "電子郵件",
+ "Description" : "描述",
+ "You created %1$s" : "您建立了 %1$s",
+ "You deleted %1$s" : "您刪除了 %1$s",
+ "Passwords" : "密碼",
"Remind me later" : "稍後提醒我",
"Ignore" : "忽略",
- "Connection to server lost" : "伺服器斷線了"
+ "Passman" : "Passman",
+ "Expires:" : "到期日:",
+ "Connection to server lost" : "伺服器斷線了",
+ "Problem loading page, reloading in 5 seconds" : "載入頁面出錯,5 秒後重新整理",
+ "Saving..." : "儲存中...",
+ "Dismiss" : "取消",
+ "seconds ago" : "幾秒前"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file