Language.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. /**
  3. * Google AdWords language source
  4. *
  5. * Copyright © Magento, Inc. All rights reserved.
  6. * See COPYING.txt for license details.
  7. */
  8. namespace Magento\GoogleAdwords\Model\Config\Source;
  9. /**
  10. * @SuppressWarnings(PHPMD.LongVariable)
  11. * @api
  12. * @since 100.0.2
  13. */
  14. class Language implements \Magento\Framework\Option\ArrayInterface
  15. {
  16. /**
  17. * @var \Magento\GoogleAdwords\Helper\Data
  18. */
  19. protected $_helper;
  20. /**
  21. * @var \Magento\GoogleAdwords\Model\Filter\UppercaseTitle
  22. */
  23. protected $_uppercaseFilter;
  24. /**
  25. * @param \Magento\GoogleAdwords\Helper\Data $helper
  26. * @param \Magento\GoogleAdwords\Model\Filter\UppercaseTitle $uppercaseFilter
  27. */
  28. public function __construct(
  29. \Magento\GoogleAdwords\Helper\Data $helper,
  30. \Magento\GoogleAdwords\Model\Filter\UppercaseTitle $uppercaseFilter
  31. ) {
  32. $this->_helper = $helper;
  33. $this->_uppercaseFilter = $uppercaseFilter;
  34. }
  35. /**
  36. * Return option array
  37. *
  38. * @return array
  39. */
  40. public function toOptionArray()
  41. {
  42. $languages = [];
  43. foreach ($this->_helper->getLanguageCodes() as $languageCode) {
  44. $localeCode = $this->_helper->convertLanguageCodeToLocaleCode($languageCode);
  45. $translationForSpecifiedLanguage = \Locale::getDisplayLanguage($localeCode, $localeCode);
  46. $translationForDefaultLanguage = \Locale::getDisplayLanguage($localeCode);
  47. $label = sprintf(
  48. '%s / %s (%s)',
  49. $this->_uppercaseFilter->filter($translationForSpecifiedLanguage),
  50. $translationForDefaultLanguage,
  51. $languageCode
  52. );
  53. $languages[] = ['value' => $languageCode, 'label' => $label];
  54. }
  55. return $languages;
  56. }
  57. }