translation.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Component\DependencyInjection\Loader\Configurator;
  11. use Psr\Container\ContainerInterface;
  12. use Symfony\Bundle\FrameworkBundle\CacheWarmer\TranslationsCacheWarmer;
  13. use Symfony\Bundle\FrameworkBundle\Translation\Translator;
  14. use Symfony\Component\Translation\Dumper\CsvFileDumper;
  15. use Symfony\Component\Translation\Dumper\IcuResFileDumper;
  16. use Symfony\Component\Translation\Dumper\IniFileDumper;
  17. use Symfony\Component\Translation\Dumper\JsonFileDumper;
  18. use Symfony\Component\Translation\Dumper\MoFileDumper;
  19. use Symfony\Component\Translation\Dumper\PhpFileDumper;
  20. use Symfony\Component\Translation\Dumper\PoFileDumper;
  21. use Symfony\Component\Translation\Dumper\QtFileDumper;
  22. use Symfony\Component\Translation\Dumper\XliffFileDumper;
  23. use Symfony\Component\Translation\Dumper\YamlFileDumper;
  24. use Symfony\Component\Translation\Extractor\ChainExtractor;
  25. use Symfony\Component\Translation\Extractor\ExtractorInterface;
  26. use Symfony\Component\Translation\Extractor\PhpExtractor;
  27. use Symfony\Component\Translation\Formatter\MessageFormatter;
  28. use Symfony\Component\Translation\Loader\CsvFileLoader;
  29. use Symfony\Component\Translation\Loader\IcuDatFileLoader;
  30. use Symfony\Component\Translation\Loader\IcuResFileLoader;
  31. use Symfony\Component\Translation\Loader\IniFileLoader;
  32. use Symfony\Component\Translation\Loader\JsonFileLoader;
  33. use Symfony\Component\Translation\Loader\MoFileLoader;
  34. use Symfony\Component\Translation\Loader\PhpFileLoader;
  35. use Symfony\Component\Translation\Loader\PoFileLoader;
  36. use Symfony\Component\Translation\Loader\QtFileLoader;
  37. use Symfony\Component\Translation\Loader\XliffFileLoader;
  38. use Symfony\Component\Translation\Loader\YamlFileLoader;
  39. use Symfony\Component\Translation\LoggingTranslator;
  40. use Symfony\Component\Translation\Reader\TranslationReader;
  41. use Symfony\Component\Translation\Reader\TranslationReaderInterface;
  42. use Symfony\Component\Translation\Writer\TranslationWriter;
  43. use Symfony\Component\Translation\Writer\TranslationWriterInterface;
  44. use Symfony\Contracts\Translation\TranslatorInterface;
  45. return static function (ContainerConfigurator $container) {
  46. $container->services()
  47. ->set('translator.default', Translator::class)
  48. ->args([
  49. abstract_arg('translation loaders locator'),
  50. service('translator.formatter'),
  51. param('kernel.default_locale'),
  52. abstract_arg('translation loaders ids'),
  53. [
  54. 'cache_dir' => param('kernel.cache_dir').'/translations',
  55. 'debug' => param('kernel.debug'),
  56. ],
  57. abstract_arg('enabled locales'),
  58. ])
  59. ->call('setConfigCacheFactory', [service('config_cache_factory')])
  60. ->tag('kernel.locale_aware')
  61. ->alias(TranslatorInterface::class, 'translator')
  62. ->set('translator.logging', LoggingTranslator::class)
  63. ->args([
  64. service('translator.logging.inner'),
  65. service('logger'),
  66. ])
  67. ->tag('monolog.logger', ['channel' => 'translation'])
  68. ->set('translator.formatter.default', MessageFormatter::class)
  69. ->args([service('identity_translator')])
  70. ->set('translation.loader.php', PhpFileLoader::class)
  71. ->tag('translation.loader', ['alias' => 'php'])
  72. ->set('translation.loader.yml', YamlFileLoader::class)
  73. ->tag('translation.loader', ['alias' => 'yaml', 'legacy-alias' => 'yml'])
  74. ->set('translation.loader.xliff', XliffFileLoader::class)
  75. ->tag('translation.loader', ['alias' => 'xlf', 'legacy-alias' => 'xliff'])
  76. ->set('translation.loader.po', PoFileLoader::class)
  77. ->tag('translation.loader', ['alias' => 'po'])
  78. ->set('translation.loader.mo', MoFileLoader::class)
  79. ->tag('translation.loader', ['alias' => 'mo'])
  80. ->set('translation.loader.qt', QtFileLoader::class)
  81. ->tag('translation.loader', ['alias' => 'ts'])
  82. ->set('translation.loader.csv', CsvFileLoader::class)
  83. ->tag('translation.loader', ['alias' => 'csv'])
  84. ->set('translation.loader.res', IcuResFileLoader::class)
  85. ->tag('translation.loader', ['alias' => 'res'])
  86. ->set('translation.loader.dat', IcuDatFileLoader::class)
  87. ->tag('translation.loader', ['alias' => 'dat'])
  88. ->set('translation.loader.ini', IniFileLoader::class)
  89. ->tag('translation.loader', ['alias' => 'ini'])
  90. ->set('translation.loader.json', JsonFileLoader::class)
  91. ->tag('translation.loader', ['alias' => 'json'])
  92. ->set('translation.dumper.php', PhpFileDumper::class)
  93. ->tag('translation.dumper', ['alias' => 'php'])
  94. ->set('translation.dumper.xliff', XliffFileDumper::class)
  95. ->tag('translation.dumper', ['alias' => 'xlf'])
  96. ->set('translation.dumper.po', PoFileDumper::class)
  97. ->tag('translation.dumper', ['alias' => 'po'])
  98. ->set('translation.dumper.mo', MoFileDumper::class)
  99. ->tag('translation.dumper', ['alias' => 'mo'])
  100. ->set('translation.dumper.yml', YamlFileDumper::class)
  101. ->tag('translation.dumper', ['alias' => 'yml'])
  102. ->set('translation.dumper.yaml', YamlFileDumper::class)
  103. ->args(['yaml'])
  104. ->tag('translation.dumper', ['alias' => 'yaml'])
  105. ->set('translation.dumper.qt', QtFileDumper::class)
  106. ->tag('translation.dumper', ['alias' => 'ts'])
  107. ->set('translation.dumper.csv', CsvFileDumper::class)
  108. ->tag('translation.dumper', ['alias' => 'csv'])
  109. ->set('translation.dumper.ini', IniFileDumper::class)
  110. ->tag('translation.dumper', ['alias' => 'ini'])
  111. ->set('translation.dumper.json', JsonFileDumper::class)
  112. ->tag('translation.dumper', ['alias' => 'json'])
  113. ->set('translation.dumper.res', IcuResFileDumper::class)
  114. ->tag('translation.dumper', ['alias' => 'res'])
  115. ->set('translation.extractor.php', PhpExtractor::class)
  116. ->tag('translation.extractor', ['alias' => 'php'])
  117. ->set('translation.reader', TranslationReader::class)
  118. ->alias(TranslationReaderInterface::class, 'translation.reader')
  119. ->set('translation.extractor', ChainExtractor::class)
  120. ->alias(ExtractorInterface::class, 'translation.extractor')
  121. ->set('translation.writer', TranslationWriter::class)
  122. ->alias(TranslationWriterInterface::class, 'translation.writer')
  123. ->set('translation.warmer', TranslationsCacheWarmer::class)
  124. ->args([service(ContainerInterface::class)])
  125. ->tag('container.service_subscriber', ['id' => 'translator'])
  126. ->tag('kernel.cache_warmer')
  127. ;
  128. };