Python babel 模块,Locale() 实例源码

我们从Python开源项目中,提取了以下25个代码示例,用于说明如何使用babel.Locale()

项目:zou    作者:cgwire    | 项目源码 | 文件源码
def test_serialize_value(self):
        now = datetime.datetime.now()
        self.assertEqual(now.isoformat(), fields.serialize_value(now))
        unique_id = uuid.uuid4()
        self.assertEqual(str(unique_id), fields.serialize_value(unique_id))
        self.assertEqual(
            {"now": now.isoformat()},
            fields.serialize_value({"now": now})
        )
        self.assertEqual(
            "Europe/Paris",
            fields.serialize_value(timezone("Europe/Paris"))
        )
        self.assertEqual(
            "en_US",
            fields.serialize_value(Locale("en_US"))
        )
项目:deb-python-sqlalchemy-utils    作者:openstack    | 项目源码 | 文件源码
def cast_locale(obj, locale):
    """
    Cast given locale to string. Supports also callbacks that return locales.

    :param obj:
        Object or class to use as a possible parameter to locale callable
    :param locale:
        Locale object or string or callable that returns a locale.
    """
    if callable(locale):
        try:
            locale = locale()
        except TypeError:
            locale = locale(obj)
    if isinstance(locale, babel.Locale):
        return str(locale)
    return locale
项目:pyramid_i18n_helper    作者:sahama    | 项目源码 | 文件源码
def new_lang_view(self):

        lang = self.request.POST.get('new_lang', '').strip()
        try:
            self.request.locale = babel.Locale(*babel.parse_locale(lang))

            if not os.path.isdir(os.path.join(self.helper.locale_dir, lang)):
                os.mkdir(os.path.join(self.helper.locale_dir, lang))
                os.mkdir(os.path.join(self.helper._dir, 'locale', lang, 'LC_MESSAGES'))
                # self.pot.save(os.path.join(self.helper.package_dir, 'locale', lang, 'LC_MESSAGES',
                #                            '{0}.po'.format(self.domain)))
                # self.pot.save_as_mofile(os.path.join(self.helper.package_dir, 'locale', lang, 'LC_MESSAGES',
                #                                      '{0}.mo'.format(self.domain)))

                self.request.flash_message.add(message_type='success', body='i18n_new_lang_creation_success', domain='i18n_helper')

                return HTTPFound(location=self.request.route_url('i18n_helper.po', lang=lang, domain=self.domain))

            else:
                self.request.flash_message.add(message_type='danger', body='i18n_new_lang_lang_exist', domain='i18n_helper')

        except:
            self.request.flash_message.add(message_type='danger', body='i18n_new_lang_creation_error', domain='i18n_helper')

        return self.get_view()
项目:pyramid_i18n_helper    作者:sahama    | 项目源码 | 文件源码
def __init__(self, context, request: Request):
        self.request = request
        self.context = context
        _ = request.translate
        self.helper = request.registry['i18n_helper']
        self.lang = request.matchdict['lang']
        self.domain = request.matchdict['domain']

        self.locale = babel.Locale(*babel.parse_locale(self.lang))

        self.pot_file_path = os.path.join(self.helper.locale_dir, '{0}.pot'.format(self.domain))
        self.po_file_path = os.path.join(self.helper.locale_dir, self.lang, 'LC_MESSAGES',
                                         '{0}.po'.format(self.domain))
        self.mo_file_path = os.path.join(self.helper.locale_dir, self.lang, 'LC_MESSAGES',
                                         '{0}.mo'.format(self.domain))

        if os.path.exists(self.po_file_path):
            self.po = polib.pofile(self.po_file_path, encoding='UTF-8')
        else:
            self.po = polib.POFile(encoding='UTF-8')

        self.po.metadata= {'Content-Transfer-Encoding': '8bit',
                           'Content-Type': 'text/plain; charset=UTF-8',
                           'Language': self.lang}
项目:pyramid_i18n_helper    作者:sahama    | 项目源码 | 文件源码
def add_localizer(event):
    request = event.request
    localizer = request.localizer
    helper = request.registry['i18n_helper']
    collect_msgid = asbool(request.registry.settings.get('i18n_helper.collect_msgid'))

    def auto_translate(string, mapping=None, domain=None):
        if collect_msgid:
            tmp = domain if domain else helper.package_name

            if not tmp in helper.pot_msgids:
                helper.pot_msgids[tmp] = set()

            helper.pot_msgids[tmp].add(string)

        return localizer.translate(helper.tsf(string), mapping=mapping, domain=domain)

    # request.localizer = localizer
    request.translate = auto_translate
    request.locale = babel.Locale(*babel.parse_locale(request.localizer.locale_name))
项目:talks-python-i18n_l10n    作者:zgoda-mobica    | 项目源码 | 文件源码
def localized_measures():
    print('Localized measurement units')
    units = (
        'area-square-meter',
        'consumption-liter-per-100kilometers',
        'pressure-hectopascal',
        'duration-century',
        'energy-kilowatt-hour',
        'volume-pint',
    )
    for (name, symbol, params) in LOCALES:
        locale = Locale(*params)
        args = [name]
        for unit in units:
            unit_name = get_unit_name(unit, locale=locale)
            if unit_name is None:
                unit_name = 'N/A ({0})'.format(unit)
            args.append(unit_name)
        print('\nin {0}: {1} - {2} - {3} - {4} - {5} - {6}'.format(*args))
项目:talks-python-i18n_l10n    作者:zgoda-mobica    | 项目源码 | 文件源码
def units_formating():
    print('Formating values in units')
    values = (
        (12.4, 'area-square-meter'),
        (7.7, 'consumption-liter-per-100kilometers'),
        (1017, 'pressure-hectopascal'),
        (9, 'duration-century'),
        (11, 'energy-kilowatt-hour'),
        (2, 'volume-pint'),
    )
    for (name, symbol, params) in LOCALES:
        locale = Locale(*params)
        args = [name]
        for (value, unit) in values:
            val_long = format_unit(value, unit, 'long', locale=locale)
            short_name = get_unit_name(unit, 'short', locale=locale) 
            args.append('{0} ({1})'.format(val_long, short_name))
        print('\nin {0}: {1} - {2} - {3} - {4} - {5} - {6}'.format(*args))
项目:talks-python-i18n_l10n    作者:zgoda-mobica    | 项目源码 | 文件源码
def time_deltas():
    print('Periods of time (timedelta)')
    deltas = (
        datetime.timedelta(minutes=15),
        datetime.timedelta(hours=3),
        datetime.timedelta(days=8),
        datetime.timedelta(weeks=5),
    )
    for (name, symbol, params) in LOCALES:
        locale = Locale(*params)
        args = [name]
        for delta in deltas:
            args.append(format_timedelta(delta, locale=locale))
        print('\tbasic {0}: {1} - {2} - {3} - {4}'.format(*args))
        args = [name]
        for delta in deltas:
            args.append(format_timedelta(delta, granularity='day', locale=locale))
        print('\tday granularity {0}: {1} - {2} - {3} - {4}'.format(*args))
项目:dati-ckan-docker    作者:italia    | 项目源码 | 文件源码
def test_url_for_with_locale_object(self):
        url = '/foo/de/dataset/my_dataset'
        generated_url = h.url_for('/dataset/my_dataset',
                                  locale=Locale('de'))
        eq_(generated_url, url)
项目:zou    作者:cgwire    | 项目源码 | 文件源码
def serialize_value(value):
    """
    Utility function to handle the parsing of specific fields.
    """
    if isinstance(value, datetime.datetime):
        return value.isoformat()
    if isinstance(value, datetime.date):
        return value.isoformat()
    elif isinstance(value, uuid.UUID):
        return str(value)
    elif isinstance(value, dict):
        return serialize_dict(value)
    elif isinstance(value, orm.collections.InstrumentedList):
        return serialize_orm_arrays(value)
    elif isinstance(value, bytes):
        return value.decode("utf-8")
    elif isinstance(value, str):
        return value
    elif isinstance(value, int):
        return value
    elif isinstance(value, Locale):
        return str(value)
    elif isinstance(value, type(timezone("Europe/Paris"))):
        return str(value)
    elif isinstance(value, list):
        return serialize_list(value)
    elif value is None:
        return None
    elif isinstance(value, object):
        if hasattr(value, 'serialize'):
            return value.serialize()
        else:
            return value
    else:
        return value
项目:exactitude    作者:alephdata    | 项目源码 | 文件源码
def __init__(self, locale='en_GB'):
        self.locale = Locale(locale)
项目:deb-python-sqlalchemy-utils    作者:openstack    | 项目源码 | 文件源码
def process_bind_param(self, value, dialect):
        if isinstance(value, babel.Locale):
            return six.text_type(value)

        if isinstance(value, six.string_types):
            return value
项目:deb-python-sqlalchemy-utils    作者:openstack    | 项目源码 | 文件源码
def process_result_value(self, value, dialect):
        if value is not None:
            return babel.Locale.parse(value)
项目:deb-python-sqlalchemy-utils    作者:openstack    | 项目源码 | 文件源码
def _coerce(self, value):
        if value is not None and not isinstance(value, babel.Locale):
            return babel.Locale.parse(value)
        return value
项目:deb-python-sqlalchemy-utils    作者:openstack    | 项目源码 | 文件源码
def validate(self, code):
        try:
            i18n.babel.Locale('en').currencies[code]
        except KeyError:
            raise ValueError("'{0}' is not valid currency code.".format(code))
项目:pyramid_i18n_helper    作者:sahama    | 项目源码 | 文件源码
def select_lang_view(self):


        lang = self.request.POST.get('select_lang', '').strip()

        self.request.locale = babel.Locale(*babel.parse_locale(lang))


        return HTTPFound(location=self.request.route_url('i18n_helper.po', lang=lang, domain=self.domain))
项目:talks-python-i18n_l10n    作者:zgoda-mobica    | 项目源码 | 文件源码
def list_format():
    print('Formating lists')
    items = (
        'one',
        'two',
        'three',
        'four',
        'five'
    )
    for (name, symbol, params) in LOCALES:
        locale = Locale(*params)
        result = format_list(items, locale=locale)
        print('\tlist in {0} - {1}'.format(name, result))
项目:talks-python-i18n_l10n    作者:zgoda-mobica    | 项目源码 | 文件源码
def format_class():
    print('Utility class that holds all formating functionality for single locale')
    date = datetime.date(1874, 5, 29)
    amount = (284.55, 'CNY')
    for (name, symbol, params) in LOCALES:
        locale = Locale(*params)
        fmt = Format(locale=locale)
        args = [name]
        args.append(fmt.date(date, format='full'))
        args.append(fmt.currency(*amount))
        print('\tFormats for {0} - date: {1}, currency: {2}'.format(*args))
项目:talks-python-i18n_l10n    作者:zgoda-mobica    | 项目源码 | 文件源码
def languages():
    print('Known languages')
    locale = Locale('en', 'US')
    for (_, _, params) in LOCALES:
        territory = params[1]
        official_languages = format_list(get_official_languages(territory), locale=locale)
        all_languages = format_list(get_official_languages(territory, regional=True, de_facto=True), locale=locale)
        print('\tterritory: {0}'.format(locale.territories[territory]))
        print('\t\tofficial: {0}\n\t\tall: {1}'.format(official_languages, all_languages))
项目:talks-python-i18n_l10n    作者:zgoda-mobica    | 项目源码 | 文件源码
def my_birthday():
    print('My birthday in different locales')
    bday = datetime.date(1971, 5, 4)
    for (name, symbol, params) in LOCALES:
        locale = Locale(*params)
        for fmt in ('full', 'medium', 'short'):
            print('\t{0} ({1}): {2}'.format(name, fmt, format_date(bday, fmt, locale)))
项目:talks-python-i18n_l10n    作者:zgoda-mobica    | 项目源码 | 文件源码
def timezone_names():
    print('Timezone data')
    tznames = ('Europe/Athens', 'US/Alaska', 'Africa/Johannesburg')
    for (name, symbol, params) in LOCALES:
        locale = Locale(*params)
        for tzname in tznames:
            tz = get_timezone(tzname)
            loc_name = get_timezone_location(tz, locale, False)
            city = get_timezone_location(tz, locale, True)
            print('\tTZ location for {0}: {1}, city: {2}'.format(tzname, loc_name, city))
项目:talks-python-i18n_l10n    作者:zgoda-mobica    | 项目源码 | 文件源码
def locale_own_data():
    print('Locale data (pl - language only):')
    locale = Locale('pl')
    print('\tDisplay name: {0}'.format(locale.display_name))
    print('\tEnglish name: {0}'.format(locale.english_name))
    print('Locale data (pl_PL - language and territory):')
    locale = Locale('pl', 'PL')
    print('\tDisplay name: {0}'.format(locale.display_name))
    print('\tEnglish name: {0}'.format(locale.english_name))
项目:talks-python-i18n_l10n    作者:zgoda-mobica    | 项目源码 | 文件源码
def localized_locale_data():
    print('Localized locale data')
    for (name, symbol, params) in LOCALES:
        print('Now switch to {0} ({1})'.format(name, symbol))
        locale = Locale(*params)
        print('\tLocale display name: {0}'.format(locale.display_name))
        print('\tLocale English name: {0}'.format(locale.english_name))
        print('\tPoland (localized): {0}'.format(locale.territories['PL']))
        print('\tRomanian New Lei (localized): {0}'.format(locale.currencies['RON']))
        print('\tRomanian Old Lei (localized): {0}'.format(locale.currencies['ROL']))
        print('\t1st weekday (localized): {0}'.format(locale.days['format']['wide'][locale.first_week_day]))
        print('\tMay month name (localized): {0}'.format(locale.months['format']['wide'][5]))
项目:talks-python-i18n_l10n    作者:zgoda-mobica    | 项目源码 | 文件源码
def decimal_formating():
    print('Formating decimal values')
    numbers = (-3.14, 0.12, 2, 9.821, 215.3, 19678.25)
    for (name, symbol, params) in LOCALES:
        locale = Locale(*params)
        args = [name]
        for num in numbers:
            args.append(format_decimal(num, locale=locale))
        print('\tdecimal in {0}: {1} - {2} - {3} - {4} - {5} - {6}'.format(*args))
项目:pyramid_i18n_helper    作者:sahama    | 项目源码 | 文件源码
def __init__(self, context, request: Request):
        self.request = request
        self.context = context
        self.domain = request.matchdict['domain']
        _ = request.translate

        self.helper = request.registry['i18n_helper']

        self.pot = polib.pofile(
            os.path.join(self.helper.locale_dir, '{0}.pot'.format(self.domain)),
            encoding='UTF-8'
        )



        # LANG FORM
        langs_dir = self.helper.locale_dir
        created_langs_choices = []
        for lang in os.listdir(langs_dir):
            if os.path.isdir(os.path.join(langs_dir, lang)):
                lang_locale = babel.Locale(*babel.parse_locale(lang))
                created_langs_choices.append(
                    (lang , '{en_name}/{display_name}'.format(
                        en_name=lang_locale.english_name,
                        display_name=lang_locale.display_name )
                    )
                )

        available_langs_choices = sorted(locale.locale_alias)

        class NewLang(colander.Schema):
            new_lang = colander.SchemaNode(colander.String(),
                                           widget=deform.widget.AutocompleteInputWidget(values=available_langs_choices,
                                                                                        min_length=0),
                                           title=_("i18n_new_lang", domain='i18n_helper'))

        class SelectLang(colander.Schema):
            select_lang = colander.SchemaNode(colander.String(),
                                           widget=deform.widget.SelectWidget(values=created_langs_choices),
                                           title=_("i18n_select_lang", domain='i18n_helper'))

        def validator(node, appstruct):
            return True

        schema = NewLang(validator=validator)
        schema = schema.bind(request=self.request)
        self.new_lang_form = deform.Form(schema,
                                         use_ajax=False,
                                         action=self.request.route_url('i18n_helper.pot', domain=self.domain))
        self.new_lang_form.buttons.append(deform.Button(name='submit', title=_('i18n_new_lang_submit', domain='i18n_helper')))

        schema = SelectLang(validator=validator)
        schema = schema.bind(request=self.request)
        self.select_lang_form = deform.Form(schema,
                                            use_ajax=False,
                                            action=self.request.route_url('i18n_helper.pot', domain=self.domain))
        self.select_lang_form.buttons.append(deform.Button(name='submit', title=_('i18n_select_lang_submit', domain='i18n_helper')))

        # MSG FORM