跳转到主要内容

PTS为Zope 2软件提供了国际化(i18n)和本地化(l10n)的方法。

项目描述

PlacelessTranslationService

版权 (C) 2001-2007 Lalo Martins <lalo@laranja.org>,

Zope 公司及贡献者

本程序是自由软件;您可以重新分发它并/或根据自由软件基金会发布的 GNU 通用公共许可证的条款进行修改;许可证的第二版或(根据您的选择)任何后续版本。

查看 license.txt 以获取更多详细信息。

本程序分发旨在提供便利,但没有任何保证;即使没有对商售性或特定用途的隐含保证。有关详细信息,请参阅 GNU 通用公共许可证。

您应该已经随本程序收到了一份 GNU 通用公共许可证的副本;如果没有,请写信至 Free Software Foundation, Inc.,地址为 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA。

什么是 PlacelessTranslationService?

PTS 是用于为 Zope 2 国际化和本地化的方法(即 i18n 和 l10n)。它基于 GNU gettext 工具集支持的文件。有关信息和背景资料,请参阅 gettext 文档。

https://gnu.ac.cn/software/gettext/manual/

安装

PTS 作为普通 Zope 产品安装。通常,通过将分发版解压到 INSTANCE_HOME 的 Products 目录中并重新启动 Zope 来完成此操作。更多信息请参阅 Zope 书籍。

http://zope.org/Documentation/Books/ZopeBook/2_6Edition/MaintainingZope.stx

使用 PlacelessTranslationService

PTS 使用以下步骤

  1. 国际化您的软件

  2. 准备翻译模板

  3. 准备模板的翻译

  4. 安装翻译

以下将解释这些步骤。

  1. 国际化您的软件

有关此内容的良好概述可以在以下位置找到:http://www.upfrontsystems.co.za/Members/jean/mysite-i18n

  1. 准备翻译模板

翻译模板是根据 gettext 标准定义的空 Portable Object 文件,并具有特殊的头块。

PO 格式的详细信息请在此处描述

https://gnu.ac.cn/software/gettext/manual/html_node/gettext_9.html#SEC9

头块相当直观,可以在该目录中包含的 sample.pot 文件中看到。所有大写的短语、语言代码、语言名称以及(可选)内容类型和首选编码都应替换为正确的值。

有几种方法可以准备 PO 模板

—手动

这可以通过复制该目录中包含的 blank.pot 文件,按上述描述替换示例值,然后手动为软件中使用的每个 msgid 添加 msgid 和空 msgstr 对来完成。

—使用 i18ndude

i18ndude 是一个在所有软件都以存储在文件系统上的 ZPT 形式存在时有用的工具。

可以从以下位置下载

http://plone.org/products/i18ndude

  1. 准备模板的翻译

    最好找到一家可以处理 gettext 标准的翻译公司,并将您的 .pot 文件发送给他们。他们应该为所需的语言发送 .po 文件。

    如果您自己进行,请将 .pot 文件复制到以您要翻译到的语言命名的文件,并带有 .po 扩展名。然后通过该文件,填写 msgstr 部分。最后,更新文件顶部的所有元数据字段,以确保它们适用于您刚刚完成的翻译。

    此时,您应该有一个 .pot 文件和一组 .po 文件。

  2. 安装翻译

    PTS 将在名为“i18n”的文件夹中查找 .po 文件以用作翻译。如果它们位于 INSTANCE_HOME 或您安装的任何 Products 的目录中,则会搜索这些“i18n”文件夹。

    将您的 .po 文件复制到上述位置之一的“i18n”文件夹中。

    完成此操作后,重新启动 Zope。

变更日志

2.0.7 (2017-02-12)

错误修复

  • 修复了在 Zope4 中已删除的从 Globals 导入的错误。[pbauer]

2.0.6 (2016-08-11)

修复

  • 使用 zope.interface 装饰器。[gforcada]

2.0.5 (2014-04-16)

  • 添加了 .gitignore。[tisto]

2.0.4 (2013-08-13)

  • 添加模块安全声明。防止发布 translate 方法。(来自 PloneHotfix20130618 的修复。)[davisagli]

2.0.3 (2011-11-24)

  • 防止在无法重新加载懒加载的目录后发生异常。这解决了 http://dev.plone.org/ticket/9726 [davisagli]

  • 确保使用 five:registerPackage 注册的包在 Zope 2.13(Plone 4.1)中也被搜索 i18n 目录。[maurits]

  • 使产品初始化与 Zope 主分支兼容。[elro]

2.0.2 - 2010-10-27

  • 在 catalog_broken.pt 中修复了 chameleon 不兼容问题。[swampmonkey]

2.0.1 - 2010-08-04

  • 使 initialize2 函数与 Zope 2.13 兼容。[hannosch]

2.0 - 2010-07-18

  • 没有更改。

2.0b6 - 2010-06-13

  • 从 i18n 目录中删除了 .registration.cache 文件。由于 plone.app.locales 中的大多数 po 文件已移至 locales 文件夹,这种优化不再值得。[hannosch]

  • 避免使用已弃用的 five:implements 指令。[hannosch]

2.0b5 - 2010-03-26

  • 修复了在通过 zope_i18n_allowed_languages 指定显式语言列表时对 TEMPLATE_LANGUAGE 支持的不兼容性。[hannosch]

2.0b4 - 2010-03-01

2.0b3 - 2010-02-04

  • 重构了 i18n 文件夹发现机制,使其独立于持久产品注册表。[hannosch]

2.0b1 - 2010-01-24

  • 扩展了我们对手动协商者的修改,并引入了模板语言的概念。无论是否有每个域的 po 文件,它都会始终被允许。这解决了 http://dev.plone.org/plone/ticket/9762。[hannosch]

  • 添加了缺少的 zope.annotation 依赖。[hannosch]

2.0a2 - 2009-11-13

  • 将 Products.Five.i18n 中的 PTSLanguages 类合并进来,并在我们的 overrides.zcml 中启用它。[hannosch]

  • 修复了使用 Globals 的弃用警告。[hannosch]

  • 清理了包元数据和声明包依赖。[hannosch]

2.0a1 - 2008-10-16

  • 完成了在常规 Python 包中处理 i18n 文件夹内 po 文件的支持。它们需要注册为 Zope2 产品,但不再需要位于 Products.* 命名空间中。[hannosch]

  • 删除了 _compile_locales_dir 方法和相关补丁。现在编译 mo 文件由 zope.i18n 本身处理。[hannosch]

  • 为 i18n 文件夹添加了第一个注册缓存版本。我们跟踪文件的修改时间、文件数量和头部信息,并将这些信息写入缓存文件。启动时,我们读取缓存文件,并在它仍然有效的情况下使用这些信息,而不是重新解析 po 文件头部。该缓存文件名为 ‘.registration.cache’。[hannosch]

  • 在初始化代码中进行了小的优化。[hannosch]

  • 优化了从 i18n 文件加载 po 文件。当我们只需要语言头部时,我们只解析文件的头部。这需要一个新版本的 python-gettext。[hannosch]

  • 优化了启动日志记录。现在我们不再在调试级别上进行垃圾邮件。[hannosch]

  • 弃用了所有翻译域和相关方法和类。[hannosch]

  • 为了编译所有 mo 文件就地,而不是使用 var/pts mo 文件缓存,并删除了使用 PTS 注册的目录,而是将它们注册为 Zope3 ITranslationDomain 实用工具。[hannosch]

  • 移除了我们自己的 msgfmt 模块副本,并改用 python-gettext 包中的版本。[hannosch]

  • 停止向 PTS 添加 BrokenMessageCatalog 对象。[hannosch]

  • 删除了在更新到 PTS 更新版本时的自我重建代码。[hannosch]

  • 删除了已弃用的方法。[hannosch]

1.5.4 - 2010-03-01

1.5.3 - 2009-06-11

  • 修复了对同一域名合并多个消息目录的支持。之前这仅在测试环境中工作。[witsch]

  • 正确初始化包,以便测试可以通过eggified版本通过。[witsch]

1.5.2 - 2009-05-13

1.5.1 - 2009-02-22

  • 将readme.txt文件大写为README.txt。似乎有些平台不喜欢全部小写的名称。[hannosch]

1.5 - 2009-02-20

  • 重新格式化了变更日志并更新了包元数据。[hannosch]

  • 修补了zope.i18n.zcml.registerTranslations以回滚Hanno对合并同一域名po文件的工作。[tarek]

  • 为registerTranslations修补程序添加了一些测试。[tarek]

1.4.14

  • 修复了引用一个不存在文件的setup.py。[maurits]

1.4.13 - 2008年8月18日

1.4.12 - 2008年6月17日

  • 完成了在常规 Python 包中处理 i18n 文件夹内 po 文件的支持。它们需要注册为 Zope2 产品,但不再需要位于 Products.* 命名空间中。[hannosch]

  • 添加了一些缺失的ZCML语句,允许在仅Zope环境中使用PTS。感谢Martijn Jacobs提供的修补程序。[hannosch]

1.4.11 - 2008年4月28日

1.4.10 - 2008年4月20日

  • 将mo文件缓存切换到在客户端主目录下存储文件,而不是依赖于实例主目录中的var文件夹。这应该修复了针对有效用户安装的权限错误。这参考了http://dev.plone.org/plone/ticket/7786。[hannosch]

  • 当通过PTS_LANGUAGES限制语言列表时,根本不使用懒消息目录,因为内存占用优势不再存在,但微小的查找开销仍然存在。[hannosch]

  • 添加了对名为PTS_LANGUAGES的新环境变量的支持。如果指定了这个变量,并且它包含一个用空格分隔的语言代码列表,则只有那些语言将在Zope实例中注册。这有助于减少PTS的内存占用和生成的ZODB对象数量。对于地区文件夹,这也避免了编译po文件到mo文件。[hannosch]

1.4.9 - 2008年3月26日

  • 重新结构化修补程序。添加了一个修补程序,以始终编译所有地区文件夹中的po文件到mo文件,即使它们在包中找到。这解决了http://dev.plone.org/plone/ticket/7157。同时,如果我们没有通过ZCML注册地区文件夹,则不再在产品中加载它们。[hannosch]

  • 修复了MoFileCache中的不正确记录。这解决了http://dev.plone.org/plone/ticket/7775。[kaell311, hannosch]

1.4.8 - 2008年1月5日

  • 修复了持久翻译服务创建代码中的错误。最初使用 _path 参数注册包装器时使用了 ('TranslationService', )。重启后,它将被更正为正确的:( '', 'Control_Panel', 'TranslationService' )。这应该可以修复 Plone 缺陷跟踪器中的一些缺陷。[hannosch]

1.4.7 - 2007年12月24日

  • 当 Zope3 翻译实用工具接收到无效的上下文参数时,抛出 ValueError。Zope3 的翻译仅针对请求,尽管关键字名为 context,但它很容易与 contentish 上下文混淆。[hannosch]

1.4.6 - 2007年12月2日

  • 在从 locales 文件夹加载翻译文件时捕获 PoSyntaxError,并输出警告而不是阻止 Zope 启动。[hannosch]

  • 再次撤回将 PTS 作为全局实用工具的处理。结果表明,将持久对象同时注册为全局实用工具和模块级全局变量一样糟糕。因此,我们再次使用 PTSWrapper,它只存储 PTS 的物理路径,并在每次访问时加载它。这修复了在 Plone 3.0 中观察到的 ConnectionStateErrors,并关闭了 http://dev.plone.org/plone/ticket/7233。[hannosch]

  • 从主线版本回滚了 LazyGettextMessageCatalog,并用它替换标准 zope.i18n GettextMessageCatalog。这提高了启动时间和内存占用,因为只有那些实际使用的目录文件会被解析并加载到内存中。[hannosch]

1.4.5 - 2007年10月7日

  • 在 PTS 实用工具实现中防止偶发的 ConnectionStateErrors。[hannosch]

1.4.4 - 2007年7月9日

  • 添加了新的 memoize 函数,用于修补 Zope3 协商器,将语言协商的结果存储在请求中。[hannosch]

  • 对 msgfmt.py 进行了各种小更新。[hannosch]

1.4.3 - 2007年5月1日

  • 添加了新的 mo 文件生成逻辑,该逻辑将自动生成和更新所有 locales 文件夹中的 mo 文件,而不是在 var/pts 缓存中,因此这些文件可以直接被 Zope3 翻译机制拾取。您需要确保运行 Zope 进程的用户对所有 locales 文件夹有写权限,这样该功能才能正常工作。遵循 i18n 文件夹布局的文件夹将与以前一样处理。[hannosch]

  • 删除了 PTS 域的 mo 文件。[hannosch]

1.4.2b2 - 2007年3月23日

  • 暂时注释掉了 five:registerPackage,因为它在测试期间会导致丑陋的 ConnectionStateErrors,因为 PTS 会作为 ZCML 层的一部分被设置。[hannosch]

1.4.2b1 - 2007年3月5日

  • 进行了小的优化。检查传递给 translate 函数的上下文是否已经是请求,这样我们就不需要从上下文中获取它。[hannosch]

  • 添加了 IPTSTranslationDomain 接口和实用工具。这些可以用于代理由 PTS 处理的翻译域,使其也可作为 Zope3 翻译域使用,例如在纯 Zope3 页面模板中。 [hannosch, philiKON]

1.4.1 - 2007年2月10日

  • 删除了 TranslateTags 和 dtml 翻译功能。这些功能已经很长时间没有工作,没有人能够修复或维护它们。有关详细信息,请参阅 http://dev.plone.org/plone/ticket/4895。[hannosch]

  • 在初始化期间将 PlacelessTranslationService 对象注册为全局实用工具。这允许我们摆脱 PTSWrapper 中的所有魔法获取代码,该代码在每次调用 translate 方法时都会遍历到实际的 PTS 对象。我们现在可以执行简单的 getUtility 调用。[hannosch]

  • 删除了自定义缓存处理,并使用基于 plone.memoize 思想的标准化方法替换。代码可在 memoize 模块中找到。这再次带来了显著的加速。[hannosch]

  • 从 translate 方法中删除了过时的 as_unicode 参数。[hannosch]

  • 弃用了一大批不再有任何特定目的的方法。[hannosch]

  • 移除了.missing 跟踪功能。这些功能未得到维护且从未进行过测试。[hannosch]

1.4.0 - 2006年10月25日

  • 移除了自动记录缺失翻译的跟踪功能。这证明非常消耗资源。[hannosch]

  • 修复了 translate 方法,使其在不进行上下文捕获的环境中也能正常工作。[hannosch]

  • 修复了 GettextMessageCatalog 中的一个弃用警告。[hannosch]

  • 完全移除了 PatchStringIO,因为它显然不再需要了。[hannosch]

  • 移除了 FasterStringIO 模块和相应的猴子补丁。这些现在是 CMFPlone/patches 的一部分。[hannosch]

  • 澄清了 utranslate 方法的某些文档字符串,这些方法现在与 translate 方法相同,不再使用它们。[hannosch]

  • 对 PatchStringIO 进行了一些清理,因为我们现在需要 Zope 2.10,我们总是有 Zope3 TAL 机械装置,我们应该抑制讨厌的弃用警告。[hannosch]

  • 弃用了 RequestGetAccept 语言协商处理器,因为它会干扰包含名为 language 字段的表单。在 1.4 中我们不再注册此处理器。这解决了 http://dev.plone.org/plone/ticket/4986。[hannosch]

  • 清理了测试并移除了自定义测试运行器(framework/runalltests)。[hannosch]

  • 所有注册到 Zope3 翻译服务的翻译域现在都被 PTS 忽略,因为 PTS 本来就不会查询这些。[hannosch]

  • PTS 的翻译(用于管理界面)现在设置为使用 Zope3 翻译服务。你可能觉得这很讽刺,但这更强调了 PTS 将采取的道路。[hannosch]

  • 将 PTS 的自有翻译转换为新的地区文件夹布局。[hannosch]

  • 将 PTS 的 translate 方法更改为默认返回 Unicode,以更好地与 Zope 2.10+ 一起工作,Zope 2.10+ 使用 Zope3 tal 和 pagetemplate 机械装置,这些机械装置在所有地方都期望 Unicode。[hannosch]

1.3.6 - 2007年4月22日

  • 修复了另一个 Unicode 错误,该错误是由页面模板源中的非 Unicode 字符引起的(页面模板源中的 utf 编码字符串)。这解决了 http://dev.plone.org/plone/ticket/6238。[naro, hannosch]

1.3.5 - 2006年1月27日

  • 最近更改返回 Unicode 暴露了 TAL 解释器中另一个组合文本的地方,该地方尚未修复以允许 Unicode 和 utf-8 编码文本的混合。已经引入了一个新的猴子补丁来修复这个问题。这解决了 http://dev.plone.org/plone/ticket/6068。[hannosch]

1.3.4 - 2006年12月13日

  • 将 PTS 的 translate 方法更改为默认返回 Unicode。这是为了 Plone 2.5 而必需的,以便与 FiveTranslationService 一起获得合理的操作行为。这个版本可能与 Plone 2.1 不兼容。[hannosch]

1.3.3 - 2006年9月29日

  • 在 interpolate 函数中提供了一些更友好的回退机制,用于处理在映射字典中将编码字符串或 unicode 与文本本身混合的情况。现在,我们在所有情况下都优雅地处理 utf-8 编码字符串。[hannosch]

1.3.2 - 2006年9月8日

  • 使损坏的消息目录的日志记录更加详细。现在记录了文件名和路径,因此您可以实际找到这些文件。感谢 limi 的建议。[hannosch]

  • 修复了 interpolate 函数中的错误,其中当 Unicode 字符串仅包含 ASCII 字符时,Unicode 和编码字符串的混合失败。现在它将正常工作。尽管如此,您应该更新代码以使用 Unicode 作为内部格式,因为一旦我们切换到基于 Zope3 的 TranslationService,对非 Unicode 字符串的翻译支持将消失。[hannosch]

1.3.1 - 2006年6月1日

  • 也将我们的恶意黑客技术应用于 pagetemplate 和 talinterpreter 的 Zope3 版本,允许混合 utf-8 编码的字符串和 Unicode,以便当前的 Plone 在 Zope 2.10 下运行。请注意,PTS 将被摧毁,您真的应该开始更新所有代码,使其内部使用 Unicode,尤其是通过 TAL 输出。[hannosch]

1.3.0 - 2006年5月15日

  • 修复了 interpolate 函数中的另一个问题,其中如果字符串是旧式普通字符串而不是 unicode,则不会替换变量。这解决了 http://dev.plone.org/plone/ticket/5509。[hannosch]

  • 修复了 interpolate 函数中的 UnicodeDecodeError 错误,当映射或文本是 Unicode 但另一个不是时。该函数只接受 Unicode 作为文本和映射的所有条目的编码,因为它无法猜测任何一种的编码。[hannosch]

  • 清理了 interpolate 函数。它有各种严重错误,并且速度极慢。这解决了 http://dev.plone.org/plone/ticket/5421。[hannosch]

  • 为了支持 Zope 2.10 的 Zope3 zope.tal,移除了 OpenTal 支持。我们不希望支持三种 tal 实现 ;)[hannosch]

  • 进行了大规模的春季大扫除。将日志模块移动到 zLOG 而不是 zLOG。Python 从 2.3 开始包含日志模块,因此不再支持运行旧版本的 Python。这同样适用于 Zope < 2.7。[hannosch]

  • 在缺少域的错误消息中包含 po 文件名。[wichert]

1.2.7 - 2006年3月19日

  • 修复了 Andrey Lebedev 注意到的 msgfmt.py 中的错误。所有以‘#’开始的注释都被视为模糊。[hannosch]

  • 修复了翻译服务返回 None 的错误,当找不到翻译且默认值为 None 时。改为使用 msgid。这适用于所有没有默认文本的 Zope3 消息。[hannosch] [alecm]

  • 添加了测试以显示 dtml 翻译已损坏,请参阅 http://dev.plone.org/plone/ticket/4895。[hannosch]

  • 如果请求中已经设置了 PTS_IS_RTL 标志,则不要重置该标志。http://dev.plone.org/plone/ticket/4631 [wichert]

1.2.6 - 2006年2月25日

  • 删除了一些 Python 2.1 BBB 和未使用的代码。[hannosch]

  • 删除了自制的 MessageID 实现。现在可以使用 Zope 2.8 / Five 1.1 或 Zope > 2.9 使用 Zope 3 MessageID。[hannosch]

  • 将 changes.txt 从 doc 子文件夹移动到主文件夹,并将其重命名为 HISTORY.txt,以符合标准布局。[hannosch]

  • 将标准日志级别从 INFO 改为 BLATHER,以便启动过程不会被无用的消息轰炸。[hannosch]

  • 添加了一个环境变量“DISABLE_PTS”,以完全禁用加载翻译文件和注册 PTS 作为翻译服务,而无需从“Products”目录中删除产品。提示:设置环境变量的一种简单方法是在 zope.conf 指令中使用 。[dreamcatcher]

1.2.5 - 2005-12-06

  • 修复了在 INSTANCE_HOME.startswith(ZOPE_HOME) 为 True 时文件夹布局的问题,如 http://plone.org/collector/4983 中所述。感谢 ymahe 提供的补丁,我对其进行了轻微修改。[hannosch]

1.2.4 - 2005-11-16

  • 删除了一些 Python 2.1 兼容性代码,并添加了第一个非常基本的 po 文件加载测试 [hannosch]

  • 通过捕获 OSErrors,使一些文件系统访问代码更加健壮。这解决了 http://plone.org/collector/4824。[hannosch]

  • 再次增加类版本,并编写测试以确保类版本和 version.txt 中的版本匹配 [hannosch]

1.2.3 - 2005-10-17

  • 修复 http://plone.org/collector/4799 - 从2.1升级到2.1.1破坏了所有消息目录。我们现在增加PTS的内部类版本,这将导致在ZODB中重新创建translation_service对象,因此所有包含的内部poFile对象都会被移除并重新创建[hannosch]

1.2.2 - 2005-10-08

  • 将存储在__init__.py模块级别的持久PTS替换为PTSWrapper对象。添加了PTSWrapper的isRTL方法。应修复连接问题。[alecm]

  • 合并了1.0分支中缺失的修复。其变更日志条目为:“修复了多个ZEO客户端在不同文件系统位置的问题。”这是longsleep在2005年2月9日完成的[hannosch]

1.2.1 - 2005-08-07

  • Plone 2.1rc2的新鲜tarball(无.svn目录)[batlogg]

  • 添加了希腊语翻译[感谢Nikos Papagrigoriou] [hannosch]

1.2.0 - 2005-07-28

  • 当PTS重新创建时清除mo文件缓存[tiran]

1.2-rc3

  • 修复了位于“locales”目录中的po文件的id生成[tiran]

  • 添加了一个mo文件缓存,它将编译的文件存储在INSTANCE_HOME/var/pts/${catalog_id}.mo [tiran]

1.2-rc2

1.2-rc1 - 2004-09-08

  • 新功能RTL支持和RTL API,用于从右到左的语言。po文件可以包含一个名为X-Is-RTL的标题,其值为yes、y、true或1表示rtl语言,或为no、n、false、0表示ltr语言(默认值)。产品模块还包含一个新方法isRTL,该方法是TTW可用的。[thx to ingeniweb]

1.1-rc1 - 2004-07-15

  • 新功能msgid跟踪器(感谢ingeniweb)

    它在PTS内部跟踪未翻译的msgid。您可以轻松地将它们下载为po文件。有关更多信息,请参阅ZMI。

  • 将MessageCatalog的isPrincipiaFolderish设置为false,以避免ZMI内部的dtml-tree无限递归。

1.0-rc8

  • 这个版本不再是分支,现在是官方版本。感谢Lalo Martins为编写原始产品所付出的不懈努力。

  • 禁用SESSION的使用

  • 重新启用.missing记录

  • 添加了文档部分,包括如何使用.missing记录生成.pot文件的详细信息

1.0fork-rc7 - 2004-05-11

  • 重新启用了getRequest补丁以避免一些丑陋的问题

1.0fork-rc6 - 2004-05-05

  • 清理了所有python文件,重新排列了代码并删除了空格

1.0fork-rc5 - 2004-04-22

  • 将日志更改为由utils.py中的方法和变量使用

  • 清理了导入并将它们分别放入python、zope和PTS导入

  • 移除了对get_request补丁的依赖和自动加载。现在只有在使用MessageID模块时、在将unicode应用于FasterStringIO(不应发生!)或作为PTS无法获取有效上下文(REQUEST)时的回退时才加载。最后两个情况将在第一次(重新)启动zope时破坏。如果您的软件依赖于get_request(),请手动应用补丁

    from Products.PlacelessTranslationService.PatchStringIO import applyRequestPatch
    applyRequestPatch()

    注意:对于这个版本,get_request PATCH默认启用!

  • 针对PoSyntaxErrors的更好调试消息

1.0fork-rc4 - 2004-04-05

  • 更改po文件id创建

    • id是MyProducts.i18n-pofile或MyProducts.locales-pofile,对于从产品目录加载的po文件

    • id是GlobalCatalogs-pofile,对于从INSTANCE_HOME/i18n/加载的po文件

  • 始终将回退目录追加到用于翻译的目录中

  • 支持INSTANCE_HOME/locales/

  • 将GlobalCatalogs从INSTANCE_HOME/i18n/和INSTANCE_HOME/locales/移动到用于翻译的目录的开头

  • 使用域名和语言作为键在REQUEST中使用缓存目录名称

1.0fork-rc3 - 2004-03-09

  • 向控制面板目录id添加产品标识符,以允许在不同位置使用相同的po文件名

  • 目录现在像Products.CMFPlone.i18n.plone-de.po一样。来自产品(例如来自INSTANCE_HOME)的目录命名方式与以前相同(plone-de.po)

  • 修复了收集器问题#910529。感谢Nicolas Ledez的报告和补丁

1.0fork-rc2 - 2004-03-01

  • 修复了FasterStringIO中的错误,该错误在输出中添加了新行

  • 添加了类似zope 3的locales目录支持:Products/MyProduct/locales/${lang}/LC_MESSAGES/${domain}.po

1.0fork-rc1 - 2004-02-11

  • 修复了与Python 2.1兼容性相关的次要问题

1.0fork-beta5 - 2004-02-03

  • 添加了utranslate方法

  • 添加了negotiator chains和两个新的简单negotiator

  • 添加了类似zope 3的MessageID和MessageIDFactory

  • 更新API和清理代码
    • 为类添加了安全性

    • 将一些类移动到utils.py以避免方法级别导入

    • 添加了getTranslationService()方法以在其他产品中获取PTS实例

1.0fork-beta4 - 2004-01-28

  • 在msgfmt.py中读取所有包含“rb”的文件

  • 在ControlPanel中将损坏的消息目录显示为“损坏”

  • 与savannah上最新的PTS更改同步
    • 在translate中添加了as_unicode参数

    • 清理了msgfmt.py

1.0fork-beta3 - 2004-01-07

  • 添加了一个基于Python源包中msgfmt工具的内置mo编译器。无需编译po文件到mo文件。感谢Christian 'Tiran' Heimes <tiran@cheimes.de>

  • 不再在启动时加载mo文件。目录自动编译。

1.0fork-beta2 - 2003-11-24

  • 不再在zope翻译服务注册表中注册持久服务。而是用非持久类包装PTS

  • 为PTS ZMI添加了德语(de)翻译

  • 重新实现了注册自己的negotiation方法到negotiator的钩子,该钩子在1.0beta1中被删除(现在可以再次与PloneLanguageTool一起工作)

  • Python 2.1兼容性

1.0beta1 - 2003-10-??

  • 国际化了我们的页面模板(对于ZMI)并添加了pt_BR翻译

  • 泛化negotiator,使其可以协商“accept”格式中的任何头

1.0alpha2 - 2003-09-26

  • 一些基本的DTML支持

  • 解决了由于在ZODB和模块级别全局变量中存储相同对象而引起的问题(感谢Sidnei)

1.0alpha1 - 2003-08-27

  • 删除了对PAX的依赖

  • 现在PTS在每个产品包下查找“i18n”子目录,这使得包装/安装具有国际化意识的产品更容易。INSTANCE_HOME上的i18n目录仍然保留,您可以使用它进行本地覆盖

  • 改进了ZMI的可用性

0.5 - 2003-03-31

  • 现在我们在Zope的控制面板中有ZMI(Zope管理接口)。您可以使用它在不重启的情况下刷新目录,并测试安装的目录

  • 将一些模块级别的函数导出以在Python脚本和页面模板(打开或Z)中使用:negotiate()、translate()、getLanguages()、getLanguageName()

  • 为StringIO添加了一个“hotfix”,这应该使PTS在没有不断抛出UnicodeError的情况下与ZPT一起工作

0.4 - 2003-02-03

  • 重新许可为GPL

  • 现在它真的与ZPT(彻底测试过)一起工作

  • 如果与OpenPT一起使用,它将使用输出编码协商钩子

  • Negotiator现在使用缓存(存储在请求中)来加快速度

  • 现在可以使用多个目录来处理同一个域(但检查它们的顺序有点随机)

  • 特别感谢Magnus Heino提供的ZPT支持提示和补丁

0.3 - 2003-01-02

  • 这次发布标志着PlacelessTranslationService与其自己的包的分离,以及使其与ZPT兼容的初步尝试

0.2 - 2002-09-22

  • 更新发布

0.1 - 2002-08-24

  • 初始发布

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

Products.PlacelessTranslationService-2.0.7.tar.gz (68.6 kB 查看哈希值)

上传时间 源代码

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面