核心功能¶
核心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 -- 要使用的区域设置
- property interval_formats: LocaleDataDict¶
时间间隔格式的区域设置模式。
备注
返回值的格式在不同的巴别塔版本之间可能会有所不同。
当一天是变化最小的部分时,如何用芬兰语设置日期间隔的格式:
>>> Locale('fi_FI').interval_formats['MEd']['d'] [u'E d. – ', u'E d.M.']
参见
使用此数据的主要API为
babel.dates.format_interval()
.
- language¶
语言代码
- 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 版本加入.
- 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 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 -- 区域设置标识符的别名字典
例外情况¶
工具函数¶
- 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 -- 标识符的分隔符。