---
Name: basei18n
Before: '#defaulti18n'
---
SilverStripe\Core\Manifest\ModuleManifest:
  module_priority:
    - silverstripe\admin
    - silverstripe\framework
---
Name: defaulti18n
---
SilverStripe\Core\Manifest\ModuleManifest:
  module_priority:
    - other_modules
---
name: i18nMessages
---
SilverStripe\Core\Injector\Injector:
  # Custom yml loader for localisation messages
  SilverStripe\i18n\Messages\Reader:
    class: SilverStripe\i18n\Messages\YamlReader
  SilverStripe\i18n\Messages\Writer:
    class: SilverStripe\i18n\Messages\YamlWriter
  Symfony\Component\Translation\Loader\LoaderInterface:
    class: SilverStripe\i18n\Messages\Symfony\ModuleYamlLoader
    properties:
      Reader: '%$SilverStripe\i18n\Messages\Reader'
  # Ensure our cache respects ModuleYamlLoader's self-invalidation
  # @see DirectoryListResource::isFresh()
  # Note: This could be replaced with a more aggressive cache if necessary on a live environment
  Symfony\Component\Config\ConfigCacheFactoryInterface:
    class: Symfony\Component\Config\ResourceCheckerConfigCacheFactory
    constructor:
      0: [ '%$Symfony\Component\Config\Resource\SelfCheckingResourceChecker' ]
  # Create default translator with standard cache path and our custom loader
  Symfony\Contracts\Translation\TranslatorInterface:
    class: Symfony\Component\Translation\Translator
    constructor:
      0: 'en'
      1: null
      2: '`TEMP_PATH`'
    properties:
      ConfigCacheFactory: '%$Symfony\Component\Config\ConfigCacheFactoryInterface'
    calls:
      FallbackLocales: [ setFallbackLocales, [['en']]]
      Loader: [ addLoader, ['ss', '%$Symfony\Component\Translation\Loader\LoaderInterface' ]]
  # Set this translator as our message provider for silverstripe's i18n
  SilverStripe\i18n\Messages\MessageProvider:
    class: SilverStripe\i18n\Messages\Symfony\SymfonyMessageProvider
    properties:
      Translator: '%$Symfony\Contracts\Translation\TranslatorInterface'
---
Name: textcollector
---
SilverStripe\Core\Injector\Injector:
  SilverStripe\i18n\TextCollection\i18nTextCollector:
    properties:
      Reader: '%$SilverStripe\i18n\Messages\Reader'
      Writer: '%$SilverStripe\i18n\Messages\Writer'
---
Name: i18ndata
---
SilverStripe\Core\Injector\Injector:
  SilverStripe\i18n\Data\Locales:
    class: SilverStripe\i18n\Data\Intl\IntlLocales