Translate.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. /**
  3. * Translate Phrase renderer
  4. *
  5. * Copyright © Magento, Inc. All rights reserved.
  6. * See COPYING.txt for license details.
  7. */
  8. namespace Magento\Framework\Phrase\Renderer;
  9. use Magento\Framework\Phrase\RendererInterface;
  10. use Magento\Framework\TranslateInterface;
  11. use Psr\Log\LoggerInterface;
  12. class Translate implements RendererInterface
  13. {
  14. /**
  15. * @var \Magento\Framework\TranslateInterface
  16. */
  17. protected $translator;
  18. /**
  19. * @var \Psr\Log\LoggerInterface
  20. */
  21. protected $logger;
  22. /**
  23. * Renderer construct
  24. *
  25. * @param \Magento\Framework\TranslateInterface $translator
  26. * @param \Psr\Log\LoggerInterface $logger
  27. */
  28. public function __construct(
  29. TranslateInterface $translator,
  30. LoggerInterface $logger
  31. ) {
  32. $this->translator = $translator;
  33. $this->logger = $logger;
  34. }
  35. /**
  36. * Render source text
  37. *
  38. * @param [] $source
  39. * @param [] $arguments
  40. * @return string
  41. * @throws \Exception
  42. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  43. */
  44. public function render(array $source, array $arguments)
  45. {
  46. $text = end($source);
  47. /* If phrase contains escaped quotes then use translation for phrase with non-escaped quote */
  48. $text = str_replace('\"', '"', $text);
  49. $text = str_replace("\\'", "'", $text);
  50. try {
  51. $data = $this->translator->getData();
  52. } catch (\Exception $e) {
  53. $this->logger->critical($e->getMessage());
  54. throw $e;
  55. }
  56. return array_key_exists($text, $data) ? $data[$text] : end($source);
  57. }
  58. }