lochmueller/language-detection

适用于TYPO3的现代语言检测中间件。基于PSR-7、PSR-14 & PSR-15。

4.0.3 2024-01-17 09:19 UTC

README

元数据: start with why Latest Stable Version Total Downloads License Crowdin Average time to resolve an issue Percentage of issues still open

兼容性: TYPO3 TYPO3 TYPO3

质量: Test codecov Scrutinizer Code Quality PHPStan

支持: 捐赠 欢迎贡献 种植树木

目录

  1. 为什么?
  2. 安装
  3. 配置
  4. 事件结构
    1. CheckLanguageDetectionEvent
    2. DetectUserLanguagesEvent
    3. NegotiateSiteLanguageEvent
    4. BuildResponseEvent
  5. 故障排除
  6. 开发
  7. 贡献
  8. 许可

为什么?

语言检测应该简单且易于集成,在开发中功能强大!TYPO3 核心不通过客户端信息处理语言检测。EXT:languag_detection 使用 PSR-15/PSR-7 中间件/请求(TYPO3 文档)通过 PSR-14 事件(TYPO3 文档)处理语言检测逻辑。非常灵活!试试看,看看语言检测的未来!

安装

composer require lochmueller/language-detection

配置

使用网站配置模块配置语言检测。只需启用它,它就会工作 :) 网站配置有几个配置选项来处理控制事件。以下截图显示了检测配置的选项。

Configuration

事件结构

有四个核心 PSR-14 事件控制语言检测。附带的列表解释了不同的事件和默认监听器。事件按执行顺序排列。

请求流程

CheckLanguageDetectionEvent

检查是否由扩展执行语言检测。您可以为此事件注册监听器,并在事件对象上调用 "disableLanguageDetection" 来禁用语言检测。

默认监听器

DetectUserLanguagesEvent

此事件收集用户信息以获取用户语言。您可以注册自己的检测并通过 "getUserLanguages" 和 "setUserLanguages" 操作数据。

默认监听器

如果使用 "IpLanguage" 监听器,请务必考虑数据隐私!

NegotiateSiteLanguageEvent

此事件计算与用户最佳匹配的页面语言。如果您构建自己的监听器,请使用 "setSelectedLanguage" 事件。如果已选择语言,则默认监听器将被跳过。

默认监听器

BuildResponseEvent

最后一个事件构建中间件响应。您可以覆盖此步骤。您必须使用 "setResponse" 设置响应。

默认监听器

故障排除

在检测过程中缺少或错误地存在语言。为什么?

您是否在隐身模式下检查?浏览器在隐身模式下不会发送所有语言,因此可能会出现“错误结果”。请详细检查 TYPO3 的请求头。否则,也许 DefaultNegotiation 没有为您所需的“最佳匹配语言”选择过程处理?

为什么子页面上的重定向不起作用?

中间件位于中间件堆栈的早期。没有链接和翻译(甚至页面UID)的概念。此外,建议不要在子页面上进行重定向。用户首先通过书签或搜索引擎查找子页面。在两种情况下,用户已经获得了正确的语言。我建议使用hreflang标签,以便搜索引擎获取内容的正确语言。https://developers.google.com/search/docs/advanced/crawling/localized-versions

开发

运行所有代码规范

docker run --rm -it --volume $(pwd):/app prooph/composer:8.0 -d /app code:all

使用PHP 8.0执行测试

docker run --rm -it --volume $(pwd):/app prooph/composer:8.0 -d /app test:unit

带有覆盖率

docker run --rm -it --volume $(pwd):/app cicnavi/dap:80 /app/.Build/bin/phpunit -c /app/phpunit.xml --coverage-text --testdox --coverage-html=/app/var/phpunit

运行突变测试

docker run --rm -it --workdir=/app/ --volume $(pwd):/app cicnavi/dap:80 /app/.Build/bin/infection -c /app/phpunit.xml

贡献

感谢大家为项目做出的巨大贡献!

GitHub Contributors Image

许可

此包是Treeware。如果您在生产中使用它,那么我们要求您为世界购买一棵树以感谢我们的工作。通过为Treeware森林做出贡献,您将为当地家庭创造就业机会并恢复野生动物栖息地。