Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. public function exportTranslations($group = null, $json = false)
  2. {
  3. $basePath = $this->app['path.lang'];
  4.  
  5. if (! is_null($group) && ! $json) {
  6. if (! in_array($group, $this->config['exclude_groups'])) {
  7. $vendor = false;
  8. if ($group == '*') {
  9. return $this->exportAllTranslations();
  10. } else {
  11. if (Str::startsWith($group, 'vendor')) {
  12. $vendor = true;
  13. }
  14. }
  15.  
  16. $tree = $this->makeTree(Translation::ofTranslatedGroup($group)
  17. ->orderByGroupKeys(Arr::get($this->config, 'sort_keys', false))
  18. ->get());
  19.  
  20. foreach ($tree as $locale => $groups) {
  21. if (isset($groups[$group])) {
  22. $translations = $groups[$group];
  23. $path = $this->app['path.lang'];
  24.  
  25. $locale_path = $locale.DIRECTORY_SEPARATOR.$group;
  26. if ($vendor) {
  27. $path = $basePath.'/'.$group.'/'.$locale;
  28. $locale_path = Str::after($group, '/');
  29. }
  30. $subfolders = explode(DIRECTORY_SEPARATOR, $locale_path);
  31. array_pop($subfolders);
  32.  
  33. $subfolder_level = '';
  34. foreach ($subfolders as $subfolder) {
  35. $subfolder_level = $subfolder_level.$subfolder.DIRECTORY_SEPARATOR;
  36.  
  37. $temp_path = rtrim($path.DIRECTORY_SEPARATOR.$subfolder_level, DIRECTORY_SEPARATOR);
  38. if (! is_dir($temp_path)) {
  39. mkdir($temp_path, 0777, true);
  40. }
  41. }
  42.  
  43. $path = $path.DIRECTORY_SEPARATOR.$locale.DIRECTORY_SEPARATOR.$group.'.php';
  44.  
  45. $output = "<?php\n\nreturn ".var_export($translations, true).';'.\PHP_EOL;
  46. $this->files->put($path, $output);
  47. }
  48. }
  49. Translation::ofTranslatedGroup($group)->update(['status' => Translation::STATUS_SAVED]);
  50. }
  51. }
  52.  
  53. if ($json) {
  54. $tree = $this->makeTree(Translation::ofTranslatedGroup(self::JSON_GROUP)
  55. ->orderByGroupKeys(Arr::get($this->config, 'sort_keys', false))
  56. ->get(), true);
  57.  
  58. foreach ($tree as $locale => $groups) {
  59. if (isset($groups[self::JSON_GROUP])) {
  60. $translations = $groups[self::JSON_GROUP];
  61. $path = $this->app['path.lang'].'/'.$locale.'.json';
  62. $output = json_encode($translations, \JSON_PRETTY_PRINT | \JSON_UNESCAPED_UNICODE);
  63. $this->files->put($path, $output);
  64. }
  65. }
  66.  
  67. Translation::ofTranslatedGroup(self::JSON_GROUP)->update(['status' => Translation::STATUS_SAVED]);
  68. }
  69.  
  70. $this->events->dispatch(new TranslationsExportedEvent());
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement