txukunketa

This commit is contained in:
aitzol 2022-04-16 23:13:00 +02:00
parent c6a4c118ab
commit d9e3661071
16 changed files with 322 additions and 285 deletions

166
app.py
View File

@ -31,10 +31,10 @@ from ldap3.core.exceptions import LDAPBindError, LDAPConstraintViolationResult,
import logging import logging
from os import getenv, environ, path from os import getenv, environ, path
import re import re
import sqlite3 from libs import flist, slist
from data import flist, slist from libs.localization import *
from libs.helper import *
import random import random
import gettext
BASE_DIR = path.dirname(__file__) BASE_DIR = path.dirname(__file__)
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
@ -134,6 +134,9 @@ def post_signup():
form = request.forms.getunicode form = request.forms.getunicode
isFake = False isFake = False
manage_codes = Tools()
db = 'data/invite-codes.db'
def username_validation(e): def username_validation(e):
regex = r'^\w+$' regex = r'^\w+$'
return(bool(re.fullmatch(regex, e))) return(bool(re.fullmatch(regex, e)))
@ -142,23 +145,6 @@ def post_signup():
regex = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b' regex = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
return(bool(re.fullmatch(regex, e))) return(bool(re.fullmatch(regex, e)))
def code_is_valid(code):
con = sqlite3.connect('data/invite-codes.db')
cur = con.cursor()
codes=[]
for row in cur.execute('SELECT * FROM codes WHERE valid = 1'):
codes.append(row[0])
return(bool(code in codes))
def mark_code_as_used(code):
con = sqlite3.connect('data/invite-codes.db')
cur = con.cursor()
cur.execute('''UPDATE codes SET valid=? WHERE code==?''',(0, code))
con.commit()
def auto_complete(arg): def auto_complete(arg):
if arg == 'firstname': if arg == 'firstname':
result = random.choice(flist.firstname) result = random.choice(flist.firstname)
@ -169,7 +155,7 @@ def post_signup():
def error(msg): def error(msg):
return signup_tpl(alerts=[('error', msg, 'fadeOut')], str=i18n.str) return signup_tpl(alerts=[('error', msg, 'fadeOut')], str=i18n.str)
if not code_is_valid(form('invite_code')): if not manage_codes.code_is_valid(form('invite_code'), db):
return(error(i18n.msg[4])) return(error(i18n.msg[4]))
if len(form('username')) < 3: if len(form('username')) < 3:
@ -206,7 +192,7 @@ def post_signup():
return error(str(e)) return error(str(e))
try: try:
mark_code_as_used(form('invite_code')) manage_codes.mark_code_as_used(form('invite_code'), db)
except Error as e: except Error as e:
LOG.warning("There was a problem verifying the invitation code, please try again later.", e) LOG.warning("There was a problem verifying the invitation code, please try again later.", e)
return error(str(e)) return error(str(e))
@ -230,10 +216,10 @@ def post_edit_fullname():
return edit_fullname_tpl(alerts=[('error', msg, 'fadeOut')], data=newSession().get(), str=i18n.str) return edit_fullname_tpl(alerts=[('error', msg, 'fadeOut')], data=newSession().get(), str=i18n.str)
if len(form('firstname')) < 3: if len(form('firstname')) < 3:
return error(i18n.msg[10]) return error(i18n.msg[11])
if len(form('surname')) < 3: if len(form('surname')) < 3:
return error(i18n.msg[11]) return error(i18n.msg[12])
try: try:
edit_fullname(username, old_firstname, old_surname, form('firstname').lower(), form('surname').lower()) edit_fullname(username, old_firstname, old_surname, form('firstname').lower(), form('surname').lower())
@ -241,7 +227,7 @@ def post_edit_fullname():
LOG.warning("Unsuccessful attempt to edit fullname for %s: %s" % (username, e)) LOG.warning("Unsuccessful attempt to edit fullname for %s: %s" % (username, e))
return error(str(e)) return error(str(e))
return user_tpl(alerts=[('success', i18n.msg[12], 'fadeOut' )], data=newSession().get(), str=i18n.str) return user_tpl(alerts=[('success', i18n.msg[13], 'fadeOut' )], data=newSession().get(), str=i18n.str)
@post('/edit_email') @post('/edit_email')
def post_edit_email(): def post_edit_email():
@ -261,7 +247,7 @@ def post_edit_email():
return edit_email_tpl(alerts=[('error', msg, 'fadeOut')], data=newSession().get(), str=i18n.str) return edit_email_tpl(alerts=[('error', msg, 'fadeOut')], data=newSession().get(), str=i18n.str)
if not email_is_valid(form('email')): if not email_is_valid(form('email')):
return(error(i18n.msg[13])) return(error(i18n.msg[14]))
try: try:
edit_email(username, old_email, form('email').lower()) edit_email(username, old_email, form('email').lower())
@ -269,7 +255,7 @@ def post_edit_email():
LOG.warning("Unsuccessful attempt to change email addres for %s: %s" % (username, e)) LOG.warning("Unsuccessful attempt to change email addres for %s: %s" % (username, e))
return error(str(e)) return error(str(e))
return user_tpl(alerts=[('success', i18n.msg[14], 'fadeOut' )], data=newSession().get(), str=i18n.str) return user_tpl(alerts=[('success', i18n.msg[16], 'fadeOut' )], data=newSession().get(), str=i18n.str)
@post('/change_pwd') @post('/change_pwd')
def post_change_pwd(): def post_change_pwd():
@ -289,7 +275,7 @@ def post_change_pwd():
return error(i18n.msg[8]) return error(i18n.msg[8])
if form('old-password') == form('confirm-password'): if form('old-password') == form('confirm-password'):
return error(i18n.msg[15]) return error(i18n.msg[17])
try: try:
change_passwords(username, form('old-password'), form('new-password')) change_passwords(username, form('old-password'), form('new-password'))
@ -300,7 +286,7 @@ def post_change_pwd():
LOG.info("Password successfully changed for: %s" % username) LOG.info("Password successfully changed for: %s" % username)
return index_tpl(alerts=[('success', i18n.msg[16], 'fadeOut')], username=username, str=i18n.str) return index_tpl(alerts=[('success', i18n.msg[18], 'fadeOut')], username=username, str=i18n.str)
@post('/delete') @post('/delete')
def post_delete(): def post_delete():
@ -314,14 +300,14 @@ def post_delete():
if(form('username').lower() == username): if(form('username').lower() == username):
del_user(username) del_user(username)
else: else:
return(error(i18n.msg[17])) return(error(i18n.msg[19]))
except Error as e: except Error as e:
LOG.warning("Unsuccessful attempt to delete the account: %s" % e) LOG.warning("Unsuccessful attempt to delete the account: %s" % e)
return error(str(e)) return error(str(e))
LOG.info("Account successfully deleted") LOG.info("Account successfully deleted")
return index_tpl(alerts=[('success', i18n.msg[18], 'fadeOut')], str=i18n.str) return index_tpl(alerts=[('success', i18n.msg[20], 'fadeOut')], str=i18n.str)
@route('/static/<filename>', name='static') @route('/static/<filename>', name='static')
def serve_static(filename): def serve_static(filename):
@ -380,15 +366,15 @@ def login_user(conf, *args):
login_user_ldap(conf, *args) login_user_ldap(conf, *args)
except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError): except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError):
raise Error(i18n.msg[19]) raise Error(i18n.msg[21])
except LDAPSocketOpenError as e: except LDAPSocketOpenError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e)) LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[20]) raise Error(i18n.msg[22])
except LDAPExceptionError as e: except LDAPExceptionError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e)) LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[21]) raise Error(i18n.msg[23])
def login_user_ldap(conf, username, password): def login_user_ldap(conf, username, password):
#set current LDAP #set current LDAP
@ -428,15 +414,15 @@ def logout_user(conf, *args):
logout_user_ldap(conf, *args) logout_user_ldap(conf, *args)
except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError): except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError):
raise Error(i18n.msg[19]) raise Error(i18n.msg[21])
except LDAPSocketOpenError as e: except LDAPSocketOpenError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e)) LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[20]) raise Error(i18n.msg[22])
except LDAPExceptionError as e: except LDAPExceptionError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e)) LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[21]) raise Error(i18n.msg[23])
def logout_user_ldap(conf, username): def logout_user_ldap(conf, username):
#set current LDAP #set current LDAP
@ -475,15 +461,15 @@ def new_user_account(conf, *args):
register(conf, *args) register(conf, *args)
except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError): except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError):
raise Error(i18n.msg[19]) raise Error(i18n.msg[21])
except LDAPSocketOpenError as e: except LDAPSocketOpenError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e)) LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[20]) raise Error(i18n.msg[22])
except LDAPExceptionError as e: except LDAPExceptionError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e)) LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[21]) raise Error(i18n.msg[23])
def register(conf, username, firstname, surname, password, email, isFake): def register(conf, username, firstname, surname, password, email, isFake):
@ -503,10 +489,10 @@ def register(conf, username, firstname, surname, password, email, isFake):
try: try:
if (find_user_dn(conf,c,username) is not None): if (find_user_dn(conf,c,username) is not None):
raise Error(i18n.msg[22]) raise Error(i18n.msg[24])
if (find_email(conf,c,email)): if (find_email(conf,c,email)):
raise Error(i18n.msg[23]) raise Error(i18n.msg[25])
except Error as e: except Error as e:
raise e raise e
@ -549,7 +535,7 @@ def new_fullname(conf, *args):
update_fullname(conf, *args) update_fullname(conf, *args)
except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError): except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError):
raise Error(i18n.msg[24]) raise Error(i18n.msg[26])
except LDAPConstraintViolationResult as e: except LDAPConstraintViolationResult as e:
# Extract useful part of the error message (for Samba 4 / AD). # Extract useful part of the error message (for Samba 4 / AD).
@ -558,11 +544,11 @@ def new_fullname(conf, *args):
except LDAPSocketOpenError as e: except LDAPSocketOpenError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e)) LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[20]) raise Error(i18n.msg[22])
except LDAPExceptionError as e: except LDAPExceptionError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e)) LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[21]) raise Error(i18n.msg[23])
def update_fullname(conf, username, firstname, surname): def update_fullname(conf, username, firstname, surname):
#set current LDAP #set current LDAP
@ -581,7 +567,7 @@ def update_fullname(conf, username, firstname, surname):
fakeFullName = user_dn[3:-len(base)].split(" ") fakeFullName = user_dn[3:-len(base)].split(" ")
if(user_dn == new_user_dn): if(user_dn == new_user_dn):
raise Error('Izen-abizenak ez dira aldatu.') raise Error(i18n.msg[10])
c.modify(new_user_dn, {'fakeCn': [(MODIFY_REPLACE, 'false' )]}) c.modify(new_user_dn, {'fakeCn': [(MODIFY_REPLACE, 'false' )]})
newSession().set(get_user_data(new_user_dn, c)) newSession().set(get_user_data(new_user_dn, c))
@ -612,7 +598,7 @@ def new_email_address(conf, *args):
update_email_address(conf, *args) update_email_address(conf, *args)
except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError): except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError):
raise Error(i18n.msg[24]) raise Error(i18n.msg[26])
except LDAPConstraintViolationResult as e: except LDAPConstraintViolationResult as e:
# Extract useful part of the error message (for Samba 4 / AD). # Extract useful part of the error message (for Samba 4 / AD).
@ -621,16 +607,16 @@ def new_email_address(conf, *args):
except LDAPSocketOpenError as e: except LDAPSocketOpenError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e)) LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[20]) raise Error(i18n.msg[22])
except LDAPExceptionError as e: except LDAPExceptionError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e)) LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[21]) raise Error(i18n.msg[23])
def update_email_address(conf, username, old_email, new_email): def update_email_address(conf, username, old_email, new_email):
if(old_email == new_email): if(old_email == new_email):
raise Error('Email helbidea ez da aldatu.') raise Error(i18n.msg[15])
#set current LDAP #set current LDAP
superUser = SuperUsers(conf) superUser = SuperUsers(conf)
@ -670,7 +656,7 @@ def change_password(conf, *args):
change_password_ldap(conf, *args) change_password_ldap(conf, *args)
except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError): except (LDAPBindError, LDAPInvalidCredentialsResult, LDAPUserNameIsMandatoryError):
raise Error(i18n.msg[24]) raise Error(i18n.msg[26])
except LDAPConstraintViolationResult as e: except LDAPConstraintViolationResult as e:
# Extract useful part of the error message (for Samba 4 / AD). # Extract useful part of the error message (for Samba 4 / AD).
@ -679,11 +665,11 @@ def change_password(conf, *args):
except LDAPSocketOpenError as e: except LDAPSocketOpenError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e)) LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[20]) raise Error(i18n.msg[22])
except LDAPExceptionError as e: except LDAPExceptionError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e)) LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[21]) raise Error(i18n.msg[23])
def change_password_ldap(conf, username, old_pass, new_pass): def change_password_ldap(conf, username, old_pass, new_pass):
@ -729,11 +715,11 @@ def del_account(conf, *args):
except LDAPSocketOpenError as e: except LDAPSocketOpenError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e)) LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[20]) raise Error(i18n.msg[22])
except LDAPExceptionError as e: except LDAPExceptionError as e:
LOG.error('{}: {!s}'.format(e.__class__.__name__, e)) LOG.error('{}: {!s}'.format(e.__class__.__name__, e))
raise Error(i18n.msg[21]) raise Error(i18n.msg[23])
def delete(conf, username): def delete(conf, username):
#set current LDAP #set current LDAP
@ -831,8 +817,9 @@ def newSession():
self.data = bottle.request.environ.get('beaker.session') self.data = bottle.request.environ.get('beaker.session')
self.lang = self.get_lang() self.lang = self.get_lang()
#localization #localization
self.lang = self.get_lang()
global i18n global i18n
i18n = LocalizeTo(self.lang) i18n = LocalizeTo(self.lang, CONF)
def get_lang(self): def get_lang(self):
if 'HTTP_ACCEPT_LANGUAGE' in bottle.request.environ: if 'HTTP_ACCEPT_LANGUAGE' in bottle.request.environ:
@ -845,7 +832,7 @@ def newSession():
if 'username' in self.data: if 'username' in self.data:
return(self.data) return(self.data)
else: else:
raise Error(i18n.msg[25]) raise Error(i18n.msg[27])
def set(self, data): def set(self, data):
self.active = data[0] self.active = data[0]
@ -871,71 +858,6 @@ def newSession():
s=Session() s=Session()
return s return s
class LocalizeTo(object):
"""docstring for Session"""
def __init__(self, lang):
super(LocalizeTo, self).__init__()
translate = gettext.translation('base', localedir=CONF['locale']['dir'], languages=[lang])
translate.install()
_ = translate.gettext
#generic strings
str_00 = _("User")
str_01 = _("Username")
str_02 = _("Firstname")
str_03 = _("Surname")
str_04 = _("Password")
str_05 = _("Old password")
str_06 = _("New password")
str_07 = _("Confirm password")
str_08 = _("Email")
str_09 = _("edit")
str_10 = _("Login")
str_11 = _("Logout")
str_12 = _("Delete")
str_13 = _("Sign Up")
str_14 = _("Back")
str_15 = _("Update")
str_16 = _("Or Sign In")
str_17 = _("Or Sign Up")
str_18 = _("Invite code")
str_19 = _("Edit your fullname")
str_20 = _("Edit your email")
str_21 = _("Change your password")
str_22 = _("Delete your account")
str_23 = _("Welcome")
#messages
msg_00 = _("The session was closed.")
msg_01 = _("Username must be at least 3 characters long!")
msg_02 = _("Please enter your password!")
msg_03 = _("Welcome")
msg_04 = _("The code is invalid or has expired.")
msg_05 = _("A bit short, don't you think?!")
msg_06 = _("Not allowed characters for the username field.")
msg_07 = _("Passwords do not match!")
msg_08 = _("Password must be at least 8 characters long!")
msg_09 = _("Congratulations, your account has been created!")
msg_10 = _("Your firstname is a bit short, don't you think?")
msg_11 = _("Your surname is a bit short, don't you think?")
msg_12 = _("Your first and last name have been successfully updated.")
msg_13 = _("Invalid email address. Please try again.")
msg_14 = _("Your email has been successfully updated.")
msg_15 = _("The password entered is the same as the current password.")
msg_16 = _("Password has been changed!")
msg_17 = _("Please, type your username for account deletion.")
msg_18 = _("Account successfully deleted!")
msg_19 = _("Username or password is incorrect!")
msg_20 = _("Unable to connect to the remote server.")
msg_21 = _("Encountered an unexpected error while communicating with the remote server.")
msg_22 = _("User already exists.")
msg_23 = _("Email already exists.")
msg_24 = _("Forgot your password? Please try again.")
msg_25 = _("The session has expired.")
self.str = {'usr':str_00, 'usrn':str_01, 'fn':str_02, 'sn':str_03, 'pwd':str_04, 'old-pwd':str_05, 'new-pwd':str_06, 'conf-pwd':str_07, 'email':str_08, 'edit':str_09, 'login':str_10, 'log-out':str_11, 'del':str_12, 'sign-up':str_13, 'back':str_14, 'update':str_15, 'or-sign-in':str_16, 'or-sign-up':str_17, 'inv-code':str_18, 'edit-fn':str_19, 'edit-email':str_20, 'ch-pwd':str_21, 'del-account':str_22, 'welcome':str_23}
self.msg = (msg_00, msg_01, msg_02, msg_03, msg_04, msg_05, msg_06, msg_07, msg_08, msg_09, msg_10, msg_11, msg_12, msg_13, msg_14, msg_15, msg_16, msg_17, msg_18, msg_19, msg_20, msg_21, msg_22, msg_23, msg_24, msg_25)
if environ.get('DEBUG'): if environ.get('DEBUG'):
bottle.debug(True) bottle.debug(True)

Binary file not shown.

Binary file not shown.

Binary file not shown.

25
libs/helper.py Normal file
View File

@ -0,0 +1,25 @@
#!/usr/bin/python3
import sqlite3
class Tools():
def __init__(self):
self.username = ''
#check code
def code_is_valid(self, code, db):
con = sqlite3.connect(db)
cur = con.cursor()
codes=[]
for row in cur.execute('SELECT * FROM codes WHERE valid = 1'):
codes.append(row[0])
return(bool(code in codes))
def mark_code_as_used(self, code, db):
con = sqlite3.connect(db)
cur = con.cursor()
cur.execute('''UPDATE codes SET valid=? WHERE code==?''',(0, code))
con.commit()

68
libs/localization.py Normal file
View File

@ -0,0 +1,68 @@
import gettext
class LocalizeTo(object):
"""docstring for Session"""
def __init__(self, lang, conf):
super(LocalizeTo, self).__init__()
translate = gettext.translation('base', localedir=conf['locale']['dir'], languages=[lang])
translate.install()
_ = translate.gettext
#generic strings
str_00 = _("User")
str_01 = _("Username")
str_02 = _("Firstname")
str_03 = _("Surname")
str_04 = _("Password")
str_05 = _("Old password")
str_06 = _("New password")
str_07 = _("Confirm password")
str_08 = _("Email")
str_09 = _("edit")
str_10 = _("Login")
str_11 = _("Logout")
str_12 = _("Delete")
str_13 = _("Sign Up")
str_14 = _("Back")
str_15 = _("Update")
str_16 = _("Or Sign In")
str_17 = _("Or Sign Up")
str_18 = _("Invite code")
str_19 = _("Edit your fullname")
str_20 = _("Edit your email")
str_21 = _("Change your password")
str_22 = _("Delete your account")
str_23 = _("Welcome")
#messages
msg_00 = _("The session was closed.")
msg_01 = _("Username must be at least 3 characters long!")
msg_02 = _("Please enter your password!")
msg_03 = _("Welcome")
msg_04 = _("The code is invalid or has expired.")
msg_05 = _("A bit short, don't you think?!")
msg_06 = _("Not allowed characters for the username field.")
msg_07 = _("Passwords do not match!")
msg_08 = _("Password must be at least 8 characters long!")
msg_09 = _("Congratulations, your account has been created!")
msg_10 = _("Your first and last name have not been changed.")
msg_11 = _("Your firstname is a bit short, don't you think?")
msg_12 = _("Your surname is a bit short, don't you think?")
msg_13 = _("Your first and last name have been successfully updated.")
msg_14 = _("Invalid email address. Please try again.")
msg_15 = _("Email address has not been changed.")
msg_16 = _("Your email has been successfully updated.")
msg_17 = _("The password entered is the same as the current password.")
msg_18 = _("Password has been changed!")
msg_19 = _("Please, type your username for account deletion.")
msg_20 = _("Account successfully deleted!")
msg_21 = _("Username or password is incorrect!")
msg_22 = _("Unable to connect to the remote server.")
msg_23 = _("Encountered an unexpected error while communicating with the remote server.")
msg_24 = _("User already exists.")
msg_25 = _("Email already exists.")
msg_26 = _("Forgot your password? Please try again.")
msg_27 = _("The session has expired.")
self.str = {'usr':str_00, 'usrn':str_01, 'fn':str_02, 'sn':str_03, 'pwd':str_04, 'old-pwd':str_05, 'new-pwd':str_06, 'conf-pwd':str_07, 'email':str_08, 'edit':str_09, 'login':str_10, 'log-out':str_11, 'del':str_12, 'sign-up':str_13, 'back':str_14, 'update':str_15, 'or-sign-in':str_16, 'or-sign-up':str_17, 'inv-code':str_18, 'edit-fn':str_19, 'edit-email':str_20, 'ch-pwd':str_21, 'del-account':str_22, 'welcome':str_23}
self.msg = (msg_00, msg_01, msg_02, msg_03, msg_04, msg_05, msg_06, msg_07, msg_08, msg_09, msg_10, msg_11, msg_12, msg_13, msg_14, msg_15, msg_16, msg_17, msg_18, msg_19, msg_20, msg_21, msg_22, msg_23, msg_24, msg_25, msg_26, msg_27)

View File

@ -17,199 +17,207 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: app.py:880 #: libs/localization.py:12
msgid "User" msgid "User"
msgstr "" msgstr ""
#: app.py:881 #: libs/localization.py:13
msgid "Username" msgid "Username"
msgstr "" msgstr ""
#: app.py:882 #: libs/localization.py:14
msgid "Firstname" msgid "Firstname"
msgstr "" msgstr ""
#: app.py:883 #: libs/localization.py:15
msgid "Surname" msgid "Surname"
msgstr "" msgstr ""
#: app.py:884 #: libs/localization.py:16
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: app.py:885 #: libs/localization.py:17
msgid "Old password" msgid "Old password"
msgstr "" msgstr ""
#: app.py:886 #: libs/localization.py:18
msgid "New password" msgid "New password"
msgstr "" msgstr ""
#: app.py:887 #: libs/localization.py:19
msgid "Confirm password" msgid "Confirm password"
msgstr "" msgstr ""
#: app.py:888 #: libs/localization.py:20
msgid "Email" msgid "Email"
msgstr "" msgstr ""
#: app.py:889 #: libs/localization.py:21
msgid "edit" msgid "edit"
msgstr "" msgstr ""
#: app.py:890 #: libs/localization.py:22
msgid "Login" msgid "Login"
msgstr "" msgstr ""
#: app.py:891 #: libs/localization.py:23
msgid "Logout" msgid "Logout"
msgstr "" msgstr ""
#: app.py:892 #: libs/localization.py:24
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: app.py:893 #: libs/localization.py:25
msgid "Sign Up" msgid "Sign Up"
msgstr "" msgstr ""
#: app.py:894 #: libs/localization.py:26
msgid "Back" msgid "Back"
msgstr "" msgstr ""
#: app.py:895 #: libs/localization.py:27
msgid "Update" msgid "Update"
msgstr "" msgstr ""
#: app.py:896 #: libs/localization.py:28
msgid "Or Sign In" msgid "Or Sign In"
msgstr "" msgstr ""
#: app.py:897 #: libs/localization.py:29
msgid "Or Sign Up" msgid "Or Sign Up"
msgstr "" msgstr ""
#: app.py:898 #: libs/localization.py:30
msgid "Invite code" msgid "Invite code"
msgstr "" msgstr ""
#: app.py:899 #: libs/localization.py:31
msgid "Edit your fullname" msgid "Edit your fullname"
msgstr "" msgstr ""
#: app.py:900 #: libs/localization.py:32
msgid "Edit your email" msgid "Edit your email"
msgstr "" msgstr ""
#: app.py:901 #: libs/localization.py:33
msgid "Change your password" msgid "Change your password"
msgstr "" msgstr ""
#: app.py:902 #: libs/localization.py:34
msgid "Delete your account" msgid "Delete your account"
msgstr "" msgstr ""
#: app.py:903 app.py:909 #: libs/localization.py:35 libs/localization.py:41
msgid "Welcome" msgid "Welcome"
msgstr "" msgstr ""
#: app.py:906 #: libs/localization.py:38
msgid "The session was closed." msgid "The session was closed."
msgstr "" msgstr ""
#: app.py:907 #: libs/localization.py:39
msgid "Username must be at least 3 characters long!" msgid "Username must be at least 3 characters long!"
msgstr "" msgstr ""
#: app.py:908 #: libs/localization.py:40
msgid "Please enter your password!" msgid "Please enter your password!"
msgstr "" msgstr ""
#: app.py:910 #: libs/localization.py:42
msgid "The code is invalid or has expired." msgid "The code is invalid or has expired."
msgstr "" msgstr ""
#: app.py:911 #: libs/localization.py:43
msgid "A bit short, don't you think?!" msgid "A bit short, don't you think?!"
msgstr "" msgstr ""
#: app.py:912 #: libs/localization.py:44
msgid "Not allowed characters for the username field." msgid "Not allowed characters for the username field."
msgstr "" msgstr ""
#: app.py:913 #: libs/localization.py:45
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "" msgstr ""
#: app.py:914 #: libs/localization.py:46
msgid "Password must be at least 8 characters long!" msgid "Password must be at least 8 characters long!"
msgstr "" msgstr ""
#: app.py:915 #: libs/localization.py:47
msgid "Congratulations, your account has been created!" msgid "Congratulations, your account has been created!"
msgstr "" msgstr ""
#: app.py:916 #: libs/localization.py:48
msgid "Your first and last name have not been changed."
msgstr ""
#: libs/localization.py:49
msgid "Your firstname is a bit short, don't you think?" msgid "Your firstname is a bit short, don't you think?"
msgstr "" msgstr ""
#: app.py:917 #: libs/localization.py:50
msgid "Your surname is a bit short, don't you think?" msgid "Your surname is a bit short, don't you think?"
msgstr "" msgstr ""
#: app.py:918 #: libs/localization.py:51
msgid "Your first and last name have been successfully updated." msgid "Your first and last name have been successfully updated."
msgstr "" msgstr ""
#: app.py:919 #: libs/localization.py:52
msgid "Invalid email address. Please try again." msgid "Invalid email address. Please try again."
msgstr "" msgstr ""
#: app.py:920 #: libs/localization.py:53
msgid "Email address has not been changed."
msgstr ""
#: libs/localization.py:54
msgid "Your email has been successfully updated." msgid "Your email has been successfully updated."
msgstr "" msgstr ""
#: app.py:921 #: libs/localization.py:55
msgid "The password entered is the same as the current password." msgid "The password entered is the same as the current password."
msgstr "" msgstr ""
#: app.py:922 #: libs/localization.py:56
msgid "Password has been changed!" msgid "Password has been changed!"
msgstr "" msgstr ""
#: app.py:923 #: libs/localization.py:57
msgid "Please, type your username for account deletion." msgid "Please, type your username for account deletion."
msgstr "" msgstr ""
#: app.py:924 #: libs/localization.py:58
msgid "Account successfully deleted!" msgid "Account successfully deleted!"
msgstr "" msgstr ""
#: app.py:925 #: libs/localization.py:59
msgid "Username or password is incorrect!" msgid "Username or password is incorrect!"
msgstr "" msgstr ""
#: app.py:926 #: libs/localization.py:60
msgid "Unable to connect to the remote server." msgid "Unable to connect to the remote server."
msgstr "" msgstr ""
#: app.py:927 #: libs/localization.py:61
msgid "" msgid ""
"Encountered an unexpected error while communicating with the remote server." "Encountered an unexpected error while communicating with the remote server."
msgstr "" msgstr ""
#: app.py:928 #: libs/localization.py:62
msgid "User already exists." msgid "User already exists."
msgstr "" msgstr ""
#: app.py:929 #: libs/localization.py:63
msgid "Email already exists." msgid "Email already exists."
msgstr "" msgstr ""
#: app.py:930 #: libs/localization.py:64
msgid "Forgot your password? Please try again." msgid "Forgot your password? Please try again."
msgstr "" msgstr ""
#: app.py:931 #: libs/localization.py:65
msgid "The session has expired." msgid "The session has expired."
msgstr "" msgstr ""

Binary file not shown.

View File

@ -3,213 +3,220 @@
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <aitzol@lainoa.eus>, 2022. # FIRST AUTHOR <aitzol@lainoa.eus>, 2022.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 0.0.1\n" "Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-04-07 17:23+0200\n" "POT-Creation-Date: 2022-04-07 17:23+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-04-16 17:11+0200\n"
"Last-Translator: Aitzol Berasategi <aitzol@lainoa.eus>\n" "Last-Translator: Aitzol Berasategi <aitzol@lainoa.eus>\n"
"Language-Team: LANGUAGE <EU@eu.org>\n" "Language-Team: LANGUAGE <EU@eu.org>\n"
"Language: \n" "Language: en\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3\n"
#: app.py:880 #: libs/localization.py:12
msgid "User" msgid "User"
msgstr "User" msgstr "User"
#: app.py:881 #: libs/localization.py:13
msgid "Username" msgid "Username"
msgstr "Username" msgstr "Username"
#: app.py:882 #: libs/localization.py:14
msgid "Firstname" msgid "Firstname"
msgstr "Firstname" msgstr "Firstname"
#: app.py:883 #: libs/localization.py:15
msgid "Surname" msgid "Surname"
msgstr "Surname" msgstr "Surname"
#: app.py:884 #: libs/localization.py:16
msgid "Password" msgid "Password"
msgstr "Password" msgstr "Password"
#: app.py:885 #: libs/localization.py:17
msgid "Old password" msgid "Old password"
msgstr "Old password" msgstr "Old password"
#: app.py:886 #: libs/localization.py:18
msgid "New password" msgid "New password"
msgstr "New password" msgstr "New password"
#: app.py:887 #: libs/localization.py:19
msgid "Confirm password" msgid "Confirm password"
msgstr "Confirm password" msgstr "Confirm password"
#: app.py:888 #: libs/localization.py:20
msgid "Email" msgid "Email"
msgstr "Email" msgstr "Email"
#: app.py:889 #: libs/localization.py:21
msgid "edit" msgid "edit"
msgstr "edit" msgstr "edit"
#: app.py:890 #: libs/localization.py:22
msgid "Login" msgid "Login"
msgstr "Login" msgstr "Login"
#: app.py:891 #: libs/localization.py:23
msgid "Logout" msgid "Logout"
msgstr "Logout" msgstr "Logout"
#: app.py:892 #: libs/localization.py:24
msgid "Delete" msgid "Delete"
msgstr "Delete" msgstr "Delete"
#: app.py:893 #: libs/localization.py:25
msgid "Sign Up" msgid "Sign Up"
msgstr "Sign Up" msgstr "Sign Up"
#: app.py:894 #: libs/localization.py:26
msgid "Back" msgid "Back"
msgstr "Back" msgstr "Back"
#: app.py:895 #: libs/localization.py:27
msgid "Update" msgid "Update"
msgstr "Update" msgstr "Update"
#: app.py:896 #: libs/localization.py:28
msgid "Or Sign In" msgid "Or Sign In"
msgstr "Or Sign In" msgstr "Or Sign In"
#: app.py:897 #: libs/localization.py:29
msgid "Or Sign Up" msgid "Or Sign Up"
msgstr "Or Sign Up" msgstr "Or Sign Up"
#: app.py:898 #: libs/localization.py:30
msgid "Invite code" msgid "Invite code"
msgstr "Invite code" msgstr "Invite code"
#: app.py:899 #: libs/localization.py:31
msgid "Edit your fullname" msgid "Edit your fullname"
msgstr "Edit your fullname" msgstr "Edit your fullname"
#: app.py:900 #: libs/localization.py:32
msgid "Edit your email" msgid "Edit your email"
msgstr "Edit your email" msgstr "Edit your email"
#: app.py:901 #: libs/localization.py:33
msgid "Change your password" msgid "Change your password"
msgstr "Change your password" msgstr "Change your password"
#: app.py:902 #: libs/localization.py:34
msgid "Delete your account" msgid "Delete your account"
msgstr "Delete your account" msgstr "Delete your account"
#: app.py:903 app.py:909 #: libs/localization.py:35 libs/localization.py:41
msgid "Welcome" msgid "Welcome"
msgstr "Welcome" msgstr "Welcome"
#: app.py:906 #: libs/localization.py:38
msgid "The session was closed." msgid "The session was closed."
msgstr "The session was closed." msgstr "The session was closed."
#: app.py:907 #: libs/localization.py:39
msgid "Username must be at least 3 characters long!" msgid "Username must be at least 3 characters long!"
msgstr "Username must be at least 3 characters long!" msgstr "Username must be at least 3 characters long!"
#: app.py:908 #: libs/localization.py:40
msgid "Please enter your password!" msgid "Please enter your password!"
msgstr "Please enter your password!" msgstr "Please enter your password!"
#: app.py:910 #: libs/localization.py:42
msgid "The code is invalid or has expired." msgid "The code is invalid or has expired."
msgstr "The code is invalid or has expired." msgstr "The code is invalid or has expired."
#: app.py:911 #: libs/localization.py:43
msgid "A bit short, don't you think?!" msgid "A bit short, don't you think?!"
msgstr "A bit short, don't you think?!" msgstr "A bit short, don't you think?!"
#: app.py:912 #: libs/localization.py:44
msgid "Not allowed characters for the username field." msgid "Not allowed characters for the username field."
msgstr "Not allowed characters for the username field." msgstr "Not allowed characters for the username field."
#: app.py:913 #: libs/localization.py:45
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "Passwords do not match!" msgstr "Passwords do not match!"
#: app.py:914 #: libs/localization.py:46
msgid "Password must be at least 8 characters long!" msgid "Password must be at least 8 characters long!"
msgstr "Password must be at least 8 characters long!" msgstr "Password must be at least 8 characters long!"
#: app.py:915 #: libs/localization.py:47
msgid "Congratulations, your account has been created!" msgid "Congratulations, your account has been created!"
msgstr "Congratulations, your account has been created!" msgstr "Congratulations, your account has been created!"
#: app.py:916 #: libs/localization.py:48
msgid "Your first and last name have not been changed."
msgstr "Your first and last name have not been changed."
#: libs/localization.py:49
msgid "Your firstname is a bit short, don't you think?" msgid "Your firstname is a bit short, don't you think?"
msgstr "Your firstname is a bit short, don't you think?" msgstr "Your firstname is a bit short, don't you think?"
#: app.py:917 #: libs/localization.py:50
msgid "Your surname is a bit short, don't you think?" msgid "Your surname is a bit short, don't you think?"
msgstr "Your surname is a bit short, don't you think?" msgstr "Your surname is a bit short, don't you think?"
#: app.py:918 #: libs/localization.py:51
msgid "Your first and last name have been successfully updated." msgid "Your first and last name have been successfully updated."
msgstr "Your first and last name have been successfully updated." msgstr "Your first and last name have been successfully updated."
#: app.py:919 #: libs/localization.py:52
msgid "Invalid email address. Please try again." msgid "Invalid email address. Please try again."
msgstr "Invalid email address. Please try again." msgstr "Invalid email address. Please try again."
#: app.py:920 #: libs/localization.py:53
msgid "Email address has not been changed."
msgstr "Email address has not been changed."
#: libs/localization.py:54
msgid "Your email has been successfully updated." msgid "Your email has been successfully updated."
msgstr "Your email has been successfully updated." msgstr "Your email has been successfully updated."
#: app.py:921 #: libs/localization.py:55
msgid "The password entered is the same as the current password." msgid "The password entered is the same as the current password."
msgstr "The password entered is the same as the current password." msgstr "The password entered is the same as the current password."
#: app.py:922 #: libs/localization.py:56
msgid "Password has been changed!" msgid "Password has been changed!"
msgstr "Password has been changed!" msgstr "Password has been changed!"
#: app.py:923 #: libs/localization.py:57
msgid "Please, type your username for account deletion." msgid "Please, type your username for account deletion."
msgstr "Please, type your username for account deletion." msgstr "Please, type your username for account deletion."
#: app.py:924 #: libs/localization.py:58
msgid "Account successfully deleted!" msgid "Account successfully deleted!"
msgstr "Account successfully deleted!" msgstr "Account successfully deleted!"
#: app.py:925 #: libs/localization.py:59
msgid "Username or password is incorrect!" msgid "Username or password is incorrect!"
msgstr "Username or password is incorrect!" msgstr "Username or password is incorrect!"
#: app.py:926 #: libs/localization.py:60
msgid "Unable to connect to the remote server." msgid "Unable to connect to the remote server."
msgstr "Unable to connect to the remote server." msgstr "Unable to connect to the remote server."
#: app.py:927 #: libs/localization.py:61
msgid "" msgid "Encountered an unexpected error while communicating with the remote server."
"Encountered an unexpected error while communicating with the remote server."
msgstr "Encountered an unexpected error while communicating with the remote server." msgstr "Encountered an unexpected error while communicating with the remote server."
#: app.py:928 #: libs/localization.py:62
msgid "User already exists." msgid "User already exists."
msgstr "User already exists." msgstr "User already exists."
#: app.py:929 #: libs/localization.py:63
msgid "Email already exists." msgid "Email already exists."
msgstr "Email already exists." msgstr "Email already exists."
#: app.py:930 #: libs/localization.py:64
msgid "Forgot your password? Please try again." msgid "Forgot your password? Please try again."
msgstr "Forgot your password? Please try again." msgstr "Forgot your password? Please try again."
#: app.py:931 #: libs/localization.py:65
msgid "The session has expired." msgid "The session has expired."
msgstr "The session has expired." msgstr "The session has expired."

Binary file not shown.

View File

@ -3,213 +3,220 @@
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <aitzol@lainoa.eus>, 2022. # FIRST AUTHOR <aitzol@lainoa.eus>, 2022.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 0.0.1\n" "Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-04-07 17:23+0200\n" "POT-Creation-Date: 2022-04-07 17:23+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-04-16 17:13+0200\n"
"Last-Translator: Aitzol Berasategi <aitzol@lainoa.eus>\n" "Last-Translator: Aitzol Berasategi <aitzol@lainoa.eus>\n"
"Language-Team: LANGUAGE <EU@eu.org>\n" "Language-Team: LANGUAGE <EU@eu.org>\n"
"Language: \n" "Language: eu\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3\n"
#: app.py:880 #: libs/localization.py:12
msgid "User" msgid "User"
msgstr "Erabiltzailea" msgstr "Erabiltzailea"
#: app.py:881 #: libs/localization.py:13
msgid "Username" msgid "Username"
msgstr "Erabiltzaile izena" msgstr "Erabiltzailea"
#: app.py:882 #: libs/localization.py:14
msgid "Firstname" msgid "Firstname"
msgstr "Izena" msgstr "Izena"
#: app.py:883 #: libs/localization.py:15
msgid "Surname" msgid "Surname"
msgstr "Abizena" msgstr "Abizena"
#: app.py:884 #: libs/localization.py:16
msgid "Password" msgid "Password"
msgstr "Pasahitza" msgstr "Pasahitza"
#: app.py:885 #: libs/localization.py:17
msgid "Old password" msgid "Old password"
msgstr "Pasahitz zaharra" msgstr "Pasahitz zaharra"
#: app.py:886 #: libs/localization.py:18
msgid "New password" msgid "New password"
msgstr "Pasahitz berria" msgstr "Pasahitz berria"
#: app.py:887 #: libs/localization.py:19
msgid "Confirm password" msgid "Confirm password"
msgstr "Pasahitza berretsi" msgstr "Pasahitza berretsi"
#: app.py:888 #: libs/localization.py:20
msgid "Email" msgid "Email"
msgstr "Emaila" msgstr "Emaila"
#: app.py:889 #: libs/localization.py:21
msgid "edit" msgid "edit"
msgstr "editatu" msgstr "editatu"
#: app.py:890 #: libs/localization.py:22
msgid "Login" msgid "Login"
msgstr "Saioa hasi" msgstr "Saioa hasi"
#: app.py:891 #: libs/localization.py:23
msgid "Logout" msgid "Logout"
msgstr "Saioa itxi" msgstr "Saioa itxi"
#: app.py:892 #: libs/localization.py:24
msgid "Delete" msgid "Delete"
msgstr "Ezabatu" msgstr "Ezabatu"
#: app.py:893 #: libs/localization.py:25
msgid "Sign Up" msgid "Sign Up"
msgstr "Kontua sortu" msgstr "Kontua sortu"
#: app.py:894 #: libs/localization.py:26
msgid "Back" msgid "Back"
msgstr "Itzuli" msgstr "Itzuli"
#: app.py:895 #: libs/localization.py:27
msgid "Update" msgid "Update"
msgstr "Eguneratu" msgstr "Eguneratu"
#: app.py:896 #: libs/localization.py:28
msgid "Or Sign In" msgid "Or Sign In"
msgstr "Edo Saioa hasi" msgstr "Edo Saioa hasi"
#: app.py:897 #: libs/localization.py:29
msgid "Or Sign Up" msgid "Or Sign Up"
msgstr "Edo Kontua sortu" msgstr "Edo Kontua sortu"
#: app.py:898 #: libs/localization.py:30
msgid "Invite code" msgid "Invite code"
msgstr "Gonbidapen kodea" msgstr "Gonbidapen kodea"
#: app.py:899 #: libs/localization.py:31
msgid "Edit your fullname" msgid "Edit your fullname"
msgstr "Izen-abizenak editatu" msgstr "Izen-abizenak editatu"
#: app.py:900 #: libs/localization.py:32
msgid "Edit your email" msgid "Edit your email"
msgstr "Email helbidea editatu" msgstr "Email helbidea editatu"
#: app.py:901 #: libs/localization.py:33
msgid "Change your password" msgid "Change your password"
msgstr "Pasahitza eguneratu" msgstr "Pasahitza eguneratu"
#: app.py:902 #: libs/localization.py:34
msgid "Delete your account" msgid "Delete your account"
msgstr "Kontua ezabatu" msgstr "Kontua ezabatu"
#: app.py:903 app.py:909 #: libs/localization.py:35 libs/localization.py:41
msgid "Welcome" msgid "Welcome"
msgstr "Ongi etorri" msgstr "Ongi etorri"
#: app.py:906 #: libs/localization.py:38
msgid "The session was closed." msgid "The session was closed."
msgstr "Saioa itxi da." msgstr "Saioa itxi da."
#: app.py:907 #: libs/localization.py:39
msgid "Username must be at least 3 characters long!" msgid "Username must be at least 3 characters long!"
msgstr "Erabiltzaile izenak gutxienez 3 karaktere izan behar ditu!" msgstr "Erabiltzaile izenak gutxienez 3 karaktere izan behar ditu!"
#: app.py:908 #: libs/localization.py:40
msgid "Please enter your password!" msgid "Please enter your password!"
msgstr "Sartu zure pasahitza, mesedez!" msgstr "Sartu zure pasahitza, mesedez!"
#: app.py:910 #: libs/localization.py:42
msgid "The code is invalid or has expired." msgid "The code is invalid or has expired."
msgstr "Kodea baliogabea da edo iraungi egin da." msgstr "Kodea baliogabea da edo iraungi egin da."
#: app.py:911 #: libs/localization.py:43
msgid "A bit short, don't you think?!" msgid "A bit short, don't you think?!"
msgstr "Labur-xamarra, ez duzu uste?" msgstr "Labur-xamarra, ez duzu uste?!"
#: app.py:912 #: libs/localization.py:44
msgid "Not allowed characters for the username field." msgid "Not allowed characters for the username field."
msgstr "Erabiltzaile izenerako onartzen ez diren karaktereak." msgstr "Erabiltzaile izenerako onartzen ez diren karaktereak."
#: app.py:913 #: libs/localization.py:45
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "Pasahitzak ez datoz bat!" msgstr "Pasahitzak ez datoz bat!"
#: app.py:914 #: libs/localization.py:46
msgid "Password must be at least 8 characters long!" msgid "Password must be at least 8 characters long!"
msgstr "Pasahitzak gutxienez 8 karaktereko luzera izan behar du!" msgstr "Pasahitzak gutxienez 8 karaktereko luzera izan behar du!"
#: app.py:915 #: libs/localization.py:47
msgid "Congratulations, your account has been created!" msgid "Congratulations, your account has been created!"
msgstr "Zorionak, zure kontua sortu da!" msgstr "Zorionak, zure kontua sortu da!"
#: app.py:916 #: libs/localization.py:48
msgid "Your first and last name have not been changed."
msgstr "Zure izen-abizenak ez dira aldatu."
#: libs/localization.py:49
msgid "Your firstname is a bit short, don't you think?" msgid "Your firstname is a bit short, don't you think?"
msgstr "Zure izena labur-xamarra da, ez duzu uste?" msgstr "Zure izena labur-xamarra da, ez duzu uste?"
#: app.py:917 #: libs/localization.py:50
msgid "Your surname is a bit short, don't you think?" msgid "Your surname is a bit short, don't you think?"
msgstr "Zure abizena labur-xamarra da, ez duzu uste?" msgstr "Zure abizena labur-xamarra da, ez duzu uste?"
#: app.py:918 #: libs/localization.py:51
msgid "Your first and last name have been successfully updated." msgid "Your first and last name have been successfully updated."
msgstr "Zure izen-abizenak ongi eguneratu dira." msgstr "Zure izen-abizenak ongi eguneratu dira."
#: app.py:919 #: libs/localization.py:52
msgid "Invalid email address. Please try again." msgid "Invalid email address. Please try again."
msgstr "Baliogabeko email helbidea. Saia zaitez berriz, mesedez. " msgstr "Baliogabeko email helbidea. Saia zaitez berriz, mesedez."
#: app.py:920 #: libs/localization.py:53
msgid "Email address has not been changed."
msgstr "Email helbidea ez da aldatu."
#: libs/localization.py:54
msgid "Your email has been successfully updated." msgid "Your email has been successfully updated."
msgstr "Zure emaila ongi eguneratu da." msgstr "Zure emaila ongi eguneratu da."
#: app.py:921 #: libs/localization.py:55
msgid "The password entered is the same as the current password." msgid "The password entered is the same as the current password."
msgstr "Sartutako pasahitza egungo pasahitzaren berdina da." msgstr "Sartutako pasahitza egungo pasahitzaren berdina da."
#: app.py:922 #: libs/localization.py:56
msgid "Password has been changed!" msgid "Password has been changed!"
msgstr "Pasahitza eguneratua izan da!" msgstr "Pasahitza eguneratua izan da!"
#: app.py:923 #: libs/localization.py:57
msgid "Please, type your username for account deletion." msgid "Please, type your username for account deletion."
msgstr "Kontua ezabatzeko idatzi zure erabiltzaile izena, mesedez." msgstr "Kontua ezabatzeko idatzi zure erabiltzaile izena, mesedez."
#: app.py:924 #: libs/localization.py:58
msgid "Account successfully deleted!" msgid "Account successfully deleted!"
msgstr "Kontua ongi ezabatu da!" msgstr "Kontua ongi ezabatu da!"
#: app.py:925 #: libs/localization.py:59
msgid "Username or password is incorrect!" msgid "Username or password is incorrect!"
msgstr "Erabiltzaile izena edo pasahitza okerrak dira!" msgstr "Erabiltzaile izena edo pasahitza okerrak dira!"
#: app.py:926 #: libs/localization.py:60
msgid "Unable to connect to the remote server." msgid "Unable to connect to the remote server."
msgstr "Ezinezkoa urruneko zerbitzara konektatzea." msgstr "Ezinezkoa urruneko zerbitzara konektatzea."
#: app.py:927 #: libs/localization.py:61
msgid "" msgid "Encountered an unexpected error while communicating with the remote server."
"Encountered an unexpected error while communicating with the remote server."
msgstr "Ezusteko errore bat gertatu da urruneko zerbitzariarekin komunikatzean." msgstr "Ezusteko errore bat gertatu da urruneko zerbitzariarekin komunikatzean."
#: app.py:928 #: libs/localization.py:62
msgid "User already exists." msgid "User already exists."
msgstr "Erabiltzaile hori existitzen da." msgstr "Erabiltzaile hori existitzen da."
#: app.py:929 #: libs/localization.py:63
msgid "Email already exists" msgid "Email already exists."
msgstr "Email hori existitzen da." msgstr "Email hori existitzen da."
#: app.py:930 #: libs/localization.py:64
msgid "Forgot your password? Please try again." msgid "Forgot your password? Please try again."
msgstr "Zure pasahitza ahaztu duzu? Saia zeitez berriz, mesedez." msgstr "Zure pasahitza ahaztu duzu? Saia zeitez berriz, mesedez."
#: app.py:931 #: libs/localization.py:65
msgid "The session has expired." msgid "The session has expired."
msgstr "Saioa iraungi egin da." msgstr "Saioa iraungi egin da."