<?php namespace Illuminate\Translation; use Illuminate\Filesystem\Filesystem; class FileLoader implements LoaderInterface {// FileLoader implements Loader Interface /** * The filesystem instance. * * @var \Illuminate\Filesystem\Filesystem */ protected $files;//The filesystem instance. /** * The default path for the loader. * * @var string */ protected $path;//The default path for the loader. /** * All of the namespace hints. * * @var array */ protected $hints = [];// All of the namespace hints. /** * Create a new file loader instance. * * @param \Illuminate\Filesystem\Filesystem $files * @param string $path * @return void */ public function __construct(Filesystem $files, $path) { $this->path = $path;// path $this->files = $files;// files }//Create a new file loader instance. /** * Load the messages for the given locale. * * @param string $locale * @param string $group * @param string $namespace * @return array */ public function load($locale, $group, $namespace = null) { if (is_null($namespace) || $namespace == ‘*‘) { return $this->loadPath($this->path, $locale, $group);// two type,one is loadPath }//locale group and namespace return $this->loadNamespaced($locale, $group, $namespace);// Load Namespace }//Load the messages for the given locale. /** * Load a namespaced translation group. * * @param string $locale * @param string $group * @param string $namespace * @return array */ protected function loadNamespaced($locale, $group, $namespace) {//Load a namespaced translation group if (isset($this->hints[$namespace])) {// if it is set $lines = $this->loadPath($this->hints[$namespace], $locale, $group);//get this line return $this->loadNamespaceOverrides($lines, $locale, $group, $namespace);// return a wrap function } return [];//default null } /** * Load a local namespaced translation group for overrides. * * @param array $lines * @param string $locale * @param string $group * @param string $namespace * @return array */ protected function loadNamespaceOverrides(array $lines, $locale, $group, $namespace) {//another load space $file = "{$this->path}/vendor/{$namespace}/{$locale}/{$group}.php";//get this file if ($this->files->exists($file)) {// if it is exists return array_replace_recursive($lines, $this->files->getRequire($file)); }// return this thing return $lines;// return line } /** * Load a locale from a given path. * * @param string $path * @param string $locale * @param string $group * @return array */ protected function loadPath($path, $locale, $group) { if ($this->files->exists($full = "{$path}/{$locale}/{$group}.php")) { return $this->files->getRequire($full); }// like include file by path ,the full is the full path return [];// null }//load a locale from a given path /** * Add a new namespace to the loader. * * @param string $namespace * @param string $hint * @return void */ public function addNamespace($namespace, $hint) { $this->hints[$namespace] = $hint; }// addNamespace //Add a new namespace to the loader }
时间: 2024-11-07 11:15:02