299Languages (i18n)
Languages that translations can be written for. One is the default (fallback).
Try it
Translations
Spring MessageSource backed by SQL Server - missing text falls back to the default languageMatrix (orange = missing)
| Key | 🇬🇧 en (0 missing) | 🇹🇭 th (0 missing) | 🇯🇵 ja (5 missing) |
|---|---|---|---|
| app.title | Sales Portal | ระบบงานขาย | 販売ポータル |
| button.cancel | Cancel | ยกเลิก | キャンセル |
| button.delete | Delete | ลบ | missing |
| button.save | Save | บันทึก | 保存 |
| label.amount | Amount | จำนวนเงิน | 金額 |
| label.date | Date | วันที่ | missing |
| menu.customers | Customers | ลูกค้า | 顧客 |
| menu.dashboard | Dashboard | แดชบอร์ด | ダッシュボード |
| menu.reports | Reports | รายงาน | missing |
| msg.items | You have {0} new orders | คุณมีคำสั่งซื้อใหม่ {0} รายการ | missing |
| msg.saved | Saved successfully | บันทึกเรียบร้อย | missing |
| msg.welcome | Welcome back, {0}! | ยินดีต้อนรับกลับมา คุณ{0} | おかえりなさい、{0}さん |
Preview a page in one language
| getMessage(key, args) | Result |
|---|---|
| app.title | ระบบงานขาย |
| menu.dashboard | แดชบอร์ด |
| menu.reports | รายงาน |
| msg.welcome, [Somchai] | ยินดีต้อนรับกลับมา คุณSomchai |
| msg.items, [3] | คุณมีคำสั่งซื้อใหม่ 3 รายการ |
| button.save | บันทึก |
| button.delete | ลบ |
| label.date | วันที่ |
| # | Flag | Code | Name | Native name | Default | Sort order | Status | |
|---|---|---|---|---|---|---|---|---|
| 1 | 🇬🇧 | en | English | English | ✓ | 1 | Active | ✏️ |
| 2 | 🇹🇭 | th | Thai | ไทย | 2 | Active | ✏️ | |
| 3 | 🇯🇵 | ja | Japanese | 日本語 | 3 | Active | ✏️ |
Showing 1–3 of 3
🎓 Learn: how this master is built table app_language
Key points
- DatabaseMessageSource extends Spring's AbstractMessageSource - translations come from SQL Server.
- Missing text falls back to the default language.
Code
- Entity
domain/AppLanguage.java- Repository
repo/AppLanguageRepository.java- Definition
MasterRegistry: "languages"- Page / form
web/MasterController.java- Try-it panel
templates/tools/i18n-matrix.html- REST API
GET /api/i18n/th
SQL to try in SSMS (database MasterDataLabDB)
SELECT code, name, native_name, default_language FROM app_language ORDER BY sort_order;