pyramid.i18n

class TranslationString(msgid, domain=None, default=None, mapping=None, context=None)[源代码]

的构造函数 translation string . 翻译字符串是一个类似Unicode的对象,具有一些额外的元数据。

此构造函数接受一个名为 msgid . msgid 必须是 message identifier 用于转换字符串。一定是A unicode 对象或 str 以默认系统编码编码的对象。

此对象构造函数的可选关键字参数包括 domaindefaultmapping .

domain 代表 translation domain . 默认情况下,转换域为 None ,指示此翻译字符串与默认翻译域(通常 messages

default 表示显式 默认文本 对于此翻译字符串。当转换字符串无法转换时,将显示默认文本。通常, msgid 翻译字符串的默认文本为双职责。但是,使用此选项可以为此翻译字符串提供不同的默认文本。当转换字符串的默认值太复杂或太长,无法用作消息标识符时,此功能非常有用。如果 default 是提供的,它必须是 unicode 对象或 str 用默认系统编码的对象(通常指ASCII)。如果 defaultNone (其默认值) msgid 此转换字符串使用的值将假定为 default .

mapping 如果提供,则必须是类似字典的对象,该对象表示 translation string 替换标记 在中找到的实例 msgid (或) default )此转换字符串的值。

context 代表 translation context . 默认情况下,翻译上下文为 None .

在构造翻译字符串之后,它的行为与其他大多数字符串一样 unicode 对象; msgid 当值被视为 unicode 对象。只有当它 ugettext 方法将被转换。

其默认值可用作 default 对象的属性,其 translation domain 可作为 domain 属性,以及 mapping 可作为 mapping 属性。否则,对象的行为与Unicode字符串非常相似。

TranslationStringFactory(factory_domain)[源代码]

创建一个工厂,该工厂将生成翻译字符串,而无需向工厂传递每个调用 domain 价值。将单个参数传递给此类的构造函数: domain . 此值将用作 domain 价值观 translationstring.TranslationString 由生成的对象 __call__ 属于这一类。这个 msgidmappingdefault 提供给 __call__ 此类实例的方法具有的含义与 translationstring.TranslationString

class Localizer(locale_name, translations)[源代码]

提供与当前请求的区域设置名称相关的翻译和复数的对象。一 pyramid.i18n.Localizer 对象是使用 pyramid.i18n.get_localizer() 功能。

locale_name

此本地化程序的区域设置名称(例如 enen_US

pluralize(singular, plural, n, domain=None, mapping=None)[源代码]

通过使用两个 message identifier 对象作为单数/复数对,并且 n 值,该值表示使用gettext复数形式支持出现在消息中的数字。这个 singularplural 对象应为字符串。没有理由将转换字符串对象用作参数,因为所有元数据都被忽略。

n 表示元素的数目。 domain 是用来做复数的翻译域,和 mapping 是应该在结果上使用的插值映射。如果 domain 未提供,使用默认域(通常 messages

例子::

num = 1
translated = localizer.pluralize('Add ${num} item',
                                 'Add ${num} items',
                                 num,
                                 mapping={'num':num})

如果使用getText复数支持,则对于具有n以外的复数规则的语言,这是必需的!= 1, singular 参数必须是翻译文件中定义的消息_id。在这种情况下不使用复数参数。

例子::

num = 1
translated = localizer.pluralize('item_plural',
                                 '',
                                 num,
                                 mapping={'num':num})
translate(tstring, domain=None, mapping=None)[源代码]

翻译为 translation string 添加到当前语言,并将任何 替换标记 在结果中。这个 translate 方法接受三个参数: tstring (必填), domain (可选)和 mapping (可选)。调用时,它将把 tstring 使用当前区域设置的转换字符串。如果无法确定当前区域设置,则返回默认值的插值结果。可选的 domain 参数可用于指定或重写 tstring (在以下情况下有用 tstring 是普通字符串而不是转换字符串)。可选的 mapping 参数可以指定或重写 tstring 插值贴图,在以下情况下非常有用 tstring 参数是简单字符串,而不是转换字符串。

例子::

from pyramid.i18n import TranslationString
ts = TranslationString('Add ${item}', domain='mypackage',
                       mapping={'item':'Item'})
translated = localizer.translate(ts)

例子::

translated = localizer.translate('Add ${item}', domain='mypackage',
                                 mapping={'item':'Item'})
get_localizer(request)[源代码]

自 1.5 版本弃用: 使用 pyramid.request.Request.localizer 直接属性。检索一个 pyramid.i18n.Localizer 与当前请求的区域设置名称相对应的对象。

negotiate_locale_name(request)[源代码]

协商并返回 locale name 与当前请求关联。

get_locale_name(request)[源代码]

自 1.5 版本弃用: 使用 pyramid.request.Request.locale_name 直接代替。返回 locale name 与当前请求关联。

default_locale_negotiator(request)[源代码]

默认值 locale negotiator . 返回区域设置名称或 None .

  • 首先,谈判代表寻找 _LOCALE_ 请求对象的属性(可能由视图或侦听器为 event )如果属性存在而它不存在 None ,将使用其值。

  • 然后它寻找 request.params['_LOCALE_'] 价值。

  • 然后它寻找 request.cookies['_LOCALE_'] 价值。

  • 最后,谈判代表回来了 None 如果无法通过前面的任何检查确定区域设置(当区域设置协商器返回时 None ,这意味着 default locale name 应该使用。)

make_localizer(current_locale_name, translation_directories)[源代码]

创建一个 pyramid.i18n.Localizer 对象,该对象与在翻译目录列表中找到的翻译中提供的区域设置名称相对应。

国际化与本土化 有关使用的详细信息 Pyramid 应用程序中的国际化和本地化服务。