核心功能

核心API提供基本的核心功能。它主要提供 Locale 对象以及创建该对象的方法。此对象封装区域设置并公开其包含的所有数据。

所有核心功能也可以直接从 babel 为方便起见,模块。

基本界面

class babel.core.Locale(language: str, territory: str | None = None, script: str | None = None, variant: str | None = None, modifier: str | None = None)

特定区域设置的表示形式。

>>> locale = Locale('en', 'US')
>>> repr(locale)
"Locale('en', territory='US')"
>>> locale.display_name
u'English (United States)'

A Locale 对象也可以从原始区域设置字符串实例化:

>>> locale = Locale.parse('en-US', sep='-')
>>> repr(locale)
"Locale('en', territory='US')"

Locale 对象提供对区域设置数据集合的访问,例如地区和语言名称、数字和日期格式模式等:

>>> locale.number_symbols['latn']['decimal']
u'.'

如果请求的区域设置没有可用的区域设置数据,则 UnknownLocaleError 提出:

>>> Locale.parse('en_XX')
Traceback (most recent call last):
    ...
UnknownLocaleError: unknown locale 'en_XX'

有关详细信息,请参阅 RFC 3066 .

property character_order: str

语言的文本方向。

>>> Locale('de', 'DE').character_order
'left-to-right'
>>> Locale('ar', 'SA').character_order
'right-to-left'
property compact_currency_formats: LocaleDataDict

紧凑货币数字格式的区域设置模式。

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

>>> Locale('en', 'US').compact_currency_formats["short"]["one"]["1000"]
<NumberPattern u'¤0K'>
property compact_decimal_formats: LocaleDataDict

紧凑十进制数字格式的区域设置模式。

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

>>> Locale('en', 'US').compact_decimal_formats["short"]["one"]["1000"]
<NumberPattern u'0K'>
property currencies: LocaleDataDict

将货币代码映射到转换后的货币名称。这只返回货币名称的一般形式,而不返回特定于计数的名称。如果请求的是实际数字,请使用 babel.numbers.get_currency_name() 功能。

>>> Locale('en').currencies['COP']
u'Colombian Peso'
>>> Locale('de', 'DE').currencies['COP']
u'Kolumbianischer Peso'
property currency_formats: LocaleDataDict

货币数字格式的区域设置模式。

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

>>> Locale('en', 'US').currency_formats['standard']
<NumberPattern u'\xa4#,##0.00'>
>>> Locale('en', 'US').currency_formats['accounting']
<NumberPattern u'\xa4#,##0.00;(\xa4#,##0.00)'>
property currency_symbols: LocaleDataDict

将货币代码映射到符号。

>>> Locale('en', 'US').currency_symbols['USD']
u'$'
>>> Locale('es', 'CO').currency_symbols['USD']
u'US$'
property date_formats: LocaleDataDict

日期格式的区域设置模式。

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

>>> Locale('en', 'US').date_formats['short']
<DateTimePattern u'M/d/yy'>
>>> Locale('fr', 'FR').date_formats['long']
<DateTimePattern u'd MMMM y'>
property datetime_formats: LocaleDataDict

日期时间格式的区域设置模式。

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

>>> Locale('en').datetime_formats['full']
u'{1}, {0}'
>>> Locale('th').datetime_formats['medium']
u'{1} {0}'
property datetime_skeletons: LocaleDataDict

格式化日期时间部分的区域设置模式。

>>> Locale('en').datetime_skeletons['MEd']
<DateTimePattern u'E, M/d'>
>>> Locale('fr').datetime_skeletons['MEd']
<DateTimePattern u'E dd/MM'>
>>> Locale('fr').datetime_skeletons['H']
<DateTimePattern u"HH 'h'">
property day_period_rules: LocaleDataDict

区域设置的天期规则。使用方 get_period_id .

property day_periods: LocaleDataDict

不同日期段的区域设置显示名称(不一定仅限于上午/下午)。

如果没有相关的 day_period_rules .

property days: LocaleDataDict

工作日的区域设置显示名称。

>>> Locale('de', 'DE').days['format']['wide'][3]
u'Donnerstag'
property decimal_formats: LocaleDataDict

十进制数字格式的区域设置模式。

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

>>> Locale('en', 'US').decimal_formats[None]
<NumberPattern u'#,##0.###'>
classmethod default(category: str | None = None, aliases: Mapping[str, str] = {'ar': 'ar_SY', 'bg': 'bg_BG', 'bs': 'bs_BA', 'ca': 'ca_ES', 'cs': 'cs_CZ', 'da': 'da_DK', 'de': 'de_DE', 'el': 'el_GR', 'en': 'en_US', 'es': 'es_ES', 'et': 'et_EE', 'fa': 'fa_IR', 'fi': 'fi_FI', 'fr': 'fr_FR', 'gl': 'gl_ES', 'he': 'he_IL', 'hu': 'hu_HU', 'id': 'id_ID', 'is': 'is_IS', 'it': 'it_IT', 'ja': 'ja_JP', 'km': 'km_KH', 'ko': 'ko_KR', 'lt': 'lt_LT', 'lv': 'lv_LV', 'mk': 'mk_MK', 'nl': 'nl_NL', 'nn': 'nn_NO', 'no': 'nb_NO', 'pl': 'pl_PL', 'pt': 'pt_PT', 'ro': 'ro_RO', 'ru': 'ru_RU', 'sk': 'sk_SK', 'sl': 'sl_SI', 'sv': 'sv_SE', 'th': 'th_TH', 'tr': 'tr_TR', 'uk': 'uk_UA'}) Locale

返回指定类别的系统默认区域设置。

>>> for name in ['LANGUAGE', 'LC_ALL', 'LC_CTYPE', 'LC_MESSAGES']:
...     os.environ[name] = ''
>>> os.environ['LANG'] = 'fr_FR.UTF-8'
>>> Locale.default('LC_MESSAGES')
Locale('fr', territory='FR')

始终考虑变量的以下回退:

  • LANGUAGE

  • LC_ALL

  • LC_CTYPE

  • LANG

参数:
  • category -- 其中一个 LC_XXX 环境变量名称

  • aliases -- 区域设置标识符的别名字典

property default_numbering_system: str

区域设置使用的默认编号系统。>区域设置(‘el’,‘gr’).Default_Numing_System u‘latn’

property display_name: str | None

区域设置的本地化显示名称。

>>> Locale('en').display_name
u'English'
>>> Locale('en', 'US').display_name
u'English (United States)'
>>> Locale('sv').display_name
u'svenska'
类型:

unicode

property english_name: str | None

区域设置的英文显示名称。

>>> Locale('de').english_name
u'German'
>>> Locale('de', 'DE').english_name
u'German (Germany)'
类型:

unicode

property eras: LocaleDataDict

纪元的区域设置显示名称。

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

>>> Locale('en', 'US').eras['wide'][1]
u'Anno Domini'
>>> Locale('en', 'US').eras['abbreviated'][0]
u'BC'
property first_week_day: int

一周的第一天,0表示星期一。

>>> Locale('de', 'DE').first_week_day
0
>>> Locale('en', 'US').first_week_day
6
get_display_name(locale: Locale | str | None = None) str | None

返回使用给定区域设置的区域设置的显示名称。

显示名称将包括语言、区域、脚本和变体(如果已指定)。

>>> Locale('zh', 'CN', script='Hans').get_display_name('en')
u'Chinese (Simplified, China)'

修饰符当前逐字传递:

>>> Locale('it', 'IT', modifier='euro').get_display_name('en')
u'Italian (Italy, euro)'
参数:

locale -- 要使用的区域设置

get_language_name(locale: Locale | str | None = None) str | None

返回给定区域设置中此区域设置的语言。

>>> Locale('zh', 'CN', script='Hans').get_language_name('de')
u'Chinesisch'

在 1.0 版本加入.

参数:

locale -- 要使用的区域设置

get_script_name(locale: Locale | str | None = None) str | None

返回给定区域设置中的脚本名称。

get_territory_name(locale: Locale | str | None = None) str | None

返回给定区域设置中的地区名称。

property interval_formats: LocaleDataDict

时间间隔格式的区域设置模式。

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

当一天是变化最小的部分时,如何用芬兰语设置日期间隔的格式:

>>> Locale('fi_FI').interval_formats['MEd']['d']
[u'E d. – ', u'E d.M.']

参见

使用此数据的主要API为 babel.dates.format_interval() .

返回类型:

dict[str, dict[str, list[str]]]

language

语言代码

property language_name: str | None

区域设置的本地化语言名称。

>>> Locale('en', 'US').language_name
u'English'
property languages: LocaleDataDict

将语言代码映射到翻译的语言名称。

>>> Locale('de', 'DE').languages['ja']
u'Japanisch'

ISO 639 更多信息。

property list_patterns: LocaleDataDict

生成列表的模式

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

>>> Locale('en').list_patterns['standard']['start']
u'{0}, {1}'
>>> Locale('en').list_patterns['standard']['end']
u'{0}, and {1}'
>>> Locale('en_GB').list_patterns['standard']['end']
u'{0} and {1}'
property measurement_systems: LocaleDataDict

各种测量系统的本地化名称。

>>> Locale('fr', 'FR').measurement_systems['US']
u'am\xe9ricain'
>>> Locale('en', 'US').measurement_systems['US']
u'US'
property meta_zones: LocaleDataDict

元时区的区域设置显示名称。

Meta时区基本上是一组不同的Olson时区,它们具有相同的GMT偏移和夏令时。

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

>>> Locale('en', 'US').meta_zones['Europe_Central']['long']['daylight']
u'Central European Summer Time'

在 0.9 版本加入.

property min_week_days: int

一周中的最小天数,以便将该周计为一年或一个月的第一周。

>>> Locale('de', 'DE').min_week_days
4
modifier

修饰语

property months: LocaleDataDict

几个月的区域设置显示名称。

>>> Locale('de', 'DE').months['format']['wide'][10]
u'Oktober'
classmethod negotiate(preferred: Iterable[str], available: Iterable[str], sep: str = '_', aliases: Mapping[str, str] = {'ar': 'ar_SY', 'bg': 'bg_BG', 'bs': 'bs_BA', 'ca': 'ca_ES', 'cs': 'cs_CZ', 'da': 'da_DK', 'de': 'de_DE', 'el': 'el_GR', 'en': 'en_US', 'es': 'es_ES', 'et': 'et_EE', 'fa': 'fa_IR', 'fi': 'fi_FI', 'fr': 'fr_FR', 'gl': 'gl_ES', 'he': 'he_IL', 'hu': 'hu_HU', 'id': 'id_ID', 'is': 'is_IS', 'it': 'it_IT', 'ja': 'ja_JP', 'km': 'km_KH', 'ko': 'ko_KR', 'lt': 'lt_LT', 'lv': 'lv_LV', 'mk': 'mk_MK', 'nl': 'nl_NL', 'nn': 'nn_NO', 'no': 'nb_NO', 'pl': 'pl_PL', 'pt': 'pt_PT', 'ro': 'ro_RO', 'ru': 'ru_RU', 'sk': 'sk_SK', 'sl': 'sl_SI', 'sv': 'sv_SE', 'th': 'th_TH', 'tr': 'tr_TR', 'uk': 'uk_UA'}) Locale | None

查找可用的和请求的区域设置字符串之间的最佳匹配。

>>> Locale.negotiate(['de_DE', 'en_US'], ['de_DE', 'de_AT'])
Locale('de', territory='DE')
>>> Locale.negotiate(['de_DE', 'en_US'], ['en', 'de'])
Locale('de')
>>> Locale.negotiate(['de_DE', 'de'], ['en_US'])

您可以指定区域设置标识符中使用的字符,以分隔不同的组件。此分隔符适用于这两个列表。此外,在比较中忽略大小写:

>>> Locale.negotiate(['de-DE', 'de'], ['en-us', 'de-de'], sep='-')
Locale('de', territory='DE')
参数:
  • preferred -- 用户首选的区域设置标识符列表

  • available -- 可用的区域设置标识符列表

  • aliases -- 区域设置标识符的别名字典

property number_symbols: LocaleDataDict

按数字系统设置数字格式时使用的符号。

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

>>> Locale('fr', 'FR').number_symbols["latn"]['decimal']
u','
>>> Locale('fa', 'IR').number_symbols["arabext"]['decimal']
u'٫'
>>> Locale('fa', 'IR').number_symbols["latn"]['decimal']
u'.'
property ordinal_form: PluralRule

区域设置的多个规则。

>>> Locale('en').ordinal_form(1)
'one'
>>> Locale('en').ordinal_form(2)
'two'
>>> Locale('en').ordinal_form(3)
'few'
>>> Locale('fr').ordinal_form(2)
'other'
>>> Locale('ru').ordinal_form(100)
'other'
property other_numbering_systems: LocaleDataDict

该区域设置可用的其他编号系统的映射。请参阅:https://www.unicode.org/reports/tr35/tr35-numbers.html#otherNumberingSystems

>>> Locale('el', 'GR').other_numbering_systems['traditional']
u'grek'

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

classmethod parse(identifier: str | Locale | None, sep: str = '_', resolve_likely_subtags: bool = True) Locale

创建一个 Locale 指定区域设置标识符的。

>>> l = Locale.parse('de-DE', sep='-')
>>> l.display_name
u'Deutsch (Deutschland)'

如果 identifier 参数不是字符串,而实际上是 Locale 对象,则返回该对象:

>>> Locale.parse(l)
Locale('de', territory='DE')

如果 identifier 参数都不是这两个参数,例如 None 例如,由于无法确定默认区域设置标识符,因此 TypeError 已提出:

>>> Locale.parse(None)
Traceback (most recent call last):
    ...
TypeError: ...

这还可以执行默认情况下执行的可能子标签的解析。例如,这对于计算出您可以使用的区域的最可能区域设置很有用 'und' 作为语言标签:

>>> Locale.parse('und_AT')
Locale('de', territory='AT')

修饰符是可选的,并且始终位于末尾,以“@”分隔:

>>> Locale.parse('de_AT@euro')
Locale('de', territory='AT', modifier='euro')
参数:
  • identifier -- 区域设置标识符字符串

  • sep -- 可选组件分隔符

  • resolve_likely_subtags -- 如果指定此选项,则如果区域设置否则不存在,则该区域设置将解析其可能的子标记。例如 zh_TW 本身并不是存在的区域设置,但Babel可以自动将其扩展为完整形式的 zh_hant_TW 。请注意,只有在不存在其他区域设置的情况下,才会进行此扩展。例如,有一个地区 en 它可以自己存在。

抛出:
  • ValueError -- 如果字符串似乎不是有效的区域设置标识符

  • UnknownLocaleError -- 如果请求的区域设置没有可用的区域设置数据

  • TypeError -- 如果该标识符不是字符串或 Locale

property percent_formats: LocaleDataDict

百分比数字格式的区域设置模式。

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

>>> Locale('en', 'US').percent_formats[None]
<NumberPattern u'#,##0%'>
property periods: LocaleDataDict

天段(AM/PM)的区域设置显示名称。

>>> Locale('en', 'US').periods['am']
u'AM'
property plural_form: PluralRule

区域设置的多个规则。

>>> Locale('en').plural_form(1)
'one'
>>> Locale('en').plural_form(0)
'other'
>>> Locale('fr').plural_form(0)
'one'
>>> Locale('ru').plural_form(100)
'many'
property quarters: LocaleDataDict

季度的区域设置显示名称。

>>> Locale('de', 'DE').quarters['format']['wide'][1]
u'1. Quartal'
property scientific_formats: LocaleDataDict

科学数字格式化的区域设置模式。

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

>>> Locale('en', 'US').scientific_formats[None]
<NumberPattern u'#E0'>
script

脚本代码

property script_name: str | None

区域设置的本地化脚本名称(如果可用)。

>>> Locale('sr', 'ME', script='Latn').script_name
u'latinica'
property scripts: LocaleDataDict

将脚本代码映射到翻译后的脚本名称。

>>> Locale('en', 'US').scripts['Hira']
u'Hiragana'

ISO 15924 更多信息。

property territories: LocaleDataDict

将脚本代码映射到翻译后的脚本名称。

>>> Locale('es', 'CO').territories['DE']
u'Alemania'

ISO 3166 更多信息。

territory

地区(国家或地区)代码

property territory_name: str | None

区域设置的本地化区域名称(如果可用)。

>>> Locale('de', 'DE').territory_name
u'Deutschland'
property text_direction: str

CSS速记形式的语言的文本方向。

>>> Locale('de', 'DE').text_direction
'ltr'
>>> Locale('ar', 'SA').text_direction
'rtl'
property time_formats: LocaleDataDict

时间格式化的区域设置模式。

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

>>> Locale('en', 'US').time_formats['short']
<DateTimePattern u'h:mm a'>
>>> Locale('fr', 'FR').time_formats['long']
<DateTimePattern u'HH:mm:ss z'>
property time_zones: LocaleDataDict

时区的区域设置显示名称。

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

>>> Locale('en', 'US').time_zones['Europe/London']['long']['daylight']
u'British Summer Time'
>>> Locale('en', 'US').time_zones['America/St_Johns']['city']
u'St. John’s'
property unit_display_names: LocaleDataDict

显示度量单位的名称。

参见

您可能想要使用 babel.units.get_unit_name() 相反。

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

variant

变形码

property variants: LocaleDataDict

将脚本代码映射到翻译后的脚本名称。

>>> Locale('de', 'DE').variants['1901']
u'Alte deutsche Rechtschreibung'
property weekend_end: int

周末结束的那一天,0表示星期一。

>>> Locale('de', 'DE').weekend_end
6
property weekend_start: int

周末开始的那一天,0表示星期一。

>>> Locale('de', 'DE').weekend_start
5
property zone_formats: LocaleDataDict

与时区格式相关的模式。

备注

返回值的格式在不同的巴别塔版本之间可能会有所不同。

>>> Locale('en', 'US').zone_formats['fallback']
u'%(1)s (%(0)s)'
>>> Locale('pt', 'BR').zone_formats['region']
u'Hor\xe1rio %s'

在 0.9 版本加入.

babel.core.default_locale(category: str | None = None, aliases: Mapping[str, str] = {'ar': 'ar_SY', 'bg': 'bg_BG', 'bs': 'bs_BA', 'ca': 'ca_ES', 'cs': 'cs_CZ', 'da': 'da_DK', 'de': 'de_DE', 'el': 'el_GR', 'en': 'en_US', 'es': 'es_ES', 'et': 'et_EE', 'fa': 'fa_IR', 'fi': 'fi_FI', 'fr': 'fr_FR', 'gl': 'gl_ES', 'he': 'he_IL', 'hu': 'hu_HU', 'id': 'id_ID', 'is': 'is_IS', 'it': 'it_IT', 'ja': 'ja_JP', 'km': 'km_KH', 'ko': 'ko_KR', 'lt': 'lt_LT', 'lv': 'lv_LV', 'mk': 'mk_MK', 'nl': 'nl_NL', 'nn': 'nn_NO', 'no': 'nb_NO', 'pl': 'pl_PL', 'pt': 'pt_PT', 'ro': 'ro_RO', 'ru': 'ru_RU', 'sk': 'sk_SK', 'sl': 'sl_SI', 'sv': 'sv_SE', 'th': 'th_TH', 'tr': 'tr_TR', 'uk': 'uk_UA'}) str | None

根据环境变量返回给定类别的系统默认区域设置。

>>> for name in ['LANGUAGE', 'LC_ALL', 'LC_CTYPE']:
...     os.environ[name] = ''
>>> os.environ['LANG'] = 'fr_FR.UTF-8'
>>> default_locale('LC_MESSAGES')
'fr_FR'

“C”或“POSIX”伪区域设置被视为“en_US_POSIX”区域设置的别名:

>>> os.environ['LC_MESSAGES'] = 'POSIX'
>>> default_locale('LC_MESSAGES')
'en_US_POSIX'

始终考虑变量的以下回退:

  • LANGUAGE

  • LC_ALL

  • LC_CTYPE

  • LANG

参数:
  • category -- 其中一个 LC_XXX 环境变量名称

  • aliases -- 区域设置标识符的别名字典

babel.core.negotiate_locale(preferred: Iterable[str], available: Iterable[str], sep: str = '_', aliases: Mapping[str, str] = {'ar': 'ar_SY', 'bg': 'bg_BG', 'bs': 'bs_BA', 'ca': 'ca_ES', 'cs': 'cs_CZ', 'da': 'da_DK', 'de': 'de_DE', 'el': 'el_GR', 'en': 'en_US', 'es': 'es_ES', 'et': 'et_EE', 'fa': 'fa_IR', 'fi': 'fi_FI', 'fr': 'fr_FR', 'gl': 'gl_ES', 'he': 'he_IL', 'hu': 'hu_HU', 'id': 'id_ID', 'is': 'is_IS', 'it': 'it_IT', 'ja': 'ja_JP', 'km': 'km_KH', 'ko': 'ko_KR', 'lt': 'lt_LT', 'lv': 'lv_LV', 'mk': 'mk_MK', 'nl': 'nl_NL', 'nn': 'nn_NO', 'no': 'nb_NO', 'pl': 'pl_PL', 'pt': 'pt_PT', 'ro': 'ro_RO', 'ru': 'ru_RU', 'sk': 'sk_SK', 'sl': 'sl_SI', 'sv': 'sv_SE', 'th': 'th_TH', 'tr': 'tr_TR', 'uk': 'uk_UA'}) str | None

查找可用的和请求的区域设置字符串之间的最佳匹配。

>>> negotiate_locale(['de_DE', 'en_US'], ['de_DE', 'de_AT'])
'de_DE'
>>> negotiate_locale(['de_DE', 'en_US'], ['en', 'de'])
'de'

算法忽略大小写,则结果使用首选区域设置标识符的大小写:

>>> negotiate_locale(['de_DE', 'en_US'], ['de_de', 'de_at'])
'de_DE'
>>> negotiate_locale(['de_DE', 'en_US'], ['de_de', 'de_at'])
'de_DE'

不幸的是,在默认情况下,一些Web浏览器在许多地区的地区标识符中不包括地区,有些甚至不允许用户轻松添加地区。因此,尽管您可能更喜欢在Web应用程序中使用限定的区域设置标识符,但它们通常不会与此类浏览器发送的纯语言区域设置匹配。为了解决此问题,此函数使用常用的纯语言区域设置标识符到包括地区在内的标识符的默认映射:

>>> negotiate_locale(['ja', 'en_US'], ['ja_JP', 'en_US'])
'ja_JP'

有些浏览器甚至使用不正确或过时的语言代码,例如挪威语的“no”,而正确的区域设置标识符实际上应该是“nb_no”(博克马利)或“nn_no”(尼诺斯克)。别名也是用来处理这类情况的:

>>> negotiate_locale(['no', 'sv'], ['nb_NO', 'sv_SE'])
'nb_NO'

您可以通过传递不同的 aliases 字典添加到此函数,或者您可以通过将 aliases 参数到 None .

参数:
  • preferred -- 用户首选的区域设置字符串列表

  • available -- 可用的区域设置字符串列表

  • sep -- 分隔区域设置字符串不同部分的字符

  • aliases -- 区域设置标识符的别名字典

例外情况

exception babel.core.UnknownLocaleError(identifier: str)

当请求的区域设置没有可用的区域设置数据时引发异常。

identifier

找不到的区域设置的标识符。

工具函数

babel.core.get_global(key: _GLOBAL_KEY) Mapping[str, Any]

返回全局数据中给定键的字典。

全局数据存储在 babel/global.dat 文件,并包含独立于各个区域设置的信息。

>>> get_global('zone_aliases')['UTC']
u'Etc/UTC'
>>> get_global('zone_territories')['Europe/Berlin']
u'DE'

可用的密钥包括:

  • all_currencies

  • currency_fractions

  • language_aliases

  • likely_subtags

  • parent_exceptions

  • script_aliases

  • territory_aliases

  • territory_currencies

  • territory_languages

  • territory_zones

  • variant_aliases

  • windows_zone_mapping

  • zone_aliases

  • zone_territories

备注

不同版本之间的数据内部结构可能会有所不同。

在 0.9 版本加入.

参数:

key -- 数据密钥

babel.core.parse_locale(identifier: str, sep: str = '_') tuple[str, str | None, str | None, str | None] | tuple[str, str | None, str | None, str | None, str | None]

将区域设置标识符解析为表单的元组 (language, territory, script, variant, modifier)

>>> parse_locale('zh_CN')
('zh', 'CN', None, None)
>>> parse_locale('zh_Hans_CN')
('zh', 'CN', 'Hans', None)
>>> parse_locale('ca_es_valencia')
('ca', 'ES', None, 'VALENCIA')
>>> parse_locale('en_150')
('en', '150', None, None)
>>> parse_locale('en_us_posix')
('en', 'US', None, 'POSIX')
>>> parse_locale('it_IT@euro')
('it', 'IT', None, None, 'euro')
>>> parse_locale('it_IT@custom')
('it', 'IT', None, None, 'custom')
>>> parse_locale('it_IT@')
('it', 'IT', None, None)

默认组件分隔符是“_”,但可以使用 sep 参数。

可选修饰符始终用“@”分隔,并在末尾:

>>> parse_locale('zh-CN', sep='-')
('zh', 'CN', None, None)
>>> parse_locale('zh-CN@custom', sep='-')
('zh', 'CN', None, None, 'custom')

如果无法将标识符分析为区域设置,则会引发 ValueError 引发异常:

>>> parse_locale('not_a_LOCALE_String')
Traceback (most recent call last):
  ...
ValueError: 'not_a_LOCALE_String' is not a valid locale identifier

从标识符中移除编码信息,同时保留修饰符:

>>> parse_locale('en_US.UTF-8')
('en', 'US', None, None)
>>> parse_locale('de_DE.iso885915@euro')
('de', 'DE', None, None, 'euro')

RFC 4646 更多信息。

参数:
  • identifier -- 区域设置标识符字符串

  • sep -- 分隔区域设置标识符的不同组成部分的字符

抛出:

ValueError -- 如果字符串似乎不是有效的区域设置标识符

babel.core.get_locale_identifier(tup: tuple[str] | tuple[str, str | None] | tuple[str, str | None, str | None] | tuple[str, str | None, str | None, str | None] | tuple[str, str | None, str | None, str | None, str | None], sep: str = '_') str

的反面 parse_locale() 。对象创建区域设置标识符。 (language, territory, script, variant, modifier) 元组。可以将项目设置为 None 和落后的 None 也可以将S排除在元组之外。

>>> get_locale_identifier(('de', 'DE', None, '1999', 'custom'))
'de_DE_1999@custom'
>>> get_locale_identifier(('fi', None, None, None, 'custom'))
'fi@custom'

在 1.0 版本加入.

参数:
  • tup -- 由返回的元组 parse_locale() .

  • sep -- 标识符的分隔符。