feat: add new translation files for app development, corporate, home menu, and miscellaneous site content, enhancing multilingual support and user experience
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders\Concerns;
|
||||
|
||||
use App\Models\Page;
|
||||
use App\Models\SiteTranslation;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
trait SeedsSiteTranslations
|
||||
{
|
||||
/**
|
||||
* @param array<string, array<string, string>> $siteData
|
||||
*/
|
||||
protected function seedSiteTranslations(array $siteData): void
|
||||
{
|
||||
foreach ($siteData as $key => $translations) {
|
||||
$record = SiteTranslation::firstOrNew(['hash' => md5($key)]);
|
||||
$existing = $record->translations ?? [];
|
||||
|
||||
$merged = array_merge($existing, [
|
||||
'tr' => $translations['tr'] ?? $existing['tr'] ?? $key,
|
||||
], array_filter(
|
||||
$translations,
|
||||
fn ($value, $lang) => $value !== '' && $lang !== 'tr',
|
||||
ARRAY_FILTER_USE_BOTH
|
||||
));
|
||||
|
||||
SiteTranslation::updateOrCreate(
|
||||
['hash' => md5($key)],
|
||||
[
|
||||
'key' => $key,
|
||||
'translations' => $merged,
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string|int, array<string, array<string, string>>> $pagesData
|
||||
*/
|
||||
protected function seedPageTranslations(array $pagesData): void
|
||||
{
|
||||
foreach ($pagesData as $pageKey => $fields) {
|
||||
$page = is_numeric($pageKey)
|
||||
? Page::query()->whereKey((int) $pageKey)->first()
|
||||
: Page::query()->where('slug', (string) $pageKey)->first();
|
||||
|
||||
if (! $page) {
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach ($fields as $fieldName => $translations) {
|
||||
foreach ($translations as $languageCode => $value) {
|
||||
if ($value === '') {
|
||||
continue;
|
||||
}
|
||||
|
||||
$page->setTranslation($fieldName, $languageCode, $value, 'published', 1);
|
||||
}
|
||||
|
||||
if (! isset($translations['tr'])) {
|
||||
$page->setTranslation($fieldName, 'tr', $page->{$fieldName}, 'published', 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function flushTranslationCache(): void
|
||||
{
|
||||
Cache::flush();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user