this is my laravel code, however im having problems writting down in the locales files. If i only right the title it works, however if i also add the description only the description is writted and the title ignored. I have tried multiple solutions in other forums, chatGPT, but still cant fix this problem.
Can someone please help me? I really need to fix this ASAP for my boss!
Ty all!
<code><?php
namespace AppLivewire;
use AppModelsService;
use AppModelsServiceCategory;
use CarbonCarbon;
use LivewireComponent;
use StichozaGoogleTranslateGoogleTranslate;
use IlluminateSupportFacadesLog;
class ManageServices extends Component
{
public $name;
public $description;
public $price;
public $duration;
public $category;
public function render()
{
$categories = ServiceCategory::get();
$services = Service::with('category')->get();
return view('livewire.manage-services', ['services' => $services, 'categories' => $categories]);
}
public function save()
{
try {
$this->validate([
'name' => 'required|string|min:1',
'description' => 'required|string|min:1',
'price' => 'required|numeric|min:1',
'duration' => 'required|numeric|min:1',
'category' => 'required|numeric',
]);
$currentDate = Carbon::now()->format('Ymd');
$randomString = $this->generateRandomString(10);
$uniqueTitleKey = 'service_' . $currentDate . '_' . $randomString . '_title';
$uniqueDescKey = 'service_' . $currentDate . '_' . $randomString . '_desc';
$this->updateLocaleFiles($uniqueTitleKey, $this->name);
$this->updateLocaleFiles($uniqueDescKey, $this->description);
$service = new Service();
$service->name = $uniqueTitleKey;
$service->description = $uniqueDescKey;
$service->price = $this->price;
$service->duration = $this->duration;
$service->category_id = $this->category;
$service->save();
session()->flash('flash.banner', trans('services.created'));
session()->flash('flash.bannerStyle', 'success');
return redirect()->route('manage_services');
} catch (IlluminateValidationValidationException $e) {
$errors = $e->validator->getMessageBag()->all();
session()->flash('flash.banner', $errors[0]);
session()->flash('flash.bannerStyle', 'danger');
return redirect()->route('manage_services');
} catch (Exception $e) {
Log::error('Error saving service: ' . $e->getMessage());
session()->flash('flash.banner', trans('services.error_creating'));
session()->flash('flash.bannerStyle', 'danger');
return redirect()->route('manage_services');
}
}
private function generateRandomString($length = 10)
{
return substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, $length);
}
private function updateLocaleFiles($key, $value)
{
$currentLocale = app()->getLocale();
$targetLocales = ['pt', 'es', 'fr', 'it', 'nl', 'en'];
// Remove the current locale from the target locales array if it exists
$index = array_search($currentLocale, $targetLocales);
if ($index !== false) {
unset($targetLocales[$index]);
}
// Update the locale file for the current locale first
$this->updateLocaleFile($key, $value, $currentLocale);
// Iterate through the remaining target locales
foreach ($targetLocales as $locale) {
try {
$translatedValue = $this->translate($value, $currentLocale, $locale);
$this->updateLocaleFile($key, $translatedValue, $locale);
} catch (Exception $e) {
Log::error("Error translating to locale '{$locale}': " . $e->getMessage());
}
}
}
private function updateLocaleFile($key, $value, $locale)
{
try {
$localePath = base_path("lang/{$locale}");
if (!is_dir($localePath)) {
mkdir($localePath, 0755, true);
}
$localeFile = "{$localePath}/services.php";
if (file_exists($localeFile)) {
$localeArray = include($localeFile);
} else {
$localeArray = [];
}
$localeArray[$key] = $value;
file_put_contents($localeFile, "<?phpnnreturn " . var_export($localeArray, true) . ";n");
Log::info("Locale file for '{$locale}' updated successfully.");
} catch (Exception $e) {
Log::error("Error updating locale file for '{$locale}': " . $e->getMessage());
}
}
private function translate($text, $sourceLocale, $targetLocale)
{
$tr = new GoogleTranslate();
$tr->setSource($sourceLocale);
$tr->setTarget($targetLocale);
return $tr->translate($text);
}
}
</code>
<code><?php
namespace AppLivewire;
use AppModelsService;
use AppModelsServiceCategory;
use CarbonCarbon;
use LivewireComponent;
use StichozaGoogleTranslateGoogleTranslate;
use IlluminateSupportFacadesLog;
class ManageServices extends Component
{
public $name;
public $description;
public $price;
public $duration;
public $category;
public function render()
{
$categories = ServiceCategory::get();
$services = Service::with('category')->get();
return view('livewire.manage-services', ['services' => $services, 'categories' => $categories]);
}
public function save()
{
try {
$this->validate([
'name' => 'required|string|min:1',
'description' => 'required|string|min:1',
'price' => 'required|numeric|min:1',
'duration' => 'required|numeric|min:1',
'category' => 'required|numeric',
]);
$currentDate = Carbon::now()->format('Ymd');
$randomString = $this->generateRandomString(10);
$uniqueTitleKey = 'service_' . $currentDate . '_' . $randomString . '_title';
$uniqueDescKey = 'service_' . $currentDate . '_' . $randomString . '_desc';
$this->updateLocaleFiles($uniqueTitleKey, $this->name);
$this->updateLocaleFiles($uniqueDescKey, $this->description);
$service = new Service();
$service->name = $uniqueTitleKey;
$service->description = $uniqueDescKey;
$service->price = $this->price;
$service->duration = $this->duration;
$service->category_id = $this->category;
$service->save();
session()->flash('flash.banner', trans('services.created'));
session()->flash('flash.bannerStyle', 'success');
return redirect()->route('manage_services');
} catch (IlluminateValidationValidationException $e) {
$errors = $e->validator->getMessageBag()->all();
session()->flash('flash.banner', $errors[0]);
session()->flash('flash.bannerStyle', 'danger');
return redirect()->route('manage_services');
} catch (Exception $e) {
Log::error('Error saving service: ' . $e->getMessage());
session()->flash('flash.banner', trans('services.error_creating'));
session()->flash('flash.bannerStyle', 'danger');
return redirect()->route('manage_services');
}
}
private function generateRandomString($length = 10)
{
return substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, $length);
}
private function updateLocaleFiles($key, $value)
{
$currentLocale = app()->getLocale();
$targetLocales = ['pt', 'es', 'fr', 'it', 'nl', 'en'];
// Remove the current locale from the target locales array if it exists
$index = array_search($currentLocale, $targetLocales);
if ($index !== false) {
unset($targetLocales[$index]);
}
// Update the locale file for the current locale first
$this->updateLocaleFile($key, $value, $currentLocale);
// Iterate through the remaining target locales
foreach ($targetLocales as $locale) {
try {
$translatedValue = $this->translate($value, $currentLocale, $locale);
$this->updateLocaleFile($key, $translatedValue, $locale);
} catch (Exception $e) {
Log::error("Error translating to locale '{$locale}': " . $e->getMessage());
}
}
}
private function updateLocaleFile($key, $value, $locale)
{
try {
$localePath = base_path("lang/{$locale}");
if (!is_dir($localePath)) {
mkdir($localePath, 0755, true);
}
$localeFile = "{$localePath}/services.php";
if (file_exists($localeFile)) {
$localeArray = include($localeFile);
} else {
$localeArray = [];
}
$localeArray[$key] = $value;
file_put_contents($localeFile, "<?phpnnreturn " . var_export($localeArray, true) . ";n");
Log::info("Locale file for '{$locale}' updated successfully.");
} catch (Exception $e) {
Log::error("Error updating locale file for '{$locale}': " . $e->getMessage());
}
}
private function translate($text, $sourceLocale, $targetLocale)
{
$tr = new GoogleTranslate();
$tr->setSource($sourceLocale);
$tr->setTarget($targetLocale);
return $tr->translate($text);
}
}
</code>
<?php
namespace AppLivewire;
use AppModelsService;
use AppModelsServiceCategory;
use CarbonCarbon;
use LivewireComponent;
use StichozaGoogleTranslateGoogleTranslate;
use IlluminateSupportFacadesLog;
class ManageServices extends Component
{
public $name;
public $description;
public $price;
public $duration;
public $category;
public function render()
{
$categories = ServiceCategory::get();
$services = Service::with('category')->get();
return view('livewire.manage-services', ['services' => $services, 'categories' => $categories]);
}
public function save()
{
try {
$this->validate([
'name' => 'required|string|min:1',
'description' => 'required|string|min:1',
'price' => 'required|numeric|min:1',
'duration' => 'required|numeric|min:1',
'category' => 'required|numeric',
]);
$currentDate = Carbon::now()->format('Ymd');
$randomString = $this->generateRandomString(10);
$uniqueTitleKey = 'service_' . $currentDate . '_' . $randomString . '_title';
$uniqueDescKey = 'service_' . $currentDate . '_' . $randomString . '_desc';
$this->updateLocaleFiles($uniqueTitleKey, $this->name);
$this->updateLocaleFiles($uniqueDescKey, $this->description);
$service = new Service();
$service->name = $uniqueTitleKey;
$service->description = $uniqueDescKey;
$service->price = $this->price;
$service->duration = $this->duration;
$service->category_id = $this->category;
$service->save();
session()->flash('flash.banner', trans('services.created'));
session()->flash('flash.bannerStyle', 'success');
return redirect()->route('manage_services');
} catch (IlluminateValidationValidationException $e) {
$errors = $e->validator->getMessageBag()->all();
session()->flash('flash.banner', $errors[0]);
session()->flash('flash.bannerStyle', 'danger');
return redirect()->route('manage_services');
} catch (Exception $e) {
Log::error('Error saving service: ' . $e->getMessage());
session()->flash('flash.banner', trans('services.error_creating'));
session()->flash('flash.bannerStyle', 'danger');
return redirect()->route('manage_services');
}
}
private function generateRandomString($length = 10)
{
return substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, $length);
}
private function updateLocaleFiles($key, $value)
{
$currentLocale = app()->getLocale();
$targetLocales = ['pt', 'es', 'fr', 'it', 'nl', 'en'];
// Remove the current locale from the target locales array if it exists
$index = array_search($currentLocale, $targetLocales);
if ($index !== false) {
unset($targetLocales[$index]);
}
// Update the locale file for the current locale first
$this->updateLocaleFile($key, $value, $currentLocale);
// Iterate through the remaining target locales
foreach ($targetLocales as $locale) {
try {
$translatedValue = $this->translate($value, $currentLocale, $locale);
$this->updateLocaleFile($key, $translatedValue, $locale);
} catch (Exception $e) {
Log::error("Error translating to locale '{$locale}': " . $e->getMessage());
}
}
}
private function updateLocaleFile($key, $value, $locale)
{
try {
$localePath = base_path("lang/{$locale}");
if (!is_dir($localePath)) {
mkdir($localePath, 0755, true);
}
$localeFile = "{$localePath}/services.php";
if (file_exists($localeFile)) {
$localeArray = include($localeFile);
} else {
$localeArray = [];
}
$localeArray[$key] = $value;
file_put_contents($localeFile, "<?phpnnreturn " . var_export($localeArray, true) . ";n");
Log::info("Locale file for '{$locale}' updated successfully.");
} catch (Exception $e) {
Log::error("Error updating locale file for '{$locale}': " . $e->getMessage());
}
}
private function translate($text, $sourceLocale, $targetLocale)
{
$tr = new GoogleTranslate();
$tr->setSource($sourceLocale);
$tr->setTarget($targetLocale);
return $tr->translate($text);
}
}