@jarenjs/locales 0.34.0 → 0.43.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,8 +1,9 @@
1
1
  # @jarenjs/locales
2
2
 
3
3
  Locale packs (message catalogs) for the error messages of
4
- [`@jarenjs/validate`](../validate/README.md) and
5
- [`@jarenjs/forms`](../forms/README.md).
4
+ [`@jarenjs/validate`](../validate/README.md),
5
+ [`@jarenjs/forms`](../forms/README.md) and
6
+ [`@jarenjs/contract`](../contract/README.md).
6
7
 
7
8
  Jaren validators and form checks never bake prose into the hot path: every
8
9
  failure carries a stable message key (`msgid`) plus raw structured
@@ -66,7 +67,8 @@ export const xx = {
66
67
  Rules of the road:
67
68
 
68
69
  1. **Key parity.** Cover every key of validate's `messagesEn`, every
69
- `form/*` key of forms' `formsMessagesEn`, plus `x-form/assert` and the
70
+ `form/*` key of forms' `formsMessagesEn`, every `contract/*` wire-error
71
+ key of contract's `contractMessagesEn`, plus `x-form/assert` and the
70
72
  `JQ2xxx` query runtime codes. The repo enforces this with tests
71
73
  (`test/locales/`); missing keys silently fall back to English.
72
74
  2. **Never depend on a consumer.** A pack must stay importable without
@@ -1,7 +1,11 @@
1
1
  /**
2
2
  * The Arabic catalog. Covers every key of validate's `messagesEn`,
3
- * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and
4
- * the `JQ2xxx` codes reachable through `$query`.
3
+ * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
4
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
5
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn` — the
6
+ * contract entries wrap their Latin protocol values (operation ids,
7
+ * media types, error codes) in first-strong isolates (U+2068 FSI …
8
+ * U+2069 PDI) so a Latin run cannot reorder the RTL sentence around it.
5
9
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
6
10
  */
7
11
  export declare const ar: Record<string, string | ((params: any, error?: object) => string)>;
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * The German catalog. Covers every key of validate's `messagesEn`, every
3
- * `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and the
4
- * `JQ2xxx` codes reachable through `$query`.
3
+ * `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
4
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
5
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
5
6
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
6
7
  */
7
8
  export declare const de: Record<string, string | ((params: any, error?: object) => string)>;
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * The Spanish catalog. Covers every key of validate's `messagesEn`, every
3
- * `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and the
4
- * `JQ2xxx` codes reachable through `$query`.
3
+ * `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
4
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
5
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
5
6
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
6
7
  */
7
8
  export declare const es: Record<string, string | ((params: any, error?: object) => string)>;
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * The French catalog. Covers every key of validate's `messagesEn`, every
3
- * `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and the
4
- * `JQ2xxx` codes reachable through `$query`.
3
+ * `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
4
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
5
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
5
6
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
6
7
  */
7
8
  export declare const fr: Record<string, string | ((params: any, error?: object) => string)>;
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * The Japanese catalog. Covers every key of validate's `messagesEn`,
3
- * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and
4
- * the `JQ2xxx` codes reachable through `$query`.
3
+ * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
4
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
5
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
5
6
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
6
7
  */
7
8
  export declare const ja: Record<string, string | ((params: any, error?: object) => string)>;
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * The Korean catalog. Covers every key of validate's `messagesEn`,
3
- * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and
4
- * the `JQ2xxx` codes reachable through `$query`.
3
+ * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
4
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
5
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
5
6
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
6
7
  */
7
8
  export declare const ko: Record<string, string | ((params: any, error?: object) => string)>;
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * The Dutch catalog. Covers every key of validate's `messagesEn`, every
3
- * `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and the
4
- * `JQ2xxx` codes reachable through `$query`.
3
+ * `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
4
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
5
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
5
6
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
6
7
  */
7
8
  export declare const nl: Record<string, string | ((params: any, error?: object) => string)>;
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * The Portuguese catalog. Covers every key of validate's `messagesEn`,
3
- * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and
4
- * the `JQ2xxx` codes reachable through `$query`.
3
+ * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
4
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
5
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
5
6
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
6
7
  */
7
8
  export declare const pt: Record<string, string | ((params: any, error?: object) => string)>;
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * The Russian catalog. Covers every key of validate's `messagesEn`,
3
- * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and
4
- * the `JQ2xxx` codes reachable through `$query`.
3
+ * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
4
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
5
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
5
6
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
6
7
  */
7
8
  export declare const ru: Record<string, string | ((params: any, error?: object) => string)>;
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * The Turkish catalog. Covers every key of validate's `messagesEn`,
3
- * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and
4
- * the `JQ2xxx` codes reachable through `$query`.
3
+ * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
4
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
5
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
5
6
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
6
7
  */
7
8
  export declare const tr: Record<string, string | ((params: any, error?: object) => string)>;
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * The zh-TW catalog. Covers every key of validate's `messagesEn`,
3
- * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and
4
- * the `JQ2xxx` codes reachable through `$query`.
3
+ * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
4
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
5
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
5
6
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
6
7
  */
7
8
  export declare const zhTW: Record<string, string | ((params: any, error?: object) => string)>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@jarenjs/locales",
3
3
  "private": false,
4
- "version": "0.34.0",
4
+ "version": "0.43.1",
5
5
  "type": "module",
6
6
  "main": "./src/index.js",
7
7
  "types": "./dist/types/index.d.ts",
@@ -90,6 +90,6 @@
90
90
  "prepack": "npm run build:types"
91
91
  },
92
92
  "dependencies": {
93
- "@jarenjs/core": "^0.34.0"
93
+ "@jarenjs/core": "^0.43.1"
94
94
  }
95
95
  }
package/src/ar.js CHANGED
@@ -87,8 +87,12 @@ function compareLimit(p) {
87
87
 
88
88
  /**
89
89
  * The Arabic catalog. Covers every key of validate's `messagesEn`,
90
- * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and
91
- * the `JQ2xxx` codes reachable through `$query`.
90
+ * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
91
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
92
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn` — the
93
+ * contract entries wrap their Latin protocol values (operation ids,
94
+ * media types, error codes) in first-strong isolates (U+2068 FSI …
95
+ * U+2069 PDI) so a Latin run cannot reorder the RTL sentence around it.
92
96
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
93
97
  */
94
98
  export const ar = {
@@ -156,4 +160,42 @@ export const ar = {
156
160
  'form/addItem': 'إضافة عنصر',
157
161
  'form/removeItem': 'إزالة عنصر',
158
162
  //#endregion
163
+
164
+ //#region @jarenjs/contract (wire-error voice)
165
+ 'contract/not-found': 'لا توجد عملية تطابق طريقة الطلب ومساره',
166
+ 'contract/method-not-allowed': 'يُخدم هذا المسار بطرق أخرى: ⁨{allow}⁩',
167
+ 'contract/body-too-large': 'يتجاوز متن طلب العملية ⁨{op}⁩ حدّها البالغ {limit} بايت',
168
+ 'contract/unsupported-media': 'لا تقبل العملية ⁨{op}⁩ سوى متون ⁨{media}⁩',
169
+ 'contract/malformed-json': 'متن طلب العملية ⁨{op}⁩ ليس JSON صالحًا',
170
+ 'contract/invalid-input': 'مدخلات العملية ⁨{op}⁩ غير صالحة',
171
+ 'contract/idempotency-key-required': 'تتطلب العملية ⁨{op}⁩ ترويسة Idempotency-Key',
172
+ 'contract/handler-failed': 'فشلت العملية ⁨{op}⁩',
173
+ 'contract/idempotency-conflict': 'يتعارض Idempotency-Key الخاص بالعملية ⁨{op}⁩ مع طلب سابق (⁨{kind}⁩)',
174
+ 'contract/invalid-output': 'أنتجت العملية ⁨{op}⁩ استجابة تخالف عقدها',
175
+ 'contract/malformed-path': 'يحتوي مسار الطلب على تسلسل هروب نسبة مئوية مشوّه',
176
+ 'contract/malformed-query': 'تعذر فك ترميز سلسلة الاستعلام',
177
+ 'contract/not-implemented': 'العملية ⁨{op}⁩ غير منفّذة على هذا الخادم',
178
+ 'contract/precondition-failed': 'أخفق الشرط المسبق If-Match للعملية ⁨{op}⁩',
179
+ 'contract/invalid-header': 'ترويسة ⁨{header}⁩ للعملية ⁨{op}⁩ غير صالحة',
180
+ 'contract/handler-error': 'فشلت العملية ⁨{op}⁩ بالخطأ ⁨{code}⁩',
181
+ 'contract/client-invalid-input': 'مدخلات العملية ⁨{op}⁩ غير صالحة؛ لم يُرسل أي شيء',
182
+ 'contract/network': 'لم يكتمل طلب ⁨{op}⁩ (⁨{name}⁩)',
183
+ 'contract/cancelled': 'أُلغي طلب العملية ⁨{op}⁩',
184
+ 'contract/invalid-response': 'استجابة العملية ⁨{op}⁩ تخالف عقدها',
185
+ 'contract/key-storage-failed': 'تعذر تخزين مفتاح تكرارية العملية ⁨{op}⁩؛ لم يُرسل أي شيء',
186
+ 'contract/undeclared-response': 'أجابت العملية ⁨{op}⁩ باستجابة غير معلنة (الحالة {status})',
187
+ 'contract/not-a-contract': 'لا يصف الخادم العقد ⁨{id}⁩ في مساره المعروف (well-known)',
188
+ 'contract/incompatible': 'يتحدث الخادم الإصدار ⁨{server}⁩ من العقد ⁨{id}⁩؛ ويتحدث هذا العميل ⁨{client}⁩، ولا يعلن أي طرف توافق الآخر',
189
+ 'contract/host-failed': 'فشلت العملية ⁨{op}⁩ في المضيف قبل إنتاج أي نتيجة',
190
+ 'contract/local-handler-failed': 'فشلت العملية ⁨{op}⁩ في المضيف المقدّم للخدمة',
191
+ 'contract/unknown-operation': 'لا يسمّي الطلب أي عملية مقدّمة على هذه القناة',
192
+ 'contract/port-timeout': 'لم تتلقَّ العملية ⁨{op}⁩ أي إجابة على القناة خلال {ms} مللي ثانية',
193
+ 'contract/malformed-frame': 'إطار استجابة العملية ⁨{op}⁩ مشوّه',
194
+ 'contract/channel-closed': 'قناة العملية ⁨{op}⁩ مغلقة',
195
+ 'contract/not-a-stream': 'أجاب الخادم على اشتراك العملية ⁨{op}⁩ باستجابة ليست دفقًا',
196
+ 'contract/invalid-snapshot': 'أنتجت العملية ⁨{op}⁩ لقطة تخالف عقدها',
197
+ 'contract/seq-regression': 'خالف دفق العملية ⁨{op}⁩ ترتيب seq الخاص به',
198
+ 'contract/stream-error': 'انتهى دفق العملية ⁨{op}⁩ بخطأ من الخادم (⁨{code}⁩)',
199
+ 'contract/heartbeat-missed': 'ظل دفق العملية ⁨{op}⁩ صامتًا لمدة {ms} مللي ثانية',
200
+ //#endregion
159
201
  };
package/src/de.js CHANGED
@@ -59,8 +59,9 @@ const typeName = makeTypeNamer(TYPE_NAMES);
59
59
 
60
60
  /**
61
61
  * The German catalog. Covers every key of validate's `messagesEn`, every
62
- * `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and the
63
- * `JQ2xxx` codes reachable through `$query`.
62
+ * `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
63
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
64
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
64
65
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
65
66
  */
66
67
  export const de = {
@@ -128,4 +129,42 @@ export const de = {
128
129
  'form/addItem': 'Element hinzufügen',
129
130
  'form/removeItem': 'Element entfernen',
130
131
  //#endregion
132
+
133
+ //#region @jarenjs/contract (wire-error voice)
134
+ 'contract/not-found': 'keine Operation entspricht Methode und Pfad der Anfrage',
135
+ 'contract/method-not-allowed': 'der Pfad wird unter anderen Methoden bedient: {allow}',
136
+ 'contract/body-too-large': 'der Anfragekörper der Operation {op} überschreitet sein Limit von {limit} Bytes',
137
+ 'contract/unsupported-media': 'die Operation {op} akzeptiert nur {media}-Körper',
138
+ 'contract/malformed-json': 'der Anfragekörper der Operation {op} ist kein gültiges JSON',
139
+ 'contract/invalid-input': 'die Eingabe der Operation {op} ist ungültig',
140
+ 'contract/idempotency-key-required': 'die Operation {op} erfordert einen Idempotency-Key-Header',
141
+ 'contract/handler-failed': 'die Operation {op} ist fehlgeschlagen',
142
+ 'contract/idempotency-conflict': 'der Idempotency-Key der Operation {op} steht im Konflikt mit einer früheren Anfrage ({kind})',
143
+ 'contract/invalid-output': 'die Operation {op} hat eine Antwort erzeugt, die ihren Vertrag verletzt',
144
+ 'contract/malformed-path': 'der Anfragepfad enthält eine fehlerhafte Prozent-Escape-Sequenz',
145
+ 'contract/malformed-query': 'der Query-String ist nicht dekodierbar',
146
+ 'contract/not-implemented': 'die Operation {op} ist auf diesem Server nicht implementiert',
147
+ 'contract/precondition-failed': 'die If-Match-Vorbedingung der Operation {op} ist fehlgeschlagen',
148
+ 'contract/invalid-header': 'der {header}-Header der Operation {op} ist ungültig',
149
+ 'contract/handler-error': 'die Operation {op} ist mit {code} fehlgeschlagen',
150
+ 'contract/client-invalid-input': 'die Eingabe der Operation {op} ist ungültig; nichts wurde gesendet',
151
+ 'contract/network': 'die Anfrage von {op} wurde nicht abgeschlossen ({name})',
152
+ 'contract/cancelled': 'die Anfrage der Operation {op} wurde abgebrochen',
153
+ 'contract/invalid-response': 'die Antwort der Operation {op} verletzt ihren Vertrag',
154
+ 'contract/key-storage-failed': 'der Idempotenzschlüssel der Operation {op} konnte nicht gespeichert werden; nichts wurde gesendet',
155
+ 'contract/undeclared-response': 'die Operation {op} hat mit einer nicht deklarierten Antwort geantwortet (Status {status})',
156
+ 'contract/not-a-contract': 'der Server beschreibt den Vertrag {id} an seinem Well-known-Pfad nicht',
157
+ 'contract/incompatible': 'der Server spricht Version {server} des Vertrags {id}; dieser Client spricht {client}, und keine Seite erklärt die andere für kompatibel',
158
+ 'contract/host-failed': 'die Operation {op} ist im Host fehlgeschlagen, bevor ein Ergebnis erzeugt wurde',
159
+ 'contract/local-handler-failed': 'die Operation {op} ist im bedienenden Host fehlgeschlagen',
160
+ 'contract/unknown-operation': 'die Anfrage nennt keine auf diesem Kanal bediente Operation',
161
+ 'contract/port-timeout': 'die Operation {op} erhielt innerhalb von {ms} ms keine Antwort auf dem Kanal',
162
+ 'contract/malformed-frame': 'der Antwortrahmen der Operation {op} ist fehlerhaft',
163
+ 'contract/channel-closed': 'der Kanal der Operation {op} ist geschlossen',
164
+ 'contract/not-a-stream': 'der Server hat das Abonnement der Operation {op} mit einer Antwort beantwortet, die kein Stream ist',
165
+ 'contract/invalid-snapshot': 'die Operation {op} hat einen Schnappschuss erzeugt, der ihren Vertrag verletzt',
166
+ 'contract/seq-regression': 'der Stream der Operation {op} hat seine seq-Reihenfolge verletzt',
167
+ 'contract/stream-error': 'der Stream der Operation {op} endete mit einem Serverfehler ({code})',
168
+ 'contract/heartbeat-missed': 'der Stream der Operation {op} blieb {ms} ms lang still',
169
+ //#endregion
131
170
  };
package/src/es.js CHANGED
@@ -59,8 +59,9 @@ const typeName = makeTypeNamer(TYPE_NAMES);
59
59
 
60
60
  /**
61
61
  * The Spanish catalog. Covers every key of validate's `messagesEn`, every
62
- * `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and the
63
- * `JQ2xxx` codes reachable through `$query`.
62
+ * `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
63
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
64
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
64
65
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
65
66
  */
66
67
  export const es = {
@@ -128,4 +129,42 @@ export const es = {
128
129
  'form/addItem': 'Añadir elemento',
129
130
  'form/removeItem': 'Eliminar elemento',
130
131
  //#endregion
132
+
133
+ //#region @jarenjs/contract (wire-error voice)
134
+ 'contract/not-found': 'ninguna operación coincide con el método y la ruta de la solicitud',
135
+ 'contract/method-not-allowed': 'la ruta se sirve bajo otros métodos: {allow}',
136
+ 'contract/body-too-large': 'el cuerpo de la solicitud de la operación {op} supera su límite de {limit} bytes',
137
+ 'contract/unsupported-media': 'la operación {op} solo acepta cuerpos {media}',
138
+ 'contract/malformed-json': 'el cuerpo de la solicitud de la operación {op} no es JSON válido',
139
+ 'contract/invalid-input': 'la entrada de la operación {op} no es válida',
140
+ 'contract/idempotency-key-required': 'la operación {op} requiere una cabecera Idempotency-Key',
141
+ 'contract/handler-failed': 'la operación {op} falló',
142
+ 'contract/idempotency-conflict': 'la Idempotency-Key de la operación {op} entra en conflicto con una solicitud anterior ({kind})',
143
+ 'contract/invalid-output': 'la operación {op} produjo una respuesta que viola su contrato',
144
+ 'contract/malformed-path': 'la ruta de la solicitud contiene un escape porcentual mal formado',
145
+ 'contract/malformed-query': 'la cadena de consulta no se puede descodificar',
146
+ 'contract/not-implemented': 'la operación {op} no está implementada en este servidor',
147
+ 'contract/precondition-failed': 'la precondición If-Match de la operación {op} falló',
148
+ 'contract/invalid-header': 'la cabecera {header} de la operación {op} no es válida',
149
+ 'contract/handler-error': 'la operación {op} falló con {code}',
150
+ 'contract/client-invalid-input': 'la entrada de la operación {op} no es válida; no se envió nada',
151
+ 'contract/network': 'la solicitud de {op} no se completó ({name})',
152
+ 'contract/cancelled': 'la solicitud de la operación {op} fue cancelada',
153
+ 'contract/invalid-response': 'la respuesta de la operación {op} viola su contrato',
154
+ 'contract/key-storage-failed': 'la clave de idempotencia de la operación {op} no pudo almacenarse; no se envió nada',
155
+ 'contract/undeclared-response': 'la operación {op} respondió con una respuesta no declarada (estado {status})',
156
+ 'contract/not-a-contract': 'el servidor no describe el contrato {id} en su ruta well-known',
157
+ 'contract/incompatible': 'el servidor habla la versión {server} del contrato {id}; este cliente habla {client} y ningún extremo declara compatible al otro',
158
+ 'contract/host-failed': 'la operación {op} falló en el host antes de producirse un resultado',
159
+ 'contract/local-handler-failed': 'la operación {op} falló en el host que la sirve',
160
+ 'contract/unknown-operation': 'la solicitud no nombra ninguna operación servida en este canal',
161
+ 'contract/port-timeout': 'la operación {op} no obtuvo respuesta en el canal en {ms} ms',
162
+ 'contract/malformed-frame': 'la trama de respuesta de la operación {op} está mal formada',
163
+ 'contract/channel-closed': 'el canal de la operación {op} está cerrado',
164
+ 'contract/not-a-stream': 'el servidor respondió a la suscripción de la operación {op} con una respuesta que no es un flujo',
165
+ 'contract/invalid-snapshot': 'la operación {op} produjo una instantánea que viola su contrato',
166
+ 'contract/seq-regression': 'el flujo de la operación {op} violó el orden de sus seq',
167
+ 'contract/stream-error': 'el flujo de la operación {op} terminó con un error del servidor ({code})',
168
+ 'contract/heartbeat-missed': 'el flujo de la operación {op} quedó en silencio durante {ms} ms',
169
+ //#endregion
131
170
  };
package/src/fr.js CHANGED
@@ -59,8 +59,9 @@ const typeName = makeTypeNamer(TYPE_NAMES);
59
59
 
60
60
  /**
61
61
  * The French catalog. Covers every key of validate's `messagesEn`, every
62
- * `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and the
63
- * `JQ2xxx` codes reachable through `$query`.
62
+ * `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
63
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
64
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
64
65
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
65
66
  */
66
67
  export const fr = {
@@ -128,4 +129,42 @@ export const fr = {
128
129
  'form/addItem': 'Ajouter un élément',
129
130
  "form/removeItem": "Supprimer l'élément",
130
131
  //#endregion
132
+
133
+ //#region @jarenjs/contract (wire-error voice)
134
+ 'contract/not-found': 'aucune opération ne correspond à la méthode et au chemin de la requête',
135
+ 'contract/method-not-allowed': "le chemin est servi sous d'autres méthodes : {allow}",
136
+ 'contract/body-too-large': "le corps de la requête de l'opération {op} dépasse sa limite de {limit} octets",
137
+ 'contract/unsupported-media': "l'opération {op} n'accepte que des corps {media}",
138
+ 'contract/malformed-json': "le corps de la requête de l'opération {op} n'est pas du JSON valide",
139
+ 'contract/invalid-input': "l'entrée de l'opération {op} est invalide",
140
+ 'contract/idempotency-key-required': "l'opération {op} exige un en-tête Idempotency-Key",
141
+ 'contract/handler-failed': "l'opération {op} a échoué",
142
+ 'contract/idempotency-conflict': "la clé Idempotency-Key de l'opération {op} est en conflit avec une requête antérieure ({kind})",
143
+ 'contract/invalid-output': "l'opération {op} a produit une réponse qui viole son contrat",
144
+ 'contract/malformed-path': "le chemin de la requête contient une séquence d'échappement pour cent malformée",
145
+ 'contract/malformed-query': "la chaîne de requête n'est pas décodable",
146
+ 'contract/not-implemented': "l'opération {op} n'est pas implémentée sur ce serveur",
147
+ 'contract/precondition-failed': "la précondition If-Match de l'opération {op} a échoué",
148
+ 'contract/invalid-header': "l'en-tête {header} de l'opération {op} est invalide",
149
+ 'contract/handler-error': "l'opération {op} a échoué avec {code}",
150
+ 'contract/client-invalid-input': "l'entrée de l'opération {op} est invalide ; rien n'a été envoyé",
151
+ 'contract/network': "la requête de {op} ne s'est pas terminée ({name})",
152
+ 'contract/cancelled': "la requête de l'opération {op} a été annulée",
153
+ 'contract/invalid-response': "la réponse de l'opération {op} viole son contrat",
154
+ 'contract/key-storage-failed': "la clé d'idempotence de l'opération {op} n'a pas pu être enregistrée ; rien n'a été envoyé",
155
+ 'contract/undeclared-response': "l'opération {op} a renvoyé une réponse non déclarée (statut {status})",
156
+ 'contract/not-a-contract': 'le serveur ne décrit pas le contrat {id} à son chemin well-known',
157
+ 'contract/incompatible': "le serveur parle la version {server} du contrat {id} ; ce client parle {client} et aucune des deux extrémités ne déclare l'autre compatible",
158
+ 'contract/host-failed': "l'opération {op} a échoué dans l'hôte avant qu'un résultat ne soit produit",
159
+ 'contract/local-handler-failed': "l'opération {op} a échoué dans l'hôte qui la sert",
160
+ 'contract/unknown-operation': 'la requête ne nomme aucune opération servie sur ce canal',
161
+ 'contract/port-timeout': "l'opération {op} n'a reçu aucune réponse sur le canal en {ms} ms",
162
+ 'contract/malformed-frame': "la trame de réponse de l'opération {op} est malformée",
163
+ 'contract/channel-closed': "le canal de l'opération {op} est fermé",
164
+ 'contract/not-a-stream': "le serveur a répondu à l'abonnement de l'opération {op} par une réponse qui n'est pas un flux",
165
+ 'contract/invalid-snapshot': "l'opération {op} a produit un instantané qui viole son contrat",
166
+ 'contract/seq-regression': "le flux de l'opération {op} a violé l'ordre de ses seq",
167
+ 'contract/stream-error': "le flux de l'opération {op} s'est terminé par une erreur serveur ({code})",
168
+ 'contract/heartbeat-missed': "le flux de l'opération {op} est resté silencieux pendant {ms} ms",
169
+ //#endregion
131
170
  };
package/src/ja.js CHANGED
@@ -54,8 +54,9 @@ const typeName = makeTypeNamer(TYPE_NAMES);
54
54
 
55
55
  /**
56
56
  * The Japanese catalog. Covers every key of validate's `messagesEn`,
57
- * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and
58
- * the `JQ2xxx` codes reachable through `$query`.
57
+ * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
58
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
59
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
59
60
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
60
61
  */
61
62
  export const ja = {
@@ -123,4 +124,42 @@ export const ja = {
123
124
  'form/addItem': '項目を追加',
124
125
  'form/removeItem': '項目を削除',
125
126
  //#endregion
127
+
128
+ //#region @jarenjs/contract (wire-error voice)
129
+ 'contract/not-found': 'リクエストのメソッドとパスに一致する操作がありません',
130
+ 'contract/method-not-allowed': 'このパスは別のメソッドで提供されています: {allow}',
131
+ 'contract/body-too-large': '操作 {op} のリクエストボディが {limit} バイトの上限を超えています',
132
+ 'contract/unsupported-media': '操作 {op} は {media} のボディのみ受け付けます',
133
+ 'contract/malformed-json': '操作 {op} のリクエストボディは有効な JSON ではありません',
134
+ 'contract/invalid-input': '操作 {op} の入力が無効です',
135
+ 'contract/idempotency-key-required': '操作 {op} には Idempotency-Key ヘッダーが必要です',
136
+ 'contract/handler-failed': '操作 {op} が失敗しました',
137
+ 'contract/idempotency-conflict': '操作 {op} の Idempotency-Key が以前のリクエストと競合しています ({kind})',
138
+ 'contract/invalid-output': '操作 {op} が契約に違反するレスポンスを生成しました',
139
+ 'contract/malformed-path': 'リクエストパスに不正なパーセントエスケープが含まれています',
140
+ 'contract/malformed-query': 'クエリ文字列をデコードできません',
141
+ 'contract/not-implemented': '操作 {op} はこのサーバーでは実装されていません',
142
+ 'contract/precondition-failed': '操作 {op} の If-Match 前提条件が満たされませんでした',
143
+ 'contract/invalid-header': '操作 {op} の {header} ヘッダーが無効です',
144
+ 'contract/handler-error': '操作 {op} が {code} で失敗しました',
145
+ 'contract/client-invalid-input': '操作 {op} の入力が無効です。何も送信されませんでした',
146
+ 'contract/network': '{op} のリクエストは完了しませんでした ({name})',
147
+ 'contract/cancelled': '操作 {op} のリクエストはキャンセルされました',
148
+ 'contract/invalid-response': '操作 {op} のレスポンスは契約に違反しています',
149
+ 'contract/key-storage-failed': '操作 {op} の冪等キーを保存できませんでした。何も送信されませんでした',
150
+ 'contract/undeclared-response': '操作 {op} が宣言されていないレスポンスを返しました (ステータス {status})',
151
+ 'contract/not-a-contract': 'サーバーは well-known パスで契約 {id} を記述していません',
152
+ 'contract/incompatible': 'サーバーは契約 {id} のバージョン {server} を話し、このクライアントは {client} を話しますが、どちらの側も相手を互換と宣言していません',
153
+ 'contract/host-failed': '操作 {op} は結果が生成される前にホスト内で失敗しました',
154
+ 'contract/local-handler-failed': '操作 {op} は提供側ホスト内で失敗しました',
155
+ 'contract/unknown-operation': 'リクエストはこのチャネルで提供されている操作を指名していません',
156
+ 'contract/port-timeout': '操作 {op} は {ms} ミリ秒以内にチャネル上で応答を得られませんでした',
157
+ 'contract/malformed-frame': '操作 {op} のレスポンスフレームが不正です',
158
+ 'contract/channel-closed': '操作 {op} のチャネルは閉じられています',
159
+ 'contract/not-a-stream': 'サーバーは操作 {op} の購読にストリームでないレスポンスで応答しました',
160
+ 'contract/invalid-snapshot': '操作 {op} が契約に違反するスナップショットを生成しました',
161
+ 'contract/seq-regression': '操作 {op} のストリームが seq の順序に違反しました',
162
+ 'contract/stream-error': '操作 {op} のストリームはサーバーエラーで終了しました ({code})',
163
+ 'contract/heartbeat-missed': '操作 {op} のストリームが {ms} ミリ秒間沈黙しました',
164
+ //#endregion
126
165
  };
package/src/ko.js CHANGED
@@ -57,8 +57,9 @@ const typeName = makeTypeNamer(TYPE_NAMES);
57
57
 
58
58
  /**
59
59
  * The Korean catalog. Covers every key of validate's `messagesEn`,
60
- * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and
61
- * the `JQ2xxx` codes reachable through `$query`.
60
+ * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
61
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
62
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
62
63
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
63
64
  */
64
65
  export const ko = {
@@ -126,4 +127,42 @@ export const ko = {
126
127
  'form/addItem': '항목 추가',
127
128
  'form/removeItem': '항목 삭제',
128
129
  //#endregion
130
+
131
+ //#region @jarenjs/contract (wire-error voice)
132
+ 'contract/not-found': '요청의 메서드와 경로에 일치하는 작업이 없습니다',
133
+ 'contract/method-not-allowed': '이 경로는 다른 메서드로 제공됩니다: {allow}',
134
+ 'contract/body-too-large': '작업 {op}의 요청 본문이 {limit}바이트 한도를 초과합니다',
135
+ 'contract/unsupported-media': '작업 {op}은(는) {media} 본문만 허용합니다',
136
+ 'contract/malformed-json': '작업 {op}의 요청 본문이 유효한 JSON이 아닙니다',
137
+ 'contract/invalid-input': '작업 {op}의 입력이 유효하지 않습니다',
138
+ 'contract/idempotency-key-required': '작업 {op}에는 Idempotency-Key 헤더가 필요합니다',
139
+ 'contract/handler-failed': '작업 {op}이(가) 실패했습니다',
140
+ 'contract/idempotency-conflict': '작업 {op}의 Idempotency-Key가 이전 요청과 충돌합니다 ({kind})',
141
+ 'contract/invalid-output': '작업 {op}이(가) 계약을 위반하는 응답을 생성했습니다',
142
+ 'contract/malformed-path': '요청 경로에 잘못된 퍼센트 이스케이프가 있습니다',
143
+ 'contract/malformed-query': '쿼리 문자열을 디코딩할 수 없습니다',
144
+ 'contract/not-implemented': '작업 {op}은(는) 이 서버에 구현되어 있지 않습니다',
145
+ 'contract/precondition-failed': '작업 {op}의 If-Match 전제 조건이 실패했습니다',
146
+ 'contract/invalid-header': '작업 {op}의 {header} 헤더가 유효하지 않습니다',
147
+ 'contract/handler-error': '작업 {op}이(가) {code}(으)로 실패했습니다',
148
+ 'contract/client-invalid-input': '작업 {op}의 입력이 유효하지 않습니다. 아무것도 전송되지 않았습니다',
149
+ 'contract/network': '{op}의 요청이 완료되지 않았습니다 ({name})',
150
+ 'contract/cancelled': '작업 {op}의 요청이 취소되었습니다',
151
+ 'contract/invalid-response': '작업 {op}의 응답이 계약을 위반합니다',
152
+ 'contract/key-storage-failed': '작업 {op}의 멱등 키를 저장할 수 없습니다. 아무것도 전송되지 않았습니다',
153
+ 'contract/undeclared-response': '작업 {op}이(가) 선언되지 않은 응답을 반환했습니다 (상태 {status})',
154
+ 'contract/not-a-contract': '서버가 well-known 경로에서 계약 {id}을(를) 기술하지 않습니다',
155
+ 'contract/incompatible': '서버는 계약 {id}의 버전 {server}을(를) 사용하고 이 클라이언트는 {client}을(를) 사용하며, 어느 쪽도 상대를 호환으로 선언하지 않습니다',
156
+ 'contract/host-failed': '작업 {op}이(가) 결과가 생성되기 전에 호스트에서 실패했습니다',
157
+ 'contract/local-handler-failed': '작업 {op}이(가) 제공 호스트에서 실패했습니다',
158
+ 'contract/unknown-operation': '요청이 이 채널에서 제공되는 작업을 지명하지 않습니다',
159
+ 'contract/port-timeout': '작업 {op}이(가) {ms}ms 안에 채널에서 응답을 받지 못했습니다',
160
+ 'contract/malformed-frame': '작업 {op}의 응답 프레임이 잘못되었습니다',
161
+ 'contract/channel-closed': '작업 {op}의 채널이 닫혔습니다',
162
+ 'contract/not-a-stream': '서버가 작업 {op}의 구독에 스트림이 아닌 응답으로 응답했습니다',
163
+ 'contract/invalid-snapshot': '작업 {op}이(가) 계약을 위반하는 스냅샷을 생성했습니다',
164
+ 'contract/seq-regression': '작업 {op}의 스트림이 seq 순서를 위반했습니다',
165
+ 'contract/stream-error': '작업 {op}의 스트림이 서버 오류로 종료되었습니다 ({code})',
166
+ 'contract/heartbeat-missed': '작업 {op}의 스트림이 {ms}ms 동안 침묵했습니다',
167
+ //#endregion
129
168
  };
package/src/nl.js CHANGED
@@ -58,8 +58,9 @@ const typeName = makeTypeNamer(TYPE_NAMES);
58
58
 
59
59
  /**
60
60
  * The Dutch catalog. Covers every key of validate's `messagesEn`, every
61
- * `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and the
62
- * `JQ2xxx` codes reachable through `$query`.
61
+ * `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
62
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
63
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
63
64
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
64
65
  */
65
66
  export const nl = {
@@ -127,4 +128,42 @@ export const nl = {
127
128
  'form/addItem': 'Item toevoegen',
128
129
  'form/removeItem': 'Item verwijderen',
129
130
  //#endregion
131
+
132
+ //#region @jarenjs/contract (wire-error voice)
133
+ 'contract/not-found': 'geen enkele operatie komt overeen met de methode en het pad van het verzoek',
134
+ 'contract/method-not-allowed': 'het pad wordt onder andere methoden bediend: {allow}',
135
+ 'contract/body-too-large': 'de verzoekbody van operatie {op} overschrijdt de limiet van {limit} bytes',
136
+ 'contract/unsupported-media': "operatie {op} accepteert alleen {media}-body's",
137
+ 'contract/malformed-json': 'de verzoekbody van operatie {op} is geen geldige JSON',
138
+ 'contract/invalid-input': 'de invoer van operatie {op} is ongeldig',
139
+ 'contract/idempotency-key-required': 'operatie {op} vereist een Idempotency-Key-header',
140
+ 'contract/handler-failed': 'operatie {op} is mislukt',
141
+ 'contract/idempotency-conflict': 'de Idempotency-Key van operatie {op} conflicteert met een eerder verzoek ({kind})',
142
+ 'contract/invalid-output': 'operatie {op} heeft een antwoord geproduceerd dat het contract schendt',
143
+ 'contract/malformed-path': 'het verzoekpad bevat een misvormde procent-escape',
144
+ 'contract/malformed-query': 'de querystring is niet te decoderen',
145
+ 'contract/not-implemented': 'operatie {op} is niet geïmplementeerd op deze server',
146
+ 'contract/precondition-failed': 'de If-Match-voorwaarde van operatie {op} is niet vervuld',
147
+ 'contract/invalid-header': 'de {header}-header van operatie {op} is ongeldig',
148
+ 'contract/handler-error': 'operatie {op} is mislukt met {code}',
149
+ 'contract/client-invalid-input': 'de invoer van operatie {op} is ongeldig; er is niets verzonden',
150
+ 'contract/network': 'het verzoek van {op} is niet voltooid ({name})',
151
+ 'contract/cancelled': 'het verzoek van operatie {op} is geannuleerd',
152
+ 'contract/invalid-response': 'het antwoord van operatie {op} schendt het contract',
153
+ 'contract/key-storage-failed': 'de idempotentiesleutel van operatie {op} kon niet worden opgeslagen; er is niets verzonden',
154
+ 'contract/undeclared-response': 'operatie {op} antwoordde met een niet-gedeclareerd antwoord (status {status})',
155
+ 'contract/not-a-contract': 'de server beschrijft contract {id} niet op zijn well-known-pad',
156
+ 'contract/incompatible': 'de server spreekt versie {server} van contract {id}; deze client spreekt {client} en geen van beide einden verklaart de ander compatibel',
157
+ 'contract/host-failed': 'operatie {op} is mislukt in de host voordat een uitkomst werd geproduceerd',
158
+ 'contract/local-handler-failed': 'operatie {op} is mislukt in de bedienende host',
159
+ 'contract/unknown-operation': 'het verzoek noemt geen operatie die op dit kanaal wordt bediend',
160
+ 'contract/port-timeout': 'operatie {op} kreeg binnen {ms} ms geen antwoord op het kanaal',
161
+ 'contract/malformed-frame': 'het antwoordframe van operatie {op} is misvormd',
162
+ 'contract/channel-closed': 'het kanaal van operatie {op} is gesloten',
163
+ 'contract/not-a-stream': 'de server beantwoordde het abonnement van operatie {op} met een antwoord dat geen stream is',
164
+ 'contract/invalid-snapshot': 'operatie {op} heeft een momentopname geproduceerd die het contract schendt',
165
+ 'contract/seq-regression': 'de stream van operatie {op} heeft de seq-volgorde geschonden',
166
+ 'contract/stream-error': 'de stream van operatie {op} is geëindigd met een serverfout ({code})',
167
+ 'contract/heartbeat-missed': 'de stream van operatie {op} is {ms} ms stil gebleven',
168
+ //#endregion
130
169
  };
package/src/pt.js CHANGED
@@ -59,8 +59,9 @@ const typeName = makeTypeNamer(TYPE_NAMES);
59
59
 
60
60
  /**
61
61
  * The Portuguese catalog. Covers every key of validate's `messagesEn`,
62
- * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and
63
- * the `JQ2xxx` codes reachable through `$query`.
62
+ * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
63
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
64
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
64
65
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
65
66
  */
66
67
  export const pt = {
@@ -128,4 +129,42 @@ export const pt = {
128
129
  'form/addItem': 'Adicionar item',
129
130
  'form/removeItem': 'Remover item',
130
131
  //#endregion
132
+
133
+ //#region @jarenjs/contract (wire-error voice)
134
+ 'contract/not-found': 'nenhuma operação corresponde ao método e ao caminho da solicitação',
135
+ 'contract/method-not-allowed': 'o caminho é servido sob outros métodos: {allow}',
136
+ 'contract/body-too-large': 'o corpo da solicitação da operação {op} excede seu limite de {limit} bytes',
137
+ 'contract/unsupported-media': 'a operação {op} aceita apenas corpos {media}',
138
+ 'contract/malformed-json': 'o corpo da solicitação da operação {op} não é JSON válido',
139
+ 'contract/invalid-input': 'a entrada da operação {op} é inválida',
140
+ 'contract/idempotency-key-required': 'a operação {op} exige um cabeçalho Idempotency-Key',
141
+ 'contract/handler-failed': 'a operação {op} falhou',
142
+ 'contract/idempotency-conflict': 'a Idempotency-Key da operação {op} conflita com uma solicitação anterior ({kind})',
143
+ 'contract/invalid-output': 'a operação {op} produziu uma resposta que viola seu contrato',
144
+ 'contract/malformed-path': 'o caminho da solicitação contém um escape percentual malformado',
145
+ 'contract/malformed-query': 'a cadeia de consulta não é decodificável',
146
+ 'contract/not-implemented': 'a operação {op} não está implementada neste servidor',
147
+ 'contract/precondition-failed': 'a pré-condição If-Match da operação {op} falhou',
148
+ 'contract/invalid-header': 'o cabeçalho {header} da operação {op} é inválido',
149
+ 'contract/handler-error': 'a operação {op} falhou com {code}',
150
+ 'contract/client-invalid-input': 'a entrada da operação {op} é inválida; nada foi enviado',
151
+ 'contract/network': 'a solicitação de {op} não foi concluída ({name})',
152
+ 'contract/cancelled': 'a solicitação da operação {op} foi cancelada',
153
+ 'contract/invalid-response': 'a resposta da operação {op} viola seu contrato',
154
+ 'contract/key-storage-failed': 'a chave de idempotência da operação {op} não pôde ser armazenada; nada foi enviado',
155
+ 'contract/undeclared-response': 'a operação {op} respondeu com uma resposta não declarada (status {status})',
156
+ 'contract/not-a-contract': 'o servidor não descreve o contrato {id} em seu caminho well-known',
157
+ 'contract/incompatible': 'o servidor fala a versão {server} do contrato {id}; este cliente fala {client} e nenhuma das extremidades declara a outra compatível',
158
+ 'contract/host-failed': 'a operação {op} falhou no host antes de um resultado ser produzido',
159
+ 'contract/local-handler-failed': 'a operação {op} falhou no host que a serve',
160
+ 'contract/unknown-operation': 'a solicitação não nomeia nenhuma operação servida neste canal',
161
+ 'contract/port-timeout': 'a operação {op} não obteve resposta no canal em {ms} ms',
162
+ 'contract/malformed-frame': 'o quadro de resposta da operação {op} está malformado',
163
+ 'contract/channel-closed': 'o canal da operação {op} está fechado',
164
+ 'contract/not-a-stream': 'o servidor respondeu à assinatura da operação {op} com uma resposta que não é um fluxo',
165
+ 'contract/invalid-snapshot': 'a operação {op} produziu um instantâneo que viola seu contrato',
166
+ 'contract/seq-regression': 'o fluxo da operação {op} violou a ordem de seus seq',
167
+ 'contract/stream-error': 'o fluxo da operação {op} terminou com um erro do servidor ({code})',
168
+ 'contract/heartbeat-missed': 'o fluxo da operação {op} ficou em silêncio por {ms} ms',
169
+ //#endregion
131
170
  };
package/src/ru.js CHANGED
@@ -69,8 +69,9 @@ const typeName = makeTypeNamer(TYPE_NAMES);
69
69
 
70
70
  /**
71
71
  * The Russian catalog. Covers every key of validate's `messagesEn`,
72
- * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and
73
- * the `JQ2xxx` codes reachable through `$query`.
72
+ * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
73
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
74
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
74
75
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
75
76
  */
76
77
  export const ru = {
@@ -138,4 +139,42 @@ export const ru = {
138
139
  'form/addItem': 'Добавить элемент',
139
140
  'form/removeItem': 'Удалить элемент',
140
141
  //#endregion
142
+
143
+ //#region @jarenjs/contract (wire-error voice)
144
+ 'contract/not-found': 'ни одна операция не соответствует методу и пути запроса',
145
+ 'contract/method-not-allowed': 'путь обслуживается другими методами: {allow}',
146
+ 'contract/body-too-large': 'тело запроса операции {op} превышает её лимит в {limit} байт',
147
+ 'contract/unsupported-media': 'операция {op} принимает только тела {media}',
148
+ 'contract/malformed-json': 'тело запроса операции {op} не является корректным JSON',
149
+ 'contract/invalid-input': 'входные данные операции {op} недопустимы',
150
+ 'contract/idempotency-key-required': 'операция {op} требует заголовок Idempotency-Key',
151
+ 'contract/handler-failed': 'операция {op} завершилась с ошибкой',
152
+ 'contract/idempotency-conflict': 'Idempotency-Key операции {op} конфликтует с более ранним запросом ({kind})',
153
+ 'contract/invalid-output': 'операция {op} вернула ответ, нарушающий её контракт',
154
+ 'contract/malformed-path': 'путь запроса содержит некорректную процентную escape-последовательность',
155
+ 'contract/malformed-query': 'строка запроса не декодируется',
156
+ 'contract/not-implemented': 'операция {op} не реализована на этом сервере',
157
+ 'contract/precondition-failed': 'предусловие If-Match операции {op} не выполнено',
158
+ 'contract/invalid-header': 'заголовок {header} операции {op} недопустим',
159
+ 'contract/handler-error': 'операция {op} завершилась с ошибкой {code}',
160
+ 'contract/client-invalid-input': 'входные данные операции {op} недопустимы; ничего не было отправлено',
161
+ 'contract/network': 'запрос операции {op} не завершился ({name})',
162
+ 'contract/cancelled': 'запрос операции {op} был отменён',
163
+ 'contract/invalid-response': 'ответ операции {op} нарушает её контракт',
164
+ 'contract/key-storage-failed': 'ключ идемпотентности операции {op} не удалось сохранить; ничего не было отправлено',
165
+ 'contract/undeclared-response': 'операция {op} вернула незадекларированный ответ (статус {status})',
166
+ 'contract/not-a-contract': 'сервер не описывает контракт {id} по своему well-known-пути',
167
+ 'contract/incompatible': 'сервер использует версию {server} контракта {id}; этот клиент использует {client}, и ни одна сторона не объявляет другую совместимой',
168
+ 'contract/host-failed': 'операция {op} завершилась с ошибкой в хосте до получения результата',
169
+ 'contract/local-handler-failed': 'операция {op} завершилась с ошибкой в обслуживающем хосте',
170
+ 'contract/unknown-operation': 'запрос не называет ни одной операции, обслуживаемой на этом канале',
171
+ 'contract/port-timeout': 'операция {op} не получила ответа на канале за {ms} мс',
172
+ 'contract/malformed-frame': 'кадр ответа операции {op} некорректен',
173
+ 'contract/channel-closed': 'канал операции {op} закрыт',
174
+ 'contract/not-a-stream': 'сервер ответил на подписку операции {op} ответом, не являющимся потоком',
175
+ 'contract/invalid-snapshot': 'операция {op} вернула снимок, нарушающий её контракт',
176
+ 'contract/seq-regression': 'поток операции {op} нарушил порядок своих seq',
177
+ 'contract/stream-error': 'поток операции {op} завершился ошибкой сервера ({code})',
178
+ 'contract/heartbeat-missed': 'поток операции {op} молчал {ms} мс',
179
+ //#endregion
141
180
  };
package/src/tr.js CHANGED
@@ -56,8 +56,9 @@ const typeName = makeTypeNamer(TYPE_NAMES);
56
56
 
57
57
  /**
58
58
  * The Turkish catalog. Covers every key of validate's `messagesEn`,
59
- * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and
60
- * the `JQ2xxx` codes reachable through `$query`.
59
+ * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
60
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
61
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
61
62
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
62
63
  */
63
64
  export const tr = {
@@ -125,4 +126,42 @@ export const tr = {
125
126
  'form/addItem': 'Öğe ekle',
126
127
  'form/removeItem': 'Öğeyi kaldır',
127
128
  //#endregion
129
+
130
+ //#region @jarenjs/contract (wire-error voice)
131
+ 'contract/not-found': 'isteğin yöntemi ve yoluyla eşleşen bir işlem yok',
132
+ 'contract/method-not-allowed': 'bu yol başka yöntemler altında sunuluyor: {allow}',
133
+ 'contract/body-too-large': '{op} işleminin istek gövdesi {limit} baytlık sınırını aşıyor',
134
+ 'contract/unsupported-media': '{op} işlemi yalnızca {media} gövdeleri kabul eder',
135
+ 'contract/malformed-json': '{op} işleminin istek gövdesi geçerli JSON değil',
136
+ 'contract/invalid-input': '{op} işleminin girdisi geçersiz',
137
+ 'contract/idempotency-key-required': '{op} işlemi bir Idempotency-Key üst bilgisi gerektirir',
138
+ 'contract/handler-failed': '{op} işlemi başarısız oldu',
139
+ 'contract/idempotency-conflict': '{op} işleminin Idempotency-Key değeri daha önceki bir istekle çakışıyor ({kind})',
140
+ 'contract/invalid-output': '{op} işlemi sözleşmesini ihlal eden bir yanıt üretti',
141
+ 'contract/malformed-path': 'istek yolu hatalı bir yüzde kaçış dizisi içeriyor',
142
+ 'contract/malformed-query': 'sorgu dizesi çözümlenemiyor',
143
+ 'contract/not-implemented': '{op} işlemi bu sunucuda uygulanmamış',
144
+ 'contract/precondition-failed': '{op} işleminin If-Match ön koşulu sağlanamadı',
145
+ 'contract/invalid-header': '{op} işleminin {header} üst bilgisi geçersiz',
146
+ 'contract/handler-error': '{op} işlemi {code} ile başarısız oldu',
147
+ 'contract/client-invalid-input': '{op} işleminin girdisi geçersiz; hiçbir şey gönderilmedi',
148
+ 'contract/network': '{op} isteği tamamlanmadı ({name})',
149
+ 'contract/cancelled': '{op} işleminin isteği iptal edildi',
150
+ 'contract/invalid-response': '{op} işleminin yanıtı sözleşmesini ihlal ediyor',
151
+ 'contract/key-storage-failed': '{op} işleminin idempotens anahtarı saklanamadı; hiçbir şey gönderilmedi',
152
+ 'contract/undeclared-response': '{op} işlemi bildirilmemiş bir yanıt döndürdü (durum {status})',
153
+ 'contract/not-a-contract': 'sunucu, well-known yolunda {id} sözleşmesini tanımlamıyor',
154
+ 'contract/incompatible': 'sunucu {id} sözleşmesinin {server} sürümünü, bu istemci {client} sürümünü konuşuyor ve iki taraf da diğerini uyumlu ilan etmiyor',
155
+ 'contract/host-failed': '{op} işlemi bir sonuç üretilmeden önce ana bilgisayarda başarısız oldu',
156
+ 'contract/local-handler-failed': '{op} işlemi sunan ana bilgisayarda başarısız oldu',
157
+ 'contract/unknown-operation': 'istek bu kanalda sunulan hiçbir işlemi adlandırmıyor',
158
+ 'contract/port-timeout': '{op} işlemi kanalda {ms} ms içinde yanıt alamadı',
159
+ 'contract/malformed-frame': '{op} işleminin yanıt çerçevesi hatalı',
160
+ 'contract/channel-closed': '{op} işleminin kanalı kapalı',
161
+ 'contract/not-a-stream': 'sunucu {op} işleminin aboneliğine akış olmayan bir yanıtla karşılık verdi',
162
+ 'contract/invalid-snapshot': '{op} işlemi sözleşmesini ihlal eden bir anlık görüntü üretti',
163
+ 'contract/seq-regression': '{op} işleminin akışı seq sırasını ihlal etti',
164
+ 'contract/stream-error': '{op} işleminin akışı bir sunucu hatasıyla sona erdi ({code})',
165
+ 'contract/heartbeat-missed': '{op} işleminin akışı {ms} ms boyunca sessiz kaldı',
166
+ //#endregion
128
167
  };
package/src/zh-tw.js CHANGED
@@ -57,8 +57,9 @@ const typeName = makeTypeNamer(TYPE_NAMES);
57
57
 
58
58
  /**
59
59
  * The zh-TW catalog. Covers every key of validate's `messagesEn`,
60
- * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, and
61
- * the `JQ2xxx` codes reachable through `$query`.
60
+ * every `form/*` key of forms' `formsMessagesEn`, `x-form/assert`, the
61
+ * `JQ2xxx` codes reachable through `$query`, and every `contract/*`
62
+ * wire-error msgid of `@jarenjs/contract`'s `contractMessagesEn`.
62
63
  * @type {Record<string, string | ((params: any, error?: object) => string)>}
63
64
  */
64
65
  export const zhTW = {
@@ -126,4 +127,42 @@ export const zhTW = {
126
127
  'form/addItem': '新增項目',
127
128
  'form/removeItem': '移除項目',
128
129
  //#endregion
130
+
131
+ //#region @jarenjs/contract (wire-error voice)
132
+ 'contract/not-found': '沒有任何操作符合請求的方法與路徑',
133
+ 'contract/method-not-allowed': '此路徑由其他方法提供:{allow}',
134
+ 'contract/body-too-large': '操作 {op} 的請求主體超過其 {limit} 位元組上限',
135
+ 'contract/unsupported-media': '操作 {op} 僅接受 {media} 主體',
136
+ 'contract/malformed-json': '操作 {op} 的請求主體不是有效的 JSON',
137
+ 'contract/invalid-input': '操作 {op} 的輸入無效',
138
+ 'contract/idempotency-key-required': '操作 {op} 需要 Idempotency-Key 標頭',
139
+ 'contract/handler-failed': '操作 {op} 失敗',
140
+ 'contract/idempotency-conflict': '操作 {op} 的 Idempotency-Key 與先前的請求衝突({kind})',
141
+ 'contract/invalid-output': '操作 {op} 產生了違反其契約的回應',
142
+ 'contract/malformed-path': '請求路徑含有格式錯誤的百分比逸出序列',
143
+ 'contract/malformed-query': '查詢字串無法解碼',
144
+ 'contract/not-implemented': '操作 {op} 未在此伺服器上實作',
145
+ 'contract/precondition-failed': '操作 {op} 的 If-Match 前置條件失敗',
146
+ 'contract/invalid-header': '操作 {op} 的 {header} 標頭無效',
147
+ 'contract/handler-error': '操作 {op} 以 {code} 失敗',
148
+ 'contract/client-invalid-input': '操作 {op} 的輸入無效;未傳送任何內容',
149
+ 'contract/network': '{op} 的請求未完成({name})',
150
+ 'contract/cancelled': '操作 {op} 的請求已取消',
151
+ 'contract/invalid-response': '操作 {op} 的回應違反其契約',
152
+ 'contract/key-storage-failed': '操作 {op} 的冪等鍵無法儲存;未傳送任何內容',
153
+ 'contract/undeclared-response': '操作 {op} 回覆了未宣告的回應(狀態 {status})',
154
+ 'contract/not-a-contract': '伺服器未在其 well-known 路徑描述契約 {id}',
155
+ 'contract/incompatible': '伺服器使用契約 {id} 的版本 {server},此用戶端使用 {client},且雙方都未宣告對方相容',
156
+ 'contract/host-failed': '操作 {op} 在產生結果之前於主機中失敗',
157
+ 'contract/local-handler-failed': '操作 {op} 在提供服務的主機中失敗',
158
+ 'contract/unknown-operation': '請求未指名此通道上提供的任何操作',
159
+ 'contract/port-timeout': '操作 {op} 在 {ms} 毫秒內未在通道上獲得回應',
160
+ 'contract/malformed-frame': '操作 {op} 的回應框架格式錯誤',
161
+ 'contract/channel-closed': '操作 {op} 的通道已關閉',
162
+ 'contract/not-a-stream': '伺服器以非串流回應回覆操作 {op} 的訂閱',
163
+ 'contract/invalid-snapshot': '操作 {op} 產生了違反其契約的快照',
164
+ 'contract/seq-regression': '操作 {op} 的串流違反了其 seq 順序',
165
+ 'contract/stream-error': '操作 {op} 的串流以伺服器錯誤結束({code})',
166
+ 'contract/heartbeat-missed': '操作 {op} 的串流沉默了 {ms} 毫秒',
167
+ //#endregion
129
168
  };