Skip to content

refactor: optimize i18n#2158

Merged
jsers merged 19 commits into
mainfrom
optimize-i18n
Jul 8, 2026
Merged

refactor: optimize i18n#2158
jsers merged 19 commits into
mainfrom
optimize-i18n

Conversation

@710leo

@710leo 710leo commented Jul 7, 2026

Copy link
Copy Markdown
Member

No description provided.

710leo added 12 commits July 7, 2026 15:02
First visit now follows navigator.languages instead of always
defaulting to zh_CN; explicit choice in localStorage still wins.
Configure fallbackLng zh_CN (the only complete language) in both
init paths so missing keys never render as raw key text.
moment was pinned to zh-cn at TimeRangePicker module load, so English
UI still rendered Chinese weekdays/months in date components. Move the
custom zh-cn config to utils/momentLocale (config.ts keeps a re-export)
and sync the active moment locale on i18n init and languageChanged.
Login page captcha/SSO warnings now go through the login namespace
(sso_no_url is parameterized instead of six copies). The identical
"verification failed" JSX duplicated across five loginCallback pages
is extracted into a shared CallbackFailed component; Custom.tsx keeps
its verifying state and reuses the same keys. Also drop a stray
@codemirror/language import in login/locale/zh_CN.ts.
scripts/check_locale_keys.ts diffs every locale dir against zh_CN and
flags en_US values still containing Chinese. Fill the 81 missing en_US
keys it found (aiConfig agents/mcpServers/skills, dashboard, datasource,
eventPipeline, explorer, pageLayout, NotificationSettings, siteSettings,
shield) and translate the two Chinese values left in alertRules.

Also fixed along the way: mcpServers en title said 'Agent'; the zh
cannot_delete_when_enabled on the MCP page said 'LLM 配置'; explorer en
had a stale field_values_topn.label (component reads .title); notFound
locale files carried dead keys unrelated to what OutOfService.tsx
actually renders — realigned all languages to the real keys.
The repo has no default 'translation' namespace, so t('中文') under a
bare useTranslation() always rendered the Chinese key. Full scan found
and fixed every such case:

- account/secretKey and user/delPopover now use the account/user
  namespaces plus existing common:btn keys, with new keys in all
  five languages
- InputEnlarge/LinkBuilder, TipsBox and Code pointed at the wrong
  (default) namespace; wired to inputEnlarge/common
- pgsql & mysql Datasource/Detail 精确/正则, explorer ES 下钻设置 and
  shareChart empty-data text got proper namespace keys
- log/IndexPatterns 请输入/请选择 filled in en/zh_HK/ja
buildContentText hardcoded 业务组/数据源/团队 in the confirmation text
echoed back to the chat. Reuse the existing form_select.* keys via
i18next.t (module-level helper, evaluated at click time) and pick the
colon/list separator by language.
datasource items/Auth.tsx was the only sibling without i18n; wire it
to the datasourceManage namespace with new AccessKey placeholders.

NOTIFICATION_CHANNEL_TYPES is now a lazy getNotificationChannelTypes()
factory: the ali/tx sms & voice default payload templates carried
Chinese operator instructions that were POSTed verbatim to the backend.
Values now resolve through the notification-channels default_values
keys at form-init time (module-scope evaluation would run before
i18next.init because the eager locale glob pulls in constants.ts).
JSON body skeletons stay in code; only human phrases live in locales.
Bulk of the constants.ts diff is re-indentation — review with -w.
The DocLink header button always pointed at the Chinese docs site.
Extract the language-suffix convention already used by DocumentDrawer
into utils/docUrl (DOC_URL_LANG_SUFFIX + localizeDocUrl, preserving
query/hash and leaving non-flashcat.cloud URLs untouched) and apply it
in getProductDocumentHref. The two duplicated filenameMap copies in
DocumentDrawer now import the shared map. Plugin documentPath links
already flow through DocumentDrawer with a language prop, so they were
covered. Tests added for both helpers.
Covers the remaining one-off Chinese literals on high-traffic paths:
alertRules form warnings, dashboard ES histogram editor (reuses
datasource:es.* keys like its siblings, plus a new es.histogram.interval),
invalid panel config/type messages, the dashboard migrate modal (new
dashboard:migrate.* group), Loki log-context controls, the
organize-fields tooltip in both LogsViewer variants, the event action
busi-group warning, clipboard/password messages in utils (also fixes
three i18next.t('中文') calls missed by the earlier scan because of the
`.t(` pattern), PromQueryBuilder "no parameters" and the DeviceSelect
"且" connector. New keys added to all five languages.
traceCpt Detail header and scatter chart now use trace-namespace keys
(new detail/chart groups in all five languages); tooltip handling keys
off the original field name instead of comparing Chinese strings.

TraceSortItem/RelationType and the manageInterface/eventInterface enums
carried Chinese values that only served as discriminators (display goes
through t() mappings like createModal's actionLabel), so their values
become stable English identifiers with no consumer changes. Side fix:
the sortTraces fallback comparators[TraceSortItem.LONGEST_FIRST] indexed
by the Chinese value and was always undefined — it now resolves.
MigrationModal had no i18n despite the module owning the
migrationDashboard namespace; wire it up with a new modal.* group in
all five languages, reuse common:btn.cancel and the existing migrate
key, and pass the translated title to BlankBusinessPlaceholder.
App.tsx and ModalHOC only mapped en_US/ru_RU, so antd chrome rendered
in Simplified Chinese for zh_HK/ja_JP users. Extract a shared
getAntdLocale(language) helper covering all five languages.
@coderabbitai

coderabbitai Bot commented Jul 7, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 272 files, which is 122 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 8c71fd01-c129-4855-b039-ba5febbb625e

📥 Commits

Reviewing files that changed from the base of the PR and between 491dea8 and 30e8133.

📒 Files selected for processing (272)
  • scripts/check_locale_keys.ts
  • src/App.tsx
  • src/components/AiChatNG/ContentRenderer/FormSelectContentBlock.tsx
  • src/components/Code/index.tsx
  • src/components/DeviceSelect/HostSelect/index.tsx
  • src/components/DeviceSelect/locale/en_US.ts
  • src/components/DeviceSelect/locale/ja_JP.ts
  • src/components/DeviceSelect/locale/ru_RU.ts
  • src/components/DeviceSelect/locale/zh_CN.ts
  • src/components/DeviceSelect/locale/zh_HK.ts
  • src/components/DocumentDrawer/Document.tsx
  • src/components/DocumentDrawer/index.tsx
  • src/components/InputEnlarge/LinkBuilder.tsx
  • src/components/InputEnlarge/locale/en_US.ts
  • src/components/InputEnlarge/locale/index.ts
  • src/components/InputEnlarge/locale/ja_JP.ts
  • src/components/InputEnlarge/locale/ru_RU.ts
  • src/components/InputEnlarge/locale/zh_CN.ts
  • src/components/InputEnlarge/locale/zh_HK.ts
  • src/components/ModalHOC.tsx
  • src/components/NavigableDrawer/locales/index.ts
  • src/components/NavigableDrawer/locales/ja_JP.ts
  • src/components/NavigableDrawer/locales/ru_RU.ts
  • src/components/PromQueryBuilder/Operations/Operation.tsx
  • src/components/PromQueryBuilder/locale/en_US.ts
  • src/components/PromQueryBuilder/locale/ja_JP.ts
  • src/components/PromQueryBuilder/locale/ru_RU.ts
  • src/components/PromQueryBuilder/locale/zh_CN.ts
  • src/components/PromQueryBuilder/locale/zh_HK.ts
  • src/components/SideMenu/locale/en_US.ts
  • src/components/SideMenu/locale/zh_HK.ts
  • src/components/TimeRangePicker/RelativeTimeRangePicker/index.tsx
  • src/components/TimeRangePicker/TimeRangePicker.tsx
  • src/components/TimeRangePicker/config.ts
  • src/components/TimeRangePicker/locale/ru_RU.ts
  • src/components/TipsBox/index.tsx
  • src/components/menu/locale/ja_JP.ts
  • src/components/menu/locale/ru_RU.ts
  • src/components/menu/locale/zh_CN.ts
  • src/components/pageLayout/PageLayoutWithTabs/DocLink.test.ts
  • src/components/pageLayout/PageLayoutWithTabs/DocLink.tsx
  • src/components/pageLayout/Version/locale/index.ts
  • src/components/pageLayout/Version/locale/ja_JP.ts
  • src/components/pageLayout/Version/locale/ru_RU.ts
  • src/components/pageLayout/locale/en_US.ts
  • src/components/pageLayout/locale/ja_JP.ts
  • src/components/pageLayout/locale/ru_RU.ts
  • src/i18n.ts
  • src/locales/common/locale/en_US.ts
  • src/locales/common/locale/ja_JP.ts
  • src/locales/common/locale/ru_RU.ts
  • src/locales/common/locale/zh_CN.ts
  • src/locales/common/locale/zh_HK.ts
  • src/locales/datasource/locale/en_US.ts
  • src/locales/datasource/locale/ja_JP.ts
  • src/locales/datasource/locale/ru_RU.ts
  • src/locales/datasource/locale/zh_CN.ts
  • src/locales/datasource/locale/zh_HK.ts
  • src/pages/account/locale/en_US.ts
  • src/pages/account/locale/ja_JP.ts
  • src/pages/account/locale/ru_RU.ts
  • src/pages/account/locale/zh_CN.ts
  • src/pages/account/locale/zh_HK.ts
  • src/pages/account/secretKey.tsx
  • src/pages/aiConfig/agents/locale/en_US.ts
  • src/pages/aiConfig/agents/locale/ja_JP.ts
  • src/pages/aiConfig/agents/locale/ru_RU.ts
  • src/pages/aiConfig/agents/locale/zh_HK.ts
  • src/pages/aiConfig/llmConfigs/locale/ja_JP.ts
  • src/pages/aiConfig/llmConfigs/locale/ru_RU.ts
  • src/pages/aiConfig/llmConfigs/locale/zh_HK.ts
  • src/pages/aiConfig/mcpServers/locale/en_US.ts
  • src/pages/aiConfig/mcpServers/locale/ja_JP.ts
  • src/pages/aiConfig/mcpServers/locale/ru_RU.ts
  • src/pages/aiConfig/mcpServers/locale/zh_CN.ts
  • src/pages/aiConfig/mcpServers/locale/zh_HK.ts
  • src/pages/aiConfig/skills/locale/en_US.ts
  • src/pages/aiConfig/skills/locale/ja_JP.ts
  • src/pages/aiConfig/skills/locale/ru_RU.ts
  • src/pages/aiConfig/skills/locale/zh_HK.ts
  • src/pages/alertRules/Form/EventSettings/Relabel/EventsModal.tsx
  • src/pages/alertRules/Form/components/Triggers/Builder.tsx
  • src/pages/alertRules/Form/index.tsx
  • src/pages/alertRules/FormNG/PipelineConfigsNG/Relabel/EventsModal.tsx
  • src/pages/alertRules/FormNG/components/Sidebar/RuleSummary.tsx
  • src/pages/alertRules/FormNG/components/Triggers/Builder.tsx
  • src/pages/alertRules/FormNG/index.tsx
  • src/pages/alertRules/locale/en_US.ts
  • src/pages/alertRules/locale/ja_JP.ts
  • src/pages/alertRules/locale/ru_RU.ts
  • src/pages/alertRules/locale/zh_CN.ts
  • src/pages/alertRules/locale/zh_HK.ts
  • src/pages/builtInComponents/AlertRules/Detail.tsx
  • src/pages/chart/index.tsx
  • src/pages/chart/locale/en_US.ts
  • src/pages/chart/locale/ja_JP.ts
  • src/pages/chart/locale/ru_RU.ts
  • src/pages/chart/locale/zh_CN.ts
  • src/pages/chart/locale/zh_HK.ts
  • src/pages/dashboard/Components/UnitPicker/locale/index.ts
  • src/pages/dashboard/Components/UnitPicker/locale/ru_RU.ts
  • src/pages/dashboard/Detail/Detail.tsx
  • src/pages/dashboard/Editor/Options/index.tsx
  • src/pages/dashboard/Editor/QueryEditor/Elasticsearch/GroupBy/Histgram.tsx
  • src/pages/dashboard/Editor/QueryEditor/Elasticsearch/GroupBy/Terms.tsx
  • src/pages/dashboard/Editor/QueryEditor/Elasticsearch/Values/index.tsx
  • src/pages/dashboard/Editor/config.tsx
  • src/pages/dashboard/Panels/index.tsx
  • src/pages/dashboard/Renderer/Renderer/Main.tsx
  • src/pages/dashboard/Renderer/Renderer/Pie/index.tsx
  • src/pages/dashboard/Renderer/Renderer/Timeseries/index.tsx
  • src/pages/dashboard/locale/en_US.ts
  • src/pages/dashboard/locale/ja_JP.ts
  • src/pages/dashboard/locale/ru_RU.ts
  • src/pages/dashboard/locale/zh_CN.ts
  • src/pages/dashboard/locale/zh_HK.ts
  • src/pages/datasource/components/items/Auth.tsx
  • src/pages/datasource/locale/en_US.ts
  • src/pages/datasource/locale/ja_JP.ts
  • src/pages/datasource/locale/ru_RU.ts
  • src/pages/datasource/locale/zh_CN.ts
  • src/pages/datasource/locale/zh_HK.ts
  • src/pages/event/DetailNG/Actions.tsx
  • src/pages/event/locale/en_US.ts
  • src/pages/event/locale/ja_JP.ts
  • src/pages/event/locale/ru_RU.ts
  • src/pages/event/locale/zh_CN.ts
  • src/pages/event/locale/zh_HK.ts
  • src/pages/eventPipeline/locale/en_US.ts
  • src/pages/eventPipeline/locale/ja_JP.ts
  • src/pages/eventPipeline/locale/ru_RU.ts
  • src/pages/eventPipeline/locale/zh_HK.ts
  • src/pages/explorer/Elasticsearch/LogView.tsx
  • src/pages/explorer/Elasticsearch/index.tsx
  • src/pages/explorer/Loki/component/context/index.tsx
  • src/pages/explorer/components/LogsViewer/components/LogViewer.tsx
  • src/pages/explorer/components/LogsViewer/components/OriginSettings.tsx
  • src/pages/explorer/locale/en_US.ts
  • src/pages/explorer/locale/ja_JP.ts
  • src/pages/explorer/locale/ru_RU.ts
  • src/pages/explorer/locale/zh_CN.ts
  • src/pages/explorer/locale/zh_HK.ts
  • src/pages/help/NotificationSettings/locale/en_US.ts
  • src/pages/help/NotificationTpls/Editor/components/FieldWithEditor/index.tsx
  • src/pages/help/migrate/MigrationModal.tsx
  • src/pages/help/migrate/index.tsx
  • src/pages/help/migrate/locale/en_US.ts
  • src/pages/help/migrate/locale/ja_JP.ts
  • src/pages/help/migrate/locale/ru_RU.ts
  • src/pages/help/migrate/locale/zh_CN.ts
  • src/pages/help/migrate/locale/zh_HK.ts
  • src/pages/help/migrate/utils.ts
  • src/pages/log/IndexPatterns/locale/en_US.ts
  • src/pages/log/IndexPatterns/locale/index.ts
  • src/pages/log/IndexPatterns/locale/ja_JP.ts
  • src/pages/log/IndexPatterns/locale/ru_RU.ts
  • src/pages/log/IndexPatterns/locale/zh_CN.ts
  • src/pages/log/IndexPatterns/locale/zh_HK.ts
  • src/pages/logExplorer/components/LogsViewer/components/LogViewer.tsx
  • src/pages/logExplorer/components/LogsViewer/components/OriginSettings.tsx
  • src/pages/logExplorer/components/RenderValue/Token.tsx
  • src/pages/logExplorer/components/RenderValue/index.tsx
  • src/pages/logExplorer/locale/en_US.ts
  • src/pages/logExplorer/locale/ja_JP.ts
  • src/pages/logExplorer/locale/ru_RU.ts
  • src/pages/logExplorer/locale/zh_CN.ts
  • src/pages/logExplorer/locale/zh_HK.ts
  • src/pages/login/index.tsx
  • src/pages/login/locale/en_US.ts
  • src/pages/login/locale/ja_JP.ts
  • src/pages/login/locale/ru_RU.ts
  • src/pages/login/locale/zh_CN.ts
  • src/pages/login/locale/zh_HK.ts
  • src/pages/loginCallback/CallbackFailed.tsx
  • src/pages/loginCallback/Custom.tsx
  • src/pages/loginCallback/DingTalk.tsx
  • src/pages/loginCallback/Feishu.tsx
  • src/pages/loginCallback/cas.tsx
  • src/pages/loginCallback/index.tsx
  • src/pages/loginCallback/oauth.tsx
  • src/pages/monitor/object/locale/index.ts
  • src/pages/monitor/object/locale/ja_JP.ts
  • src/pages/monitor/object/locale/ru_RU.ts
  • src/pages/monitor/object/metricViews/LabelsValues.tsx
  • src/pages/notFound/locale/ja_JP.ts
  • src/pages/notFound/locale/ru_RU.ts
  • src/pages/notFound/locale/zh_CN.ts
  • src/pages/notificationChannels/constants.ts
  • src/pages/notificationChannels/locale/en_US.ts
  • src/pages/notificationChannels/locale/ja_JP.ts
  • src/pages/notificationChannels/locale/ru_RU.ts
  • src/pages/notificationChannels/locale/zh_CN.ts
  • src/pages/notificationChannels/locale/zh_HK.ts
  • src/pages/notificationChannels/pages/Add.tsx
  • src/pages/notificationChannels/pages/Edit.tsx
  • src/pages/notificationChannels/pages/ListNG/index.tsx
  • src/pages/notificationRules/locale/ru_RU.ts
  • src/pages/notificationTemplates/components/FieldWithEditor/index.tsx
  • src/pages/siteSettings/locale/en_US.ts
  • src/pages/siteSettings/locale/zh_HK.ts
  • src/pages/targets/List.tsx
  • src/pages/targets/locale/en_US.ts
  • src/pages/targets/locale/ja_JP.ts
  • src/pages/targets/locale/ru_RU.ts
  • src/pages/targets/locale/zh_CN.ts
  • src/pages/targets/locale/zh_HK.ts
  • src/pages/task/ResultContent/index.tsx
  • src/pages/taskTpl/bindTags.tsx
  • src/pages/taskTpl/hostsFilterModal/index.tsx
  • src/pages/taskTpl/index.tsx
  • src/pages/traceCpt/Detail/Header/index.tsx
  • src/pages/traceCpt/Detail/Timeline/SpanDetail/index.tsx
  • src/pages/traceCpt/components/ScatterBubbleChart/ScatterBubbleChart.tsx
  • src/pages/traceCpt/locale/en_US.ts
  • src/pages/traceCpt/locale/ja_JP.ts
  • src/pages/traceCpt/locale/ru_RU.ts
  • src/pages/traceCpt/locale/zh_CN.ts
  • src/pages/traceCpt/locale/zh_HK.ts
  • src/pages/traceCpt/type.ts
  • src/pages/traceCpt/utils/date.ts
  • src/pages/user/component/delPopover/index.tsx
  • src/pages/user/locale/en_US.ts
  • src/pages/user/locale/ja_JP.ts
  • src/pages/user/locale/ru_RU.ts
  • src/pages/user/locale/zh_CN.ts
  • src/pages/user/locale/zh_HK.ts
  • src/pages/warning/shield/edit.tsx
  • src/pages/warning/shield/locale/en_US.ts
  • src/pages/warning/shield/locale/ja_JP.ts
  • src/pages/warning/shield/locale/ru_RU.ts
  • src/pages/warning/shield/locale/zh_CN.ts
  • src/pages/warning/shield/locale/zh_HK.ts
  • src/plugins/TDengine/Dashboard/QueryBuilder.tsx
  • src/plugins/TDengine/Explorer/QueryBuilder.tsx
  • src/plugins/TDengine/Explorer/index.tsx
  • src/plugins/TDengine/locale/index.ts
  • src/plugins/TDengine/locale/ja_JP.ts
  • src/plugins/TDengine/locale/ru_RU.ts
  • src/plugins/clickHouse/locale/index.ts
  • src/plugins/clickHouse/locale/ja_JP.ts
  • src/plugins/clickHouse/locale/ru_RU.ts
  • src/plugins/doris/locale/ja_JP.ts
  • src/plugins/elasticsearch/AlertRule/EnrichQueries/index.tsx
  • src/plugins/elasticsearch/locale/index.ts
  • src/plugins/elasticsearch/locale/ru_RU.ts
  • src/plugins/iotdb/AlertRule/Queries/index.tsx
  • src/plugins/iotdb/Dashboard/QueryBuilder.tsx
  • src/plugins/iotdb/locale/index.ts
  • src/plugins/iotdb/locale/ja_JP.ts
  • src/plugins/iotdb/locale/ru_RU.ts
  • src/plugins/mysql/locale/en_US.ts
  • src/plugins/mysql/locale/ja_JP.ts
  • src/plugins/mysql/locale/ru_RU.ts
  • src/plugins/mysql/locale/zh_CN.ts
  • src/plugins/mysql/locale/zh_HK.ts
  • src/plugins/pgsql/Datasource/Detail.tsx
  • src/plugins/pgsql/locale/index.ts
  • src/plugins/pgsql/locale/ru_RU.ts
  • src/plugins/victorialogs/Explorer/Logs/JSON.tsx
  • src/plugins/victorialogs/locale/en_US.ts
  • src/plugins/victorialogs/locale/index.ts
  • src/plugins/victorialogs/locale/ja_JP.ts
  • src/plugins/victorialogs/locale/ru_RU.ts
  • src/plugins/victorialogs/locale/zh_CN.ts
  • src/plugins/victorialogs/locale/zh_HK.ts
  • src/store/eventInterface/index.ts
  • src/store/manageInterface/index.ts
  • src/utils/antdLocale.ts
  • src/utils/docUrl.test.ts
  • src/utils/docUrl.ts
  • src/utils/index.ts
  • src/utils/momentLocale.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch optimize-i18n

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

710leo added 7 commits July 7, 2026 16:43
# Conflicts:
#	src/pages/alertRules/locale/en_US.ts
#	src/pages/alertRules/locale/ja_JP.ts
#	src/pages/alertRules/locale/ru_RU.ts
#	src/pages/alertRules/locale/zh_CN.ts
#	src/pages/alertRules/locale/zh_HK.ts
- fallbackLng: zh_HK -> zh_CN; other languages -> en_US -> zh_CN
- add 18 new ja_JP/ru_RU locale files and register them
- fill missing keys across dashboard/eventPipeline/aiConfig/logExplorer/plugins
- fix explorer field_values_topn key (label -> title) to match en_US/zh_CN
- fix Cyrillic 'A' typo in ru_RU 'Agent' and stale const name in IndexPatterns ja_JP
…e gaps

With the new fallback chain (default: en_US -> zh_CN), Chinese-as-key
entries that existed only in en_US/zh_HK/ja/ru caused zh_CN UI to show
English. Backfill them into zh_CN (value same as key) for InputEnlarge,
menu, log/IndexPatterns and plugins/mysql, and complete the same keys
missing in ja/ru/hk files. Also fix two Russian strings with leftover
Chinese (alertRules threshold_judgment, dashboard var.help_tip).
A cross-language union check found keys existing only in some language
files with no reference anywhere (main repo and plus repo verified):
menu.personnel_orgs, ident_placeholder, query.prometheus.expression,
link.url_tip, script.script_content, nested link-tip-time-format, and
19 query.* keys copied into clickHouse/doris ja_JP from other plugin
templates. Remove them so all five languages share an identical key set.
Replace hardcoded Chinese text and i18n.language conditionals with
t()/i18next.t() calls across dashboard, trace, task, explorer and
datasource plugin (TDengine/iotdb/victorialogs) pages. Add the
corresponding keys to en_US/ja_JP/ru_RU/zh_CN/zh_HK locales.

i18n is read at call-time (trace duration units, switch field yes/no,
config length limits) so language switching takes effect at render.
- FormNG: gate the advanced sidebar section with IS_PLUS; its content
  (NotifyExtraNG) is a plus-only parcel that renders null in OSS, so the
  entry pointed to nothing and showed raw alertRules_extra keys
- Triggers/Builder x2: db_aliyunSLS:trigger.value_msg (plus-only ns) ->
  alertRules:trigger.value_msg, new leaf added to all 5 locales
- ES EnrichQueries: db_aliyunSLS:enrich_queries.title ->
  alertRules:enrich_queries.title, new leaf added to all 5 locales
- builtInComponents AlertRules Detail: alertRulesBuiltin:detail_no_result
  (nonexistent ns) -> common:nodata
- Relabel EventsModal x2: t('rule_name') missing in AlertHisEvents ns ->
  AlertCurEvents:rule_name (column renders rule name + event tags)
- logExplorer RenderValue x3: drop stray 'log.' prefix so
  field_actions.{exists,and,not} resolve
@jsers jsers merged commit 591af87 into main Jul 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants