本文整理汇总了Python中babel.localedata.load函数的典型用法代码示例。如果您正苦于以下问题:Python load函数的具体用法?Python load怎么用?Python load使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了load函数的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _configure_babel
def _configure_babel(cls, course):
with common_utils.ZipAwareOpen():
# Internally, babel uses the 'en' locale, and we must configure it
# before we make babel calls.
localedata.load('en')
# Also load the course's default language.
localedata.load(course.default_locale)
示例2: babel_patched_load
def babel_patched_load(name, merge_inherited=True):
# Load additional languages into the babel
# cache. We do this so we can add Haitian Creole
# using french as a model.
_cache_lock.acquire()
try:
data = _cache.get(name)
if not data:
# Load inherited data
if name == 'root' or not merge_inherited:
data = {}
else:
parts = name.split('_')
if len(parts) == 1:
parent = 'root'
else:
parent = '_'.join(parts[:-1])
data = load(parent).copy()
filename = os.path.join(_mydirname, '%s.dat' % name)
fileobj = open(filename, 'rb')
try:
if name != 'root' and merge_inherited:
merge(data, pickle.load(fileobj))
else:
data = pickle.load(fileobj)
_cache[name] = data
finally:
fileobj.close()
return data
finally:
_cache_lock.release()
示例3: test_gettext_compilation
def test_gettext_compilation(locale):
# Test that new plural form elements introduced in recent CLDR versions
# are compiled "down" to `n` when emitting Gettext rules.
ru_rules = localedata.load(locale)['plural_form'].rules
chars = 'ivwft'
# Test that these rules are valid for this test; i.e. that they contain at least one
# of the gettext-unsupported characters.
assert any((" " + ch + " ") in rule for ch in chars for rule in ru_rules.values())
# Then test that the generated value indeed does not contain these.
ru_rules_gettext = plural.to_gettext(ru_rules)
assert not any(ch in ru_rules_gettext for ch in chars)
示例4: format_price
def format_price(value, currency):
"""
Format decimal value as currency
"""
try:
value = Decimal(value)
except (TypeError, InvalidOperation):
return ''
language = get_language()
if not language:
language = settings.LANGUAGE_CODE
locale_code = to_locale(language)
if not localedata.exists(locale_code):
localedata.load(locale_code)
locale = Locale(locale_code)
currency_format = locale.currency_formats.get('standard')
pattern = currency_format.pattern
pattern = re.sub(
'(\xa4+)', '<span class="currency">\\1</span>', pattern)
result = format_currency(value, currency, pattern, locale=locale_code)
return mark_safe(result)
示例5: __init__
def __init__(self, settings=None):
if settings is None:
#To allow override and make it easier to run tests.
reg = get_current_registry()
settings = reg.getUtility(ISettings)
self.default_locale_name = settings['default_locale_name'].strip()
available_languages = [x for x in settings['available_languages'].split()]
translatable_languages = copy(available_languages)
if self.default_locale_name in translatable_languages:
translatable_languages.remove(self.default_locale_name)
self.available_languages = tuple(available_languages)
self.translatable_languages = tuple(translatable_languages)
self.lang_names = {}
self.default_lang_names = {}
for lang in self.available_languages:
data = load(lang)
self.lang_names[lang] = data['languages'][lang]
data = load(self.default_locale_name)
self.default_lang_names[lang] = data['languages'][lang]
示例6: main
def main():
parser = OptionParser(usage='%prog [options] locale [path]')
parser.add_option('--noinherit', action='store_false', dest='inherit',
help='do not merge inherited data into locale data')
parser.add_option('--resolve', action='store_true', dest='resolve',
help='resolve aliases in locale data')
parser.set_defaults(inherit=True, resolve=False)
options, args = parser.parse_args()
if len(args) not in (1, 2):
parser.error('incorrect number of arguments')
data = load(args[0], merge_inherited=options.inherit)
if options.resolve:
data = LocaleDataDict(data)
if len(args) > 1:
for key in args[1].split('.'):
data = data[key]
if isinstance(data, dict):
data = dict(data.items())
pprint(data)
示例7: pull_lang_code
def pull_lang_code(endpoint, values):
'''
Carga el código de idioma en la variable global.
'''
all_langs = current_app.config["ALL_LANGS"]
# obtiene el idioma de la URL
g.url_lang = None
if values is not None:
g.url_lang = values.pop('lang', None)
# si esta lista de idiomas permitidos
if g.url_lang and g.url_lang in all_langs:
g.lang = g.url_lang
# si el usuario esta logueado y tiene establecido el idioma se asigna ese
elif "user" in session and "lang" in session["user"]:
g.lang = session["user"]["lang"]
# si no esta logueado y ha elegido un idioma
elif "lang" in session:
g.lang = session["lang"]
else:
accept = request.accept_languages.values()
# si viene, se coge el que mas convenga dependiendo del que tenga establecido en su navegador o el idioma por defecto
locale = Locale.negotiate((option.replace("-","_") for option in accept), all_langs) if accept else None
if locale:
g.lang = locale.language
else:
g.lang = app.config["LANGS"][0] # valor por defecto si todo falla
if g.lang not in all_langs:
logging.warn("Wrong language choosen.")
g.lang = current_app.config["LANGS"][0]
# se carga la lista de idiomas como se dice en cada idioma
g.languages = OrderedDict((code, (localedata.load(code)["languages"], code in current_app.config["BETA_LANGS"])) for code in all_langs)
g.beta_lang = g.lang in current_app.config["BETA_LANGS"]
示例8: _data
def _data(self):
if self.__data is None:
self.__data = localedata.LocaleDataDict(localedata.load(str(self)))
return self.__data
示例9: translate
def translate():
'''
Edita la traducción a un idioma
'''
def fix_values(entry,sample=False):
'''
Si la traduccion contiene campos de valores los sustituimos por ______[X] y ponemos un ejemplo de uso,
además se eliminan los saltos de linea
'''
result=re.finditer(r'(%\(([^\)]+)\)([s|d]))', entry.msgstr)
subs=dict()
# se cargan los ejemplos si es necesario
if entry.msgid in samples:
subs=samples[entry.msgid]
# para cada valor encontrado se sustituye por _____[X]
for i,item in enumerate(result):
entry.msgstr=entry.msgstr.replace(item.group(1),"_____["+str(i+1)+"]")
# para los ejemplos numericos se utiliza uno aleatorio
if item.group(3)=="d":
subs[item.group(2)]=random.randint(2,10)
if sample:
if subs!={}:
return (entry.msgid,(entry.msgstr,_(entry.msgid,**subs)))
else:
return (entry.msgid,(entry.msgstr,False))
# se sustituyen los saltos de linea html y se devuelve todo
return (entry.msgid,entry.msgstr.replace("<br>","\n").replace("<br />","\n").replace("<br/>","\n") if "<br" in entry.msgstr else entry.msgstr)
languages = localedata.load(g.lang)["languages"]
keystrcoll = cmp_to_key(locale.strcoll)
form = None
forml = SelectLanguageForm(request.form)
forml.lang.choices = [("", "-- "+_("choose_language")+" --")] + sorted(
((code, localedata.load(code)["languages"][code].capitalize()+" ("+languages[code].capitalize()+")")
for code, language in languages.items()
if code in current_app.config["TRANSLATE_LANGS"] and not code in current_app.config["LANGS"] and localedata.exists(code) and code in localedata.load(code)["languages"]),
key=lambda x: keystrcoll(x[1]))
total=99999
no_translation=0
msgids=[]
lang_edit = request.args.get("lang")
if not lang_edit in languages:
lang_edit = None
formfields = {}
# mostrar el idioma a traducir
if lang_edit is not None:
forml.lang.default=lang_edit
# cargar idioma actual
current_lang = dict(fix_values(entry,True) for entry in polib.pofile(lang_path(g.lang)))
# si existe el idioma se carga, sino vacio
lpath = lang_path(lang_edit)
new_lang = dict(fix_values(entry) for entry in polib.pofile(lpath)) if lpath else {}
# recorre los ids en ingles y los coge el mensaje del idioma actual y el valor del nuevo
for i, (msgid, msgstr) in enumerate(fix_values(entry,True) for entry in polib.pofile(lang_path("en"))):
# se excluyen los textos legales que concluyen con safe_
if not msgid.startswith(("safe_","admin_")):
# si no esta traducida la cadena en el idioma actual se deja vacio
if not msgid in new_lang:
no_translation+=1
new_lang[msgid]=""
# si el mensaje esta traducido al idioma actual se usa, sino se usa el ingles
if msgid in current_lang:
msg=current_lang[msgid][0]
description=current_lang[msgid][1]
else:
msg=msgstr[0]
description=msgstr[1]
# si la traduccion es mayor de 80 caracteres se utiliza un textarea en vez de un input text
length=len(new_lang[msgid] or msg)
if length>80:
formfields[msgid]=TextAreaField(msg,default=new_lang[msgid],description=description)
# se le establecen las filas al text area dependiendo del tamaño de la traduccion
formfields["_args_%s" % msgid]={"rows":length/50}
else:
formfields[msgid]=TextField(msg,default=new_lang[msgid],description=description)
formfields["_args_%s" % msgid]={}
#se añade a la lista que se le envia al formulario
msgids.append(msgid)
total=float(len(msgids))
form=expanded_instance(TranslateForm, formfields, request.form, prefix="translate_")
# si es el envio de la traducción
if request.method == 'POST' and form.validate():
pagesdb.create_translation({"ip":request.remote_addr,"user_lang":g.lang,"dest_lang":lang_edit,"texts":{field.short_name: field.data for field in form if not field.short_name in ("captcha", "submit_form") and field.data!=new_lang[field.short_name]}})
flash("translation_sent")
return redirect(url_for('index.home'))
if lang_edit: forml.lang.data = lang_edit
# sino se muestra la seleccion de idioma a traducir
g.title+=_("translate_to_your_language")
#.........这里部分代码省略.........
示例10: test_load
def test_load():
assert localedata.load('en_US')['languages']['sv'] == 'Swedish'
assert localedata.load('en_US') is localedata.load('en_US')
示例11: translate
def translate():
'''
Edita la traducción a un idioma
'''
languages = localedata.load(g.lang)["languages"]
keystrcoll = cmp_to_key(locale.strcoll)
form = None
forml = SelectLanguageForm(request.form)
forml.lang.choices = [("", "-- "+_("choose_language")+" --")] + sorted(
((code, localedata.load(code)["languages"][code].capitalize()+" ("+languages[code].capitalize()+")")
for code, language in languages.items()
if code in current_app.config["TRANSLATE_LANGS"] and not code in current_app.config["LANGS"] and localedata.exists(code) and code in localedata.load(code)["languages"]),
key=lambda x: keystrcoll(x[1]))
total=99999
no_translation=0
msgids=[]
lang_edit = request.args.get("lang")
if not lang_edit in languages:
lang_edit = None
formfields = {}
# mostrar el idioma a traducir
if lang_edit is not None:
forml.lang.default=lang_edit
# cargar idioma actual
current_lang = dict(fix_lang_values(entry,True) for entry in polib.pofile(lang_path(g.lang)))
# si existe el idioma se carga, sino vacio
lpath = lang_path(lang_edit)
new_lang = dict(fix_lang_values(entry) for entry in polib.pofile(lpath)) if lpath else {}
# recorre los ids en ingles y los coge el mensaje del idioma actual y el valor del nuevo
for i, (msgid, msgstr) in enumerate(fix_lang_values(entry,True) for entry in polib.pofile(lang_path("en"))):
# se excluyen los textos legales que concluyen con safe_
if not msgid.startswith(current_app.config["PRIVATE_MSGID_PREFIXES"]):
# si no esta traducida la cadena en el idioma actual se deja vacio
if not msgid in new_lang:
no_translation+=1
new_lang[msgid]=""
# si el mensaje esta traducido al idioma actual se usa, sino se usa el ingles
if msgid in current_lang:
msg=current_lang[msgid][0]
description=current_lang[msgid][1]
else:
msg=msgstr[0]
description=msgstr[1]
# si la traduccion es mayor de 80 caracteres se utiliza un textarea en vez de un input text
length=len(new_lang[msgid] or msg)
if length>50:
formfields[msgid]=TextAreaField(msg,default=new_lang[msgid],description=description)
# se le establecen las filas al text area dependiendo del tamaño de la traduccion
formfields["_args_%s" % msgid]={"rows":length/15}
else:
formfields[msgid]=TextField(msg,default=new_lang[msgid],description=description)
formfields["_args_%s" % msgid]={}
#se añade a la lista que se le envia al formulario
msgids.append(msgid)
total=float(len(msgids))
form=expanded_instance(TranslateForm, formfields, request.form, prefix="translate_")
# si es el envio de la traducción
if request.method == 'POST' and form.validate():
pagesdb.create_translation({"ip":request.remote_addr,"user_lang":g.lang,"dest_lang":lang_edit,"texts":{field.short_name: field.data for field in form if not field.short_name in ("captcha", "submit_form") and field.data!=new_lang[field.short_name]}})
flash("translation_sent")
return redirect(url_for('index.home'))
if lang_edit: forml.lang.data = lang_edit
# sino se muestra la seleccion de idioma a traducir
g.title+=_("translate_to_your_language")
return render_template('pages/translate.html',
page_title=_("translate_to_your_language"),
pagination=["submitlink","submitlink",2,2],
lang=lang_edit,
forml=forml,
form=form,
pname="translate",
msgids=msgids,
complete=round(((total-no_translation)/total)*100,2))
示例12: create_app
def create_app(config=None, debug=False):
'''
Inicializa la aplicación Flask. Carga los siguientes módulos:
- index: página de inicio
- page: páginas estáticas
- user: gestión del usuario
- files: búsqueda y obtención de ficheros
- status: servicio de monitorización de la aplicación
Y además, inicializa los siguientes servicios:
- Configuración: carga valores por defecto y modifica con el @param config
- Web Assets: compilación y compresión de recursos estáticos
- i18n: detección de idioma en la URL y catálogos de mensajes
- Cache y auth: Declarados en el módulo services
- Files y users: Clases para acceso a datos
'''
app = Flask(__name__)
app.config.from_object(defaults)
app.debug = debug
# Configuración
if config:
app.config.from_object(config)
# Configuración dependiente de la versión del código
revision_filename_path = os.path.join(os.path.dirname(app.root_path), "revision")
if os.path.exists(revision_filename_path):
f = open(revision_filename_path, "r")
data = f.read()
f.close()
revisions = tuple(
tuple(i.strip() for i in line.split("#")[0].split())
for line in data.strip().split("\n")
if line.strip() and not line.strip().startswith("#"))
revision_hash = md5(data).hexdigest()
app.config.update(
CACHE_KEY_PREFIX = "%s%s/" % (
app.config["CACHE_KEY_PREFIX"] if "CACHE_KEY_PREFIX" in app.config else "",
revision_hash
),
REVISION_HASH = revision_hash,
REVISION = revisions
)
else:
app.config.update(
REVISION_HASH = None,
REVISION = ()
)
# Gestión centralizada de errores
sentry.init_app(app)
logging.getLogger().setLevel(logging.DEBUG if debug else logging.INFO)
setup_logging(SentryHandler(sentry.client))
# Registra filtros de plantillas
register_filters(app)
# Oauth
init_oauth(app)
# Blueprints
app.register_blueprint(index)
app.register_blueprint(page)
app.register_blueprint(user)
app.register_blueprint(files)
app.register_blueprint(control)
app.register_blueprint(api)
# Web Assets
if not os.path.isdir(app.static_folder+"/gen"): os.mkdir(app.static_folder+"/gen")
assets = Environment(app)
assets.debug = app.debug
register_filter(JsSlimmer)
register_filter(CssSlimmer)
assets.register('js_all', Bundle('js/jquery.js', 'js/jquery-ui.js', 'js/files.js', filters='rjsmin', output='gen/packed.js'))
assets.register('css_all', Bundle('css/main.css', filters=('css_slimmer',), output='gen/packed.css'))
assets.register('css_ie7', Bundle('css/ie7.css', filters=('css_slimmer',), output='gen/ie7.css'))
assets.register('js_admin', Bundle('js/jquery.js', 'js/admin.js', filters='rjsmin', output='gen/admin_packed.js'))
assets.register('css_admin', Bundle('css/admin.css', filters=('css_slimmer',), output='gen/admin_packed.css'))
# Detección de idioma
@app.url_defaults
def add_language_code(endpoint, values):
'''
Añade el código de idioma a una URL que lo incluye.
'''
if 'lang' in values or not g.lang:
return
if app.url_map.is_endpoint_expecting(endpoint, 'lang'):
values['lang'] = g.lang
pull_lang_code_languages = tuple(
(code,localedata.load(code)["languages"][code].capitalize(), code in app.config["BETA_LANGS"])
for code in app.config["ALL_LANGS"])
@app.url_value_preprocessor
def pull_lang_code(endpoint, values):
'''
#.........这里部分代码省略.........
示例13: create_app
#.........这里部分代码省略.........
# Web Assets
if not os.path.isdir(app.static_folder+"/gen"): os.mkdir(app.static_folder+"/gen")
assets = Environment(app)
assets.debug = app.debug
assets.url=app.static_url_path
register_filter(JsSlimmer)
register_filter(CssSlimmer)
assets.register('css_all', 'css/jquery-ui.css', Bundle('css/main.css', filters='pyscss', output='gen/main.css', debug=False), filters='css_slimmer', output='gen/foofind.css')
assets.register('css_ie', 'css/ie.css', filters='css_slimmer', output='gen/ie.css')
assets.register('css_ie7', 'css/ie7.css', filters='css_slimmer', output='gen/ie7.css')
assets.register('css_search', 'css/jquery-ui.css', Bundle('css/search.css', filters='pyscss', output='gen/s.css', debug=False), filters='css_slimmer', output='gen/search.css')
assets.register('css_labs', 'css/jquery-ui.css', Bundle('css/labs.css', filters='pyscss', output='gen/l.css', debug=False), filters='css_slimmer', output='gen/labs.css')
assets.register('css_admin', Bundle('css/admin.css', filters='css_slimmer', output='gen/admin.css'))
assets.register('js_all', Bundle('js/jquery.js', 'js/jquery-ui.js', 'js/jquery.ui.selectmenu.js', 'js/files.js', filters='rjsmin', output='gen/foofind.js'), )
assets.register('js_ie', Bundle('js/html5shiv.js', 'js/jquery-extra-selectors.js', 'js/selectivizr.js', filters='rjsmin', output='gen/ie.js'))
assets.register('js_labs', Bundle('js/jquery.js', 'js/jquery-ui.js', 'js/labs.js', filters='rjsmin', output='gen/labs.js'))
assets.register('js_admin', Bundle('js/jquery.js', 'js/admin.js', filters='rjsmin', output='gen/admin.js'))
# Detección de idioma
@app.url_defaults
def add_language_code(endpoint, values):
'''
Añade el código de idioma a una URL que lo incluye.
'''
if 'lang' in values or not g.lang:
return
if app.url_map.is_endpoint_expecting(endpoint, 'lang'):
values['lang'] = g.lang
pull_lang_code_languages = tuple(
(code,localedata.load(code)["languages"][code].capitalize(), code in app.config["BETA_LANGS"])
for code in app.config["ALL_LANGS"])
@app.url_value_preprocessor
def pull_lang_code(endpoint, values):
'''
Carga el código de idioma en la variable global.
'''
# obtiene el idioma de la URL
g.url_lang = None
if values is not None:
g.url_lang = values.pop('lang', None)
# si esta lista de idiomas permitidos
if g.url_lang and g.url_lang in app.config["ALL_LANGS"]:
g.lang = g.url_lang
# si el usuario esta logueado y tiene establecido el idioma se asigna ese
elif "user" in session and "lang" in session["user"]:
g.lang = session["user"]["lang"]
# si no esta logueado y ha elegido un idioma
elif "lang" in session:
g.lang = session["lang"]
else:
accept = request.accept_languages.values()
# si viene, se coge el que mas convenga dependiendo del que tenga establecido en su navegador o el idioma por defecto
locale = Locale.negotiate((option.replace("-","_") for option in accept), app.config["ALL_LANGS"]) if accept else None
if locale:
g.lang = locale.language
else:
g.lang = app.config["LANGS"][0] # valor por defecto si todo falla
# se carga la lista de idiomas como se dice en cada idioma
g.languages = pull_lang_code_languages