Skip to content

feat: add Ukrainian language support for backend and web UI#6109

Merged
houko merged 10 commits into
librefang:mainfrom
pavver:main
Jun 15, 2026
Merged

feat: add Ukrainian language support for backend and web UI#6109
houko merged 10 commits into
librefang:mainfrom
pavver:main

Conversation

@pavver

@pavver pavver commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Type

  • Agent template (TOML)
  • Skill (Python/JS/Prompt)
  • Channel adapter
  • LLM provider
  • Built-in tool
  • Bug fix
  • Feature (Rust)
  • Documentation / Translation
  • Refactor / Performance
  • CI / Tooling
  • Other

Summary

This PR introduces complete Ukrainian (uk) language support across the LibreFang system:

  1. Backend Error Messages: Fluent translations (errors.ftl) for all ~300 keys, registered in i18n.rs and mapped in uk.toml.
  2. React Dashboard Locales: Complete translation of the React SPA dashboard interface (~3800 keys) and integration in i18n.ts.
  3. Static Web Locales: Translated static web locale JSON file served by the backend at /locales/uk.json with rate limit exemptions and integration tests.
  4. UI Switching & Connection Status: Added "Українська" to the user menu language switcher, translated channel bridge connection status messages, and updated all translation README files.
  5. Project Documentation: Created the Ukrainian translation of the project README.uk.md and registered it in the i18n index.

Changes

librefang-types

  • errors.ftl: Created Fluent translation file with ~300 error strings adhering to IT terminology glossary rules.
  • i18n.rs: Registered uk in SUPPORTED_LANGUAGES, included UK_FTL via include_str!, and added ukrainian_translation unit test.
  • uk.toml: Created Ukrainian error mapping catalog with 74 keys.

librefang-api & React Dashboard

  • dashboard/src/locales/uk.json: Created React SPA translation file.
  • dashboard/src/lib/i18n.ts: Registered uk translations resource in React i18next.
  • dashboard/src/App.tsx: Added "Українська" option to user menu language switcher.
  • static/locales/uk.json: Added static served web locale JSON file.
  • webchat.rs: Implemented static file serving for locale_uk.
  • server.rs: Registered /locales/uk.json route.
  • rate_limiter.rs: Added rate-limit exemptions for /locales/uk.json.
  • channel_bridge.rs: Localized channel bridge status message for Ukrainian.
  • api_integration_test.rs: Added integration test assertions for /locales/uk.json.

Documentation

  • i18n/README.uk.md: Created the Ukrainian README translation matching root layout and images.
  • README.md & i18n/README.*.md: Updated multi-language switcher links to include Ukrainian.
  • i18n/README.md: Registered README.uk.md file in structure and added example.

Attribution

  • This PR preserves author attribution for any adapted prior work (Co-authored-by, commit preservation, or explicit credit in the PR body)

Testing

Verified using scoped tests and compiler checks:

  • Scoped backend error tests: cargo test -p librefang-types --lib i18n (23 passed)

  • Scoped API integration tests: cargo test -p librefang-api --test api_integration_test (80 passed)

  • Workspace check: cargo check --workspace --lib (clean build)

  • Workspace clippy: cargo clippy --workspace --all-targets -- -D warnings (zero warnings)

  • cargo clippy --workspace --all-targets -- -D warnings passes

  • cargo test --workspace passes (all modified/scoped tests pass)

  • Live integration tested (if applicable)

Security

  • No new unsafe code
  • No secrets or API keys in diff
  • User input validated at boundaries

@github-actions

Copy link
Copy Markdown
Contributor

Thanks for your first pull request! 🎉

A maintainer will review it soon. While you wait, please make sure:

  • PR title follows conventional format (feat:, fix:, docs:, etc.)
  • cargo test --workspace passes
  • cargo clippy --workspace --all-targets -- -D warnings is clean

We aim to provide initial feedback within 7 days. See CONTRIBUTING.md for details.

@github-actions github-actions Bot added size/XL 1000+ lines changed area/docs Documentation and guides labels Jun 14, 2026
@houko
houko enabled auto-merge (squash) June 14, 2026 23:21
houko and others added 3 commits June 15, 2026 08:21
The uk.json dashboard and static locale files contain API-key UI labels
and placeholders (e.g. "OPENAI_API_KEY", "sk-...") that the Secret Keyword
plugin flags, mirroring the existing en/zh/ja false positives already in
the baseline. Refresh the baseline so the detect-secrets scan passes.
@houko
houko merged commit 721be1a into librefang:main Jun 15, 2026
33 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/docs Documentation and guides size/XL 1000+ lines changed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants