zelax90 / zf2-language-route
为每个路由添加语言前缀
Requires
- zendframework/zend-eventmanager: ^3.0.1
- zendframework/zend-modulemanager: ^2.7.2
- zendframework/zend-mvc: ^2.7.10 || ^3.0.1
- zendframework/zend-mvc-i18n: ^1.0
- zendframework/zend-servicemanager: ^3.1
Requires (Dev)
- zf-commons/zfc-user: 2.x-dev
Suggests
- zf-commons/zfc-user: User authentication. You can use the provided interface to store a perosnal locale inside the user entity
This package is auto-updated.
Last update: 2024-09-20 00:52:10 UTC
README
模块,该模块将语言添加到每个路由的开头,并在MvcTranslator中设置所选语言。
安装
LanguageRoute的安装使用composer。有关composer文档,请参阅 getcomposer.org。
composer require xelax90/zf2-language-route
然后将ZF2LanguageRoute
添加到您的config/application.config.php
要显示语言切换,您需要usrz/bootstrap-languages包。将languages.css添加到样式表中,并将languages.png放在同一文件夹中。
配置
您可以为每种语言配置属于哪个前缀。为此,将config/zf2-language-route.global.php复制到您的config/autoload文件夹中,并编辑数组。它应该与MvcTranslator配置的顺序相同,以便正确猜测默认语言。
您还可以更改用于在无RouteMatch实例的页面(如404)上切换语言的默认路由名称。
用法
安装后,路由器将自动在组装的URL之前添加语言。它还将把'locale'参数注入到任何RouteMatch实例中。您可以在任何Controller中使用以下示例代码读取它
$locale = $this->getEvent()->getRouteMatch()->getParam('locale');
路由器还会检查在组装路由时是否提供了locale参数。使用它来强制特定的语言前缀
$this->url()->fromRoute('home', ['locale' => 'de_DE']); // will point to /de $this->url()->fromRoute('home', ['locale' => 'en_US']); // will point to /en
语言切换
languageSwitch ViewHelper可以渲染一个简单的下拉列表来更改当前语言。它尝试保持在同一页面上。如果生成404错误,它将链接到home
路由。您可以通过配置来调整home路由。示例用法
echo $this->languageSwitch($renderMode, $currentLocale, $options);
所有参数都是可选的。
该助手有四种不同的渲染模式
LanguageSwitch::RENDER_TYPE_LIST_ITEM
(默认):Bootstrap导航下拉列表项LanguageSwitch::RENDER_TYPE_NAVBAR
:完整的Bootstrap navbar列表,其中包含下拉列表项LanguageSwitch::RENDER_TYPE_DIV
:包含每个选项的DIV容器LanguageSwitch::RENDER_TYPE_SELECT
:选择表单元素LanguageSwitch::RENDER_TYPE_PARTIAL
:自定义部分ViewScript
您可以将选项作为数组传递以修改输出类和其它事物。请检查实现以获取有关选项的详细信息。