PHPackages                             remmel/i18n-routing-bundle - 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. [Localization &amp; i18n](/categories/localization)
4. /
5. remmel/i18n-routing-bundle

ActiveSymfony-bundle[Localization &amp; i18n](/categories/localization)

remmel/i18n-routing-bundle
==========================

This bundle allows you to create i18n routes.

5.0.1(5y ago)16651Apache2PHPPHP ^7.1

Since Sep 20Pushed 4y ago1 watchersCompare

[ Source](https://github.com/remmel/i18n-routing-bundle)[ Packagist](https://packagist.org/packages/remmel/i18n-routing-bundle)[ Docs](http://jmsyst.com/bundles/JMSI18nRoutingBundle)[ RSS](/packages/remmel-i18n-routing-bundle/feed)WikiDiscussions master Synced today

READMEChangelog (1)Dependencies (4)Versions (18)Used By (0)

[![Build Status](https://camo.githubusercontent.com/d2349965dd5e605170251a84f9e6b00751aa65824f7fc1c3f3f99a9f968c68b0/68747470733a2f2f7472617669732d63692e636f6d2f72656d6d656c2f6931386e2d726f7574696e672d62756e646c652e7376673f6272616e63683d6d6173746572)](https://travis-ci.com/remmel/i18n-routing-bundle)

Full prefix per locale
======================

[](#full-prefix-per-locale)

That bundle allows you to configure host+prefix per locale.

For the following websites:

- [www.website.com](http://www.website.com) (english)
- [www.website.de](http://www.website.de) (german)
- [www.website.be/fr/](http://www.website.be/fr/) (french of Belgium)
- [www.website.be/nl/](http://www.website.be/nl/) (dutch of Belgium)

Minimum configuration
---------------------

[](#minimum-configuration)

The configuration will be:

```
# config/packages/jms_i18n_routing.yaml
jms_i18n_routing:
    locales:
        en: //www.website.com
        de: //www.website.de
        fr_BE: //www.website.be/fr
        nl_BE: //www.website.be/nl
```

Translation configuration
-------------------------

[](#translation-configuration)

To translate the route named "contact\_page" in german :

```
# translations/routes.de.yml
contact_page: /kontakt
```

Thus the route named *contact\_page* will be used when calling:

- [www.website.com/contact](http://www.website.com/contact)
- [www.website.de/kontakt](http://www.website.de/kontakt)

Optional configuration
----------------------

[](#optional-configuration)

To disable i18n feature for specific route: `@Route("/api", options={"i18n"=false})`or

```
# app/config/routing.yaml
apiendpoint:
    ...
    options: { i18n: false }
```

To enable the routes only for a subset of locales: `@Route("/about", options={"i18n_locales"={"en", "de"}})`Thoses locales must be configured in jms\_i18n\_routing.locales

Installation
============

[](#installation)

Download the Bundle
-------------------

[](#download-the-bundle)

`composer req remmel/i18n-routing-bundle`

Enable the Bundle - For applications that don't use Symfony Flex :
------------------------------------------------------------------

[](#enable-the-bundle---for-applications-that-dont-use-symfony-flex-)

```
// config/bundles.php

return [
    // ...
    JMS\I18nRoutingBundle\JMSI18nRoutingBundle::class => ['all' => true],
];
```

Create configuration
--------------------

[](#create-configuration)

Simple configuration with 2 "folders" :

```
# config/packages/jms_i18n_routing.yaml
jms_i18n_routing:
    locales:
        en: /eng
        de: /deu
```

When updating that config, it might be needed to clear cache: `bin/console cache:clear`
Check that configuration is fine running `bin/console debug:router`

Symfony demo app
================

[](#symfony-demo-app)

[Full Symfony application example](https://github.com/remmel/i18n-routing-demo)

JMSI18nRoutingBundle vs Symfony i18n routing vs that extension
==============================================================

[](#jmsi18nroutingbundle-vs-symfony-i18n-routing-vs-that-extension)

JMSI18nRoutingBundle
--------------------

[](#jmsi18nroutingbundle)

That code is based on [JMSI18nRoutingBundle](https://github.com/schmittjoh/JMSI18nRoutingBundle).
That fork has been simplified to only keep the code related to the prefix/host per locale.

Symfony
-------

[](#symfony)

Symfony 4.1 now handle the [translation of route and the prefix](https://symfony.com/blog/new-in-symfony-4-1-internationalized-routing). Symfony 5.1 now handle the [different host per locale](https://symfony.com/blog/new-in-symfony-5-1-different-hosts-per-locale). Thus, that extension is usefull if you want to externalize route translations (eg in routes.xx.yml).
That bundle will be useless when that [feature will be implemented](https://github.com/symfony/symfony/issues/30617) and translations externalized in routes.??.yml files.

###  Health Score

33

—

LowBetter than 75% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community20

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

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

Every ~177 days

Recently: every ~192 days

Total

17

Last Release

2141d ago

Major Versions

1.1.1 → 2.0.02015-12-01

2.0.1 → v3.0.02017-12-03

2.0.2 → 3.0.22017-12-06

2.0.x-dev → 4.0.02019-12-09

4.0.1 → 5.0.02020-02-23

PHP version history (2 changes)2.0.1PHP &gt;=5.3.9

v3.0.0PHP ^7.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/deee78e2b86c4bc77e73a8e7234b47101c5e48abbfa0e7589c84ed7231fccdd0?d=identicon)[remmel](/maintainers/remmel)

---

Top Contributors

[![schmittjoh](https://avatars.githubusercontent.com/u/197017?v=4)](https://github.com/schmittjoh "schmittjoh (63 commits)")[![acasademont](https://avatars.githubusercontent.com/u/825021?v=4)](https://github.com/acasademont "acasademont (20 commits)")[![remmel](https://avatars.githubusercontent.com/u/937836?v=4)](https://github.com/remmel "remmel (20 commits)")[![kbond](https://avatars.githubusercontent.com/u/127811?v=4)](https://github.com/kbond "kbond (4 commits)")[![Seldaek](https://avatars.githubusercontent.com/u/183678?v=4)](https://github.com/Seldaek "Seldaek (3 commits)")[![gimler](https://avatars.githubusercontent.com/u/200904?v=4)](https://github.com/gimler "gimler (3 commits)")[![jpierront](https://avatars.githubusercontent.com/u/1228441?v=4)](https://github.com/jpierront "jpierront (2 commits)")[![cmfcmf](https://avatars.githubusercontent.com/u/2145092?v=4)](https://github.com/cmfcmf "cmfcmf (2 commits)")[![jonathaningram](https://avatars.githubusercontent.com/u/626664?v=4)](https://github.com/jonathaningram "jonathaningram (1 commits)")[![lunetics](https://avatars.githubusercontent.com/u/149752?v=4)](https://github.com/lunetics "lunetics (1 commits)")[![Nyholm](https://avatars.githubusercontent.com/u/1275206?v=4)](https://github.com/Nyholm "Nyholm (1 commits)")[![sroze](https://avatars.githubusercontent.com/u/804625?v=4)](https://github.com/sroze "sroze (1 commits)")[![tricki](https://avatars.githubusercontent.com/u/523154?v=4)](https://github.com/tricki "tricki (1 commits)")[![XWB](https://avatars.githubusercontent.com/u/1032281?v=4)](https://github.com/XWB "XWB (1 commits)")[![alcalyn](https://avatars.githubusercontent.com/u/1588144?v=4)](https://github.com/alcalyn "alcalyn (1 commits)")[![analogic](https://avatars.githubusercontent.com/u/934254?v=4)](https://github.com/analogic "analogic (1 commits)")[![asm89](https://avatars.githubusercontent.com/u/657357?v=4)](https://github.com/asm89 "asm89 (1 commits)")[![cdfre](https://avatars.githubusercontent.com/u/1069129?v=4)](https://github.com/cdfre "cdfre (1 commits)")[![deguif](https://avatars.githubusercontent.com/u/993399?v=4)](https://github.com/deguif "deguif (1 commits)")[![frosas](https://avatars.githubusercontent.com/u/50098?v=4)](https://github.com/frosas "frosas (1 commits)")

---

Tags

translationroutingmultilanguage

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/remmel-i18n-routing-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/remmel-i18n-routing-bundle/health.svg)](https://phpackages.com/packages/remmel-i18n-routing-bundle)
```

###  Alternatives

[jms/i18n-routing-bundle

This bundle allows you to create i18n routes.

3635.3M17](/packages/jms-i18n-routing-bundle)[jms/translation-bundle

Puts the Symfony Translation Component on steroids

42510.8M63](/packages/jms-translation-bundle)[lexik/translation-bundle

This bundle allows to import translation files content into the database and provide a GUI to edit translations.

4362.7M19](/packages/lexik-translation-bundle)[codezero/laravel-localized-routes

A convenient way to set up, manage and use localized routes in a Laravel app.

543638.1k4](/packages/codezero-laravel-localized-routes)[inpsyde/multilingual-press

Simply THE multisite-based free open source plugin for your multilingual websites.

2414.0k1](/packages/inpsyde-multilingual-press)[instaclick/translation-editor-bundle

Web editor UI to manage Symfony2 translations (Symfony2 bundle)

2019.5k](/packages/instaclick-translation-editor-bundle)

PHPackages © 2026

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