sitegeist / translatelabels
此扩展通过允许后端用户编辑的翻译记录扩展了TYPO3的翻译处理。这样,后端用户可以在不访问语言文件的情况下翻译标签。
Requires
- typo3/cms-adminpanel: ^11.5 || ^10.4
- typo3/cms-core: ^11.5 || ^10.4
Requires (Dev)
- typo3/testing-framework: ^6.10
Replaces
- typo3-ter/translatelabels: 2.3.9
- dev-master
- 2.3.9
- 2.3.8
- 2.3.7
- 2.3.6
- 2.3.5
- 2.3.4
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.1
- 2.2.0
- 2.1.0
- 2.0.14
- 2.0.13
- 2.0.12
- 2.0.11
- 2.0.10
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.1
- 1.0.0
- 1.0.0-beta
- dev-bugfix/86353/fixItemsTranslations
- dev-feature/00000/fixExtTables
- dev-upgradePhp8
- dev-dependabot/composer/typo3/cms-core-10.4.36
- dev-dependabot/composer/typo3/html-sanitizer-2.1.1
- dev-dependabot/composer/guzzlehttp/guzzle-7.5.0
- dev-release/2.1.0
- dev-bugfix/2.0.13/versionConstraints
- dev-task/24/addExtensionKey
- dev-release/2.0.12
- dev-release/2.0.11
- dev-release/2.0.10
- dev-release/1.1.6
- dev-release/2.0.9
- dev-bugfix/newlines
- dev-feature/v10/formOptions
- dev-release/1.1.5
- dev-release/1.1.4
- dev-release/2.0.6
- dev-release/1.1.3
- dev-release/1.1.2
- dev-release/2.0.4
- dev-release/1.1.1
- dev-typo3-10.1
- dev-release/1.1.0
- dev-release/1.0.0
This package is auto-updated.
Last update: 2024-09-07 16:44:10 UTC
README
目的
此扩展通过允许后端用户编辑的翻译记录扩展了TYPO3的翻译处理。这样,后端用户可以在不访问语言文件的情况下翻译标签。
此扩展还可以用于翻译使用表单编辑器创建的表单。
在前端,标签下面有红色下划线。鼠标悬停时显示一个包含其名称的工具提示。单击标签名称将在管理面板中打开新的翻译模块以编辑标签的翻译。
此外,您还可以在管理面板的新模块中找到一个第二个选项卡,它显示了当前页面上找到的所有标签,并列出了相应的语言文件,以及最终存在的覆盖或翻译记录。
这个视图对开发者特别有趣。
作者与赞助商
- Alexander Bohndorf - bohndorf@sitegeist.de
此包的开发和公共发布得到了我的雇主https://www.sitegeist.de的大力赞助。
屏幕截图
前端视图
管理面板中的翻译模块,支持行内编辑
管理面板中的翻译模块,显示标签继承视图
支持的TYPO3版本
- 此扩展的1.x版本支持TYPO3 9.5。
- 此扩展的2.0版本支持TYPO3 10。
- 此扩展的2.1版本支持TYPO3 11。
如何安装
-
安装扩展并在扩展管理器或通过composer激活它
- 对于TYPO3 9.5
composer require sitegeist/translatelabels:^1
- 从TYPO3 10.0开始
composer require sitegeist/translatelabels
- 对于TYPO3 9.5
-
然后转到管理面板扩展管理器,并在“已安装扩展”中加载扩展。
-
使用BE模块“维护/分析数据库结构”更新您的数据库。
-
在TYPO3后端创建一个sysfolder来存储翻译的标签。
-
为您的网站每个网站语言创建此sysfolder的本地化。
-
将扩展模板
translate_labels
包含到您的根TYPOSCRIPT模板中。
如何配置
将以下TYPOSCRIPT添加到您的模板中
plugin.tx_translatelabels.settings.storagePid = 4711
将4711
替换为您为翻译标签创建的sysfolder的uid。
请注意,此设置必须为使用此扩展的所有页面以及包含翻译记录的所有sysfolder定义。
TYPO3版本9.5和10.1所需的TYPO3补丁
由于尚未修复的TYPO3 9.5.9和TYPO3 10.1中的错误https://forge.typo3.org/issues/87038,您目前必须对您的TYPO3源代码应用补丁。
使用问题附件中附带的您TYPO3版本的最新补丁集。
或者,您可以使用此扩展中包含的补丁以方便起见。
没有此补丁,TYPO3无法创建与默认语言中相关记录相同的键的标签记录的翻译。
变更日志
如何激活BE用户
- 启用BE用户的admin面板。 1.1 在User TSconfig中设置
admPanel.enable.all = 1
或admPanel.enable.translatelabels = 1
1.2 在TypoScript模板中设置config.admPanel = 1
- 登录BE,然后打开FE。
- 点击管理面板右下角的“设置”。
- 在设置中激活“显示翻译标签”,然后点击“更新设置”。
- 之后,您将在前端看到所有标签下方带有红色虚线,并显示包含语言文件链接和标签键的工具提示。
- 此外,您将在“翻译标签”选项卡中看到当前页面在管理面板中使用的所有标签列表。
翻译标签的访问权限
允许创建和编辑翻译的后端用户需要具备...
- 读取和写入翻译sys文件夹中记录的访问权限(在BE模块
访问
中设置) - BE用户或组对表
Translation
的列表和修改记录的权限(在BE模块Backend-User
中设置) - 访问默认语言以及他们要翻译标签的所有语言的权限。(在BE模块
Backend-User
中设置)
内部实现
该扩展覆盖了f:translate fluid视图助手,并为每个标签渲染一个标签LLL:("<translation>","<key>")
(只有当您以BE用户身份登录时,否则标签将按常规渲染)。
在完成前端渲染的所有处理后,LLL:标签将转换为HTML标记,以在每个标签下方显示红色虚线,并显示包含语言文件和标签键的工具提示。这也仅在以BE用户身份登录时发生。
表单框架
此扩展可用于翻译使用表单编辑器创建的表单,包括验证消息、标签、占位符、描述等。因此,此扩展覆盖了表单框架的以下两个视图助手
- formvh:translateElementProperty
- formvh:translateElementError
表单框架使用特殊链式翻译来处理元素。有关更多信息,请参阅:https://docs.typo3.org/c/typo3/cms-form/9.5/en-us/Concepts/FrontendRendering/Index.html#translation
此扩展实现了一种简化的覆盖这些翻译的方法:您只能使用路径<formDefinitionIdentifier>.element.<elementIdentifier>.properties.<propertyName>
覆盖元素的特定翻译。
示例
- 表单字段的标签翻译
registerForm.element.first-name.properties.label
- 表单字段描述的翻译
registerForm.element.first-name.properties.description
- 单选按钮中值
value1
的选项翻译registerForm.element.radiobutton-1.properties.options.value1
- 多选复选框中值
Second
的选项翻译register.element.multicheckbox-1.properties.options.Second
- 占位符属性的翻译
registerForm.element.text-1.properties.fluidAdditionalAttributes.placeholder
如果数据库中定义了元素的翻译,则此翻译将始终优先于在语言文件中定义的其他翻译,无论表单框架中定义的链式优先级如何。
此行为在未来可能会改变。
表单框架中的验证消息
如果表单编辑器中定义了自定义错误消息,则仅使用这些消息进行所有语言的翻译,不会发生翻译链。这是表单框架的默认行为。
使用此扩展可以覆盖这些静态值。
示例
registerForm.validation.error.text-2.1428504122
缓存
此扩展完全兼容TYPO3缓存机制。
如果管理面板中激活了翻译标签,则禁用缓存。这是因为否则显示翻译标签的标记将被缓存,并以内容的形式提供给所有前端用户,而不仅仅是登录为后端用户的前端用户。
旧的pi_base插件
由于API限制,无法扩展基于AbstractPlugin(即pi_base插件)的旧语言处理插件。相反,每个继承类都必须通过xclass直接扩展。这种扩展在插件fe_login的Classes/Plugin/FrontendLoginController.php
中提供了一个示例。
您可以使用以下代码在ext_localconf.php中覆盖其他pi_base插件:
$GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects']['TYPO3\\CMS\\Felogin\\Controller\\FrontendLoginController'] = array( 'className' => 'Sitegeist\\Translatelabels\\Plugin\\FrontendLoginController' );
覆盖语言文件的示例
ext_localconf.php
// Examples for overriding language files $overrideLanguageFiles = [ 'default' => [ 'EXT:felogin/Resources/Private/Language/locallang.xlf' => 'felogin/felogin.xlf' ], 'de' => [ 'EXT:felogin/Resources/Private/Language/locallang.xlf' => 'felogin/de.felogin.xlf' ] ]; foreach ($overrideLanguageFiles as $language => $languageFiles) { foreach ($languageFiles as $originalLanguageFile => $overrideLanguageFile) { $GLOBALS['TYPO3_CONF_VARS']['SYS']['locallangXMLOverride'][$language][$originalLanguageFile][] = 'EXT:my_extension/Resources/Private/Language/Overrides/' . $overrideLanguageFile; } }
请注意,应将my_extension
替换为您的扩展密钥。
运行单元测试
$ cd typo3conf/ext/translatelabels
$ composer install
$ vendor/bin/phpunit -c vendor/typo3/testing-framework/Resources/Core/Build/UnitTests.xml Tests/Unit/Renderer/FrontendRendererTest.php