API Update translation to use symfony 6

This commit is contained in:
Steve Boyd 2022-09-08 11:52:34 +12:00
parent 8fe2a786dc
commit a87a657367
4 changed files with 9 additions and 13 deletions

View File

@ -33,7 +33,7 @@ SilverStripe\Core\Injector\Injector:
constructor:
0: [ '%$Symfony\Component\Config\Resource\SelfCheckingResourceChecker' ]
# Create default translator with standard cache path and our custom loader
Symfony\Component\Translation\TranslatorInterface:
Symfony\Contracts\Translation\TranslatorInterface:
class: Symfony\Component\Translation\Translator
constructor:
0: 'en'
@ -48,7 +48,7 @@ SilverStripe\Core\Injector\Injector:
SilverStripe\i18n\Messages\MessageProvider:
class: SilverStripe\i18n\Messages\Symfony\SymfonyMessageProvider
properties:
Translator: '%$Symfony\Component\Translation\TranslatorInterface'
Translator: '%$Symfony\Contracts\Translation\TranslatorInterface'
---
Name: textcollector
---

View File

@ -41,7 +41,7 @@
"symfony/cache": "^6.1",
"symfony/config": "^6.1",
"symfony/filesystem": "^6.1",
"symfony/translation": "^4.4.44",
"symfony/translation": "^6.1",
"symfony/yaml": "^6.1",
"ext-ctype": "*",
"ext-dom": "*",

View File

@ -2,12 +2,10 @@
namespace SilverStripe\i18n\Messages\Symfony;
use SilverStripe\Core\Config\Configurable;
use SilverStripe\Dev\Debug;
use SilverStripe\i18n\i18n;
use SilverStripe\i18n\Messages\Reader;
use Symfony\Component\Translation\Loader\ArrayLoader;
use Symfony\Component\Translation\PluralizationRules;
use Symfony\Component\Translation\MessageCatalogue;
/**
* Loads yaml localisations across all modules simultaneously.
@ -23,7 +21,7 @@ class ModuleYamlLoader extends ArrayLoader
*/
protected $reader = null;
public function load($resource, $locale, $domain = 'messages')
public function load(mixed $resource, string $locale, string $domain = 'messages'): MessageCatalogue
{
$messages = [];
foreach ($resource as $path) {

View File

@ -115,17 +115,15 @@ class SymfonyMessageProvider implements MessageProvider
$this->load($locale);
// Prepare arguments
$arguments = $this->templateInjection(array_merge(
$injection,
[ 'count' => $count ]
));
$arguments = $this->templateInjection($injection);
$arguments['%count%'] = $count;
// Pass to symfony translator
$result = $this->getTranslator()->transChoice($entity, $count, $arguments, 'messages', $locale);
$result = $this->getTranslator()->trans($entity, $arguments, 'messages', $locale);
// Manually inject default if no translation found
if ($entity === $result) {
$result = $this->getTranslator()->transChoice($default, $count, $arguments, 'messages', $locale);
$result = $this->getTranslator()->trans($default, $arguments, 'messages', $locale);
}
return $result;