Follow-up gap from #4466 (PR #4498), scope-bounded there because plugin-dashboard's source was another card's in-flight surface at the time (#4432 — now landed, surface free).
What
buildChartSeries (core) buckets null-keyed groups under options.nullCategoryLabel, defaulting to the English constant NULL_CATEGORY_LABEL = '(None)' when no label is passed. ObjectChart passes tt('chart.nullCategory', '(None)'), so standalone charts localize. DatasetWidget (plugin-dashboard) calls buildChartSeries with no options, so a dashboard widget shows the raw English (None) bucket even in a zh app.
The fix (measured in PR #4498's report)
One argument at DatasetWidget's buildChartSeries call site:
{ nullCategoryLabel: tt('chart.nullCategory', '(None)') }
tt = useSafeTranslate() is already in the component (~line 698), and the chart.nullCategory key already exists in all ten packs (added by PR #4498). The drill-through side needs the same label passed to findChartSeriesRow so the pair stays in agreement — check the call site for the symmetric argument.
Red-first: zh-locale DatasetWidget over a null-keyed group → pre-fix bar labeled (None), post-fix (未指定); drill click on the bucket bar still resolves (the #4498 dead-click concern, now on the localized label).
Related: #4497 (the pivot branch's own null-drop, separate mechanism), #4466 (PR #4498).
Filed unassigned for triage — one-line class, natural ride-along for whoever next touches DatasetWidget, or a quick standalone.
Generated by Claude Code
Follow-up gap from #4466 (PR #4498), scope-bounded there because plugin-dashboard's source was another card's in-flight surface at the time (#4432 — now landed, surface free).
What
buildChartSeries(core) buckets null-keyed groups underoptions.nullCategoryLabel, defaulting to the English constantNULL_CATEGORY_LABEL = '(None)'when no label is passed. ObjectChart passestt('chart.nullCategory', '(None)'), so standalone charts localize. DatasetWidget (plugin-dashboard) callsbuildChartSerieswith no options, so a dashboard widget shows the raw English(None)bucket even in a zh app.The fix (measured in PR #4498's report)
One argument at DatasetWidget's
buildChartSeriescall site:tt = useSafeTranslate()is already in the component (~line 698), and thechart.nullCategorykey already exists in all ten packs (added by PR #4498). The drill-through side needs the same label passed tofindChartSeriesRowso the pair stays in agreement — check the call site for the symmetric argument.Red-first: zh-locale DatasetWidget over a null-keyed group → pre-fix bar labeled
(None), post-fix(未指定); drill click on the bucket bar still resolves (the #4498 dead-click concern, now on the localized label).Related: #4497 (the pivot branch's own null-drop, separate mechanism), #4466 (PR #4498).
Filed unassigned for triage — one-line class, natural ride-along for whoever next touches DatasetWidget, or a quick standalone.
Generated by Claude Code