#19689: feat(i18n): added Filipino (fil) locale
app: web-ui
size: S
Cluster:
Internationalization Enhancements
## Summary
Describe the problem and fix in 2–5 bullets:
- **Problem:** The Control UI has no Filipino (fil-PH) locale option, so Filipino-speaking users cannot use the dashboard in their language.
- **Why it matters:** Expands accessibility for Filipino users; Filipino is one of the most spoken languages globally.
- **What changed:** Added a full `fil-PH` translation file, wired the locale into the i18n manager (type, auto-detection, dynamic import, language picker), and added the `filPH` label to all existing locale files.
- **What did NOT change (scope boundary):** No changes to gateway, CLI, backend, or any non-UI code. Existing locales are untouched except for adding the new `filPH` language label entry.
## Change Type (select all)
- [ ] Bug fix
- [x] Feature
- [ ] Refactor
- [ ] Docs
- [ ] Security hardening
- [ ] Chore/infra
## Scope (select all touched areas)
- [ ] Gateway / orchestration
- [ ] Skills / tool execution
- [ ] Auth / tokens
- [ ] Memory / storage
- [ ] Integrations
- [ ] API / contracts
- [x] UI / DX
- [ ] CI/CD / infra
## Linked Issue/PR
- Closes #3460
- Related https://github.com/openclaw/openclaw/issues/3460#issuecomment-3910376242
## User-visible / Behavior Changes
User can now switch to Filipino language in the Control UI language picker. Browsers with `fil` or `fil-*` navigator language auto-select Filipino.
## Security Impact (required)
- New permissions/capabilities? No
- Secrets/tokens handling changed? No
- New/changed network calls? No
- Command/tool execution surface changed? No
- Data access scope changed? No
- If any `Yes`, explain risk + mitigation:
## Repro + Verification
### Environment
- OS: Any (browser-based Control UI)
- Runtime/container: N/A
- Model/provider: N/A
- Integration/channel (if any): N/A
- Relevant config (redacted): N/A
### Steps
1. Open the Control UI overview page.
2. In the "Language" dropdown under Gateway Access, select **Filipino**.
3. Observe that all UI strings switch to Filipino translations.
### Expected
- All labels, headings, subtitles, and navigation items display in Filipino.
### Actual
- All labels, headings, subtitles, and navigation items display in Filipino.
## Evidence
Attach at least one:
- [ ] Failing test/log before + passing after
- [ ] Trace/log snippets
- [ ] Screenshot/recording
- [ ] Perf numbers (if relevant)
## Human Verification (required)
What you personally verified (not just CI), and how:
- Verified scenarios:
- Edge cases checked:
- What you did **not** verify:
## Compatibility / Migration
- Backward compatible? Yes
- Config/env changes? No
- Migration needed? No
- If yes, exact upgrade steps:
## Failure Recovery (if this breaks)
- How to disable/revert this change quickly: Revert the 3 commits; the locale falls back to English for any unrecognized language.
- Files/config to restore: `ui/src/i18n/lib/translate.ts`, `ui/src/i18n/lib/types.ts`, `ui/src/i18n/locales/en.ts`, `ui/src/i18n/locales/pt-BR.ts`, `ui/src/i18n/locales/zh-CN.ts`, `ui/src/i18n/locales/zh-TW.ts`, `ui/src/ui/views/overview.ts`; delete `ui/src/i18n/locales/fil-PH.ts`.
- Known bad symptoms reviewers should watch for: Missing translation keys falling through to `undefined` instead of English fallback; language picker not rendering the new option.
## Risks and Mitigations
- Risk: A translation key in `fil-PH.ts` is missing or mistyped, causing `undefined` to render.
- Mitigation: The translation file mirrors the English file's structure exactly; the i18n system falls back to key path display on missing keys.
<!-- greptile_comment -->
<h3>Greptile Summary</h3>
This PR adds complete Filipino (fil-PH) locale support to the Control UI. The implementation is clean and follows the established i18n pattern used by other locales.
**Key changes:**
- Added `fil-PH` to the `Locale` type definition and `SUPPORTED_LOCALES` array
- Implemented browser auto-detection for `fil` and `fil-*` navigator languages
- Added dynamic import for the new Filipino translation file
- Created complete `fil-PH.ts` translation file with all 120 keys matching the English structure
- Updated all existing locale files (`en.ts`, `pt-BR.ts`, `zh-CN.ts`, `zh-TW.ts`) to include the `filPH` language label
- Added Filipino option to the language picker dropdown in `overview.ts`
**Translation quality:** All strings appear to be properly translated to Filipino with appropriate context (e.g., "Kalagayan" for Health, "Kontrol" for Control, etc.)
**No issues found.** The implementation correctly follows the existing locale pattern, properly handles the hyphenated locale code transformation (`fil-PH` → `fil_PH` export), and maintains structural consistency across all translation files.
<h3>Confidence Score: 5/5</h3>
- This PR is safe to merge with no risk
- The changes are purely additive (new locale support), follow established patterns exactly, maintain TypeScript type safety, include proper fallback mechanisms, and don't modify any existing logic or behavior beyond adding the new locale option
- No files require special attention
<sub>Last reviewed commit: 1b1115c</sub>
<!-- greptile_other_comments_section -->
<sub>(3/5) Reply to the agent's comments like "Can you suggest a fix for this @greptileai?" or ask follow-up questions!</sub>
<!-- /greptile_comment -->
Most Similar PRs
#21617: feat(i18n): added korean locale
by Jaejuna · 2026-02-20
77.6%
#21988: feat(i18n): added Thai (th) locale
by samithiwat · 2026-02-20
77.0%
#22570: feat(i18n): add Korean (ko) locale to Control UI
by hoonsikim · 2026-02-21
76.9%
#22332: i18n: add Korean (ko-KR) locale support
by arusia88 · 2026-02-21
75.9%
#13622: feat(i18n): add complete multi-language support (EN, TR, FR, DE)
by vaur94 · 2026-02-10
75.6%
#22165: feat(i18n): translate hardcoded button labels to all 4 locales
by NikolaVujovic1988 · 2026-02-20
75.0%
#10586: feat: Add Chinese (zh-CN) localization support
by Maxsong-0 · 2026-02-06
74.8%
#10657: feat(ui): add i18n support with English, Chinese, and Portuguese
by SalimBinYousuf1 · 2026-02-06
73.2%
#20905: i18n: add bulgarian to openclaw
by Lutherwaves · 2026-02-19
71.5%
#9490: Add Internationalization (i18n) Support
by luuman · 2026-02-05
71.5%