translateById() публичный Метод

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.
См. также: Translator::translateByOriginalLabel()
public translateById ( string $labelId, array $arguments = [], mixed $quantity = null, Locale $locale = null, string $sourceName = 'Main', string $packageKey = 'Neos.Flow' ) : string
$labelId string Key to use for finding translation
$arguments array An array of values to replace placeholders with
$quantity mixed A number to find plural form for (float or int), NULL to not use plural forms
$locale Locale Locale to use (NULL for default one)
$sourceName string Name of file with translations, base path is $packageKey/Resources/Private/Locale/Translations/
$packageKey string Key of the package containing the source file
Результат string Translated message or NULL on failure
Пример #1
0
 /**
  * Executes this finisher
  * @see AbstractFinisher::execute()
  *
  * @return void
  * @throws FinisherException
  */
 protected function executeInternal()
 {
     $formRuntime = $this->finisherContext->getFormRuntime();
     $labelId = $this->parseOption('translation.id');
     if ($labelId !== null) {
         $locale = null;
         $localeIdentifier = $this->parseOption('translation.locale');
         if ($localeIdentifier !== null) {
             try {
                 $locale = new Locale($localeIdentifier);
             } catch (InvalidLocaleIdentifierException $exception) {
                 throw new FinisherException(sprintf('"%s" is not a valid locale identifier.', $locale), 1421325113, $exception);
             }
         }
         $messagePackageKey = $this->parseOption('translation.package');
         if ($messagePackageKey === null) {
             $renderingOptions = $formRuntime->getRenderingOptions();
             $messagePackageKey = $renderingOptions['translationPackage'];
         }
         $message = $this->translator->translateById($labelId, array(), null, $locale, $this->parseOption('translation.source'), $messagePackageKey);
     } else {
         $message = $this->parseOption('message');
     }
     $formRuntime->getResponse()->setContent($message);
 }
 /**
  * Renders the translated label.
  * Replaces all placeholders with corresponding values if they exist in the
  * translated label.
  *
  * @param string $id Id to use for finding translation (trans-unit id in XLIFF)
  * @param string $value If $key is not specified or could not be resolved, this value is used. If this argument is not set, child nodes will be used to render the default
  * @param array $arguments Numerically indexed array of values to be inserted into placeholders
  * @param string $source Name of file with translations (use / as a directory separator)
  * @param string $package Target package key. If not set, the current package key will be used
  * @param mixed $quantity A number to find plural form for (float or int), NULL to not use plural forms
  * @param string $locale An identifier of locale to use (NULL for use the default locale)
  * @return string Translated label or source label / ID key
  * @throws ViewHelperException
  */
 public function render($id = null, $value = null, array $arguments = array(), $source = 'Main', $package = null, $quantity = null, $locale = null)
 {
     $localeObject = null;
     if ($locale !== null) {
         try {
             $localeObject = new Locale($locale);
         } catch (InvalidLocaleIdentifierException $e) {
             throw new ViewHelperException(sprintf('"%s" is not a valid locale identifier.', $locale), 1279815885);
         }
     }
     if ($package === null) {
         $request = $this->renderingContext->getControllerContext()->getRequest();
         if ($request instanceof ActionRequest) {
             $package = $request->getControllerPackageKey();
         }
         if ($package === null) {
             throw new ViewHelperException('The current package key can\'t be resolved. Make sure to initialize the Fluid view with a proper ActionRequest and/or specify the "package" argument when using the f:translate ViewHelper', 1416832309);
         }
     }
     $originalLabel = $value === null ? $this->renderChildren() : $value;
     if ($id === null) {
         return (string) $this->translator->translateByOriginalLabel($originalLabel, $arguments, $quantity, $localeObject, $source, $package);
     }
     $translation = $this->translator->translateById($id, $arguments, $quantity, $localeObject, $source, $package);
     if ($translation !== null) {
         return (string) $translation;
     }
     if ($originalLabel !== null) {
         return $originalLabel;
     }
     return (string) $id;
 }
Пример #3
0
 /**
  * Discards content of the whole workspace
  *
  * @param Workspace $workspace
  * @return void
  */
 public function discardWorkspaceAction(Workspace $workspace)
 {
     $unpublishedNodes = $this->publishingService->getUnpublishedNodes($workspace);
     $this->publishingService->discardNodes($unpublishedNodes);
     $this->addFlashMessage($this->translator->translateById('workspaces.allChangesInWorkspaceHaveBeenDiscarded', [htmlspecialchars($workspace->getTitle())], null, null, 'Modules', 'Neos.Neos'));
     $this->redirect('index');
 }
 /**
  * @test
  * @dataProvider translateByIdDataProvider
  * @param string $id
  * @param string $translatedId
  * @param string $expectedResult
  */
 public function translateByIdTests($id, $translatedId, $expectedResult)
 {
     $mockTranslationProvider = $this->createMock(XliffTranslationProvider::class);
     $mockTranslationProvider->expects($this->once())->method('getTranslationById')->with($id)->will($this->returnValue($translatedId));
     $this->translator->injectTranslationProvider($mockTranslationProvider);
     $actualResult = $this->translator->translateById($id);
     $this->assertSame($expectedResult, $actualResult);
 }
 /**
  * @param string $property
  * @param FormElementInterface $element
  * @return string the rendered form head
  */
 public function render($property, FormElementInterface $element = null)
 {
     if ($element === null) {
         $element = $this->renderChildren();
     }
     if ($property === 'label') {
         $defaultValue = $element->getLabel();
     } else {
         $defaultValue = isset($element->getProperties()[$property]) ? (string) $element->getProperties()[$property] : '';
     }
     $renderingOptions = $element->getRenderingOptions();
     if (!isset($renderingOptions['translationPackage'])) {
         return $defaultValue;
     }
     $translationId = sprintf('forms.elements.%s.%s', $element->getIdentifier(), $property);
     try {
         $translation = $this->translator->translateById($translationId, [], null, null, 'Main', $renderingOptions['translationPackage']);
     } catch (ResourceException $exception) {
         return $defaultValue;
     }
     return $translation === null ? $defaultValue : $translation;
 }
 /**
  * Translate according to currently collected parameters
  *
  * @param array $overrides An associative array to override the collected parameters
  * @return string
  */
 public function translate(array $overrides = [])
 {
     array_replace_recursive($this->parameters, $overrides);
     $id = isset($this->parameters['id']) ? $this->parameters['id'] : null;
     $value = isset($this->parameters['value']) ? $this->parameters['value'] : null;
     $arguments = isset($this->parameters['arguments']) ? $this->parameters['arguments'] : [];
     $source = isset($this->parameters['source']) ? $this->parameters['source'] : 'Main';
     $package = isset($this->parameters['package']) ? $this->parameters['package'] : null;
     $quantity = isset($this->parameters['quantity']) ? $this->parameters['quantity'] : null;
     $locale = isset($this->parameters['locale']) ? $this->parameters['locale'] : null;
     if ($id === null) {
         return $this->translator->translateByOriginalLabel($value, $arguments, $quantity, $locale, $source, $package);
     }
     $translation = $this->translator->translateById($id, $arguments, $quantity, $locale, $source, $package);
     if ($translation === null && $value !== null) {
         return $this->translator->translateByOriginalLabel($value, $arguments, $quantity, $locale, $source, $package);
     }
     return $translation;
 }
 /**
  * @test
  */
 public function translationByIdReturnsNullOnFailure()
 {
     $result = $this->translator->translateById('non-existing-id');
     $this->assertNull($result);
 }
 /**
  * Returns a translated version of the given label
  *
  * @param string $value option tag value
  * @param string $label option tag label
  * @return string
  * @throws ViewHelper\Exception
  * @throws Fluid\Exception
  */
 protected function getTranslatedLabel($value, $label)
 {
     $translationConfiguration = $this->arguments['translate'];
     $translateBy = isset($translationConfiguration['by']) ? $translationConfiguration['by'] : 'id';
     $sourceName = isset($translationConfiguration['source']) ? $translationConfiguration['source'] : 'Main';
     $request = $this->controllerContext->getRequest();
     $packageKey = null;
     if (isset($translationConfiguration['package'])) {
         $packageKey = $translationConfiguration['package'];
     } elseif ($request instanceof ActionRequest) {
         $packageKey = $request->getControllerPackageKey();
     }
     $prefix = isset($translationConfiguration['prefix']) ? $translationConfiguration['prefix'] : '';
     if (isset($translationConfiguration['locale'])) {
         try {
             $localeObject = new Locale($translationConfiguration['locale']);
         } catch (InvalidLocaleIdentifierException $e) {
             throw new ViewHelper\Exception('"' . $translationConfiguration['locale'] . '" is not a valid locale identifier.', 1330013193);
         }
     } else {
         $localeObject = null;
     }
     switch ($translateBy) {
         case 'label':
             $label = isset($translationConfiguration['using']) && $translationConfiguration['using'] === 'value' ? $value : $label;
             return $this->translator->translateByOriginalLabel($label, array(), null, $localeObject, $sourceName, $packageKey);
         case 'id':
             $id = $prefix . (isset($translationConfiguration['using']) && $translationConfiguration['using'] === 'label' ? $label : $value);
             $translation = $this->translator->translateById($id, array(), null, $localeObject, $sourceName, $packageKey);
             return $translation !== null ? $translation : $label;
         default:
             throw new ViewHelper\Exception('You can only request to translate by "label" or by "id", but asked for "' . $translateBy . '" in your SelectViewHelper tag.', 1340050647);
     }
 }
 /**
  * Add a translated flashMessage.
  *
  * @param string $messageBody The translation id for the message body.
  * @param string $messageTitle The translation id for the message title.
  * @param string $severity
  * @param array $messageArguments
  * @param integer $messageCode
  * @return void
  */
 public function addFlashMessage($messageBody, $messageTitle = '', $severity = Message::SEVERITY_OK, array $messageArguments = array(), $messageCode = null)
 {
     if (is_string($messageBody)) {
         $messageBody = $this->translator->translateById($messageBody, $messageArguments, null, null, 'Main', 'Neos.Media') ?: $messageBody;
     }
     $messageTitle = $this->translator->translateById($messageTitle, $messageArguments, null, null, 'Main', 'Neos.Media');
     parent::addFlashMessage($messageBody, $messageTitle, $severity, $messageArguments, $messageCode);
 }