<?xml version="1.0" encoding="UTF-8"?>

<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

    <parameters>
        <parameter key="jms_i18n_routing.router.class">JMS\I18nRoutingBundle\Router\I18nRouter</parameter>
        <parameter key="jms_i18n_routing.locale_resolver.class">JMS\I18nRoutingBundle\Router\DefaultLocaleResolver</parameter>
        
        <parameter key="jms_i18n_routing.loader.class">JMS\I18nRoutingBundle\Router\I18nLoader</parameter>
        <parameter key="jms_i18n_routing.route_exclusion_strategy.class">JMS\I18nRoutingBundle\Router\DefaultRouteExclusionStrategy</parameter>
        <parameter key="jms_i18n_routing.pattern_generation_strategy.class">JMS\I18nRoutingBundle\Router\DefaultPatternGenerationStrategy</parameter>
        
        <parameter key="jms_i18n_routing.locale_choosing_listener.class">JMS\I18nRoutingBundle\EventListener\LocaleChoosingListener</parameter>
        <parameter key="jms_i18n_routing.cookie_setting_listener.class">JMS\I18nRoutingBundle\EventListener\CookieSettingListener</parameter>
        
        <parameter key="jms_i18n_routing.route_translation_extractor.class">JMS\I18nRoutingBundle\Translation\RouteTranslationExtractor</parameter>
    </parameters>

    <services>
        <service id="jms_i18n_routing.locale_resolver.default" class="%jms_i18n_routing.locale_resolver.class%" public="false">
            <argument>%jms_i18n_routing.cookie.name%</argument>
        </service>
        <service id="jms_i18n_routing.locale_resolver" alias="jms_i18n_routing.locale_resolver.default" public="false" />
        
        <service id="jms_i18n_routing.router" class="%jms_i18n_routing.router.class%" parent="router.default" public="false">
            <call method="setLocaleResolver">
                <argument type="service" id="jms_i18n_routing.locale_resolver" />
            </call>
            <call method="setI18nLoaderId">
                <argument>jms_i18n_routing.loader</argument>
            </call>
            <call method="setDefaultLocale">
                <argument>%jms_i18n_routing.default_locale%</argument>
            </call>
            <call method="setRedirectToHost">
                <argument>%jms_i18n_routing.redirect_to_host%</argument>
            </call>
        </service>
        
        <service id="jms_i18n_routing.locale_choosing_listener" class="%jms_i18n_routing.locale_choosing_listener.class%" public="false">
            <argument>%jms_i18n_routing.default_locale%</argument>
            <argument>%jms_i18n_routing.locales%</argument>
            <argument type="service" id="jms_i18n_routing.locale_resolver" />
        </service>
        
        <service id="jms_i18n_routing.cookie_setting_listener" class="%jms_i18n_routing.cookie_setting_listener.class%" public="false" />
        
        <service id="jms_i18n_routing.route_exclusion_strategy" class="%jms_i18n_routing.route_exclusion_strategy.class%" public="false" />
        
        <service id="jms_i18n_routing.pattern_generation_strategy.default" class="%jms_i18n_routing.pattern_generation_strategy.class%" public="false">
            <argument>%jms_i18n_routing.strategy%</argument>
            <argument type="service" id="translator" />
            <argument>%jms_i18n_routing.locales%</argument>
            <argument>%kernel.cache_dir%</argument>
            <argument>%jms_i18n_routing.catalogue%</argument>
            <argument>%jms_i18n_routing.default_locale%</argument>
        </service>
        <service id="jms_i18n_routing.pattern_generation_strategy" alias="jms_i18n_routing.pattern_generation_strategy.default" public="false" />
        
        <service id="jms_i18n_routing.loader" class="%jms_i18n_routing.loader.class%">
            <argument type="service" id="jms_i18n_routing.route_exclusion_strategy" />
            <argument type="service" id="jms_i18n_routing.pattern_generation_strategy" />
        </service>
        
        <service id="jms_i18n_routing.route_translation_extractor" class="%jms_i18n_routing.route_translation_extractor.class%" public="false">
            <argument type="service" id="router" />
            <argument type="service" id="jms_i18n_routing.route_exclusion_strategy" />
            <tag name="jms_translation.extractor" alias="jms_i18n_routing" />
        </service>
    </services>
</container>
