PHPackages                             xelax90/zf2-language-route - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. xelax90/zf2-language-route

ActiveLibrary

xelax90/zf2-language-route
==========================

Adds language prefix to every route

1.0(9y ago)05882GPLv2PHP

Since Nov 7Pushed 5y ago1 watchersCompare

[ Source](https://github.com/xelax90/zf2-language-route)[ Packagist](https://packagist.org/packages/xelax90/zf2-language-route)[ RSS](/packages/xelax90-zf2-language-route/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)DependenciesVersions (2)Used By (0)

Language Rotue for Zend Framework 2 and 3
=========================================

[](#language-rotue-for-zend-framework-2-and-3)

Modue that adds a language to the beginning of every route and sets the selected language in the MvcTranslator.

Installation
------------

[](#installation)

Installation of LanguageRoute uses composer. For composer documentation, please refer to [getcomposer.org](http://getcomposer.org/).

```
composer require xelax90/zf2-language-route
```

Then add `ZF2LanguageRoute` to your `config/application.config.php`

To display the language switch you will need the [usrz/bootstrap-languages](https://github.com/usrz/bootstrap-languages) package. Add the languages.css to your stylesheets and place the languages.png in the same folder.

Configuration
-------------

[](#configuration)

You can configure which prefix belongs to which language. For this, copy the config/zf2-language-route.global.php into your config/autoload folder and edit the array. It should have the same order as your MvcTranslator configuration to correctly guess the default language.

You can also change the default route name that is used to switched the language on a page with no RouteMatch instance (like 404).

Usage
-----

[](#usage)

After installation the router will automatically add the language before any assembled URL. It will also inject the 'locale' parameter into any RouteMatch instance. To read it you can use the following example code inside any Controller

```
$locale = $this->getEvent()->getRouteMatch()->getParam('locale');
```

The router will also check if the locale parameter is provided when assembling a route. Use it to force a specific language prefix:

```
$this->url()->fromRoute('home', ['locale' => 'de_DE']); // will point to /de
$this->url()->fromRoute('home', ['locale' => 'en_US']); // will point to /en
```

### Language Switch

[](#language-switch)

The languageSwitch ViewHelper is able to render a simple dropdown to change the current language. It tries to stay on the same page. If a 404 error is generated, it will link to the `home` route. You can adjust the home route via configuration. Sample usage:

```
echo $this->languageSwitch($renderMode, $currentLocale, $options);
```

All arguments are optional.

The helper has four different rendering modes:

- `LanguageSwitch::RENDER_TYPE_LIST_ITEM` (default): Bootstrap navigation dropdown list item
- `LanguageSwitch::RENDER_TYPE_NAVBAR`: Full Bootstrap navbar list with dropdown list item inside
- `LanguageSwitch::RENDER_TYPE_DIV`: DIV container with div elements for each option
- `LanguageSwitch::RENDER_TYPE_SELECT`: Select form element
- `LanguageSwitch::RENDER_TYPE_PARTIAL`: Custom partial ViewScript

You can pass options as array to modify classes output classes and other things. Please check the implementation for details about options.

###  Health Score

29

—

LowBetter than 60% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity63

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

3473d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1559538?v=4)[xelax90](/maintainers/xelax90)[@xelax90](https://github.com/xelax90)

---

Top Contributors

[![xelax90](https://avatars.githubusercontent.com/u/1559538?v=4)](https://github.com/xelax90 "xelax90 (8 commits)")

### Embed Badge

![Health badge](/badges/xelax90-zf2-language-route/health.svg)

```
[![Health](https://phpackages.com/badges/xelax90-zf2-language-route/health.svg)](https://phpackages.com/packages/xelax90-zf2-language-route)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
