Resolver.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Backend\Model\Locale;
  7. /**
  8. * Backend locale model
  9. * @api
  10. * @since 100.0.2
  11. */
  12. class Resolver extends \Magento\Framework\Locale\Resolver
  13. {
  14. /**
  15. * @var \Magento\Backend\Model\Session
  16. */
  17. protected $_session;
  18. /**
  19. * @var \Magento\Backend\Model\Locale\Manager
  20. */
  21. protected $_localeManager;
  22. /**
  23. * @var \Magento\Framework\App\RequestInterface
  24. */
  25. protected $_request;
  26. /**
  27. * @var \Magento\Framework\Validator\Locale
  28. */
  29. protected $_localeValidator;
  30. /**
  31. * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
  32. * @param string $defaultLocalePath
  33. * @param string $scopeType
  34. * @param \Magento\Backend\Model\Session $session
  35. * @param Manager $localeManager
  36. * @param \Magento\Framework\App\RequestInterface $request
  37. * @param \Magento\Framework\Validator\Locale $localeValidator
  38. * @param null $locale
  39. * @SuppressWarnings(PHPMD.ExcessiveParameterList)
  40. */
  41. public function __construct(
  42. \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
  43. $defaultLocalePath,
  44. $scopeType,
  45. \Magento\Backend\Model\Session $session,
  46. \Magento\Backend\Model\Locale\Manager $localeManager,
  47. \Magento\Framework\App\RequestInterface $request,
  48. \Magento\Framework\Validator\Locale $localeValidator,
  49. $locale = null
  50. ) {
  51. $this->_session = $session;
  52. $this->_localeManager = $localeManager;
  53. $this->_request = $request;
  54. $this->_localeValidator = $localeValidator;
  55. parent::__construct($scopeConfig, $defaultLocalePath, $scopeType, $locale);
  56. }
  57. /**
  58. * Set locale
  59. *
  60. * @param string $locale
  61. * @return $this
  62. */
  63. public function setLocale($locale = null)
  64. {
  65. $forceLocale = $this->_request->getParam('locale', null);
  66. if (!$this->_localeValidator->isValid($forceLocale)) {
  67. $forceLocale = false;
  68. }
  69. $sessionLocale = $this->_session->getSessionLocale();
  70. $userLocale = $this->_localeManager->getUserInterfaceLocale();
  71. $localeCodes = array_filter([$forceLocale, $sessionLocale, $userLocale]);
  72. if (count($localeCodes)) {
  73. $locale = reset($localeCodes);
  74. }
  75. return parent::setLocale($locale);
  76. }
  77. }