resolvePlaceholders() public method

A placeholder is a group of elements separated with comma. First element is required and defines index of value to insert (numeration starts from 0, and is directly used to access element from $values array). Second element is a name of formatter to use. It's optional, and if not given, value will be simply string-casted. Remaining elements are formatter- specific and they are directly passed to the formatter class.
public resolvePlaceholders ( string $textWithPlaceholders, array $arguments, Locale $locale = null ) : string
$textWithPlaceholders string String message with placeholder(s)
$arguments array An array of values to replace placeholders with
$locale Locale Locale to use (NULL for default one)
return string The $text with placeholders resolved
コード例 #1
0
 /**
  * @test
  */
 public function formatResolverWorksCorrectlyForFullyQualifiedFormatterClassNames()
 {
     $actualFormatter = new Fixtures\SampleFormatter();
     $locale = new I18n\Locale('de');
     $testResult = $this->formatResolver->resolvePlaceholders(sprintf('{0,%s}', Fixtures\SampleFormatter::class), ['foo'], $locale);
     $this->assertEquals($actualFormatter->format('foo', $locale), $testResult);
 }
コード例 #2
0
 /**
  * Returns translated string found under the $labelId.
  *
  * Searches for a translation in the source as defined by $sourceName
  * (interpretation depends on concrete translation provider used).
  *
  * If any arguments are provided in the $arguments array, they will be inserted
  * to the translated string (in place of corresponding placeholders, with
  * format defined by these placeholders).
  *
  * If $quantity is provided, correct plural form for provided $locale will
  * be chosen and used to choose correct translation variant.
  *
  * @param string $labelId Key to use for finding translation
  * @param array $arguments An array of values to replace placeholders with
  * @param mixed $quantity A number to find plural form for (float or int), NULL to not use plural forms
  * @param Locale $locale Locale to use (NULL for default one)
  * @param string $sourceName Name of file with translations, base path is $packageKey/Resources/Private/Locale/Translations/
  * @param string $packageKey Key of the package containing the source file
  * @return string Translated message or NULL on failure
  * @api
  * @see Translator::translateByOriginalLabel()
  */
 public function translateById($labelId, array $arguments = [], $quantity = null, Locale $locale = null, $sourceName = 'Main', $packageKey = 'Neos.Flow')
 {
     if ($locale === null) {
         $locale = $this->localizationService->getConfiguration()->getCurrentLocale();
     }
     $pluralForm = $this->getPluralForm($quantity, $locale);
     $translatedMessage = $this->translationProvider->getTranslationById($labelId, $locale, $pluralForm, $sourceName, $packageKey);
     if ($translatedMessage === false) {
         return null;
     }
     if (!empty($arguments)) {
         return $this->formatResolver->resolvePlaceholders($translatedMessage, $arguments, $locale);
     }
     return $translatedMessage;
 }
コード例 #3
0
 /**
  * @test
  * @expectedException \Neos\Flow\I18n\Exception\UnknownFormatterException
  */
 public function throwsExceptionWhenFormatterDoesNotExist()
 {
     $mockObjectManager = $this->createMock(ObjectManagerInterface::class);
     $mockObjectManager->expects($this->at(0))->method('isRegistered')->with('foo')->will($this->returnValue(false));
     $mockObjectManager->expects($this->at(1))->method('isRegistered')->with('Neos\\Flow\\I18n\\Formatter\\FooFormatter')->will($this->returnValue(false));
     $formatResolver = new I18n\FormatResolver();
     $formatResolver->injectObjectManager($mockObjectManager);
     $formatResolver->resolvePlaceholders('{0,foo}', [123], $this->sampleLocale);
 }