You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
59 such labels across all 15 objects. They sit at the top of every list page — the first thing a user sees on entering any object — and they render in English regardless of locale.
This is more visible than the picklist gaps in #645: a Chinese user gets a fully translated sidebar, fully translated column headers, and an English tab strip between them.
Why this repo cannot fix it
There is no translation key for a tab. Verified against @objectstack/spec@17.0.0-rc.1:
ObjectTranslationDataSchema (dist/translation.zod-CLbo6zbE.d.ts:60-101) carries exactly label, pluralLabel, description, fields, _views, _actions, _sections. There is no _tabs.
@objectstack/lint — the tool that produces the i18n warnings — has handling for _views, _sections, _actions and navigation, and zero references to tabs. So these 59 labels are not merely untranslated; they are not counted as translatable, which is why they never appeared in i18n: 205 warnings hidden by --skip-i18n; broken option keys and untranslated navigation #494's 205-warning survey.
Adding a _tabs block to src/translations/*.ts would be stripped by z.core.$strip and silently do nothing.
Possible resolutions
Listing these for whoever takes it upstream — I have not verified which the console actually implements.
Tab inherits its view's label.tabs[].label is already optional in the schema, and every tab here carries view: '<view_name>' pointing at a view whose label is translatable via _views. If the console falls back to the referenced view's resolved label when label is absent, this repo can fix it today by deleting all 59 inline labels — no upstream change needed. This should be checked first, since it would turn an upstream request into a one-PR app-side fix. Note the fallback would change some display text (All → 全部客户, Map → 客户地图), which may be desirable anyway.
Add _tabs to ObjectTranslationDataSchema, keyed by tabs[].name, mirroring _views. Correct but needs a spec change plus console resolver support.
Leave tab labels English by design and document it. Not viable for a localized product.
Priority note
Filed prio:p1 because of the Simplified Chinese customer trial: zh-CN is otherwise the most complete locale (32/32 navigation nodes, and after #660 the only locale with complete select-option coverage), so the English tab strip is now the most visible remaining i18n defect on a Chinese screen. Downgrade if the trial timeline says otherwise.
Full inventory
src/views/account.view.ts:88-94, campaign.view.ts:36-39, case.view.ts:50-56, contact.view.ts:38-40, contract.view.ts:38-41, forecast.view.ts:41-43, knowledge_article.view.ts:43-…, plus the remaining object view files — 59 labels total (grep -rn "tabs:" -A12 src/views/*.ts | grep -c "label: '").
Found while scoping the zh-CN work in #645. Not covered by #494 or #645 — different root cause, and it is not fixable in this repo.
What happens
Every list view declares a tab strip, and each tab carries an inline English
label:59 such labels across all 15 objects. They sit at the top of every list page — the first thing a user sees on entering any object — and they render in English regardless of locale.
This is more visible than the picklist gaps in #645: a Chinese user gets a fully translated sidebar, fully translated column headers, and an English tab strip between them.
Why this repo cannot fix it
There is no translation key for a tab. Verified against
@objectstack/spec@17.0.0-rc.1:ObjectTranslationDataSchema(dist/translation.zod-CLbo6zbE.d.ts:60-101) carries exactlylabel,pluralLabel,description,fields,_views,_actions,_sections. There is no_tabs.@objectstack/lint— the tool that produces the i18n warnings — has handling for_views,_sections,_actionsandnavigation, and zero references totabs. So these 59 labels are not merely untranslated; they are not counted as translatable, which is why they never appeared in i18n: 205 warnings hidden by --skip-i18n; broken option keys and untranslated navigation #494's 205-warning survey.Adding a
_tabsblock tosrc/translations/*.tswould be stripped byz.core.$stripand silently do nothing.Possible resolutions
Listing these for whoever takes it upstream — I have not verified which the console actually implements.
tabs[].labelis already optional in the schema, and every tab here carriesview: '<view_name>'pointing at a view whose label is translatable via_views. If the console falls back to the referenced view's resolved label whenlabelis absent, this repo can fix it today by deleting all 59 inline labels — no upstream change needed. This should be checked first, since it would turn an upstream request into a one-PR app-side fix. Note the fallback would change some display text (All→全部客户,Map→客户地图), which may be desirable anyway._tabstoObjectTranslationDataSchema, keyed bytabs[].name, mirroring_views. Correct but needs a spec change plus console resolver support.Priority note
Filed
prio:p1because of the Simplified Chinese customer trial: zh-CN is otherwise the most complete locale (32/32 navigation nodes, and after #660 the only locale with complete select-option coverage), so the English tab strip is now the most visible remaining i18n defect on a Chinese screen. Downgrade if the trial timeline says otherwise.Full inventory
src/views/account.view.ts:88-94,campaign.view.ts:36-39,case.view.ts:50-56,contact.view.ts:38-40,contract.view.ts:38-41,forecast.view.ts:41-43,knowledge_article.view.ts:43-…, plus the remaining object view files — 59 labels total (grep -rn "tabs:" -A12 src/views/*.ts | grep -c "label: '").Related: #494 (i18n umbrella), #645 (select option labels), #660 (zh-CN select options).