feat: localize "Plan" to "Paket" in UI components for consistency

This commit is contained in:
Yoga Pangestu 2026-07-25 11:46:09 +07:00
parent ccc6204178
commit 51902b00b7
3 changed files with 40 additions and 10 deletions

View File

@ -34,7 +34,7 @@ const groups = [
items: [
{ title: 'Dashboard', url: '/admin/dashboard', icon: LayoutDashboard },
{ title: 'Jenis Bisnis', url: '/admin/business-types', icon: BriefcaseBusiness },
{ title: 'Plans', url: '/admin/plans', icon: CreditCard },
{ title: 'Paket', url: '/admin/plans', icon: CreditCard },
],
},
]

View File

@ -69,7 +69,7 @@ const formLoading = ref(false)
const deleteLoading = ref(false)
// --- Computed ---
const formTitle = computed(() => formMode.value === 'create' ? 'Tambah Plan' : 'Edit Plan')
const formTitle = computed(() => formMode.value === 'create' ? 'Tambah Paket' : 'Edit Paket')
// --- Table callbacks ---
function openCreateForm() {
@ -106,7 +106,7 @@ async function handleToggleStatus(plan: Plan, value: boolean) {
p.id === plan.id ? { ...p, is_active: value } : p
)
}
toast.success(`Plan berhasil di${value ? 'aktifkan' : 'nonaktifkan'}`)
toast.success(`Paket berhasil di${value ? 'aktifkan' : 'nonaktifkan'}`)
} catch (e: any) {
toast.error(e?.data?.message ?? 'Gagal mengubah status')
}
@ -138,19 +138,19 @@ async function handleFormSubmit() {
method: 'POST',
body,
})
toast.success('Plan berhasil ditambahkan')
toast.success('Paket berhasil ditambahkan')
} else {
await $fetch(`${config.public.apiBase}/plans/${selectedPlan.value!.id}`, {
method: 'PUT',
body,
})
toast.success('Plan berhasil diperbarui')
toast.success('Paket berhasil diperbarui')
}
formOpen.value = false
await refresh()
} catch (e: any) {
toast.error(e?.data?.message ?? 'Gagal menyimpan plan')
toast.error(e?.data?.message ?? 'Gagal menyimpan paket')
} finally {
formLoading.value = false
}
@ -164,12 +164,12 @@ async function handleConfirmDelete() {
await $fetch(`${config.public.apiBase}/plans/${selectedPlan.value.id}`, {
method: 'DELETE',
})
toast.success('Plan berhasil dihapus')
toast.success('Paket berhasil dihapus')
deleteOpen.value = false
selectedPlan.value = null
await refresh()
} catch (e: any) {
toast.error(e?.data?.message ?? 'Gagal menghapus plan')
toast.error(e?.data?.message ?? 'Gagal menghapus paket')
} finally {
deleteLoading.value = false
}
@ -220,7 +220,7 @@ watch(deleteOpen, (val) => {
<div class="flex flex-col gap-4 py-4 md:gap-6 md:py-6">
<div class="px-4 lg:px-6">
<div class="flex items-center justify-between">
<h1 class="text-2xl font-bold">Plans</h1>
<h1 class="text-2xl font-bold">Paket</h1>
<Button size="sm" @click="openCreateForm">
<Plus class="h-4 w-4 mr-1" />
Tambah
@ -324,7 +324,7 @@ watch(deleteOpen, (val) => {
</Dialog>
<!-- ==================== DELETE DIALOG ==================== -->
<DeleteDialog v-model:open="deleteOpen" title="Hapus Plan" :item-name="selectedPlan?.name" :loading="deleteLoading"
<DeleteDialog v-model:open="deleteOpen" title="Hapus Paket" :item-name="selectedPlan?.name" :loading="deleteLoading"
@confirm="handleConfirmDelete" />
</SidebarProvider>
</template>

View File

@ -0,0 +1,30 @@
# Localisasi Module Plans: Plan → Paket
**Tanggal:** 2026-07-25
**Status:** Selesai
## Tujuan
Mengganti seluruh teks "Plan"/"Plans" yang ditampilkan ke user menjadi "Paket" agar konsisten menggunakan Bahasa Indonesia.
## Yang Dikerjakan
### 1. Halaman Plans (`index.vue`)
- Judul halaman: `Plans``Paket`
- Form dialog: `Tambah Plan` / `Edit Plan``Tambah Paket` / `Edit Paket`
- Delete dialog: `Hapus Plan``Hapus Paket`
- Toast sukses: `Plan berhasil ditambahkan/diperbarui/dihapus/diaktifkan``Paket berhasil ...`
- Toast error: `Gagal menyimpan plan` / `Gagal menghapus plan``Gagal menyimpan paket` / `Gagal menghapus paket`
### 2. Sidebar Navigation (`AppSidebar.vue`)
- Label menu: `Plans``Paket`
## File yang Diubah
| File | Aksi | Detail |
|------|------|--------|
| `app/pages/admin/plans/index.vue` | Diubah | 9 perubahan string "Plan" → "Paket" di UI text |
| `app/components/AppSidebar.vue` | Diubah | 1 perubahan label navigasi "Plans" → "Paket" |
## Notes
- Hanya UI string literals yang diubah. Nama variabel (`selectedPlan`, `plans`, dll) dan kode tetap menggunakan "Plan".
- Endpoint API (`/v1/plans`) tidak diubah.