netzmacht / contao-i18n
这个库提供了一个用于灵活多语言网站的工具集。
Requires
- php: ^8.1
- contao/core-bundle: ^4.13
- doctrine/dbal: ^3.3
- hofff/contao-root-relations: ^3.0
- menatwork/contao-multicolumnwizard-bundle: ^3.5
- netzmacht/contao-toolkit: ^3.8
- psr/log: ^1.0 || ^2.0 || ^3.0
- symfony/asset: ^5.4
- symfony/config: ^5.4
- symfony/dependency-injection: ^5.4
- symfony/http-foundation: ^5.4
- symfony/http-kernel: ^5.4
- symfony/translation-contracts: ^2.3
- terminal42/contao-changelanguage: ^3.0
Requires (Dev)
- contao/calendar-bundle: ^4.13
- contao/faq-bundle: ^4.13
- contao/manager-plugin: ^2.0
- contao/news-bundle: ^4.13
- doctrine/coding-standard: ^11.0
- phpcq/runner-bootstrap: ^1.0@dev
This package is auto-updated.
Last update: 2024-09-20 16:05:51 UTC
README
此扩展提供了一个灵活的方式,用于多语言网站,其中主语言的部分应该被重新用于翻译的页面。
安装
您可以使用Composer安装此扩展。
$ php composer.phar require netzmacht/contao-i18n:^3.0
要求
- PHP
^8.1
- Contao
4.12
- 使用 terminal42/contao-changelanguage
功能
语言感知重定向
仓库的主要思想是您想在翻译中使用主页面上的模块或内容。如果您这样做,大多数链接或重定向都会回到主语言。
这就是此扩展如何介入的地方。它检测到对另一个语言树的页面的引用。如果是这种情况,它会尝试找到翻译并操作目标页面以指向翻译。
它适用于所有页面引用。无论您在表单或模块中是否有跳转至。但您仍然保持控制。您可以通过在主语言页面中禁用它来禁用此行为。此外,更改语言模块被列入黑名单,因此您仍然可以链接到其他语言。
- 像往常一样使用changelanguage连接页面。
- 将重定向页面设置为备用语言。
- 如果您想禁用“页面翻译”,您可以在页面设置中进行配置。
因此,您只需定义一次语言关系!并且您保持对是否需要语言重定向的控制。
不同语言中的相同页面
有时您必须翻译您的网站,但某些页面保持不变。如果您在语言树中使用不同的页面别名,备用页面不会被加载。
“I18n Regular页面”旨在解决此问题。它简单地加载备用页面的所有内容。因此,您可以使用语言感知别名,同时使用相同的内容而不重复。
此外,它还保留了语言。这意味着Contao使用页面设置中定义的语言。这使得您可以使用插入标记来翻译内容。
不同语言中的相同新闻、事件和常见问题解答
如果您想在不同的语言中重用新闻、事件和常见问题解答,这是支持的。您只需在翻译树中将I18n Regular页面
用作阅读页面。此扩展会自动为您创建搜索页面条目和网站地图条目。
已知限制:目前rss源不可翻译。
翻译插入标记
上述两个功能允许您减少在无差异时模块或页面的愚蠢重复。但有时某些标签也需要翻译。
使用{{translate::*}}
插入标记或甚至其快捷方式{{t::*}}
。
支持以下语法
{{t::path.to.translation}}
尝试从页面_ALIAS域名获取翻译。如果没有翻译,则回退到网站域名。如果页面类型是i18n页面类型,则使用基本页面的别名。
换句话说,您必须创建一个page_ALIAS.php
翻译文件。如果您有网站范围的翻译,请使用website.php
语言文件。
如果没有提供页面别名,则使用页面ID。文件夹别名会被转义为下划线。
{{t::domain:path.to.translation}}
从自定义域名进行翻译。
注意:点符号语法用于语言文件的数组结构。注意:支持在翻译字符串中使用嵌套插入标签。
导航模块
此扩展提供了两个导航模块,它们更进一步。它们不仅替换URL,而且替换整个页面。因此,即使您在导航模块中设置了引用页面或使用单独的导航,您也会得到一个翻译后的导航模块。
配置
默认情况下,contao-i18n不会删除contao i18n常规页面中的任何文章。如果它们没有作为页面连接以覆盖其他页面,则简单地忽略。然而,您可以启用清理。如果启用清理,则删除所有未配置为文章覆盖的文章。
# app/config/config.yml netzmacht_contao_i18n: article_cleanup: true
开发
此存储库包含此扩展的本地测试和开发环境的ddev配置。ddev。它还提供了数据库的快照。因此,您可以轻松设置自己的本地实例。有关ddev的通用用法,请参阅ddev文档。
以下凭据被使用
后端用户
- 用户名:
admin
- 密码:
adminuser
安装工具
- 密码:
adminuser