Skip to content
Translate your Symfony website easily.
Branch: develop
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Symfony Translate Bundle

WeglotSlack Latest Stable Version Maintainability License


Seamless integration of Weglot into your Symfony project.


  • PHP version 5.5 and later
  • Weglot API Key, starting at free level


You can install the library via Composer. Run the following command:

composer require weglot/translate-bundle

When you require the bundle with symfony/flex (available for symfony/symfony:^4.0) it should ask you if you wanna execute a recipe, tell yes. Like that it will make bundle registration in config/bundles.php & default config creation in config/packages/weglot_translate.yaml.

To use the library, use Composer's autoload:

require_once __DIR__. '/vendor/autoload.php';

Getting Started

Bundle Register

Symfony 4

Add Weglot bundle in the config/bundles.php:

return [
    Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
    // ... Other bundles ...
    Weglot\TranslateBundle\WeglotTranslateBundle::class => ['all' => true],

Symfony 3 & 2

Add Weglot bundle to app/AppKernel.php file:

$bundles = array(
    new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
    // ... Other bundles ...
    new Weglot\TranslateBundle\WeglotTranslateBundle(),

Quick configuration

For Symfony 4, create configuration file under config/packages/weglot_translate.yaml and add following content. For Symfony 3 & 2, add following content to your app/config/config.yaml.

    api_key: '%env(WG_API_KEY)%'
    original_language: 'en'
    cache: true
        - 'fr'
        - 'de'

This is the default configuration file, if you want more default, check next part.


As already said, depending on Symfony version, we've different configuration file paths:

  • Symfony 4: config/packages/weglot_translate.yaml
  • Symfony 3 & 2: app/config/config.yaml

There is a full configuration file:

  api_key: '%env(WG_API_KEY)%'
  original_language: 'en'
  cache: false
    - 'fr'
    - 'de'
    - '.material-icons'

This is an example of configuration, enter your own API key, your original language and destination languages that you want.

  • api_key: is your personal API key. You can get an API Key by signing up on Weglot.
  • original_language: original language is the language of your website before translation.
  • destination_languages: are the languages that you want your website to be translated into.
  • cache: if you wanna use cache or not. It's not a required field and set as false by default. Look at Caching part for more details.

There is also a non-required parameters:

  • exclude_blocks: You can list here all blocks you don't want to be translated. In this example, we won't translate all DOM tags with "material-icons" class.

Twig extensions

Hreflang links

Hreflang links are a way to describe your website and to tell webcrawlers (such as search engines) if this page is available in other languages. More details on Google post about hreflang:

You can add them through the Twig function: weglot_hreflang_render

Just put the function at the end of your <head> tag:


        {{ weglot_hreflang_render() }}

Language button

You can add a language button if you're using Twig with function: weglot_translate_render

Two layouts exists:

<!-- first layout -->
{{ weglot_translate_render(1) }}

<!-- second layout -->
{{ weglot_translate_render(2) }}

Language code

Simple filter to convert ISO 639-1 code to full language name. It can takes one boolean parameter that allow you to choose having english name or original language name.

Here is some examples:

<!-- Will return english name for given code, here: "Bulgarian" -->
{{ 'bg' | language }}

<!-- Will return original name for given code, here: "български" -->
{{ 'bg' | language(false) }}


We implemented usage of cache pool service for both Symfony 4 and Symfony 3 (symfony/cache bundle was released with Symfony 3, so there is no compatibility for Symfony 2).

If you wanna use cache, just add cache: true to this bundle configuration. It will use a file-based cache through Symfony cache.system service.

To clear the cache, you just have to use the usual pool clear command:

$ php bin/console cache:pool:clear weglot_translate.cache


You'll find a short README with details about example on each repository


translate-bundle is guided and supported by the Weglot Developer Team.

translate-bundle is maintained and funded by Weglot SAS. The names and logos for translate-bundle are trademarks of Weglot SAS.


The MIT License (MIT)

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.