services:
  php_translation.extractor.php:
    class: Translation\Extractor\FileExtractor\PHPFileExtractor
    tags:
      - { name: 'php_translation.extractor', type: 'php' }

  php_translation.extractor.twig:
    class: Translation\Extractor\FileExtractor\TwigFileExtractor
    arguments: ["@twig"]
    tags:
      - { name: 'php_translation.extractor', type: 'twig' }

  # PHP Visitors:
  php_translation.extractor.php.visitor.ContainerAwareTrans:
    class: Translation\Extractor\Visitor\Php\Symfony\ContainerAwareTrans
    tags:
      - { name: 'php_translation.visitor', type: 'php' }

  php_translation.extractor.php.visitor.ContainerAwareTransChoice:
    class: Translation\Extractor\Visitor\Php\Symfony\ContainerAwareTransChoice
    tags:
      - { name: 'php_translation.visitor', type: 'php' }

  php_translation.extractor.php.visitor.FlashMessage:
    class: Translation\Extractor\Visitor\Php\Symfony\FlashMessage
    tags:
      - { name: 'php_translation.visitor', type: 'php' }

  php_translation.extractor.php.visitor.FormTypeChoices:
    class: Translation\Extractor\Visitor\Php\Symfony\FormTypeChoices
    tags:
      - { name: 'php_translation.visitor', type: 'php' }

  php_translation.extractor.php.visitor.FormTypeEmptyValue:
    class: Translation\Extractor\Visitor\Php\Symfony\FormTypeEmptyValue
    tags:
      - { name: 'php_translation.visitor', type: 'php' }

  php_translation.extractor.php.visitor.FormTypeInvalidMessage:
    class: Translation\Extractor\Visitor\Php\Symfony\FormTypeInvalidMessage
    tags:
      - { name: 'php_translation.visitor', type: 'php' }

  php_translation.extractor.php.visitor.FormTypeLabelExplicit:
    class: Translation\Extractor\Visitor\Php\Symfony\FormTypeLabelExplicit
    tags:
      - { name: 'php_translation.visitor', type: 'php' }

  php_translation.extractor.php.visitor.FormTypeLabelImplicit:
    class: Translation\Extractor\Visitor\Php\Symfony\FormTypeLabelImplicit
    tags:
      - { name: 'php_translation.visitor', type: 'php' }

  php_translation.extractor.php.visitor.FormTypePlaceholder:
    class: Translation\Extractor\Visitor\Php\Symfony\FormTypePlaceholder
    tags:
      - { name: 'php_translation.visitor', type: 'php' }

  php_translation.extractor.php.visitor.ValidationAnnotation:
    class: Translation\Extractor\Visitor\Php\Symfony\ValidationAnnotation
    arguments: ['@validator']
    tags:
      - { name: 'php_translation.visitor', type: 'php' }

  php_translation.extractor.php.visitor.SourceLocationContainerVisitor:
    class: Translation\Extractor\Visitor\Php\SourceLocationContainerVisitor
    tags:
      - { name: 'php_translation.visitor', type: 'php' }

  # Twig Visitors:
  php_translation.extractor.twig.factory:
    class: Translation\Extractor\Visitor\Twig\TwigVisitorFactory
    public: false

  php_translation.extractor.twig.visitor.twig:
    class: Translation\Bundle\Twig\Visitor\DummyTwigVisitor
    factory: ["@php_translation.extractor.twig.factory", create]
    tags:
      - { name: 'php_translation.visitor', type: 'twig' }
