i18n Migration
i18n Namespace Migration
In version 2026.3.0, all i18n keys in the admin UI were migrated to canonical namespaces. The legacy single-letter alias system has been removed.
Key mapping
| Old Prefix | New Prefix | Scope |
|---|---|---|
n.* | nav.* | Navigation labels |
e.* | enum.* | Enumerations and option lists |
t.* | text.* | General UI text |
t.educ.* | text.educ.* | Education-specific text |
e.attr.* | enum.attr.* | Attribute enumerations |
Examples
# Navigation
n.a.subject → nav.a.subject
n.b.apply → nav.b.apply
n.b.cancel → nav.b.cancel
n.b.save → nav.b.save
# Enumerations
e.date → enum.date
e.status → enum.status
# General text
t.page_title → text.page_title
t.confirm → text.confirm
# Education
t.educ.semester → text.educ.semester
What was removed
The applyLegacyAliases() function that mapped old prefixes to new ones has been deleted. This means:
- Old keys like
n.b.savewill not resolve at runtime. - All Vue components must use canonical keys directly.
- Legacy admin locale file loading (
LEGACY_ADMIN_LOCALE_FILES) has been removed.
CMS Management namespace
The new CMS Management module uses the text.cmsm.* prefix:
text.cmsm.dashboard_title
text.cmsm.domain_list
text.cmsm.customer_create
How to migrate custom code
- Search for old prefixes (
n.,e.,t.) in your Vue files. - Replace with the canonical prefix (
nav.,enum.,text.). - Wrap column definitions and option arrays in
computed()to ensure i18n reactivity.
// Before (broken)
const columns = [
{ title: t('n.b.name'), dataIndex: 'name' },
]
// After (correct)
const columns = computed(() => [
{ title: t('nav.b.name'), dataIndex: 'name' },
])
No backwards compatibility
There is no fallback layer. Code using old prefixes will show raw keys instead of translated text. Audit all custom components before upgrading.

