LangCreator.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace Dcat\Admin\Scaffold;
  3. use Dcat\Admin\Support\Helper;
  4. use Illuminate\Support\Facades\App;
  5. use Illuminate\Support\Str;
  6. class LangCreator
  7. {
  8. protected $fields = [];
  9. public function __construct(array $fields)
  10. {
  11. $this->fields = $fields;
  12. }
  13. /**
  14. * 生成语言包.
  15. *
  16. * @param string $controller
  17. *
  18. * @return string
  19. */
  20. public function create(string $controller)
  21. {
  22. $controller = str_replace('Controller', '', class_basename($controller));
  23. $filename = $this->getLangPath($controller);
  24. if (is_file($filename)) {
  25. return;
  26. }
  27. $content = [
  28. 'labels' => [
  29. $controller => $controller,
  30. ],
  31. 'fields' => [],
  32. 'options' => [],
  33. ];
  34. foreach ($this->fields as $field) {
  35. if (empty($field['name'])) {
  36. continue;
  37. }
  38. $content['fields'][$field['name']] = $field['translation'] ?: $field['name'];
  39. }
  40. if (app('files')->put($filename, Helper::exportArrayPhp($content))) {
  41. return $filename;
  42. }
  43. }
  44. /**
  45. * 获取语言包路径.
  46. *
  47. * @param string $controller
  48. *
  49. * @return string
  50. */
  51. protected function getLangPath(string $controller)
  52. {
  53. $path = resource_path('lang/'.App::getLocale());
  54. return $path.'/'.Str::slug($controller).'.php';
  55. }
  56. }