public function postEdit(Request $request, $group, $locale, $key) { $g = Group::find($group); if (!in_array($g->label, $this->manager->getConfig('exclude_groups'))) { $translation = Translation::firstOrNew(['locale_id' => $locale, 'group_id' => $g->id, 'key' => $key]); $translation->value = (string) $request->get('value') ?: null; $translation->status = Translation::STATUS_CHANGED; $translation->save(); return back(); } }
public function importTranslations() { $counter = 0; foreach ($this->files->directories($this->app->langPath()) as $langPath) { $locale = basename($langPath); foreach ($this->files->allfiles($langPath) as $file) { $info = pathinfo($file); $group = $info['filename']; if (in_array($group, $this->config['exclude_groups'])) { continue; } if ($langPath != $info['dirname']) { $group = substr(str_replace($langPath, '', $info['dirname']) . '/' . $info['filename'], 1); } $g = Group::firstOrNew(array('label' => $group)); $g->save(); $l = Locale::firstOrNew(array('label' => $locale)); $l->save(); $translations = \Lang::getLoader()->load($locale, $group); if ($translations && is_array($translations)) { foreach (array_dot($translations) as $key => $value) { // process only string values if (is_array($value)) { continue; } $value = (string) $value; $translation = Translation::firstOrNew(['locale_id' => $l->id, 'key' => $key]); $g->translations()->save($translation); // Check if the database is different then the files $newStatus = $translation->value === $value ? Translation::STATUS_SAVED : Translation::STATUS_CHANGED; if ($newStatus !== (int) $translation->status) { $translation->status = $newStatus; } $translation->value = $value; $translation->save(); $counter++; } } } } return $counter; }