Skip to content

Commit 910ce78

Browse files
committed
feat(platform-objects): translate the two timezone columns; type the enumeration probe in the pin (#14238) — wip
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ARYe3yQTQCUFm5qPYNgKaJ
1 parent 795d254 commit 910ce78

5 files changed

Lines changed: 36 additions & 1 deletion

File tree

packages/platform-objects/src/apps/translations/en.objects.generated.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,10 @@ export const enObjects: NonNullable<TranslationData['objects']> = {
534534
label: "Require Multi-Factor Auth",
535535
help: "When true, every member of this organization must enroll an authenticator app to access data."
536536
},
537+
timezone: {
538+
label: "Timezone",
539+
help: "IANA time zone (e.g. UTC, Asia/Shanghai) date boundaries are computed in for this organization — the root default every business unit without a zone of its own inherits. Unset means UTC."
540+
},
537541
parent_organization_id: {
538542
label: "Parent Organization",
539543
help: "Reporting/grouping parent. Grants NOTHING — visibility across organizations comes from membership, never from this reference (ADR-0105 D6)."
@@ -857,6 +861,10 @@ export const enObjects: NonNullable<TranslationData['objects']> = {
857861
label: "Parent Business Unit",
858862
help: "Self-reference for the org tree. Null = root of tenant."
859863
},
864+
timezone: {
865+
label: "Timezone",
866+
help: "IANA time zone (e.g. Asia/Shanghai) date boundaries are computed in for this unit. Leave unset to inherit the parent unit's zone, then the organization's, then UTC."
867+
},
860868
organization_id: {
861869
label: "Organization",
862870
help: "Tenant scope. Null in single-tenant; auto-stamped in multi-tenant."

packages/platform-objects/src/apps/translations/es-ES.objects.generated.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,10 @@ export const esESObjects: NonNullable<TranslationData['objects']> = {
534534
label: "Exigir autenticación multifactor",
535535
help: "Si es true, todos los miembros de esta organización deben registrar una aplicación de autenticación para acceder a los datos."
536536
},
537+
timezone: {
538+
label: "Zona horaria",
539+
help: "Zona horaria IANA (p. ej. UTC, Asia/Shanghai) en la que se calculan los límites de fecha de esta organización: el valor raíz que hereda toda unidad de negocio sin zona propia. Sin definir significa UTC."
540+
},
537541
parent_organization_id: {
538542
label: "Parent Organization",
539543
help: "Reporting/grouping parent. Grants NOTHING — visibility across organizations comes from membership, never from this reference (ADR-0105 D6)."
@@ -857,6 +861,10 @@ export const esESObjects: NonNullable<TranslationData['objects']> = {
857861
label: "Unidad de negocio principal",
858862
help: "Autorreferencia para el árbol organizativo. Null = raíz del tenant."
859863
},
864+
timezone: {
865+
label: "Zona horaria",
866+
help: "Zona horaria IANA (p. ej. Asia/Shanghai) en la que se calculan los límites de fecha de esta unidad. Déjala sin definir para heredar la zona de la unidad de negocio principal, luego la de la organización y, por último, UTC."
867+
},
860868
organization_id: {
861869
label: "Organización",
862870
help: "Ámbito del tenant."

packages/platform-objects/src/apps/translations/ja-JP.objects.generated.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,10 @@ export const jaJPObjects: NonNullable<TranslationData['objects']> = {
534534
label: "多要素認証を必須化",
535535
help: "true の場合、この組織のすべてのメンバーはデータにアクセスするために認証アプリの登録が必要になります。"
536536
},
537+
timezone: {
538+
label: "タイムゾーン",
539+
help: "この組織で日付の境界を計算する IANA タイムゾーン(例: UTC、Asia/Shanghai)。独自のタイムゾーンを持たないすべてのビジネスユニットが継承するルートの既定値です。未設定の場合は UTC です。"
540+
},
537541
parent_organization_id: {
538542
label: "Parent Organization",
539543
help: "Reporting/grouping parent. Grants NOTHING — visibility across organizations comes from membership, never from this reference (ADR-0105 D6)."
@@ -857,6 +861,10 @@ export const jaJPObjects: NonNullable<TranslationData['objects']> = {
857861
label: "親ビジネスユニット",
858862
help: "組織ツリーの自己参照。null = テナントのルート。"
859863
},
864+
timezone: {
865+
label: "タイムゾーン",
866+
help: "このユニットで日付の境界を計算する IANA タイムゾーン(例: Asia/Shanghai)。未設定の場合は親ビジネスユニット、次に組織のタイムゾーン、最後に UTC を継承します。"
867+
},
860868
organization_id: {
861869
label: "組織",
862870
help: "テナントスコープ。"

packages/platform-objects/src/apps/translations/zh-CN.objects.generated.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,10 @@ export const zhCNObjects: NonNullable<TranslationData['objects']> = {
534534
label: "强制多因素认证",
535535
help: "为 true 时,该组织的每位成员都必须注册身份验证器 App 才能访问数据。"
536536
},
537+
timezone: {
538+
label: "时区",
539+
help: "该组织计算日期边界所用的 IANA 时区(如 UTC、Asia/Shanghai)——所有未自行设置时区的业务单元都继承的根默认值。未设置表示 UTC。"
540+
},
537541
parent_organization_id: {
538542
label: "Parent Organization",
539543
help: "Reporting/grouping parent. Grants NOTHING — visibility across organizations comes from membership, never from this reference (ADR-0105 D6)."
@@ -857,6 +861,10 @@ export const zhCNObjects: NonNullable<TranslationData['objects']> = {
857861
label: "上级业务单元",
858862
help: "组织树的自关联字段。Null 表示租户根节点。"
859863
},
864+
timezone: {
865+
label: "时区",
866+
help: "该业务单元计算日期边界所用的 IANA 时区(如 Asia/Shanghai)。留空则依次继承上级业务单元的时区、组织的时区,最后为 UTC。"
867+
},
860868
organization_id: {
861869
label: "组织",
862870
help: "租户范围。"

packages/platform-objects/src/identity/org-hierarchy-timezone.test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,10 @@ describe('#14238 — sys_business_unit.timezone and sys_organization.timezone',
118118
// path component at 14, so 64 is twice the domain's real ceiling. If a
119119
// future ICU ever enumerates a name the bound refuses, this goes red
120120
// instead of the column silently refusing a legal zone.
121-
const longest = Math.max(...Intl.supportedValuesOf('timeZone').map((z) => z.length));
121+
// `Intl.supportedValuesOf` is ES2022; the package's `lib` predates it, so
122+
// the call is typed here rather than the whole program's lib widened.
123+
const intl = Intl as unknown as { supportedValuesOf(key: 'timeZone'): string[] };
124+
const longest = Math.max(...intl.supportedValuesOf('timeZone').map((z) => z.length));
122125
expect(longest).toBeLessThanOrEqual(unitColumn().maxLength as number);
123126
// The longest identifier in the tzdb itself is a backward link the
124127
// enumeration omits and the probe admits — 32 characters, still under half

0 commit comments

Comments
 (0)