Initial import from Docker volume

This commit is contained in:
root
2025-12-26 13:11:43 +00:00
commit 4998dc066a
13336 changed files with 1767801 additions and 0 deletions

25
modules/web_user/__init__.py Executable file
View File

@@ -0,0 +1,25 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool
from . import ir, party, user
def register():
Pool.register(
user.User,
user.User_PartySecondary,
user.UserAuthenticateAttempt,
user.UserSession,
ir.Email,
ir.EmailTemplate,
module='web_user', type_='model')
Pool.register(
party.Replace,
party.Erase,
module='web_user', type_='wizard')
Pool.register(
user.EmailValidation,
user.EmailResetPassword,
module='web_user', type_='report')

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,32 @@
<!DOCTYPE html>
<html xmlns:py="http://genshi.edgewall.org/" xmlns:i18n="http://genshi.edgewall.org/i18n">
<head>
<title>Reset Password</title>
</head>
<body>
<py:for each="user in records">
<div style="display: block; text-align: center">
<div>
<h1>Reset Password</h1>
<p i18n:msg="email,url">
Hello, we received a request to reset the password for the account associated with <strong>${user.email}</strong>. No changes have been made to your account yet.<br/>
You can reset your password by clicking the link below:<br/>
<a href="${user.get_email_reset_password_url()}"
style="display: block; text-decoration: none; width: max-content; margin: 0.5em auto; padding: 0.5em 1em; font-size:1em; border: 1px solid #2E6DA4; border-radius: 4px; color: #FFF; background-color: #337AB7;">
Reset Password
</a>
</p>
</div>
<hr style="margin-top: 20px; border-style: solid none none; border-color: #EEE"></hr>
<div style="font-size: 80%; color: #777">
<p i18n:msg="datetime,expire_delay">
The link will expire in <time datetime="${record.reset_password_token_expire.isoformat()}">${format_timedelta(expire_delay)}</time>.
</p>
<p>Button not working? Paste this into your browser:</p>
<p>${user.get_email_reset_password_url()}</p>
<p>If you didn't make this request, you can ignore this email.</p>
</div>
</div>
</py:for>
</body>
</html>

View File

@@ -0,0 +1,26 @@
<!DOCTYPE html>
<html xmlns:py="http://genshi.edgewall.org/" xmlns:i18n="http://genshi.edgewall.org/i18n">
<head>
<title>Email Validation</title>
</head>
<body>
<py:for each="user in records">
<div style="display: block; text-align: center">
<div>
<h1>Just one more step..</h1>
<p i18n:msg="email">${user.email}</p>
<a href="${user.get_email_validation_url()}"
style="display: block; text-decoration: none; width: max-content; margin: 0 auto; padding: 0.5em 1em; font-size:2em; border: 1px solid #2E6DA4; border-radius: 4px; color: #FFF; background-color: #337AB7;">
Validate
</a>
</div>
<hr style="margin-top: 20px; border-style: solid none none; border-color: #EEE"></hr>
<div style="font-size: 80%; color: #777">
<p>Button is not working? Paste this into your browser:</p>
<p>${user.get_email_validation_url()}</p>
<p>If you received this email by mistake, just ignore it.</p>
</div>
</div>
</py:for>
</body>
</html>

8
modules/web_user/exceptions.py Executable file
View File

@@ -0,0 +1,8 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.model.exceptions import ValidationError
class UserValidationError(ValidationError):
pass

55
modules/web_user/ir.py Executable file
View File

@@ -0,0 +1,55 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool, PoolMeta
from trytond.tools import escape_wildcard
class Email(metaclass=PoolMeta):
__name__ = 'ir.email'
@classmethod
def _match(cls, name, email):
pool = Pool()
User = pool.get('web.user')
yield from super()._match(name, email)
domain = ['OR']
for field in ['party.name', 'email']:
for value in [name, email]:
if value and len(value) >= 3:
domain.append(
(field, 'ilike', '%' + escape_wildcard(value) + '%'))
for user in User.search([
('email', '!=', ''),
domain,
], order=[]):
yield user.party.name if user.party else '', user.email
class EmailTemplate(metaclass=PoolMeta):
__name__ = 'ir.email.template'
@classmethod
def email_models(cls):
return super().email_models() + ['web.user']
@classmethod
def _get_address(cls, record):
pool = Pool()
User = pool.get('web.user')
address = super()._get_address(record)
if isinstance(record, User):
name = None
if record.party:
name = record.party.name
address = (name, record.email)
return address
@classmethod
def _get_language(cls, record):
pool = Pool()
User = pool.get('web.user')
language = super()._get_language(record)
if isinstance(record, User):
if record.party:
language = cls._get_language(record.party)
return language

198
modules/web_user/locale/bg.po Executable file
View File

@@ -0,0 +1,198 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr ""
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr ""
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr ""
#, fuzzy
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "Управление на партньор"
#, fuzzy
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "Парола"
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr ""
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr ""
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr ""
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr ""
#, fuzzy
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "Управление на партньор"
#, fuzzy
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Потребител"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr ""
#, fuzzy
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr "Потребителско име"
#, fuzzy
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "Ключ"
#, fuzzy
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "Потребител"
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Web Users"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr ""
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Validate E-mail"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Web Users"
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr ""
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr ""
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr "Проверка"
#, fuzzy
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Reset Password"
#, fuzzy
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "Validate E-mail"

189
modules/web_user/locale/ca.po Executable file
View File

@@ -0,0 +1,189 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr "Correu electrònic"
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr "Token del correu electrònic"
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr "Correu electrònic vàlid"
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "Tercer"
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "Contrasenya"
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr "Hash de la contrasenya"
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr "Token restableix la contrasenya"
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr "Expiració token restableix contrasenya"
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr "Tercers secundaris"
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "Tercer"
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Usuari"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr "Galeta de dispositiu"
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr "Adreça IP"
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr "Xarxa IP"
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr "Nom usuari"
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "Clau"
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "Usuari"
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Usuaris web"
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Usuaris web"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Restableix la contrasenya"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "Validació correu electrònic"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr "El correu electrònic \"%(email)s\" de l'usuari \"%(user)s\" no es vàlid."
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr "El correu electrònic de l'usuari web ha de ser únic."
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr "La clau de sessió de l'usuari web ha de ser única."
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Restableix la contrasenya"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Valida correu electrònic"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Usuaris web"
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Usuari web"
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr "Usuari Web - Tercers Secundaris"
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr "Intent d'autenticació usuari web"
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr "Sessió usuari web"
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr "El botó no funciona? Empega això al teu navegador:"
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
"Hola, hem rebut una sol·licitud per restablir la contrasenya del compte associat a [1:%(email)s]. Encara no s'ha fet cap canvi al vostre compte.[2:]\n"
" Podeu restablir la vostra contrasenya fent clic a l'enllaç següent:[3:]\n"
" [4:\n"
" Restablir la contrasenya\n"
" ]"
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr "Si no heu fet aquesta petició, podeu ignorar aquest correu."
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Restableix la contrasenya"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr "L'enllaç caducarà en [1:%(datetime)s]."
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr "%(email)s"
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr "El botó no funciona? Empega això al teu navegador:"
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "Validació correu electrònic"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr "Si heu rebut aquest correu per error, ignoreu-lo."
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr "Només un pas més..."
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr "Valida"
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Restableix la contrasenya"
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "Valida correu electrònic"

191
modules/web_user/locale/cs.po Executable file
View File

@@ -0,0 +1,191 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr ""
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr ""
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr ""
msgctxt "field:web.user,party:"
msgid "Party"
msgstr ""
msgctxt "field:web.user,password:"
msgid "Password"
msgstr ""
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr ""
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr ""
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr ""
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr ""
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr ""
#, fuzzy
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Web Users"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr ""
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr ""
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr ""
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Web Users"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr ""
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Validate E-mail"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Web Users"
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr ""
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr ""
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr ""
#, fuzzy
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Reset Password"
#, fuzzy
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "Validate E-mail"

198
modules/web_user/locale/de.po Executable file
View File

@@ -0,0 +1,198 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr "E-Mail"
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr "E-Mail Token"
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr "E-Mail gültig"
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "Partei"
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "Passwort"
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr "Passwort Hash"
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr "Passwortrücksetzungstoken"
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr "Passwortrücksetzungstoken Verfall"
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr "Sekundäre Parteien"
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "Partei"
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Benutzer"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr "Geräte Cookie"
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr "IP-Adresse"
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr "IP-Netz"
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr "Benutzername"
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "Schlüssel"
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "Benutzer"
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Webbenutzer"
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Webbenutzer"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Passwort zurücksetzen"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "E-Mail-Validierung"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr "Die E-Mail-Adresse \"%(email)s\" für \"%(user)s\" ist ungültig."
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr ""
"Die E-Mail eines aktiven Webbenutzers kann nur einmal vergeben werden."
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr ""
"Der Sitzungsschlüssel eines Webbenutzers kann nur einmal vergeben werden."
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Passwort zurücksetzen"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "E-Mail validieren"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Webbenutzer"
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Webbenutzer"
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr "Webbenutzer - Sekundäre Partei"
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr "Webbenutzer Authentifizierungsversuch"
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr "Webbenutzer Sitzung"
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr ""
"Sollte der Button nicht funktionieren, kopieren Sie bitte den folgenden Text"
" in die Adresszeile Ihres Browsers:"
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
"Hallo, wir haben eine Anfrage zum Zurücksetzen des Passworts für das mit [1:%(email)s) verknüpfte Konto erhalten. An Ihrem Konto wurden noch keine Änderungen vorgenommen.[2:]\n"
" Sie können Ihr Passwort zurücksetzen, indem Sie auf den folgenden Link klicken:[3:]\n"
" [4:\n"
" Passwort zurücksetzen\n"
" ]"
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr ""
"Ignorieren Sie bitte diese E-Mail, wenn Sie nicht der Urheber dieser Anfrage"
" sind."
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Passwort zurücksetzen"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr "Der Hyperlink wird in [1:%(datetime)s] ablaufen."
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr "%(email)s"
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr ""
"Wenn der Button nicht funktioniert, kopieren Sie bitte die folgende Zeile in"
" die Adresszeile Ihres Browsers:"
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "E-Mail-Validierung"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr ""
"Ignorieren Sie bitte diese E-Mail, wenn Sie sie irrtümlich erhalten haben."
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr "Nur noch ein Schritt..."
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr "Prüfen"
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Passwort zurücksetzen"
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "E-Mail validieren"

191
modules/web_user/locale/es.po Executable file
View File

@@ -0,0 +1,191 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr "Correo electrónico"
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr "Token del correo electrónico"
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr "Correo electrónico válido"
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "Tercero"
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "Contraseña"
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr "Hash de la contraseña"
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr "Restablecer el token de la contraseña"
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr "Restablecer el token de expiración de la contraseña"
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr "Terceros secundarios"
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "Tercero"
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Usuario"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr "Cookie del dispositivo"
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr "Dirección IP"
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr "Red IP"
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr "Nombre usuario"
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "Clave"
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "Usuario"
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Usuarios web"
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Usuarios web"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Restablecer contraseña"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "Validación correo electrónico"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr "El correo electrónico \"%(email)s\" del usuario \"%(user)s\" no es valido."
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr "El correo electrónico del usuario web debe ser único."
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr "La clave de sesión del usuario web debe ser única."
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Restablecer contraseña"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Validar correo electrónico"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Usuarios web"
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Usuario web"
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr "Usuario web - Tercero secundario"
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr "Intento de identificación usuario web"
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr "Sesión usuario web"
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr "¿El botón no funciona? Pega esto en tu navegador:"
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
"Hola, recibimos una solicitud para restablecer la contraseña de la cuenta asociada con [1:%(email)s]. Aún no se han realizado cambios en su cuenta.[2:]\n"
" Puede restablecer su contraseña haciendo clic en el siguiente enlace:[3:]\n"
" [4:\n"
" Restablecer la contraseña\n"
" ]"
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr ""
"Si no habéis realizado esta petición, podéis ignorar este correo "
"electrónico."
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Restablecer contraseña"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr "El enlace caducará en [1:%(datetime)s]."
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr "%(email)s"
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr "¿El botón no funciona? Pega esto en tu navegador:"
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "Validación correo electrónico"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr "Si ha recibido este correo electrónico por error, por favor ignórelo."
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr "Solo un paso mas..."
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr "Validar"
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Restablecer contraseña"
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "Validar correo electrónico"

184
modules/web_user/locale/es_419.po Executable file
View File

@@ -0,0 +1,184 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr ""
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr ""
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr ""
msgctxt "field:web.user,party:"
msgid "Party"
msgstr ""
msgctxt "field:web.user,password:"
msgid "Password"
msgstr ""
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr ""
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr ""
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr ""
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr ""
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr ""
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr ""
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr ""
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr ""
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr ""
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr ""
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr ""
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr ""
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr ""
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr ""
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr ""
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr ""
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr ""
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr ""
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr ""
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr ""

188
modules/web_user/locale/et.po Executable file
View File

@@ -0,0 +1,188 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr "E-kiri"
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr ""
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr ""
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "Osapool"
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "Salasõna"
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr "Salasõna räsi"
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr ""
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr ""
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr ""
#, fuzzy
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "Osapool"
#, fuzzy
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Kasutaja"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr "IP-aadress"
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr "IP-võrk"
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr "Logi sisse"
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "Võti"
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "Kasutaja"
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Muutja"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Lähtesta salasõna"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr ""
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Lähtesta salasõna"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr ""
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr ""
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr ""
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr ""
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr "Nupp ei tööta? Aseta see link brauseri aadressreale:"
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr "Kui sa ei teinud seda päringut, siis ignoreeri seda e-kirja."
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Lähtesta salasõna"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr "Nupp ei tööta? Aseta see link brauseri aadressreale:"
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr ""
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Lähtesta salasõna"
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr ""

189
modules/web_user/locale/fa.po Executable file
View File

@@ -0,0 +1,189 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr "ایمیل"
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr "نشانه(Token) ایمیل"
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr "ایمیل معتبر است"
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "نهاد/سازمان"
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "کلمه عبور"
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr "کلمه عبور درهم"
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr "بازنشانی نشانه(Token) کلمه عبور"
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr "بازنشانی انقضای نشانه(Token) کلمه عبور"
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr ""
#, fuzzy
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "نهاد/سازمان"
#, fuzzy
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "کاربر"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr "آدرس آی پی"
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr "آی پی شبکه"
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr "ورود به سیستم"
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "کلید"
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "کاربر"
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "کاربران وب"
#, fuzzy
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "کاربران وب"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "بازنشانی رمز عبور"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "اعتبار سنجی ایمیل"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr "پست الکترونیکی کاربر فعال وب سایت باید منحصر به فرد باشد."
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr "کلید جلسه کاربر وب باید منحصر به فرد باشد."
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Validate E-mail"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "کاربران وب"
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "کاربر وب"
#, fuzzy
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr "جلسه کاری کاربر وب"
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr "تلاش برای هوّیت سنجی کاربر وب"
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr "جلسه کاری کاربر وب"
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr "دکمه کار نمی کند؟ این آدرس را در مرورگر خود مرور کنید:"
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr "اگراین درخواست را نکرده باشید، می توانید این ایمیل را نادیده بگیرید."
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "بازنشانی کلمه عبور"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr "دکمه کار نمی کند؟ این آدرس را در مرورگر خود مرور کنید:"
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "اعتبار سنجی ایمیل"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr "اگر این ایمیل را به اشتباه دریافت کردید، فقط آن را نادیده بگیرید."
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr "فقط یک گام دیگه.."
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr "تایید اعتبار"
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "بازنشانی کلمه عبور"
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "ایمیل معتبر است"

191
modules/web_user/locale/fi.po Executable file
View File

@@ -0,0 +1,191 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr ""
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr ""
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr ""
msgctxt "field:web.user,party:"
msgid "Party"
msgstr ""
msgctxt "field:web.user,password:"
msgid "Password"
msgstr ""
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr ""
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr ""
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr ""
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr ""
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr ""
#, fuzzy
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Web Users"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr ""
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr ""
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr ""
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Web Users"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr ""
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Validate E-mail"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Web Users"
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr ""
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr ""
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr ""
#, fuzzy
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Reset Password"
#, fuzzy
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "Validate E-mail"

190
modules/web_user/locale/fr.po Executable file
View File

@@ -0,0 +1,190 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr "E-mail"
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr "Jeton d'E-mail"
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr "E-mail valide"
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "Tiers"
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "Mot de passe"
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr "Hachage de mot de passe"
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr "Jeton de réinitialisation du mot de passe"
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr "Expiration du jeton de réinitialisation du mot de passe"
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr "Tiers secondaires"
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "Tiers"
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Utilisateur"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr "Cookie de l'appareil"
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr "Adresse IP"
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr "Réseau IP"
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr "Identifiant"
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "Clé"
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "Utilisateur"
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Utilisateurs web"
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Utilisateurs web"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Réinitialiser le mot de passe"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "E-mail de validation"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr "L'adresse e-mail « %(email)s » pour « %(user)s » n'est pas valide."
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr "LE-mail d'un utilisateur web actif doit être unique."
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr "La session d'un utilisateur web doit être unique."
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Réinitialiser le mot de passe"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Valider l'e-mail"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Utilisateurs web"
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Utilisateur web"
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr "Utilisateur Web - Tiers secondaire"
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr "Tentative d'authentification d'utilisateur web"
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr "Session d'utilisateur web"
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr "Le bouton ne fonctionne pas ? Copier ceci dans votre navigateur :"
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
"Bonjour, nous avons reçu une demande de réinitialisation du mot de passe du compte associé à [1:%(email)s]. Aucune modification n'a encore été apportée à votre compte.[2:]\n"
" Vous pouvez réinitialiser votre mot de passe en cliquant sur le lien ci-dessous:[3:]\n"
" [4:\n"
" Réinitialiser le mot de passe\n"
" ]"
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr ""
"Si vous n'avez pas fait cette demande, vous pouvez ignorer cet E-mail."
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Réinitialiser le mot de passe"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr "Le lien expirera dans [1:%(datetime)s]."
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr "%(email)s"
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr "Le bouton ne fonctionne pas ? Copier ceci dans votre navigateur :"
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "Validation d'E-mail"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr "Si vous avez reçu cet E-mail par erreur, ignorez le."
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr "Encore une étape.."
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr "Valider"
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Réinitialiser le mot de passe"
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "Valider l'E-mail"

188
modules/web_user/locale/hu.po Executable file
View File

@@ -0,0 +1,188 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr "E-mail"
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr ""
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr "E-mail cím leellenőrizve"
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "Ügyfél"
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "Jelszó"
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr "Jelszó hash"
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr ""
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr ""
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr "Másodlagos ügyfelek"
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "Ügyfél"
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Felhasználó"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr "Bejelentkezés"
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "Kulcs"
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "Felhasználó"
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Webáruház felhasználók"
#, fuzzy
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Webáruház felhasználók"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Jelszó visszaállítása"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "E-mail cím ellenőrzés"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr "Nem lehet több aktív webes felhasználónak ugyanaz az e-mail címe."
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr ""
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Jelszó visszaállítása"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "E-mail cím leellenőrzése"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Webáruház felhasználók"
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Webáruház felhasználó"
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr ""
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr ""
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr "A gomb nem működik? Másolja be ezt a böngészőjébe:"
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr ""
"Ha nem Ön küldte ezt a kérés, akkor nyugodtan hagyja figyelmen kívül ezt az "
"e-mailt."
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Jelszó visszaállítása"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr "A gomb nem működik? Másolja be ezt a böngészőjébe:"
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "E-mail cím ellenőrzés"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr "Ha tévedésből kapta ezt az e-mailt, hagyja nyugodtan figyelmen kívül."
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr "Csak még egy lépés.."
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr "Ellenőrzés"
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Jelszó visszaállítása"
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "E-mail cím leellenőrzése"

188
modules/web_user/locale/id.po Executable file
View File

@@ -0,0 +1,188 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr "E-mail"
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr ""
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr ""
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "Pihak"
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "Kata sandi"
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr ""
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr ""
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr ""
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr ""
#, fuzzy
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "Pihak"
#, fuzzy
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Pengguna"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr "Alamat IP"
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr ""
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "Kunci"
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "Pengguna"
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Pengguna Web"
#, fuzzy
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Pengguna Web"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Atur Ulang Kata Sandi"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr ""
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Atur Ulang Kata Sandi"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr ""
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr ""
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr ""
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr ""
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr "Tombol tidak berfungsi? Lekatkan ini pada browser Anda:"
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr "Jika bukan Anda yang membuat permintaan ini, abaikan email ini."
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Atur Ulang Kata Sandi"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr "Tombol tidak berfungsi? Lekatkan ini pada browser Anda:"
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "Validasi Email"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr "Jika Anda menerima email ini karena kesalahan, abaikan saja."
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr "Tinggal satu langkah lagi..."
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr ""
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Atur Ulang Kata Sandi"
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr ""

203
modules/web_user/locale/it.po Executable file
View File

@@ -0,0 +1,203 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr "E-mail"
#, fuzzy
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr "_E-Mail..."
#, fuzzy
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr "_E-Mail..."
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "Controparte"
#, fuzzy
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "Password"
#, fuzzy
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr "Hash della Password"
#, fuzzy
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr "Reset Password"
#, fuzzy
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr "Reset Password"
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr ""
#, fuzzy
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "Controparte"
#, fuzzy
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Utente"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr "Indirizzo IP"
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr ""
#, fuzzy
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr "Login"
#, fuzzy
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "Chiave"
#, fuzzy
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "Utente"
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Web Users"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr ""
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Validate E-mail"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Web Users"
#, fuzzy
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr "Sessione"
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr ""
#, fuzzy
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr "Sessione"
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr "Verifica"
#, fuzzy
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Reset Password"
#, fuzzy
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "Validate E-mail"

196
modules/web_user/locale/lo.po Executable file
View File

@@ -0,0 +1,196 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr "ອີ-ເມວລ໌"
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr "ອີ-ເມວລ໌ ຢັງຢືນຕົວຕົນ"
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr "ອີ-ເມວລ໌ ຖືກຕ້ອງ"
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "ພາກສ່ວນ"
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "ລະຫັດຜ່ານ"
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr "ລະຫັດຜ່ານປະສົມ"
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr "ຕັ້ງລະຫັດຢັ້ງຢືນຜ່ານຄືນໃໝ່"
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr "ການຕັ້ງລະຫັດຢັ້ງຢືນຜ່ານຄືນໃໝ່ໝົດເວລາແລ້ວ"
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr ""
#, fuzzy
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "ພາກສ່ວນ"
#, fuzzy
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "ຜູ້ໃຊ້"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr "ເຊື່ອມຕໍ່ເຂົ້າລະບົບ"
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "ຄຳສຳຄັນ"
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "ຜູ້ໃຊ້"
#, fuzzy
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Reset Password"
#, fuzzy
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr ""
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Validate E-mail"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Web Users"
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "ຜູ້ໃຊ້ງານເວັບ"
#, fuzzy
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr "ເທື່ອເຂົ້າໃຊ້ຂອງຜູ້ໃຊ້ງານເວັບ"
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr "ພະຍາຍາມກວດສອບສິດທີ່ຖືກຕ້ອງຂອງຜູ້ໃຊ້ງານເວັບ"
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr "ເທື່ອເຂົ້າໃຊ້ຂອງຜູ້ໃຊ້ງານເວັບ"
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr "ປຸ່ມບໍ່ເຮັດວຽກບໍ? ໃຫ້ ວາງ ອັນນີ້ລົງໃສ່ ໂຕທ່ອງເວັບຂອງທ່ານ:"
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr "ຖ້າຫາກທ່ານບໍ່ໄດ້ຮ້ອງຂໍ ອ-ເມວລ໌ ນີ້, ທ່ານບໍ່ຕ້ອງຮັບຮູ້ ອີ-ເມວລ໌ ນີ້."
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "ຕັ້ງຄ່າລະຫັດຜ່ານຄືນໃໝ່"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr "ປຸ່ມບໍ່ເຮັດວຽກບໍ? ໃຫ້ ວາງ ອັນນີ້ລົງໃສ່ ໂຕທ່ອງເວັບຂອງທ່ານ:"
#, fuzzy
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "ການຢືນຢັນຄວາມຖືກຕ້ອງ ອີ-ເມວລ໌"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr ""
"ຖ້າຫາກທ່ານໄດ້ຮັບ ອີ-ເມວລ໌ ນີ້ ໂດຍຄວາມຜິດພາດໃດໜຶ່ງ, ພຽງແຕ່ໃຫ້ທ່ານ ບໍ່ຮັບຮູ້ "
"ອີ-ເມວລ໌ ນີ້ກໍພໍ."
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr "ພຽງແຕ່ອີກບາດກ້າວໜຶ່ງທໍ່ນັ້ນ.."
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr "ກວດສອບຄວາມຖືກຕ້ອງ"
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "ຕັ້ງຄ່າລະຫັດຜ່ານຄືນໃໝ່"
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "ກວດສອບຄວາມຖືກຕ້ອງ ອີ-ເມວລ໌"

192
modules/web_user/locale/lt.po Executable file
View File

@@ -0,0 +1,192 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr ""
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr ""
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr ""
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "Kontrahentas"
msgctxt "field:web.user,password:"
msgid "Password"
msgstr ""
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr ""
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr ""
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr ""
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr ""
#, fuzzy
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "Kontrahentas"
#, fuzzy
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Naudotojas"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr "IP adresas"
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr ""
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr ""
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "Naudotojas"
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Web Users"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Atstatyti slaptažodį"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr ""
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Atstatyti slaptažodį"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Validate E-mail"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Web Users"
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr ""
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr ""
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr ""
#, fuzzy
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Reset Password"
#, fuzzy
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "Validate E-mail"

189
modules/web_user/locale/nl.po Executable file
View File

@@ -0,0 +1,189 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr "E-mail"
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr "E-mail token"
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr "E-mail geldig"
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "Relatie"
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "Wachtwoord"
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr "Wachtwoord Hash"
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr "Reset wachtwoord token"
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr "Reset wachtwoord token verlopen"
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr "Secundaire Relaties"
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "Relatie"
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Gebruiker"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr "Apparaatcookie"
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr "IP Adres"
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr "IP-netwerk"
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr "Loginnaam"
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "Sleutel"
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "Gebruiker"
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Webgebruikers"
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Webgebruikers"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Reset wachtwoord"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "E-mailvalidatie"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr "Het email adres \"%(email)s\" voor \"%(user)s\" is niet geldig."
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr "E-mail van actieve webgebruiker moet uniek zijn."
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr "Webgebruikerssessiesleutel moet uniek zijn."
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Reset wachtwoord"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Email valideren"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Webgebruikers"
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Web gebruiker"
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr "Webgebruiker -Secundaire Relatie"
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr "Inlog poging webgebruikers"
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr "Webgebruikerssessie"
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr "Werkt de knop niet? Plak dit in uw browser:"
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
"Hallo, we hebben een aanvraag ontvangen om het wachtwoord voor gebruiker [1:%(email)s] te resetten. Op dit moment zijn er nog geen wijzigingen gedaan aan de gebruiker.[2:]\n"
" U kunt het wachtwoord resetten door op de onderstaande link te klikken:[3:]\n"
" [4:\n"
" Reset wachtwoord\n"
" ]"
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr "Indien u dit verzoek niet hebt gedaan, kunt u deze e-mail negeren."
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Reset wachtwoord"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr "De link vervalt in [1:%(datetime)s]."
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr "%(email)s"
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr "Knop werkt niet? Plak dit in uw browser:"
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "E-mailvalidatie"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr "Negeer deze email, als u deze per ongeluk hebt ontvangen."
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr "Nog maar één stap.."
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr "Goedkeuren"
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Reset wachtwoord"
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "Email valideren"

191
modules/web_user/locale/pl.po Executable file
View File

@@ -0,0 +1,191 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr ""
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr ""
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr ""
msgctxt "field:web.user,party:"
msgid "Party"
msgstr ""
msgctxt "field:web.user,password:"
msgid "Password"
msgstr ""
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr ""
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr ""
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr ""
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr ""
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr ""
#, fuzzy
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Web Users"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr ""
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr ""
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr ""
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Web Users"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr ""
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Validate E-mail"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Web Users"
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr ""
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr ""
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr ""
#, fuzzy
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Reset Password"
#, fuzzy
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "Validate E-mail"

193
modules/web_user/locale/pt.po Executable file
View File

@@ -0,0 +1,193 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr "E-mail"
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr "Token do E-mail"
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr "E-mail Válido"
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "Pessoa"
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "Senha"
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr "Hash da Senha"
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr "Redefinir Token da Senha"
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr "Redefinir Validade do Token da Senha"
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr ""
#, fuzzy
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "Pessoa"
#, fuzzy
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Usuário"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr "Entrar"
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "Chave"
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "Usuário"
#, fuzzy
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Reset Password"
#, fuzzy
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr ""
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Validate E-mail"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Web Users"
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Usuário Web"
#, fuzzy
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr "Sessão de Usuário Web"
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr "Tentativa de autenticação do usuário Web"
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr "Sessão de Usuário Web"
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr "O botão não está funcionando? Cole isso em seu navegador:"
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr "Se você não fez esta solicitação, você pode ignorar esse email."
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Redefinir senha"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr "Botão não está funcionando? Cole isso no seu navegador:"
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "Email de Validação"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr "Se você recebeu esse email por engano, apenas ignore-o."
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr "Apenas mais um passo..."
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr "Validar"
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Redefinir senha"
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "Validar E-mail"

190
modules/web_user/locale/ro.po Executable file
View File

@@ -0,0 +1,190 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr "E-mail"
#, fuzzy
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr "Token de e-mail"
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr "E-mail Valabil"
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "Parte"
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "Parola"
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr ""
#, fuzzy
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr "Resetare Token Parolă"
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr ""
#, fuzzy
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr "Părți Secundare"
#, fuzzy
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "Parte"
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Utilizator"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr "Adresă IP"
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr "Rețea IP"
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr "Autentificare"
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "Cheie"
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "Utilizator"
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Utilizatori Web"
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Utilizatori Web"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Resetare parola"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "Validarea e-mailului"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr "Adresa de email \"%(email)s\" pentru \"%(user)s\" nu este valid."
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr "E-mailul utilizatorului web activ trebuie să fie unic."
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr "Cheia de sesiune a utilizatorului web trebuie să fie unică."
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Resetare Parola"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Validare e-mail"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Utilizatori Web"
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Utilizator Web"
#, fuzzy
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr "Utilizator Web - Parte secundară"
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr "Încercare de autentificare a utilizatorului web"
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr "Sesiune a Utilizatorului Web"
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr "Butonul nu funcționează? Copiați asta în browser:"
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr "Dacă nu ați făcut această solicitare, puteți ignora acest e-mail."
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Resetare Parolă"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr "Linkul va expira în [1:%(datetime)s]."
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr "%(email)s"
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr "Butonul nu funcționează? Copiați asta în browser:"
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "Validarea e-mailului"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr "Dacă ați primit acest e-mail din greșeală, ignorați-l."
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr "Încă un pas."
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr "Validare"
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Resetare Parolă"
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "Validare e-mail"

198
modules/web_user/locale/ru.po Executable file
View File

@@ -0,0 +1,198 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr ""
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr ""
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr ""
#, fuzzy
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "Организации"
#, fuzzy
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "Пароль"
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr ""
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr ""
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr ""
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr ""
#, fuzzy
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "Организации"
#, fuzzy
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Пользователь"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr ""
#, fuzzy
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr "Логин"
#, fuzzy
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "Ключ"
#, fuzzy
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "Пользователь"
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Web Users"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr ""
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Validate E-mail"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Web Users"
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr ""
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr ""
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr "Утвержденный"
#, fuzzy
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Reset Password"
#, fuzzy
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "Validate E-mail"

185
modules/web_user/locale/sl.po Executable file
View File

@@ -0,0 +1,185 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr "E-pošta"
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr "Žeton e-pošte"
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr "E-pošta veljavna"
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "Partner"
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "Geslo"
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr "Zgoščena vrednost gesla"
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr "Žeton za ponastavitev gesla"
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr "Zapadlost ponastavitvenga žetona"
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr "Sekundarni partnerji"
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "Partner"
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Uporabnik"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr "Piškotek naprave"
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr "IP naslov"
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr "IP omrežje"
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr "Prijava"
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "Ključ"
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "Uporabnik"
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Spletni uporabniki"
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Spletni uporabniki"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Ponastavi gesla"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "Preverjanje e-poštnega naslova"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr "E-poštni naslov \"%(email)s\" uporabnika \"%(user)s\" ni veljaven."
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr "E-poštni naslov aktivnega spletnega uporabnika mora biti edinstven."
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr "Ključ seje spletnega uporabnika mora biti edinstven."
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Potrdi e-pošto"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Spletni uporabniki"
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Spletni uporabnik"
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr "Spletni uporabnik - sekundarni partner"
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr "Poskus overjanja spletnega uporabnika"
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr "Seja spletnega uporabnika"
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr "Gumb ne deluje? Prilepite sledeče v vaš brskalnik:"
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr "Če niste zahtevali tega sporočila, ga preprosto prezrite."
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Ponastavitev gesla"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr "Povezava bo potekla čez [1:%(datetime)s]."
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr "%(email)s"
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr "Gumb ne deluje? Prilepite to povezavo v vaš brskalnik:"
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "Preverjanje elektronskega naslova"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr "Če ste po pomoti prejeli to sporočilo, ga preprosto prezrite."
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr "Samo še en korak ..."
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr "Preveri veljavnost"
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Ponastavi geslo"
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "Preveri e-naslov"

191
modules/web_user/locale/tr.po Executable file
View File

@@ -0,0 +1,191 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr ""
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr ""
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr ""
msgctxt "field:web.user,party:"
msgid "Party"
msgstr ""
msgctxt "field:web.user,password:"
msgid "Password"
msgstr ""
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr ""
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr ""
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr ""
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr ""
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr ""
#, fuzzy
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Web Users"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr ""
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr ""
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr ""
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr ""
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Web Users"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr ""
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Validate E-mail"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Web Users"
#, fuzzy
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Web Users"
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr ""
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr ""
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Reset Password"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr ""
#, fuzzy
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "Email Validation"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr ""
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr ""
#, fuzzy
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Reset Password"
#, fuzzy
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "Validate E-mail"

185
modules/web_user/locale/uk.po Executable file
View File

@@ -0,0 +1,185 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr "Ел.пошта"
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr "Токен ел.пошти"
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr "Ел.пошта дійсна"
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "Особа"
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "Пароль"
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr "Хеш пароля"
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr "Скинути токен пароля"
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr "Термін скидання токена пароля закінчується"
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr "Вторинні особи"
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "Особа"
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "Користувач"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr "Куки пристрою"
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr "IP-адреса"
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr "IP-мережа"
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr "Логін"
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "Ключ"
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "Користувач"
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Веб-користувачі"
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Веб-користувачі"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "Скинути пароль"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "Перевірка ел.пошти"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr ""
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr "Ел.пошта активного веб-користувача має бути унікальною."
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr "Ключ сеансу веб-користувача має бути унікальним."
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "Скинути пароль"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "Перевірити ел.пошту"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Веб-користувачі"
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Веб-користувач"
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr "Веб-користувач - Вторинна особа"
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr "Спроба автентифікації веб-користувача"
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr "Сеанс веб-користувача"
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr "Кнопка не працює? Вставте це у свій браузер:"
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr "Якщо ви не робили цей запит, можете проігнорувати цей ел.лист."
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "Скинути пароль"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr "Термін посилання завершиться через [1:%(datetime)s]."
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr "%(email)s"
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr "Кнопка не працює? Вставте це у свій браузер:"
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "Перевірка ел.пошти"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr "Якщо ви отримали цей ел.лист помилково, просто проігноруйте його."
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr "Ще один крок.."
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr "Перевірити"
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "Скинути пароль"
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "Перевірити ел.пошту"

185
modules/web_user/locale/zh_CN.po Executable file
View File

@@ -0,0 +1,185 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:web.user,email:"
msgid "E-mail"
msgstr "电子邮件"
msgctxt "field:web.user,email_token:"
msgid "E-mail Token"
msgstr "电子邮件令牌"
msgctxt "field:web.user,email_valid:"
msgid "E-mail Valid"
msgstr "电子邮件有效"
msgctxt "field:web.user,party:"
msgid "Party"
msgstr "参与者"
msgctxt "field:web.user,password:"
msgid "Password"
msgstr "密码"
msgctxt "field:web.user,password_hash:"
msgid "Password Hash"
msgstr "密码HASH"
msgctxt "field:web.user,reset_password_token:"
msgid "Reset Password Token"
msgstr "重置密码令牌"
msgctxt "field:web.user,reset_password_token_expire:"
msgid "Reset Password Token Expire"
msgstr "重置密码令牌过期"
msgctxt "field:web.user,secondary_parties:"
msgid "Secondary Parties"
msgstr "第二参与者"
msgctxt "field:web.user-party.party.secondary,party:"
msgid "Party"
msgstr "参与者"
msgctxt "field:web.user-party.party.secondary,user:"
msgid "User"
msgstr "用户"
msgctxt "field:web.user.authenticate.attempt,device_cookie:"
msgid "Device Cookie"
msgstr "设备 Cookie"
msgctxt "field:web.user.authenticate.attempt,ip_address:"
msgid "IP Address"
msgstr "IP地址"
msgctxt "field:web.user.authenticate.attempt,ip_network:"
msgid "IP Network"
msgstr "IP网络"
msgctxt "field:web.user.authenticate.attempt,login:"
msgid "Login"
msgstr "登录"
msgctxt "field:web.user.session,key:"
msgid "Key"
msgstr "密匙"
msgctxt "field:web.user.session,user:"
msgid "User"
msgstr "用户"
msgctxt "model:ir.action,name:act_user_form"
msgid "Web Users"
msgstr "Web 用户"
msgctxt "model:ir.action,name:act_user_form_party"
msgid "Web Users"
msgstr "Web 用户"
msgctxt "model:ir.action,name:report_email_reset_password"
msgid "Reset Password"
msgstr "重置密码"
msgctxt "model:ir.action,name:report_email_validation"
msgid "Email Validation"
msgstr "电子邮件验证"
msgctxt "model:ir.message,text:msg_user_email_invalid"
msgid "The email address \"%(email)s\" for \"%(user)s\" is not valid."
msgstr "用户 \"%(user)s\" 的电子邮件地址 \"%(email)s\" 无效。"
msgctxt "model:ir.message,text:msg_user_email_unique"
msgid "E-mail of active web user must be unique."
msgstr "已经激活的Web用户电子邮件不能重复."
msgctxt "model:ir.message,text:msg_user_session_key_unique"
msgid "Web user session key must be unique."
msgstr "Web用户会话密钥必须唯一."
msgctxt "model:ir.model.button,string:user_reset_password_button"
msgid "Reset Password"
msgstr "重置密码"
msgctxt "model:ir.model.button,string:user_validate_email_button"
msgid "Validate E-mail"
msgstr "验证电子邮件"
msgctxt "model:ir.ui.menu,name:menu_user_form"
msgid "Web Users"
msgstr "Web 用户"
msgctxt "model:web.user,name:"
msgid "Web User"
msgstr "Web 用户"
msgctxt "model:web.user-party.party.secondary,name:"
msgid "Web User - Secondary Party"
msgstr "web 用户 - 第二参与者"
msgctxt "model:web.user.authenticate.attempt,name:"
msgid "Web User Authenticate Attempt"
msgstr "Web用户验证尝试"
msgctxt "model:web.user.session,name:"
msgid "Web User Session"
msgstr "web 用户会话"
#, fuzzy
msgctxt "report:web.user.email_reset_password:"
msgid "Button not working? Paste this into your browser:"
msgstr "按钮不起作用? 将此粘贴到浏览器的地址栏中:"
msgctxt "report:web.user.email_reset_password:"
msgid ""
"Hello, we received a request to reset the password for the account associated with [1:%(email)s]. No changes have been made to your account yet.[2:]\n"
" You can reset your password by clicking the link below:[3:]\n"
" [4:\n"
" Reset Password\n"
" ]"
msgstr ""
msgctxt "report:web.user.email_reset_password:"
msgid "If you didn't make this request, you can ignore this email."
msgstr "如果你没有发出过此请求,就忽略此电子邮件."
msgctxt "report:web.user.email_reset_password:"
msgid "Reset Password"
msgstr "重置密码"
msgctxt "report:web.user.email_reset_password:"
msgid "The link will expire in [1:%(datetime)s]."
msgstr "链接过期时间: [1:%(datetime)s]。"
msgctxt "report:web.user.email_validation:"
msgid "%(email)s"
msgstr "%(email)s"
msgctxt "report:web.user.email_validation:"
msgid "Button is not working? Paste this into your browser:"
msgstr "按钮不起作用? 将此粘贴到浏览器的地址栏中:"
msgctxt "report:web.user.email_validation:"
msgid "Email Validation"
msgstr "电子邮件验证"
msgctxt "report:web.user.email_validation:"
msgid "If you received this email by mistake, just ignore it."
msgstr "如果误收到此电子邮件,请忽略它。"
msgctxt "report:web.user.email_validation:"
msgid "Just one more step.."
msgstr "仅一步之遥.."
msgctxt "report:web.user.email_validation:"
msgid "Validate"
msgstr "验证"
msgctxt "view:web.user:"
msgid "Reset Password"
msgstr "重置密码"
msgctxt "view:web.user:"
msgid "Validate E-mail"
msgstr "验证电子邮件"

16
modules/web_user/message.xml Executable file
View File

@@ -0,0 +1,16 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data grouped="1">
<record model="ir.message" id="msg_user_email_unique">
<field name="text">E-mail of active web user must be unique.</field>
</record>
<record model="ir.message" id="msg_user_session_key_unique">
<field name="text">Web user session key must be unique.</field>
</record>
<record model="ir.message" id="msg_user_email_invalid">
<field name="text">The email address "%(email)s" for "%(user)s" is not valid.</field>
</record>
</data>
</tryton>

28
modules/web_user/party.py Executable file
View File

@@ -0,0 +1,28 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool, PoolMeta
class Replace(metaclass=PoolMeta):
__name__ = 'party.replace'
@classmethod
def fields_to_replace(cls):
return super().fields_to_replace() + [
('web.user', 'party'),
('web.user-party.party.secondary', 'party'),
]
class Erase(metaclass=PoolMeta):
__name__ = 'party.erase'
def to_erase(self, party_id):
pool = Pool()
User = pool.get('web.user')
to_erase = super().to_erase(party_id)
to_erase.append(
(User, [('party', '=', party_id)], True,
['email'],
[None]))
return to_erase

View File

@@ -0,0 +1,2 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.

Binary file not shown.

View File

@@ -0,0 +1,202 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from unittest.mock import patch
from trytond.config import config
from trytond.modules.party.tests import PartyCheckEraseMixin
from trytond.modules.web_user import user as user_module
from trytond.pool import Pool
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
VALIDATION_URL = 'http://www.example.com/validation'
RESET_PASSWORD_URL = 'http://www.example.com/reset_password'
FROM = 'tryton@example.com'
class WebUserTestCase(PartyCheckEraseMixin, ModuleTestCase):
'Test Web User module'
module = 'web_user'
def setUp(self):
super(WebUserTestCase, self).setUp()
validation_url = config.get('web', 'email_validation_url', default='')
config.set('web', 'email_validation_url', VALIDATION_URL)
self.addCleanup(
lambda: config.set('web', 'email_validation_url', validation_url))
reset_password_url = config.get(
'web', 'reset_password_url', default='')
config.set('web', 'reset_password_url', RESET_PASSWORD_URL)
self.addCleanup(lambda: config.set(
'web', 'reset_password_url', reset_password_url))
reset_from = config.get('email', 'from', default='')
config.set('email', 'from', FROM)
self.addCleanup(lambda: config.set('email', 'from', reset_from))
length = config.get('password', 'length', default='')
config.set('password', 'length', '4')
self.addCleanup(config.set, 'password', 'length', length)
entropy = config.get('password', 'entropy', default='')
config.set('password', 'entropy', '0.8')
self.addCleanup(config.set, 'password', 'entropy', entropy)
def create_user(self, email, password):
pool = Pool()
User = pool.get('web.user')
user = User(email=email)
user.password = password
user.save()
self.assertEqual(user.password, 'x' * 10)
self.assertNotEqual(user.password_hash, password)
def check_user(self, email, password):
pool = Pool()
User = pool.get('web.user')
user, = User.search([('email', '=', email)])
auth_user = User.authenticate(email, password)
self.assertEqual(auth_user, user)
bad_user = User.authenticate(email, password + 'wrong')
self.assertEqual(bad_user, None)
bad_user = User.authenticate(email + 'wrong', password)
self.assertEqual(bad_user, None)
@with_transaction()
def test_default_hash(self):
'Test default hash'
self.create_user('user@example.com', 'secret')
self.check_user('user@example.com', 'secret')
@with_transaction()
def test_session(self):
'Test session'
pool = Pool()
User = pool.get('web.user')
user = User(email='user@example.com')
user.save()
key = user.new_session()
self.assertTrue(key)
session_user = User.get_user(key)
self.assertEqual(session_user, user)
wrong_session_user = User.get_user('foo')
self.assertEqual(wrong_session_user, None)
@with_transaction()
def test_validate_email(self):
'Test email validation'
pool = Pool()
User = pool.get('web.user')
user = User(email='user@example.com')
user.save()
self.assertFalse(user.email_valid)
self.assertFalse(user.email_token)
with patch.object(
user_module, 'send_message_transactional') as send_message:
User.validate_email([user])
send_message.assert_called_once()
token = user.email_token
self.assertTrue(token)
self.assertEqual(
user.get_email_validation_url(),
'%s?token=%s' % (VALIDATION_URL, token))
self.assertFalse(
User.validate_email_url(VALIDATION_URL))
self.assertFalse(
User.validate_email_url('%s?token=12345' % VALIDATION_URL))
self.assertTrue(
User.validate_email_url(user.get_email_validation_url()))
self.assertTrue(user.email_valid)
self.assertFalse(user.email_token)
@with_transaction()
def test_reset_password(self):
'Test reset password'
pool = Pool()
User = pool.get('web.user')
user = User(email='user@example.com', email_valid=True)
user.save()
self.assertFalse(user.password_hash)
with patch.object(
user_module, 'send_message_transactional') as send_message:
User.reset_password([user])
send_message.assert_called_once()
token = user.reset_password_token
self.assertTrue(token)
self.assertTrue(user.reset_password_token_expire)
self.assertEqual(
user.get_email_reset_password_url(),
'%s?email=user%%40example.com&token=%s'
% (RESET_PASSWORD_URL, token))
self.assertFalse(
User.set_password_token('foo@example.com', '12345', 'secret'))
self.assertFalse(
User.set_password_token('user@example.com', '12345', 'secret'))
self.assertFalse(
User.set_password_token('foo@example.com', token, 'secret'))
self.assertFalse(user.password_hash)
self.assertTrue(User.set_password_url(
user.get_email_reset_password_url(), 'secret'))
self.assertTrue(user.password_hash)
self.assertFalse(user.reset_password_token)
self.assertFalse(user.reset_password_token_expire)
@with_transaction()
def test_create_format_email(self):
"Test create format email"
pool = Pool()
User = pool.get('web.user')
user = User(email='FOO@Example.com')
user.save()
self.assertEqual(user.email, 'foo@example.com')
@with_transaction()
def test_write_format_email(self):
"Test write format email"
pool = Pool()
User = pool.get('web.user')
user = User(email='foo@example.com')
user.save()
User.write([user], {'email': 'BAR@Example.com'})
self.assertEqual(user.email, 'bar@example.com')
@with_transaction()
def test_authenticate_case_insensitive(self):
"Test authenticate case insensitive"
pool = Pool()
User = pool.get('web.user')
user = User(email='foo@example.com', password='secret')
user.save()
auth_user = User.authenticate('FOO@Example.com', 'secret')
self.assertEqual(auth_user, user)
del ModuleTestCase

8
modules/web_user/tryton.cfg Executable file
View File

@@ -0,0 +1,8 @@
[tryton]
version=7.2.2
depends:
ir
party
xml:
user.xml
message.xml

558
modules/web_user/user.py Executable file
View File

@@ -0,0 +1,558 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import datetime
import hashlib
import logging
import random
import string
import time
import urllib.parse
import warnings
from secrets import token_hex
try:
import bcrypt
except ImportError:
bcrypt = None
try:
import html2text
except ImportError:
html2text = None
from sql import Literal
from sql.conditionals import Coalesce
from sql.functions import CurrentTimestamp
from sql.operators import Equal
from trytond.config import config
from trytond.exceptions import RateLimitException
from trytond.i18n import gettext
from trytond.model import (
DeactivableMixin, Exclude, Index, ModelSQL, ModelView, Unique,
avatar_mixin, fields)
from trytond.pool import Pool
from trytond.pyson import Eval
from trytond.report import Report, get_email
from trytond.res.user import CRYPT_CONTEXT, LoginAttempt
from trytond.sendmail import send_message_transactional
from trytond.tools.email_ import (
EmailNotValidError, normalize_email, set_from_header, validate_email)
from trytond.transaction import Transaction, without_check_access
from .exceptions import UserValidationError
logger = logging.getLogger(__name__)
def _send_email(from_, users, email_func):
from_cfg = config.get('email', 'from')
for user in users:
msg, title = email_func(user)
set_from_header(msg, from_cfg, from_ or from_cfg)
msg['To'] = user.email
msg['Subject'] = title
send_message_transactional(msg)
def _add_params(url, **params):
parts = urllib.parse.urlsplit(url)
query = urllib.parse.parse_qsl(parts.query)
for key, value in sorted(params.items()):
query.append((key, value))
parts = list(parts)
parts[3] = urllib.parse.urlencode(query)
return urllib.parse.urlunsplit(parts)
def _extract_params(url):
return urllib.parse.parse_qsl(urllib.parse.urlsplit(url).query)
class User(avatar_mixin(100), DeactivableMixin, ModelSQL, ModelView):
'Web User'
__name__ = 'web.user'
_rec_name = 'email'
email = fields.Char(
"E-mail",
states={
'required': Eval('active', True),
})
email_valid = fields.Boolean('E-mail Valid')
email_token = fields.Char("E-mail Token", strip=False)
password_hash = fields.Char('Password Hash')
password = fields.Function(
fields.Char('Password'), 'get_password', setter='set_password')
reset_password_token = fields.Char("Reset Password Token", strip=False)
reset_password_token_expire = fields.Timestamp(
'Reset Password Token Expire')
party = fields.Many2One('party.party', 'Party', ondelete='RESTRICT')
secondary_parties = fields.Many2Many(
'web.user-party.party.secondary', 'user', 'party', "Secondary Parties")
@classmethod
def __setup__(cls):
super(User, cls).__setup__()
table = cls.__table__()
cls._sql_constraints += [
('email_exclude',
Exclude(table, (table.email, Equal),
where=table.active == Literal(True)),
'web_user.msg_user_email_unique'),
]
cls._sql_indexes.update({
Index(table, (table.email, Index.Equality())),
Index(table, (table.email_token, Index.Equality())),
})
cls._buttons.update({
'validate_email': {
'readonly': Eval('email_valid', False),
'depends': ['email_valid'],
},
'reset_password': {
'readonly': ~Eval('email_valid', False),
'depends': ['email_valid'],
},
})
@classmethod
def default_email_valid(cls):
return False
def get_password(self, name):
return 'x' * 10
@classmethod
def set_password(cls, users, name, value):
pool = Pool()
User = pool.get('res.user')
if value == 'x' * 10:
return
if Transaction().user and value:
User.validate_password(value, users)
to_write = []
for user in users:
to_write.extend([[user], {
'password_hash': cls.hash_password(value),
}])
cls.write(*to_write)
@fields.depends('party', 'email')
def on_change_party(self):
if not self.email and self.party:
self.email = self.party.email
@classmethod
def _format_email(cls, users):
for user in users:
email = normalize_email(user.email).lower()
if email != user.email:
user.email = email
cls.save(users)
@classmethod
def copy(cls, users, default=None):
default = default.copy() if default is not None else {}
default['password_hash'] = None
default['reset_password_token'] = None
return super().copy(users, default=default)
@classmethod
def create(cls, vlist):
users = super(User, cls).create(vlist)
cls._format_email(users)
return users
@classmethod
def write(cls, *args):
super(User, cls).write(*args)
users = sum(args[0:None:2], [])
cls._format_email(users)
@classmethod
def validate_fields(cls, users, fields_names):
super().validate_fields(users, fields_names)
cls.check_valid_email(users, fields_names)
@classmethod
def check_valid_email(cls, users, fields_names=None):
if fields_names and 'email' not in fields_names:
return
for user in users:
if user.email:
try:
validate_email(user.email)
except EmailNotValidError as e:
raise UserValidationError(gettext(
'web_user.msg_user_email_invalid',
user=user.rec_name,
email=user.email),
str(e)) from e
@classmethod
def authenticate(cls, email, password):
pool = Pool()
Attempt = pool.get('web.user.authenticate.attempt')
email = email.lower()
count_ip = Attempt.count_ip()
if count_ip > config.getint(
'session', 'max_attempt_ip_network', default=300):
# Do not add attempt as the goal is to prevent flooding
raise RateLimitException()
count = Attempt.count(email)
if count > config.getint('session', 'max_attempt', default=5):
Attempt.add(email)
raise RateLimitException()
# Prevent brute force attack
Transaction().atexit(time.sleep, 2 ** count - 1)
users = cls.search([('email', '=', email)])
if users:
user, = users
valid, new_hash = cls.check_password(password, user.password_hash)
if valid:
if new_hash:
logger.info("Update password hash for %s", user.id)
with Transaction().new_transaction():
with without_check_access():
cls.write([cls(user.id)], {
'password_hash': new_hash,
})
Attempt.remove(email)
return user
Attempt.add(email)
@classmethod
def hash_password(cls, password):
'''Hash given password in the form
<hash_method>$<password>$<salt>...'''
if not password:
return ''
return CRYPT_CONTEXT.hash(password)
@classmethod
def check_password(cls, password, hash_):
if not hash_:
return False, None
try:
return CRYPT_CONTEXT.verify_and_update(password, hash_)
except ValueError:
hash_method = hash_.split('$', 1)[0]
warnings.warn(
"Use deprecated hash method %s" % hash_method,
DeprecationWarning)
valid = getattr(cls, 'check_' + hash_method)(password, hash_)
if valid:
new_hash = CRYPT_CONTEXT.hash(password)
else:
new_hash = None
return valid, new_hash
@classmethod
def hash_sha1(cls, password):
salt = ''.join(random.sample(string.ascii_letters + string.digits, 8))
salted_password = password + salt
if isinstance(salted_password, str):
salted_password = salted_password.encode('utf-8')
hash_ = hashlib.sha1(salted_password).hexdigest()
return '$'.join(['sha1', hash_, salt])
@classmethod
def check_sha1(cls, password, hash_):
if isinstance(password, str):
password = password.encode('utf-8')
hash_method, hash_, salt = hash_.split('$', 2)
salt = salt or ''
if isinstance(salt, str):
salt = salt.encode('utf-8')
assert hash_method == 'sha1'
return hash_ == hashlib.sha1(password + salt).hexdigest()
@classmethod
def hash_bcrypt(cls, password):
if isinstance(password, str):
password = password.encode('utf-8')
hash_ = bcrypt.hashpw(password, bcrypt.gensalt()).decode('utf-8')
return '$'.join(['bcrypt', hash_])
@classmethod
def check_bcrypt(cls, password, hash_):
if isinstance(password, str):
password = password.encode('utf-8')
hash_method, hash_ = hash_.split('$', 1)
if isinstance(hash_, str):
hash_ = hash_.encode('utf-8')
assert hash_method == 'bcrypt'
return hash_ == bcrypt.hashpw(password, hash_)
def new_session(self):
pool = Pool()
Session = pool.get('web.user.session')
return Session.add(self)
@classmethod
def get_user(cls, session):
pool = Pool()
Session = pool.get('web.user.session')
return Session.get_user(session)
@classmethod
@ModelView.button
def validate_email(cls, users, from_=None):
for user in users:
user.set_email_token()
cls.save(users)
_send_email(from_, users, cls.get_email_validation)
def set_email_token(self, nbytes=None):
self.email_token = token_hex(nbytes)
def get_email_validation(self):
return get_email(
'web.user.email_validation', self, self.languages)
def get_email_validation_url(self, url=None):
if url is None:
url = config.get('web', 'email_validation_url')
return _add_params(url, token=self.email_token)
@classmethod
def validate_email_url(cls, url):
parts = urllib.parse.urlsplit(url)
tokens = filter(
None, urllib.parse.parse_qs(parts.query).get('token', [None]))
return cls.validate_email_token(list(tokens))
@classmethod
def validate_email_token(cls, tokens):
users = cls.search([
('email_token', 'in', tokens),
])
cls.write(users, {
'email_valid': True,
'email_token': None,
})
return users
@classmethod
@ModelView.button
def reset_password(cls, users, from_=None):
now = datetime.datetime.now()
# Prevent abusive reset
def reset(user):
return not (user.reset_password_token_expire
and user.reset_password_token_expire > now)
users = list(filter(reset, users))
for user in users:
user.set_reset_password_token()
cls.save(users)
_send_email(from_, users, cls.get_email_reset_password)
def set_reset_password_token(self, nbytes=None):
self.reset_password_token = token_hex(nbytes)
self.reset_password_token_expire = (
datetime.datetime.now() + datetime.timedelta(
seconds=config.getint(
'session', 'web_timeout_reset', default=24 * 60 * 60)))
def clear_reset_password_token(self):
self.reset_password_token = None
self.reset_password_token_expire = None
def get_email_reset_password(self):
return get_email(
'web.user.email_reset_password', self, self.languages)
def get_email_reset_password_url(self, url=None):
if url is None:
url = config.get('web', 'reset_password_url')
return _add_params(
url, token=self.reset_password_token, email=self.email)
@classmethod
def set_password_url(cls, url, password):
parts = urllib.parse.urlsplit(url)
query = urllib.parse.parse_qs(parts.query)
email = query.get('email', [None])[0]
token = query.get('token', [None])[0]
return cls.set_password_token(email, token, password)
@classmethod
def set_password_token(cls, email, token, password):
pool = Pool()
Attempt = pool.get('web.user.authenticate.attempt')
email = email.lower()
# Prevent brute force attack
Transaction().atexit(
time.sleep, random.randint(0, 2 ** Attempt.count(email) - 1))
users = cls.search([
('email', '=', email),
])
if users:
user, = users
if user.reset_password_token == token:
now = datetime.datetime.now()
expire = user.reset_password_token_expire
user.clear_reset_password_token()
if expire > now:
user.password = password
user.save()
Attempt.remove(email)
return True
Attempt.add(email)
return False
@property
def languages(self):
pool = Pool()
Language = pool.get('ir.lang')
if self.party and self.party.lang:
languages = [self.party.lang]
else:
languages = Language.search([
('code', '=', Transaction().language),
])
return languages
class User_PartySecondary(ModelSQL):
"Web User - Secondary Party"
__name__ = 'web.user-party.party.secondary'
user = fields.Many2One(
'web.user', "User", required=True, ondelete='CASCADE')
party = fields.Many2One(
'party.party', "Party", required=True, ondelete='CASCADE')
class UserAuthenticateAttempt(LoginAttempt):
'Web User Authenticate Attempt'
__name__ = 'web.user.authenticate.attempt'
_table = None # Needed to reset LoginAttempt._table
class UserSession(ModelSQL):
'Web User Session'
__name__ = 'web.user.session'
_rec_name = 'key'
key = fields.Char("Key", required=True, strip=False)
user = fields.Many2One(
'web.user', "User", required=True, ondelete='CASCADE')
@classmethod
def __setup__(cls):
super(UserSession, cls).__setup__()
table = cls.__table__()
cls.__rpc__ = {}
cls._sql_constraints += [
('key_unique', Unique(table, table.key),
'web_user.msg_user_session_key_unique'),
]
cls._sql_indexes.update({
Index(
table,
(Coalesce(table.write_date, table.create_date),
Index.Range())),
Index(table, (table.key, Index.Equality())),
})
@classmethod
def default_key(cls, nbytes=None):
return token_hex(nbytes)
@classmethod
def add(cls, user):
cursor = Transaction().connection.cursor()
table = cls.__table__()
cursor.execute(*table.delete(
where=(
Coalesce(table.write_date, table.create_date)
< CurrentTimestamp() - cls.timeout())))
session = cls(user=user)
session.save()
return session.key
@classmethod
def remove(cls, key):
sessions = cls.search([
('key', '=', key),
])
cls.delete(sessions)
@classmethod
def get_user(cls, session):
transaction = Transaction()
sessions = cls.search([
('key', '=', session),
])
if not sessions:
return
session, = sessions
if not session.expired:
return session.user
elif not transaction.readonly:
cls.delete([session])
@classmethod
def timeout(cls):
return datetime.timedelta(seconds=config.getint(
'session', 'web_timeout', default=30 * 24 * 60 * 60))
@property
def expired(self):
now = datetime.datetime.now()
timestamp = self.write_date or self.create_date
return abs(timestamp - now) > self.timeout()
@classmethod
def reset(cls, session):
sessions = cls.search([
('key', '=', session),
])
cls.write(sessions, {})
@classmethod
def create(cls, vlist):
vlist = [v.copy() for v in vlist]
for values in vlist:
# Ensure to get a different key for each record
# default methods are called only once
values.setdefault('key', cls.default_key())
return super(UserSession, cls).create(vlist)
class EmailValidation(Report):
__name__ = 'web.user.email_validation'
@classmethod
def get_context(cls, records, header, data):
context = super().get_context(records, header, data)
context['extract_params'] = _extract_params
return context
class EmailResetPassword(Report):
__name__ = 'web.user.email_reset_password'
@classmethod
def get_context(cls, records, header, data):
context = super().get_context(records, header, data)
context['extract_params'] = _extract_params
expire_delay = (
records[0].reset_password_token_expire - datetime.datetime.now())
# Use a precision of minutes
expire_delay = datetime.timedelta(
days=expire_delay.days,
minutes=round(expire_delay.seconds / 60))
context['expire_delay'] = expire_delay
return context

105
modules/web_user/user.xml Executable file
View File

@@ -0,0 +1,105 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
<record model="ir.ui.view" id="user_view_form">
<field name="model">web.user</field>
<field name="type">form</field>
<field name="name">user_form</field>
</record>
<record model="ir.ui.view" id="user_view_list">
<field name="model">web.user</field>
<field name="type">tree</field>
<field name="name">user_list</field>
</record>
<record model="ir.action.act_window" id="act_user_form">
<field name="name">Web Users</field>
<field name="res_model">web.user</field>
</record>
<record model="ir.action.act_window.view" id="act_user_form_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="user_view_list"/>
<field name="act_window" ref="act_user_form"/>
</record>
<record model="ir.action.act_window.view" id="act_user_form_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="user_view_form"/>
<field name="act_window" ref="act_user_form"/>
</record>
<menuitem
parent="res.menu_res"
action="act_user_form"
sequence="50"
id="menu_user_form"/>
<record model="ir.action.act_window" id="act_user_form_party">
<field name="name">Web Users</field>
<field name="res_model">web.user</field>
<field
name="domain"
eval="['OR', ('party', 'in', Eval('active_ids')), ('secondary_parties', 'in', Eval('active_ids'))]"
pyson="1"/>
</record>
<record model="ir.action.act_window.view" id="act_user_form_party_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="user_view_list"/>
<field name="act_window" ref="act_user_form_party"/>
</record>
<record model="ir.action.act_window.view" id="act_user_form_party_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="user_view_form"/>
<field name="act_window" ref="act_user_form_party"/>
</record>
<record model="ir.action.keyword" id="act_user_form_party_keyword1">
<field name="keyword">form_relate</field>
<field name="model">party.party,-1</field>
<field name="action" ref="act_user_form_party"/>
</record>
<record model="ir.model.access" id="access_user">
<field name="model">web.user</field>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_delete" eval="False"/>
</record>
<record model="ir.model.access" id="access_user_admin">
<field name="model">web.user</field>
<field name="group" ref="res.group_admin"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_delete" eval="True"/>
</record>
<record model="ir.model.button" id="user_validate_email_button">
<field name="model">web.user</field>
<field name="name">validate_email</field>
<field name="string">Validate E-mail</field>
</record>
<record model="ir.model.button" id="user_reset_password_button">
<field name="model">web.user</field>
<field name="name">reset_password</field>
<field name="string">Reset Password</field>
</record>
<record model="ir.action.report" id="report_email_validation">
<field name="name">Email Validation</field>
<field name="model">web.user</field>
<field name="report_name">web.user.email_validation</field>
<field name="report">web_user/email_validation.html</field>
<field name="template_extension">html</field>
</record>
<record model="ir.action.report" id="report_email_reset_password">
<field name="name">Reset Password</field>
<field name="model">web.user</field>
<field name="report_name">web.user.email_reset_password</field>
<field name="report">web_user/email_reset_password.html</field>
<field name="template_extension">html</field>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<form>
<group col="4" colspan="3" yalign="0" id="header">
<label name="party"/>
<field name="party"/>
<label name="active"/>
<field name="active"/>
<label name="email"/>
<field name="email" widget="email"/>
<newline/>
</group>
<field name="avatar" widget="image" height="100" width="100" xexpand="0" border="circle"/>
<label name="password"/>
<field name="password" widget="password"/>
<button name="reset_password" colspan="2"/>
<label name="email_valid"/>
<field name="email_valid"/>
<button name="validate_email" colspan="2"/>
<field name="secondary_parties" colspan="4"/>
</form>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree>
<field name="email" expand="1">
<prefix id="avatar" icon="avatar_url" icon_type="url" url_size="s" border="circle"/>
</field>
<field name="email_valid"/>
<field name="party" expand="2"/>
<button name="validate_email" string="Validate E-mail"/>
<button name="reset_password" string="Reset Password"/>
</tree>