Skip to content

Commit 08e0247

Browse files
i18n(plugin-webhooks): ship the webhook object in all eleven platform languages (#30586)
<!-- claude-projects-attribution: {"github_login":"os-bill"} --> _Requested by **Bill** · [project thread](https://claude.ai/code/project/chan_016iMXWSZDzqWRWvWzdNo8wg?thread=cmsg_016iMXWSZDzqWRWvWzdNo8wgBxjikPH2bUin9o95gbAxsx)_ domain:server#2 · os-bill · session_01Utp6Cai5CRdAs4u9gTipWU Refs #30512 — package 2 of 11 (`@objectstack/plugin-webhooks`). The card stays open: the last PR of the series flips the bundle check to the platform locale table. Clause-②: no Metadata-protocol: none ## 维护者速读 - **改了什么:** Webhook 对象(`sys_webhook`)的名称、字段、选项、帮助文字和视图名补上 7 种语言:繁体中文、阿拉伯语、法语、巴西葡萄牙语、俄语、德语、韩语,共 11 种,与平台语言表一致。 - **为什么改:** 平台语言表(#29428 裁决 F)要求每个界面带齐 11 种语言;这是第 3 期按包补齐的第 2 个包(47 条)。 - **风险与回滚:** 只加翻译数据和注册行,不动逻辑、schema、接口;原有 4 种语言一字未改。另在 `check-i18n-stale-fill` 的基线里登记 1 条良性巧合(中文无复数,简繁两种都把复数名写作「Webhook」),附理由。回滚即撤 PR。 - **先看:** `src/translations/index.ts`(按表标签注册,zh-CN 在 zh-Hant 前)、`scripts/i18n-stale-fill-baseline.json`(那 1 条巧合),再抽看 `ar.objects.generated.ts`。 - **两分钟验证:** `node scripts/check-i18n-bundles.mjs --filter=webhooks` 输出 `in sync (21 bundle(s))`,`node scripts/check-i18n-stale-fill.mjs` 退出 0。 - **需要你做的:** 无,席位落地。 ## What changes - Seven new locales for `sys_webhook` under the platform locale table's tags (`zh-Hant`, `ar`, `fr`, `pt-BR`, `ru`, `de`, `ko`): each a `TAG.objects.generated.ts` with all 47 leaves plus its `TAG.source-hashes.generated.ts`, written by the repo's own `os i18n extract --fill=default --source-hashes` and served through `withSourceFallback` like the existing three. `zh-CN` stays ahead of `zh-Hant` in `index.ts`. - The extract command in `scripts/i18n-extract.config.ts` lists the seven tags and its merge baseline imports the seven bundles, so `check:i18n` covers them from this PR on. - `scripts/i18n-stale-fill-baseline.json`: one entry, `sys_webhook.pluralLabel`, classified as a benign coincidence with its reason. `zh-CN` already said 「Webhook」 for the plural (Chinese does not inflect), and the natural `zh-Hant` is the same bytes; the gate's cross-locale rule reads two CJK locales agreeing on a Latin-only value that differs from the source (`Webhooks`) as a stale fill. Re-translating either leaf away from the product term would be worse copy, so the gate's documented path (ratchet in, record why) is taken. - `bundle-ownership.test.ts`: one message sentence, "the four locale bundles" → "every locale bundle". ## Acceptance notes - **Quality bar (#17508 / PR #19345):** every leaf written for the reader; placeholders, code spans (`signing_secret`, `headers_secret`), JSON examples (`{"Authorization": "Bearer …"}`), header names (`X-Objectstack-Signature`) and identifiers (`snake_case`, `bulk_*`, `HMAC-SHA256`, `sys_secret`, `@objectstack/spec/automation/webhook`) byte-identical, checked mechanically per leaf against `en`. Arabic is RTL prose with identifiers left in Latin script. - **Leaves equal to English, on purpose:** the HTTP method options `GET` `POST` `PUT` `PATCH` `DELETE` in every locale; beyond those, the product term and native cognates only — `zh-Hant` `Webhook` (label) and `Webhook ID`; `fr` `Webhook`, `Webhooks`, `Description`, `package`; `pt-BR` `Webhook`, `Webhooks`; `de` `Webhook`, `Webhooks`, `Name`, `Definition`. The extractor records each as a source copy (`ar`/`ru`/`ko` 5 entries = the methods only; `zh-Hant`/`pt-BR` 7; `fr`/`de` 9). - Option labels of `managed_by` / `triggers` are translated (they were already translated in `zh-CN`); the `help` texts keep the option codes (`admin`, `package`, `platform`, `create/update/delete`) as codes, as `zh-CN` does. ## Verification <details><summary>Package suite, typecheck, build (verify lock)</summary> ``` pnpm --filter @objectstack/plugin-webhooks build && test && typecheck Test Files 25 passed (25) Tests 258 passed (258) os-verify-lock: VERDICT command-exit 0 ``` </details> <details><summary>i18n gates</summary> ``` node scripts/check-i18n-bundles.mjs --filter=webhooks plugins/plugin-webhooks in sync (21 bundle(s)) EXIT 0 node scripts/check-i18n-stale-fill.mjs (before the baseline entry) 1 NEW stale-fill leaf: plugin-webhooks … #sys_webhook.pluralLabel · locales zh-CN, zh-Hant · source "Webhooks" · serving "Webhook" EXIT 1 node scripts/check-i18n-stale-fill.mjs (after, entry classified) EXIT 0 ``` </details> <details><summary>Derived gate families at head c6c3038 (dispatch-gates --commands, reconciled with --ran)</summary> ``` dispatch-gates --ran: 68 derived famil(ies) accounted for — 68 run, 0 NOT-MEASURED (a DERIVED zero — all 68 recorded an exit code and none of them is 3). every family exit 0, including pnpm check:i18n (all 10 bundle sets) and pnpm check:i18n-stale-fill eslint --no-inline-config on the changed .ts files: exit 0 · check-nul-bytes: exit 0 changed lines 1066 (+1063 / -3), 19 files: under the 3000-line human-merge threshold ``` Full record: the seat's project folder, `server-seat2/30512/gates-webhooks-ran.txt`. </details> Dogfood: not run — content-only package PR, no `!` in the title and no `(narrowing)` arm (dispatch order: package suite + `check:i18n` + typecheck suffice). --- _Generated by [Claude Code](https://claude.ai/code/session_01Utp6Cai5CRdAs4u9gTipWU)_ Co-authored-by: Claude <noreply@anthropic.com>
1 parent d9d42d4 commit 08e0247

19 files changed

Lines changed: 1063 additions & 3 deletions
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
'@objectstack/plugin-webhooks': patch
3+
---
4+
5+
i18n(plugin-webhooks): the webhook object's labels, help, options and views ship in all eleven platform languages
6+
7+
Clause-②: no
8+
Metadata-protocol: none
9+
10+
`sys_webhook` now carries Traditional Chinese (`zh-Hant`), Arabic (`ar`), French (`fr`), Brazilian Portuguese (`pt-BR`), Russian (`ru`), German (`de`) and Korean (`ko`) beside the existing `en`, `zh-CN`, `ja-JP` and `es-ES`, so an administrator reading Setup in one of those languages sees the webhook screens in their own language instead of English. Each new locale is registered under its platform-table tag with its source-hash companion, and the package's extract command lists the seven tags, so the existing `check:i18n` bundle check covers them. Part of #30512.

‎packages/plugins/plugin-webhooks/scripts/i18n-extract.config.ts‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* strings were seeded from @objectstack/platform-objects.)
99
*
1010
* os i18n extract packages/plugins/plugin-webhooks/scripts/i18n-extract.config.ts \
11-
* --locales=zh-CN,ja-JP,es-ES --fill=default --objects-only --no-metadata-forms \
11+
* --locales=zh-CN,ja-JP,es-ES,zh-Hant,ar,fr,pt-BR,ru,de,ko --fill=default --objects-only --no-metadata-forms \
1212
* --source-hashes \
1313
* --out=packages/plugins/plugin-webhooks/src/translations
1414
*
@@ -45,6 +45,13 @@ import { enObjects } from '../src/translations/en.objects.generated.js';
4545
import { zhCNObjects } from '../src/translations/zh-CN.objects.generated.js';
4646
import { jaJPObjects } from '../src/translations/ja-JP.objects.generated.js';
4747
import { esESObjects } from '../src/translations/es-ES.objects.generated.js';
48+
import { zhHantObjects } from '../src/translations/zh-Hant.objects.generated.js';
49+
import { arObjects } from '../src/translations/ar.objects.generated.js';
50+
import { frObjects } from '../src/translations/fr.objects.generated.js';
51+
import { ptBRObjects } from '../src/translations/pt-BR.objects.generated.js';
52+
import { ruObjects } from '../src/translations/ru.objects.generated.js';
53+
import { deObjects } from '../src/translations/de.objects.generated.js';
54+
import { koObjects } from '../src/translations/ko.objects.generated.js';
4855

4956
/**
5057
* The annotation is load-bearing, not decoration (#10868). `defineStack`
@@ -67,6 +74,13 @@ const config: ObjectStackDefinition = defineStack({
6774
{ 'zh-CN': { objects: zhCNObjects } },
6875
{ 'ja-JP': { objects: jaJPObjects } },
6976
{ 'es-ES': { objects: esESObjects } },
77+
{ 'zh-Hant': { objects: zhHantObjects } },
78+
{ 'ar': { objects: arObjects } },
79+
{ 'fr': { objects: frObjects } },
80+
{ 'pt-BR': { objects: ptBRObjects } },
81+
{ 'ru': { objects: ruObjects } },
82+
{ 'de': { objects: deObjects } },
83+
{ 'ko': { objects: koObjects } },
7084
],
7185
});
7286

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
2+
3+
/**
4+
* Auto-generated by 'os i18n extract' for locale 'ar'.
5+
* Edit translations in place; re-run extract (with --merge) to fill new gaps.
6+
* Do not hand-edit the structure — only the leaf string values.
7+
* Merge only fills gaps: correcting a source label/description does not
8+
* push the correction into a leaf here that already holds a translation —
9+
* a present-but-stale string is not a gap, so it is left as-is. Re-translate
10+
* it by hand when its source changes; nothing here or in `os i18n check`
11+
* tells a leaf a translator updated on purpose from one nobody has looked
12+
* at since the source moved.
13+
*/
14+
15+
import type { TranslationData } from '@objectstack/spec/system';
16+
17+
export const arObjects: NonNullable<TranslationData['objects']> = {
18+
sys_webhook: {
19+
label: "خطاف ويب",
20+
pluralLabel: "خطافات الويب",
21+
description: "خطاف ويب HTTP صادر تُنشئه مؤسستك هنا أو عبر واجهة API. لا تُدرج هنا خطافات الويب المضمّنة في التطبيقات. يُرسَل النوعان عبر قائمة انتظار التسليم نفسها.",
22+
fields: {
23+
id: {
24+
label: "معرّف خطاف الويب"
25+
},
26+
name: {
27+
label: "الاسم",
28+
help: "اسم بصيغة snake_case، فريد داخل كل مؤسسة — يُشار إليه في السجلات والتدقيق"
29+
},
30+
label: {
31+
label: "التسمية المعروضة"
32+
},
33+
object_name: {
34+
label: "الكائن",
35+
help: "الاسم المختصر للكائن الذي تُطلق أحداث سجلاته (create/update/delete) خطاف الويب هذا"
36+
},
37+
triggers: {
38+
label: "المشغّلات",
39+
help: "أحداث السجلات التي تُطلق خطاف الويب هذا (تُرسل أحداث bulk_* عددًا لا سجلًا)",
40+
options: {
41+
create: "إنشاء",
42+
update: "تحديث",
43+
delete: "حذف",
44+
bulk_update: "تحديث جماعي",
45+
bulk_delete: "حذف جماعي"
46+
}
47+
},
48+
url: {
49+
label: "عنوان URL الهدف",
50+
help: "نقطة النهاية الخارجية التي تستقبل طلب POST"
51+
},
52+
method: {
53+
label: "أسلوب HTTP",
54+
help: "أسلوب HTTP المستخدم في طلب الاستدعاء",
55+
options: {
56+
get: "GET",
57+
post: "POST",
58+
put: "PUT",
59+
patch: "PATCH",
60+
delete: "DELETE"
61+
}
62+
},
63+
description: {
64+
label: "الوصف"
65+
},
66+
active: {
67+
label: "نشط",
68+
help: "يتخطّى المُرسِل خطافات الويب غير النشطة"
69+
},
70+
definition_json: {
71+
label: "التعريف",
72+
help: "تمثيل JSON متسلسل لخطاف الويب (راجع @objectstack/spec/automation/webhook) — المهلة وبقية الغلاف المُعَدّ. لا تُخزَّن بيانات الاعتماد هنا: يوجد سر التوقيع في الحقل المشفّر `signing_secret`، والترويسات المخصّصة في الحقل المشفّر `headers_secret`."
73+
},
74+
headers_secret: {
75+
label: "الترويسات المخصّصة",
76+
help: "ترويسات HTTP مخصّصة تُرسَل مع كل تسليم، على هيئة كائن JSON ({\"Authorization\": \"Bearer …\"}). تُشفَّر عند التخزين في sys_secret؛ وتُعيد القراءة قناعًا ولا تُعيد الترويسات أبدًا. اترك القناع كما هو للإبقاء على القيمة الحالية."
77+
},
78+
signing_secret: {
79+
label: "سر التوقيع",
80+
help: "مفتاح HMAC-SHA256 المستخدم لتوقيع عمليات التسليم (X-Objectstack-Signature). يُشفَّر عند التخزين في sys_secret؛ وتُعيد القراءة قناعًا ولا تُعيد المفتاح أبدًا. اترك القناع كما هو للإبقاء على القيمة الحالية."
81+
},
82+
managed_by: {
83+
label: "جهة الإدارة",
84+
help: "مصدر السجل: admin = أُنشئ في Setup أو عبر واجهة API / package = نسخة من خطاف ويب مُعرَّف في الشيفرة كتبها مُهيّئ الإقلاع المتقاعد في الإصدار 18.0 (لا شيء يكتب مثلها الآن: يُقرأ خطاف الويب المُعرَّف من سجلّ البيانات الوصفية وليس صفًّا) / platform = محجوز.",
85+
options: {
86+
platform: "المنصّة",
87+
package: "الحزمة",
88+
admin: "المسؤول"
89+
}
90+
},
91+
customized: {
92+
label: "مخصّص",
93+
help: "يُضبط عندما يحرّر مسؤول صفًّا من نوع package (نسخة كتبها مُهيّئ الإقلاع المتقاعد في الإصدار 18.0). تقرؤه عملية نقل الملكية: النسخة المحرَّرة تحت اسم مُعرَّف تُحفظ كنسخة مستنسخة، والنسخة غير المعدَّلة تُحذف. لا معنى له في صفوف admin."
94+
},
95+
created_at: {
96+
label: "تاريخ الإنشاء"
97+
},
98+
updated_at: {
99+
label: "تاريخ التحديث"
100+
}
101+
},
102+
_views: {
103+
active: {
104+
label: "النشطة"
105+
},
106+
inactive: {
107+
label: "غير النشطة"
108+
},
109+
by_object: {
110+
label: "حسب الكائن"
111+
},
112+
all_webhooks: {
113+
label: "الكل"
114+
}
115+
}
116+
}
117+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.
2+
3+
/**
4+
* Auto-generated by 'os i18n extract' for locale 'ar'. Do not hand-edit.
5+
*
6+
* Each entry is the digest of the SOURCE REVISION that this locale's leaf at
7+
* that path is still a byte copy of — provenance for the generated half of the
8+
* bundles (commit 09b4f4e4e): a leaf whose digest no longer matches its source is stale and serves the source text instead.
9+
*
10+
* An entry exists only while the leaf IS such a copy. Re-translate the leaf in
11+
* `<locale>.objects.generated.ts` and the next extract drops its entry by
12+
* itself — the table makes no claim about text a translator wrote. A path with
13+
* no entry is LEGACY-TRUSTED and never reported stale.
14+
*
15+
* ⚠️ Do not "fix" a staleness report by editing this file. Refreshing a digest
16+
* records that the current text was copied from the current source, which is
17+
* the false claim the mechanism exists to detect. Fix the TRANSLATION.
18+
*/
19+
20+
export const arGeneratedSourceHashes: Readonly<Record<string, string>> = {
21+
"objects.sys_webhook.fields.method.options.delete": "f59e059ed51f9bfc",
22+
"objects.sys_webhook.fields.method.options.get": "470848255971c548",
23+
"objects.sys_webhook.fields.method.options.patch": "7de3603749decb30",
24+
"objects.sys_webhook.fields.method.options.post": "004b24eab36d26a4",
25+
"objects.sys_webhook.fields.method.options.put": "04d929ecae7aa435",
26+
};

‎packages/plugins/plugin-webhooks/src/translations/bundle-ownership.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ describe('objects translation bundle ownership (ADR-0029 D8)', () => {
2727
strays,
2828
`bundle carries objects this package's extract config does not own: ${strays.join(', ')} — ` +
2929
'their curated translations would be silently deleted on the next `os i18n extract`. ' +
30-
'Remove the dead block from the four locale bundles, or add the object to the extract config + this list.',
30+
'Remove the dead block from every locale bundle, or add the object to the extract config + this list.',
3131
).toEqual([]);
3232
});
3333

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
2+
3+
/**
4+
* Auto-generated by 'os i18n extract' for locale 'de'.
5+
* Edit translations in place; re-run extract (with --merge) to fill new gaps.
6+
* Do not hand-edit the structure — only the leaf string values.
7+
* Merge only fills gaps: correcting a source label/description does not
8+
* push the correction into a leaf here that already holds a translation —
9+
* a present-but-stale string is not a gap, so it is left as-is. Re-translate
10+
* it by hand when its source changes; nothing here or in `os i18n check`
11+
* tells a leaf a translator updated on purpose from one nobody has looked
12+
* at since the source moved.
13+
*/
14+
15+
import type { TranslationData } from '@objectstack/spec/system';
16+
17+
export const deObjects: NonNullable<TranslationData['objects']> = {
18+
sys_webhook: {
19+
label: "Webhook",
20+
pluralLabel: "Webhooks",
21+
description: "Ein ausgehender HTTP-Webhook, den Ihre Organisation hier oder über die API anlegt. In eine App integrierte Webhooks werden hier nicht aufgeführt. Beide Arten werden über dieselbe Zustellwarteschlange gesendet.",
22+
fields: {
23+
id: {
24+
label: "Webhook-ID"
25+
},
26+
name: {
27+
label: "Name",
28+
help: "Name in snake_case, je Organisation eindeutig — wird in Protokollen und im Audit referenziert"
29+
},
30+
label: {
31+
label: "Anzeigebezeichnung"
32+
},
33+
object_name: {
34+
label: "Objekt",
35+
help: "Kurzname des Objekts, dessen Datensatzereignisse (create/update/delete) diesen Webhook auslösen"
36+
},
37+
triggers: {
38+
label: "Auslöser",
39+
help: "Datensatzereignisse, die diesen Webhook auslösen (bulk_* liefern eine Anzahl, keinen Datensatz)",
40+
options: {
41+
create: "Erstellen",
42+
update: "Aktualisieren",
43+
delete: "Löschen",
44+
bulk_update: "Massenaktualisierung",
45+
bulk_delete: "Massenlöschung"
46+
}
47+
},
48+
url: {
49+
label: "Ziel-URL",
50+
help: "Externer Endpunkt, der den POST empfängt"
51+
},
52+
method: {
53+
label: "HTTP-Methode",
54+
help: "HTTP-Methode für die Callback-Anfrage",
55+
options: {
56+
get: "GET",
57+
post: "POST",
58+
put: "PUT",
59+
patch: "PATCH",
60+
delete: "DELETE"
61+
}
62+
},
63+
description: {
64+
label: "Beschreibung"
65+
},
66+
active: {
67+
label: "Aktiv",
68+
help: "Inaktive Webhooks überspringt der Dispatcher"
69+
},
70+
definition_json: {
71+
label: "Definition",
72+
help: "Serialisiertes Webhook-JSON (siehe @objectstack/spec/automation/webhook) — Zeitlimit und der Rest des verfassten Umschlags. Zugangsdaten werden hier NICHT gespeichert: Das Signaturgeheimnis liegt im verschlüsselten Feld `signing_secret`, die benutzerdefinierten Header im verschlüsselten Feld `headers_secret`."
73+
},
74+
headers_secret: {
75+
label: "Benutzerdefinierte Header",
76+
help: "Benutzerdefinierte HTTP-Header, die mit jeder Zustellung gesendet werden, als JSON-Objekt ({\"Authorization\": \"Bearer …\"}). Im Ruhezustand verschlüsselt in sys_secret gespeichert; Lesezugriffe liefern eine Maske, nie die Header. Lassen Sie die Maske unverändert, um den aktuellen Wert zu behalten."
77+
},
78+
signing_secret: {
79+
label: "Signaturgeheimnis",
80+
help: "HMAC-SHA256-Schlüssel zum Signieren der Zustellungen (X-Objectstack-Signature). Im Ruhezustand verschlüsselt in sys_secret gespeichert; Lesezugriffe liefern eine Maske, nie den Schlüssel. Lassen Sie die Maske unverändert, um den aktuellen Wert zu behalten."
81+
},
82+
managed_by: {
83+
label: "Verwaltet von",
84+
help: "Herkunft des Datensatzes: admin = in Setup oder über die API angelegt / package = Kopie eines im Code deklarierten Webhooks, die der eingestellte Boot-Seeder von 18.0 geschrieben hat (heute schreibt nichts mehr eine: ein deklarierter Webhook wird aus der Metadaten-Registry gelesen und ist keine Zeile) / platform = reserviert.",
85+
options: {
86+
platform: "Plattform",
87+
package: "Paket",
88+
admin: "Administrator"
89+
}
90+
},
91+
customized: {
92+
label: "Angepasst",
93+
help: "Wird gesetzt, wenn ein Administrator eine package-Zeile bearbeitet (eine Kopie, die der eingestellte Boot-Seeder von 18.0 geschrieben hat). Das Eigentumsverfahren liest es: Eine bearbeitete Kopie unter einem deklarierten Namen bleibt als Klon erhalten, eine unveränderte wird gelöscht. Bei admin-Zeilen bedeutungslos."
94+
},
95+
created_at: {
96+
label: "Erstellt am"
97+
},
98+
updated_at: {
99+
label: "Aktualisiert am"
100+
}
101+
},
102+
_views: {
103+
active: {
104+
label: "Aktiv"
105+
},
106+
inactive: {
107+
label: "Inaktiv"
108+
},
109+
by_object: {
110+
label: "Nach Objekt"
111+
},
112+
all_webhooks: {
113+
label: "Alle"
114+
}
115+
}
116+
}
117+
};
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.
2+
3+
/**
4+
* Auto-generated by 'os i18n extract' for locale 'de'. Do not hand-edit.
5+
*
6+
* Each entry is the digest of the SOURCE REVISION that this locale's leaf at
7+
* that path is still a byte copy of — provenance for the generated half of the
8+
* bundles (commit 09b4f4e4e): a leaf whose digest no longer matches its source is stale and serves the source text instead.
9+
*
10+
* An entry exists only while the leaf IS such a copy. Re-translate the leaf in
11+
* `<locale>.objects.generated.ts` and the next extract drops its entry by
12+
* itself — the table makes no claim about text a translator wrote. A path with
13+
* no entry is LEGACY-TRUSTED and never reported stale.
14+
*
15+
* ⚠️ Do not "fix" a staleness report by editing this file. Refreshing a digest
16+
* records that the current text was copied from the current source, which is
17+
* the false claim the mechanism exists to detect. Fix the TRANSLATION.
18+
*/
19+
20+
export const deGeneratedSourceHashes: Readonly<Record<string, string>> = {
21+
"objects.sys_webhook.fields.definition_json.label": "efa6ad859212b898",
22+
"objects.sys_webhook.fields.method.options.delete": "f59e059ed51f9bfc",
23+
"objects.sys_webhook.fields.method.options.get": "470848255971c548",
24+
"objects.sys_webhook.fields.method.options.patch": "7de3603749decb30",
25+
"objects.sys_webhook.fields.method.options.post": "004b24eab36d26a4",
26+
"objects.sys_webhook.fields.method.options.put": "04d929ecae7aa435",
27+
"objects.sys_webhook.fields.name.label": "5274417ff1ccaf01",
28+
"objects.sys_webhook.label": "b608f1636b7e8184",
29+
"objects.sys_webhook.pluralLabel": "8fdd81bc76459a6a",
30+
};

0 commit comments

Comments
 (0)