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 文档。
安装
PTS 作为普通 Zope 产品安装。通常,通过将分发版解压到 INSTANCE_HOME 的 Products 目录中并重新启动 Zope 来完成此操作。更多信息请参阅 Zope 书籍。
http://zope.org/Documentation/Books/ZopeBook/2_6Edition/MaintainingZope.stx
使用 PlacelessTranslationService
PTS 使用以下步骤
国际化您的软件
准备翻译模板
准备模板的翻译
安装翻译
以下将解释这些步骤。
国际化您的软件
有关此内容的良好概述可以在以下位置找到:http://www.upfrontsystems.co.za/Members/jean/mysite-i18n
准备翻译模板
翻译模板是根据 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 形式存在时有用的工具。
可以从以下位置下载
准备模板的翻译
最好找到一家可以处理 gettext 标准的翻译公司,并将您的 .pot 文件发送给他们。他们应该为所需的语言发送 .po 文件。
如果您自己进行,请将 .pot 文件复制到以您要翻译到的语言命名的文件,并带有 .po 扩展名。然后通过该文件,填写 msgstr 部分。最后,更新文件顶部的所有元数据字段,以确保它们适用于您刚刚完成的翻译。
此时,您应该有一个 .pot 文件和一组 .po 文件。
安装翻译
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
确保如果请求无法适配到 IAnnotations,则请求语言缓存补丁不会抛出错误。这解决了 http://dev.plone.org/plone/ticket/10272。[hannosch, davisagli]
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
修复了PTS_LANGUAGES和LazyGettextMessageCatalog的优化问题。布尔检查被反转。这解决了http://dev.plone.org/plone/ticket/9575。 [hannosch]
1.5.3 - 2009-06-11
修复了对同一域名合并多个消息目录的支持。之前这仅在测试环境中工作。[witsch]
正确初始化包,以便测试可以通过eggified版本通过。[witsch]
1.5.2 - 2009-05-13
为包中找到的翻译文件创建唯一的目录名称。这解决了http://dev.plone.org/plone/ticket/8443。[hannosch]
将我们的初始化延迟到包加载时间,以便持久产品注册表中填充所有包的产品条目。这允许在第一个新实例启动时注册所有翻译,并解决了http://dev.plone.org/plone/ticket/8376。[hannosch]
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日
重新设计PTS加载代码,不再依赖于持久产品注册表来同步文件路径,因为这样很容易不同步并导致多个ZEO客户端连接到同一数据库的不同文件路径时出现问题。这解决了http://dev.plone.org/plone/ticket/8265和http://dev.plone.org/plone/ticket/8317。[hannosch]
1.4.12 - 2008年6月17日
完成了在常规 Python 包中处理 i18n 文件夹内 po 文件的支持。它们需要注册为 Zope2 产品,但不再需要位于 Products.* 命名空间中。[hannosch]
添加了一些缺失的ZCML语句,允许在仅Zope环境中使用PTS。感谢Martijn Jacobs提供的修补程序。[hannosch]
1.4.11 - 2008年4月28日
绕过了addCatalog中的错误,该错误会导致损坏的消息目录失败。这解决了http://dev.plone.org/plone/ticket/8084。[hannosch]
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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 226a105b97ee586fe14a0c0193bc38c12ef9464c96c8dda63e6569687fcc5e1c |
|
MD5 | 6f7b32fd9b48512a506e81cc997f5daa |
|
BLAKE2b-256 | 2040b1e4ab971e489c074c3f3c4095f08278b7db5f1fd1c0d8d06cad1b3f6ab1 |