diff --git a/Frontend-Learner/components/classroom/AnnouncementModal.vue b/Frontend-Learner/components/classroom/AnnouncementModal.vue
index 7d937ba3..aedb1177 100644
--- a/Frontend-Learner/components/classroom/AnnouncementModal.vue
+++ b/Frontend-Learner/components/classroom/AnnouncementModal.vue
@@ -13,11 +13,15 @@ const emit = defineEmits<{
(e: 'update:modelValue', value: boolean): void;
}>();
+const { locale, t } = useI18n()
+
// Helper for localization
const getLocalizedText = (text: any) => {
if (!text) return ''
if (typeof text === 'string') return text
- return text.th || text.en || ''
+
+ const currentLocale = locale.value as 'th' | 'en'
+ return text[currentLocale] || text.th || text.en || ''
}
@@ -30,9 +34,9 @@ const getLocalizedText = (text: any) => {
- {{ $t('classroom.announcements', 'ประกาศในคอร์สเรียน') }}
+ {{ $t('classroom.announcements') }}
- {{ announcements.length }} รายการ
+ {{ announcements.length }} {{ $t('common.items') }}
@@ -62,16 +66,16 @@ const getLocalizedText = (text: any) => {
- {{ getLocalizedText(ann.title) || 'ประกาศ' }}
+ {{ getLocalizedText(ann.title) || $t('sidebar.announcements') }}
- {{ new Date(ann.created_at || Date.now()).toLocaleDateString('th-TH', { day: 'numeric', month: 'short', year: 'numeric' }) }}
+ {{ new Date(ann.created_at || Date.now()).toLocaleDateString(locale === 'th' ? 'th-TH' : 'en-US', { day: 'numeric', month: 'short', year: 'numeric' }) }}
- {{ new Date(ann.created_at || Date.now()).toLocaleTimeString('th-TH', { hour: '2-digit', minute: '2-digit' }) }}
+ {{ new Date(ann.created_at || Date.now()).toLocaleTimeString(locale === 'th' ? 'th-TH' : 'en-US', { hour: '2-digit', minute: '2-digit' }) }}
diff --git a/Frontend-Learner/components/classroom/CurriculumSidebar.vue b/Frontend-Learner/components/classroom/CurriculumSidebar.vue
index 360d3dda..ccd87df4 100644
--- a/Frontend-Learner/components/classroom/CurriculumSidebar.vue
+++ b/Frontend-Learner/components/classroom/CurriculumSidebar.vue
@@ -19,11 +19,15 @@ const emit = defineEmits<{
(e: 'open-announcements'): void;
}>();
+const { locale } = useI18n()
+
// Helper for localization
const getLocalizedText = (text: any) => {
if (!text) return ''
if (typeof text === 'string') return text
- return text.th || text.en || ''
+
+ const currentLocale = locale.value as 'th' | 'en'
+ return text[currentLocale] || text.th || text.en || ''
}
diff --git a/Frontend-Learner/components/course/CourseCard.vue b/Frontend-Learner/components/course/CourseCard.vue
index c3b235e2..0c4b92a0 100644
--- a/Frontend-Learner/components/course/CourseCard.vue
+++ b/Frontend-Learner/components/course/CourseCard.vue
@@ -39,10 +39,14 @@ const emit = defineEmits<{
viewCertificate: []
}>()
+const { locale } = useI18n()
+
const getLocalizedText = (text: string | { th: string; en: string } | undefined) => {
if (!text) return ''
if (typeof text === 'string') return text
- return text.th || text.en || ''
+
+ const currentLocale = locale.value as 'th' | 'en'
+ return text[currentLocale] || text.th || text.en || ''
}
const displayTitle = computed(() => getLocalizedText(props.title))
diff --git a/Frontend-Learner/components/discovery/CategorySidebar.vue b/Frontend-Learner/components/discovery/CategorySidebar.vue
index e5b8c1d6..213bd8a2 100644
--- a/Frontend-Learner/components/discovery/CategorySidebar.vue
+++ b/Frontend-Learner/components/discovery/CategorySidebar.vue
@@ -13,12 +13,15 @@ const emit = defineEmits<{
(e: "update:modelValue", value: number[]): void;
}>();
+const { locale, t } = useI18n();
const showAllCategories = ref(false);
const getLocalizedText = (text: any) => {
if (!text) return "";
if (typeof text === "string") return text;
- return text.th || text.en || "";
+
+ const currentLocale = locale.value as 'th' | 'en';
+ return text[currentLocale] || text.th || text.en || "";
};
@@ -26,7 +29,7 @@ const getLocalizedText = (text: any) => {