From 14ecdb1f6b03328f76c7c8adfe2eb6e222725e56 Mon Sep 17 00:00:00 2001 From: David Toews Date: Thu, 8 Feb 2024 09:41:16 -0700 Subject: [PATCH 1/2] FIX allows i18nTextCollector to concatenate keys fixes #823 - The magic constant __TRAIT__ was inserting namespaces into localization keys, containing slashes that could not be parsed by the TextCollector task. These have been replaced w/ the Trait name as a string --- src/Extension/Traits/FluentAdminTrait.php | 36 +++++++++++----------- src/Extension/Traits/FluentBadgeTrait.php | 6 ++-- src/Extension/Traits/FluentObjectTrait.php | 2 +- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/Extension/Traits/FluentAdminTrait.php b/src/Extension/Traits/FluentAdminTrait.php index 269cf5e7..f9d642d1 100644 --- a/src/Extension/Traits/FluentAdminTrait.php +++ b/src/Extension/Traits/FluentAdminTrait.php @@ -107,7 +107,7 @@ protected function updateFluentActions( // Add menu button $moreOptions = Tab::create( 'FluentMenuOptions', - _t(__TRAIT__ . '.Localisation', 'Localisation') + _t('FluentAdminTrait.Localisation', 'Localisation') ); $moreOptions->addExtraClass('popover-actions-simulate'); $rootTabSet->push($moreOptions); @@ -117,7 +117,7 @@ protected function updateFluentActions( FormAction::create( 'clearFluent', _t( - __TRAIT__ . '.Label_clearFluent', + 'FluentAdminTrait.Label_clearFluent', "Clear from all except '{title}'", [ 'title' => $locale->getTitle() @@ -129,7 +129,7 @@ protected function updateFluentActions( FormAction::create( 'copyFluent', _t( - __TRAIT__ . '.Label_copyFluent', + 'FluentAdminTrait.Label_copyFluent', "Copy '{title}' to other locales", [ 'title' => $locale->getTitle() @@ -144,7 +144,7 @@ protected function updateFluentActions( FormAction::create( 'unpublishFluent', _t( - __TRAIT__ . '.Label_unpublishFluent', + 'FluentAdminTrait.Label_unpublishFluent', 'Unpublish (all locales)' ) )->addExtraClass('btn-secondary') @@ -153,7 +153,7 @@ protected function updateFluentActions( FormAction::create( 'archiveFluent', _t( - __TRAIT__ . '.Label_archiveFluent', + 'FluentAdminTrait.Label_archiveFluent', 'Unpublish and Archive (all locales)' ) )->addExtraClass('btn-outline-danger') @@ -162,7 +162,7 @@ protected function updateFluentActions( FormAction::create( 'publishFluent', _t( - __TRAIT__ . '.Label_publishFluent', + 'FluentAdminTrait.Label_publishFluent', 'Save & Publish (all locales)' ) )->addExtraClass('btn-primary') @@ -172,7 +172,7 @@ protected function updateFluentActions( FormAction::create( 'deleteFluent', _t( - __TRAIT__ . '.Label_deleteFluent', + 'FluentAdminTrait.Label_deleteFluent', 'Delete (all locales)' ) )->addExtraClass('btn-outline-danger') @@ -187,7 +187,7 @@ protected function updateFluentActions( FormAction::create( 'hideFluent', _t( - __TRAIT__ . '.Label_hideFluent', + 'FluentAdminTrait.Label_hideFluent', "Hide from '{title}'", [ 'title' => $locale->getTitle() @@ -200,7 +200,7 @@ protected function updateFluentActions( FormAction::create( 'showFluent', _t( - __TRAIT__ . '.Label_showFluent', + 'FluentAdminTrait.Label_showFluent', "Show in '{title}'", [ 'title' => $locale->getTitle() @@ -256,7 +256,7 @@ public function clearFluent($data, $form) }); $message = _t( - __TRAIT__ . '.ClearAllNotice', + 'FluentAdminTrait.ClearAllNotice', "All localisations have been cleared for '{title}'.", ['title' => $record->Title] ); @@ -292,7 +292,7 @@ public function copyFluent($data, $form) if ($locale->ID == $originalLocale->ID) { return; } - + if ($record->hasExtension(Versioned::class)) { $record->writeToStage(Versioned::DRAFT); } else { @@ -302,7 +302,7 @@ public function copyFluent($data, $form) }); $message = _t( - __TRAIT__ . '.CopyNotice', + 'FluentAdminTrait.CopyNotice', "Copied '{title}' to all other locales.", ['title' => $record->Title] ); @@ -336,7 +336,7 @@ public function unpublishFluent($data, $form) }); $message = _t( - __TRAIT__ . '.UnpublishNotice', + 'FluentAdminTrait.UnpublishNotice', "Unpublished '{title}' from all locales.", ['title' => $record->Title] ); @@ -386,7 +386,7 @@ public function archiveFluent($data, $form) $policy->delete($record); $message = _t( - __TRAIT__ . '.ArchiveNotice', + 'FluentAdminTrait.ArchiveNotice', "Archived '{title}' and all of its localisations.", ['title' => $record->Title] ); @@ -434,7 +434,7 @@ public function deleteFluent($data, $form) $policy->delete($record); $message = _t( - __TRAIT__ . '.DeleteNotice', + 'FluentAdminTrait.DeleteNotice', "Deleted '{title}' and all of its localisations.", ['title' => $record->Title] ); @@ -478,7 +478,7 @@ public function publishFluent($data, $form) }); $message = _t( - __TRAIT__ . '.PublishNotice', + 'FluentAdminTrait.PublishNotice', "Published '{title}' across all locales.", ['title' => $record->Title] ); @@ -508,7 +508,7 @@ public function showFluent($data, $form) $record->FilteredLocales()->add($locale); $message = _t( - __TRAIT__ . '.ShowNotice', + 'FluentAdminTrait.ShowNotice', "Record '{title}' is now visible in {locale}", [ 'title' => $record->Title, @@ -541,7 +541,7 @@ public function hideFluent($data, $form) $record->FilteredLocales()->remove($locale); $message = _t( - __TRAIT__ . '.HideNotice', + 'FluentAdminTrait.HideNotice', "Record '{title}' is now hidden in {locale}", [ 'title' => $record->Title, diff --git a/src/Extension/Traits/FluentBadgeTrait.php b/src/Extension/Traits/FluentBadgeTrait.php index 8666725b..0845f0ab 100644 --- a/src/Extension/Traits/FluentBadgeTrait.php +++ b/src/Extension/Traits/FluentBadgeTrait.php @@ -76,7 +76,7 @@ protected function generateBadgeHTML( // If the object has been localised in the current locale, show a "localised" state $badgeClasses[] = 'fluent-badge--default'; $tooltip = _t( - __TRAIT__ . '.BadgeLocalised', + 'FluentBadgeTrait.BadgeLocalised', 'Localised in {locale}', [ 'locale' => $locale->getTitle() @@ -86,7 +86,7 @@ protected function generateBadgeHTML( // If object is inheriting content from another locale show the source $badgeClasses[] = 'fluent-badge--localised'; $tooltip = _t( - __TRAIT__ . '.BadgeInherited', + 'FluentBadgeTrait.BadgeInherited', 'Inherited from {locale}', [ 'locale' => $info->getSourceLocale()->getTitle() @@ -97,7 +97,7 @@ protected function generateBadgeHTML( // by either localising or seting up a locale fallback $badgeClasses[] = 'fluent-badge--invisible'; $tooltip = _t( - __TRAIT__ . '.BaggeInvisible', + 'FluentBadgeTrait.BaggeInvisible', '{type} has no available content in {locale}, localise the {type} or provide a locale fallback', [ 'type' => $record->i18n_singular_name(), diff --git a/src/Extension/Traits/FluentObjectTrait.php b/src/Extension/Traits/FluentObjectTrait.php index 3ba8139d..248afa03 100644 --- a/src/Extension/Traits/FluentObjectTrait.php +++ b/src/Extension/Traits/FluentObjectTrait.php @@ -128,7 +128,7 @@ protected function updateFluentCMSFields(FieldList $fields) $fields ->fieldByName('Root.Locales') - ->setTitle(_t(__TRAIT__ . '.TAB_LOCALISATION', 'Localisation')); + ->setTitle(_t('FluentObjectTrait.TAB_LOCALISATION', 'Localisation')); } else { $fields->push($gridField); } From 2a8e81ef37f33d3e04c5fa35ac0020ecdfbb6a62 Mon Sep 17 00:00:00 2001 From: David Toews Date: Thu, 8 Feb 2024 17:09:57 -0700 Subject: [PATCH 2/2] Adds full namespace to string literal --- src/Extension/Traits/FluentAdminTrait.php | 34 +++++++++++----------- src/Extension/Traits/FluentBadgeTrait.php | 6 ++-- src/Extension/Traits/FluentObjectTrait.php | 2 +- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/Extension/Traits/FluentAdminTrait.php b/src/Extension/Traits/FluentAdminTrait.php index f9d642d1..63da66a3 100644 --- a/src/Extension/Traits/FluentAdminTrait.php +++ b/src/Extension/Traits/FluentAdminTrait.php @@ -107,7 +107,7 @@ protected function updateFluentActions( // Add menu button $moreOptions = Tab::create( 'FluentMenuOptions', - _t('FluentAdminTrait.Localisation', 'Localisation') + _t('TractorCow\Fluent\Extension\Traits\FluentAdminTrait.Localisation', 'Localisation') ); $moreOptions->addExtraClass('popover-actions-simulate'); $rootTabSet->push($moreOptions); @@ -117,7 +117,7 @@ protected function updateFluentActions( FormAction::create( 'clearFluent', _t( - 'FluentAdminTrait.Label_clearFluent', + 'TractorCow\Fluent\Extension\Traits\FluentAdminTrait.Label_clearFluent', "Clear from all except '{title}'", [ 'title' => $locale->getTitle() @@ -129,7 +129,7 @@ protected function updateFluentActions( FormAction::create( 'copyFluent', _t( - 'FluentAdminTrait.Label_copyFluent', + 'TractorCow\Fluent\Extension\Traits\FluentAdminTrait.Label_copyFluent', "Copy '{title}' to other locales", [ 'title' => $locale->getTitle() @@ -144,7 +144,7 @@ protected function updateFluentActions( FormAction::create( 'unpublishFluent', _t( - 'FluentAdminTrait.Label_unpublishFluent', + 'TractorCow\Fluent\Extension\Traits\FluentAdminTrait.Label_unpublishFluent', 'Unpublish (all locales)' ) )->addExtraClass('btn-secondary') @@ -153,7 +153,7 @@ protected function updateFluentActions( FormAction::create( 'archiveFluent', _t( - 'FluentAdminTrait.Label_archiveFluent', + 'TractorCow\Fluent\Extension\Traits\FluentAdminTrait.Label_archiveFluent', 'Unpublish and Archive (all locales)' ) )->addExtraClass('btn-outline-danger') @@ -162,7 +162,7 @@ protected function updateFluentActions( FormAction::create( 'publishFluent', _t( - 'FluentAdminTrait.Label_publishFluent', + 'TractorCow\Fluent\Extension\Traits\FluentAdminTrait.Label_publishFluent', 'Save & Publish (all locales)' ) )->addExtraClass('btn-primary') @@ -172,7 +172,7 @@ protected function updateFluentActions( FormAction::create( 'deleteFluent', _t( - 'FluentAdminTrait.Label_deleteFluent', + 'TractorCow\Fluent\Extension\Traits\FluentAdminTrait.Label_deleteFluent', 'Delete (all locales)' ) )->addExtraClass('btn-outline-danger') @@ -187,7 +187,7 @@ protected function updateFluentActions( FormAction::create( 'hideFluent', _t( - 'FluentAdminTrait.Label_hideFluent', + 'TractorCow\Fluent\Extension\Traits\FluentAdminTrait.Label_hideFluent', "Hide from '{title}'", [ 'title' => $locale->getTitle() @@ -200,7 +200,7 @@ protected function updateFluentActions( FormAction::create( 'showFluent', _t( - 'FluentAdminTrait.Label_showFluent', + 'TractorCow\Fluent\Extension\Traits\FluentAdminTrait.Label_showFluent', "Show in '{title}'", [ 'title' => $locale->getTitle() @@ -256,7 +256,7 @@ public function clearFluent($data, $form) }); $message = _t( - 'FluentAdminTrait.ClearAllNotice', + 'TractorCow\Fluent\Extension\Traits\FluentAdminTrait.ClearAllNotice', "All localisations have been cleared for '{title}'.", ['title' => $record->Title] ); @@ -302,7 +302,7 @@ public function copyFluent($data, $form) }); $message = _t( - 'FluentAdminTrait.CopyNotice', + 'TractorCow\Fluent\Extension\Traits\FluentAdminTrait.CopyNotice', "Copied '{title}' to all other locales.", ['title' => $record->Title] ); @@ -336,7 +336,7 @@ public function unpublishFluent($data, $form) }); $message = _t( - 'FluentAdminTrait.UnpublishNotice', + 'TractorCow\Fluent\Extension\Traits\FluentAdminTrait.UnpublishNotice', "Unpublished '{title}' from all locales.", ['title' => $record->Title] ); @@ -386,7 +386,7 @@ public function archiveFluent($data, $form) $policy->delete($record); $message = _t( - 'FluentAdminTrait.ArchiveNotice', + 'TractorCow\Fluent\Extension\Traits\FluentAdminTrait.ArchiveNotice', "Archived '{title}' and all of its localisations.", ['title' => $record->Title] ); @@ -434,7 +434,7 @@ public function deleteFluent($data, $form) $policy->delete($record); $message = _t( - 'FluentAdminTrait.DeleteNotice', + 'TractorCow\Fluent\Extension\Traits\FluentAdminTrait.DeleteNotice', "Deleted '{title}' and all of its localisations.", ['title' => $record->Title] ); @@ -478,7 +478,7 @@ public function publishFluent($data, $form) }); $message = _t( - 'FluentAdminTrait.PublishNotice', + 'TractorCow\Fluent\Extension\Traits\FluentAdminTrait.PublishNotice', "Published '{title}' across all locales.", ['title' => $record->Title] ); @@ -508,7 +508,7 @@ public function showFluent($data, $form) $record->FilteredLocales()->add($locale); $message = _t( - 'FluentAdminTrait.ShowNotice', + 'TractorCow\Fluent\Extension\Traits\FluentAdminTrait.ShowNotice', "Record '{title}' is now visible in {locale}", [ 'title' => $record->Title, @@ -541,7 +541,7 @@ public function hideFluent($data, $form) $record->FilteredLocales()->remove($locale); $message = _t( - 'FluentAdminTrait.HideNotice', + 'TractorCow\Fluent\Extension\Traits\FluentAdminTrait.HideNotice', "Record '{title}' is now hidden in {locale}", [ 'title' => $record->Title, diff --git a/src/Extension/Traits/FluentBadgeTrait.php b/src/Extension/Traits/FluentBadgeTrait.php index 0845f0ab..c6146d8f 100644 --- a/src/Extension/Traits/FluentBadgeTrait.php +++ b/src/Extension/Traits/FluentBadgeTrait.php @@ -76,7 +76,7 @@ protected function generateBadgeHTML( // If the object has been localised in the current locale, show a "localised" state $badgeClasses[] = 'fluent-badge--default'; $tooltip = _t( - 'FluentBadgeTrait.BadgeLocalised', + 'TractorCow\Fluent\Extension\Traits\FluentBadgeTrait.BadgeLocalised', 'Localised in {locale}', [ 'locale' => $locale->getTitle() @@ -86,7 +86,7 @@ protected function generateBadgeHTML( // If object is inheriting content from another locale show the source $badgeClasses[] = 'fluent-badge--localised'; $tooltip = _t( - 'FluentBadgeTrait.BadgeInherited', + 'TractorCow\Fluent\Extension\Traits\FluentBadgeTrait.BadgeInherited', 'Inherited from {locale}', [ 'locale' => $info->getSourceLocale()->getTitle() @@ -97,7 +97,7 @@ protected function generateBadgeHTML( // by either localising or seting up a locale fallback $badgeClasses[] = 'fluent-badge--invisible'; $tooltip = _t( - 'FluentBadgeTrait.BaggeInvisible', + 'TractorCow\Fluent\Extension\Traits\FluentBadgeTrait.BaggeInvisible', '{type} has no available content in {locale}, localise the {type} or provide a locale fallback', [ 'type' => $record->i18n_singular_name(), diff --git a/src/Extension/Traits/FluentObjectTrait.php b/src/Extension/Traits/FluentObjectTrait.php index 248afa03..aae4cd7a 100644 --- a/src/Extension/Traits/FluentObjectTrait.php +++ b/src/Extension/Traits/FluentObjectTrait.php @@ -128,7 +128,7 @@ protected function updateFluentCMSFields(FieldList $fields) $fields ->fieldByName('Root.Locales') - ->setTitle(_t('FluentObjectTrait.TAB_LOCALISATION', 'Localisation')); + ->setTitle(_t('TractorCow\Fluent\Extension\Traits\FluentObjectTrait.TAB_LOCALISATION', 'Localisation')); } else { $fields->push($gridField); }