PhpMessageSource.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. /**
  3. * FecShop file.
  4. *
  5. * @link http://www.fecshop.com/
  6. * @copyright Copyright (c) 2016 FecShop Software LLC
  7. * @license http://www.fecshop.com/license/
  8. */
  9. namespace fecshop\yii\i18n;
  10. use Yii;
  11. use yii\i18n\PhpMessageSource as YiiPhpMessageSource;
  12. /**
  13. * @author Terry Zhao <2358269014@qq.com>
  14. * @since 1.0
  15. */
  16. class PhpMessageSource extends YiiPhpMessageSource
  17. {
  18. public $basePaths = [];
  19. protected function loadMessages($category, $language)
  20. {
  21. $message_merge = [];
  22. if (is_array($this->basePaths) && !empty($this->basePaths)) {
  23. $paths = array_reverse($this->basePaths);
  24. foreach ($paths as $base) {
  25. $this->basePath = $base;
  26. $messageFile = $this->getMessageFilePath($category, $language);
  27. $messages = $this->loadMessagesFromFile($messageFile);
  28. $fallbackLanguage = substr($language, 0, 2);
  29. $fallbackSourceLanguage = substr($this->sourceLanguage, 0, 2);
  30. if ($language !== $fallbackLanguage) {
  31. $messages = $this->loadFallbackMessages($category, $fallbackLanguage, $messages, $messageFile);
  32. } elseif ($language === $fallbackSourceLanguage) {
  33. $messages = $this->loadFallbackMessages($category, $this->sourceLanguage, $messages, $messageFile);
  34. } else {
  35. if ($messages === null) {
  36. Yii::error("The message file for category '$category' does not exist: $messageFile", __METHOD__);
  37. }
  38. }
  39. if (is_array($messages)) {
  40. $message_merge = array_merge($messages, $message_merge);
  41. }
  42. }
  43. //var_dump($message_merge);exit;
  44. return (array) $message_merge;
  45. }
  46. }
  47. }