diff --git a/src/bundle/Core/DependencyInjection/IbexaCoreExtension.php b/src/bundle/Core/DependencyInjection/IbexaCoreExtension.php index 77cc0604f6..814b097396 100644 --- a/src/bundle/Core/DependencyInjection/IbexaCoreExtension.php +++ b/src/bundle/Core/DependencyInjection/IbexaCoreExtension.php @@ -37,10 +37,12 @@ class IbexaCoreExtension extends Extension implements PrependExtensionInterface { + public const EXTENSION_NAME = 'ibexa'; private const ENTITY_MANAGER_TEMPLATE = [ 'connection' => null, 'mappings' => [], ]; + private const TRANSLATIONS_DIRECTORY = '/vendor/ibexa/i18n/translations'; /** @var \Ibexa\Bundle\Core\DependencyInjection\Configuration\Suggestion\Collector\SuggestionCollector */ @@ -81,7 +83,7 @@ public function __construct(array $siteAccessConfigParsers = [], array $reposito public function getAlias() { - return 'ibexa'; + return self::EXTENSION_NAME; } /** @@ -190,6 +192,7 @@ public function prepend(ContainerBuilder $container) { $this->prependTranslatorConfiguration($container); $this->prependDoctrineConfiguration($container); + $this->prependJMSTranslation($container); $this->configureGenericSetup($container); $this->configurePlatformShSetup($container); @@ -1002,6 +1005,23 @@ private function shouldLoadTestBehatServices(ContainerBuilder $container): bool return $container->hasParameter('ibexa.behat.browser.enabled') && $container->getParameter('ibexa.behat.browser.enabled'); } + + private function prependJMSTranslation(ContainerBuilder $container): void + { + $container->prependExtensionConfig('jms_translation', [ + 'configs' => [ + self::EXTENSION_NAME => [ + 'dirs' => [ + __DIR__ . '/../', + ], + 'output_dir' => __DIR__ . '/../Resources/translations/', + 'output_format' => 'xliff', + 'excluded_dirs' => ['Behat', 'Tests', 'node_modules', 'Features'], + 'extractors' => [], + ], + ], + ]); + } } class_alias(IbexaCoreExtension::class, 'eZ\Bundle\EzPublishCoreBundle\DependencyInjection\EzPublishCoreExtension'); diff --git a/src/bundle/Core/Resources/config/services.yml b/src/bundle/Core/Resources/config/services.yml index bba5a01dc8..a90d8b0600 100644 --- a/src/bundle/Core/Resources/config/services.yml +++ b/src/bundle/Core/Resources/config/services.yml @@ -360,3 +360,5 @@ services: $repositoryConfigurationProvider: '@Ibexa\Bundle\Core\ApiLoader\RepositoryConfigurationProvider' $defaultConnection: '%doctrine.default_connection%' $entityManagers: '%doctrine.entity_managers%' + + Ibexa\Bundle\Core\Translation\Policy\PolicyTranslationDefinitionProvider: ~ diff --git a/src/bundle/Core/Resources/translations/forms.en.xliff b/src/bundle/Core/Resources/translations/forms.en.xliff new file mode 100644 index 0000000000..7d94a168f9 --- /dev/null +++ b/src/bundle/Core/Resources/translations/forms.en.xliff @@ -0,0 +1,321 @@ + + + +
+ + The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message. +
+ + + Content Type + Content Type + key: role.policy.class + + + Content Type / All functions + Content Type / All functions + key: role.policy.class.all_functions + + + Content Type / Create + Content Type / Create + key: role.policy.class.create + + + Content Type / Delete + Content Type / Delete + key: role.policy.class.delete + + + Content Type / Update + Content Type / Update + key: role.policy.class.update + + + Content / All functions + Content / All functions + key: role.policy.content.all_functions + + + Content / Cleantrash + Content / Cleantrash + key: role.policy.content.cleantrash + + + Content / Create + Content / Create + key: role.policy.content.create + + + Content / Diff + Content / Diff + key: role.policy.content.diff + + + Content / Edit + Content / Edit + key: role.policy.content.edit + + + Content / Hide + Content / Hide + key: role.policy.content.hide + + + Content / Manage locations + Content / Manage locations + key: role.policy.content.manage_locations + + + Content / Pendinglist + Content / Pendinglist + key: role.policy.content.pendinglist + + + Content / Publish + Content / Publish + key: role.policy.content.publish + + + Content / Read + Content / Read + key: role.policy.content.read + + + Content / Remove + Content / Remove + key: role.policy.content.remove + + + Content / Restore + Content / Restore + key: role.policy.content.restore + + + Content / Reverserelatedlist + Content / Reverserelatedlist + key: role.policy.content.reverserelatedlist + + + Content / Translate + Content / Translate + key: role.policy.content.translate + + + Content / Translations + Content / Translations + key: role.policy.content.translations + + + Content / Unlock + Content / Unlock + key: role.policy.content.unlock + + + Content / Urltranslator + Content / Urltranslator + key: role.policy.content.urltranslator + + + Content / Versionread + Content / Versionread + key: role.policy.content.versionread + + + Content / Versionremove + Content / Versionremove + key: role.policy.content.versionremove + + + Role + Role + key: role.policy.role + + + Role / All functions + Role / All functions + key: role.policy.role.all_functions + + + Role / Assign + Role / Assign + key: role.policy.role.assign + + + Role / Create + Role / Create + key: role.policy.role.create + + + Role / Delete + Role / Delete + key: role.policy.role.delete + + + Role / Read + Role / Read + key: role.policy.role.read + + + Role / Update + Role / Update + key: role.policy.role.update + + + Section + Section + key: role.policy.section + + + Section / All functions + Section / All functions + key: role.policy.section.all_functions + + + Section / Assign + Section / Assign + key: role.policy.section.assign + + + Section / Edit + Section / Edit + key: role.policy.section.edit + + + Section / View + Section / View + key: role.policy.section.view + + + Setting + Setting + key: role.policy.setting + + + Setting / All functions + Setting / All functions + key: role.policy.setting.all_functions + + + Setting / Create + Setting / Create + key: role.policy.setting.create + + + Setting / Remove + Setting / Remove + key: role.policy.setting.remove + + + Setting / Update + Setting / Update + key: role.policy.setting.update + + + Setup + Setup + key: role.policy.setup + + + Setup / Administrate + Setup / Administrate + key: role.policy.setup.administrate + + + Setup / All functions + Setup / All functions + key: role.policy.setup.all_functions + + + Setup / Install + Setup / Install + key: role.policy.setup.install + + + Setup / Setup + Setup / Setup + key: role.policy.setup.setup + + + Setup / System info + Setup / System info + key: role.policy.setup.system_info + + + State + State + key: role.policy.state + + + State / Administrate + State / Administrate + key: role.policy.state.administrate + + + State / All functions + State / All functions + key: role.policy.state.all_functions + + + State / Assign + State / Assign + key: role.policy.state.assign + + + User + User + key: role.policy.user + + + User / Activation + User / Activation + key: role.policy.user.activation + + + User / All functions + User / All functions + key: role.policy.user.all_functions + + + User / Invite + User / Invite + key: role.policy.user.invite + + + User / Login + User / Login + key: role.policy.user.login + + + User / Password + User / Password + key: role.policy.user.password + + + User / Preferences + User / Preferences + key: role.policy.user.preferences + + + User / Register + User / Register + key: role.policy.user.register + + + User / Selfedit + User / Selfedit + key: role.policy.user.selfedit + + + User / Update + User / Update + key: role.policy.user.update + + + User / View + User / View + key: role.policy.user.view + + +
+
diff --git a/src/bundle/Core/Translation/Policy/PolicyTranslationDefinitionProvider.php b/src/bundle/Core/Translation/Policy/PolicyTranslationDefinitionProvider.php new file mode 100644 index 0000000000..880c1ad553 --- /dev/null +++ b/src/bundle/Core/Translation/Policy/PolicyTranslationDefinitionProvider.php @@ -0,0 +1,98 @@ + + */ + public static function getTranslationMessages(): array + { + return [ + (new Message('role.policy.content.all_functions', self::TRANSLATION_DOMAIN))->setDesc('Content / All functions'), + (new Message('role.policy.content.cleantrash', self::TRANSLATION_DOMAIN))->setDesc('Content / Cleantrash'), + (new Message('role.policy.content.create', self::TRANSLATION_DOMAIN))->setDesc('Content / Create'), + (new Message('role.policy.content.diff', self::TRANSLATION_DOMAIN))->setDesc('Content / Diff'), + (new Message('role.policy.content.edit', self::TRANSLATION_DOMAIN))->setDesc('Content / Edit'), + (new Message('role.policy.content.hide', self::TRANSLATION_DOMAIN))->setDesc('Content / Hide'), + (new Message('role.policy.content.manage_locations', self::TRANSLATION_DOMAIN))->setDesc('Content / Manage locations'), + (new Message('role.policy.content.pendinglist', self::TRANSLATION_DOMAIN))->setDesc('Content / Pendinglist'), + (new Message('role.policy.content.publish', self::TRANSLATION_DOMAIN))->setDesc('Content / Publish'), + (new Message('role.policy.content.read', self::TRANSLATION_DOMAIN))->setDesc('Content / Read'), + (new Message('role.policy.content.remove', self::TRANSLATION_DOMAIN))->setDesc('Content / Remove'), + (new Message('role.policy.content.restore', self::TRANSLATION_DOMAIN))->setDesc('Content / Restore'), + (new Message('role.policy.content.reverserelatedlist', self::TRANSLATION_DOMAIN))->setDesc('Content / Reverserelatedlist'), + (new Message('role.policy.content.translate', self::TRANSLATION_DOMAIN))->setDesc('Content / Translate'), + (new Message('role.policy.content.translations', self::TRANSLATION_DOMAIN))->setDesc('Content / Translations'), + (new Message('role.policy.content.unlock', self::TRANSLATION_DOMAIN))->setDesc('Content / Unlock'), + (new Message('role.policy.content.urltranslator', self::TRANSLATION_DOMAIN))->setDesc('Content / Urltranslator'), + (new Message('role.policy.content.versionread', self::TRANSLATION_DOMAIN))->setDesc('Content / Versionread'), + (new Message('role.policy.content.versionremove', self::TRANSLATION_DOMAIN))->setDesc('Content / Versionremove'), + + (new Message('role.policy.class', self::TRANSLATION_DOMAIN))->setDesc('Content Type'), + (new Message('role.policy.class.all_functions', self::TRANSLATION_DOMAIN))->setDesc('Content Type / All functions'), + (new Message('role.policy.class.create', self::TRANSLATION_DOMAIN))->setDesc('Content Type / Create'), + (new Message('role.policy.class.delete', self::TRANSLATION_DOMAIN))->setDesc('Content Type / Delete'), + (new Message('role.policy.class.update', self::TRANSLATION_DOMAIN))->setDesc('Content Type / Update'), + + (new Message('role.policy.state', self::TRANSLATION_DOMAIN))->setDesc('State'), + (new Message('role.policy.state.all_functions', self::TRANSLATION_DOMAIN))->setDesc('State / All functions'), + (new Message('role.policy.state.administrate', self::TRANSLATION_DOMAIN))->setDesc('State / Administrate'), + (new Message('role.policy.state.assign', self::TRANSLATION_DOMAIN))->setDesc('State / Assign'), + + (new Message('role.policy.role', self::TRANSLATION_DOMAIN))->setDesc('Role'), + (new Message('role.policy.role.all_functions', self::TRANSLATION_DOMAIN))->setDesc('Role / All functions'), + (new Message('role.policy.role.assign', self::TRANSLATION_DOMAIN))->setDesc('Role / Assign'), + (new Message('role.policy.role.create', self::TRANSLATION_DOMAIN))->setDesc('Role / Create'), + (new Message('role.policy.role.delete', self::TRANSLATION_DOMAIN))->setDesc('Role / Delete'), + (new Message('role.policy.role.read', self::TRANSLATION_DOMAIN))->setDesc('Role / Read'), + (new Message('role.policy.role.update', self::TRANSLATION_DOMAIN))->setDesc('Role / Update'), + + (new Message('role.policy.section', self::TRANSLATION_DOMAIN))->setDesc('Section'), + (new Message('role.policy.section.all_functions', self::TRANSLATION_DOMAIN))->setDesc('Section / All functions'), + (new Message('role.policy.section.assign', self::TRANSLATION_DOMAIN))->setDesc('Section / Assign'), + (new Message('role.policy.section.edit', self::TRANSLATION_DOMAIN))->setDesc('Section / Edit'), + (new Message('role.policy.section.view', self::TRANSLATION_DOMAIN))->setDesc('Section / View'), + + (new Message('role.policy.setup', self::TRANSLATION_DOMAIN))->setDesc('Setup'), + (new Message('role.policy.setup.all_functions', self::TRANSLATION_DOMAIN))->setDesc('Setup / All functions'), + (new Message('role.policy.setup.administrate', self::TRANSLATION_DOMAIN))->setDesc('Setup / Administrate'), + (new Message('role.policy.setup.install', self::TRANSLATION_DOMAIN))->setDesc('Setup / Install'), + (new Message('role.policy.setup.setup', self::TRANSLATION_DOMAIN))->setDesc('Setup / Setup'), + (new Message('role.policy.setup.system_info', self::TRANSLATION_DOMAIN))->setDesc('Setup / System info'), + + (new Message('role.policy.user', self::TRANSLATION_DOMAIN))->setDesc('User'), + (new Message('role.policy.user.all_functions', self::TRANSLATION_DOMAIN))->setDesc('User / All functions'), + (new Message('role.policy.user.activation', self::TRANSLATION_DOMAIN))->setDesc('User / Activation'), + (new Message('role.policy.user.invite', self::TRANSLATION_DOMAIN))->setDesc('User / Invite'), + (new Message('role.policy.user.login', self::TRANSLATION_DOMAIN))->setDesc('User / Login'), + (new Message('role.policy.user.password', self::TRANSLATION_DOMAIN))->setDesc('User / Password'), + (new Message('role.policy.user.preferences', self::TRANSLATION_DOMAIN))->setDesc('User / Preferences'), + (new Message('role.policy.user.register', self::TRANSLATION_DOMAIN))->setDesc('User / Register'), + (new Message('role.policy.user.selfedit', self::TRANSLATION_DOMAIN))->setDesc('User / Selfedit'), + + (new Message('role.policy.user', self::TRANSLATION_DOMAIN))->setDesc('User'), + (new Message('role.policy.user.all_functions', self::TRANSLATION_DOMAIN))->setDesc('User / All functions'), + (new Message('role.policy.user.update', self::TRANSLATION_DOMAIN))->setDesc('User / Update'), + (new Message('role.policy.user.view', self::TRANSLATION_DOMAIN))->setDesc('User / View'), + + (new Message('role.policy.setting', self::TRANSLATION_DOMAIN))->setDesc('Setting'), + (new Message('role.policy.setting.all_functions', self::TRANSLATION_DOMAIN))->setDesc('Setting / All functions'), + (new Message('role.policy.setting.create', self::TRANSLATION_DOMAIN))->setDesc('Setting / Create'), + (new Message('role.policy.setting.remove', self::TRANSLATION_DOMAIN))->setDesc('Setting / Remove'), + (new Message('role.policy.setting.update', self::TRANSLATION_DOMAIN))->setDesc('Setting / Update'), + ]; + } +}