mirror of
https://github.com/YunoHost/moulinette.git
synced 2024-09-03 20:06:31 +02:00
[enh] Manage arguments in translation - and try to fix encoding (again)
This commit is contained in:
parent
dbc2776b94
commit
90bd495096
7 changed files with 24 additions and 21 deletions
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"colon" : "%s: ",
|
"colon" : "{}: ",
|
||||||
|
|
||||||
"success" : "Success!",
|
"success" : "Success!",
|
||||||
"warning" : "Warning:",
|
"warning" : "Warning:",
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
"unable_retrieve_session" : "Unable to retrieve the session",
|
"unable_retrieve_session" : "Unable to retrieve the session",
|
||||||
"ldap_server_down" : "Unable to reach LDAP server",
|
"ldap_server_down" : "Unable to reach LDAP server",
|
||||||
"ldap_operation_error" : "An error occured during LDAP operation",
|
"ldap_operation_error" : "An error occured during LDAP operation",
|
||||||
"ldap_attribute_already_exists" : "Attribute already exists: '%s=%s'",
|
"ldap_attribute_already_exists" : "Attribute already exists: '{:s}={:s}'",
|
||||||
|
|
||||||
"password" : "Password",
|
"password" : "Password",
|
||||||
"invalid_password" : "Invalid password",
|
"invalid_password" : "Invalid password",
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
"values_mismatch" : "Values don't match",
|
"values_mismatch" : "Values don't match",
|
||||||
"authentication_required_long" : "Authentication is required to perform this action",
|
"authentication_required_long" : "Authentication is required to perform this action",
|
||||||
"authentication_required" : "Authentication required",
|
"authentication_required" : "Authentication required",
|
||||||
"authentication_profile_required" : "Authentication to profile '%s' required",
|
"authentication_profile_required" : "Authentication to profile '{:s}' required",
|
||||||
"operation_interrupted" : "Operation interrupted",
|
"operation_interrupted" : "Operation interrupted",
|
||||||
|
|
||||||
"logged_in" : "Logged in",
|
"logged_in" : "Logged in",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"colon" : "%s : ",
|
"colon" : "{} : ",
|
||||||
|
|
||||||
"success" : "Succès !",
|
"success" : "Succès !",
|
||||||
"warning" : "Attention :",
|
"warning" : "Attention :",
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
"unable_retrieve_session" : "Impossible de récupérer la session",
|
"unable_retrieve_session" : "Impossible de récupérer la session",
|
||||||
"ldap_server_down" : "Impossible d'atteindre le serveur LDAP",
|
"ldap_server_down" : "Impossible d'atteindre le serveur LDAP",
|
||||||
"ldap_operation_error" : "Une erreur est survenue lors de l'opération LDAP",
|
"ldap_operation_error" : "Une erreur est survenue lors de l'opération LDAP",
|
||||||
"ldap_attribute_already_exists" : "L'attribut existe déjà : '%s=%s'",
|
"ldap_attribute_already_exists" : "L'attribut existe déjà : '{:s}={:s}'",
|
||||||
|
|
||||||
"password" : "Mot de passe",
|
"password" : "Mot de passe",
|
||||||
"invalid_password" : "Mot de passe incorrect",
|
"invalid_password" : "Mot de passe incorrect",
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
"values_mismatch" : "Les valeurs ne correspondent pas",
|
"values_mismatch" : "Les valeurs ne correspondent pas",
|
||||||
"authentication_required_long" : "L'authentification est requise pour exécuter cette action",
|
"authentication_required_long" : "L'authentification est requise pour exécuter cette action",
|
||||||
"authentication_required" : "Authentification requise",
|
"authentication_required" : "Authentification requise",
|
||||||
"authentication_profile_required" : "Authentification au profile '%s' requise",
|
"authentication_profile_required" : "Authentification au profile '{:s}' requise",
|
||||||
"operation_interrupted" : "Opération interrompue",
|
"operation_interrupted" : "Opération interrompue",
|
||||||
|
|
||||||
"logged_in" : "Connecté",
|
"logged_in" : "Connecté",
|
||||||
|
|
|
@ -109,6 +109,6 @@ def cli(namespaces, args, print_json=False, use_cache=True):
|
||||||
'use_cache': use_cache})
|
'use_cache': use_cache})
|
||||||
moulinette.run(args, print_json)
|
moulinette.run(args, print_json)
|
||||||
except MoulinetteError as e:
|
except MoulinetteError as e:
|
||||||
print(u'%s %s' % (colorize(m18n.g('error'), 'red'), e.strerror))
|
print('%s %s' % (colorize(m18n.g('error'), 'red'), e.strerror))
|
||||||
return e.errno
|
return e.errno
|
||||||
return 0
|
return 0
|
||||||
|
|
|
@ -192,6 +192,6 @@ class Authenticator(BaseAuthenticator):
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
raise MoulinetteError(errno.EEXIST,
|
raise MoulinetteError(errno.EEXIST,
|
||||||
m18n.g('ldap_attribute_already_exists')
|
m18n.g('ldap_attribute_already_exists',
|
||||||
% (attr, value))
|
attr, value))
|
||||||
return True
|
return True
|
||||||
|
|
|
@ -170,7 +170,7 @@ class Translator(object):
|
||||||
self.locale = locale
|
self.locale = locale
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def translate(self, key):
|
def translate(self, key, *args, **kwargs):
|
||||||
"""Retrieve proper translation for a key
|
"""Retrieve proper translation for a key
|
||||||
|
|
||||||
Attempt to retrieve translation for a key using the current locale
|
Attempt to retrieve translation for a key using the current locale
|
||||||
|
@ -191,7 +191,7 @@ class Translator(object):
|
||||||
logging.warning("unknown key '%s' for locale '%s'" %
|
logging.warning("unknown key '%s' for locale '%s'" %
|
||||||
(key, self.default_locale))
|
(key, self.default_locale))
|
||||||
return key
|
return key
|
||||||
return value
|
return value.format(*args, **kwargs).encode('utf-8')
|
||||||
|
|
||||||
def _load_translations(self, locale, overwrite=False):
|
def _load_translations(self, locale, overwrite=False):
|
||||||
"""Load translations for a locale
|
"""Load translations for a locale
|
||||||
|
@ -265,7 +265,7 @@ class Moulinette18n(object):
|
||||||
if self._namespace:
|
if self._namespace:
|
||||||
self._namespace[1].set_locale(locale)
|
self._namespace[1].set_locale(locale)
|
||||||
|
|
||||||
def g(self, key):
|
def g(self, key, *args, **kwargs):
|
||||||
"""Retrieve proper translation for a moulinette key
|
"""Retrieve proper translation for a moulinette key
|
||||||
|
|
||||||
Attempt to retrieve value for a key from moulinette translations
|
Attempt to retrieve value for a key from moulinette translations
|
||||||
|
@ -275,9 +275,9 @@ class Moulinette18n(object):
|
||||||
- key -- The key to translate
|
- key -- The key to translate
|
||||||
|
|
||||||
"""
|
"""
|
||||||
return self._global.translate(key)
|
return self._global.translate(key, *args, **kwargs)
|
||||||
|
|
||||||
def n(self, key):
|
def n(self, key, *args, **kwargs):
|
||||||
"""Retrieve proper translation for a moulinette key
|
"""Retrieve proper translation for a moulinette key
|
||||||
|
|
||||||
Attempt to retrieve value for a key from loaded namespace translations
|
Attempt to retrieve value for a key from loaded namespace translations
|
||||||
|
@ -289,7 +289,7 @@ class Moulinette18n(object):
|
||||||
"""
|
"""
|
||||||
if not self._namespace:
|
if not self._namespace:
|
||||||
raise RuntimeError("No namespace loaded for translation")
|
raise RuntimeError("No namespace loaded for translation")
|
||||||
return self._namespace[1].translate(key)
|
return self._namespace[1].translate(key, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class MoulinetteSignals(object):
|
class MoulinetteSignals(object):
|
||||||
|
|
|
@ -342,7 +342,8 @@ class _ActionsMapPlugin(object):
|
||||||
if authenticator.name == 'default':
|
if authenticator.name == 'default':
|
||||||
msg = m18n.g('authentication_required')
|
msg = m18n.g('authentication_required')
|
||||||
else:
|
else:
|
||||||
msg = m18n.g('authentication_profile_required') % authenticator.name
|
msg = m18n.g('authentication_profile_required',
|
||||||
|
authenticator.name)
|
||||||
raise HTTPUnauthorizedResponse(msg)
|
raise HTTPUnauthorizedResponse(msg)
|
||||||
else:
|
else:
|
||||||
return authenticator(token=(s_id, s_hash))
|
return authenticator(token=(s_id, s_hash))
|
||||||
|
|
|
@ -35,7 +35,7 @@ def colorize(astr, color):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if os.isatty(1):
|
if os.isatty(1):
|
||||||
return u'\033[{:d}m\033[1m{:s}\033[m'.format(colors_codes[color], astr)
|
return '\033[{:d}m\033[1m{:s}\033[m'.format(colors_codes[color], astr)
|
||||||
else:
|
else:
|
||||||
return astr
|
return astr
|
||||||
|
|
||||||
|
@ -230,11 +230,11 @@ class Interface(BaseInterface):
|
||||||
"""
|
"""
|
||||||
if is_password:
|
if is_password:
|
||||||
def prompt(m):
|
def prompt(m):
|
||||||
print(colorize(m18n.g('colon') % m, 'blue'), end='')
|
print(colorize(m18n.g('colon', m), 'blue'), end='')
|
||||||
return getpass.getpass()
|
return getpass.getpass()
|
||||||
else:
|
else:
|
||||||
def prompt(m):
|
def prompt(m):
|
||||||
print(colorize(m18n.g('colon') % m, 'blue'), end='')
|
print(colorize(m18n.g('colon', m), 'blue'), end='')
|
||||||
return raw_input()
|
return raw_input()
|
||||||
value = prompt(message)
|
value = prompt(message)
|
||||||
|
|
||||||
|
@ -250,9 +250,11 @@ class Interface(BaseInterface):
|
||||||
Handle the core.MoulinetteSignals.display signal.
|
Handle the core.MoulinetteSignals.display signal.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
if isinstance(message, unicode):
|
||||||
|
message = message.encode('utf-8')
|
||||||
if style == 'success':
|
if style == 'success':
|
||||||
print(u'%s %s' % (colorize(m18n.g('success'), 'green'), message))
|
print('{} {}'.format(colorize(m18n.g('success'), 'green'), message))
|
||||||
elif style == 'warning':
|
elif style == 'warning':
|
||||||
print(u'%s %s' % (colorize(m18n.g('warning'), 'yellow'), message))
|
print('{} {}'.format(colorize(m18n.g('warning'), 'yellow'), message))
|
||||||
else:
|
else:
|
||||||
print(message)
|
print(message)
|
||||||
|
|
Loading…
Add table
Reference in a new issue