diff --git a/openwisp_users/accounts/locale/de/LC_MESSAGES/django.po b/openwisp_users/accounts/locale/de/LC_MESSAGES/django.po index d096ecef0..349a99677 100644 --- a/openwisp_users/accounts/locale/de/LC_MESSAGES/django.po +++ b/openwisp_users/accounts/locale/de/LC_MESSAGES/django.po @@ -6,23 +6,16 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-11 21:36-0500\n" +"POT-Creation-Date: 2026-07-02 17:08+0200\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: accounts/templates/account/email/email_confirmation_message.html:5 -#, python-format -msgid "" -"\n" -"You're receiving this e-mail because user %(user_display)s registered " -"this e-mail address to create an account on %(site_name)s.\n" -msgstr "" -"\n" -"Sie bekommen diese E-Mail, weil diese E-Mail-Adresse von einem Benutzer " -"%(user_display)s auf %(site_name)s registriert wurde.\n" +#: accounts/adapter.py:23 accounts/templates/account/email_confirm.html:21 +msgid "Confirm" +msgstr "Bestätigen" #: accounts/templates/account/email/account_expiration_reminder_message.html:5 #, python-format @@ -49,40 +42,123 @@ msgstr "" #: accounts/templates/account/email/account_expiration_reminder_message.txt:4 #, python-format msgid "" -"We inform you that your account %(username)s will expire in %(days)s day on " -"%(expiry_date)s." +"We inform you that your account \"%(username)s\" will expire in %(days)s day " +"on %(expiry_date)s." msgid_plural "" -"We inform you that your account %(username)s will expire in %(days)s days on " -"%(expiry_date)s." +"We inform you that your account \"%(username)s\" will expire in %(days)s " +"days on %(expiry_date)s." msgstr[0] "" -"Wir informieren Sie, dass Ihr Konto %(username)s in %(days)s Tag am " +"Wir informieren Sie, dass Ihr Konto \"%(username)s\" in %(days)s Tag am " "%(expiry_date)s abläuft." msgstr[1] "" -"Wir informieren Sie, dass Ihr Konto %(username)s in %(days)s Tagen am " +"Wir informieren Sie, dass Ihr Konto \"%(username)s\" in %(days)s Tagen am " "%(expiry_date)s abläuft." #: accounts/templates/account/email/account_expired_message.html:5 -#: accounts/templates/account/email/account_expired_message.txt:4 #, python-format msgid "" -"We inform you that your account %(username)s has been deactivated because it " -"expired on %(expiry_date)s." +"We inform you that your account %(username)s has been " +"deactivated because it expired on %(expiry_date)s." msgstr "" -"Wir informieren Sie, dass Ihr Konto %(username)s deaktiviert wurde, weil es " -"am %(expiry_date)s abgelaufen ist." +"Wir informieren Sie, dass Ihr Konto %(username)s " +"deaktiviert wurde, weil es am %(expiry_date)s abgelaufen ist." #: accounts/templates/account/email/account_expired_message.html:11 #: accounts/templates/account/email/account_expired_message.txt:8 msgid "" "Please contact your administrator if you need to reactivate your account." msgstr "" -"Bitte kontaktieren Sie Ihren Administrator, wenn Sie Ihr Konto " -"reaktivieren möchten." +"Bitte kontaktieren Sie Ihren Administrator, wenn Sie Ihr Konto reaktivieren " +"möchten." +#: accounts/templates/account/email/account_expired_message.txt:4 +#, python-format +msgid "" +"We inform you that your account \"%(username)s\" has been deactivated " +"because it expired on %(expiry_date)s." +msgstr "" +"Wir informieren Sie, dass Ihr Konto \"%(username)s\" deaktiviert wurde, weil " +"es am %(expiry_date)s abgelaufen ist." + +#: accounts/templates/account/email/base_message.txt:1 +#, python-format +msgid "Welcome to %(site_name)s!" +msgstr "Willkommen bei %(site_name)s!" + +#: accounts/templates/account/email/base_message.txt:5 +#, python-format +msgid "" +"Thank you for using %(site_name)s!\n" +"%(site_domain)s" +msgstr "" +"Danke, dass Sie %(site_name)s nutzen!\n" +"%(site_domain)s" + +#: accounts/templates/account/email/email_confirmation_message.html:5 +#, python-format +msgid "" +"\n" +"You're receiving this e-mail because user %(user_display)s registered " +"this e-mail address to create an account on %(site_name)s.\n" +msgstr "" +"\n" +"Sie bekommen diese E-Mail, weil diese E-Mail-Adresse von einem Benutzer " +"%(user_display)s auf %(site_name)s registriert wurde.\n" #: accounts/templates/account/email/email_confirmation_message.html:9 msgid "To confirm this is correct, please click on the button below." -msgstr "Um zu bestätigen, dass dies korrekt ist, klicken Sie bitte auf die Schaltfläche unten." +msgstr "" +"Um zu bestätigen, dass dies korrekt ist, klicken Sie bitte auf die " +"Schaltfläche unten." + +#: accounts/templates/account/email/email_confirmation_message.txt:5 +#, python-format +msgid "" +"You're receiving this e-mail because user %(user_display)s registered this e-" +"mail address to create an account on %(site_domain)s.\n" +"\n" +"To confirm this is correct, go to %(activate_url)s" +msgstr "" +"Sie erhalten diese E-Mail, weil der Benutzer %(user_display)s diese E-Mail-" +"Adresse zur Erstellung eines Kontos auf %(site_domain)s registriert hat.\n" +"\n" +"Um dies zu bestätigen, gehen Sie zu %(activate_url)s" + +#: accounts/templates/account/email/password_expiration_message.html:4 +#: accounts/templates/account/email/password_expiration_message.txt:4 +#, python-format +msgid "" +"We inform you that the password for your account %(username)s will expire in " +"7 days, precisely on %(expiry_date)s." +msgstr "" +"Wir informieren Sie darüber, dass das Passwort für Ihr Konto %(username)s in " +"7 Tagen abläuft, genau am %(expiry_date)s." + +#: accounts/templates/account/email/password_expiration_message.html:6 +#: accounts/templates/account/email/password_expiration_message.txt:6 +msgid "" +"Kindly proceed with updating your password by clicking on the button below." +msgstr "" +"Bitte aktualisieren Sie Ihr Passwort, indem Sie auf die Schaltfläche unten " +"klicken." + +#: accounts/templates/account/email_confirm.html:6 +#: accounts/templates/account/email_confirm.html:11 +msgid "Confirm E-mail Address" +msgstr "E-Mail-Adresse bestätigen" + +#: accounts/templates/account/email_confirm.html:17 +#, python-format +msgid "" +"Please confirm that %(email)s is an e-mail " +"address for user %(user_display)s." +msgstr "" +"Bitte bestätigen Sie, dass %(email)s eine E-" +"Mail-Adresse für den Benutzer %(user_display)s ist." + +#: accounts/templates/account/email_confirm.html:26 +msgid "This e-mail confirmation link expired or is invalid." +msgstr "Dieser Bestätigungslink ist abgelaufen oder ungültig." #: accounts/templates/account/email_verification_success.html:18 msgid "Your email has been verified successfully." @@ -90,27 +166,48 @@ msgstr "E-Mail-Adresse bestätigt." #: accounts/templates/account/email_verification_success.html:19 #: accounts/templates/account/logout_success.html:19 +#: accounts/templates/account/password_change_success.html:19 +#: accounts/templates/account/password_not_required.html:20 msgid "This web page can be closed." msgstr "Die Seite kann geschlossen werden." +#: accounts/templates/account/login.html:4 +#: accounts/templates/account/login.html:19 +#: accounts/templates/account/login.html:27 +msgid "Sign In" +msgstr "Anmelden" + +#: accounts/templates/account/login.html:28 +#: accounts/templates/account/password_change.html:49 +msgid "Forgot Password?" +msgstr "Passwort vergessen?" + #: accounts/templates/account/logout_success.html:18 msgid "Logout successful." msgstr "Sie wurden erfolgreich abgemeldet." -#: accounts/templates/account/email/password_expiration_message.html:3 -#: accounts/templates/account/email/password_expiration_message.txt:3 -#, python-format +#: accounts/templates/account/password_change.html:6 +#: accounts/templates/account/password_change.html:14 +msgid "Change Password" +msgstr "Passwort ändern" + +#: accounts/templates/account/password_change.html:48 +msgid "Change password" +msgstr "Passwort ändern" + +#: accounts/templates/account/password_change_success.html:18 +msgid "Your password has been changed successfully." +msgstr "Ihr Passwort wurde erfolgreich geändert." + +#: accounts/templates/account/password_not_required.html:18 msgid "" -"We inform you that the password for your account %(username)s will expire in " -"7 days, precisely on %(expiry_date)s." +"You cannot change your password from this application because your account " +"is linked to a third-party authentication provider." msgstr "" -"Wir informieren Sie darüber, dass das Passwort für Ihr Konto %(username)s in " -"7 Tagen abläuft, genau am %(expiry_date)s." +"Sie können Ihr Passwort nicht über diese Anwendung ändern, da Ihr Konto mit " +"einem Drittanbieter für die Authentifizierung verknüpft ist." -#: accounts/templates/account/email/password_expiration_message.html:5 -#: accounts/templates/account/email/password_expiration_message.txt:5 -msgid "" -"Kindly proceed with updating your password by clicking on the button below." +#: accounts/templates/account/password_not_required.html:19 +msgid "Please visit the provider's website to manage your password." msgstr "" -"Bitte aktualisieren Sie Ihr Passwort, indem Sie auf die Schaltfläche unten " -"klicken." +"Bitte besuchen Sie die Website des Anbieters, um Ihr Passwort zu verwalten." diff --git a/openwisp_users/accounts/locale/it/LC_MESSAGES/django.po b/openwisp_users/accounts/locale/it/LC_MESSAGES/django.po index 5a9fd1801..989171670 100644 --- a/openwisp_users/accounts/locale/it/LC_MESSAGES/django.po +++ b/openwisp_users/accounts/locale/it/LC_MESSAGES/django.po @@ -6,19 +6,14 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-11 21:33-0500\n" +"POT-Creation-Date: 2026-07-02 17:11+0200\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: accounts/adapter.py:11 accounts/templates/account/email_confirm.html:6 -#: accounts/templates/account/email_confirm.html:11 -msgid "Confirm E-mail Address" -msgstr "Conferma l'indirizzo E-mail" - -#: accounts/adapter.py:21 accounts/templates/account/email_confirm.html:21 +#: accounts/adapter.py:23 accounts/templates/account/email_confirm.html:21 msgid "Confirm" msgstr "Confermo" @@ -46,27 +41,26 @@ msgstr "" #: accounts/templates/account/email/account_expiration_reminder_message.txt:4 #, python-format msgid "" -"We inform you that your account %(username)s will expire in %(days)s day on " -"%(expiry_date)s." +"We inform you that your account \"%(username)s\" will expire in %(days)s day " +"on %(expiry_date)s." msgid_plural "" -"We inform you that your account %(username)s will expire in %(days)s days on " -"%(expiry_date)s." +"We inform you that your account \"%(username)s\" will expire in %(days)s " +"days on %(expiry_date)s." msgstr[0] "" -"Ti informiamo che il tuo account %(username)s scadrà tra %(days)s giorno, " -"precisamente il %(expiry_date)s." +"Ti informiamo che il tuo account \"%(username)s\" scadrà tra %(days)s " +"giorno, precisamente il %(expiry_date)s." msgstr[1] "" -"Ti informiamo che il tuo account %(username)s scadrà tra %(days)s giorni, " -"precisamente il %(expiry_date)s." +"Ti informiamo che il tuo account \"%(username)s\" scadrà tra %(days)s " +"giorni, precisamente il %(expiry_date)s." #: accounts/templates/account/email/account_expired_message.html:5 -#: accounts/templates/account/email/account_expired_message.txt:4 #, python-format msgid "" -"We inform you that your account %(username)s has been deactivated because it " -"expired on %(expiry_date)s." +"We inform you that your account %(username)s has been " +"deactivated because it expired on %(expiry_date)s." msgstr "" -"Ti informiamo che il tuo account %(username)s è stato disattivato perché è " -"scaduto il %(expiry_date)s." +"Ti informiamo che il tuo account %(username)s è stato " +"disattivato perché è scaduto il %(expiry_date)s." #: accounts/templates/account/email/account_expired_message.html:11 #: accounts/templates/account/email/account_expired_message.txt:8 @@ -75,6 +69,15 @@ msgid "" msgstr "" "Contatta il tuo amministratore se hai bisogno di riattivare il tuo account." +#: accounts/templates/account/email/account_expired_message.txt:4 +#, python-format +msgid "" +"We inform you that your account \"%(username)s\" has been deactivated " +"because it expired on %(expiry_date)s." +msgstr "" +"Ti informiamo che il tuo account \"%(username)s\" è stato disattivato perché " +"è scaduto il %(expiry_date)s." + #: accounts/templates/account/email/base_message.txt:1 #, python-format msgid "Welcome to %(site_name)s!" @@ -116,6 +119,29 @@ msgstr "" "indirizzo e-mail su %(site_domain)s.\n" "Per confermare, clicca sul seguente collegamento: %(activate_url)s" +#: accounts/templates/account/email/password_expiration_message.html:4 +#: accounts/templates/account/email/password_expiration_message.txt:4 +#, python-format +msgid "" +"We inform you that the password for your account %(username)s will expire in " +"7 days, precisely on %(expiry_date)s." +msgstr "" +"Ti informiamo che la password per il tuo account %(username)s scadrà tra 7 " +"giorni, precisamente il %(expiry_date)s." + +#: accounts/templates/account/email/password_expiration_message.html:6 +#: accounts/templates/account/email/password_expiration_message.txt:6 +msgid "" +"Kindly proceed with updating your password by clicking on the button below." +msgstr "" +"Ti preghiamo di procedere con l'aggiornamento della tua password cliccando " +"sul pulsante qui sotto." + +#: accounts/templates/account/email_confirm.html:6 +#: accounts/templates/account/email_confirm.html:11 +msgid "Confirm E-mail Address" +msgstr "Conferma l'indirizzo E-mail" + #: accounts/templates/account/email_confirm.html:17 #, python-format msgid "" @@ -125,33 +151,57 @@ msgstr "" "Conferma che %(email)s è l'indirizzo e-mail " "per l'utente %(user_display)s." +#: accounts/templates/account/email_confirm.html:26 +msgid "This e-mail confirmation link expired or is invalid." +msgstr "Questo link di conferma e-mail è scaduto o non è valido." + #: accounts/templates/account/email_verification_success.html:18 msgid "Your email has been verified successfully." msgstr "L'indirizzo email è stato verificato con successo." #: accounts/templates/account/email_verification_success.html:19 #: accounts/templates/account/logout_success.html:19 +#: accounts/templates/account/password_change_success.html:19 +#: accounts/templates/account/password_not_required.html:20 msgid "This web page can be closed." msgstr "La pagina può essere chiusa." +#: accounts/templates/account/login.html:4 +#: accounts/templates/account/login.html:19 +#: accounts/templates/account/login.html:27 +msgid "Sign In" +msgstr "Accedi" + +#: accounts/templates/account/login.html:28 +#: accounts/templates/account/password_change.html:49 +msgid "Forgot Password?" +msgstr "Password dimenticata?" + #: accounts/templates/account/logout_success.html:18 msgid "Logout successful." msgstr "Logout effettuato con successo." -#: accounts/templates/account/email/password_expiration_message.html:3 -#: accounts/templates/account/email/password_expiration_message.txt:3 -#, python-format -msgid "" -"We inform you that the password for your account %(username)s will expire in " -"7 days, precisely on %(expiry_date)s." -msgstr "" -"Ti informiamo che la password per il tuo account %(username)s scadrà tra " -"7 giorni, precisamente il %(expiry_date)s." +#: accounts/templates/account/password_change.html:6 +#: accounts/templates/account/password_change.html:14 +msgid "Change Password" +msgstr "Cambia password" + +#: accounts/templates/account/password_change.html:48 +msgid "Change password" +msgstr "Cambia password" -#: accounts/templates/account/email/password_expiration_message.html:5 -#: accounts/templates/account/email/password_expiration_message.txt:5 +#: accounts/templates/account/password_change_success.html:18 +msgid "Your password has been changed successfully." +msgstr "La tua password è stata modificata con successo." + +#: accounts/templates/account/password_not_required.html:18 msgid "" -"Kindly proceed with updating your password by clicking on the button below." +"You cannot change your password from this application because your account " +"is linked to a third-party authentication provider." msgstr "" -"Ti preghiamo di procedere con l'aggiornamento della tua password cliccando " -"sul pulsante qui sotto." +"Non puoi cambiare la tua password da questa applicazione perché il tuo " +"account è collegato a un provider di autenticazione di terze parti." + +#: accounts/templates/account/password_not_required.html:19 +msgid "Please visit the provider's website to manage your password." +msgstr "Visita il sito web del provider per gestire la tua password." diff --git a/openwisp_users/accounts/locale/ru/LC_MESSAGES/django.po b/openwisp_users/accounts/locale/ru/LC_MESSAGES/django.po index 6440aadd9..658bbd2e9 100644 --- a/openwisp_users/accounts/locale/ru/LC_MESSAGES/django.po +++ b/openwisp_users/accounts/locale/ru/LC_MESSAGES/django.po @@ -5,27 +5,18 @@ # msgid "" msgstr "" -"POT-Creation-Date: 2021-09-01 18:32-0500\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-02 17:11+0200\n" "Language: ru\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%10==1 && n%100!=11 ? 0 : n%10>=2 " -"&& n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: templates/account/email/base_message.txt:1 -#, python-format -msgid "Welcome to %(site_name)s!" -msgstr "Добро пожаловат на %(site_name)s!" - -#: templates/account/email/base_message.txt:5 -#, python-format -msgid "" -"Thank you for using %(site_name)s!\n" -"%(site_domain)s" -msgstr "" -"Спасибо за использование %(site_name)s!\n" -"%(site_domain)s" +#: accounts/adapter.py:23 accounts/templates/account/email_confirm.html:21 +msgid "Confirm" +msgstr "Подтверждать" #: accounts/templates/account/email/account_expiration_reminder_message.html:5 #, python-format @@ -36,17 +27,14 @@ msgid_plural "" "We inform you that your account %(username)s will expire in " "%(days)s days on %(expiry_date)s." msgstr[0] "" -"Сообщаем вам, что срок действия вашей учетной записи " -"%(username)s истечет через %(days)s день, а именно " -"%(expiry_date)s." +"Сообщаем вам, что срок действия вашей учетной записи %(username)s истечет через %(days)s день, а именно %(expiry_date)s." msgstr[1] "" -"Сообщаем вам, что срок действия вашей учетной записи " -"%(username)s истечет через %(days)s дня, а именно " -"%(expiry_date)s." +"Сообщаем вам, что срок действия вашей учетной записи %(username)s истечет через %(days)s дня, а именно %(expiry_date)s." msgstr[2] "" -"Сообщаем вам, что срок действия вашей учетной записи " -"%(username)s истечет через %(days)s дней, а именно " -"%(expiry_date)s." +"Сообщаем вам, что срок действия вашей учетной записи %(username)s истечет через %(days)s дней, а именно %(expiry_date)s." #: accounts/templates/account/email/account_expiration_reminder_message.html:13 #: accounts/templates/account/email/account_expiration_reminder_message.txt:10 @@ -58,38 +46,60 @@ msgstr "" #: accounts/templates/account/email/account_expiration_reminder_message.txt:4 #, python-format msgid "" -"We inform you that your account %(username)s will expire in %(days)s day on " -"%(expiry_date)s." +"We inform you that your account \"%(username)s\" will expire in %(days)s day " +"on %(expiry_date)s." msgid_plural "" -"We inform you that your account %(username)s will expire in %(days)s days on " -"%(expiry_date)s." +"We inform you that your account \"%(username)s\" will expire in %(days)s " +"days on %(expiry_date)s." msgstr[0] "" -"Сообщаем вам, что срок действия вашей учетной записи %(username)s истечет " -"через %(days)s день, а именно %(expiry_date)s." +"Сообщаем вам, что срок действия вашей учетной записи \"%(username)s\" " +"истечет через %(days)s день, а именно %(expiry_date)s." msgstr[1] "" -"Сообщаем вам, что срок действия вашей учетной записи %(username)s истечет " -"через %(days)s дня, а именно %(expiry_date)s." +"Сообщаем вам, что срок действия вашей учетной записи \"%(username)s\" " +"истечет через %(days)s дня, а именно %(expiry_date)s." msgstr[2] "" -"Сообщаем вам, что срок действия вашей учетной записи %(username)s истечет " -"через %(days)s дней, а именно %(expiry_date)s." +"Сообщаем вам, что срок действия вашей учетной записи \"%(username)s\" " +"истечет через %(days)s дней, а именно %(expiry_date)s." #: accounts/templates/account/email/account_expired_message.html:5 -#: accounts/templates/account/email/account_expired_message.txt:4 #, python-format msgid "" -"We inform you that your account %(username)s has been deactivated because it " -"expired on %(expiry_date)s." +"We inform you that your account %(username)s has been " +"deactivated because it expired on %(expiry_date)s." msgstr "" -"Сообщаем вам, что ваша учетная запись %(username)s была деактивирована, " -"поскольку срок ее действия истек %(expiry_date)s." +"Сообщаем вам, что ваша учетная запись %(username)s была " +"деактивирована, поскольку срок ее действия истек %(expiry_date)s." #: accounts/templates/account/email/account_expired_message.html:11 #: accounts/templates/account/email/account_expired_message.txt:8 msgid "" "Please contact your administrator if you need to reactivate your account." msgstr "" -"Пожалуйста, свяжитесь с вашим администратором, если вам нужно " -"повторно активировать вашу учетную запись." +"Пожалуйста, свяжитесь с вашим администратором, если вам нужно повторно " +"активировать вашу учетную запись." + +#: accounts/templates/account/email/account_expired_message.txt:4 +#, python-format +msgid "" +"We inform you that your account \"%(username)s\" has been deactivated " +"because it expired on %(expiry_date)s." +msgstr "" +"Сообщаем вам, что ваша учетная запись \"%(username)s\" была деактивирована, " +"поскольку срок ее действия истек %(expiry_date)s." + +#: accounts/templates/account/email/base_message.txt:1 +#, python-format +msgid "Welcome to %(site_name)s!" +msgstr "Добро пожаловать на %(site_name)s!" + +#: accounts/templates/account/email/base_message.txt:5 +#, python-format +msgid "" +"Thank you for using %(site_name)s!\n" +"%(site_domain)s" +msgstr "" +"Спасибо за использование %(site_name)s!\n" +"%(site_domain)s" #: accounts/templates/account/email/email_confirmation_message.html:5 #, python-format @@ -99,55 +109,112 @@ msgid "" "this e-mail address to create an account on %(site_name)s.\n" msgstr "" "\n" -"Вы получаете это письмо, потому что пользователь %(user_display)s зарегистрировал это " -"емейл на %(site_name)s.\n" +"Вы получаете это письмо, потому что пользователь %(user_display)s " +"зарегистрировал это емейл на %(site_name)s.\n" #: accounts/templates/account/email/email_confirmation_message.html:9 msgid "To confirm this is correct, please click on the button below." msgstr "Чтобы убедиться, что это правильно, нажмите кнопку ниже." -#: templates/account/email_confirm.html:6 templates/account/email_confirm.html:9 +#: accounts/templates/account/email/email_confirmation_message.txt:5 +#, python-format +msgid "" +"You're receiving this e-mail because user %(user_display)s registered this e-" +"mail address to create an account on %(site_domain)s.\n" +"\n" +"To confirm this is correct, go to %(activate_url)s" +msgstr "" +"Вы получаете это письмо, потому что пользователь %(user_display)s " +"зарегистрировал этот адрес электронной почты для создания учётной записи на " +"%(site_domain)s.\n" +"\n" +"Чтобы подтвердить это, перейдите по ссылке %(activate_url)s" + +#: accounts/templates/account/email/password_expiration_message.html:4 +#: accounts/templates/account/email/password_expiration_message.txt:4 +#, python-format +msgid "" +"We inform you that the password for your account %(username)s will expire in " +"7 days, precisely on %(expiry_date)s." +msgstr "" +"Мы информируем вас о том, что пароль для вашей учетной записи %(username)s " +"истекает через 7 дней, точно %(expiry_date)s." + +#: accounts/templates/account/email/password_expiration_message.html:6 +#: accounts/templates/account/email/password_expiration_message.txt:6 +msgid "" +"Kindly proceed with updating your password by clicking on the button below." +msgstr "Просим вас обновить ваш пароль, нажав на кнопку ниже." + +#: accounts/templates/account/email_confirm.html:6 +#: accounts/templates/account/email_confirm.html:11 msgid "Confirm E-mail Address" msgstr "Подтверждать емейл адрес" -#: templates/account/email_confirm.html:15 +#: accounts/templates/account/email_confirm.html:17 #, python-format msgid "" -"Please confirm that %(email)s is an e-mail address for " -"user %(user_display)s." +"Please confirm that %(email)s is an e-mail " +"address for user %(user_display)s." msgstr "" -"Подтвердите, что это %(email)s адрес электронной почты " -"пользователя %(user_display)s." +"Подтвердите, что это %(email)s адрес " +"электронной почты пользователя %(user_display)s." -#: templates/account/email_verification_success.html:18 +#: accounts/templates/account/email_confirm.html:26 +msgid "This e-mail confirmation link expired or is invalid." +msgstr "" +"Срок действия этой ссылки для подтверждения e-mail истёк, или она " +"недействительна." + +#: accounts/templates/account/email_verification_success.html:18 msgid "Your email has been verified successfully." msgstr "Емейл адрес успешно подтверждён" -#: templates/account/email_verification_success.html:19 +#: accounts/templates/account/email_verification_success.html:19 +#: accounts/templates/account/logout_success.html:19 +#: accounts/templates/account/password_change_success.html:19 +#: accounts/templates/account/password_not_required.html:20 msgid "This web page can be closed." msgstr "Вы можете закрывать страницу" -#: templates/account/email_confirm.html:20 -msgid "Confirm" -msgstr "Подтверждать" +#: accounts/templates/account/login.html:4 +#: accounts/templates/account/login.html:19 +#: accounts/templates/account/login.html:27 +msgid "Sign In" +msgstr "Вход" + +#: accounts/templates/account/login.html:28 +#: accounts/templates/account/password_change.html:49 +msgid "Forgot Password?" +msgstr "Забыли пароль?" #: accounts/templates/account/logout_success.html:18 msgid "Logout successful." msgstr "Выход прошел успешно." -#: accounts/templates/account/email/password_expiration_message.html:3 -#: accounts/templates/account/email/password_expiration_message.txt:3 -#, python-format +#: accounts/templates/account/password_change.html:6 +#: accounts/templates/account/password_change.html:14 +msgid "Change Password" +msgstr "Изменить пароль" + +#: accounts/templates/account/password_change.html:48 +msgid "Change password" +msgstr "Изменить пароль" + +#: accounts/templates/account/password_change_success.html:18 +msgid "Your password has been changed successfully." +msgstr "Ваш пароль был успешно изменён." + +#: accounts/templates/account/password_not_required.html:18 msgid "" -"We inform you that the password for your account %(username)s will expire in " -"7 days, precisely on %(expiry_date)s." +"You cannot change your password from this application because your account " +"is linked to a third-party authentication provider." msgstr "" -"Мы информируем вас о том, что пароль для вашей учетной записи %(username)s " -"истекает через 7 дней, точно %(expiry_date)s." +"Вы не можете изменить пароль в этом приложении, поскольку ваша учётная " +"запись связана со сторонним поставщиком аутентификации." -#: accounts/templates/account/email/password_expiration_message.html:5 -#: accounts/templates/account/email/password_expiration_message.txt:5 -msgid "" -"Kindly proceed with updating your password by clicking on the button below." +#: accounts/templates/account/password_not_required.html:19 +msgid "Please visit the provider's website to manage your password." msgstr "" -"Просим вас обновить ваш пароль, нажав на кнопку ниже." +"Пожалуйста, посетите веб-сайт поставщика услуг, чтобы управлять своим " +"паролем." diff --git a/openwisp_users/accounts/locale/sl/LC_MESSAGES/django.po b/openwisp_users/accounts/locale/sl/LC_MESSAGES/django.po index a90c3329e..678612caf 100644 --- a/openwisp_users/accounts/locale/sl/LC_MESSAGES/django.po +++ b/openwisp_users/accounts/locale/sl/LC_MESSAGES/django.po @@ -6,24 +6,17 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-11 21:36-0500\n" +"POT-Creation-Date: 2026-07-02 17:11+0200\n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : " -"n%100==3 || n%100==4 ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || " +"n%100==4 ? 2 : 3);\n" -#: accounts/templates/account/email/email_confirmation_message.html:5 -#, python-format -msgid "" -"\n" -"You're receiving this e-mail because user %(user_display)s registered " -"this e-mail address to create an account on %(site_name)s.\n" -msgstr "" -"\n" -"To e-pošto ste prejeli, ker je registriran uporabnik %(user_display)s" -"ta e-poštni naslov za ustvarjanje računa na %(site_name)s.\n" +#: accounts/adapter.py:23 accounts/templates/account/email_confirm.html:21 +msgid "Confirm" +msgstr "Potrdi" #: accounts/templates/account/email/account_expiration_reminder_message.html:5 #, python-format @@ -55,33 +48,32 @@ msgstr "" #: accounts/templates/account/email/account_expiration_reminder_message.txt:4 #, python-format msgid "" -"We inform you that your account %(username)s will expire in %(days)s day on " -"%(expiry_date)s." +"We inform you that your account \"%(username)s\" will expire in %(days)s day " +"on %(expiry_date)s." msgid_plural "" -"We inform you that your account %(username)s will expire in %(days)s days on " -"%(expiry_date)s." +"We inform you that your account \"%(username)s\" will expire in %(days)s " +"days on %(expiry_date)s." msgstr[0] "" -"Obveščamo vas, da bo vaš račun %(username)s potekel čez %(days)s dan, in " +"Obveščamo vas, da bo vaš račun \"%(username)s\" potekel čez %(days)s dan, in " "sicer %(expiry_date)s." msgstr[1] "" -"Obveščamo vas, da bo vaš račun %(username)s potekel čez %(days)s dni, in " +"Obveščamo vas, da bo vaš račun \"%(username)s\" potekel čez %(days)s dni, in " "sicer %(expiry_date)s." msgstr[2] "" -"Obveščamo vas, da bo vaš račun %(username)s potekel čez %(days)s dni, in " +"Obveščamo vas, da bo vaš račun \"%(username)s\" potekel čez %(days)s dni, in " "sicer %(expiry_date)s." msgstr[3] "" -"Obveščamo vas, da bo vaš račun %(username)s potekel čez %(days)s dni, in " +"Obveščamo vas, da bo vaš račun \"%(username)s\" potekel čez %(days)s dni, in " "sicer %(expiry_date)s." #: accounts/templates/account/email/account_expired_message.html:5 -#: accounts/templates/account/email/account_expired_message.txt:4 #, python-format msgid "" -"We inform you that your account %(username)s has been deactivated because it " -"expired on %(expiry_date)s." +"We inform you that your account %(username)s has been " +"deactivated because it expired on %(expiry_date)s." msgstr "" -"Obveščamo vas, da je bil vaš račun %(username)s deaktiviran, ker je potekel " -"dne %(expiry_date)s." +"Obveščamo vas, da je bil vaš račun %(username)s " +"deaktiviran, ker je potekel dne %(expiry_date)s." #: accounts/templates/account/email/account_expired_message.html:11 #: accounts/templates/account/email/account_expired_message.txt:8 @@ -91,35 +83,140 @@ msgstr "" "Če želite ponovno aktivirati svoj račun, se obrnite na svojega " "administratorja." +#: accounts/templates/account/email/account_expired_message.txt:4 +#, python-format +msgid "" +"We inform you that your account \"%(username)s\" has been deactivated " +"because it expired on %(expiry_date)s." +msgstr "" +"Obveščamo vas, da je bil vaš račun \"%(username)s\" deaktiviran, ker je " +"potekel dne %(expiry_date)s." + +#: accounts/templates/account/email/base_message.txt:1 +#, python-format +msgid "Welcome to %(site_name)s!" +msgstr "Dobrodošli na %(site_name)s!" + +#: accounts/templates/account/email/base_message.txt:5 +#, python-format +msgid "" +"Thank you for using %(site_name)s!\n" +"%(site_domain)s" +msgstr "" +"Hvala, ker uporabljate %(site_name)s!\n" +"%(site_domain)s" + +#: accounts/templates/account/email/email_confirmation_message.html:5 +#, python-format +msgid "" +"\n" +"You're receiving this e-mail because user %(user_display)s registered " +"this e-mail address to create an account on %(site_name)s.\n" +msgstr "" +"\n" +"To e-pošto ste prejeli, ker je registriran uporabnik %(user_display)s ta e-poštni naslov za ustvarjanje računa na %(site_name)s.\n" + #: accounts/templates/account/email/email_confirmation_message.html:9 msgid "To confirm this is correct, please click on the button below." msgstr "Če želite potrditi, da je to pravilno, kliknite spodnji gumb." +#: accounts/templates/account/email/email_confirmation_message.txt:5 +#, python-format +msgid "" +"You're receiving this e-mail because user %(user_display)s registered this e-" +"mail address to create an account on %(site_domain)s.\n" +"\n" +"To confirm this is correct, go to %(activate_url)s" +msgstr "" +"To e-pošto prejemate, ker je uporabnik %(user_display)s registriral ta e-" +"poštni naslov za ustvarjanje računa na %(site_domain)s.\n" +"\n" +"Če želite to potrditi, obiščite %(activate_url)s" + +#: accounts/templates/account/email/password_expiration_message.html:4 +#: accounts/templates/account/email/password_expiration_message.txt:4 +#, python-format +msgid "" +"We inform you that the password for your account %(username)s will expire in " +"7 days, precisely on %(expiry_date)s." +msgstr "" +"Obveščamo vas, da bo geslo za vaš račun %(username)s poteklo v 7 dneh, " +"natančneje dne %(expiry_date)s." + +#: accounts/templates/account/email/password_expiration_message.html:6 +#: accounts/templates/account/email/password_expiration_message.txt:6 +msgid "" +"Kindly proceed with updating your password by clicking on the button below." +msgstr "" +"Prosimo, da nadaljujete z posodabljanjem svojega gesla tako, da kliknete na " +"spodnji gumb." + +#: accounts/templates/account/email_confirm.html:6 +#: accounts/templates/account/email_confirm.html:11 +msgid "Confirm E-mail Address" +msgstr "Potrdite e-poštni naslov" + +#: accounts/templates/account/email_confirm.html:17 +#, python-format +msgid "" +"Please confirm that %(email)s is an e-mail " +"address for user %(user_display)s." +msgstr "" +"Prosimo, potrdite, da je %(email)s e-poštni " +"naslov uporabnika %(user_display)s." + +#: accounts/templates/account/email_confirm.html:26 +msgid "This e-mail confirmation link expired or is invalid." +msgstr "Ta povezava za potrditev e-pošte je potekla ali ni veljavna." + #: accounts/templates/account/email_verification_success.html:18 msgid "Your email has been verified successfully." msgstr "Preverjanje naslova e-pošte je bilo uspešno." #: accounts/templates/account/email_verification_success.html:19 #: accounts/templates/account/logout_success.html:19 +#: accounts/templates/account/password_change_success.html:19 +#: accounts/templates/account/password_not_required.html:20 msgid "This web page can be closed." msgstr "Lahko zaprete stran." +#: accounts/templates/account/login.html:4 +#: accounts/templates/account/login.html:19 +#: accounts/templates/account/login.html:27 +msgid "Sign In" +msgstr "Prijava" + +#: accounts/templates/account/login.html:28 +#: accounts/templates/account/password_change.html:49 +msgid "Forgot Password?" +msgstr "Ste pozabili geslo?" + #: accounts/templates/account/logout_success.html:18 msgid "Logout successful." msgstr "Odjava uspešna." -#: accounts/templates/account/email/password_expiration_message.html:3 -#: accounts/templates/account/email/password_expiration_message.txt:3 -#, python-format -msgid "" -"We inform you that the password for your account %(username)s will expire in " -"7 days, precisely on %(expiry_date)s." -msgstr "" -"Obveščamo vas, da bo geslo za vaš račun %(username)s poteklo v 7 dneh, natančneje dne %(expiry_date)s." +#: accounts/templates/account/password_change.html:6 +#: accounts/templates/account/password_change.html:14 +msgid "Change Password" +msgstr "Spremeni geslo" + +#: accounts/templates/account/password_change.html:48 +msgid "Change password" +msgstr "Spremeni geslo" -#: accounts/templates/account/email/password_expiration_message.html:5 -#: accounts/templates/account/email/password_expiration_message.txt:5 +#: accounts/templates/account/password_change_success.html:18 +msgid "Your password has been changed successfully." +msgstr "Vaše geslo je bilo uspešno spremenjeno." + +#: accounts/templates/account/password_not_required.html:18 msgid "" -"Kindly proceed with updating your password by clicking on the button below." +"You cannot change your password from this application because your account " +"is linked to a third-party authentication provider." msgstr "" -"Prosimo, da nadaljujete z posodabljanjem svojega gesla tako, da kliknete na spodnji gumb." +"Gesla ne morete spremeniti prek te aplikacije, ker je vaš račun povezan s " +"ponudnikom avtentikacije tretje osebe." + +#: accounts/templates/account/password_not_required.html:19 +msgid "Please visit the provider's website to manage your password." +msgstr "Obiščite spletno stran ponudnika za upravljanje svojega gesla." diff --git a/openwisp_users/admin.py b/openwisp_users/admin.py index af504df38..7bdd92ec4 100644 --- a/openwisp_users/admin.py +++ b/openwisp_users/admin.py @@ -181,9 +181,9 @@ class Meta(BaseUserCreationForm.Meta): _("Account expiration"), {"classes": ("wide",), "fields": ("expiration_date",)}, ), - ("Personal Info", {"classes": ("wide",), "fields": personal_fields}), + (_("Personal Info"), {"classes": ("wide",), "fields": personal_fields}), ( - "Permissions", + _("Permissions"), {"classes": ("wide",), "fields": ["is_active", "is_staff", "groups"]}, ), ) @@ -193,9 +193,9 @@ class Meta(BaseUserCreationForm.Meta): _("Account expiration"), {"classes": ("wide",), "fields": ("expiration_date",)}, ), - ("Personal Info", {"classes": ("wide",), "fields": personal_fields}), + (_("Personal Info"), {"classes": ("wide",), "fields": personal_fields}), ( - "Permissions", + _("Permissions"), { "classes": ("wide",), "fields": ["is_active", "is_staff", "is_superuser", "groups"], @@ -274,10 +274,11 @@ def make_inactive(self, request, queryset): if count: self.message_user( request, - _( - f"Successfully made {count} " - f"{model_ngettext(self.opts, count)} inactive." - ), + _("Successfully made %(count)d %(model_name)s inactive.") + % { + "count": count, + "model_name": model_ngettext(self.opts, count), + }, messages.SUCCESS, ) @@ -413,11 +414,11 @@ def delete_selected_overridden(self, request, queryset): self.message_user( request, ngettext( - f"Can't delete %d organization owner: {owners}", - f"Can't delete %d organization owners: {owners}", + "Can't delete %(count)d organization owner: %(owners)s", + "Can't delete %(count)d organization owners: %(owners)s", count, ) - % count, + % {"count": count, "owners": owners}, messages.ERROR, ) # if trying to delete only owners, stop here @@ -495,16 +496,17 @@ def save_formset(self, request, form, formset, change): except OwnershipRequired: not_deleted += 1 if not_deleted: - single_msg = ( - f"Can't delete {not_deleted} organization user because it " - "belongs to an organization owner." - ) - multiple_msg = ( - f"Can't delete {not_deleted} organization users because they " - "belong to some organization owners." - ) self.message_user( - request, ngettext(single_msg, multiple_msg, not_deleted), messages.ERROR + request, + ngettext( + "Can't delete %(count)d organization user because it " + "belongs to an organization owner.", + "Can't delete %(count)d organization users because they " + "belong to some organization owners.", + not_deleted, + ) + % {"count": not_deleted}, + messages.ERROR, ) for instance in instances: instance.save() @@ -661,16 +663,17 @@ def delete_selected_overridden(self, request, queryset): # if some org owners' org users were selected if count and count != queryset.count(): queryset = queryset.exclude(pk__in=pks) - single_msg = ( - f"Can't delete {count} organization user because it " - "belongs to an organization owner." - ) - multiple_msg = ( - f"Can't delete {count} organization users because they " - "belong to some organization owners." - ) self.message_user( - request, ngettext(single_msg, multiple_msg, count), messages.ERROR + request, + ngettext( + "Can't delete %(count)d organization user because it " + "belongs to an organization owner.", + "Can't delete %(count)d organization users because they " + "belong to some organization owners.", + count, + ) + % {"count": count}, + messages.ERROR, ) # otherwise proceed but remove org users from the delete queryset return delete_selected(self, request, queryset) diff --git a/openwisp_users/base/models.py b/openwisp_users/base/models.py index 52ff71ce5..f2a38d3e4 100644 --- a/openwisp_users/base/models.py +++ b/openwisp_users/base/models.py @@ -498,9 +498,10 @@ def clean(self): ): raise ValidationError( _( - f"{self.user.username} is the owner of the organization: " - f"{self.organization}, and cannot be downgraded" + "%(username)s is the owner of the organization: " + "%(organization)s, and cannot be downgraded" ) + % {"username": self.user.username, "organization": self.organization} ) @property diff --git a/openwisp_users/locale/de/LC_MESSAGES/django.po b/openwisp_users/locale/de/LC_MESSAGES/django.po index 1aa68b8af..cacd6bd19 100644 --- a/openwisp_users/locale/de/LC_MESSAGES/django.po +++ b/openwisp_users/locale/de/LC_MESSAGES/django.po @@ -5,25 +5,496 @@ # msgid "" msgstr "" -"POT-Creation-Date: 2021-09-01 18:32-0500\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-03 10:10+0200\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: serializers.py:422 +#: admin.py:152 +msgid "Email" +msgstr "E-Mail" + +#: admin.py:160 +msgid "A staff user must belong to a group, please select one." +msgstr "" +"Ein Mitarbeiter muss einer Gruppe angehören, bitte wählen Sie eine aus." + +#: admin.py:180 admin.py:192 admin.py:533 +msgid "Account expiration" +msgstr "Ablauf des Kontos" + +#: admin.py:183 admin.py:195 +msgid "Personal Info" +msgstr "Persönliche Informationen" + +#: admin.py:185 admin.py:197 +msgid "Permissions" +msgstr "Berechtigungen" + +#: admin.py:253 +msgid "Are you sure?" +msgstr "Sind Sie sicher?" + +#: admin.py:267 +msgid "Flag selected users as inactive" +msgstr "Ausgewählte Benutzer als inaktiv markieren" + +#: admin.py:276 +#, python-format +msgid "Successfully made %(count)d %(model_name)s inactive." +msgstr "%(count)d %(model_name)s erfolgreich deaktiviert." + +#: admin.py:285 +msgid "Flag selected users as active" +msgstr "Ausgewählte Benutzer als aktiv markieren" + +#: admin.py:300 +#, python-format +msgid "Successfully activated %(count)d %(model_name)s" +msgstr "%(count)d %(model_name)s erfolgreich aktiviert" + +#: admin.py:309 +#, python-format +msgid "and cleared %(count)d expiration date." +msgid_plural "and cleared %(count)d expiration dates." +msgstr[0] "und %(count)d Ablaufdatum gelöscht." +msgstr[1] "und %(count)d Ablaufdaten gelöscht." + +#: admin.py:416 +#, python-format +msgid "Can't delete %(count)d organization owner: %(owners)s" +msgid_plural "Can't delete %(count)d organization owners: %(owners)s" +msgstr[0] "" +"%(count)d Organisationseigentümer kann nicht gelöscht werden: %(owners)s" +msgstr[1] "" +"%(count)d Organisationseigentümer können nicht gelöscht werden: %(owners)s" + +#: admin.py:501 admin.py:667 +#, python-format +msgid "" +"Can't delete %(count)d organization user because it belongs to an " +"organization owner." +msgid_plural "" +"Can't delete %(count)d organization users because they belong to some " +"organization owners." +msgstr[0] "" +"%(count)d Organisationsbenutzer kann nicht gelöscht werden, da er einem " +"Organisationseigentümer gehört." +msgstr[1] "" +"%(count)d Organisationsbenutzer können nicht gelöscht werden, da sie einigen " +"Organisationseigentümern gehören." + +#: admin.py:535 +msgid "Internal" +msgstr "Intern" + +#: admin.py:625 +msgid "" +"Can't delete this organization user because it belongs to an organization " +"owner." +msgstr "" +"Dieser Organisationsbenutzer kann nicht gelöscht werden, da er dem " +"Eigentümer der Organisation gehört." + +#: admin.py:654 +msgid "Can't delete organization users which belong to owners." +msgstr "" +"Organisationsbenutzer, die Eigentümern gehören, können nicht gelöscht werden." + +#: admin.py:736 +msgid "Create new API key" +msgstr "Neuen API-Schlüssel erstellen" + +#: admin.py:797 admin.py:808 base/models.py:554 +msgid "API key" +msgstr "API-Schlüssel" + +#: api/authentication.py:26 +msgid "Invalid token header. No credentials provided." +msgstr "Ungültiger Token-Header. Keine Zugangsdaten angegeben." + +#: api/authentication.py:29 +msgid "Invalid token header. Token string should not contain spaces." +msgstr "" +"Ungültiger Token-Header. Die Token-Zeichenfolge darf keine Leerzeichen " +"enthalten." + +#: api/authentication.py:36 +msgid "" +"Invalid token header. Token string should not contain invalid characters." +msgstr "" +"Ungültiger Token-Header. Die Token-Zeichenfolge darf keine ungültigen " +"Zeichen enthalten." + +#: api/authentication.py:46 +msgid "Invalid or expired token." +msgstr "Ungültiges oder abgelaufenes Token." + +#: api/permissions.py:21 +msgid "Organization not found, `organization_field` not implemented correctly." +msgstr "" +"Organisation nicht gefunden, `organization_field` wurde nicht korrekt " +"implementiert." + +#: api/permissions.py:49 +msgid "" +"View's permission_classes not implemented correctly.Please use one of the " +"child classes: IsOrganizationMember, IsOrganizationManager or " +"IsOrganizationOwner." +msgstr "" +"permission_classes der View wurden nicht korrekt implementiert. Bitte " +"verwenden Sie eine der Unterklassen: IsOrganizationMember, " +"IsOrganizationManager oder IsOrganizationOwner." + +#: api/permissions.py:58 +msgid "" +"User is not a member of the organization to which the requested resource " +"belongs." +msgstr "" +"Der Benutzer ist kein Mitglied der Organisation, zu der die angeforderte " +"Ressource gehört." + +#: api/permissions.py:68 +msgid "" +"User is not a manager of the organization to which the requested resource " +"belongs." +msgstr "" +"Der Benutzer ist kein Verwalter der Organisation, zu der die angeforderte " +"Ressource gehört." + +#: api/permissions.py:84 +msgid "" +"User is not a owner of the organization to which the requested resource " +"belongs." +msgstr "" +"Der Benutzer ist nicht Eigentümer der Organisation, zu der die angeforderte " +"Ressource gehört." + +#: api/serializers.py:50 +msgid "organization with this slug already exists." +msgstr "Eine Organisation mit diesem Slug existiert bereits." + +#: api/serializers.py:264 +msgid "This field cannot be blank." +msgstr "Dieses Feld darf nicht leer sein." + +#: api/serializers.py:436 +msgid "The two password fields didn’t match." +msgstr "Die beiden Passwortfelder stimmen nicht überein." + +#: api/serializers.py:452 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "" +"Ihr altes Passwort wurde falsch eingegeben. Bitte geben Sie es erneut ein." + +#: api/serializers.py:463 msgid "New password cannot be the same as your old password." msgstr "Neues Passwort darf nicht mit Ihrem alten Passwort identisch sein." -#: views.py:198 +#: api/views.py:190 msgid "Password updated successfully" msgstr "Passwort erfolgreich aktualisiert" -#: tasks.py:58 +#: apps.py:23 +msgid "Users and Organizations" +msgstr "Benutzer und Organisationen" + +#: apps.py:34 +msgid "Users" +msgstr "Benutzer" + +#: apps.py:40 +msgid "Organizations" +msgstr "Organisationen" + +#: apps.py:46 +msgid "Groups & Permissions" +msgstr "Gruppen & Berechtigungen" + +#: apps.py:54 +msgid "Organization Owners" +msgstr "Organisationseigentümer" + +#: apps.py:61 +msgid "Organization Users" +msgstr "Organisationsbenutzer" + +#: apps.py:69 +msgid "Users & Organizations" +msgstr "Benutzer & Organisationen" + +#: base/models.py:61 +msgid "email address" +msgstr "E-Mail-Adresse" + +#: base/models.py:62 +msgid "bio" +msgstr "Biografie" + +#: base/models.py:63 base/models.py:454 +msgid "URL" +msgstr "URL" + +#: base/models.py:64 +msgid "company" +msgstr "Unternehmen" + +#: base/models.py:65 +msgid "location" +msgstr "Standort" + +#: base/models.py:67 +msgid "phone number" +msgstr "Telefonnummer" + +#: base/models.py:69 +msgid "birth date" +msgstr "Geburtsdatum" + +#: base/models.py:71 +msgid "notes" +msgstr "Notizen" + +#: base/models.py:71 +msgid "notes for internal usage" +msgstr "Notizen für den internen Gebrauch" + +#: base/models.py:78 +msgid "password updated" +msgstr "Passwort aktualisiert" + +#: base/models.py:80 +msgid "expiration date" +msgstr "Ablaufdatum" + +#: base/models.py:84 +msgid "" +"If set, the account will be deactivated after this date passes and the user " +"will no longer be able to log in." +msgstr "" +"Falls gesetzt, wird das Konto nach Ablauf dieses Datums deaktiviert und der " +"Benutzer kann sich nicht mehr anmelden." + +#: base/models.py:206 +msgid "User with this Email address already exists." +msgstr "Ein Benutzer mit dieser E-Mail-Adresse existiert bereits." + +#: base/models.py:236 +msgid "Expiration date cannot be in the past." +msgstr "Das Ablaufdatum darf nicht in der Vergangenheit liegen." + +#: base/models.py:247 +msgid "" +"Cannot activate an expired account. Clear or extend the expiration date " +"first." +msgstr "" +"Ein abgelaufenes Konto kann nicht aktiviert werden. Löschen oder verlängern " +"Sie zuerst das Ablaufdatum." + +#: base/models.py:326 +msgid "Your account has been deactivated" +msgstr "Ihr Konto wurde deaktiviert" + +#: base/models.py:404 +msgid "Action Required: Account Expiration Notice" +msgstr "Aktion erforderlich: Hinweis zum Kontoablauf" + +#: base/models.py:442 +msgid "group" +msgstr "Gruppe" + +#: base/models.py:443 +msgid "groups" +msgstr "Gruppen" + +#: base/models.py:452 +msgid "description" +msgstr "Beschreibung" + +#: base/models.py:453 +msgid "email" +msgstr "E-Mail" + +#: base/models.py:459 +msgid "disabled" +msgstr "deaktiviert" + +#: base/models.py:500 +#, python-format +msgid "" +"%(username)s is the owner of the organization: %(organization)s, and cannot " +"be downgraded" +msgstr "" +"%(username)s ist der Eigentümer der Organisation: %(organization)s und kann " +"nicht herabgestuft werden" + +#: base/models.py:528 +msgid "The selected user is not member of this organization." +msgstr "Der ausgewählte Benutzer ist kein Mitglied dieser Organisation." + +#: base/models.py:555 +msgid "API keys" +msgstr "API-Schlüssel" + +#: management/commands/export_users.py:23 +msgid "Exports user data to a CSV file" +msgstr "Exportiert Benutzerdaten in eine CSV-Datei" + +#: management/commands/export_users.py:46 +msgid "Comma-separated list of fields to exclude from export" +msgstr "" +"Durch Kommas getrennte Liste von Feldern, die vom Export ausgeschlossen " +"werden sollen" + +#: management/commands/export_users.py:53 +msgid "" +"Filename for the exported CSV, defaults to \"openwisp_exported_users.csv\"" +msgstr "" +"Dateiname für die exportierte CSV-Datei, Standardwert ist " +"\"openwisp_exported_users.csv\"" + +#: management/commands/export_users.py:97 +#, python-brace-format +msgid "User data exported successfully to {filename}!" +msgstr "Benutzerdaten erfolgreich nach {filename} exportiert!" + +#: management/commands/export_users.py:180 +msgid "Error calling function {func_name!r} for field '{name}': {e}" +msgstr "" +"Fehler beim Aufruf der Funktion {func_name!r} für das Feld '{name}': {e}" + +#: middleware.py:38 +msgid "Your password has expired, please update your password." +msgstr "Ihr Passwort ist abgelaufen, bitte aktualisieren Sie Ihr Passwort." + +#: mixins.py:32 +#, python-brace-format +msgid "" +"Please ensure that the organization of this {object_label} and the " +"organization of the related {related_object_label} match." +msgstr "" +"Bitte stellen Sie sicher, dass die Organisation dieses {object_label} mit " +"der Organisation des zugehörigen {related_object_label} übereinstimmt." + +#: mixins.py:65 +#, python-brace-format +msgid "" +"The organization of this {object_label} cannot be changed because {count} " +"{related_object_label} is still related to it" +msgid_plural "" +"The organization of this {object_label} cannot be changed because {count} " +"{related_object_label} are still related to it" +msgstr[0] "" +"Die Organisation dieses {object_label} kann nicht geändert werden, da " +"{count} {related_object_label} noch damit verknüpft ist" +msgstr[1] "" +"Die Organisation dieses {object_label} kann nicht geändert werden, da " +"{count} {related_object_label} noch damit verknüpft sind" + +#: mixins.py:88 multitenancy.py:150 +msgid "organization" +msgstr "Organisation" + +#: multitenancy.py:38 +msgid "name" +msgstr "Name" + +#: password_validation.py:17 +msgid "You cannot re-use your current password. Enter a new password." +msgstr "" +"Sie können Ihr aktuelles Passwort nicht erneut verwenden. Geben Sie ein " +"neues Passwort ein." + +#: password_validation.py:21 +msgid "Your password cannot be the same as your current password." +msgstr "Ihr Passwort darf nicht mit Ihrem aktuellen Passwort identisch sein." + +#: tasks.py:62 msgid "Action Required: Password Expiry Notice" msgstr "Aktion erforderlich: Passwortablaufbenachrichtigung" -#: tasks.py:73 +#: tasks.py:77 msgid "Change password" msgstr "Passwort ändern" + +#: templates/admin/openwisp_users/action_confirmation.html:15 +msgid "Home" +msgstr "Startseite" + +#: templates/admin/openwisp_users/action_confirmation.html:18 +msgid "Modify active status" +msgstr "Aktiven Status ändern" + +#: templates/admin/openwisp_users/action_confirmation.html:24 +msgid "Are you sure you want to make the selected users inactive?" +msgstr "" +"Sind Sie sicher, dass Sie die ausgewählten Benutzer inaktiv setzen möchten?" + +#: templates/admin/openwisp_users/action_confirmation.html:26 +msgid "Are you sure you want to make the selected users active?" +msgstr "" +"Sind Sie sicher, dass Sie die ausgewählten Benutzer aktiv setzen möchten?" + +#: templates/admin/openwisp_users/action_confirmation.html:28 +msgid "Summary" +msgstr "Zusammenfassung" + +#: templates/admin/openwisp_users/action_confirmation.html:31 +msgid "User" +msgstr "Benutzer" + +#: templates/admin/openwisp_users/action_confirmation.html:40 +msgid "Confirm" +msgstr "Bestätigen" + +#: templates/admin/openwisp_users/action_confirmation.html:42 +msgid "No, take me back" +msgstr "Nein, zurück" + +#: templates/admin/openwisp_users/login.html:7 +msgid "Please correct the error below" +msgstr "Bitte korrigieren Sie den folgenden Fehler" + +#: templates/admin/openwisp_users/login.html:7 +msgid "Please correct the errors below" +msgstr "Bitte korrigieren Sie die folgenden Fehler" + +#: templates/admin/openwisp_users/login.html:23 +#, python-format +msgid "" +"You are authenticated as %(username)s, but are not authorized to access this " +"page. Would you like to login to a different account?" +msgstr "" +"Sie sind als %(username)s angemeldet, sind jedoch nicht berechtigt, auf " +"diese Seite zuzugreifen. Möchten Sie sich mit einem anderen Konto anmelden?" + +#: templates/admin/openwisp_users/login.html:34 +msgid "Email, phone number or username" +msgstr "E-Mail, Telefonnummer oder Benutzername" + +#: templates/admin/openwisp_users/login.html:44 +msgid "Forgot Password?" +msgstr "Passwort vergessen?" + +#: templates/admin/openwisp_users/login.html:47 +msgid "Log in" +msgstr "Anmelden" + +#: templates/admin/openwisp_users/user/change_form.html:9 +msgid "" +"\n" +" You do not have permission to edit or delete this user because they " +"are owner of an organization.\n" +" " +msgstr "" +"\n" +" Sie haben keine Berechtigung, diesen Benutzer zu bearbeiten oder zu " +"löschen, da er Eigentümer einer Organisation ist.\n" +" " + +#: widgets.py:5 +msgid "Shared systemwide (no organization)" +msgstr "Systemweit freigegeben (keine Organisation)" diff --git a/openwisp_users/locale/it/LC_MESSAGES/django.po b/openwisp_users/locale/it/LC_MESSAGES/django.po index 624db1a87..890f4a01a 100644 --- a/openwisp_users/locale/it/LC_MESSAGES/django.po +++ b/openwisp_users/locale/it/LC_MESSAGES/django.po @@ -5,37 +5,493 @@ # msgid "" msgstr "" -"POT-Creation-Date: 2021-09-01 18:32-0500\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-03 10:10+0200\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: admin.py:488 +#: admin.py:152 +msgid "Email" +msgstr "Email" + +#: admin.py:160 +msgid "A staff user must belong to a group, please select one." +msgstr "Un utente dello staff deve appartenere a un gruppo, selezionane uno." + +#: admin.py:180 admin.py:192 admin.py:533 msgid "Account expiration" msgstr "Scadenza dell'account" -#: admin.py:490 +#: admin.py:183 admin.py:195 +msgid "Personal Info" +msgstr "Informazioni personali" + +#: admin.py:185 admin.py:197 +msgid "Permissions" +msgstr "Permessi" + +#: admin.py:253 +msgid "Are you sure?" +msgstr "Sei sicuro?" + +#: admin.py:267 +msgid "Flag selected users as inactive" +msgstr "Contrassegna gli utenti selezionati come inattivi" + +#: admin.py:276 +#, python-format +msgid "Successfully made %(count)d %(model_name)s inactive." +msgstr "%(count)d %(model_name)s disattivati con successo." + +#: admin.py:285 +msgid "Flag selected users as active" +msgstr "Contrassegna gli utenti selezionati come attivi" + +#: admin.py:300 +#, python-format +msgid "Successfully activated %(count)d %(model_name)s" +msgstr "%(count)d %(model_name)s attivati con successo" + +#: admin.py:309 +#, python-format +msgid "and cleared %(count)d expiration date." +msgid_plural "and cleared %(count)d expiration dates." +msgstr[0] "e cancellata %(count)d data di scadenza." +msgstr[1] "e cancellate %(count)d date di scadenza." + +#: admin.py:416 +#, python-format +msgid "Can't delete %(count)d organization owner: %(owners)s" +msgid_plural "Can't delete %(count)d organization owners: %(owners)s" +msgstr[0] "" +"Impossibile eliminare %(count)d proprietario dell'organizzazione: %(owners)s" +msgstr[1] "" +"Impossibile eliminare %(count)d proprietari dell'organizzazione: %(owners)s" + +#: admin.py:501 admin.py:667 +#, python-format +msgid "" +"Can't delete %(count)d organization user because it belongs to an " +"organization owner." +msgid_plural "" +"Can't delete %(count)d organization users because they belong to some " +"organization owners." +msgstr[0] "" +"Impossibile eliminare %(count)d utente dell'organizzazione perché appartiene " +"al proprietario dell'organizzazione." +msgstr[1] "" +"Impossibile eliminare %(count)d utenti dell'organizzazione perché " +"appartengono ad alcuni proprietari dell'organizzazione." + +#: admin.py:535 msgid "Internal" msgstr "Interno" -#: api/serializers.py:477 +#: admin.py:625 +msgid "" +"Can't delete this organization user because it belongs to an organization " +"owner." +msgstr "" +"Impossibile eliminare questo utente dell'organizzazione perché appartiene al " +"proprietario dell'organizzazione." + +#: admin.py:654 +msgid "Can't delete organization users which belong to owners." +msgstr "" +"Impossibile eliminare gli utenti dell'organizzazione che appartengono ai " +"proprietari." + +#: admin.py:736 +msgid "Create new API key" +msgstr "Crea nuova chiave API" + +#: admin.py:797 admin.py:808 base/models.py:554 +msgid "API key" +msgstr "Chiave API" + +#: api/authentication.py:26 +msgid "Invalid token header. No credentials provided." +msgstr "Intestazione del token non valida. Nessuna credenziale fornita." + +#: api/authentication.py:29 +msgid "Invalid token header. Token string should not contain spaces." +msgstr "" +"Intestazione del token non valida. La stringa del token non deve contenere " +"spazi." + +#: api/authentication.py:36 +msgid "" +"Invalid token header. Token string should not contain invalid characters." +msgstr "" +"Intestazione del token non valida. La stringa del token non deve contenere " +"caratteri non validi." + +#: api/authentication.py:46 +msgid "Invalid or expired token." +msgstr "Token non valido o scaduto." + +#: api/permissions.py:21 +msgid "Organization not found, `organization_field` not implemented correctly." +msgstr "" +"Organizzazione non trovata, `organization_field` non implementato " +"correttamente." + +#: api/permissions.py:49 +msgid "" +"View's permission_classes not implemented correctly.Please use one of the " +"child classes: IsOrganizationMember, IsOrganizationManager or " +"IsOrganizationOwner." +msgstr "" +"permission_classes della view non implementate correttamente. Utilizza una " +"delle classi figlie: IsOrganizationMember, IsOrganizationManager o " +"IsOrganizationOwner." + +#: api/permissions.py:58 +msgid "" +"User is not a member of the organization to which the requested resource " +"belongs." +msgstr "" +"L'utente non è membro dell'organizzazione a cui appartiene la risorsa " +"richiesta." + +#: api/permissions.py:68 +msgid "" +"User is not a manager of the organization to which the requested resource " +"belongs." +msgstr "" +"L'utente non è un manager dell'organizzazione a cui appartiene la risorsa " +"richiesta." + +#: api/permissions.py:84 +msgid "" +"User is not a owner of the organization to which the requested resource " +"belongs." +msgstr "" +"L'utente non è proprietario dell'organizzazione a cui appartiene la risorsa " +"richiesta." + +#: api/serializers.py:50 +msgid "organization with this slug already exists." +msgstr "esiste già un'organizzazione con questo slug." + +#: api/serializers.py:264 +msgid "This field cannot be blank." +msgstr "Questo campo non può essere vuoto." + +#: api/serializers.py:436 +msgid "The two password fields didn’t match." +msgstr "I due campi password non corrispondono." + +#: api/serializers.py:452 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "" +"La tua vecchia password non è stata inserita correttamente. Per favore, " +"inseriscila di nuovo." + +#: api/serializers.py:463 msgid "New password cannot be the same as your old password." msgstr "La nuova password non può essere uguale alla vecchia password." -#: api/views.py:196 +#: api/views.py:190 msgid "Password updated successfully" msgstr "Password aggiornata con successo" -#: base/models.py:350 +#: apps.py:23 +msgid "Users and Organizations" +msgstr "Utenti e Organizzazioni" + +#: apps.py:34 +msgid "Users" +msgstr "Utenti" + +#: apps.py:40 +msgid "Organizations" +msgstr "Organizzazioni" + +#: apps.py:46 +msgid "Groups & Permissions" +msgstr "Gruppi e Permessi" + +#: apps.py:54 +msgid "Organization Owners" +msgstr "Proprietari delle organizzazioni" + +#: apps.py:61 +msgid "Organization Users" +msgstr "Utenti delle organizzazioni" + +#: apps.py:69 +msgid "Users & Organizations" +msgstr "Utenti e Organizzazioni" + +#: base/models.py:61 +msgid "email address" +msgstr "indirizzo email" + +#: base/models.py:62 +msgid "bio" +msgstr "biografia" + +#: base/models.py:63 base/models.py:454 +msgid "URL" +msgstr "URL" + +#: base/models.py:64 +msgid "company" +msgstr "azienda" + +#: base/models.py:65 +msgid "location" +msgstr "posizione" + +#: base/models.py:67 +msgid "phone number" +msgstr "numero di telefono" + +#: base/models.py:69 +msgid "birth date" +msgstr "data di nascita" + +#: base/models.py:71 +msgid "notes" +msgstr "note" + +#: base/models.py:71 +msgid "notes for internal usage" +msgstr "note per uso interno" + +#: base/models.py:78 +msgid "password updated" +msgstr "password aggiornata" + +#: base/models.py:80 +msgid "expiration date" +msgstr "data di scadenza" + +#: base/models.py:84 +msgid "" +"If set, the account will be deactivated after this date passes and the user " +"will no longer be able to log in." +msgstr "" +"Se impostata, l'account verrà disattivato dopo questa data e l'utente non " +"potrà più accedere." + +#: base/models.py:206 +msgid "User with this Email address already exists." +msgstr "Un utente con questo indirizzo email esiste già." + +#: base/models.py:236 +msgid "Expiration date cannot be in the past." +msgstr "La data di scadenza non può essere nel passato." + +#: base/models.py:247 +msgid "" +"Cannot activate an expired account. Clear or extend the expiration date " +"first." +msgstr "" +"Impossibile attivare un account scaduto. Cancella o estendi prima la data di " +"scadenza." + +#: base/models.py:326 +msgid "Your account has been deactivated" +msgstr "Il tuo account è stato disattivato" + +#: base/models.py:404 msgid "Action Required: Account Expiration Notice" msgstr "Azione richiesta: Avviso di scadenza dell'account" +#: base/models.py:442 +msgid "group" +msgstr "gruppo" + +#: base/models.py:443 +msgid "groups" +msgstr "gruppi" + +#: base/models.py:452 +msgid "description" +msgstr "descrizione" + +#: base/models.py:453 +msgid "email" +msgstr "email" + +#: base/models.py:459 +msgid "disabled" +msgstr "disattivato" + +#: base/models.py:500 +#, python-format +msgid "" +"%(username)s is the owner of the organization: %(organization)s, and cannot " +"be downgraded" +msgstr "" +"%(username)s è il proprietario dell'organizzazione: %(organization)s, e non " +"può essere declassato" + +#: base/models.py:528 +msgid "The selected user is not member of this organization." +msgstr "L'utente selezionato non è membro di questa organizzazione." + +#: base/models.py:555 +msgid "API keys" +msgstr "Chiavi API" + +#: management/commands/export_users.py:23 +msgid "Exports user data to a CSV file" +msgstr "Esporta i dati degli utenti in un file CSV" + +#: management/commands/export_users.py:46 +msgid "Comma-separated list of fields to exclude from export" +msgstr "Elenco di campi separati da virgola da escludere dall'esportazione" + +#: management/commands/export_users.py:53 +msgid "" +"Filename for the exported CSV, defaults to \"openwisp_exported_users.csv\"" +msgstr "" +"Nome del file CSV esportato, il valore predefinito è " +"\"openwisp_exported_users.csv\"" + +#: management/commands/export_users.py:97 +#, python-brace-format +msgid "User data exported successfully to {filename}!" +msgstr "Dati utente esportati con successo in {filename}!" + +#: management/commands/export_users.py:180 +msgid "Error calling function {func_name!r} for field '{name}': {e}" +msgstr "" +"Errore durante la chiamata della funzione {func_name!r} per il campo " +"'{name}': {e}" + +#: middleware.py:38 +msgid "Your password has expired, please update your password." +msgstr "La tua password è scaduta, aggiornala." + +#: mixins.py:32 +#, python-brace-format +msgid "" +"Please ensure that the organization of this {object_label} and the " +"organization of the related {related_object_label} match." +msgstr "" +"Assicurati che l'organizzazione di questo {object_label} corrisponda " +"all'organizzazione del relativo {related_object_label}." + +#: mixins.py:65 +#, python-brace-format +msgid "" +"The organization of this {object_label} cannot be changed because {count} " +"{related_object_label} is still related to it" +msgid_plural "" +"The organization of this {object_label} cannot be changed because {count} " +"{related_object_label} are still related to it" +msgstr[0] "" +"L'organizzazione di questo {object_label} non può essere modificata perché " +"{count} {related_object_label} è ancora collegato ad essa" +msgstr[1] "" +"L'organizzazione di questo {object_label} non può essere modificata perché " +"{count} {related_object_label} sono ancora collegati ad essa" + +#: mixins.py:88 multitenancy.py:150 +msgid "organization" +msgstr "organizzazione" + +#: multitenancy.py:38 +msgid "name" +msgstr "nome" + +#: password_validation.py:17 +msgid "You cannot re-use your current password. Enter a new password." +msgstr "" +"Non puoi riutilizzare la tua password attuale. Inserisci una nuova password." + +#: password_validation.py:21 +msgid "Your password cannot be the same as your current password." +msgstr "La tua password non può essere uguale alla password attuale." + #: tasks.py:62 msgid "Action Required: Password Expiry Notice" msgstr "Azione richiesta: Avviso di scadenza della password" -#: tasks.py:79 +#: tasks.py:77 msgid "Change password" msgstr "Cambia password" + +#: templates/admin/openwisp_users/action_confirmation.html:15 +msgid "Home" +msgstr "Home" + +#: templates/admin/openwisp_users/action_confirmation.html:18 +msgid "Modify active status" +msgstr "Modifica stato attivo" + +#: templates/admin/openwisp_users/action_confirmation.html:24 +msgid "Are you sure you want to make the selected users inactive?" +msgstr "Sei sicuro di voler rendere inattivi gli utenti selezionati?" + +#: templates/admin/openwisp_users/action_confirmation.html:26 +msgid "Are you sure you want to make the selected users active?" +msgstr "Sei sicuro di voler rendere attivi gli utenti selezionati?" + +#: templates/admin/openwisp_users/action_confirmation.html:28 +msgid "Summary" +msgstr "Riepilogo" + +#: templates/admin/openwisp_users/action_confirmation.html:31 +msgid "User" +msgstr "Utente" + +#: templates/admin/openwisp_users/action_confirmation.html:40 +msgid "Confirm" +msgstr "Conferma" + +#: templates/admin/openwisp_users/action_confirmation.html:42 +msgid "No, take me back" +msgstr "No, torna indietro" + +#: templates/admin/openwisp_users/login.html:7 +msgid "Please correct the error below" +msgstr "Correggi l'errore sottostante" + +#: templates/admin/openwisp_users/login.html:7 +msgid "Please correct the errors below" +msgstr "Correggi gli errori sottostanti" + +#: templates/admin/openwisp_users/login.html:23 +#, python-format +msgid "" +"You are authenticated as %(username)s, but are not authorized to access this " +"page. Would you like to login to a different account?" +msgstr "" +"Sei autenticato come %(username)s, ma non sei autorizzato ad accedere a " +"questa pagina. Vuoi accedere con un altro account?" + +#: templates/admin/openwisp_users/login.html:34 +msgid "Email, phone number or username" +msgstr "Email, numero di telefono o nome utente" + +#: templates/admin/openwisp_users/login.html:44 +msgid "Forgot Password?" +msgstr "Password dimenticata?" + +#: templates/admin/openwisp_users/login.html:47 +msgid "Log in" +msgstr "Accedi" + +#: templates/admin/openwisp_users/user/change_form.html:9 +msgid "" +"\n" +" You do not have permission to edit or delete this user because they " +"are owner of an organization.\n" +" " +msgstr "" +"\n" +" Non hai il permesso di modificare o eliminare questo utente perché è " +"proprietario di un'organizzazione.\n" +" " + +#: widgets.py:5 +msgid "Shared systemwide (no organization)" +msgstr "Condiviso a livello di sistema (nessuna organizzazione)" diff --git a/openwisp_users/locale/ru/LC_MESSAGES/django.po b/openwisp_users/locale/ru/LC_MESSAGES/django.po index 2a1e3298d..b16180c6c 100644 --- a/openwisp_users/locale/ru/LC_MESSAGES/django.po +++ b/openwisp_users/locale/ru/LC_MESSAGES/django.po @@ -5,25 +5,492 @@ # msgid "" msgstr "" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-03 10:10+0200\n" "Language: ru_RU\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%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 " -"&& (n%100<12 || n%100>14) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" -#: serializers.py:422 +#: admin.py:152 +msgid "Email" +msgstr "Email" + +#: admin.py:160 +msgid "A staff user must belong to a group, please select one." +msgstr "Сотрудник должен принадлежать к группе, пожалуйста, выберите одну." + +#: admin.py:180 admin.py:192 admin.py:533 +msgid "Account expiration" +msgstr "Срок действия учётной записи" + +#: admin.py:183 admin.py:195 +msgid "Personal Info" +msgstr "Личная информация" + +#: admin.py:185 admin.py:197 +msgid "Permissions" +msgstr "Права доступа" + +#: admin.py:253 +msgid "Are you sure?" +msgstr "Вы уверены?" + +#: admin.py:267 +msgid "Flag selected users as inactive" +msgstr "Отметить выбранных пользователей как неактивных" + +#: admin.py:276 +#, python-format +msgid "Successfully made %(count)d %(model_name)s inactive." +msgstr "Успешно деактивировано %(count)d %(model_name)s." + +#: admin.py:285 +msgid "Flag selected users as active" +msgstr "Отметить выбранных пользователей как активных" + +#: admin.py:300 +#, python-format +msgid "Successfully activated %(count)d %(model_name)s" +msgstr "Успешно активировано %(count)d %(model_name)s" + +#: admin.py:309 +#, python-format +msgid "and cleared %(count)d expiration date." +msgid_plural "and cleared %(count)d expiration dates." +msgstr[0] "и очищена %(count)d дата истечения срока действия." +msgstr[1] "и очищены %(count)d даты истечения срока действия." +msgstr[2] "и очищено %(count)d дат истечения срока действия." + +#: admin.py:416 +#, python-format +msgid "Can't delete %(count)d organization owner: %(owners)s" +msgid_plural "Can't delete %(count)d organization owners: %(owners)s" +msgstr[0] "Невозможно удалить %(count)d владельца организации: %(owners)s" +msgstr[1] "Невозможно удалить %(count)d владельцев организации: %(owners)s" +msgstr[2] "Невозможно удалить %(count)d владельцев организации: %(owners)s" + +#: admin.py:501 admin.py:667 +#, python-format +msgid "" +"Can't delete %(count)d organization user because it belongs to an " +"organization owner." +msgid_plural "" +"Can't delete %(count)d organization users because they belong to some " +"organization owners." +msgstr[0] "" +"Невозможно удалить %(count)d пользователя организации, так как он " +"принадлежит владельцу организации." +msgstr[1] "" +"Невозможно удалить %(count)d пользователей организации, так как они " +"принадлежат некоторым владельцам организации." +msgstr[2] "" +"Невозможно удалить %(count)d пользователей организации, так как они " +"принадлежат некоторым владельцам организации." + +#: admin.py:535 +msgid "Internal" +msgstr "Внутреннее" + +#: admin.py:625 +msgid "" +"Can't delete this organization user because it belongs to an organization " +"owner." +msgstr "" +"Невозможно удалить этого пользователя организации, поскольку он принадлежит " +"владельцу организации." + +#: admin.py:654 +msgid "Can't delete organization users which belong to owners." +msgstr "" +"Невозможно удалить пользователей организации, принадлежащих владельцам." + +#: admin.py:736 +msgid "Create new API key" +msgstr "Создать новый API-ключ" + +#: admin.py:797 admin.py:808 base/models.py:554 +msgid "API key" +msgstr "API-ключ" + +#: api/authentication.py:26 +msgid "Invalid token header. No credentials provided." +msgstr "Неверный заголовок токена. Учётные данные не предоставлены." + +#: api/authentication.py:29 +msgid "Invalid token header. Token string should not contain spaces." +msgstr "Неверный заголовок токена. Строка токена не должна содержать пробелов." + +#: api/authentication.py:36 +msgid "" +"Invalid token header. Token string should not contain invalid characters." +msgstr "" +"Неверный заголовок токена. Строка токена не должна содержать недопустимых " +"символов." + +#: api/authentication.py:46 +msgid "Invalid or expired token." +msgstr "Недействительный или истёкший токен." + +#: api/permissions.py:21 +msgid "Organization not found, `organization_field` not implemented correctly." +msgstr "Организация не найдена, `organization_field` реализовано некорректно." + +#: api/permissions.py:49 +msgid "" +"View's permission_classes not implemented correctly.Please use one of the " +"child classes: IsOrganizationMember, IsOrganizationManager or " +"IsOrganizationOwner." +msgstr "" +"Свойство permission_classes у представления реализовано некорректно. " +"Используйте один из дочерних классов: IsOrganizationMember, " +"IsOrganizationManager или IsOrganizationOwner." + +#: api/permissions.py:58 +msgid "" +"User is not a member of the organization to which the requested resource " +"belongs." +msgstr "" +"Пользователь не является участником организации, которой принадлежит " +"запрашиваемый ресурс." + +#: api/permissions.py:68 +msgid "" +"User is not a manager of the organization to which the requested resource " +"belongs." +msgstr "" +"Пользователь не является менеджером организации, которой принадлежит " +"запрашиваемый ресурс." + +#: api/permissions.py:84 +msgid "" +"User is not a owner of the organization to which the requested resource " +"belongs." +msgstr "" +"Пользователь не является владельцем организации, которой принадлежит " +"запрашиваемый ресурс." + +#: api/serializers.py:50 +msgid "organization with this slug already exists." +msgstr "организация с таким slug уже существует." + +#: api/serializers.py:264 +msgid "This field cannot be blank." +msgstr "Это поле не может быть пустым." + +#: api/serializers.py:436 +msgid "The two password fields didn’t match." +msgstr "Два поля пароля не совпадают." + +#: api/serializers.py:452 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Ваш старый пароль введён неверно. Пожалуйста, введите его снова." + +#: api/serializers.py:463 msgid "New password cannot be the same as your old password." msgstr "Новый пароль не может совпадать с вашим старым паролем." -#: views.py:198 +#: api/views.py:190 msgid "Password updated successfully" msgstr "Пароль успешно обновлен" -#: tasks.py:58 +#: apps.py:23 +msgid "Users and Organizations" +msgstr "Пользователи и организации" + +#: apps.py:34 +msgid "Users" +msgstr "Пользователи" + +#: apps.py:40 +msgid "Organizations" +msgstr "Организации" + +#: apps.py:46 +msgid "Groups & Permissions" +msgstr "Группы и права доступа" + +#: apps.py:54 +msgid "Organization Owners" +msgstr "Владельцы организаций" + +#: apps.py:61 +msgid "Organization Users" +msgstr "Пользователи организаций" + +#: apps.py:69 +msgid "Users & Organizations" +msgstr "Пользователи и организации" + +#: base/models.py:61 +msgid "email address" +msgstr "адрес электронной почты" + +#: base/models.py:62 +msgid "bio" +msgstr "биография" + +#: base/models.py:63 base/models.py:454 +msgid "URL" +msgstr "URL" + +#: base/models.py:64 +msgid "company" +msgstr "компания" + +#: base/models.py:65 +msgid "location" +msgstr "местоположение" + +#: base/models.py:67 +msgid "phone number" +msgstr "номер телефона" + +#: base/models.py:69 +msgid "birth date" +msgstr "дата рождения" + +#: base/models.py:71 +msgid "notes" +msgstr "заметки" + +#: base/models.py:71 +msgid "notes for internal usage" +msgstr "заметки для внутреннего использования" + +#: base/models.py:78 +msgid "password updated" +msgstr "пароль обновлён" + +#: base/models.py:80 +msgid "expiration date" +msgstr "дата истечения срока действия" + +#: base/models.py:84 +msgid "" +"If set, the account will be deactivated after this date passes and the user " +"will no longer be able to log in." +msgstr "" +"Если указано, учётная запись будет деактивирована после этой даты, и " +"пользователь больше не сможет войти в систему." + +#: base/models.py:206 +msgid "User with this Email address already exists." +msgstr "Пользователь с таким адресом электронной почты уже существует." + +#: base/models.py:236 +msgid "Expiration date cannot be in the past." +msgstr "Дата истечения срока действия не может быть в прошлом." + +#: base/models.py:247 +msgid "" +"Cannot activate an expired account. Clear or extend the expiration date " +"first." +msgstr "" +"Невозможно активировать истёкшую учётную запись. Сначала очистите или " +"продлите дату истечения срока действия." + +#: base/models.py:326 +msgid "Your account has been deactivated" +msgstr "Ваша учётная запись деактивирована" + +#: base/models.py:404 +msgid "Action Required: Account Expiration Notice" +msgstr "" +"Требуется действие: Уведомление об истечении срока действия учётной записи" + +#: base/models.py:442 +msgid "group" +msgstr "группа" + +#: base/models.py:443 +msgid "groups" +msgstr "группы" + +#: base/models.py:452 +msgid "description" +msgstr "описание" + +#: base/models.py:453 +msgid "email" +msgstr "email" + +#: base/models.py:459 +msgid "disabled" +msgstr "отключено" + +#: base/models.py:500 +#, python-format +msgid "" +"%(username)s is the owner of the organization: %(organization)s, and cannot " +"be downgraded" +msgstr "" +"%(username)s является владельцем организации: %(organization)s, и не может " +"быть понижен в правах" + +#: base/models.py:528 +msgid "The selected user is not member of this organization." +msgstr "Выбранный пользователь не является участником этой организации." + +#: base/models.py:555 +msgid "API keys" +msgstr "API-ключи" + +#: management/commands/export_users.py:23 +msgid "Exports user data to a CSV file" +msgstr "Экспортирует данные пользователей в файл CSV" + +#: management/commands/export_users.py:46 +msgid "Comma-separated list of fields to exclude from export" +msgstr "Список полей, разделённых запятыми, для исключения из экспорта" + +#: management/commands/export_users.py:53 +msgid "" +"Filename for the exported CSV, defaults to \"openwisp_exported_users.csv\"" +msgstr "" +"Имя файла для экспортированного CSV, по умолчанию " +"\"openwisp_exported_users.csv\"" + +#: management/commands/export_users.py:97 +#, python-brace-format +msgid "User data exported successfully to {filename}!" +msgstr "Данные пользователей успешно экспортированы в {filename}!" + +#: management/commands/export_users.py:180 +msgid "Error calling function {func_name!r} for field '{name}': {e}" +msgstr "Ошибка при вызове функции {func_name!r} для поля '{name}': {e}" + +#: middleware.py:38 +msgid "Your password has expired, please update your password." +msgstr "Срок действия вашего пароля истёк, пожалуйста, обновите пароль." + +#: mixins.py:32 +#, python-brace-format +msgid "" +"Please ensure that the organization of this {object_label} and the " +"organization of the related {related_object_label} match." +msgstr "" +"Убедитесь, что организация этого {object_label} совпадает с организацией " +"связанного {related_object_label}." + +#: mixins.py:65 +#, python-brace-format +msgid "" +"The organization of this {object_label} cannot be changed because {count} " +"{related_object_label} is still related to it" +msgid_plural "" +"The organization of this {object_label} cannot be changed because {count} " +"{related_object_label} are still related to it" +msgstr[0] "" +"Организацию этого {object_label} нельзя изменить, так как {count} " +"{related_object_label} всё ещё связан с ним" +msgstr[1] "" +"Организацию этого {object_label} нельзя изменить, так как {count} " +"{related_object_label} всё ещё связаны с ним" +msgstr[2] "" +"Организацию этого {object_label} нельзя изменить, так как {count} " +"{related_object_label} всё ещё связаны с ним" + +#: mixins.py:88 multitenancy.py:150 +msgid "organization" +msgstr "организация" + +#: multitenancy.py:38 +msgid "name" +msgstr "имя" + +#: password_validation.py:17 +msgid "You cannot re-use your current password. Enter a new password." +msgstr "" +"Вы не можете повторно использовать текущий пароль. Введите новый пароль." + +#: password_validation.py:21 +msgid "Your password cannot be the same as your current password." +msgstr "Ваш пароль не должен совпадать с текущим паролем." + +#: tasks.py:62 msgid "Action Required: Password Expiry Notice" msgstr "Требуется действие: Уведомление о сроке действия пароля" -#: tasks.py:73 +#: tasks.py:77 msgid "Change password" msgstr "Изменить пароль" + +#: templates/admin/openwisp_users/action_confirmation.html:15 +msgid "Home" +msgstr "Главная" + +#: templates/admin/openwisp_users/action_confirmation.html:18 +msgid "Modify active status" +msgstr "Изменить статус активности" + +#: templates/admin/openwisp_users/action_confirmation.html:24 +msgid "Are you sure you want to make the selected users inactive?" +msgstr "Вы уверены, что хотите сделать выбранных пользователей неактивными?" + +#: templates/admin/openwisp_users/action_confirmation.html:26 +msgid "Are you sure you want to make the selected users active?" +msgstr "Вы уверены, что хотите сделать выбранных пользователей активными?" + +#: templates/admin/openwisp_users/action_confirmation.html:28 +msgid "Summary" +msgstr "Сводка" + +#: templates/admin/openwisp_users/action_confirmation.html:31 +msgid "User" +msgstr "Пользователь" + +#: templates/admin/openwisp_users/action_confirmation.html:40 +msgid "Confirm" +msgstr "Подтвердить" + +#: templates/admin/openwisp_users/action_confirmation.html:42 +msgid "No, take me back" +msgstr "Нет, вернуться назад" + +#: templates/admin/openwisp_users/login.html:7 +msgid "Please correct the error below" +msgstr "Пожалуйста, исправьте указанную ниже ошибку" + +#: templates/admin/openwisp_users/login.html:7 +msgid "Please correct the errors below" +msgstr "Пожалуйста, исправьте указанные ниже ошибки" + +#: templates/admin/openwisp_users/login.html:23 +#, python-format +msgid "" +"You are authenticated as %(username)s, but are not authorized to access this " +"page. Would you like to login to a different account?" +msgstr "" +"Вы вошли как %(username)s, но не имеете доступа к этой странице. Хотите " +"войти под другой учётной записью?" + +#: templates/admin/openwisp_users/login.html:34 +msgid "Email, phone number or username" +msgstr "Email, номер телефона или имя пользователя" + +#: templates/admin/openwisp_users/login.html:44 +msgid "Forgot Password?" +msgstr "Забыли пароль?" + +#: templates/admin/openwisp_users/login.html:47 +msgid "Log in" +msgstr "Войти" + +#: templates/admin/openwisp_users/user/change_form.html:9 +msgid "" +"\n" +" You do not have permission to edit or delete this user because they " +"are owner of an organization.\n" +" " +msgstr "" +"\n" +" У вас нет разрешения на редактирование или удаление этого " +"пользователя, так как он является владельцем организации.\n" +" " + +#: widgets.py:5 +msgid "Shared systemwide (no organization)" +msgstr "Общий для всей системы (без организации)" diff --git a/openwisp_users/locale/sl/LC_MESSAGES/django.po b/openwisp_users/locale/sl/LC_MESSAGES/django.po index 1fd8f90a8..a2ccd4ee3 100644 --- a/openwisp_users/locale/sl/LC_MESSAGES/django.po +++ b/openwisp_users/locale/sl/LC_MESSAGES/django.po @@ -5,25 +5,475 @@ # msgid "" msgstr "" -"POT-Creation-Date: 2021-09-01 18:32-0500\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-03 10:10+0200\n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: serializers.py:422 +#: admin.py:152 +msgid "Email" +msgstr "E-pošta" + +#: admin.py:160 +msgid "A staff user must belong to a group, please select one." +msgstr "Član osebja mora pripadati skupini, izberite eno." + +#: admin.py:180 admin.py:192 admin.py:533 +msgid "Account expiration" +msgstr "Potek veljavnosti računa" + +#: admin.py:183 admin.py:195 +msgid "Personal Info" +msgstr "Osebni podatki" + +#: admin.py:185 admin.py:197 +msgid "Permissions" +msgstr "Dovoljenja" + +#: admin.py:253 +msgid "Are you sure?" +msgstr "Ali ste prepričani?" + +#: admin.py:267 +msgid "Flag selected users as inactive" +msgstr "Označi izbrane uporabnike kot neaktivne" + +#: admin.py:276 +#, python-format +msgid "Successfully made %(count)d %(model_name)s inactive." +msgstr "Uspešno deaktiviranih %(count)d %(model_name)s." + +#: admin.py:285 +msgid "Flag selected users as active" +msgstr "Označi izbrane uporabnike kot aktivne" + +#: admin.py:300 +#, python-format +msgid "Successfully activated %(count)d %(model_name)s" +msgstr "Uspešno aktiviranih %(count)d %(model_name)s" + +#: admin.py:309 +#, python-format +msgid "and cleared %(count)d expiration date." +msgid_plural "and cleared %(count)d expiration dates." +msgstr[0] "in počiščen %(count)d datum poteka." +msgstr[1] "in počiščenih %(count)d datumov poteka." + +#: admin.py:416 +#, python-format +msgid "Can't delete %(count)d organization owner: %(owners)s" +msgid_plural "Can't delete %(count)d organization owners: %(owners)s" +msgstr[0] "Ni mogoče izbrisati %(count)d lastnika organizacije: %(owners)s" +msgstr[1] "Ni mogoče izbrisati %(count)d lastnikov organizacije: %(owners)s" + +#: admin.py:501 admin.py:667 +#, python-format +msgid "" +"Can't delete %(count)d organization user because it belongs to an " +"organization owner." +msgid_plural "" +"Can't delete %(count)d organization users because they belong to some " +"organization owners." +msgstr[0] "" +"Ni mogoče izbrisati %(count)d uporabnika organizacije, ker pripada lastniku " +"organizacije." +msgstr[1] "" +"Ni mogoče izbrisati %(count)d uporabnikov organizacije, ker pripadajo " +"nekaterim lastnikom organizacije." + +#: admin.py:535 +msgid "Internal" +msgstr "Interno" + +#: admin.py:625 +msgid "" +"Can't delete this organization user because it belongs to an organization " +"owner." +msgstr "" +"Tega uporabnika organizacije ni mogoče izbrisati, ker pripada lastniku " +"organizacije." + +#: admin.py:654 +msgid "Can't delete organization users which belong to owners." +msgstr "Uporabnikov organizacije, ki pripadajo lastnikom, ni mogoče izbrisati." + +#: admin.py:736 +msgid "Create new API key" +msgstr "Ustvari nov API ključ" + +#: admin.py:797 admin.py:808 base/models.py:554 +msgid "API key" +msgstr "API ključ" + +#: api/authentication.py:26 +msgid "Invalid token header. No credentials provided." +msgstr "Neveljavna glava žetona. Poverilnice niso bile posredovane." + +#: api/authentication.py:29 +msgid "Invalid token header. Token string should not contain spaces." +msgstr "Neveljavna glava žetona. Niz žetona ne sme vsebovati presledkov." + +#: api/authentication.py:36 +msgid "" +"Invalid token header. Token string should not contain invalid characters." +msgstr "" +"Neveljavna glava žetona. Niz žetona ne sme vsebovati neveljavnih znakov." + +#: api/authentication.py:46 +msgid "Invalid or expired token." +msgstr "Neveljaven ali potekel žeton." + +#: api/permissions.py:21 +msgid "Organization not found, `organization_field` not implemented correctly." +msgstr "" +"Organizacije ni mogoče najti, `organization_field` ni pravilno implementiran." + +#: api/permissions.py:49 +msgid "" +"View's permission_classes not implemented correctly.Please use one of the " +"child classes: IsOrganizationMember, IsOrganizationManager or " +"IsOrganizationOwner." +msgstr "" +"permission_classes pogleda niso pravilno implementirane. Uporabite enega od " +"podrazredov: IsOrganizationMember, IsOrganizationManager ali " +"IsOrganizationOwner." + +#: api/permissions.py:58 +msgid "" +"User is not a member of the organization to which the requested resource " +"belongs." +msgstr "Uporabnik ni član organizacije, ki ji pripada zahtevani vir." + +#: api/permissions.py:68 +msgid "" +"User is not a manager of the organization to which the requested resource " +"belongs." +msgstr "Uporabnik ni upravitelj organizacije, ki ji pripada zahtevani vir." + +#: api/permissions.py:84 +msgid "" +"User is not a owner of the organization to which the requested resource " +"belongs." +msgstr "Uporabnik ni lastnik organizacije, ki ji pripada zahtevani vir." + +#: api/serializers.py:50 +msgid "organization with this slug already exists." +msgstr "Organizacija s tem nazivom (slug) že obstaja." + +#: api/serializers.py:264 +msgid "This field cannot be blank." +msgstr "To polje ne sme biti prazno." + +#: api/serializers.py:436 +msgid "The two password fields didn’t match." +msgstr "Polji z geslom se ne ujemata." + +#: api/serializers.py:452 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Vaše staro geslo je bilo vneseno napačno. Prosimo, vnesite ga znova." + +#: api/serializers.py:463 msgid "New password cannot be the same as your old password." msgstr "Novo geslo ne more biti enako staremu." -#: views.py:198 +#: api/views.py:190 msgid "Password updated successfully" msgstr "Geslo je bilo uspešno posodobljeno" -#: tasks.py:58 +#: apps.py:23 +msgid "Users and Organizations" +msgstr "Uporabniki in organizacije" + +#: apps.py:34 +msgid "Users" +msgstr "Uporabniki" + +#: apps.py:40 +msgid "Organizations" +msgstr "Organizacije" + +#: apps.py:46 +msgid "Groups & Permissions" +msgstr "Skupine in dovoljenja" + +#: apps.py:54 +msgid "Organization Owners" +msgstr "Lastniki organizacij" + +#: apps.py:61 +msgid "Organization Users" +msgstr "Uporabniki organizacij" + +#: apps.py:69 +msgid "Users & Organizations" +msgstr "Uporabniki in organizacije" + +#: base/models.py:61 +msgid "email address" +msgstr "e-poštni naslov" + +#: base/models.py:62 +msgid "bio" +msgstr "biografija" + +#: base/models.py:63 base/models.py:454 +msgid "URL" +msgstr "URL" + +#: base/models.py:64 +msgid "company" +msgstr "podjetje" + +#: base/models.py:65 +msgid "location" +msgstr "lokacija" + +#: base/models.py:67 +msgid "phone number" +msgstr "telefonska številka" + +#: base/models.py:69 +msgid "birth date" +msgstr "datum rojstva" + +#: base/models.py:71 +msgid "notes" +msgstr "opombe" + +#: base/models.py:71 +msgid "notes for internal usage" +msgstr "opombe za interno uporabo" + +#: base/models.py:78 +msgid "password updated" +msgstr "geslo posodobljeno" + +#: base/models.py:80 +msgid "expiration date" +msgstr "datum poteka" + +#: base/models.py:84 +msgid "" +"If set, the account will be deactivated after this date passes and the user " +"will no longer be able to log in." +msgstr "" +"Če je nastavljeno, bo račun po tem datumu onemogočen in uporabnik se ne bo " +"mogel več prijaviti." + +#: base/models.py:206 +msgid "User with this Email address already exists." +msgstr "Uporabnik s tem e-poštnim naslovom že obstaja." + +#: base/models.py:236 +msgid "Expiration date cannot be in the past." +msgstr "Datum poteka ne sme biti v preteklosti." + +#: base/models.py:247 +msgid "" +"Cannot activate an expired account. Clear or extend the expiration date " +"first." +msgstr "" +"Poteklega računa ni mogoče aktivirati. Najprej počistite ali podaljšajte " +"datum poteka." + +#: base/models.py:326 +msgid "Your account has been deactivated" +msgstr "Vaš račun je bil onemogočen" + +#: base/models.py:404 +msgid "Action Required: Account Expiration Notice" +msgstr "Potrebno dejanje: Obvestilo o poteku računa" + +#: base/models.py:442 +msgid "group" +msgstr "skupina" + +#: base/models.py:443 +msgid "groups" +msgstr "skupine" + +#: base/models.py:452 +msgid "description" +msgstr "opis" + +#: base/models.py:453 +msgid "email" +msgstr "e-pošta" + +#: base/models.py:459 +msgid "disabled" +msgstr "onemogočeno" + +#: base/models.py:500 +#, python-format +msgid "" +"%(username)s is the owner of the organization: %(organization)s, and cannot " +"be downgraded" +msgstr "" +"%(username)s je lastnik organizacije: %(organization)s in ga ni mogoče " +"znižati" + +#: base/models.py:528 +msgid "The selected user is not member of this organization." +msgstr "Izbrani uporabnik ni član te organizacije." + +#: base/models.py:555 +msgid "API keys" +msgstr "API ključi" + +#: management/commands/export_users.py:23 +msgid "Exports user data to a CSV file" +msgstr "Izvozi podatke uporabnikov v datoteko CSV" + +#: management/commands/export_users.py:46 +msgid "Comma-separated list of fields to exclude from export" +msgstr "Z vejico ločen seznam polj, ki jih želite izključiti iz izvoza" + +#: management/commands/export_users.py:53 +msgid "" +"Filename for the exported CSV, defaults to \"openwisp_exported_users.csv\"" +msgstr "" +"Ime datoteke za izvoženo datoteko CSV, privzeto " +"\"openwisp_exported_users.csv\"" + +#: management/commands/export_users.py:97 +#, python-brace-format +msgid "User data exported successfully to {filename}!" +msgstr "Podatki uporabnikov so bili uspešno izvoženi v {filename}!" + +#: management/commands/export_users.py:180 +msgid "Error calling function {func_name!r} for field '{name}': {e}" +msgstr "Napaka pri klicu funkcije {func_name!r} za polje '{name}': {e}" + +#: middleware.py:38 +msgid "Your password has expired, please update your password." +msgstr "Vaše geslo je poteklo, prosimo, posodobite ga." + +#: mixins.py:32 +#, python-brace-format +msgid "" +"Please ensure that the organization of this {object_label} and the " +"organization of the related {related_object_label} match." +msgstr "" +"Prepričajte se, da se organizacija tega {object_label} ujema z organizacijo " +"povezanega {related_object_label}." + +#: mixins.py:65 +#, python-brace-format +msgid "" +"The organization of this {object_label} cannot be changed because {count} " +"{related_object_label} is still related to it" +msgid_plural "" +"The organization of this {object_label} cannot be changed because {count} " +"{related_object_label} are still related to it" +msgstr[0] "" +"Organizacije tega {object_label} ni mogoče spremeniti, ker je {count} " +"{related_object_label} še vedno povezan z njim" +msgstr[1] "" +"Organizacije tega {object_label} ni mogoče spremeniti, ker so {count} " +"{related_object_label} še vedno povezani z njim" + +#: mixins.py:88 multitenancy.py:150 +msgid "organization" +msgstr "organizacija" + +#: multitenancy.py:38 +msgid "name" +msgstr "ime" + +#: password_validation.py:17 +msgid "You cannot re-use your current password. Enter a new password." +msgstr "Trenutnega gesla ne morete ponovno uporabiti. Vnesite novo geslo." + +#: password_validation.py:21 +msgid "Your password cannot be the same as your current password." +msgstr "Vaše geslo ne sme biti enako trenutnemu geslu." + +#: tasks.py:62 msgid "Action Required: Password Expiry Notice" msgstr "Potrebno dejanje: Obvestilo o poteku gesla" -#: tasks.py:73 +#: tasks.py:77 msgid "Change password" msgstr "Spremeni geslo" + +#: templates/admin/openwisp_users/action_confirmation.html:15 +msgid "Home" +msgstr "Domov" + +#: templates/admin/openwisp_users/action_confirmation.html:18 +msgid "Modify active status" +msgstr "Spremeni status aktivnosti" + +#: templates/admin/openwisp_users/action_confirmation.html:24 +msgid "Are you sure you want to make the selected users inactive?" +msgstr "" +"Ali ste prepričani, da želite izbrane uporabnike označiti kot neaktivne?" + +#: templates/admin/openwisp_users/action_confirmation.html:26 +msgid "Are you sure you want to make the selected users active?" +msgstr "Ali ste prepričani, da želite izbrane uporabnike označiti kot aktivne?" + +#: templates/admin/openwisp_users/action_confirmation.html:28 +msgid "Summary" +msgstr "Povzetek" + +#: templates/admin/openwisp_users/action_confirmation.html:31 +msgid "User" +msgstr "Uporabnik" + +#: templates/admin/openwisp_users/action_confirmation.html:40 +msgid "Confirm" +msgstr "Potrdi" + +#: templates/admin/openwisp_users/action_confirmation.html:42 +msgid "No, take me back" +msgstr "Ne, pelji me nazaj" + +#: templates/admin/openwisp_users/login.html:7 +msgid "Please correct the error below" +msgstr "Prosimo, popravite spodnjo napako" + +#: templates/admin/openwisp_users/login.html:7 +msgid "Please correct the errors below" +msgstr "Prosimo, popravite spodnje napake" + +#: templates/admin/openwisp_users/login.html:23 +#, python-format +msgid "" +"You are authenticated as %(username)s, but are not authorized to access this " +"page. Would you like to login to a different account?" +msgstr "" +"Prijavljeni ste kot %(username)s, vendar nimate dovoljenja za dostop do te " +"strani. Ali se želite prijaviti z drugim računom?" + +#: templates/admin/openwisp_users/login.html:34 +msgid "Email, phone number or username" +msgstr "E-pošta, telefonska številka ali uporabniško ime" + +#: templates/admin/openwisp_users/login.html:44 +msgid "Forgot Password?" +msgstr "Ste pozabili geslo?" + +#: templates/admin/openwisp_users/login.html:47 +msgid "Log in" +msgstr "Prijava" + +#: templates/admin/openwisp_users/user/change_form.html:9 +msgid "" +"\n" +" You do not have permission to edit or delete this user because they " +"are owner of an organization.\n" +" " +msgstr "" +"\n" +" Nimate dovoljenja za urejanje ali brisanje tega uporabnika, ker je " +"lastnik organizacije.\n" +" " + +#: widgets.py:5 +msgid "Shared systemwide (no organization)" +msgstr "Deljeno na ravni sistema (brez organizacije)" diff --git a/openwisp_users/mixins.py b/openwisp_users/mixins.py index bd3e3caf7..41b6cadb4 100644 --- a/openwisp_users/mixins.py +++ b/openwisp_users/mixins.py @@ -5,6 +5,7 @@ from django.core.exceptions import ValidationError from django.db import models from django.utils.translation import gettext_lazy as _ +from django.utils.translation import ngettext_lazy from swapper import get_model_name @@ -60,16 +61,17 @@ def _validate_org_reverse_relation(self, rel_name, field_error="organization"): related_label = ( rel_meta.verbose_name if count == 1 else rel_meta.verbose_name_plural ) - verb = _("is") if count == 1 else _("are") - message = _( + message = ngettext_lazy( + "The organization of this {object_label} cannot be changed " + "because {count} {related_object_label} is still related to it", "The organization of this {object_label} cannot be changed " - "because {0} {related_object_label} {verb} still " - "related to it".format( - count, - object_label=self._meta.verbose_name, - related_object_label=related_label, - verb=verb, - ) + "because {count} {related_object_label} are still related to it", + count, + ) + message = message.format( + count=count, + object_label=self._meta.verbose_name, + related_object_label=related_label, ) raise ValidationError({field_error: message}) diff --git a/openwisp_users/templates/admin/openwisp_users/login.html b/openwisp_users/templates/admin/openwisp_users/login.html index ea421b34e..b7f623007 100644 --- a/openwisp_users/templates/admin/openwisp_users/login.html +++ b/openwisp_users/templates/admin/openwisp_users/login.html @@ -4,7 +4,7 @@ {% block content %} {% if form.errors and not form.non_field_errors %}

-{% if form.errors.items|length == 1 %}Please correct the error below{% else %}Please correct the errors below{% endif %} +{% if form.errors.items|length == 1 %}{% trans "Please correct the error below" %}{% else %}{% trans "Please correct the errors below" %}{% endif %}

{% endif %} @@ -20,10 +20,10 @@ {% if user.is_authenticated %}

-{% block trimmed %} +{% blocktrans trimmed %} You are authenticated as {{ username }}, but are not authorized to access this page. Would you like to login to a different account? -{% endblock %} +{% endblocktrans %}

{% endif %} @@ -41,10 +41,10 @@
- +