diff --git a/modoboa/admin/api/v1/tests.py b/modoboa/admin/api/v1/tests.py index 6f6ca230a..002498254 100644 --- a/modoboa/admin/api/v1/tests.py +++ b/modoboa/admin/api/v1/tests.py @@ -325,7 +325,7 @@ class AccountAPITestCase(ModoAPITestCase): self.assertEqual(user.language, "fr") user.delete() - data["language"] = "pl_PL" + data["language"] = "pl" response = self.client.post(url, data, format="json") self.assertEqual(response.status_code, 201) account = response.json() diff --git a/modoboa/admin/locale/ro_RO/LC_MESSAGES/django.po b/modoboa/admin/locale/ro_RO/LC_MESSAGES/django.po index f20af9f55..3492ee434 100644 --- a/modoboa/admin/locale/ro_RO/LC_MESSAGES/django.po +++ b/modoboa/admin/locale/ro_RO/LC_MESSAGES/django.po @@ -1,28 +1,28 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Andrei-Ilie Olteanu , 2018 +# Crc Darkplague , 2019 +# Simona Iacob , 2021 msgid "" msgstr "" "Project-Id-Version: Modoboa\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-06 13:15+0200\n" -"PO-Revision-Date: 2018-07-03 13:17+0000\n" -"Last-Translator: Andrei-Ilie Olteanu \n" -"Language-Team: Romanian (Romania) (http://www.transifex.com/tonio/modoboa/" -"language/ro_RO/)\n" -"Language: ro_RO\n" +"POT-Creation-Date: 2020-10-02 15:31+0200\n" +"PO-Revision-Date: 2021-04-19 18:58+0000\n" +"Last-Translator: Simona Iacob \n" +"Language-Team: Romanian (Romania) (http://www.transifex.com/tonio/modoboa/language/ro_RO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" -"2:1));\n" +"Language: ro_RO\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" #: admin/api.py:142 msgid "Here is your new Modoboa password: {}" -msgstr "" +msgstr "Aici este noua ta parolă Modoboa: {}" #: admin/app_settings.py:20 admin/handlers.py:261 #: admin/templates/admin/_global_statistics_widget.html:11 @@ -44,12 +44,9 @@ msgstr "MX-uri valide" #: admin/app_settings.py:34 msgid "" -"A list of IP or network address every MX record should match. A warning will " -"be sent if a record does not respect it." -msgstr "" -"O listă de IP-uri sau de adrese de rețea care pentru fiecare înregistrare MX " -"ar trebui să se potrivească. O avertizare va fi trimisă dacă o înregistrare " -"nu respectă această conformitate." +"A list of IP or network address every MX record should match. A warning will" +" be sent if a record does not respect it." +msgstr "O listă de IP-uri sau de adrese de rețea care pentru fiecare înregistrare MX ar trebui să se potrivească. O avertizare va fi trimisă dacă o înregistrare nu respectă această conformitate." #: admin/app_settings.py:42 msgid "New domains must use authorized MX(s)" @@ -59,57 +56,39 @@ msgstr "Domeniile noi trebuie să utilizeze MX(-uri) autorizate" msgid "" "Prevent the creation of a new domain if its MX record does not use one of " "the defined addresses." -msgstr "" -"Împiedică crearea unui nou domeniu dacă înregistrarea MX nu utilizează una " -"dintre adresele definite." +msgstr "Împiedică crearea unui nou domeniu dacă înregistrarea MX nu utilizează una dintre adresele definite." #: admin/app_settings.py:51 -#, fuzzy -#| msgid "Enable DNS checks" msgid "Enable SPF checks" -msgstr "Activează verificările DNS" +msgstr "Activează verificările SPF" #: admin/app_settings.py:54 -#, fuzzy -#| msgid "Check that every domain has a valid MX record" msgid "Check if every domain has a valid SPF record" -msgstr "Verifică ca fiecare domeniu are asociat un MX valid" +msgstr "Verificați dacă fiecare domeniu are o înregistrare SPF validă" #: admin/app_settings.py:59 -#, fuzzy -#| msgid "Enable MX checks" msgid "Enable DKIM checks" -msgstr "Activează verificările MX" +msgstr "Activați verificările DKIM" #: admin/app_settings.py:62 -#, fuzzy -#| msgid "Check that every domain has a valid MX record" msgid "Check if every domain with DKIM signin enabled has a valid DNS record" -msgstr "Verifică ca fiecare domeniu are asociat un MX valid" +msgstr "Verificați dacă fiecare domeniu cu autentificarea DKIM activată are o înregistrare DNS validă." #: admin/app_settings.py:68 -#, fuzzy -#| msgid "Enable MX checks" msgid "Enable DMARC checks" -msgstr "Activează verificările MX" +msgstr "Activați verificările DMARC" #: admin/app_settings.py:71 -#, fuzzy -#| msgid "Check that every domain has a valid MX record" msgid "Check if every domain has a valid DMARC record" -msgstr "Verifică ca fiecare domeniu are asociat un MX valid" +msgstr "Verificați dacă fiecare domeniu are o înregistrare DMARC validă" #: admin/app_settings.py:76 -#, fuzzy -#| msgid "Enable MX checks" msgid "Enable autoconfig checks" -msgstr "Activează verificările MX" +msgstr "Activați verificările de autoconfigurare" #: admin/app_settings.py:79 -#, fuzzy -#| msgid "Check that every domain has a valid MX record" msgid "Check if every domain has a valid records for autoconfiguration" -msgstr "Verifică ca fiecare domeniu are asociat un MX valid" +msgstr "Verificați dacă fiecare domeniu are o înregistrare validă pentru autoconfigurare" #: admin/app_settings.py:84 msgid "Enable DNSBL checks" @@ -121,11 +100,11 @@ msgstr "Verificați fiecare domeniu folosind furnizorii DNSBL majori" #: admin/app_settings.py:92 msgid "Custom DNS server" -msgstr "" +msgstr "Servere DNS personalizate" #: admin/app_settings.py:95 msgid "Use a custom DNS server instead of local server configuration" -msgstr "" +msgstr "Utilizează un server DNS personalizat in locul celui local" #: admin/app_settings.py:100 msgid "DKIM keys storage directory" @@ -136,10 +115,7 @@ msgid "" "Absolute path of the directory where DKIM private keys will be stored. Make " "sure this directory belongs to root user and is not readable by the outside " "world." -msgstr "" -"Calea absolută a directorului în care vor fi stocate cheile private DKIM. " -"Asigurați-vă că acest director aparține utilizatorului root și nu poate fi " -"citit de orice user." +msgstr "Calea absolută a directorului în care vor fi stocate cheile private DKIM. Asigurați-vă că acest director aparține utilizatorului root și nu poate fi citit de orice user." #: admin/app_settings.py:111 msgid "Default DKIM key length" @@ -149,106 +125,112 @@ msgstr "Mărimea implicită în caractere a chei DKIM" msgid "Default length in bits for newly generated DKIM keys." msgstr "Mărimea implicită în biți pentru o cheie DKIM nou generată" -#: admin/app_settings.py:119 admin/templates/admin/domain_detail.html:41 -msgid "Mailboxes" -msgstr "Cutii poștale" - -#: admin/app_settings.py:122 -msgid "Handle mailboxes on filesystem" -msgstr "Gestionați cutiile poștale în sistemul de fișiere" - -#: admin/app_settings.py:125 -msgid "" -"Rename or remove mailboxes on the filesystem when they get renamed or " -"removed within Modoboa" -msgstr "" -"Redenumește sau eliminează căsuțele poștale din sistemul de fișiere atunci " -"când se redenumesc sau se elimină în Modoboa" - -#: admin/app_settings.py:131 -msgid "Mailboxes owner" -msgstr "Propietarul cutiilor postale" - -#: admin/app_settings.py:134 -msgid "The UNIX account who owns mailboxes on the filesystem" -msgstr "" -"Contul UNIX care are in propietate casuțele poștale în sistemul de fișiere" - -#: admin/app_settings.py:139 +#: admin/app_settings.py:120 msgid "Default domain quota" msgstr "Cota-parte implicită a domeniului" -#: admin/app_settings.py:142 +#: admin/app_settings.py:123 msgid "" "Default quota (in MB) applied to freshly created domains with no value " "specified. A value of 0 means no quota." -msgstr "" -"Cota implicită (în MB) aplicată domeniilor nou create, care nu au nicio " -"valoare specificată. O valoare de 0 înseamnă că nu există o cotă." +msgstr "Cota implicită (în MB) aplicată domeniilor nou create, care nu au nicio valoare specificată. O valoare de 0 înseamnă că nu există o cotă." -#: admin/app_settings.py:148 admin/forms/domain.py:49 admin/models/domain.py:33 -#: admin/templates/admin/domain_detail.html:64 +#: admin/app_settings.py:129 +msgid "Default domain sending limit" +msgstr "Limita implicită de trimitere a domeniului" + +#: admin/app_settings.py:132 +msgid "" +"Number of messages freshly created domains will be allowed to send per day. " +"Leave empty for no limit." +msgstr "Numărul de mesaje pe care domeniile nou create vor putea să le trimită pe zi. Lăsați gol pentru nicio limită." + +#: admin/app_settings.py:137 admin/templates/admin/domain_detail.html:41 +msgid "Mailboxes" +msgstr "Cutii poștale" + +#: admin/app_settings.py:140 +msgid "Handle mailboxes on filesystem" +msgstr "Gestionați cutiile poștale în sistemul de fișiere" + +#: admin/app_settings.py:143 +msgid "" +"Rename or remove mailboxes on the filesystem when they get renamed or " +"removed within Modoboa" +msgstr "Redenumește sau eliminează căsuțele poștale din sistemul de fișiere atunci când se redenumesc sau se elimină în Modoboa" + +#: admin/app_settings.py:149 +msgid "Mailboxes owner" +msgstr "Propietarul cutiilor postale" + +#: admin/app_settings.py:152 +msgid "The UNIX account who owns mailboxes on the filesystem" +msgstr "Contul UNIX care are in propietate casuțele poștale în sistemul de fișiere" + +#: admin/app_settings.py:157 admin/forms/domain.py:49 +#: admin/models/domain.py:32 admin/templates/admin/domain_detail.html:64 msgid "Default mailbox quota" msgstr "Cota implicită pentru cutia poștală" -#: admin/app_settings.py:151 -#, fuzzy -#| msgid "" -#| "Default mailbox quota (in MB) applied to freshly created domains with no " -#| "value specified. A value of 0 means no quota." +#: admin/app_settings.py:160 msgid "" "Default mailbox quota (in MB) applied to freshly created mailboxes with no " "value specified. A value of 0 means no quota." -msgstr "" -"Cota implicită pentru cutia poștală (în MB) aplicată domeniilor nou create, " -"care nu au nicio valoare specificată. O valoare de 0 înseamnă că nu există o " -"cotă." +msgstr "Cota implicită a căsuței poștale (în MB) aplicată căsuțelor poștale nou create fără a fi specificată nicio valoare. O valoare de 0 înseamnă că nu există cotă." -#: admin/app_settings.py:157 +#: admin/app_settings.py:166 +msgid "Default mailbox sending limit" +msgstr "Limita implicită de trimitere a căsuței poștale" + +#: admin/app_settings.py:169 +msgid "" +"Number of messages freshly created mailboxes will be allowed to send per " +"day. Leave empty for no limit." +msgstr "Numărul de mesaje pe care cutiile poștale nou create vor putea să le trimită pe zi. Lăsați gol pentru nicio limită." + +#: admin/app_settings.py:175 msgid "Automatic account removal" msgstr "Ștergere automată a contului" -#: admin/app_settings.py:160 +#: admin/app_settings.py:178 msgid "When a mailbox is removed, also remove the associated account" msgstr "Când se șterge o cutie poștală, șterge, de asemenea și contul asociat" -#: admin/app_settings.py:164 +#: admin/app_settings.py:182 msgid "Automatic domain/mailbox creation" msgstr "Crearea automată a domeniului / cutiei poștale" -#: admin/app_settings.py:167 -msgid "Create a domain and a mailbox when an account is automatically created." -msgstr "" -"Creați un domeniu și o căsuță poștală atunci când un cont este creat automat." +#: admin/app_settings.py:185 +msgid "" +"Create a domain and a mailbox when an account is automatically created." +msgstr "Creați un domeniu și o căsuță poștală atunci când un cont este creat automat." -#: admin/app_settings.py:173 +#: admin/app_settings.py:191 msgid "Create an alias when a mailbox is renamed" msgstr "Creați un alias când o cutie poștală este redenumită" -#: admin/app_settings.py:176 +#: admin/app_settings.py:194 msgid "Create an alias using the old address when a mailbox is renamed." -msgstr "" -"Creați un alias utilizând vechea adresă atunci când o cutie poștală este " -"redenumită." +msgstr "Creați un alias utilizând vechea adresă atunci când o cutie poștală este redenumită." -#: admin/app_settings.py:225 admin/app_settings.py:233 -#: admin/forms/account.py:335 +#: admin/app_settings.py:243 admin/app_settings.py:251 +#: admin/forms/account.py:347 msgid "Must be a positive integer" msgstr "Trebuie să fie un număr întreg pozitiv" -#: admin/app_settings.py:243 +#: admin/app_settings.py:261 msgid "Directory not found." msgstr "Directorul nu a fost găsit." -#: admin/app_settings.py:249 +#: admin/app_settings.py:267 msgid "openssl not found, please make sure it is installed." msgstr "openssl nu a fost găsit, asigurați-vă că este instalat." -#: admin/app_settings.py:263 +#: admin/app_settings.py:281 msgid "Define at least one authorized network / address" msgstr "Definiți cel puțin o adresă de rețea autorizată" -#: admin/app_settings.py:273 +#: admin/app_settings.py:291 msgid "Administration" msgstr "Administrare" @@ -262,7 +244,15 @@ msgstr "Domeniu" msgid "Relay domain" msgstr "Domeniu de relay" -#: admin/forms/account.py:32 admin/templates/admin/domain_detail.html:125 +#: admin/constants.py:42 +msgid "Opened" +msgstr "Deschis" + +#: admin/constants.py:43 +msgid "Closed" +msgstr "Închis" + +#: admin/forms/account.py:32 admin/templates/admin/domain_detail.html:139 msgid "Username" msgstr "Username" @@ -270,9 +260,7 @@ msgstr "Username" msgid "" "The user's name. Must be a valid e-mail address for simple users or " "administrators with a mailbox." -msgstr "" -"Numele de utilizator. Trebuie sa fie o adresa de e-mail valida pentru " -"tilizatori simpli sau pentru administratori care au casuță poștală." +msgstr "Numele de utilizator. Trebuie sa fie o adresa de e-mail valida pentru tilizatori simpli sau pentru administratori care au casuță poștală." #: admin/forms/account.py:39 admin/templates/admin/account_detail.html:29 msgid "Role" @@ -286,7 +274,7 @@ msgstr "Alege" msgid "What level of permission this user will have" msgstr "Ce nivel de permisiune va avea acest utilizator" -#: admin/forms/account.py:44 admin/forms/domain.py:245 +#: admin/forms/account.py:44 admin/forms/domain.py:248 msgid "Random password" msgstr "Parolă aleatorie" @@ -294,9 +282,7 @@ msgstr "Parolă aleatorie" msgid "" "Generate a random password. If you're updating this account and check this " "box, a new password will be generated." -msgstr "" -"Generați o parolă aleatorie. Dacă actualizați acest cont și bifați această " -"casetă, va fi generată o nouă parolă." +msgstr "Generați o parolă aleatorie. Dacă actualizați acest cont și bifați această casetă, va fi generată o nouă parolă." #: admin/forms/account.py:52 msgid "Password" @@ -319,8 +305,8 @@ msgid "Only super administrators are allowed for this mode" msgstr "Numai superadministratorii sunt permiși la acest mod" #: admin/forms/account.py:178 admin/forms/account.py:180 -#: admin/forms/domain.py:162 admin/forms/domain.py:291 -#: admin/forms/domain.py:294 admin/serializers.py:287 +#: admin/forms/domain.py:165 admin/forms/domain.py:294 +#: admin/forms/domain.py:297 admin/serializers.py:297 msgid "This field is required." msgstr "Acest câmp este necesar." @@ -347,99 +333,93 @@ msgid "Quota" msgstr "Cotă-parte" #: admin/forms/account.py:232 -#, fuzzy -#| msgid "" -#| "Quota in MB for this mailbox. Define a custom value or use domain's " -#| "default one. Leave empty to define an unlimited value (not allowed for " -#| "domain administrators)." msgid "" -"Quota for this mailbox, can be expressed in KB, MB (default) or GB. Define a " -"custom value or use domain's default one. Leave empty to define an unlimited " -"value (not allowed for domain administrators)." -msgstr "" -"Cota în MB pentru această căsuță poștală. Definiți o valoare particularizată " -"sau utilizați valurea prestabilită a domeniului. Lăsați gol pentru a defini " -"o valoare nelimitată (nu este permisă pentru administratorii de domeniu)." +"Quota for this mailbox, can be expressed in KB, MB (default) or GB. Define a" +" custom value or use domain's default one. Leave empty to define an " +"unlimited value (not allowed for domain administrators)." +msgstr "Limita pentru această căsuță poștală, poate fi exprimată in KB, MB (implicit) sau GB. Defineste o valoare particularizată sau folosește valoarea implicită a domeniului. Lăsati necompletat pentru a defini o valoare nelimitată (nu este permis pentru administratorii de domeniu)." -#: admin/forms/account.py:242 admin/forms/domain.py:31 +#: admin/forms/account.py:242 admin/models/domain.py:36 +#: admin/models/mailbox.py:102 admin/templates/admin/account_detail.html:50 +#: admin/templates/admin/domain_detail.html:69 +msgid "Message sending limit" +msgstr "Limita de trimitere a mesajelor" + +#: admin/forms/account.py:246 admin/models/mailbox.py:104 +msgid "Number of messages this mailbox can send per day" +msgstr "Numărul de mesaje pe care această căsuță poștală le poate trimite pe zi" + +#: admin/forms/account.py:249 admin/forms/domain.py:31 #: admin/templates/admin/domain_headers.html:4 msgid "Alias(es)" msgstr "Alias(uri)" -#: admin/forms/account.py:245 +#: admin/forms/account.py:252 msgid "" "Alias(es) of this mailbox. Indicate only one address per input, press ENTER " "to add a new input. To create a catchall alias, just enter the domain name " "(@domain.tld)." -msgstr "" -"Alias(uri) la această căsuță poștală. Indicați numai o singură adresă pentru " -"fiecare intrare, apăsați ENTER pentru a adăuga o intrare nouă. Pentru a crea " -"un alias de captură care sa prindă toate emailurile, trebuie doar să " -"introduceți numele domeniului (@ domain.tld)." +msgstr "Alias(uri) la această căsuță poștală. Indicați numai o singură adresă pentru fiecare intrare, apăsați ENTER pentru a adăuga o intrare nouă. Pentru a crea un alias de captură care sa prindă toate emailurile, trebuie doar să introduceți numele domeniului (@ domain.tld)." -#: admin/forms/account.py:251 +#: admin/forms/account.py:258 msgid "Sender addresses" msgstr "Adresa expeditorului" -#: admin/forms/account.py:254 +#: admin/forms/account.py:261 msgid "" "Additional sender address(es) for this account. The user will be allowed to " "send emails using this address, even if it does not exist locally. Indicate " "one address per input. Press ENTER to add a new input." -msgstr "" -"Adresa(e) suplimentare a expeditorului pentru acest cont. Utilizatorului i " -"se va permite să trimită e-mailuri utilizând această adresă, chiar dacă nu " -"există pe plan local. Indicați o adresă pentru fiecare intrare. Apăsați " -"ENTER pentru a adăuga o intrare nouă." +msgstr "Adresa(e) suplimentare a expeditorului pentru acest cont. Utilizatorului i se va permite să trimită e-mailuri utilizând această adresă, chiar dacă nu există pe plan local. Indicați o adresă pentru fiecare intrare. Apăsați ENTER pentru a adăuga o intrare nouă." -#: admin/forms/account.py:309 admin/forms/alias.py:88 -#: admin/models/mailbox.py:310 +#: admin/forms/account.py:321 admin/forms/alias.py:88 +#: admin/models/mailbox.py:321 msgid "Domain does not exist" msgstr "Domeniul nu există" -#: admin/forms/account.py:345 +#: admin/forms/account.py:357 msgid "Local domain does not exist" msgstr "Domeniul local nu există" -#: admin/forms/account.py:349 admin/forms/account.py:357 +#: admin/forms/account.py:361 admin/forms/account.py:369 #: admin/forms/alias.py:91 msgid "You don't have access to this domain" msgstr "Nu aveți acces la acest domeniu" -#: admin/forms/account.py:456 +#: admin/forms/account.py:470 msgid "Domain(s)" msgstr "Domeniu(ii)" -#: admin/forms/account.py:458 +#: admin/forms/account.py:472 msgid "Domain(s) that user administrates" msgstr "Domeniu(ii) pe care utilizatorul le administrează" -#: admin/forms/account.py:505 admin/forms/account.py:595 -#: admin/forms/domain.py:362 admin/forms/domain.py:433 +#: admin/forms/account.py:519 admin/forms/account.py:609 +#: admin/forms/domain.py:365 admin/forms/domain.py:436 msgid "General" msgstr "General" -#: admin/forms/account.py:509 +#: admin/forms/account.py:523 msgid "Profile" msgstr "Profil" -#: admin/forms/account.py:513 admin/forms/account.py:601 +#: admin/forms/account.py:527 admin/forms/account.py:615 msgid "Mail" msgstr "Mail" -#: admin/forms/account.py:516 +#: admin/forms/account.py:530 msgid "Permissions" msgstr "Permisiuni" -#: admin/forms/account.py:584 +#: admin/forms/account.py:598 msgid "Account updated" msgstr "Cont actualizat" -#: admin/forms/account.py:609 +#: admin/forms/account.py:623 msgid "New account" msgstr "Cont nou" -#: admin/forms/account.py:619 +#: admin/forms/account.py:633 msgid "Account created" msgstr "Cont creat" @@ -455,9 +435,7 @@ msgstr "Adresă email" msgid "" "The alias address. To create a catchall alias, just enter the domain name " "(@domain.tld)." -msgstr "" -"Adresa aliasului. Pentru a crea un alias care caputrează tot, trebuie doar " -"să introduceți numele domeniului (@ domain.tld)." +msgstr "Adresa aliasului. Pentru a crea un alias care caputrează tot, trebuie doar să introduceți numele domeniului (@ domain.tld)." #: admin/forms/alias.py:31 admin/templates/admin/alias_detail.html:37 msgid "Recipients" @@ -467,9 +445,7 @@ msgstr "Destinatarii" msgid "" "Addresses this alias will point to. Indicate only one address per input, " "press ENTER to add a new input." -msgstr "" -"Adresele pe care sunt asociate cu acest alias. Indicați numai o singură " -"adresă pentru fiecare intrare, apăsați ENTER pentru a adăuga o intrare nouă." +msgstr "Adresele pe care sunt asociate cu acest alias. Indicați numai o singură adresă pentru fiecare intrare, apăsați ENTER pentru a adăuga o intrare nouă." #: admin/forms/alias.py:108 admin/forms/alias.py:110 msgid "This field is required" @@ -488,130 +464,117 @@ msgstr "Tip" msgid "" "Alias(es) of this domain. Indicate only one name per input, press ENTER to " "add a new input." -msgstr "" -"Alias (uri) la acest domeniu. Indicați un singur nume pe fiecare intrare, " -"apăsați ENTER pentru a adăuga o intrare nouă." +msgstr "Alias (uri) la acest domeniu. Indicați un singur nume pe fiecare intrare, apăsați ENTER pentru a adăuga o intrare nouă." #: admin/forms/domain.py:39 msgid "Key selector" msgstr "Selector cheie" #: admin/forms/domain.py:44 admin/serializers.py:30 -#, fuzzy -#| msgid "" -#| "Default quota in MB applied to mailboxes. A value of 0 means no quota." msgid "" "Quota shared between mailboxes. Can be expressed in KB, MB (default) or GB. " "A value of 0 means no quota." -msgstr "" -"Cota implicită exprimată în MB aplivată la cutiile poștale. O valuare 0 " -"înseamnă fără cotă." +msgstr "Limită distribuită intre căsuțele postale. Poate fi exprimată in KB, MB (implicit) sau GB. Valoarea 0 reprezintă nelimitat." #: admin/forms/domain.py:52 -#, fuzzy -#| msgid "" -#| "Default quota in MB applied to mailboxes. A value of 0 means no quota." msgid "" "Default quota applied to mailboxes. Can be expressed in KB, MB (default) or " "GB. A value of 0 means no quota." -msgstr "" -"Cota implicită exprimată în MB aplivată la cutiile poștale. O valuare 0 " -"înseamnă fără cotă." +msgstr "Limita implicită aplicată căsuțelor postale. Poate fi exprimată in KB, MB (implicit) sau GB. Valoarea 0 reprezintă nelimitat." -#: admin/forms/domain.py:94 admin/handlers.py:161 +#: admin/forms/domain.py:97 admin/handlers.py:161 msgid "domain alias" msgstr "alias domeniu" -#: admin/forms/domain.py:97 admin/forms/domain.py:173 admin/forms/domain.py:181 +#: admin/forms/domain.py:100 admin/forms/domain.py:176 +#: admin/forms/domain.py:184 #, python-format msgid "A %s with this name already exists" msgstr "Itemul%s cu acest nume există" -#: admin/forms/domain.py:105 admin/serializers.py:64 +#: admin/forms/domain.py:108 admin/serializers.py:65 msgid "No authorized MX record found for this domain" msgstr "Nu s-au gasit înregistrări MX autorizate pentru acest domeniu" -#: admin/forms/domain.py:117 +#: admin/forms/domain.py:120 msgid "DKIM keys storage directory not configured" msgstr "Folderul de stocare a cheilor DKIM nu este configurat" -#: admin/forms/domain.py:147 admin/serializers.py:82 +#: admin/forms/domain.py:150 admin/serializers.py:83 msgid "Cannot be greater than domain quota" msgstr "Nu poate fi mai mare decat cota domeniului" -#: admin/forms/domain.py:152 +#: admin/forms/domain.py:155 msgid "You can't define an unlimited quota." msgstr "Nu poți sa definești o cotă nelimitată" -#: admin/forms/domain.py:173 admin/forms/domain.py:178 +#: admin/forms/domain.py:176 admin/forms/domain.py:181 msgid "domain" msgstr "domeniu" -#: admin/forms/domain.py:227 +#: admin/forms/domain.py:230 msgid "Create a domain administrator" msgstr "Creați un administrator de domeniu" -#: admin/forms/domain.py:230 +#: admin/forms/domain.py:233 msgid "Automatically create an administrator for this domain" msgstr "Creează automat un administrator pentru acest domeniu" -#: admin/forms/domain.py:235 admin/templates/admin/domain_detail.html:125 +#: admin/forms/domain.py:238 admin/templates/admin/domain_detail.html:139 #: admin/templates/admin/domain_headers.html:3 #: admin/templates/admin/identity_headers.html:2 #: admin/templates/admin/mx_domain_detail.html:9 msgid "Name" msgstr "Nume" -#: admin/forms/domain.py:238 +#: admin/forms/domain.py:241 msgid "" "The administrator's name. Don't include the domain's name here, it will be " "automatically appended." -msgstr "" -"Numele administratorului. Nu include aici si numele domeniului, el va fi " -"automat alipit. " +msgstr "Numele administratorului. Nu include aici si numele domeniului, el va fi automat alipit. " -#: admin/forms/domain.py:248 +#: admin/forms/domain.py:251 msgid "Generate a random password for the administrator." msgstr "Generează o parolă aleatorie pentru administrator." -#: admin/forms/domain.py:254 +#: admin/forms/domain.py:257 msgid "With a mailbox" msgstr "Cu casuță postală" -#: admin/forms/domain.py:257 +#: admin/forms/domain.py:260 msgid "Create a mailbox for the administrator." msgstr "Creează o căsuță postală pentru administrator. " -#: admin/forms/domain.py:263 +#: admin/forms/domain.py:266 msgid "Create aliases" msgstr "Crează aliasuri " -#: admin/forms/domain.py:266 +#: admin/forms/domain.py:269 msgid "Automatically create standard aliases for this domain" msgstr "Creează automat aliasuri standard pentru acest domeniu" -#: admin/forms/domain.py:282 +#: admin/forms/domain.py:285 msgid "Invalid format" msgstr "Format invalid" -#: admin/forms/domain.py:311 +#: admin/forms/domain.py:314 #, python-format msgid "User '%s' already exists" msgstr "Utilizatorul '%s'  exista deja" -#: admin/forms/domain.py:423 +#: admin/forms/domain.py:426 msgid "Domain modified" msgstr "Domeniu modficat" -#: admin/forms/domain.py:444 +#: admin/forms/domain.py:447 msgid "Options" msgstr "Opțiuni" -#: admin/forms/domain.py:452 +#: admin/forms/domain.py:455 msgid "New domain" msgstr "Domeniu nou" -#: admin/forms/domain.py:465 +#: admin/forms/domain.py:468 msgid "Domain created" msgstr "Domeniu creat" @@ -633,8 +596,7 @@ msgstr "Ține o copii locale" #: admin/forms/forward.py:22 msgid "Forward messages and store copies into your local mailbox" -msgstr "" -"Redirecționează mesajele și stochează copiile în căsuța postală locală " +msgstr "Redirecționează mesajele și stochează copiile în căsuța postală locală " #: admin/forms/import_.py:11 msgid "Select a file" @@ -654,16 +616,14 @@ msgstr "Encriptează parola" #: admin/forms/import_.py:40 msgid "Check this option if passwords contained in your file are not crypted" -msgstr "" -"Bifeaza această opțune dacă parolele conținute în fșierul tău nu sunt " -"encriptate" +msgstr "Bifeaza această opțune dacă parolele conținute în fșierul tău nu sunt encriptate" #: admin/handlers.py:210 #, python-format msgid "Account import failed (%s): domain does not exist" msgstr "Importul de cont a esuat (%s): domeniul nu există" -#: admin/handlers.py:223 admin/models/mailbox.py:338 +#: admin/handlers.py:223 admin/models/mailbox.py:350 msgid "Mailbox {} already exists" msgstr "Căsuța poștală {} deja există" @@ -695,67 +655,74 @@ msgstr "Nu ești autorizat să imporți domenii" msgid "You are not allowed to import domain aliases." msgstr "Nu ești autorizat să imporți aliasuri de domenii" -#: admin/lib.py:189 admin/tests/test_mx.py:127 admin/tests/test_mx.py:136 -#: admin/tests/test_mx.py:139 -#, fuzzy, python-format -#| msgid "No DNS records found for %s" +#: admin/lib.py:189 admin/tests/test_mx.py:152 admin/tests/test_mx.py:161 +#: admin/tests/test_mx.py:164 +#, python-format msgid "No DNS record found for %s" -msgstr "Nu s-au găsit înregistrări DNS pentru %s" +msgstr " Nu s-a găsit nicio înregistrare DNS pentru %s" #: admin/lib.py:192 -#, fuzzy, python-format -#| msgid "No MX record for %s" +#, python-format msgid "No %(type)s record for %(name)s" -msgstr "Nu există înregidtrări MX pentru %s" +msgstr "Nu %(type)sînregistrati pentru %(name)s" -#: admin/lib.py:196 admin/tests/test_mx.py:131 +#: admin/lib.py:196 admin/tests/test_mx.py:156 msgid "No working name servers found" msgstr "Nu s-au găsit NS-uri funcționale" -#: admin/lib.py:199 admin/tests/test_mx.py:133 +#: admin/lib.py:199 admin/tests/test_mx.py:158 #, python-format msgid "DNS resolution timeout, unable to query %s at the moment" -msgstr "" -"Timeout întâmpinat la rezolvarea cererii DNS, imposibilă de interogat %s în " -"acest moment" +msgstr "Timeout întâmpinat la rezolvarea cererii DNS, imposibilă de interogat %s în acest moment" #: admin/lib.py:227 -#, fuzzy, python-brace-format -#| msgid "Invalid IP address format for %(domain)s; %(addr)s" +#, python-brace-format msgid "Invalid IP address format for {domain}; {addr}" -msgstr "Format invalid de IP pentru %(domain)s; %(addr)s " +msgstr "Adresă IP invalidă pentru {domain}; {addr}" #: admin/management/commands/subcommands/_import.py:93 msgid "CSV file is not encoded in UTF-8, attempting to guess encoding" -msgstr "" +msgstr "Fișierul CSV nu este codat UTF-8, incercăm să determinăm codarea automat" #: admin/management/commands/subcommands/_import.py:105 #, python-format msgid "Reading CSV file using %(encoding)s encoding" -msgstr "" +msgstr "Citim fișierul CSV folosind codarea %(encoding)s" #: admin/management/commands/subcommands/_import.py:116 #, python-format msgid "Unable to decode CSV file using %(encoding)s encoding" -msgstr "" +msgstr "Imposibil de decodat fișierul CSV folosind codarea %(encoding)s" -#: admin/management/commands/subcommands/_mx.py:132 -msgid "[modoboa] DNSBL issue(s) for domain {}" -msgstr "[modoboa] Problemă(e) DNSBL pentru domeniul {} " +#: admin/management/commands/subcommands/_mx.py:116 +msgid "MX {} listed by DNSBL provider {}" +msgstr "MX {} listat de furnizorul DNSBL {}" -#: admin/management/commands/subcommands/_mx.py:152 +#: admin/management/commands/subcommands/_mx.py:164 +msgid "Domain has no MX record" +msgstr "Domeniul nu are înregistrare MX" + +#: admin/management/commands/subcommands/_mx.py:168 msgid "Domain {} has no MX record" msgstr "Domeniul {} nu are înregistrări MX" -#: admin/management/commands/subcommands/_mx.py:163 +#: admin/management/commands/subcommands/_mx.py:188 +msgid "Invalid MX record: {}" +msgstr "Înregistrare MX invalidă: {}" + +#: admin/management/commands/subcommands/_mx.py:194 #, python-brace-format msgid "MX record for domain {0} is invalid: {1}" msgstr "Înregistrarea MX pentru domeniul {0} este invalidă: {1}" -#: admin/management/commands/subcommands/_mx.py:180 +#: admin/management/commands/subcommands/_mx.py:208 msgid "[modoboa] MX issue(s) for domain {}" msgstr "[modoboa] Problemă(e) MX pentru domeniul {}" +#: admin/management/commands/subcommands/_mx.py:266 +msgid "[modoboa] DNSBL issue(s) for domain {}" +msgstr "[modoboa] Problemă(e) DNSBL pentru domeniul {} " + #: admin/models/alias.py:32 admin/models/mailbox.py:95 msgid "address" msgstr "adresă" @@ -764,7 +731,7 @@ msgstr "adresă" msgid "The alias address." msgstr "Adresă alias." -#: admin/models/alias.py:39 admin/models/domain.py:37 +#: admin/models/alias.py:39 admin/models/domain.py:43 #: admin/models/domain_alias.py:42 msgid "enabled" msgstr "activat" @@ -803,62 +770,62 @@ msgstr "Linie invalidă: %s" msgid "Domain '%s' does not exist" msgstr "Domeniul '%s' nu există" -#: admin/models/domain.py:27 admin/models/domain_alias.py:34 +#: admin/models/domain.py:26 admin/models/domain_alias.py:34 msgid "name" msgstr "nume" -#: admin/models/domain.py:28 +#: admin/models/domain.py:27 msgid "The domain name" msgstr "Numele domeniului" -#: admin/models/domain.py:38 +#: admin/models/domain.py:39 +msgid "Number of messages this domain can send per day" +msgstr "Numărul de mesaje pe care acest domeniu le poate trimite pe zi" + +#: admin/models/domain.py:44 msgid "Check to activate this domain" msgstr "Bifează pentru a activa domeniul" -#: admin/models/domain.py:43 +#: admin/models/domain.py:49 msgid "Enable DNS checks" msgstr "Activează verificările DNS" -#: admin/models/domain.py:44 +#: admin/models/domain.py:50 msgid "Check to enable DNS checks for this domain" msgstr "Bifează pentru a activa verificările DNS pentru acest domeniu" -#: admin/models/domain.py:51 +#: admin/models/domain.py:57 msgid "Enable DKIM signing" msgstr "Activează semnarea DKIM" -#: admin/models/domain.py:53 +#: admin/models/domain.py:59 msgid "" "If you activate this feature, a DKIM key will be generated for this domain." -msgstr "" -"Dacă activezi această facilitate, o chieie DKIM se va genera pt acest " -"domeniu." +msgstr "Dacă activezi această facilitate, o chieie DKIM se va genera pt acest domeniu." -#: admin/models/domain.py:59 +#: admin/models/domain.py:65 msgid "Key length" msgstr "Mărime cheie" -#: admin/models/domain.py:312 admin/models/domain_alias.py:67 +#: admin/models/domain.py:323 admin/models/domain_alias.py:67 msgid "Invalid line" msgstr "Linie invalidă" -#: admin/models/domain.py:322 +#: admin/models/domain.py:333 msgid "No authorized MX record found for domain {}" msgstr "Nu s-au gasit înregistrări MX autorizate pentru acest domeniu {}" -#: admin/models/domain.py:329 +#: admin/models/domain.py:340 msgid "Invalid quota value for domain '{}'" msgstr "Valuare de cotă invalidă pentru domeniul '{}'" -#: admin/models/domain.py:336 +#: admin/models/domain.py:347 msgid "Invalid default mailbox quota value for domain '{}'" msgstr "Valuare implicită de cotă invalidă pentru domeniul '{}'" -#: admin/models/domain.py:341 +#: admin/models/domain.py:352 msgid "Default mailbox quota cannot be greater than domain quota" -msgstr "" -"Valuarea de cotă implicită a unei cutii poștale nu poate fi mai mare decât " -"cota de domeniu" +msgstr "Valuarea de cotă implicită a unei cutii poștale nu poate fi mai mare decât cota de domeniu" #: admin/models/domain_alias.py:35 msgid "The alias name" @@ -881,60 +848,57 @@ msgstr "Domeniu necunoscut %s" msgid "Mailbox address (without the @domain.tld part)" msgstr "Adresa de email (fără partea @domeniu)" -#: admin/models/mailbox.py:160 +#: admin/models/mailbox.py:166 #, python-format msgid "Failed to retrieve mailbox location (%s)" msgstr "Nu s-a reușit preluarea locației pentru cutia poștală (%s)" -#: admin/models/mailbox.py:253 +#: admin/models/mailbox.py:264 msgid "A quota is required" msgstr "O cotă este necesară" -#: admin/models/mailbox.py:259 +#: admin/models/mailbox.py:270 msgid "Domain quota exceeded" msgstr "Cota pentru domeniu a fost depașită" #: admin/serializers.py:37 msgid "Default quota in MB applied to mailboxes. A value of 0 means no quota." -msgstr "" -"Cota implicită exprimată în MB aplivată la cutiile poștale. O valuare 0 " -"înseamnă fără cotă." +msgstr "Cota implicită exprimată în MB aplivată la cutiile poștale. O valuare 0 înseamnă fără cotă." -#: admin/serializers.py:107 admin/serializers.py:312 admin/serializers.py:410 +#: admin/serializers.py:115 admin/serializers.py:322 admin/serializers.py:424 msgid "Permission denied." msgstr "Permisiune refuzată." -#: admin/serializers.py:158 +#: admin/serializers.py:168 msgid "" "List of administered domains (resellers and domain administrators only)." -msgstr "" -"Lista domenilor administrate (doar reselleri și administratori de domeniu)" +msgstr "Lista domenilor administrate (doar reselleri și administratori de domeniu)" -#: admin/serializers.py:262 +#: admin/serializers.py:272 msgid "Not allowed for this role." msgstr "Ne permis pentru acest rol." -#: admin/serializers.py:274 +#: admin/serializers.py:284 msgid "Must be equal to mailbox full_address" msgstr "Trebuie să fie egal cu mailbox full_address" -#: admin/serializers.py:299 +#: admin/serializers.py:309 msgid "Local domain {} does not exist" msgstr "Domeniu local {} nu există" -#: admin/serializers.py:397 +#: admin/serializers.py:411 msgid "A list of recipient" msgstr "O listă de destinatari" -#: admin/serializers.py:408 +#: admin/serializers.py:422 msgid "Domain not found." msgstr "Domeniu negăsit" -#: admin/serializers.py:457 +#: admin/serializers.py:471 msgid "You don't have access to this domain." msgstr "Nu ai acces la acest domeniu." -#: admin/serializers.py:465 +#: admin/serializers.py:479 msgid "You don't have access to this mailbox." msgstr "Nu ai acces la această cutie postală" @@ -969,14 +933,12 @@ msgstr "Se așteaptă verificările" #: admin/templates/admin/_domain_dnschecks_status.html:26 #: admin/templates/admin/_domain_dnschecks_status.html:34 #: admin/templates/admin/_domain_dnschecks_status.html:42 -#, fuzzy -#| msgid "No DNS records found for %s" msgid "No record found" -msgstr "Nu s-au găsit înregistrări DNS pentru %s" +msgstr "Nu s-a găsit nicio înregistrare" #: admin/templates/admin/_domain_dnschecks_status.html:24 msgid "Waiting for key to be generated" -msgstr "" +msgstr "Așteptarea generării cheii" #: admin/templates/admin/_global_statistics_widget.html:4 msgid "Global statistics" @@ -988,7 +950,7 @@ msgstr "Cantitate" #: admin/templates/admin/_global_statistics_widget.html:14 #: admin/templates/admin/domain_detail.html:37 -#: admin/templates/admin/domain_detail.html:73 +#: admin/templates/admin/domain_detail.html:87 msgid "Domain aliases" msgstr "Aliasuri de domeniu" @@ -1035,27 +997,27 @@ msgstr "Nedefinit" msgid "Phone number" msgstr "Număr telefon" -#: admin/templates/admin/account_detail.html:55 +#: admin/templates/admin/account_detail.html:61 msgid "Administered domains" msgstr "Domenii administrate" -#: admin/templates/admin/account_detail.html:61 +#: admin/templates/admin/account_detail.html:67 msgid "No domain defined." msgstr "Nu există domenii administrate" -#: admin/templates/admin/account_detail.html:75 +#: admin/templates/admin/account_detail.html:81 msgid "Aliases" msgstr "Aliasuri" -#: admin/templates/admin/account_detail.html:81 +#: admin/templates/admin/account_detail.html:87 msgid "No alias defined" msgstr "Ne există alias definit" -#: admin/templates/admin/account_detail.html:87 +#: admin/templates/admin/account_detail.html:93 msgid "Additional sender addresses" msgstr "Adresa adițională a expeditorului" -#: admin/templates/admin/account_detail.html:93 +#: admin/templates/admin/account_detail.html:99 msgid "No sender address defined" msgstr "Nu există o adresă a expeditorului definită" @@ -1084,7 +1046,8 @@ msgid "Address" msgstr "Adresă" #: admin/templates/admin/dnsbl_domain_detail.html:12 -#: admin/templates/admin/domain_detail.html:100 +#: admin/templates/admin/domain_detail.html:114 +#: admin/templates/admin/domains_log_headers.html:6 #: admin/templates/admin/messages_log_headers.html:6 msgid "Status" msgstr "Statut" @@ -1101,6 +1064,28 @@ msgstr "Totul este în regulă, domeniul este nelistat." msgid "No information available for this domain." msgstr "Nu există informații valabile pentru acest domeniu." +#: admin/templates/admin/domain_alarms.html:19 +msgid "Opened alarms for" +msgstr "Alarme deschise pentru" + +#: admin/templates/admin/domain_alarms.html:25 +#: admin/templates/admin/domains_log_headers.html:3 +#: admin/templates/admin/messages_log_headers.html:3 +msgid "Date" +msgstr "Data" + +#: admin/templates/admin/domain_alarms.html:26 +msgid "Message" +msgstr "Mesaj" + +#: admin/templates/admin/domain_alarms.html:27 +msgid "Mailbox" +msgstr "Căsuța poștală" + +#: admin/templates/admin/domain_alarms.html:40 +msgid "No opened alarm" +msgstr "Nicio alarmă deschisă" + #: admin/templates/admin/domain_detail.html:29 msgid "Creation date" msgstr "Dată de creare" @@ -1124,6 +1109,7 @@ msgid "MB" msgstr "MB" #: admin/templates/admin/domain_detail.html:54 +#: admin/templates/admin/domain_detail.html:73 msgid "Usage" msgstr "Utilizare" @@ -1138,36 +1124,45 @@ msgstr "utilizat" msgid "allocated" msgstr "alocat" -#: admin/templates/admin/domain_detail.html:92 +#: admin/templates/admin/domain_detail.html:70 +msgid "per day" +msgstr "pe zi" + +#: admin/templates/admin/domain_detail.html:76 +msgctxt "message count" +msgid "used" +msgstr "folosit" + +#: admin/templates/admin/domain_detail.html:106 msgid "DNS" msgstr "DNS" -#: admin/templates/admin/domain_detail.html:107 +#: admin/templates/admin/domain_detail.html:121 msgid "DKIM key" msgstr "Cheie DKIM" -#: admin/templates/admin/domain_detail.html:111 +#: admin/templates/admin/domain_detail.html:125 msgid "Show key" msgstr "Arată cheia" -#: admin/templates/admin/domain_detail.html:113 +#: admin/templates/admin/domain_detail.html:127 msgid "Generate new key" -msgstr "" +msgstr "Generează o cheie nouă" -#: admin/templates/admin/domain_detail.html:115 +#: admin/templates/admin/domain_detail.html:129 msgid "Not generated" msgstr "Negenerat" -#: admin/templates/admin/domain_detail.html:122 +#: admin/templates/admin/domain_detail.html:136 msgid "Administrators" msgstr "Administratori" -#: admin/templates/admin/domain_detail.html:134 -#: admin/templatetags/admin_tags.py:265 +#: admin/templates/admin/domain_detail.html:148 +#: admin/templatetags/admin_tags.py:279 msgid "Remove this permission" msgstr "Elimină această permisie" -#: admin/templates/admin/domain_detail.html:139 +#: admin/templates/admin/domain_detail.html:153 msgid "No domain administrator defined yet." msgstr "Nu există un domeniu de administrator definit incă" @@ -1194,6 +1189,20 @@ msgstr "Nu puteți crea un nou administrator de domeniu" msgid "Add" msgstr "Adaugă" +#: admin/templates/admin/domains_log_headers.html:2 +msgid "Queue ID" +msgstr "Queue ID" + +#: admin/templates/admin/domains_log_headers.html:4 +#: admin/templates/admin/messages_log_headers.html:4 +msgid "From" +msgstr "De la" + +#: admin/templates/admin/domains_log_headers.html:5 +#: admin/templates/admin/messages_log_headers.html:5 +msgid "To" +msgstr "Către" + #: admin/templates/admin/domains_quota_headers.html:3 #: admin/templates/admin/identities_quota_headers.html:4 msgid "Limit" @@ -1246,31 +1255,17 @@ msgid "" "verify recipients

The first element of each line is " "mandatory and must be equal to one of the previous values.

You can " "use a different character as separator.

" -msgstr "" -"Furnizați un fișier CSV unde liniile respectă unul dintre următoarele " -"formate
    :
  • domain; name; quota; default mailbox quota; enabled
  • domainalias; name; targeted domain; enabled
  • relaydomain; name; target host; target port; service; enabled; " -"verify recipients
Primul element al fiecărei linii este " -"obligatoriu și trebuie să fie egal cu una dintre valorile anterioare. Puteți " -"utiliza un caracter diferit ca separator." +msgstr "Furnizați un fișier CSV unde liniile respectă unul dintre următoarele formate
    :
  • domain; name; quota; default mailbox quota; enabled
  • domainalias; name; targeted domain; enabled
  • relaydomain; name; target host; target port; service; enabled; verify recipients
Primul element al fiecărei linii este obligatoriu și trebuie să fie egal cu una dintre valorile anterioare. Puteți utiliza un caracter diferit ca separator." #: admin/templates/admin/import_identities_form.html:6 msgid "" "Provide a CSV file where lines respect one of the following formats:
    " -"
  • account; loginname; password; first name; last name; enabled; group; " -"address; quota; [, domain, ...]
  • alias; address; enabled; " +"
  • account; loginname; password; first name; last name; enabled; group;" +" address; quota; [, domain, ...]
  • alias; address; enabled; " "recipient; recipient; ...

The first element of each line " -"is mandatory and must be equal to one of the previous values.

You can " -"use a different character as separator.

" -msgstr "" -"Furnizați un fișier CSV unde liniile respectă unul dintre următoarele " -"formate:
  • account; loginname; password; first name; last name; " -"enabled; group; address; quota; [, domain, ...]
  • alias; " -"address; enabled; recipient; recipient; ...

Primul element " -"al fiecărei linii este obligatoriu și trebuie să fie egal cu una dintre " -"valorile anterioare.

Puteți utiliza un caracter diferit ca separator." -"

" +"is mandatory and must be equal to one of the previous values.

You can" +" use a different character as separator.

" +msgstr "Furnizați un fișier CSV unde liniile respectă unul dintre următoarele formate:
  • account; loginname; password; first name; last name; enabled; group; address; quota; [, domain, ...]
  • alias; address; enabled; recipient; recipient; ...

Primul element al fiecărei linii este obligatoriu și trebuie să fie egal cu una dintre valorile anterioare.

Puteți utiliza un caracter diferit ca separator.

" #: admin/templates/admin/importform.html:6 msgid "Help" @@ -1294,19 +1289,7 @@ msgstr "Folosește valuarea implicită a domeniului" #: admin/templates/admin/messages_log_headers.html:2 msgid "ID" -msgstr "" - -#: admin/templates/admin/messages_log_headers.html:3 -msgid "Date" -msgstr "" - -#: admin/templates/admin/messages_log_headers.html:4 -msgid "From" -msgstr "" - -#: admin/templates/admin/messages_log_headers.html:5 -msgid "To" -msgstr "" +msgstr "ID" #: admin/templates/admin/mx_domain_detail.html:11 msgid "Updated" @@ -1314,8 +1297,7 @@ msgstr "Actualizat" #: admin/templates/admin/mx_domain_detail.html:23 msgid "This IP does not match any of the valid MXs defined in parameters" -msgstr "" -"Acest IP nu se potrivește cu nicio înregistrare MX definită în parametrii" +msgstr "Acest IP nu se potrivește cu nicio înregistrare MX definită în parametrii" #: admin/templates/admin/mx_domain_detail.html:36 msgid "No MX record found for this domain." @@ -1326,25 +1308,19 @@ msgstr "Nu există înregistrări MX pentru acest domeniu." msgid "" "Modoboa detected that domain %(domain)s is listed by the following DNSBL " "providers:" -msgstr "" -"Modoboa a detectat ca domeniul %(domain)s este listat sub DNSBL la urmatorii " -"furnizori DNSBL:" +msgstr "Modoboa a detectat ca domeniul %(domain)s este listat sub DNSBL la urmatorii furnizori DNSBL:" #: admin/templates/admin/notifications/domain_in_dnsbl.html:11 msgid "" "The domain's reputation will be affected and there is a chance that emails " "coming from it are considered as spam. You should contact those providers " "and ask them to unlist detected IP address(es)." -msgstr "" -"Reputația domeniului va fi afectată și există șansa ca e-mailurile provenite " -"de la acestă adresă să fie considerate spam. Ar trebui să contactați acești " -"furnizori și să îi solicitați să elimine adresele(sau adresa) IP detectate." +msgstr "Reputația domeniului va fi afectată și există șansa ca e-mailurile provenite de la acestă adresă să fie considerate spam. Ar trebui să contactați acești furnizori și să îi solicitați să elimine adresele(sau adresa) IP detectate." #: admin/templates/admin/notifications/domain_invalid_mx.html:3 #, python-format msgid "Modoboa detected that domain %(domain)s has no valid MX record:" -msgstr "" -"Modoboa a detectat ca domeniul %(domain)s nu are înregistrări MX valide: " +msgstr "Modoboa a detectat ca domeniul %(domain)s nu are înregistrări MX valide: " #: admin/templates/admin/searchform.html:6 msgid "Search" @@ -1358,49 +1334,57 @@ msgstr "activat_m" msgid "enabled_f" msgstr "activat_f" -#: admin/templatetags/admin_tags.py:45 +#: admin/templatetags/admin_tags.py:47 msgid "List domains" msgstr "Listă domenii" -#: admin/templatetags/admin_tags.py:50 admin/templatetags/admin_tags.py:105 +#: admin/templatetags/admin_tags.py:52 admin/templatetags/admin_tags.py:112 msgid "List quotas" msgstr "Listă cote" -#: admin/templatetags/admin_tags.py:62 admin/templatetags/admin_tags.py:110 +#: admin/templatetags/admin_tags.py:57 +msgid "Message logs" +msgstr "Jurnalele de mesaje" + +#: admin/templatetags/admin_tags.py:69 admin/templatetags/admin_tags.py:117 #: admin/views/import_.py:85 admin/views/import_.py:107 msgid "Import" msgstr "Import" -#: admin/templatetags/admin_tags.py:68 admin/templatetags/admin_tags.py:116 +#: admin/templatetags/admin_tags.py:75 admin/templatetags/admin_tags.py:123 #: admin/views/export.py:39 admin/views/export.py:67 msgid "Export" msgstr "Export" -#: admin/templatetags/admin_tags.py:100 +#: admin/templatetags/admin_tags.py:107 msgid "List identities" msgstr "Listare identități" -#: admin/templatetags/admin_tags.py:135 +#: admin/templatetags/admin_tags.py:142 msgid "View the domain's identities" msgstr "Afișare identități domeniului" -#: admin/templatetags/admin_tags.py:141 admin/templatetags/admin_tags.py:184 -#: admin/templatetags/admin_tags.py:197 +#: admin/templatetags/admin_tags.py:149 +msgid "View domain's alarms" +msgstr "Vezi alarmele domeniului" + +#: admin/templatetags/admin_tags.py:155 admin/templatetags/admin_tags.py:198 +#: admin/templatetags/admin_tags.py:211 msgid "Edit {}" msgstr "Editează {}" -#: admin/templatetags/admin_tags.py:151 admin/templatetags/admin_tags.py:188 -#: admin/templatetags/admin_tags.py:202 +#: admin/templatetags/admin_tags.py:165 admin/templatetags/admin_tags.py:202 +#: admin/templatetags/admin_tags.py:216 #, python-format msgid "Delete %s?" msgstr "Șterge %s?" -#: admin/tests/test_mx.py:130 +#: admin/tests/test_mx.py:155 #, python-format msgid "No MX record for %s" -msgstr "Nu există înregidtrări MX pentru %s" +msgstr "Nu există înregistrări MX pentru %s" -#: admin/tests/test_mx.py:142 admin/tests/test_mx.py:145 +#: admin/tests/test_mx.py:167 admin/tests/test_mx.py:170 #, python-format msgid "Invalid IP address format for %(domain)s; %(addr)s" msgstr "Format invalid de IP pentru %(domain)s; %(addr)s " @@ -1440,11 +1424,11 @@ msgstr "Înregistrări MX ale {}" msgid "DNSBL summary for {}" msgstr "Sumar DNSBL pentru {}" -#: admin/views/domain.py:202 +#: admin/views/domain.py:244 msgid "You can't delete your own domain" msgstr "Nu poți să îți ștergi propriul domeniu" -#: admin/views/domain.py:205 +#: admin/views/domain.py:247 msgid "Domain deleted" msgid_plural "Domains deleted" msgstr[0] "Domeniu șters" @@ -1492,39 +1476,3 @@ msgstr "Importă identități" #: admin/views/user.py:36 msgid "Forward updated" msgstr "Redirecționare actualizată" - -#~ msgid "File name" -#~ msgstr "Nume fișier" - -#, fuzzy -#~| msgid "No DNS records found for %s" -#~ msgid "No {type} record found for MX {mx}" -#~ msgstr "Nu s-au găsit înregistrări DNS pentru %s" - -#, fuzzy -#~| msgid "No MX record found for this domain." -#~ msgid "No A record found for MX %(domain)s" -#~ msgstr "Nu există înregistrări MX pentru acest domeniu." - -#, fuzzy -#~| msgid "No MX record found for this domain." -#~ msgid "No AAAA record found for MX %(domain)s" -#~ msgstr "Nu există înregistrări MX pentru acest domeniu." - -#~ msgid "Quota in MB shared between mailboxes. A value of 0 means no quota." -#~ msgstr "" -#~ "Cota în MB impărțită între cutiile poștale. O valuare 0 înseamnă fără " -#~ "cotă." - -#, fuzzy -#~| msgid "No DNS records found for %s" -#~ msgid "No DNS records found without MX for %s" -#~ msgstr "Nu s-au găsit înregistrări DNS pentru %s" - -#, fuzzy -#~| msgid "No DNS records found for %s" -#~ msgid "No DNS records found without MX for %(domain)s" -#~ msgstr "Nu s-au găsit înregistrări DNS pentru %s" - -#~ msgid "Unable to lookup ip addresses for %(domain)s; %(error)s" -#~ msgstr "Nu s-a reușit căutarea adreselor IP pentru %(domain)s;%(error)s" diff --git a/modoboa/core/constants.py b/modoboa/core/constants.py index 52623b465..9275dceff 100644 --- a/modoboa/core/constants.py +++ b/modoboa/core/constants.py @@ -26,20 +26,20 @@ LANGUAGES = ( ("cs", u"čeština"), ("de", u"deutsch"), ("en", u"english"), - ("el_GR", u"ελληνικά"), + ("el", u"ελληνικά"), ("es", u"español"), ("fr", u"français"), ("it", u"italiano"), - ("ja_JP", u"日本の"), + ("ja", u"日本の"), ("nl", u"nederlands"), - ("pt_PT", u"português"), - ("pt_BR", u"português (BR)"), - ("pl_PL", u"polski"), - ("ro_RO", u"Română"), + ("pt", u"português"), + ("pt-br", u"português (BR)"), + ("pl", u"polski"), + ("ro", u"Română"), ("ru", u"русский"), ("sv", u"svenska"), - ("tr_TR", u"türk"), - ("zh_TW", u"中文(台灣)"), + ("tr", u"türk"), + ("zh-hant", u"中文(台灣)"), ) diff --git a/modoboa/core/forms.py b/modoboa/core/forms.py index f06118530..b5d107658 100644 --- a/modoboa/core/forms.py +++ b/modoboa/core/forms.py @@ -9,10 +9,10 @@ from django.contrib.auth import ( from django.db.models import Q from django.utils.translation import ugettext as _, ugettext_lazy -from braces.forms import UserKwargModelFormMixin import django_otp from modoboa.core.models import User +from modoboa.lib.form_utils import UserKwargModelFormMixin from modoboa.parameters import tools as param_tools diff --git a/modoboa/core/views/auth.py b/modoboa/core/views/auth.py index f23b41927..892ec1d2d 100644 --- a/modoboa/core/views/auth.py +++ b/modoboa/core/views/auth.py @@ -4,7 +4,8 @@ import logging import oath -from django.http import HttpResponse, HttpResponseRedirect, Http404 +from django.http import ( + HttpResponse, HttpResponseRedirect, Http404, JsonResponse) from django.template.loader import render_to_string from django.urls import reverse from django.utils import translation @@ -17,15 +18,15 @@ from django.views.decorators.cache import never_cache from django.contrib.auth import ( authenticate, login, logout, views as auth_views ) +from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.tokens import default_token_generator -from braces.views import ( - JSONResponseMixin, LoginRequiredMixin, UserFormKwargsMixin) import django_otp from modoboa.core import forms from modoboa.core.password_hashers import get_password_hasher from modoboa.lib import cryptutils +from modoboa.lib.views import UserFormKwargsMixin from modoboa.parameters import tools as param_tools from .. import models @@ -204,7 +205,7 @@ class VerifySMSCodeView(generic.FormView): return HttpResponseRedirect(url) -class ResendSMSCodeView(JSONResponseMixin, generic.View): +class ResendSMSCodeView(generic.View): """A view to resend validation code.""" def get(self, request, *args, **kwargs): @@ -230,7 +231,7 @@ class ResendSMSCodeView(JSONResponseMixin, generic.View): if not backend.send(text, [user.phone_number]): raise Http404 self.request.session["totp_secret"] = secret - return self.render_json_response({"status": "ok"}) + return JsonResponse({"status": "ok"}) class TwoFactorCodeVerifyView(LoginRequiredMixin, diff --git a/modoboa/ldapsync/locale/it/LC_MESSAGES/django.po b/modoboa/ldapsync/locale/it/LC_MESSAGES/django.po index c26d6d26b..20687ce02 100644 --- a/modoboa/ldapsync/locale/it/LC_MESSAGES/django.po +++ b/modoboa/ldapsync/locale/it/LC_MESSAGES/django.po @@ -2,34 +2,37 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# +# Translators: +# Alessandro Fanna , 2021 +# #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-05-06 13:15+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" +"PO-Revision-Date: 2020-05-11 18:45+0000\n" +"Last-Translator: Alessandro Fanna , 2021\n" +"Language-Team: Italian (https://www.transifex.com/tonio/teams/13749/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ldapsync/lib.py:84 msgid "Failed to create LDAP account: {}" -msgstr "" +msgstr "Impossibile creare un account LDAP: {}" #: ldapsync/lib.py:124 msgid "Failed to update LDAP account: {}" -msgstr "" +msgstr "Impossibile aggiornare l'account LDAP: {}" #: ldapsync/lib.py:138 msgid "Failed to delete LDAP account: {}" -msgstr "" +msgstr "Impossibile eliminare l'account LDAP: {}" #: ldapsync/lib.py:149 msgid "Failed to disable LDAP account: {}" -msgstr "" +msgstr "Impossibile disabilitare l'account LDAP: {}" diff --git a/modoboa/ldapsync/locale/ro_RO/LC_MESSAGES/django.po b/modoboa/ldapsync/locale/ro_RO/LC_MESSAGES/django.po index 2fe38569f..1ccc891da 100644 --- a/modoboa/ldapsync/locale/ro_RO/LC_MESSAGES/django.po +++ b/modoboa/ldapsync/locale/ro_RO/LC_MESSAGES/django.po @@ -2,33 +2,37 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# +# Translators: +# Simona Iacob , 2021 +# #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-05-06 13:15+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" +"PO-Revision-Date: 2020-05-11 18:45+0000\n" +"Last-Translator: Simona Iacob , 2021\n" +"Language-Team: Romanian (Romania) (https://www.transifex.com/tonio/teams/13749/ro_RO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ro_RO\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" #: ldapsync/lib.py:84 msgid "Failed to create LDAP account: {}" -msgstr "" +msgstr "Nu s-a reușit crearea unui cont LDAP: {}" #: ldapsync/lib.py:124 msgid "Failed to update LDAP account: {}" -msgstr "" +msgstr "Nu s-a reușit actualizarea contului LDAP: {}" #: ldapsync/lib.py:138 msgid "Failed to delete LDAP account: {}" -msgstr "" +msgstr "Nu s-a reușit ștergerea contului LDAP: {}" #: ldapsync/lib.py:149 msgid "Failed to disable LDAP account: {}" -msgstr "" +msgstr "Nu s-a reușit dezactivarea contului LDAP: {}" diff --git a/modoboa/ldapsync/locale/uk/LC_MESSAGES/django.po b/modoboa/ldapsync/locale/uk/LC_MESSAGES/django.po new file mode 100644 index 000000000..786253e84 --- /dev/null +++ b/modoboa/ldapsync/locale/uk/LC_MESSAGES/django.po @@ -0,0 +1,38 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Taras Havryliuk , 2021 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-05-06 13:15+0200\n" +"PO-Revision-Date: 2020-05-11 18:45+0000\n" +"Last-Translator: Taras Havryliuk , 2021\n" +"Language-Team: Ukrainian (https://www.transifex.com/tonio/teams/13749/uk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uk\n" +"Plural-Forms: 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);\n" + +#: ldapsync/lib.py:84 +msgid "Failed to create LDAP account: {}" +msgstr "Не вдалося створити обліковий запис LDAP: {}" + +#: ldapsync/lib.py:124 +msgid "Failed to update LDAP account: {}" +msgstr "Не вдалося оновити обліковий запис LDAP: {} " + +#: ldapsync/lib.py:138 +msgid "Failed to delete LDAP account: {}" +msgstr "Не вдалося видалити обліковий запис LDAP: {} " + +#: ldapsync/lib.py:149 +msgid "Failed to disable LDAP account: {}" +msgstr "Не вдалося відключити обліковий запис LDAP: {} " diff --git a/modoboa/lib/form_utils.py b/modoboa/lib/form_utils.py index c98036884..771840bfe 100644 --- a/modoboa/lib/form_utils.py +++ b/modoboa/lib/form_utils.py @@ -360,6 +360,14 @@ class TabForms(object): context["tabs"].active_id = active_tab_id return render(self.request, self.template_name, context) + +class UserKwargModelFormMixin: + """Simple form mixin to add support for user kwargs in constructor.""" + + def __init__(self, *args, **kwargs): + self.user = kwargs.pop("user") + super().__init__(*args, **kwargs) + # # Custom fields from here # diff --git a/modoboa/lib/views.py b/modoboa/lib/views.py new file mode 100644 index 000000000..352b40593 --- /dev/null +++ b/modoboa/lib/views.py @@ -0,0 +1,10 @@ +"""Views utilities.""" + + +class UserFormKwargsMixin: + """A mixin to automatically add a user arg to form instantiation.""" + + def get_form_kwargs(self): + kwargs = super().get_form_kwargs() + kwargs.update({"user": self.request.user}) + return kwargs diff --git a/modoboa/locale/it/LC_MESSAGES/djangojs.po b/modoboa/locale/it/LC_MESSAGES/djangojs.po index 5d5f95aab..62fb69f0c 100644 --- a/modoboa/locale/it/LC_MESSAGES/djangojs.po +++ b/modoboa/locale/it/LC_MESSAGES/djangojs.po @@ -1,18 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. # # Translators: -# Antonino Ioppolo , 2017 -# Rocco , 2015 +# Antoine Nguyen , 2020 +# Alessandro Fanna , 2021 +# +#, fuzzy msgid "" msgstr "" -"Project-Id-Version: Modoboa\n" +"Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-03-09 16:48+0100\n" -"PO-Revision-Date: 2020-03-09 15:49+0000\n" -"Last-Translator: Antoine Nguyen \n" -"Language-Team: Italian (http://www.transifex.com/tonio/modoboa/language/it/)\n" +"POT-Creation-Date: 2020-11-05 15:47+0100\n" +"PO-Revision-Date: 2020-05-11 18:45+0000\n" +"Last-Translator: Alessandro Fanna , 2021\n" +"Language-Team: Italian (https://www.transifex.com/tonio/teams/13749/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -25,7 +28,7 @@ msgstr "'" #: bower_components/swagger-ui/dist/swagger-ui-bundle.js:133 msgid "operation" -msgstr "" +msgstr "operazione" #: core/static/core/js/settings.js:16 msgid "No more log entry to show" @@ -39,7 +42,7 @@ msgstr "Attenzione" msgid "Cancel" msgstr "Elimina" -#: static/js/global.js:342 +#: static/js/global.js:347 msgid "Internal error" msgstr "Errore interno" @@ -54,3 +57,11 @@ msgstr "Ricerca" #: static/js/searchbar.js:28 msgid "Search..." msgstr "Ricerca ..." + +#: static/js/twocols_nav.js:170 +msgid "Are you sure?" +msgstr "Sei sicuro?" + +#: static/js/twocols_nav.js:171 +msgid "This will invalidate your registered application." +msgstr "Questo invaliderà la tua domanda di registrazione." diff --git a/modoboa/locale/ro_RO/LC_MESSAGES/django.po b/modoboa/locale/ro_RO/LC_MESSAGES/django.po index 7960ecf64..cea8e4e1a 100644 --- a/modoboa/locale/ro_RO/LC_MESSAGES/django.po +++ b/modoboa/locale/ro_RO/LC_MESSAGES/django.po @@ -1,18 +1,20 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. # # Translators: -# Andrei-Ilie Olteanu , 2018 -# Crc Darkplague , 2019 +# Simona Iacob , 2021 +# +#, fuzzy msgid "" msgstr "" -"Project-Id-Version: Modoboa\n" +"Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-06 13:15+0200\n" -"PO-Revision-Date: 2020-05-06 11:16+0000\n" -"Last-Translator: Antoine Nguyen \n" -"Language-Team: Romanian (Romania) (http://www.transifex.com/tonio/modoboa/language/ro_RO/)\n" +"POT-Creation-Date: 2020-11-05 15:36+0100\n" +"PO-Revision-Date: 2020-10-02 13:39+0000\n" +"Last-Translator: Simona Iacob , 2021\n" +"Language-Team: Romanian (Romania) (https://www.transifex.com/tonio/teams/13749/ro_RO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -21,7 +23,7 @@ msgstr "" #: core/app_settings.py:26 msgid "User profile" -msgstr "Profil utilizator" +msgstr "Profilul utilizatorului" #: core/app_settings.py:39 msgid "Authentication" @@ -29,7 +31,7 @@ msgstr "Autentificare" #: core/app_settings.py:42 msgid "Authentication type" -msgstr "Tip autentificare" +msgstr "Tipul de autentificare" #: core/app_settings.py:43 msgid "Local" @@ -37,33 +39,37 @@ msgstr "Local" #: core/app_settings.py:46 msgid "The backend used for authentication" -msgstr "Tehnologia backend folosită pentru autentificare " +msgstr "Backend-ul utilizat pentru autentificare" #: core/app_settings.py:51 msgid "Default password scheme" -msgstr "Schema pentru parola implicită" +msgstr "Schema implicită de parole" #: core/app_settings.py:56 msgid "Scheme used to crypt mailbox passwords" -msgstr "Schema de criptare pentru parole" +msgstr "Schema utilizată pentru a cripta parolele căsuțelor poștale" #: core/app_settings.py:60 msgid "Rounds" -msgstr "Iterații" +msgstr "Rânduri" #: core/app_settings.py:63 msgid "" "Number of rounds to use (only used by sha256crypt and sha512crypt). Must be " "between 1000 and 999999999, inclusive." -msgstr "Număr de iterații folosite (setare folosită doar de sha256crypt și sha512crypt) Trebuie să fie un număr cuprins între 1000 și 999999999 inclusiv." +msgstr "" +"Numărul de runde de utilizat (utilizat numai de sha256crypt și sha512crypt)." +" Trebuie să fie cuprins între 1000 și 99999999999, inclusiv." #: core/app_settings.py:69 msgid "Update password scheme at login" -msgstr "" +msgstr "Actualizarea schemei de parole la autentificare" #: core/app_settings.py:72 msgid "Update user password at login to use the default password scheme" -msgstr "Modifică parola utilizatorului la autentificare pentru a utiliza noua schemă de parolă" +msgstr "" +"Actualizarea parolei utilizatorului la conectare pentru a utiliza schema de " +"parole implicită" #: core/app_settings.py:77 msgid "Default password" @@ -71,19 +77,19 @@ msgstr "Parola implicită" #: core/app_settings.py:80 msgid "Default password for automatically created accounts." -msgstr "Parola implicită setată pentru conturile create automat." +msgstr "Parola implicită pentru conturile create automat." #: core/app_settings.py:84 msgid "Random password length" -msgstr "Mărime parolă aleatorie" +msgstr "Lungime aleatorie a parolei" #: core/app_settings.py:88 msgid "Length of randomly generated passwords." -msgstr "Mărimea parolelor generate aleator." +msgstr "Lungimea parolelor generate aleatoriu." #: core/app_settings.py:92 msgid "Update password service URL" -msgstr "" +msgstr "Actualizarea URL-ului serviciului de parolă" #: core/app_settings.py:96 msgid "" @@ -91,30 +97,35 @@ msgid "" "password. It applies only to non local users, ie. those automatically " "created after a successful external authentication (LDAP, SMTP)." msgstr "" +"URL-ul unei pagini externe unde utilizatorii își vor putea actualiza parola." +" Se aplică numai utilizatorilor care nu sunt locali, adică cei creați " +"automat după o autentificare externă reușită (LDAP, SMTP)." #: core/app_settings.py:104 msgid "Password recovery announcement" -msgstr "" +msgstr "Anunț de recuperare a parolei" #: core/app_settings.py:109 msgid "A temporary message that will be displayed on the reset password page." -msgstr "" +msgstr "Un mesaj temporar care va fi afișat pe pagina de resetare a parolei." #: core/app_settings.py:115 msgid "Enable password recovery by SMS" -msgstr "" +msgstr "Activați recuperarea parolei prin SMS" #: core/app_settings.py:118 msgid "Enable password recovery by SMS for users who filled a phone number." msgstr "" +"Activați recuperarea parolei prin SMS pentru utilizatorii care au completat " +"un număr de telefon." #: core/app_settings.py:124 msgid "SMS provider" -msgstr "" +msgstr "Furnizor de SMS" #: core/app_settings.py:127 msgid "Choose a provider to send password recovery SMS" -msgstr "" +msgstr "Alegeți un furnizor pentru a trimite SMS de recuperare a parolei" #: core/app_settings.py:133 msgid "LDAP settings" @@ -122,44 +133,46 @@ msgstr "Setări LDAP" #: core/app_settings.py:136 msgid "Server address" -msgstr "Adresă server" +msgstr "Adresa serverului" #: core/app_settings.py:139 msgid "The IP address or the DNS name of the LDAP server" -msgstr "Adresa IP sau adresa DNS a serverului LDAP" +msgstr "Adresa IP sau numele DNS al serverului LDAP" #: core/app_settings.py:143 msgid "Server port" -msgstr "Port server" +msgstr "Portul serverului" #: core/app_settings.py:145 msgid "The TCP port number used by the LDAP server" -msgstr "Numărul de port TCP folosit de serverul LDAP" +msgstr "Numărul portului TCP utilizat de serverul LDAP" #: core/app_settings.py:149 msgid "Enable secondary server (fallback)" -msgstr "" +msgstr "Activați serverul secundar (fallback)" #: core/app_settings.py:152 msgid "" "Enable a secondary LDAP server which will be used if the primary one fails" msgstr "" +"Activați un server LDAP secundar care va fi utilizat în cazul în care " +"serverul principal eșuează" #: core/app_settings.py:158 msgid "Secondary server address" -msgstr "" +msgstr "Adresa serverului secundar" #: core/app_settings.py:161 msgid "The IP address or the DNS name of the seondary LDAP server" -msgstr "" +msgstr "Adresa IP sau numele DNS al serverului LDAP secundar" #: core/app_settings.py:165 msgid "Secondary server port" -msgstr "" +msgstr "Portul serverului secundar" #: core/app_settings.py:168 msgid "The TCP port number used by the LDAP secondary server" -msgstr "" +msgstr "Numărul portului TCP utilizat de serverul secundar LDAP" #: core/app_settings.py:172 msgid "Use a secured connection" @@ -167,7 +180,8 @@ msgstr "Folosește o conexiune securizată" #: core/app_settings.py:176 msgid "Use an SSL/STARTTLS connection to access the LDAP server" -msgstr "Folosește o conexiune de tip SSL/STARTTLS pentru a accesa serverul LDAP" +msgstr "" +"Folosește o conexiune de tip SSL/STARTTLS pentru a accesa serverul LDAP" #: core/app_settings.py:180 msgid "Active Directory" @@ -185,7 +199,9 @@ msgstr "Grupuri administrator" msgid "" "Members of those LDAP Posix groups will be created as domain administrators." " Use ';' characters to separate groups." -msgstr "Membrii acelor grupuri LDAP Posix vor fi create ca administratori de domeniu. Folosește caracterul ';' pentru a separa grupurile." +msgstr "" +"Membrii acelor grupuri LDAP Posix vor fi create ca administratori de " +"domeniu. Folosește caracterul ';' pentru a separa grupurile." #: core/app_settings.py:197 msgid "Group type" @@ -197,15 +213,15 @@ msgstr "Tipul grupului LDAP pe care îl utilizați cu directorul selectat." #: core/app_settings.py:206 msgid "Groups search base" -msgstr "Baza pentru căutare grupuri" +msgstr "Baza de căutare a grupurilor" #: core/app_settings.py:209 msgid "The distinguished name of the search base used to find groups" -msgstr "Numele ales al bazei de căutare utilizat pentru a găsi grupuri" +msgstr "Numele distinct al bazei de căutare utilizate pentru a găsi grupuri" #: core/app_settings.py:215 msgid "Password attribute" -msgstr "Atributul parolă" +msgstr "Atributul parolei" #: core/app_settings.py:217 msgid "The attribute used to store user passwords" @@ -213,7 +229,7 @@ msgstr "Atributul folosit pentru a stoca parola utilizatorului" #: core/app_settings.py:222 msgid "LDAP authentication settings" -msgstr "" +msgstr "Setări de autentificare LDAP" #: core/app_settings.py:225 msgid "Authentication method" @@ -239,23 +255,27 @@ msgstr "Atribuie DN" msgid "" "The distinguished name to use when binding to the LDAP server. Leave empty " "for an anonymous bind" -msgstr "Numele ales folosit la atribuirea cu servarul LDAP. Câpul necompletat se foloseste în cazul atribuirii anonime" +msgstr "" +"Numele distins care trebuie utilizat la conectarea la serverul LDAP. Se lasă" +" gol pentru o legătură anonimă." #: core/app_settings.py:243 core/app_settings.py:297 msgid "Bind password" -msgstr "Parola de atribuire" +msgstr "Conectați parola" #: core/app_settings.py:246 core/app_settings.py:300 msgid "The password to use when binding to the LDAP server (with 'Bind DN')" -msgstr "Parola folosită la momentul atribuiri cu servarul LDAP (vezi 'Atribuie DB')" +msgstr "" +"Parola care trebuie utilizată la conectarea la serverul LDAP (with 'Bind " +"DN')" #: core/app_settings.py:254 core/app_settings.py:346 msgid "Users search base" -msgstr "Căutare bază de utilizatori" +msgstr "Baza de căutare a utilizatorilor" #: core/app_settings.py:257 core/app_settings.py:349 msgid "The distinguished name of the search base used to find users" -msgstr "Numele ales al bazei de căutare utilizat pentru a găsi utilizatori" +msgstr "Numele distinct al bazei de căutare utilizate pentru a găsi useri" #: core/app_settings.py:263 core/app_settings.py:355 msgid "Search filter" @@ -265,45 +285,53 @@ msgstr "Filtru de căutare" msgid "" "An optional filter string (e.g. '(objectClass=person)'). In order to be " "valid, it must be enclosed in parentheses." -msgstr "Un filtru opțional (de ex. '(ObjectClass = persoană)'). Pentru a fi valid, trebuie să fie închis în paranteze." +msgstr "" +"Un filtru opțional (e.g. '(objectClass=person)'). Pentru a fi valid, trebuie" +" să fie închis în paranteze." #: core/app_settings.py:273 msgid "User DN template" -msgstr "Templateul DN pt utilizator" +msgstr "Șablon DN utilizator" #: core/app_settings.py:276 #, python-format msgid "" "The template used to construct a user's DN. It should contain one " "placeholder (ie. %(user)s)" -msgstr "Templateul folosit pentru a construi un utilizator DN. Ar trebui să conțină un substituent (de ex. %(user)s)" +msgstr "" +" Șablonul utilizat pentru a construi DN-ul unui utilizator. Acesta trebuie " +"să conțină un spațiu rezervat (ie. %(user)s)" #: core/app_settings.py:284 msgid "LDAP synchronization settings" -msgstr "" +msgstr "Setări de sincronizare LDAP" #: core/app_settings.py:308 msgid "Enable export to LDAP" -msgstr "" +msgstr "Activați exportul către LDAP" #: core/app_settings.py:311 msgid "" "Enable automatic synchronization between local database and LDAP directory" msgstr "" +"Activați sincronizarea automată între baza de date locală și directorul LDAP" #: core/app_settings.py:317 msgid "Delete remote LDAP account when local account is deleted" msgstr "" +"Ștergerea contului LDAP la distanță atunci când contul local este șters" #: core/app_settings.py:321 msgid "" "Delete remote LDAP account when local account is deleted, otherwise it will " "be disabled." msgstr "" +"Ștergeți contul LDAP la distanță atunci când contul local este șters, altfel" +" acesta va fi dezactivat." #: core/app_settings.py:327 msgid "Account DN template" -msgstr "" +msgstr "Șablon de cont DN" #: core/app_settings.py:330 #, python-format @@ -311,39 +339,43 @@ msgid "" "The template used to construct an account's DN. It should contain one " "placeholder (ie. %(user)s)" msgstr "" +" Șablonul utilizat pentru a construi DN-ul unui cont. Acesta trebuie să " +"conțină un spațiu rezervat (ie. %(user)s)" #: core/app_settings.py:337 msgid "Enable import from LDAP" -msgstr "" +msgstr "Activați importul din LDAP" #: core/app_settings.py:340 msgid "Enable account synchronization from LDAP directory to local database" msgstr "" +"Activați sincronizarea conturilor din directorul LDAP în baza de date locală" #: core/app_settings.py:365 msgid "Username attribute" -msgstr "" +msgstr "Atributul nume de utilizator" #: core/app_settings.py:368 msgid "The name of the LDAP attribute where the username can be found." -msgstr "" +msgstr "Numele atributului LDAP în care poate fi găsit numele de utilizator." #: core/app_settings.py:373 msgid "Enable Dovecot LDAP sync" -msgstr "" +msgstr "Activați sincronizarea Dovecot LDAP" #: core/app_settings.py:376 msgid "LDAP authentication settings will be applied to Dovecot configuration." msgstr "" +"Setările de autentificare LDAP vor fi aplicate la configurația Dovecot." #: core/app_settings.py:382 msgid "Dovecot LDAP config file" -msgstr "" +msgstr "Fișier de configurare Dovecot LDAP" #: core/app_settings.py:386 msgid "" "Location of the configuration file which contains Dovecot LDAP settings." -msgstr "" +msgstr "Locația fișierului de configurare care conține setările Dovecot LDAP." #: core/app_settings.py:391 core/templates/core/dashboard.html:5 msgid "Dashboard" @@ -355,7 +387,8 @@ msgstr "Feedul RSS personalizat" #: core/app_settings.py:397 msgid "Display custom RSS feed to resellers and domain administrators" -msgstr "Afișează feedul RSS personalizat la reselleri și administratori de domeniu" +msgstr "" +"Afișează feedul RSS personalizat la reselleri și administratori de domeniu" #: core/app_settings.py:402 msgid "Hide features widget" @@ -363,7 +396,9 @@ msgstr "Ascunde widgetul de caracteristici " #: core/app_settings.py:405 msgid "Hide features widget for resellers and domain administrators" -msgstr "Ascunde widgetul de caracteristici pentru reselleri și administratori de domeniu" +msgstr "" +"Ascunde widgetul de caracteristici pentru reselleri și administratori de " +"domeniu" #: core/app_settings.py:409 msgid "Notifications" @@ -399,19 +434,20 @@ msgstr "Verifică automat dacă este disponibilă o versiune mai nouă" #: core/app_settings.py:436 msgid "Send an email when new versions are found" -msgstr "" +msgstr "Trimiteți un e-mail atunci când sunt găsite versiuni noi" #: core/app_settings.py:439 msgid "Send an email to notify admins about new versions" msgstr "" +"Trimiteți un e-mail pentru a notifica administratorii despre noile versiuni" #: core/app_settings.py:443 msgid "Recipient" -msgstr "" +msgstr "Beneficiar" #: core/app_settings.py:446 msgid "Recipient of new versions notification emails." -msgstr "" +msgstr "Destinatarul e-mailurilor de notificare a noilor versiuni." #: core/app_settings.py:451 msgid "Send statistics" @@ -419,7 +455,9 @@ msgstr "Trimite statistici" #: core/app_settings.py:454 msgid "Send statistics to Modoboa public API (counters and used extensions)" -msgstr "Trimiteți statistici către API-ul public Modoboa (contoare și extensii utilizate)" +msgstr "" +"Trimiteți statistici către API-ul public Modoboa (contoare și extensii " +"utilizate)" #: core/app_settings.py:458 msgid "Miscellaneous" @@ -433,7 +471,9 @@ msgstr "Pragul pentru cont invalid" msgid "" "An account with a last login date greater than this threshold (in days) will" " be considered as inactive" -msgstr "Un cont cu o ultima data de conectare mai mare decat acest prag (in zile) va fi considerat inactiv" +msgstr "" +"Un cont cu o ultima data de conectare mai mare decat acest prag (in zile) va" +" fi considerat inactiv" #: core/app_settings.py:470 msgid "Top notifications check interval" @@ -441,7 +481,8 @@ msgstr "Intervalul de verificare a notificărilor" #: core/app_settings.py:473 msgid "Interval between two top notification checks (in seconds)" -msgstr "Intervalul dintre două verificări de notificare principală (în secunde)" +msgstr "" +"Intervalul dintre două verificări de notificare principală (în secunde)" #: core/app_settings.py:478 msgid "Maximum log record age" @@ -465,7 +506,9 @@ msgstr "Redirecționarea principală implicită" #: core/app_settings.py:494 msgid "The default redirection used when no application is specified" -msgstr "Redirecționarea implicită utilizată atunci când nu este specificată nici o aplicație" +msgstr "" +"Redirecționarea implicită utilizată atunci când nu este specificată nici o " +"aplicație" #: core/app_settings.py:548 core/app_settings.py:556 core/app_settings.py:564 msgid "Invalid syntax" @@ -488,7 +531,10 @@ msgid "" "You have USE_TZ set to False, this may result in issues during transitions " "between summer/winter time (ie the same local time occuring twice due to " "clock change)." -msgstr "Aveți USE_TZ setat la False, acest lucru poate duce la probleme în timpul tranzițiilor între timul de vara / iarna (adică același timp local care apare de două ori ca urmare a modificării ceasului)." +msgstr "" +"Aveți USE_TZ setat la False, acest lucru poate duce la probleme în timpul " +"tranzițiilor între timul de vara / iarna (adică același timp local care " +"apare de două ori ca urmare a modificării ceasului)." #: core/checks/settings_checks.py:9 msgid "Set `USE_TZ = True` in settings.py" @@ -504,7 +550,7 @@ msgstr "Administrator de domeniu" #: core/constants.py:8 msgid "Reseller" -msgstr "Reseller" +msgstr "Distribuitor" #: core/constants.py:9 msgid "Super administrator" @@ -516,51 +562,55 @@ msgstr "Nu" #: core/constants.py:102 msgid "Choose a provider" -msgstr "" +msgstr "Alegeți un furnizor" #: core/constants.py:107 msgid "Dummy" -msgstr "" +msgstr "Manechin" -#: core/forms.py:21 +#: core/forms.py:23 msgid "Username" msgstr "Utilizator" -#: core/forms.py:25 +#: core/forms.py:27 msgid "Password" msgstr "Parolă" -#: core/forms.py:38 +#: core/forms.py:40 msgid "Old password" msgstr "Vechea parolă" -#: core/forms.py:42 +#: core/forms.py:44 msgid "New password" msgstr "Noua parolă" -#: core/forms.py:46 +#: core/forms.py:48 msgid "Confirmation" msgstr "Confirmare" -#: core/forms.py:74 +#: core/forms.py:76 msgid "Old password mismatchs" msgstr "Parola veche nu se potivește" -#: core/forms.py:83 +#: core/forms.py:85 msgid "Passwords mismatch" msgstr "Parolele nu se potrivesc" -#: core/forms.py:103 +#: core/forms.py:105 msgid "Enable API access" msgstr "Activează accesul API" -#: core/forms.py:137 +#: core/forms.py:139 msgid "Verification code" -msgstr "" +msgstr "Cod de verificare" -#: core/forms.py:148 +#: core/forms.py:150 msgid "Invalid code" -msgstr "" +msgstr "Cod invalid" + +#: core/forms.py:163 +msgid "This code is invalid" +msgstr "Acest cod nu este valabil" #: core/handlers.py:36 msgid "added" @@ -602,37 +652,39 @@ msgstr "Sunt disponibile una sau mai multe actualizări" #: core/management/commands/communicate_with_public_api.py:44 msgid "[modoboa] Update(s) available" -msgstr "" +msgstr "[modoboa] Actualizare(i) disponibilă" -#: core/models.py:55 +#: core/models.py:52 msgid "Allow mailboxes access" msgstr "Permiteți accesul la cutiile poștale" -#: core/models.py:57 +#: core/models.py:54 msgid "Allow this administrator to access user mailboxes" -msgstr "Permiteți acestui administrator să acceseze cutiile poștale ale utilizatorilor" +msgstr "" +"Permiteți acestui administrator să acceseze cutiile poștale ale " +"utilizatorilor" -#: core/models.py:60 +#: core/models.py:57 msgid "password" msgstr "parolă" -#: core/models.py:63 +#: core/models.py:60 msgid "language" msgstr "limbă" -#: core/models.py:66 +#: core/models.py:63 msgid "Prefered language to display pages." msgstr "Limba preferată pentru afișarea paginilor." -#: core/models.py:70 +#: core/models.py:67 msgid "Phone number" msgstr "Numar de telefon" -#: core/models.py:72 +#: core/models.py:69 msgid "Secondary email" msgstr "Email secundar" -#: core/models.py:75 +#: core/models.py:72 msgid "An alternative e-mail address, can be used for recovery needs." msgstr "O adresă de e-mail alternativă poate fi utilizată pentru recuperare." @@ -669,78 +721,87 @@ msgstr "câmpului de utilizator și e-mail nu trebuie să difere pentru '%s'" #: core/password_validation.py:24 msgid "Password must contain at least {} digit." msgid_plural "Password must contain at least {} digits." -msgstr[0] "Parola trebuie să conțină cel puțin {} cifră." -msgstr[1] "Parola trebuie să conțină cel puțin {} cifre." -msgstr[2] "Parola trebuie să conțină cel puțin {} cifre." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" #: core/password_validation.py:34 msgid "Password must contain at least {} lowercase letter." msgid_plural "Password must contain at least {} lowercase letters." -msgstr[0] "Parola trebuie să conțină cel puțin {} literă mică." -msgstr[1] "Parola trebuie să conțină cel puțin {} litere mici." -msgstr[2] "Parola trebuie să conțină cel puțin {} litere mici." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" #: core/password_validation.py:45 msgid "Password must contain at least {} uppercase letter." msgid_plural "Password must contain at least {} uppercase letters." -msgstr[0] "Parola trebuie să conțină cel puțin {} majusculă." -msgstr[1] "Parola trebuie să conțină cel puțin {} majuscule." -msgstr[2] "Parola trebuie să conțină cel puțin {} majuscule." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" #: core/password_validation.py:57 msgid "Password must contain at least {} special character." msgid_plural "Password must contain at least {} special characters." -msgstr[0] "Parola trebuie să conțină cel puțin {} caracter special." -msgstr[1] "Parola trebuie să conțină cel puțin {} caractere speciale." -msgstr[2] "Parola trebuie să conțină cel puțin {} caractere speciale." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" #: core/password_validation.py:65 msgid "Your password must contain a combination of different character types." -msgstr "Parola dvs. trebuie să conțină o combinație de tipuri diferite de caractere." +msgstr "" +"Parola dvs. trebuie să conțină o combinație de tipuri diferite de caractere." + +#: core/serializers.py:15 +msgid "Invalid PIN code" +msgstr "Cod PIN invalid" + +#: core/serializers.py:21 +msgid "2FA is already enabled" +msgstr "2FA este deja activat" #: core/sms_backends/ovh.py:19 msgid "API endpoint" -msgstr "" +msgstr "Punct final API" #: core/sms_backends/ovh.py:22 msgid "OVH Europe" -msgstr "" +msgstr "OVH Europe" #: core/sms_backends/ovh.py:23 msgid "OVH US" -msgstr "" +msgstr "OVH US" #: core/sms_backends/ovh.py:24 msgid "OVH North-America" -msgstr "" +msgstr "OVH North-America" #: core/sms_backends/ovh.py:25 msgid "So you Start Europe" -msgstr "" +msgstr "Deci, începeți Europa" #: core/sms_backends/ovh.py:26 msgid "So you Start North America" -msgstr "" +msgstr "Deci, ai început America de Nord" #: core/sms_backends/ovh.py:27 msgid "Kimsufi Europe" -msgstr "" +msgstr "Kimsufi Europe" #: core/sms_backends/ovh.py:28 msgid "Kimsufi North America" -msgstr "" +msgstr "Kimsufi North America" #: core/sms_backends/ovh.py:35 msgid "Application key" -msgstr "" +msgstr "Cheie de aplicație" #: core/sms_backends/ovh.py:42 msgid "Application secret" -msgstr "" +msgstr "Secretul aplicației" #: core/sms_backends/ovh.py:50 msgid "Consumer key" -msgstr "" +msgstr "Cheia de consum" #: core/templates/core/_current_features.html:6 msgid "Features looking for sponsoring" @@ -748,7 +809,7 @@ msgstr "Caracteristici în căutare de sponsorizare" #: core/templates/core/_current_features.html:12 msgid "Goal:" -msgstr "Țel:" +msgstr "Scopul:" #: core/templates/core/_current_features.html:18 msgid "More" @@ -756,7 +817,7 @@ msgstr "Mai mult" #: core/templates/core/_current_features.html:22 msgid "Nothing to sponsor yet." -msgstr "Nu este nimic ce poate fi sponsorizat momentan. " +msgstr "Nimic de sponsorizat încă." #: core/templates/core/_latest_news_widget.html:5 msgid "Latest news" @@ -766,7 +827,9 @@ msgstr "Ultimele știri" msgid "" "Visit the official " "weblog for more information." -msgstr "Vizitează blogul oficial pentru mai multe informații." +msgstr "" +"Vizitează blogul " +"oficial pentru mai multe informații." #: core/templates/core/api_access.html:3 msgid "API access" @@ -781,7 +844,9 @@ msgstr "Controlați-vă accesul la API-ul Modoboa" msgid "" "A documentation of the API is available here." -msgstr "Documentația API-ului este disponibilă aici." +msgstr "" +"Documentația API-ului este disponibilă aici." #: core/templates/core/api_access.html:14 msgid "API access token" @@ -795,7 +860,7 @@ msgstr "Actualizare" #: core/templates/core/dashboard.html:11 #, python-format msgid "Hello %(user)s." -msgstr "Bună ziua %(user)s." +msgstr "Salut %(user)s." #: core/templates/core/information.html:2 core/templatetags/core_tags.py:62 msgid "Information" @@ -811,7 +876,9 @@ msgstr "Sunt disponibile una sau mai multe actualizări!" #: core/templates/core/information.html:6 msgid "Check the following list to find the component(s) that can be updated." -msgstr "Verificați lista următoare pentru a găsi componentele(ul) care pot fi actualizate." +msgstr "" +"Verificați lista următoare pentru a găsi componentele(ul) care pot fi " +"actualizate." #: core/templates/core/information.html:10 msgid "Applications" @@ -925,7 +992,93 @@ msgstr "Actualizați-vă informațiile personale" #: core/templates/core/user_profile.html:13 msgid "Click here to update your password" +msgstr "Faceți clic aici pentru a vă actualiza parola" + +#: core/templates/core/user_security.html:2 core/templatetags/core_tags.py:124 +msgid "Security" +msgstr "Securitate" + +#: core/templates/core/user_security.html:6 +msgid "Two-Factor authentication" +msgstr "Autentificare cu doi factori" + +#: core/templates/core/user_security.html:17 +msgid "" +"Install a soft token authenticator like FreeOTP or Google Authenticator from" +" your application repository and use that app to scan this QR code." msgstr "" +"Instalați un autentificator soft token, cum ar fi FreeOTP sau Google " +"Authenticator, din depozitul de aplicații și utilizați aplicația respectivă " +"pentru a scana acest cod QR." + +#: core/templates/core/user_security.html:25 +msgid "Pin code" +msgstr "Codul Pin" + +#: core/templates/core/user_security.html:28 +msgid "Register" +msgstr "Înregistrare" + +#: core/templates/core/user_security.html:33 +msgid "" +"Congratulations! Two-Factor Authentication is now enabled for your account." +msgstr "" +"Felicitări! Autentificarea în doi factori este acum activată pentru contul " +"dvs." + +#: core/templates/core/user_security.html:38 +#: core/templates/core/user_security.html:89 +msgid "" +"The following recovery codes can be used one time each to let you regain " +"access to your account, in case you lose your phone for example. Make sure " +"to save them in a safe place, otherwise you won't be able to access your " +"account anymore." +msgstr "" +"Următoarele coduri de recuperare pot fi folosite o singură dată pentru a vă " +"permite să vă recâștigați accesul la cont, de exemplu, în cazul în care vă " +"pierdeți telefonul. Asigură-te că le salvezi într-un loc sigur, altfel nu " +"vei mai putea accesa contul tău." + +#: core/templates/core/user_security.html:53 +msgid "Two-Factor Authentication is enabled for your account." +msgstr "" +"Autentificarea în doi factori este activată pentru contul dumneavoastră." + +#: core/templates/core/user_security.html:58 +msgid "Disable 2FA" +msgstr "Dezactivați 2FA" + +#: core/templates/core/user_security.html:61 +msgid "Reset recovery codes" +msgstr "Resetarea codurilor de recuperare" + +#: core/templates/core/user_security.html:65 +msgid "" +"Two-Factor Authentication (2FA) is not yet activated for your account. " +"Enabling this feature will increase your account's security." +msgstr "" +"Autentificarea în doi factori (2FA) nu este încă activată pentru contul dvs." +" Activarea acestei funcții va spori securitatea contului dvs." + +#: core/templates/core/user_security.html:73 +msgid "Enable 2FA" +msgstr "Activați 2FA" + +#: core/templates/core/user_security.html:83 +#: core/templates/core/user_security.html:99 +#: templates/common/generic_modal.html:6 +#: templates/common/generic_modal.html:13 templates/common/wizard_forms.html:6 +#: templates/common/wizard_forms.html:27 +msgid "Close" +msgstr "Închide" + +#: core/templates/core/user_security.html:84 +msgid "New recovery codes" +msgstr "Noi coduri de recuperare" + +#: core/templates/core/user_security.html:88 +msgid "Here are your new recovery codes. " +msgstr "Aici sunt noile coduri de recuperare. " #: core/templatetags/core_tags.py:34 msgid "Modoboa" @@ -935,7 +1088,7 @@ msgstr "Modoboa" msgid "Logout" msgstr "Deconectare" -#: core/templatetags/core_tags.py:127 +#: core/templatetags/core_tags.py:131 msgid "API" msgstr "API" @@ -947,51 +1100,58 @@ msgstr "Partea de nucleu a Modoboa" msgid "Parameters saved" msgstr "Parametrii au fost salvați" -#: core/views/auth.py:59 +#: core/views/auth.py:61 #, python-format msgid "Password scheme mismatch. Updating %s password" msgstr "Schema parola diferită. Reinoim %s parole" -#: core/views/auth.py:66 +#: core/views/auth.py:68 #, python-format msgid "Password hash parameter missmatch. Updating %s password" -msgstr "" +msgstr "Paragraful hash al parolei nu corespunde. Actualizarea %s a parolei" -#: core/views/auth.py:82 +#: core/views/auth.py:84 #, python-format msgid "User '%s' successfully logged in" msgstr "Utilizatorul '%s' conectat cu succes" -#: core/views/auth.py:90 +#: core/views/auth.py:92 msgid "Your username and password didn't match. Please try again." -msgstr "Numele de utilizator și parola nu s-au potrivit. Vă rugăm să încercați din nou." +msgstr "" +"Numele de utilizator și parola nu s-au potrivit. Vă rugăm să încercați din " +"nou." -#: core/views/auth.py:125 +#: core/views/auth.py:127 msgid "User '{}' successfully logged out" msgstr "Utilizatorul '{}' sa deconectat cu succes" -#: core/views/auth.py:170 core/views/auth.py:225 +#: core/views/auth.py:172 core/views/auth.py:227 msgid "Please use the following code to recover your Modoboa password: {}" msgstr "" +"Vă rugăm să folosiți următorul cod pentru a vă recupera parola Modoboa: {}" -#: core/views/user.py:53 +#: core/views/user.py:60 msgid "Profile updated" msgstr "Profil actualizat" -#: core/views/user.py:81 +#: core/views/user.py:88 msgid "Preferences saved" msgstr "Preferințele au fost salvate" -#: core/views/user.py:103 +#: core/views/user.py:110 msgid "Access updated" msgstr "Accesul a fost actualizat" +#: core/viewsets.py:52 +msgid "2FA is not enabled" +msgstr "2FA nu este activat" + #: lib/db_utils.py:23 #, python-format msgid "Connection to database %s not configured" msgstr "Conexiunea la baza de date %s nu a fost configurată" -#: lib/email_utils.py:141 lib/email_utils.py:360 +#: lib/email_utils.py:143 lib/email_utils.py:362 msgid "unable to determine encoding of string" msgstr "imposibil de determinat codarea textului" @@ -1075,19 +1235,13 @@ msgstr "Eroare:" msgid "Help:" msgstr "Ajutor:" -#: templates/common/generic_modal.html:6 -#: templates/common/generic_modal.html:13 templates/common/wizard_forms.html:6 -#: templates/common/wizard_forms.html:27 -msgid "Close" -msgstr "Închide" - #: templates/common/wizard_forms.html:31 msgid "Previous" -msgstr "Înapoi" +msgstr "Anterior" #: templates/common/wizard_forms.html:32 msgid "Next" -msgstr "Înainte" +msgstr "Următorul" #: templates/registration/base.html:8 msgid "Welcome to Modoboa" @@ -1111,7 +1265,9 @@ msgstr "Ai uitat parola?" msgid "" "Your password has been set. You may go ahead and sign " "in now." -msgstr "Parola dvs. a fost setată. Puteți acum să va autentificați din nou." +msgstr "" +"Parola dvs. a fost setată. Puteți acum să va autentificați din nou." #: templates/registration/password_reset_confirm.html:7 msgid "Change password" @@ -1121,15 +1277,17 @@ msgstr "Schimbă parola" msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." -msgstr "Linkul de resetare a parolei este invalid, posibil din cauza faptului că a fost deja utilizat. Te rugăm solicită o nouă resetare a parolei. " +msgstr "" +"Linkul de resetare a parolei este invalid, posibil din cauza faptului că a " +"fost deja utilizat. Te rugăm solicită o nouă resetare a parolei. " #: templates/registration/password_reset_confirm_code.html:20 msgid "Enter the code you've just received by SMS" -msgstr "" +msgstr "Introduceți codul pe care tocmai l-ați primit prin SMS" #: templates/registration/password_reset_confirm_code.html:27 msgid "Resend code" -msgstr "" +msgstr "Retrimite codul" #: templates/registration/password_reset_done.html:7 msgid "" @@ -1137,20 +1295,28 @@ msgid "" "exists with the email you entered. You should receive them shortly.

" "

If you don't receive an email, please make sure you've entered your " "primary address, and check your spam folder.

" -msgstr "

V-am trimis prin e-mail instrucțiuni pentru setarea parolei, dacă există un cont cu adresa pe care ați introdus-o. Ar trebui să le primiți în scurt timp.

Dacă nu primiți un e-mail, asigurați-vă că ați introdus adresa dvs. principală și că verificați dosarul dvs. de spam.

" +msgstr "" +"

V-am trimis prin e-mail instrucțiuni pentru setarea parolei, dacă există " +"un cont cu adresa pe care ați introdus-o. Ar trebui să le primiți în scurt " +"timp.

Dacă nu primiți un e-mail, asigurați-vă că ați introdus adresa " +"dvs. principală și că verificați dosarul dvs. de spam.

" #: templates/registration/password_reset_email.html:4 #, python-format msgid "" "To initiate the password reset process for your %(username)s Modoboa " "account, click the link below:" -msgstr "Pentru a iniția procesul de resetare a parolei pentru contul dvs. %(username)s Modoboa, faceți clic pe linkul de mai jos:" +msgstr "" +"Pentru a iniția procesul de resetare a parolei pentru contul dvs. " +"%(username)s Modoboa, faceți clic pe linkul de mai jos:" #: templates/registration/password_reset_email.html:10 msgid "" "If clicking the link above doesn't work, please copy and paste the URL in a " "new browser window instead." -msgstr "Dacă făcând click pe linkul de mai sus nu funcționează, copiați și lipiți adresa URL într-o fereastră nouă a browserului." +msgstr "" +"Dacă făcând click pe linkul de mai sus nu funcționează, copiați și lipiți " +"adresa URL într-o fereastră nouă a browserului." #: templates/registration/password_reset_email.html:14 msgid "Sincerely, The Modoboa Team." @@ -1158,7 +1324,7 @@ msgstr "Cu sinceritate, Echipa Modoboa." #: templates/registration/password_reset_form.html:24 msgid "Please fill-in your primary email address" -msgstr "" +msgstr "Vă rugăm să completați adresa dvs. principală de e-mail" #: templates/registration/password_reset_subject.txt:3 msgid "Modoboa password reset" diff --git a/modoboa/locale/ro_RO/LC_MESSAGES/djangojs.po b/modoboa/locale/ro_RO/LC_MESSAGES/djangojs.po index c139efa12..26cdbd86f 100644 --- a/modoboa/locale/ro_RO/LC_MESSAGES/djangojs.po +++ b/modoboa/locale/ro_RO/LC_MESSAGES/djangojs.po @@ -1,17 +1,19 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Andrei-Ilie Olteanu , 2018 +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# msgid "" msgstr "" -"Project-Id-Version: Modoboa\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-03-09 16:48+0100\n" -"PO-Revision-Date: 2020-03-09 15:49+0000\n" -"Last-Translator: Antoine Nguyen \n" -"Language-Team: Romanian (Romania) (http://www.transifex.com/tonio/modoboa/language/ro_RO/)\n" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2020-10-02 13:39+0000\n" +"Last-Translator: Simona Iacob , 2021\n" +"Language-Team: Romanian (Romania) (https://www.transifex.com/tonio/teams/13749/ro_RO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -24,11 +26,11 @@ msgstr "'" #: bower_components/swagger-ui/dist/swagger-ui-bundle.js:133 msgid "operation" -msgstr "" +msgstr "operațiune" #: core/static/core/js/settings.js:16 msgid "No more log entry to show" -msgstr "Nu mai exită alte rezultate de înregistrări pentru afișare" +msgstr "Nu se mai afișează nicio intrare în jurnal" #: static/js/confirmation.js:44 msgid "Warning" @@ -38,18 +40,26 @@ msgstr "Avertizare" msgid "Cancel" msgstr "Anulare" -#: static/js/global.js:342 +#: static/js/global.js:347 msgid "Internal error" msgstr "Eroare internă" #: static/js/listing.js:21 msgid "No more entry to show" -msgstr "Nu mai există alte elemente ce pot fi afișate" +msgstr "Nu mai sunt mesaje de afișat" #: static/js/listing.js:46 msgid "Search" -msgstr "Caută" +msgstr "Căutare" #: static/js/searchbar.js:28 msgid "Search..." -msgstr "Caută..." +msgstr "Căutare..." + +#: static/js/twocols_nav.js:170 +msgid "Are you sure?" +msgstr "Sunteți sigur?" + +#: static/js/twocols_nav.js:171 +msgid "This will invalidate your registered application." +msgstr "This will invalidate your registered application." diff --git a/modoboa/locale/uk/LC_MESSAGES/djangojs.po b/modoboa/locale/uk/LC_MESSAGES/djangojs.po new file mode 100644 index 000000000..044044823 --- /dev/null +++ b/modoboa/locale/uk/LC_MESSAGES/djangojs.po @@ -0,0 +1,66 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Taras Havryliuk , 2021 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-05 15:47+0100\n" +"PO-Revision-Date: 2020-05-11 18:45+0000\n" +"Last-Translator: Taras Havryliuk , 2021\n" +"Language-Team: Ukrainian (https://www.transifex.com/tonio/teams/13749/uk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uk\n" +"Plural-Forms: 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);\n" + +#: bower_components/jquery-ui/jquery-ui.min.js:8 +msgid "'" +msgstr "'" + +#: bower_components/swagger-ui/dist/swagger-ui-bundle.js:133 +msgid "operation" +msgstr "операції" + +#: core/static/core/js/settings.js:16 +msgid "No more log entry to show" +msgstr "Більше немає запису в журналі для показу" + +#: static/js/confirmation.js:44 +msgid "Warning" +msgstr "Увага" + +#: static/js/confirmation.js:59 +msgid "Cancel" +msgstr "Відміна" + +#: static/js/global.js:347 +msgid "Internal error" +msgstr "Внутрішня помилка" + +#: static/js/listing.js:21 +msgid "No more entry to show" +msgstr "Немає більше записів для показу" + +#: static/js/listing.js:46 +msgid "Search" +msgstr "Пошук" + +#: static/js/searchbar.js:28 +msgid "Search..." +msgstr "Пошук..." + +#: static/js/twocols_nav.js:170 +msgid "Are you sure?" +msgstr "Ви впевнені?" + +#: static/js/twocols_nav.js:171 +msgid "This will invalidate your registered application." +msgstr "Це призведе до втрати вашої зареєстрованої програми." diff --git a/requirements.txt b/requirements.txt index b44e5c104..8398bc299 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,11 +1,10 @@ django>=2.2,<2.3 -django-braces==1.14.0 django-ckeditor==6.0.0 -django-phonenumber-field[phonenumbers]==5.0.0 +django-phonenumber-field[phonenumbers]==5.1.0 django-reversion==3.0.9 django-xforwardedfor-middleware==2.0 django-webpack-loader -django-otp==1.0.2 +django-otp==1.0.5 django-filter dj-database-url