diff --git a/Modules/Language/app/Services/LanguageService.php b/Modules/Language/app/Services/LanguageService.php index 7f535d3d..ecbf91d9 100644 --- a/Modules/Language/app/Services/LanguageService.php +++ b/Modules/Language/app/Services/LanguageService.php @@ -192,15 +192,6 @@ class LanguageService extends MediaService function setLanguageProperties(string $locale): void { - $defaultLocale = $this->getDefaultLocale(); - - if ($locale === $defaultLocale) { - $lines = $this->buildTranslationsFromFiles($locale); - Lang::addLines($lines, $locale); - - return; - } - $cacheKey = $this->getCacheKey($locale); $cached = Cache::rememberForever($cacheKey, function () use ($locale) { @@ -227,6 +218,10 @@ class LanguageService extends MediaService return $translations; }); + if (empty($cached)) { + $cached = $this->buildTranslationsFromFiles($locale); + } + Lang::addLines($cached, $locale); } diff --git a/app/Http/Middleware/HandleInertiaRequests.php b/app/Http/Middleware/HandleInertiaRequests.php index 0b3a07ee..2a2d8470 100644 --- a/app/Http/Middleware/HandleInertiaRequests.php +++ b/app/Http/Middleware/HandleInertiaRequests.php @@ -65,9 +65,11 @@ class HandleInertiaRequests extends Middleware if (Schema::hasTable('languages')) { $langs = Language::where('is_active', true)->orderBy('is_default', 'desc')->get(); - $default = $langs->where('is_default', true)->first()->code; + $defaultLang = $langs->firstWhere('is_default', true); + $default = $defaultLang?->code ?? config('app.locale', 'en'); config(['app.locale' => $default]); - $locale = Cookie::get('locale', $default); + $requestedLocale = Cookie::get('locale', $default); + $locale = $langs->contains('code', $requestedLocale) ? $requestedLocale : $default; App::setLocale($locale); $this->languageService->setLanguageProperties($locale); diff --git a/lang/de/button.php b/lang/de/button.php index 4ff2f338..c3c1557b 100644 --- a/lang/de/button.php +++ b/lang/de/button.php @@ -132,18 +132,21 @@ return [ 'back' => 'Zurück', 'show_full' => 'Alles anzeigen', 'show_less' => 'Weniger anzeigen', - 'dashboard' => 'Dashboard', + 'dashboard' => 'Armaturenbrett', 'main_menu' => 'Hauptmenü', 'categories' => 'Kategorien', 'courses' => 'Kurse', + 'exams' => 'Prüfungen', 'enrollments' => 'Einschreibungen', 'instructors' => 'Dozenten', 'payout_report' => 'Auszahlungsbericht', + 'payment_report' => 'Zahlungsbericht', 'payouts' => 'Auszahlungen', 'job_circulars' => 'Stellenausschreibungen', 'blogs' => 'Blogs', 'newsletters' => 'Newsletter', 'all_users' => 'Alle Nutzer', + 'certificates' => 'Zertifikate', 'settings' => 'Einstellungen', 'my_courses' => 'Meine Kurse', 'wishlist' => 'Wunschliste', @@ -153,6 +156,14 @@ return [ 'profile_update' => 'Profil aktualisieren', 'manage_courses' => 'Kurse verwalten', 'create_course' => 'Kurs erstellen', + 'course_coupons' => 'Kursgutscheine', + 'manage_exams' => 'Prüfungen verwalten', + 'create_exam' => 'Prüfung erstellen', + 'exam_coupons' => 'Prüfungsgutscheine', + 'course_enrollments' => 'Kurseinschreibungen', + 'exam_enrollments' => 'Prüfungseinschreibungen', + 'online_payments' => 'Online-Zahlungen', + 'offline_payments' => 'Offline-Zahlungen', 'manage_enrollments' => 'Einschreibungen verwalten', 'add_new_enrollment' => 'Neue Einschreibung hinzufügen', 'add_new_instructor' => 'Neuen Dozenten hinzufügen', @@ -174,6 +185,7 @@ return [ 'smtp' => 'SMTP', 'auth0' => 'Auth0', 'maintenance' => 'Wartung', + 'marksheet' => 'Notenblatt', 'become_instructor' => 'Dozent werden', 'overview' => 'Übersicht', 'curriculum' => 'Lehrplan', diff --git a/lang/en/button.php b/lang/en/button.php index 62559d66..7109cd37 100644 --- a/lang/en/button.php +++ b/lang/en/button.php @@ -163,14 +163,17 @@ return [ 'main_menu' => 'Main Menu', 'categories' => 'Categories', 'courses' => 'Courses', + 'exams' => 'Exams', 'enrollments' => 'Enrollments', 'instructors' => 'Instructors', 'payout_report' => 'Payout Report', + 'payment_report' => 'Payment Report', 'payouts' => 'Payouts', 'job_circulars' => 'Job Circulars', 'blogs' => 'Blogs', 'newsletters' => 'Newsletters', 'all_users' => 'All Users', + 'certificates' => 'Certificates', 'settings' => 'Settings', 'my_courses' => 'My Courses', 'wishlist' => 'Wishlist', @@ -180,6 +183,14 @@ return [ 'profile_update' => 'Profile Update', 'manage_courses' => 'Manage Courses', 'create_course' => 'Create Course', + 'course_coupons' => 'Course Coupons', + 'manage_exams' => 'Manage Exams', + 'create_exam' => 'Create Exam', + 'exam_coupons' => 'Exam Coupons', + 'course_enrollments' => 'Course Enrollments', + 'exam_enrollments' => 'Exam Enrollments', + 'online_payments' => 'Online Payments', + 'offline_payments' => 'Offline Payments', 'manage_enrollments' => 'Manage Enrollments', 'add_new_enrollment' => 'Add New Enrollment', 'add_new_instructor' => 'Add New Instructor', @@ -201,6 +212,7 @@ return [ 'smtp' => 'SMTP', 'auth0' => 'Auth0', 'maintenance' => 'Maintenance', + 'marksheet' => 'Marksheet', // ================================================== // 08. Sub Navigation Buttons diff --git a/resources/js/layouts/dashboard/partials/nav-main.tsx b/resources/js/layouts/dashboard/partials/nav-main.tsx index ba5fe4e6..0b3f5863 100644 --- a/resources/js/layouts/dashboard/partials/nav-main.tsx +++ b/resources/js/layouts/dashboard/partials/nav-main.tsx @@ -7,12 +7,13 @@ import { usePage } from '@inertiajs/react'; import { GitCompareArrows } from 'lucide-react'; import { useEffect, useState } from 'react'; import NavMainItem from './nav-main-item'; -import routes from './routes'; +import getRoutes from './routes'; export function NavMain() { const page = usePage(); - const { auth, system } = page.props; + const { auth, system, translate } = page.props; const [openAccordions, setOpenAccordions] = useState(''); + const routes = getRoutes(translate); // Set initial accordion state based on URL useEffect(() => { @@ -43,15 +44,15 @@ export function NavMain() { } })} - - - - - Maintenance - - - - + + + + + {translate.button.maintenance} + + + + ))} diff --git a/resources/js/layouts/dashboard/partials/routes.tsx b/resources/js/layouts/dashboard/partials/routes.tsx index 0d89040c..968c3f31 100644 --- a/resources/js/layouts/dashboard/partials/routes.tsx +++ b/resources/js/layouts/dashboard/partials/routes.tsx @@ -1,14 +1,19 @@ import { routeLastSegment } from '@/lib/route'; import { Award, Book, Briefcase, CassetteTape, CreditCard, LayoutDashboard, Newspaper, Receipt, School, Settings, Users } from 'lucide-react'; -const dashboardRoutes: DashboardRoute[] = [ - { - title: 'Main Menu', - slug: 'main-menu', - pages: [ +const label = (value: unknown, fallback: string): string => (typeof value === 'string' && value.length ? value : fallback); + +export default function getDashboardRoutes(translate: LanguageTranslations): DashboardRoute[] { + const { button, settings } = translate; + + return [ + { + title: label(button.main_menu, 'Main Menu'), + slug: 'main-menu', + pages: [ { Icon: LayoutDashboard, - name: 'Dashboard', + name: label(button.dashboard, 'Dashboard'), path: route('dashboard'), slug: routeLastSegment(route('dashboard')), active: true, @@ -17,32 +22,32 @@ const dashboardRoutes: DashboardRoute[] = [ }, { Icon: School, - name: 'Courses', + name: label(button.courses, 'Courses'), path: '', slug: 'courses', active: true, access: ['admin', 'instructor', 'collaborative', 'administrative'], children: [ { - name: 'Categories', + name: label(button.categories, 'Categories'), path: route('categories.index'), slug: routeLastSegment(route('categories.index')), access: ['admin', 'collaborative', 'administrative'], }, { - name: 'Manage Courses', + name: label(button.manage_courses, 'Manage Courses'), slug: routeLastSegment(route('courses.index')), path: route('courses.index'), access: ['admin', 'instructor', 'collaborative', 'administrative'], }, { - name: 'Create Course', + name: label(button.create_course, 'Create Course'), slug: routeLastSegment(route('courses.create')), path: route('courses.create'), access: ['admin', 'instructor', 'collaborative', 'administrative'], }, { - name: 'Course Coupons', + name: label(button.course_coupons, 'Course Coupons'), slug: routeLastSegment(route('course-coupons.index')), path: route('course-coupons.index'), access: ['admin', 'instructor', 'collaborative', 'administrative'], @@ -51,32 +56,32 @@ const dashboardRoutes: DashboardRoute[] = [ }, { Icon: Book, - name: 'Exams', + name: label(button.exams, 'Exams'), path: '', slug: 'exams', active: true, access: ['admin', 'instructor', 'collaborative', 'administrative'], children: [ { - name: 'Categories', + name: label(button.categories, 'Categories'), slug: routeLastSegment(route('exam-categories.index')), path: route('exam-categories.index'), access: ['admin', 'collaborative', 'administrative'], }, { - name: 'Manage Exams', + name: label(button.manage_exams, 'Manage Exams'), slug: routeLastSegment(route('exams.index')), path: route('exams.index'), access: ['admin', 'instructor', 'collaborative', 'administrative'], }, { - name: 'Create Exam', + name: label(button.create_exam, 'Create Exam'), slug: routeLastSegment(route('exams.create')), path: route('exams.create'), access: ['admin', 'instructor', 'collaborative', 'administrative'], }, { - name: 'Exam Coupons', + name: label(button.exam_coupons, 'Exam Coupons'), slug: routeLastSegment(route('exam-coupons.index')), path: route('exam-coupons.index'), access: ['admin', 'instructor', 'collaborative', 'administrative'], @@ -85,20 +90,20 @@ const dashboardRoutes: DashboardRoute[] = [ }, { Icon: CassetteTape, - name: 'Enrollments', + name: label(button.enrollments, 'Enrollments'), path: '', slug: 'enrollments', active: true, access: ['admin', 'instructor', 'collaborative', 'administrative'], children: [ { - name: 'Course Enrollments', + name: label(button.course_enrollments, 'Course Enrollments'), slug: routeLastSegment(route('course-enrollments.index')), path: route('course-enrollments.index'), access: ['admin', 'instructor', 'collaborative', 'administrative'], }, { - name: 'Exam Enrollments', + name: label(button.exam_enrollments, 'Exam Enrollments'), slug: routeLastSegment(route('exam-enrollments.index')), path: route('exam-enrollments.index'), access: ['admin', 'instructor', 'collaborative', 'administrative'], @@ -107,26 +112,26 @@ const dashboardRoutes: DashboardRoute[] = [ }, { Icon: Users, - name: 'Instructors', + name: label(button.instructors, 'Instructors'), path: '', slug: 'instructors', active: true, access: ['admin', 'collaborative'], children: [ { - name: 'Manage Instructors', + name: label(button.manage_instructors, 'Manage Instructors'), slug: routeLastSegment(route('instructors.index')), path: route('instructors.index'), access: ['admin', 'collaborative'], }, { - name: 'Create Instructor', + name: label(button.create_instructor, 'Create Instructor'), slug: routeLastSegment(route('instructors.create')), path: route('instructors.create'), access: ['admin', 'collaborative'], }, { - name: 'Applications', + name: label(button.applications, 'Applications'), slug: routeLastSegment(route('instructors.applications')), path: route('instructors.applications', { status: 'pending', @@ -137,20 +142,20 @@ const dashboardRoutes: DashboardRoute[] = [ }, { Icon: Receipt, - name: 'Payouts', + name: label(button.payouts, 'Payouts'), path: '', slug: 'payouts', active: true, access: ['instructor', 'collaborative'], children: [ { - name: 'Withdraw', + name: label(button.withdraw, 'Withdraw'), slug: routeLastSegment(route('payouts.index')), path: route('payouts.index'), access: ['instructor', 'collaborative'], }, { - name: 'Settings', + name: label(button.settings, 'Settings'), slug: routeLastSegment(route('payouts.settings.index')), path: route('payouts.settings.index'), access: ['instructor', 'collaborative'], @@ -159,20 +164,20 @@ const dashboardRoutes: DashboardRoute[] = [ }, { Icon: Receipt, - name: 'Payout Report', + name: label(button.payout_report, 'Payout Report'), path: '', slug: 'payouts', active: true, access: ['admin', 'collaborative'], children: [ { - name: 'Payout Request', + name: label(button.payout_request, 'Payout Request'), slug: routeLastSegment(route('payouts.request.index')), path: route('payouts.request.index'), access: ['admin', 'collaborative'], }, { - name: 'Payout History', + name: label(button.payout_history, 'Payout History'), slug: routeLastSegment(route('payouts.history.index')), path: route('payouts.history.index'), access: ['admin', 'collaborative'], @@ -181,20 +186,20 @@ const dashboardRoutes: DashboardRoute[] = [ }, { Icon: CreditCard, - name: 'Payment Report', + name: label(button.payment_report, 'Payment Report'), path: '', slug: 'payment-reports', active: true, access: ['admin', 'collaborative', 'administrative'], children: [ { - name: 'Online Payments', + name: label(button.online_payments, 'Online Payments'), slug: routeLastSegment(route('payment-reports.online.index')), path: route('payment-reports.online.index'), access: ['admin', 'collaborative', 'administrative'], }, { - name: 'Offline Payments', + name: label(button.offline_payments, 'Offline Payments'), slug: routeLastSegment(route('payment-reports.offline.index')), path: route('payment-reports.offline.index'), access: ['admin', 'collaborative', 'administrative'], @@ -203,20 +208,20 @@ const dashboardRoutes: DashboardRoute[] = [ }, { Icon: Briefcase, - name: 'Job Circulars', + name: label(button.job_circulars, 'Job Circulars'), path: '', slug: 'job-circulars', active: true, access: ['admin', 'collaborative', 'administrative'], children: [ { - name: 'All Jobs', + name: label(button.all_jobs, 'All Jobs'), slug: routeLastSegment(route('job-circulars.index')), path: route('job-circulars.index'), access: ['admin', 'collaborative', 'administrative'], }, { - name: 'Create Job', + name: label(button.create_job, 'Create Job'), slug: routeLastSegment(route('job-circulars.create')), path: route('job-circulars.create'), access: ['admin', 'collaborative', 'administrative'], @@ -225,26 +230,26 @@ const dashboardRoutes: DashboardRoute[] = [ }, { Icon: Book, - name: 'Blogs', + name: label(button.blogs, 'Blogs'), path: '', slug: 'blogs', active: true, access: ['admin', 'instructor', 'collaborative', 'administrative'], children: [ { - name: 'Categories', + name: label(button.categories, 'Categories'), slug: routeLastSegment(route('blogs.categories.index')), path: route('blogs.categories.index'), access: ['admin', 'instructor', 'collaborative', 'administrative'], }, { - name: 'Create Blog', + name: label(button.create_blog, 'Create Blog'), slug: routeLastSegment(route('blogs.create')), path: route('blogs.create'), access: ['admin', 'instructor', 'collaborative', 'administrative'], }, { - name: 'Manage Blog', + name: label(button.manage_blog, 'Manage Blog'), slug: routeLastSegment(route('blogs.index')), path: route('blogs.index'), access: ['admin', 'instructor', 'collaborative', 'administrative'], @@ -253,7 +258,7 @@ const dashboardRoutes: DashboardRoute[] = [ }, { Icon: Newspaper, - name: 'Newsletters', + name: label(button.newsletters, 'Newsletters'), path: route('newsletters.index'), slug: routeLastSegment(route('newsletters.index')), active: true, @@ -262,7 +267,7 @@ const dashboardRoutes: DashboardRoute[] = [ }, { Icon: Users, - name: 'All Users', + name: label(button.all_users, 'All Users'), path: route('users.index'), slug: routeLastSegment(route('users.index')), active: true, @@ -271,20 +276,20 @@ const dashboardRoutes: DashboardRoute[] = [ }, { Icon: Award, - name: 'Certificates', + name: label(button.certificates, 'Certificates'), path: '', slug: 'certification', active: true, access: ['admin', 'collaborative', 'administrative'], children: [ { - name: 'Certificate', + name: label(button.certificate, 'Certificate'), slug: routeLastSegment(route('certificate.templates.index')), path: route('certificate.templates.index'), access: ['admin', 'collaborative', 'administrative'], }, { - name: 'Marksheet', + name: label(button.marksheet, 'Marksheet'), slug: routeLastSegment(route('marksheet.templates.index')), path: route('marksheet.templates.index'), access: ['admin', 'collaborative', 'administrative'], @@ -293,62 +298,62 @@ const dashboardRoutes: DashboardRoute[] = [ }, { Icon: Settings, - name: 'Settings', + name: label(button.settings, 'Settings'), path: '', slug: 'settings', active: true, access: ['admin', 'instructor', 'collaborative', 'administrative'], children: [ { - name: 'Account', + name: label(button.account, 'Account'), slug: routeLastSegment(route('settings.account')), path: route('settings.account'), access: ['admin', 'instructor', 'collaborative', 'administrative'], }, { - name: 'System', + name: label(button.system, 'System'), slug: routeLastSegment(route('settings.system')), path: route('settings.system'), access: ['admin', 'collaborative', 'administrative'], }, { - name: 'Pages', + name: label(button.pages, 'Pages'), slug: routeLastSegment(route('settings.pages')), path: route('settings.pages'), access: ['admin', 'collaborative', 'administrative'], }, { - name: 'Storage', + name: label(button.storage, 'Storage'), slug: routeLastSegment(route('settings.storage')), path: route('settings.storage'), access: ['admin', 'collaborative', 'administrative'], }, { - name: 'Payment', + name: label(button.payment, 'Payment'), slug: routeLastSegment(route('settings.payment')), path: route('settings.payment'), access: ['admin', 'collaborative', 'administrative'], }, { - name: 'SMTP', + name: label(button.smtp, 'SMTP'), slug: routeLastSegment(route('settings.smtp')), path: route('settings.smtp'), access: ['admin', 'collaborative', 'administrative'], }, { - name: 'Auth', + name: label(button.auth0, 'Auth'), slug: routeLastSegment(route('settings.auth0')), path: route('settings.auth0'), access: ['admin', 'collaborative', 'administrative'], }, { - name: 'Live Class', + name: label(button.live_class, 'Live Class'), slug: routeLastSegment(route('settings.live-class')), path: route('settings.live-class'), access: ['admin', 'collaborative', 'administrative'], }, { - name: 'Translation', + name: label(settings.translation_settings, 'Translation'), slug: routeLastSegment(route('language.index')), path: route('language.index'), access: ['admin', 'collaborative', 'administrative'], @@ -356,7 +361,6 @@ const dashboardRoutes: DashboardRoute[] = [ ], }, ], - }, -]; - -export default dashboardRoutes; + }, + ]; +} diff --git a/resources/js/types/lang/button.d.ts b/resources/js/types/lang/button.d.ts index 8ce51c51..2272da9e 100644 --- a/resources/js/types/lang/button.d.ts +++ b/resources/js/types/lang/button.d.ts @@ -59,6 +59,7 @@ interface ButtonLang { refresh_server: string; backup_now: string; update_application: string; + set_default: string; // ================================================== // 03. Action Buttons @@ -161,14 +162,17 @@ interface ButtonLang { main_menu: string; categories: string; courses: string; + exams: string; enrollments: string; instructors: string; payout_report: string; + payment_report: string; payouts: string; job_circulars: string; blogs: string; newsletters: string; all_users: string; + certificates: string; settings: string; my_courses: string; wishlist: string; @@ -178,6 +182,14 @@ interface ButtonLang { profile_update: string; manage_courses: string; create_course: string; + course_coupons: string; + manage_exams: string; + create_exam: string; + exam_coupons: string; + course_enrollments: string; + exam_enrollments: string; + online_payments: string; + offline_payments: string; manage_enrollments: string; add_new_enrollment: string; add_new_instructor: string; @@ -199,6 +211,7 @@ interface ButtonLang { smtp: string; auth0: string; maintenance: string; + marksheet: string; // ================================================== // 08. Sub Navigation Buttons diff --git a/resources/js/types/lang/settings.d.ts b/resources/js/types/lang/settings.d.ts index bc1a3a3c..bc49f683 100644 --- a/resources/js/types/lang/settings.d.ts +++ b/resources/js/types/lang/settings.d.ts @@ -10,6 +10,11 @@ interface SettingsLang { smtp_settings: string; storage_settings: string; language_settings: string; + translation_settings: string; + add_language: string; + translation_scope_information: string; + translation_scope_dashboard: string; + translation_scope_public_pages: string; language_properties: string; translate_language_properties: string; diff --git a/storage/app/lang/default/button.php b/storage/app/lang/default/button.php index d45bc159..7109cd37 100644 --- a/storage/app/lang/default/button.php +++ b/storage/app/lang/default/button.php @@ -60,6 +60,7 @@ return [ 'refresh_server' => 'Refresh Server', 'backup_now' => 'Backup Now', 'update_application' => 'Update Application', + 'set_default' => 'Set Default', // ================================================== // 03. Action Buttons @@ -162,14 +163,17 @@ return [ 'main_menu' => 'Main Menu', 'categories' => 'Categories', 'courses' => 'Courses', + 'exams' => 'Exams', 'enrollments' => 'Enrollments', 'instructors' => 'Instructors', 'payout_report' => 'Payout Report', + 'payment_report' => 'Payment Report', 'payouts' => 'Payouts', 'job_circulars' => 'Job Circulars', 'blogs' => 'Blogs', 'newsletters' => 'Newsletters', 'all_users' => 'All Users', + 'certificates' => 'Certificates', 'settings' => 'Settings', 'my_courses' => 'My Courses', 'wishlist' => 'Wishlist', @@ -179,6 +183,14 @@ return [ 'profile_update' => 'Profile Update', 'manage_courses' => 'Manage Courses', 'create_course' => 'Create Course', + 'course_coupons' => 'Course Coupons', + 'manage_exams' => 'Manage Exams', + 'create_exam' => 'Create Exam', + 'exam_coupons' => 'Exam Coupons', + 'course_enrollments' => 'Course Enrollments', + 'exam_enrollments' => 'Exam Enrollments', + 'online_payments' => 'Online Payments', + 'offline_payments' => 'Offline Payments', 'manage_enrollments' => 'Manage Enrollments', 'add_new_enrollment' => 'Add New Enrollment', 'add_new_instructor' => 'Add New Instructor', @@ -200,6 +212,7 @@ return [ 'smtp' => 'SMTP', 'auth0' => 'Auth0', 'maintenance' => 'Maintenance', + 'marksheet' => 'Marksheet', // ================================================== // 08. Sub Navigation Buttons diff --git a/storage/app/lang/default/settings.php b/storage/app/lang/default/settings.php index e5e2c971..5460488e 100644 --- a/storage/app/lang/default/settings.php +++ b/storage/app/lang/default/settings.php @@ -25,6 +25,9 @@ return [ 'language_settings' => 'Language Settings', 'translation_settings' => 'Translation Settings', 'add_language' => 'Add Language', + 'translation_scope_information' => 'Translation Scope Information', + 'translation_scope_dashboard' => 'Translations will be applied to dashboard interfaces (admin, instructor, student).', + 'translation_scope_public_pages' => 'Public pages are not affected by these translations as they are fully customizable through the page editor.', // Common Settings 'account_settings' => 'Account Settings', diff --git a/storage/app/lang/groups/button.php b/storage/app/lang/groups/button.php index e0e28f09..c9c37257 100644 --- a/storage/app/lang/groups/button.php +++ b/storage/app/lang/groups/button.php @@ -62,6 +62,7 @@ return [ 'delete_class' => 'Delete Class', 'class_note' => 'Class Note', 'add_language' => 'Add Language', + 'set_default' => 'Set Default', 'save_changes' => 'Save Changes', 'schedule_class' => 'Schedule Class', 'add_newsletter' => 'Add Newsletter', @@ -203,14 +204,17 @@ return [ 'main_menu' => 'Main Menu', 'categories' => 'Categories', 'courses' => 'Courses', + 'exams' => 'Exams', 'enrollments' => 'Enrollments', 'instructors' => 'Instructors', 'payout_report' => 'Payout Report', + 'payment_report' => 'Payment Report', 'payouts' => 'Payouts', 'job_circulars' => 'Job Circulars', 'blogs' => 'Blogs', 'newsletters' => 'Newsletters', 'all_users' => 'All Users', + 'certificates' => 'Certificates', 'settings' => 'Settings', 'my_courses' => 'My Courses', 'wishlist' => 'Wishlist', @@ -220,6 +224,12 @@ return [ 'profile_update' => 'Profile Update', 'manage_courses' => 'Manage Courses', 'create_course' => 'Create Course', + 'course_coupons' => 'Course Coupons', + 'manage_exams' => 'Manage Exams', + 'create_exam' => 'Create Exam', + 'exam_coupons' => 'Exam Coupons', + 'course_enrollments' => 'Course Enrollments', + 'exam_enrollments' => 'Exam Enrollments', 'manage_enrollments' => 'Manage Enrollments', 'add_new_enrollment' => 'Add New Enrollment', 'add_new_instructor' => 'Add New Instructor', @@ -241,6 +251,9 @@ return [ 'smtp' => 'SMTP', 'auth0' => 'Auth0', 'maintenance' => 'Maintenance', + 'online_payments' => 'Online Payments', + 'offline_payments' => 'Offline Payments', + 'marksheet' => 'Marksheet', ], ], diff --git a/storage/app/lang/groups/settings.php b/storage/app/lang/groups/settings.php index ffe1cb64..d20d2d30 100644 --- a/storage/app/lang/groups/settings.php +++ b/storage/app/lang/groups/settings.php @@ -27,6 +27,11 @@ return [ 'smtp_settings' => 'SMTP Settings', 'storage_settings' => 'Storage Settings', 'language_settings' => 'Language Settings', + 'translation_settings' => 'Translation Settings', + 'add_language' => 'Add Language', + 'translation_scope_information' => 'Translation Scope Information', + 'translation_scope_dashboard' => 'Translations will be applied to dashboard interfaces (admin, instructor, student).', + 'translation_scope_public_pages' => 'Public pages are not affected by these translations as they are fully customizable through the page editor.', 'language_properties' => 'Language Properties', 'translate_language_properties' => 'Translate Language Properties', ]