mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-06 16:09:41 +00:00
ee71df7ce73cec00a9dba13dbe4b2e910e16ebfc
3
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
eaba77fa34 |
fix(i18n): DeepSeek translation pipeline, BCP-47/en-US locales, +ru/pl/vi, full backfill (#13263)
## Summary
Replaces the AWS Translate i18n pipeline with a DeepSeek (LLM) backend,
standardizes locale files to BCP-47 naming with an `en-US` base, adds
new languages, and backfills **every locale to 100%**.
## What changed
### Translation engine (DeepSeek)
- Swap AWS Translate → DeepSeek via its OpenAI-compatible API
(`scripts/translations/`). Auth via the `DEEPSEEK_API_KEY` secret;
per-request 60s timeout.
- **Batched** translation (50/call) with **per-string validation**:
interpolation placeholders (`{count}`, `%s`, `@:key`), vue-i18n
**pluralization pipes** (`{n} Day \| {n} Days`), and literal escapes
(`{'@'}`, `{'{'}`, `{'\|'}`) are preserved or the string is rejected and
retried.
- Robust recovery: index-aligned batches, split-on-mismatch to isolate a
single bad string, temperature-perturbed retries, and rejection of
empty/whitespace output (never blanks a label). Removed the old
`TRANSLATION_MAX_KEYS` safety cap.
### Locale naming + base language
- All 15 locale files renamed to **BCP-47 hyphen** form (`en-US.json`,
`zh-CN.json`, `zh-TW.json`, `fr-FR.json`, …) — matching
`navigator.language` / `Intl` / HTML `lang`.
- **English base switched `en-gb` → `en-us`** (app code,
`fallbackLocale`, BCP-47 map, selector, defaults). British-Pound
currency and date-formatting `en-GB` usages left untouched. Existing
`en-gb` cookies fall back cleanly to English — no migration needed.
### New languages
- **Russian (`ru`), Polish (`pl`), Vietnamese (`vi`)** — fully generated
and wired into `localeFileMap`, `APP_LOCALE_TO_BCP47`, and the language
selector.
- **Traditional Chinese (`zh-TW`)** now maintained by the translator
alongside Simplified (`zh-CN`).
- RTL languages (`ar`, `fa`) intentionally **deferred** until the app
has `dir="rtl"` support.
### Full backfill (one-time)
- Every pre-existing locale filled from ~5.9k up to the full **8,269
keys** (~26.9k strings). `.translation_state.json` rebuilt complete, so
future runs are incremental.
### Nav i18n bug fix
- The **Dashboards** and **Data** nav group labels were hardcoded
English (bypassing i18n) and stayed English in every locale. Now
resolved via `t()` (`menu.dashboard`, new `menu.data`), localized and
re-resolving on language change.
## Verification
- Full web unit suite: **39,035 passed / 414 skipped / 0 failed** (1,167
files).
- `type-check` clean (0 TS errors).
- Locale registry sync spec green; all 15 files = 8,269 leaves.
- Translation engine verified live against `deepseek-v4-flash`.
## Notes
- Since all locales are now 100%, the post-merge `update-translations`
workflow will find nothing pending (no follow-up translation PR).
- `ar`/`fa` to be added with RTL support in a follow-up.
|
||
|
|
48280be9a5 | chore(deps): bump actions/github-script from 6 to 9 (#11255) | ||
|
|
576671d14f |
fix: automate update process of feature master list on about us page (#10010)
### **PR Type** Enhancement ___ ### **Description** - Centralize features in JSON registry - Refactor ComparisonTable to load from registry - Add GitHub Action for auto-updating features.json - Update Slack PR notification configuration - Enable JSON module imports in tsconfig ___ ### Diagram Walkthrough ```mermaid flowchart LR PRDesc["PR description feature section"] AutoUpdate["Auto-update features.json Workflow"] featuresJSON["features.json"] featuresTS["features.ts registry"] TableComp["FeatureComparisonTable.vue"] PRDesc -- "triggers" --> AutoUpdate AutoUpdate -- "updates" --> featuresJSON featuresJSON -- "loaded by" --> featuresTS featuresTS -- "used by" --> TableComp ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>features.ts</strong><dd><code>Add central feature registry and helper functions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10010/files#diff-232fb84d995004ab5e3da68e3a9fc835808f460feb9f4478dca50ea4a48ed057">+104/-0</a> </td> </tr> <tr> <td><strong>FeatureComparisonTable.vue</strong><dd><code>Refactor table to load features from registry</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10010/files#diff-450bc4b412ffde37d04f96046199090e3d41face1ee85b32e446c9b470ce299e">+31/-30</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>6 files</summary><table> <tr> <td><strong>auto-update-features.yml</strong><dd><code>Add workflow to auto-update features.json</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10010/files#diff-7179e615740ebfe7a08143d567c20bdf7d813506f77c6efba463d105b48379ad">+253/-0</a> </td> </tr> <tr> <td><strong>pr-slack.yml</strong><dd><code>Update Slack action with new webhook syntax</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10010/files#diff-c049020d06d481f16942b242608c22fa8377924730787f97288e03561768f51a">+3/-3</a> </td> </tr> <tr> <td><strong>features.json</strong><dd><code>Add JSON-based features configuration</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10010/files#diff-f3c3ea1b3f6e34a0718bced5c01c09bfe13b5ba7936ee8b77eb66b8c14767d49">+262/-0</a> </td> </tr> <tr> <td><strong>features.schema.json</strong><dd><code>Add JSON schema for features.json validation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10010/files#diff-42009a609f9d2eb5a6a7264d7c236ef538fd624f29edf02759bd3b231453be27">+71/-0</a> </td> </tr> <tr> <td><strong>tsconfig.app.json</strong><dd><code>Enable JSON module imports in app config</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10010/files#diff-1fc2dc23685a64f037b0063bf18fc420a8faeb83e98a2cc2b407f1a25c4fc1f5">+1/-0</a> </td> </tr> <tr> <td><strong>tsconfig.json</strong><dd><code>Enable JSON module imports in base tsconfig</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10010/files#diff-0dafb2d38c20327f4a74c03733790ccca87a4bbda69ec4c03aa362524b0522ca">+1/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |