多语言Plone内容包
项目描述
介绍
在Plone 4.3之前的旧日子里,谈论Plone的多语言支持就是谈论Products.LinguaPlone。多年来,它一直是管理Plone中基于Archetypes的内容类型翻译的事实标准。某种意义上,它的功能从未进入Plone的核心,如今它处于遗产状态。如今,Plone面临着Dexterity内容类型的崛起,自Plone 4.3以来,它已被纳入核心。随着Plone 5的发布,过渡已完成,Dexterity作为其默认内容类型故事一起发布。
plone.app.multilingual最初设计用于为Plone添加整个多语言故事。使用ZCA技术,它使翻译能够管理Dexterity和Archetypes内容类型,这些类型通过统一的UI进行管理。
此模块提供管理内容翻译的用户界面。它是下一代Plone多语言引擎的应用程序包。它旨在与Dexterity内容类型以及过时的基于Archetypes的内容类型一起工作。由于使用UUID进行引用,它仅适用于Plone 4.1及以上版本。
经过超过7年的发展,由于废弃的库和两个主要的Plone版本的重设计、重实现,我们终于可以说 plone.app.multilingual 已经问世。
版本
1.x - 基于 Archetypes 和 Dexterity 的 Plone 4.x
2.x - Plone >= 4.x, < 5.0,使用 plone.app.contenttypes (Dexterity) 和真实共享内容
3.x - Plone >= 5.x。3.0.17 可能是这个分支的最新版本。我们鼓励您使用 4.x。
4.x - Plone >= 5.x (最低版本 5.0.3,由于依赖于 GenericSetup)
组件
PAM 由两个包组成。一个是必需的
plone.app.multilingual (核心,UI,通过行为启用 Dexterity 支持)
另一个是可选的
archetypes.multilingual (启用 Archetypes 支持)
使用
要使用此包与基于 Dexterity 和 Archetypes 的内容类型一起使用,您应在您的 eggs buildout 部分中添加以下行
eggs = plone.app.multilingual[archetypes]
要使用此包与 plone.app.contenttypes 一起使用,您应在您的 eggs buildout 部分中添加以下行
eggs = plone.app.multilingual
设置
在重新运行您的 buildout 并安装新可用的附加组件后,您应转到网站控制面板的 语言 部分,并至少为您的网站选择两种或更多语言。现在,您将能够创建 Plone 默认内容类型的翻译,或将现有内容作为翻译链接。
功能
以下是 PAM 提供的最重要功能。
根语言文件夹
设置后,PAM 将为您的网站每种语言创建根文件夹,并将翻译内容放入相应的文件夹。语言文件夹实现 INavigationRoot,因此从用户的角度来看,每种语言都被“监禁”在其相应的语言文件夹内。有事件订阅者用于捕获用户与内容的交互,并相应地更新内容中的语言,例如当用户在语言文件夹之间移动或复制内容时。
Babel视图
LP translate 视图的进化,统一了 Archetypes 和 Dexterity 内容类型。它具有一个用于当前正在编辑内容的已翻译内容查看器,通过一个通过ajax化的动态选择器即时显示它们。
语言无关字段
PAM 支持独立于语言的字段,但在 LP 实现方面有一些变化。由于 PAM 的设计不会使翻译对象比其兄弟姐妹更相关(没有规范对象),标记为语言独立的字段始终复制到翻译组的所有成员。PAM UI 将通过警告您翻译组所有成员相应字段的值将被覆盖来提醒您此行为。
翻译定位策略
在翻译内容时,策略会影响翻译内容在网站结构中的放置方式。有两种策略可供选择
LP 方式,翻译放置在父层次结构中最接近的翻译文件夹中
询问用户在目标语言根文件夹中放置翻译元素的位置
语言选择策略
在浏览网站时,语言选择器小部件允许用户切换网站内容语言。在特定语言的翻译尚不存在的情况下,已设置了两种策略
LP 方式,选择器显示最近的翻译容器。
显示一个信息视图,显示当前可用翻译的当前内容。
翻译映射
为了简化翻译任务,我们设计了一个工具,以有用的方式显示所有当前翻译对象及其当前翻译信息。地图还显示了一个缺失翻译的列表,以防您想构建一个 镜像(完全)翻译的网站。
Google翻译服务集成
如果您是 Google 翻译服务的订阅者(一种付费服务),您可以在 语言 网站设置中设置您的 API 密钥。然后,您会在 babel 视图中注意到一个新图标,它使用左侧的原字段并利用 Google 翻译服务将其内容翻译并填充右侧字段。
LinguaPlone迁移
您可以使用 迁移 选项卡在 语言 控制面板中,将现有的 LP 网站迁移到 PAM。迁移已被分为 4 个步骤,以分离关注点并提高每个必要程序的成功率。
步骤0(可选)- 重新索引语言索引
LinguaPlone 内容的迁移依赖于一个最新的语言索引。使用此步骤刷新此索引。警告:根据您网站中项目数量,这可能需要相当长的时间。此步骤不是破坏性的,可以执行所需次数。
步骤1 - 将内容移至适当的根语言文件夹
此步骤将网站内容移动到其对应的根语言文件夹,并且在之前将通过网站内容树搜索错误放置的内容并将它们移动到最近的翻译父文件夹。警告:此步骤是破坏性的,因为它将更改您的内容树结构。请确保您已事先在“语言”控制面板的“网站语言”选项卡中正确配置了您网站的语言。建议您在开发/预生产服务器上尝试之前,不要在生产服务器上执行此步骤。根据您网站内容的分布和每个内容对象上语言信息的准确性,您可能需要在此步骤之后手动重新定位一些错误放置的内容。尽管此步骤是“破坏性的”,但如果发现某些问题并在之后修复了问题,则可以执行所需次数。请参考完成后的程序日志。
步骤2 - 转移多语言目录信息
此步骤将 LinguaPlone 存储的翻译之间的关系转移到 PAM 目录中。此步骤不是破坏性的,可以执行所需次数。
步骤3 - 迁移后的清理
此步骤将搜索和修复隐藏在关系目录中与 ITranslatable 接口相关的某些丢失依赖项,并消除它们。必须仅在 LinguaPlone 已卸载后运行此步骤,因此此步骤在那时是隐藏的。
标记可翻译对象
Archetypes
默认情况下,如果已安装 PAM,基于 Archetypes 的内容类型会被标记为可翻译。
Dexterity
用户应将技能内容类型标记为可翻译,通过将多语言行为分配给内容类型的定义来实现,无论是通过文件系统、超级模型还是通过网页。
将字段标记为语言无关
Archetypes
基于Archetype的内容上的语言无关字段标记方式与LinguaPlone相同。
atapi.StringField( 'myField', widget=atapi.StringWidget( .... ), languageIndependent=True ),
Dexterity
有四种方法可以实现。
指令
在您的内容类型类声明中
from plone.app.multilingual.dx import directives directives.languageindependent('field')
Supermodel
在您的内容类型XML文件声明中
<field name="myField" type="zope.schema.TextLine" lingua:independent="true"> <description /> <title>myField</title> </field>
本地
在您的代码中
from plone.app.multilingual.dx.interfaces import ILanguageIndependentField alsoProvides(ISchema['myField'], ILanguageIndependentField)
通过网页
通过在《Dexterity内容类型》控制面板中定义内容类型。
plone.app.multilingual的内部设计
所有内部功能都是在包plone.app.multilingual上实现的。
关键点如下
每个翻译都是一个内容对象
没有规范对象
翻译引用存储在内容对象外部
适应翻译的所有步骤
通过统一适配器获取/设置语言
可翻译标记接口
没有规范的内容对象
在内容空间上有一个规范对象会产生一个与Plone的正常行为不正交的依赖。内容对象应该是自治的,您应该能够删除它。这就是我们删除规范内容对象的原因。翻译基础设施上有一个规范对象,但不在内容空间上。
翻译参考存储
为了维护不同语言对象之间的关系,我们设计了一个称为“翻译组”的通用对象。这个翻译组有自己的UUID,并且该组中的每个对象成员都将它存储在对象目录注册表中。您可以使用ITranslationManager实用程序通过组中的一个对象来访问和操作翻译组的成员。
适应翻译的所有步骤
翻译的不同方面都得到了适应,因此可以为不同的类型、站点等创建不同的策略。
- ITranslationFactory
用于创建新内容的通用工厂
- ITranslationLocator
我们将要定位新翻译内容的位置
默认:如果父文件夹已翻译,则在翻译的父文件夹中创建内容,否则在父文件夹中创建。
- ITranslationCloner
将原始对象克隆到新对象中的方法
默认:无
- ITranslationIdChooser
哪个id是翻译
默认:原始id + 语言代码块
- ILanguageIndependentFieldsManager
语言无关字段的管理器
默认:无
通过统一适配器获取/设置语言
为了访问和修改内容类型的语言,有一个接口/适配器
plone.base.interfaces.ILanguage
您可以使用
from plone.base.interfaces import ILanguage language = ILanguage(context).get_language()
或如果您想设置内容的语言
language = ILanguage(context).set_language('ca')
可翻译标记接口
为了知道内容是否可以翻译,有一个标记接口
plone.app.multilingual.interfaces.ITranslatable
源代码
贡献者请阅读文档Plone核心的开发流程
源代码位于GitHub上托管的Plone代码存储库。
许可证
GNU通用公共许可证,版本2
致谢
plone.app.multilingual是在LinguaPlone的基础上开发的
- 设计和开发 –
Iskra (Ramon Navarro Bosch, Victor Fernandez de Alba)
- 额外的资金/赞助
东京庆应大学,欧洲研究中心(Jonathan Lewis)
还要感谢
- Jan-Carel Brand
为在AT上实现语言无关字段
- Anne Walter
推动初始工作版本的实现
Thomas Massmann, Martijn Pieters, Martin Aspeli, David Glick
变更日志
8.1.2 (2024-05-30)
错误修正
从CatalogVocabularyFactory导入中删除DeprecationWarning。[jensens] (#454)
内部
更新配置文件。[plone开发者]
8.1.1 (2024-02-27)
错误修正
添加缺失的翻译图标到菜单。[szakitibi] (#447)
8.1.0 (2024-01-31)
新功能
实现“连接翻译”对话框的更合理的默认值。[gogobd] (#445)
8.0.3 (2024-01-18)
内部
更新配置文件。[plone开发者] (dd37b9f9)
8.0.2 (2023-12-14)
错误修正
修复保存和取消按钮的位置,防止javascript打乱它们的位置(#435)
修复翻译断开问题 [gogobd](#437)
内部
移除过时的弃用警告。(#440)
8.0.1 (2023-08-31)
错误修正
修复在网站根目录设置印度尼西亚语言cookie的问题:必须是 id,而不是 id-id。[maurits](#304)
8.0.0 (2023-07-14)
重大变更
通过将 Products.CMFPlone 添加到包依赖项来创建一个核心插件。[folix-01](#417)
错误修正
在保存控制面板时,不要取消设置印度尼西亚根语言文件夹的语言。该语言的代码为 id。在Plone中不允许使用id作为标识符,因此它被创建为 id-id。这需要一些特殊处理。添加升级以递归修复此语言文件夹以设置印度尼西亚语言。这仅在文件夹本身具有错误的语言时才执行。[maurits](#304)
根语言切换器:如果首选印度尼西亚语言,则重定向到 id-id。[maurits](#304)
修复 set_recursive_language 以实际找到子对象。[maurits](#304)
7.0.1 (2023-04-15)
内部
更新配置文件。[plone 开发者](11f0db91)
7.0.0 (2023-04-06)
重大变更
将独立于语言的字段声明从 plone.app.event 移动到此包。这为将此包用作真正的核心插件做好了准备。[jensens](414-paevent)
6.0.2 (2023-03-22)
错误修正
使用 plone.base 导入。删除弃用警告。[jensens](#411)
更新旧视图方法和布局,从 LIF/LRF 类型定义和实例中。[maurits](#1001)例如,在 Plone 6 中 folder_summary_view 已不再可用:使用 summary_view 代替。[maurits](#1001)
6.0.1 (2023-03-14)
错误修正
当修改项时,只有当它们更改时,才将独立于语言的字段值复制到翻译中。[davisagli](#408)
解决弃用警告(plone.base)。摆脱 Archetypes 的遗留问题。[jensens](#410)
6.0.0 (2022-12-02)
错误修正
Plone 6.0.0 的最终发布。(#600)
6.0.0b3 (2022-09-07)
错误修正
将“plone.app.multilingual: Manage Translations”权限授予网站管理员角色。此更改不会自动应用于现有网站。您可以使用 Plone 网站的 /manage_access 视图或使用 GenericSetup 配置文件中的 rolemap.xml 手动应用它。[davisagli](#405)
6.0.0b2 (2022-08-30)
错误修正
修复安装问题以保留现有行为顺序。[davisagli](#403)
6.0.0b1 (2022-07-21)
错误修正
改进多语言映射的可用性:修复创建翻译和在新标签页中打开的链接,加快动画速度。[pbauer](#402)
6.0.0a12 (2022-06-07)
新功能
在语言选择器的更新标记中使用 SVG 标志,在 Plone 6 的语言选择器准备中使用图标解析器。[1letter](#387)
6.0.0a11 (2022-05-24)
错误修正
向类型添加图标表达式。[agitator](#401)
6.0.0a10 (2022-05-15)
错误修正
使其与 robotframework 3-5 兼容。[maurits](#5)
6.0.0a9 (2022-04-04)
错误修正
始终设置 basePath 模式选项以连接翻译。在支持的 Plone 版本中,这始终有效。[maurits](#6)
6.0.0a8 (2022-02-24)
错误修正
修复了在子请求中渲染语言选择器小部件时的错误重定向 URL 问题,例如在 Mosaic 中。[jensens](397-2)
isort,black,pyupgrade,删除 six 使用。[jensens](#397)
6.0.0a7 (2022-01-19)
错误修正
在 CMFPlone 中,ILanguage 架构已移动到 plone.i18n,并在那里按此引用,这里缺少更改。[jensens](#394)
6.0.0a6 (2021-12-29)
错误修正
修复文档中的错误。[telshock](#340)
6.0.0a5 (2021-10-16)
错误修正
翻译视图不应调用翻译对象。[mliebischer](#384)
6.0.0a4 (2021-10-13)
错误修正
在设置 TG 属性期间禁用 CSRF 保护。[mamico](#375)
6.0.0a3 (2021-09-15)
错误修正
删除与 Products.CMFPlone 的循环依赖。[ericof](#391)
6.0.0a2 (2021-09-01)
错误修正
在设置和卸载时强制 view_methods 为元组。[ericof](#337)
修复删除具有损坏关系的项目的语言独立字段的问题。[pbauer](#390)
6.0.0a1 (2021-04-28)
重大变更
为 barceloneta-lts 启用 Bootstrapify。[pbauer](#380)
将添加到自己的分支。
添加缺失的 html 标签。
修复双消息并添加全宽。
修复标题。
将添加到自己的分支。
添加缺失的 html 标签。
修复标题。
修复测试,使用页脚中的字符串。
修复测试,检查 h1 不是 documentFirstHeading。
修复测试,使用包含文本。
更新图标。
使用 jq3 删除 Jquery 加载。
主要版本升级。
共同作者:Peter Holzer <peter.holzer@agitator.com> 共同作者:Peter Mathis <peter.mathis@kombinat.at> (#380)
错误修正
在设置和卸载时强制 view_methods 为元组。[ericof](#337)
5.6.2 (2020-09-26)
错误修正
修复了ComponentLookupError的弃用警告。修复了ILanguageSchema的弃用警告,依赖于
plone.i18n
4.0.4。修复了zope.component中的IObjectEvent的弃用警告。修复了zope.site.hooks的弃用警告。[maurits] (#3130)
5.6.1 (2020-06-24)
错误修正
在babel添加视图中隐藏左右版块列。修复了#373 [iham] (#373)
5.6.0 (2020-05-06)
新功能
从IPloneFormLayer继承IPloneAppMultilingualInstalled层以更好地覆盖LIF小部件。[petschki] (#371)
错误修正
将元数据移至setup.cfg,以避免在Python 3.6上运行Plone 6.0时CHANGES.rst中的编码问题。[jensens] (#372)
5.5.1 (2020-04-20)
错误修正
进行了小的打包更新。[#1]
5.5.0 (2019-12-11)
新功能
在语言控制面板中启用“always_set_cookie”时,移除“set_language”参数。[erral] (#362)
5.4.2 (2019-11-25)
错误修正
在Robot测试中使用共享的“Plone测试设置”和“Plone测试拆除”关键字。[Rotonen] (#349)
5.4.1 (2019-08-23)
错误修正
修复了在Language Independent Folder有内容时添加新语言的问题。[petschki] (#358)
添加/更新翻译表单不显示z3c表单验证的错误返回。[mamico] (#360)
5.4.0 (2019-07-18)
新功能
添加低级事件和通知:在翻译组注册、更新和删除翻译时。[jensens] (#256)
错误修正
在测试中移除弃用警告。增加代码注释。移除管理器中“语言”的冗余reindex。[jensens] (#256)
在addtranslation遍历器中,对默认addview的检查有误。[mauro] (#355)
移除对
archetypes.multilingual
的任何依赖,因为这只是一个间接引用。移除所有已包含在Products.CMFPlone
中的依赖项。所有版本规范都减少到使用最近的Products.CMFPlone
。不再使用装饰器依赖。[jensens] (#357)
5.3.5 (2019-05-21)
错误修正
在安装期间设置命名行为而不是点状在fti上。[iham] (#345)
5.3.4 (2019-05-04)
错误修正
避免浏览器永久缓存到协商语言的第一重定向。[laulaz] (#347)
移动到命名行为。[iham] (#342)
5.3.3 (2019-04-29)
错误修正
修复工具栏图标。[agitator] (#338)
修复了
ILanguageSchema
已移动到plone.i18n
的弃用警告。[jensens] (#339)
5.3.2 (2019-02-08)
错误修正
a11y:为portalMessage添加角色属性。[nzambello] (#332)
5.3.1 (2018-12-11)
错误修正
在babel编辑中隐藏左右版块列。修复了#327 [erral]
5.3.0 (2018-11-05)
新功能
添加对Python 3的兼容性。[pbauer]
5.2.3 (2018-09-26)
错误修正
重新发布,因为5.2.1 somehow两次发布,一次在六月,一次在九月。[maurits]
5.2.2 (2018-09-25)
新功能
将plone.app.controlpanel设置为可选(不再存在于Plone 5.2)。[jensens]
错误修正
丢失了升级到配置文件版本3的步骤,现在已重新创建。[jensens, 2silver]
在加载迁移器代码时不要显示弃用警告,因为它打算在那里加载旧的LRF。[jensens]
如果多语言选择器在没有查询的情况下调用,不要失败。[tomgross]
修复连接文档。[tomgross]
5.2.1 (2018-06-20)
错误修正
修复了Catalan将“assets”翻译为“recursos”的测试。[maurits]
在安装时为网站根运行addAttributeTG。这防止触发plone.protect。[jaroel]
5.2.0 (2018-04-04)
新功能
将翻译移至plone.app.locales。修复了#191 [erral]
错误修正
修复Python 3导入。[pbauer]
在卸载时从可用视图方法中移除
language-switcher
。[erral]修复多语言地图中的i18n标记,以避免po文件中的${DYNAMIC_CONTENT}字符串。[erral]
修复翻译创建视图中显示的视图小部件的i18n标记。[erral]
5.1.4 (2018-02-02)
错误修正
移除了
Extensions/Install.py
。这只是一个应用我们的卸载配置文件的包装器,但该包装器不再需要。[maurits]将“场景:作为一名编辑,我可以翻译文档”标记为非关键。这是一个长期不稳定的“robot”测试。[maurits]
修复了在旧站点上启用翻译且存在内容时渲染翻译菜单时写入get的问题。[datakurre]
修复DX多语言订阅者即使在多语言未安装的情况下也执行的问题 [Asko Soukka]
修复了DX可翻译订阅者在没有可用翻译的情况下引发ValueError的边缘情况 [datakurre]
修复了当内容没有翻译信息时渲染通用链接失败的问题 [datakurre]
5.1.3 (2017-11-25)
新功能
将shortname plone.translatable 设置为行为 plone.app.multilingual.dx.interfaces.IDexterityTranslatable. [jensens]
错误修正
导入兼容Python3 [ale-rt, jensens]
修复了Zope 4中查询变量序列化选择链接的问题 [davisagli]
5.1.2 (2017-08-05)
新功能
完成巴斯克语翻译 [erral]
完成西班牙语翻译 [erral]
5.1.1 (2017-07-20)
错误修正
安全地将字段值转换为unicode [agitator, GerardRodes]
5.1 (2017-07-18)
新功能
重新构建po文件 [erral]
默认将media文件夹重命名为更通用的名称assets,并添加i18nize使其具有本地化感知 [agitator, datakurre]
在查看具有默认页面的文件夹时,翻译菜单显示文件夹和默认页面的所有选项,顺序和标题相同。将babel视图中编辑当前页面的选项与编辑其他翻译的选项合并,使菜单更一致 [datakurre]
翻译菜单在语言独立文件夹的链接中显示语言独立文件夹的标题为“打开${title}文件夹” [datakurre]
翻译菜单不再包括“设置内容语言”菜单项,该菜单项是多余的(但行为不太透明)只是剪切和粘贴到所需语言文件夹下 [datakurre]
错误修正
添加缺失的i18n:translate标签 [erral]
5.0.8 (2017-07-03)
错误修正
修复了语言交替视图#153 [erral]
如果使用babel视图翻译,则通知ObjectTranslatedEvent #277 [tomgross]
修复了在修改翻译视图中删除操作删除了当前页面而不是所选翻译的问题 [datakurre]
5.0.7 (2017-05-31)
错误修正
删除了unittest2依赖 [kakshay21]
5.0.6 (2017-05-09)
错误修正
更新UnauthorizedUser的导入。 [davisagli]
5.0.5 (2017-04-27)
错误修正
删除travis集成,因为plone.app.mutlilingual是plonecore的一部分,应该在那里进行测试。
修复了表单控件被字段覆盖的问题 [agitator]
修复了与改进的相关项小部件一起工作的robot测试 [thet]
5.0.4 (2017-03-26)
新功能
添加了一个新的视图@@tg,用于可翻译内容。它将返回内容的当前翻译组,与plone.app.uuid的@@uuid的行为相匹配,返回内容的UUID。 [datakurre]
5.0.3 (2017-02-12)
新功能
在INavigationRoot项中显示翻译菜单,并在ILanguageRootFolders中隐藏 [erral]
错误修正
删除BrowserViews中的过时__of__调用 [MrTango]
5.0.2 (2017-01-04)
错误修正
为sitemap.xml.gz添加新测试(它目前没有列出任何内容) [djowett]
5.0.1 (2017-01-02)
错误修正
允许在无Archetypes的Plone 5.1中工作。 [jensens]
将unittest2替换为unittest。 [jensens]
5.0 (2016-11-17)
重大变更
如果安装了archetypes.multilingual,则仅安装对Archetypes内容的支持。对于Archetypes支持,有一个新的“archetypes”extras_require,你可以依赖它。 [davisagli]
新功能
将add_translations和remove_translations替换为组合的modify_translations。修改翻译页面提供了现有翻译的概述,并提供连接、断开现有翻译以及为您的内容项创建或删除翻译的操作。 [agitator]
将样式表从旧版捆绑包移动到已登录捆绑包 [agitator]
错误修正
使robot测试更健壮,希望如此。在使用‘等待直到元素可见’之前,首先调用‘等待直到页面包含元素’。第一个只有在元素最初已在页面上时才可靠地工作。如果元素是动态创建的,则需要首先使用‘页面包含’调用,否则有时会得到错误:‘元素未在缓存中找到 - 可能是页面自上次查找以来已更改。’ [maurits]
4.0.4 (2016-09-16)
错误修正
将相关项字段小部件的配置从@@add_translations视图修改为支持Mockup 2.4.0,以便小部件能够导航到超出
边界,并访问其他翻译树。此更改保持了与旧版Mockup或无Mockup设置的一致性。[thet]
4.0.3 (2016-08-15)
错误修正
使用zope.interface装饰器。[gforcada]
4.0.2 (2016-06-12)
错误修正
通过等待页面上的预期文本,修复了不稳定的机器人测试。[maurits]
4.0.1 (2016-06-07)
错误修正
正确的事件订阅者,以便将从一个LRF剪切并粘贴到媒体文件夹的内容在切换到第二种语言时显示在那里。[djowett]
4.0.0 (2016-05-25)
重大变更
不再与低于1.8.2的GenericSetup兼容。[iham]
新功能
在安装时创建语言文件夹。(修复了https://github.com/plone/plone.app.multilingual/issues/214) [iham]
3.0.17 (2016-05-03)
修复
等待select2结果的可见性,而不是时间。[jensens]
在机器人测试中为TinyMCE重叠错误提供一个解决方案,详细信息请见https://github.com/plone/plone.app.multilingual/issues/227。[jensens]
3.0.16 (2016-03-31)
修复
修复了与archetypes内容兼容性问题:生成了错误的URL。[keul, hvelarde]
如果没有设置API密钥,则不显示Google翻译按钮。[djowett]
3.0.15 (2016-03-01)
修复
明确语言无关文件夹的命名。[djowett]
3.0.14 (2016-02-25)
新功能
更新了繁体中文翻译。
修复
为翻译内容映射小部件使用自定义目录词汇,该词汇搜索整个站点的所有内容。[alecm]
更新所有控制面板中的网站设置链接(修复了https://github.com/plone/Products.CMFPlone/issues/1255) [davilima6]
3.0.13 (2015-10-27)
新功能
更新了繁体中文翻译。[l34marr]
修复
修复了意大利语翻译中的错误[ale-rt]
3.0.12 (2015-09-27)
与多语言一起禁用csrf保护。[vangheem]
解决isDefaultPage的弃用警告。[fulv]
3.0.11 (2015-09-20)
修复旧版固定模拟标签页与返回网站设置链接的行为。[sneridagh]
更新法语翻译 [enclope]
3.0.10 (2015-09-15)
修复迁移视图、lp-migration-after和迁移后清理。[pbauer]
修复翻译映射。修复了https://github.com/plone/plone.app.multilingual/issues/175 [pbauer]
3.0.9 (2015-09-14)
向pam-migration添加auth-key。[pbauer]
3.0.8 (2015-09-14)
修复@@relocate-content。[pbauer]
3.0.7 (2015-09-12)
更新了巴斯克语翻译[erral]
3.0.6 (2015-08-20)
由于可能存在棕色袋发布,重新发布。Jenkins对3.0.5提出抱怨。[maurits]
3.0.5 (2015-08-20)
将@@multilingual-selector注册从PloneRoot移动到导航根。这允许在nginx中隐藏语言文件夹并使用不同的域名。[do3cc]
更新繁体中文翻译。[l34marr]
3.0.4 (2015-07-18)
在plone.protect旧内容的情况下进行适配。[bloodbare]
等待模式在机器人框架中测试添加翻译。[bloodbare]
删除多余的“for”。[fulv]
3.0.3 (2015-06-05)
删除CMFDefault依赖项[tomgross]
3.0.2 (2015-05-13)
修复containsobjects字段,已重命名为contains_objects[gforcada]
3.0.1 (2015-05-04)
日语翻译。[terapyon]
更新README.rst中Plone 5的版本信息。[saily]
3.0.0 (2015-03-26)
为Plone 5适配plone.app.multilingual。将ILanguage移动到CMFPlone,仅在浏览器层安装时执行事件,将控制面板集成到z3cform与Plone5。[bloodbare]
2.0.0 (2015-03-24)
添加繁体中文翻译。[l34marr]
2.0a4 (2015-03-04)
删除对zope.app.container和zope.app.initd的依赖[joka]
添加更多常见API函数并对其进行测试。[jensens]
重构dx中的代码位置,将内容捆绑在合理的位置。[jensens]
删除BLACKLIST_IDS,与LIF一起,这是多余的[jensens]
删除LanguageTool补丁,同时也是多余的[jensens]
添加新的bootstrap.py以支持新的参数--setuptools-version。[saily]
在++addtranslation++中修复了语言无关字段,需要plone.z3cform >= 0.8.1 [jensens, agitator]
添加卸载钩子以在停用期间运行卸载配置文件[datakurre]
修复了激活时所有Dexterity类型的行为注册,无需依赖plone.app.contenttypes。[datakurre]
不再对 acl_users, portal_url(都破坏了登录表单)和 portal_catalog 上的 LRF 进行获取阻止。[jensens]
特性:引入一个变量 BLACK_LIST_IDS,用作黑名单对象 ID 的集中位置,不将其视为中性内容或在 LRF 中考虑。它统一了以前杂乱无章的具有相同目标的测试组合。[jensens]
清理:Pep8,utf8-headers,可读性,……,代码分析现在运行。[jensens]
修复了通用链接忽略语言 cookie 的问题。[datakurre]
修复了 Plone 5 兼容性问题。[martior]
将手动文件夹添加到 LRF 迁移视图。[datakurre]
修复了 schema editor 插件,使其不会在 FTI(例如 collective.easyform)之外的 schema 编辑器中中断。[datakurre]
2.0a3 (2014-05-30)
仅在具有翻译权限时在 plone-contentmenu 中显示“翻译成”菜单。[saily]
在语言根文件夹的“编辑”操作中使用“修改门户内容”权限。[saily]
将 devel 移动到 src 文件夹,更新 MANIFEST.in,setup.py,buildout.cfg 和 .gitignore 以适应新的结构。更新了文档。[saily]
为 Plone 5 准备测试。[saily]
2.0a2 (2014-03-27)
修复了备用语言视图小部件。[saily]
修复了测试。在功能测试中不要依赖于可翻译的字符串,翻译可能会更改。[saily]
添加卸载配置文件。[thet]
2.0a1 (2014-03-25)
在迁移脚本的 findContent 方法中,进行更明确的测试以确定内容是否为真实、Dexterity 或 Archetypes 基础的内容对象。[thet]
createdEvent 订阅者在请求免费环境中现在也能正常工作。[jensens]
下载最新的 v1 bootstrap.py。[saily]
修复了 upgrades.py 中的导入问题。[saily]
将代码分析添加到 plone-test-4.x.cfg 和 plone-test-5.x.cfg。[saily]
巨大的 PEP8 和 Flake8 清理。请在提交前运行 bin/code-analysis。应通过 buildout 自动添加 git pre-commit 钩子。[saily]
确保存在 plone.app.controlpanel.Language 权限。[saily]
将 add.py 和 add_translation_form.py 合并到一个文件中。[saily]
将 update_translation_form.py 重命名为 update.py。[saily]
将 remove_translation_form.py 重命名为 remove.py。[saily]
从浏览器目录中删除 five.grok。[saily]
1.2 - 2013-09-24
为使用它自己的层使用机器人测试提供更好的测试设置。[saily]
撤销翻译:显示文件夹的默认页面(它不会显示没有“is_default_page”属性的文件)。[bogdangi]
添加新选项,允许用户在更新具有语言无关字段的对象时绕过权限检查。[saily]
添加新的备用语言视图小部件,见:https://support.google.com/webmasters/answer/189077 [saily]
从 multilingual.css 中删除 Twitter-Bootstrap css 代码,并将样式渲染设置为仅对认证用户。[saily]
删除 Twitter Bootstrap 样式,并仅对认证用户进行样式渲染。[saily]
添加升级步骤以重新导入 css_registry [saily]
1.1 - 2013-06-19
添加翻译:小部件缺失
翻译带有默认页面的文件夹:添加菜单项
添加翻译:显示文件夹的默认页面 [ksuess]
错误修复:如果未允许访问翻译,则 p.a.contentmenu 失败。解决方案:引入受限访问并用于词汇表中的菜单。[jensens]
使用会话变量存储来源以添加 ++add++ 和工厂支持。它保持了旧程序方式,因此可以使用代码创建翻译。[ramon]
扩展 Travis 集成以测试 Plone 4.1、4.2、4.3,并在测试中包含以下依赖项:- plone.multilingual - plone.multilingualbehavior - archetypes.multilingual [saily]
plone.app.contenttypes 在设置中的兼容性 [sneridagh]
添加了法语翻译 [bouchardsyl]
注意过滤掉没有支持语言信息的已翻译内容 [kiorky]
通过检查 _combinedlanguagelist 也添加了对语言中立对象和国家特定语言代码的支持 [agitator]
1.0 - 2013-04-16
从 ITG 使用移至 ITranslationManager 使用 [ramon]
共享文件夹在旧集合上工作 [fgrcon]
共享文件夹在设置中的正确名称和引用 [ramon]
而不是检查 Dexterity,检查 p.multilingualbehavior 是否已安装。如果已安装,则 Dexterity 也已安装 [sneridagh]
修复 Travis 集成,扩展自 plone buildout-cache。 [saily]
清理迁移模板 [erral]
不要假设存在名为 'publish' 的过渡 [erral]
如果没有本地语言信息,则显示语言名称。 [saily]
添加了乌克兰语翻译 [kroman0]
添加到 travis-ci [saily]
如果有超过 X 种翻译,则在 babel 视图中使用下拉菜单而不是按钮 [pysailor]
1.0rc1 - 2013-01-26
改进并完成迁移代码和相关“语言”配置选项卡 [pysailor, sneridagh]
在生产网站上测试迁移代码 [pysailor, erralin, sneridagh]
修复损坏的测试和新测试 [pysailor, erralin, bloodbare, sneridagh]
新的重新设计语言选择器和相关的辅助视图 [erralin, bloodbare]
未翻译视图改进 [erralin, bloodbare]
当翻译不存在时修复了 getClosestDestination [gborelli]
将已弃用的导入更新为与 Plone 4.3 兼容 [saily]
1.0b3 2012-10-04
在 dexterity babel 编辑表单中选中原始语言。 [maurits]
在视图中添加迁移后的动作 [do3cc]
多语言地图 [ramon]
通用链接 [ramon]
解决目录补丁问题 [ramon]
解决语言选择器问题 [sneridagh]
Babel 视图 JavaScript 统一和优化 [ramon]
添加了中立语言文件夹和菜单选项 [ramon]
新测试 [sneridagh]
将模板移动到模板文件夹 [ramon]
更新语言选项 [ramon]
菜单重构 [ramon]
在添加翻译时允许查看所有内容 [ramon]
1.0b2 - 2012-07-08
将语言索引更改为 LinguaPlone 共存的语言 [ramon]
安装时不要重建完整目录 [pbauer]
通过 setuphandler 添加索引而不是 xml 以防止重新安装时清除 [pbauer]
使 babel-view 字段并排对齐 [do3cc]
更新 .po 文件 [gborelli]
添加 rebuild.sh 脚本来简化更新翻译 [gborelli]
添加了意大利语翻译 [gborelli]
在设置期间,如果无法将首页移动到新文件夹,则不会失败。 [maurits]
使它能够覆盖创建根语言文件夹时使用的 portal_type。 [maurits]
1.0b1 - 2012-04-03
添加 Google 翻译服务 AJAX 服务 [ramon]
添加 babel 视图于 AT [sneridagh]
添加 babel 视图于 dexterity [ramon]
添加选项以在文件夹内容视图中不过滤语言 [ramon]
添加到翻译菜单以编辑已翻译的语言 [ramon]
将内容移动到语言文件夹的网站初始设置 [ramon]
0.1a2 - 2011-12-04
改进控制面板 [ramon]
改进语言控制面板网站语言选择器小部件以更易于使用。
在语言控制面板保存设置时为每个配置的网站语言设置根文件夹布局 [ramon, sneridagh]
从 LP 修改 languageselector 视图小部件 [ramon]
再次重新启用并修改 searchResults 补丁 [ramon]
清理包的描述和 paml 的 registerProfile [sneridagh]
0.1a1 - 2011-10-03
初始版本 [ramon, awello, sneridagh]
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
plone_app_multilingual-8.1.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a0e4c00f274d8afd2d05271e064ac1c3c2aa27eb016df85522b308bf8b620a42 |
|
MD5 | d542cb594d650d96eccbc286ef1544a9 |
|
BLAKE2b-256 | ab2791bf3a79171288fd4a3b4136fa5e2a5d14b23ec2f6e4ad20ef4b31d9c0cb |
plone.app.multilingual-8.1.2-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b31802ab5d8c24f7a0c95cd6c9ab2ccbe119fd491282a7108bb418fc1f447804 |
|
MD5 | 97a1144c57e9ad04354c9130b37cf701 |
|
BLAKE2b-256 | 172e3f461ee7492f01b0dd0b0705d517cadac73f260cfe39d08a86e630f18280 |