zelax90/zf2-language-route

为每个路由添加语言前缀

1.0 2016-11-07 13:16 UTC

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

您可以将选项作为数组传递以修改输出类和其它事物。请检查实现以获取有关选项的详细信息。