|
4 | 4 | use Illuminate\Routing\Controller as BaseController;
|
5 | 5 | use Barryvdh\TranslationManager\Models\Translation;
|
6 | 6 | use Illuminate\Support\Collection;
|
7 |
| -use Illuminate\Support\Facades\Artisan; |
| 7 | +use Tanmuhittin\LaravelGoogleTranslate\Commands\TranslateFilesCommand; |
8 | 8 |
|
9 | 9 | class Controller extends BaseController
|
10 | 10 | {
|
@@ -174,24 +174,28 @@ public function postRemoveLocale(Request $request)
|
174 | 174 | public function postTranslateMissing(Request $request){
|
175 | 175 | $locales = $this->manager->getLocales();
|
176 | 176 | $newLocale = str_replace([], '-', trim($request->input('new-locale')));
|
177 |
| - if($request->has('with-translations') && $request->has('base-locale') && in_array($request->input('base-locale'),$locales) && $request->has('file')){ |
178 |
| - $json = false; |
| 177 | + if($request->has('with-translations') && $request->has('base-locale') && in_array($request->input('base-locale'),$locales) && $request->has('file') && in_array($newLocale, $locales)){ |
| 178 | + $base_locale = $request->get('base-locale'); |
179 | 179 | $group = $request->get('file');
|
180 |
| - if($group === '_json'){ |
181 |
| - //$json = true; |
182 |
| - //$file_name = $newLocale.'_json'; |
183 |
| - return redirect()->back(); |
184 |
| - }else{ |
185 |
| - $file_name = $group.'.php'; |
| 180 | + $base_strings = Translation::where('group', $group)->where('locale', $base_locale)->get(); |
| 181 | + foreach ($base_strings as $base_string) { |
| 182 | + $base_query = Translation::where('group', $group)->where('locale', $newLocale)->where('key', $base_string->key); |
| 183 | + if ($base_query->exists() && $base_query->whereNotNull('value')->exists()) { |
| 184 | + // Translation already exists. Skip |
| 185 | + continue; |
| 186 | + } |
| 187 | + $translated_text = TranslateFilesCommand::translate($base_locale, $newLocale, $base_string->value); |
| 188 | + request()->replace([ |
| 189 | + 'value' => $translated_text, |
| 190 | + 'name' => $newLocale . '|' . $base_string->key, |
| 191 | + ]); |
| 192 | + app()->call( |
| 193 | + 'Barryvdh\TranslationManager\Controller@postEdit', |
| 194 | + [ |
| 195 | + 'group' => $group |
| 196 | + ] |
| 197 | + ); |
186 | 198 | }
|
187 |
| - $this->manager->addLocale($newLocale); |
188 |
| - $this->manager->exportTranslations($group, $json); |
189 |
| - Artisan::call("translate:files",[ |
190 |
| - '--baselocale' => $request->input('base-locale'), |
191 |
| - '--targetlocales' => $newLocale, |
192 |
| - '--targetfiles' => $file_name |
193 |
| - ]); |
194 |
| - $this->manager->importTranslations(false,null,$group); |
195 | 199 | return redirect()->back();
|
196 | 200 | }
|
197 | 201 | return redirect()->back();
|
|
0 commit comments