@astryxdesign/core 0.5.1 → 0.5.2-canary.11abdc7
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/CHANGELOG.md +19 -0
- package/dist/Toast/useToastGesture.d.ts.map +1 -1
- package/dist/Toast/useToastGesture.js +46 -9
- package/dist/i18n/InternationalizationContext.d.ts +2 -0
- package/dist/i18n/InternationalizationContext.d.ts.map +1 -1
- package/dist/i18n/InternationalizationContext.js +3 -1
- package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
- package/dist/i18n/InternationalizationProvider.js +3 -1
- package/dist/i18n/resolve.d.ts +1 -1
- package/dist/i18n/resolve.d.ts.map +1 -1
- package/dist/i18n/resolve.js +37 -38
- package/dist/i18n/useTranslator.d.ts.map +1 -1
- package/dist/i18n/useTranslator.js +2 -3
- package/locales/af-ZA.json +0 -4
- package/locales/ar-SA.json +0 -4
- package/locales/ca-ES.json +0 -4
- package/locales/cs-CZ.json +0 -4
- package/locales/da-DK.json +0 -4
- package/locales/de-DE.json +0 -4
- package/locales/el-GR.json +0 -4
- package/locales/es-ES.json +0 -4
- package/locales/fi-FI.json +0 -4
- package/locales/fr-FR.json +0 -4
- package/locales/he-IL.json +0 -4
- package/locales/hu-HU.json +0 -4
- package/locales/it-IT.json +0 -4
- package/locales/ja-JP.json +0 -4
- package/locales/ko-KR.json +0 -4
- package/locales/nl-NL.json +0 -4
- package/locales/no-NO.json +0 -4
- package/locales/pl-PL.json +0 -4
- package/locales/pt-BR.json +0 -4
- package/locales/pt-PT.json +0 -4
- package/locales/ro-RO.json +0 -4
- package/locales/ru-RU.json +0 -4
- package/locales/sr-SP.json +0 -4
- package/locales/sv-SE.json +0 -4
- package/locales/tr-TR.json +0 -4
- package/locales/uk-UA.json +0 -4
- package/locales/vi-VN.json +0 -4
- package/locales/zh-CN.json +0 -4
- package/locales/zh-TW.json +0 -4
- package/package.json +3 -3
- package/src/Calendar/Calendar.doc.mjs +1 -1
- package/src/CheckboxInput/CheckboxInput.doc.mjs +1 -1
- package/src/CheckboxList/CheckboxList.doc.mjs +1 -1
- package/src/ComplexSelector/ComplexSelector.doc.mjs +2 -2
- package/src/DateInput/DateInput.doc.mjs +1 -1
- package/src/DateRangeInput/DateRangeInput.doc.mjs +1 -1
- package/src/DateTimeInput/DateTimeInput.doc.mjs +1 -1
- package/src/Field/Field.doc.mjs +1 -1
- package/src/FieldStatus/FieldStatus.doc.mjs +1 -1
- package/src/FileInput/FileInput.doc.mjs +1 -1
- package/src/Indicator/Indicator.doc.mjs +1 -1
- package/src/InputGroup/InputGroup.doc.mjs +1 -1
- package/src/MultiSelector/MultiSelector.doc.mjs +1 -1
- package/src/NumberInput/NumberInput.doc.mjs +1 -1
- package/src/PowerSearch/PowerSearch.doc.mjs +1 -1
- package/src/RadioList/RadioList.doc.mjs +1 -1
- package/src/Selector/Selector.doc.mjs +1 -1
- package/src/Slider/Slider.doc.mjs +2 -2
- package/src/Switch/Switch.doc.mjs +1 -1
- package/src/TextArea/TextArea.doc.mjs +1 -1
- package/src/TextInput/TextInput.doc.mjs +1 -1
- package/src/TimeInput/TimeInput.doc.mjs +1 -1
- package/src/Toast/ToastViewport.test.tsx +118 -4
- package/src/Toast/useToastGesture.ts +61 -8
- package/src/Tokenizer/Tokenizer.doc.mjs +1 -1
- package/src/Typeahead/Typeahead.doc.mjs +1 -1
- package/src/i18n/InternationalizationContext.ts +3 -0
- package/src/i18n/InternationalizationProvider.tsx +8 -1
- package/src/i18n/__tests__/resolve.test.ts +23 -1
- package/src/i18n/resolve.ts +46 -49
- package/src/i18n/useTranslator.ts +2 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @xds/core
|
|
2
2
|
|
|
3
|
+
# 0.5.2
|
|
4
|
+
|
|
5
|
+
#### Fixes
|
|
6
|
+
|
|
7
|
+
- Rename the Data Input component category to Form Controls (#5686)
|
|
8
|
+
|
|
9
|
+
#### Performance
|
|
10
|
+
|
|
11
|
+
- Improve frequent translation lookups by pre-building locale maps (#4696)
|
|
12
|
+
|
|
13
|
+
#### Contributors
|
|
14
|
+
|
|
15
|
+
Thanks to everyone who contributed to this release:
|
|
16
|
+
|
|
17
|
+
- @ngolin
|
|
18
|
+
- @rubyycheung
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
3
22
|
# 0.5.1
|
|
4
23
|
|
|
5
24
|
#### New Features
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useToastGesture.d.ts","sourceRoot":"","sources":["../../src/Toast/useToastGesture.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAC,YAAY,IAAI,iBAAiB,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAWxE,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"useToastGesture.d.ts","sourceRoot":"","sources":["../../src/Toast/useToastGesture.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAC,YAAY,IAAI,iBAAiB,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAWxE,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAsB3C,UAAU,sBAAsB;IAC9B,SAAS,EAAE,qBAAqB,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,kBAAkB,EAAE,CAClB,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,IAAI,EAAE,WAAW,KACd,OAAO,CAAC;CACd;AAED,UAAU,oBAAoB;IAC5B,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAClE,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAClE,WAAW,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAChE,eAAe,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IACpE,oBAAoB,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;CAC1E;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC1C,QAAQ,EAAE,oBAAoB,CAAC;CAChC;AAcD,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,OAAO,EACP,aAAa,EACb,aAAa,EACb,UAAU,EACV,WAAW,EACX,OAAO,EACP,kBAAkB,GACnB,EAAE,sBAAsB,GAAG,qBAAqB,CA+ThD"}
|
|
@@ -62,6 +62,7 @@ export function useToastGesture({
|
|
|
62
62
|
}
|
|
63
63
|
const surfaceSize = Math.max(root.getBoundingClientRect().height, 1);
|
|
64
64
|
gestureRef.current = {
|
|
65
|
+
source: point.source,
|
|
65
66
|
pointerId: point.pointerId,
|
|
66
67
|
startX: point.clientX,
|
|
67
68
|
startY: point.clientY,
|
|
@@ -77,7 +78,7 @@ export function useToastGesture({
|
|
|
77
78
|
const moveGesture = useCallback((point, preventDefault, releaseCapture) => {
|
|
78
79
|
const state = gestureRef.current;
|
|
79
80
|
const root = rootRef.current;
|
|
80
|
-
if (!state || !root || point.pointerId !== state.pointerId) {
|
|
81
|
+
if (!state || !root || point.source !== state.source || point.pointerId !== state.pointerId) {
|
|
81
82
|
return;
|
|
82
83
|
}
|
|
83
84
|
const deltaX = point.clientX - state.startX;
|
|
@@ -111,7 +112,7 @@ export function useToastGesture({
|
|
|
111
112
|
const endGesture = useCallback(point => {
|
|
112
113
|
const state = gestureRef.current;
|
|
113
114
|
const root = rootRef.current;
|
|
114
|
-
if (!state || !root || point.pointerId !== state.pointerId) {
|
|
115
|
+
if (!state || !root || point.source !== state.source || point.pointerId !== state.pointerId) {
|
|
115
116
|
return;
|
|
116
117
|
}
|
|
117
118
|
const travel = Math.max(0, (point.clientY - state.startY) * state.direction);
|
|
@@ -120,6 +121,10 @@ export function useToastGesture({
|
|
|
120
121
|
gestureRef.current = null;
|
|
121
122
|
root.style.removeProperty('transition-duration');
|
|
122
123
|
if (isDismissed) {
|
|
124
|
+
// The exit animation owns the final translation. Clear the live-drag
|
|
125
|
+
// transform/fade/scale first so a standalone Toast does not remain
|
|
126
|
+
// partially translated or faded after its dismiss callback fires.
|
|
127
|
+
clearTransientStyles(root);
|
|
123
128
|
root.style.setProperty('--_toast-swipe-exit-y', state.direction === 1 ? SWIPE_EXIT_DISTANCE : `calc(-1 * ${SWIPE_EXIT_DISTANCE})`);
|
|
124
129
|
dismiss();
|
|
125
130
|
return;
|
|
@@ -130,7 +135,12 @@ export function useToastGesture({
|
|
|
130
135
|
}
|
|
131
136
|
}, [dismiss, resumeTimer]);
|
|
132
137
|
const handlePointerDown = useCallback(event => {
|
|
133
|
-
if (event.pointerType === 'pen' && (event.button == null || event.button === 0) && beginGesture(
|
|
138
|
+
if (event.pointerType === 'pen' && (event.button == null || event.button === 0) && beginGesture({
|
|
139
|
+
source: 'pen',
|
|
140
|
+
pointerId: event.pointerId,
|
|
141
|
+
clientX: event.clientX,
|
|
142
|
+
clientY: event.clientY
|
|
143
|
+
}, event.target)) {
|
|
134
144
|
rootRef.current?.setPointerCapture?.(event.pointerId);
|
|
135
145
|
}
|
|
136
146
|
}, [beginGesture]);
|
|
@@ -138,17 +148,27 @@ export function useToastGesture({
|
|
|
138
148
|
if (event.pointerType !== 'pen') {
|
|
139
149
|
return;
|
|
140
150
|
}
|
|
141
|
-
moveGesture(
|
|
151
|
+
moveGesture({
|
|
152
|
+
source: 'pen',
|
|
153
|
+
pointerId: event.pointerId,
|
|
154
|
+
clientX: event.clientX,
|
|
155
|
+
clientY: event.clientY
|
|
156
|
+
}, () => event.preventDefault(), () => rootRef.current?.releasePointerCapture?.(event.pointerId));
|
|
142
157
|
}, [moveGesture]);
|
|
143
158
|
const handlePointerUp = useCallback(event => {
|
|
144
159
|
if (event.pointerType !== 'pen') {
|
|
145
160
|
return;
|
|
146
161
|
}
|
|
147
162
|
rootRef.current?.releasePointerCapture?.(event.pointerId);
|
|
148
|
-
endGesture(
|
|
163
|
+
endGesture({
|
|
164
|
+
source: 'pen',
|
|
165
|
+
pointerId: event.pointerId,
|
|
166
|
+
clientX: event.clientX,
|
|
167
|
+
clientY: event.clientY
|
|
168
|
+
});
|
|
149
169
|
}, [endGesture]);
|
|
150
170
|
const handlePointerCancel = useCallback(event => {
|
|
151
|
-
if (event.pointerType === 'pen' && gestureRef.current?.pointerId === event.pointerId) {
|
|
171
|
+
if (event.pointerType === 'pen' && gestureRef.current?.source === 'pen' && gestureRef.current?.pointerId === event.pointerId) {
|
|
152
172
|
resetGesture(true);
|
|
153
173
|
}
|
|
154
174
|
}, [resetGesture]);
|
|
@@ -158,21 +178,34 @@ export function useToastGesture({
|
|
|
158
178
|
return;
|
|
159
179
|
}
|
|
160
180
|
const point = touch => ({
|
|
181
|
+
source: 'touch',
|
|
161
182
|
pointerId: touch.identifier,
|
|
162
183
|
clientX: touch.clientX,
|
|
163
184
|
clientY: touch.clientY
|
|
164
185
|
});
|
|
165
186
|
const changedTouch = event => {
|
|
166
|
-
const
|
|
187
|
+
const state = gestureRef.current;
|
|
188
|
+
const pointerId = state?.source === 'touch' ? state.pointerId : null;
|
|
167
189
|
return pointerId == null ? undefined : [...event.changedTouches].find(touch => touch.identifier === pointerId);
|
|
168
190
|
};
|
|
169
191
|
const handleTouchStart = event => {
|
|
170
|
-
|
|
171
|
-
|
|
192
|
+
if (event.touches?.length !== 1) {
|
|
193
|
+
// A second contact means the browser may be handling pinch zoom or
|
|
194
|
+
// two-finger scrolling. Abandon any accepted one-finger swipe before
|
|
195
|
+
// touchmove can suppress that native gesture.
|
|
196
|
+
resetGesture(true);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
const touch = event.changedTouches[0];
|
|
200
|
+
if (touch != null) {
|
|
172
201
|
beginGesture(point(touch), event.target);
|
|
173
202
|
}
|
|
174
203
|
};
|
|
175
204
|
const handleTouchMove = event => {
|
|
205
|
+
if (event.touches?.length !== 1) {
|
|
206
|
+
resetGesture(true);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
176
209
|
const touch = changedTouch(event);
|
|
177
210
|
if (touch) {
|
|
178
211
|
moveGesture(point(touch), () => {
|
|
@@ -183,6 +216,10 @@ export function useToastGesture({
|
|
|
183
216
|
}
|
|
184
217
|
};
|
|
185
218
|
const handleTouchEnd = event => {
|
|
219
|
+
if (event.touches.length > 0) {
|
|
220
|
+
resetGesture(true);
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
186
223
|
const touch = changedTouch(event);
|
|
187
224
|
if (touch) {
|
|
188
225
|
endGesture(point(touch));
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { getResolve } from './resolve';
|
|
1
2
|
import type { Locale, MessagesByLocale, Overrides } from './types';
|
|
2
3
|
export interface InternationalizationContextValue {
|
|
3
4
|
locale: Locale;
|
|
4
5
|
direction: 'ltr' | 'rtl';
|
|
5
6
|
messages: MessagesByLocale;
|
|
6
7
|
overrides?: Overrides;
|
|
8
|
+
translate: ReturnType<typeof getResolve>;
|
|
7
9
|
}
|
|
8
10
|
/**
|
|
9
11
|
* Default value falls through to the shipped en catalog in resolve().
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternationalizationContext.d.ts","sourceRoot":"","sources":["../../src/i18n/InternationalizationContext.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAC,MAAM,SAAS,CAAC;AAEjE,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,KAAK,GAAG,KAAK,CAAC;IACzB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"InternationalizationContext.d.ts","sourceRoot":"","sources":["../../src/i18n/InternationalizationContext.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAC,UAAU,EAAC,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAC,MAAM,SAAS,CAAC;AAEjE,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,KAAK,GAAG,KAAK,CAAC;IACzB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;CAC1C;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,2DAMpC,CAAC"}
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
* - /packages/core/src/i18n/index.ts
|
|
23
23
|
*/
|
|
24
24
|
import { createContext } from 'react';
|
|
25
|
+
import { getResolve } from "./resolve.js";
|
|
25
26
|
/**
|
|
26
27
|
* Default value falls through to the shipped en catalog in resolve().
|
|
27
28
|
* A consumer that doesn't render a provider still gets English defaults.
|
|
@@ -29,6 +30,7 @@ import { createContext } from 'react';
|
|
|
29
30
|
export const InternationalizationContext = /*#__PURE__*/createContext({
|
|
30
31
|
locale: 'en',
|
|
31
32
|
direction: 'ltr',
|
|
32
|
-
messages: {}
|
|
33
|
+
messages: {},
|
|
34
|
+
translate: getResolve('en', {})
|
|
33
35
|
});
|
|
34
36
|
InternationalizationContext.displayName = 'InternationalizationContext';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternationalizationProvider.d.ts","sourceRoot":"","sources":["../../src/i18n/InternationalizationProvider.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAU,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAG9C,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"InternationalizationProvider.d.ts","sourceRoot":"","sources":["../../src/i18n/InternationalizationProvider.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAU,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAG9C,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAC,MAAM,SAAS,CAAC;AAGjE,MAAM,WAAW,iCAAiC;IAChD;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,EAC3C,MAAM,EACN,QAAQ,EACR,SAAS,EACT,GAAG,EACH,QAAQ,GACT,EAAE,iCAAiC,+BAiBnC;yBAvBe,4BAA4B"}
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
import { useMemo } from 'react';
|
|
22
22
|
import { InternationalizationContext } from "./InternationalizationContext.js";
|
|
23
23
|
import { getLocaleDirection } from "./getLocaleDirection.js";
|
|
24
|
+
import { getResolve } from "./resolve.js";
|
|
24
25
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
25
26
|
/**
|
|
26
27
|
* Provides locale + additional messages + overrides to all astryx
|
|
@@ -38,7 +39,8 @@ export function InternationalizationProvider({
|
|
|
38
39
|
locale,
|
|
39
40
|
direction,
|
|
40
41
|
messages: messages ?? {},
|
|
41
|
-
overrides
|
|
42
|
+
overrides,
|
|
43
|
+
translate: getResolve(locale, messages ?? {}, overrides)
|
|
42
44
|
}), [locale, direction, messages, overrides]);
|
|
43
45
|
return /*#__PURE__*/_jsx(InternationalizationContext, {
|
|
44
46
|
value: value,
|
package/dist/i18n/resolve.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ import type { Locale, MessagesByLocale, Overrides } from './types';
|
|
|
13
13
|
* shipped en catalog separately as the final source-of-truth.
|
|
14
14
|
*/
|
|
15
15
|
export declare function resolveLocaleChain(locale: Locale): Locale[];
|
|
16
|
-
export declare function
|
|
16
|
+
export declare function getResolve(locale: Locale, messages: MessagesByLocale, overrides?: Overrides): (key: string, values: Record<string, unknown> | undefined) => string;
|
|
17
17
|
/**
|
|
18
18
|
* Reset internal caches. Test-only.
|
|
19
19
|
* @internal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/i18n/resolve.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAU,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAC,MAAM,SAAS,CAAC;AAwB1E;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAc3D;
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/i18n/resolve.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAU,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAC,MAAM,SAAS,CAAC;AAwB1E;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAc3D;AAkCD,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,CAAC,EAAE,SAAS,IAIb,KAAK,MAAM,EAAE,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,YA0BjE;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAGtC"}
|
package/dist/i18n/resolve.js
CHANGED
|
@@ -69,55 +69,54 @@ export function resolveLocaleChain(locale) {
|
|
|
69
69
|
}
|
|
70
70
|
return chain;
|
|
71
71
|
}
|
|
72
|
-
function
|
|
72
|
+
function getLookup(locale, messages, overrides) {
|
|
73
|
+
const lookup = {};
|
|
73
74
|
const chain = resolveLocaleChain(locale);
|
|
74
|
-
|
|
75
75
|
// 1 + 2. Overrides (most specific to least specific in the chain)
|
|
76
76
|
if (overrides !== undefined) {
|
|
77
77
|
for (const tag of chain) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
if (overrides[tag]) {
|
|
79
|
+
for (const [key, value] of Object.entries(overrides[tag])) {
|
|
80
|
+
if (lookup[key] === undefined && value !== null) {
|
|
81
|
+
lookup[key] = value;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
81
84
|
}
|
|
82
85
|
}
|
|
83
86
|
}
|
|
84
|
-
|
|
85
|
-
// 3 + 4. Shipped catalogs (most specific to least specific)
|
|
86
87
|
for (const tag of chain) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
if (messages[tag]) {
|
|
89
|
+
for (const [key, value] of Object.entries(messages[tag])) {
|
|
90
|
+
if (lookup[key] === undefined && value?.defaultMessage !== null) {
|
|
91
|
+
lookup[key] = value?.defaultMessage;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
90
94
|
}
|
|
91
95
|
}
|
|
92
|
-
|
|
93
|
-
// 5. Shipped en catalog — always present
|
|
94
|
-
const enEntry = EN_CATALOG[key];
|
|
95
|
-
if (enEntry !== undefined) {
|
|
96
|
-
return enEntry.defaultMessage;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// 6. Nothing found
|
|
100
|
-
return null;
|
|
96
|
+
return lookup;
|
|
101
97
|
}
|
|
102
|
-
export function
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
98
|
+
export function getResolve(locale, messages, overrides) {
|
|
99
|
+
const lookup = getLookup(locale, messages, overrides);
|
|
100
|
+
return (key, values) => {
|
|
101
|
+
const result = lookup[key] ?? EN_CATALOG[key]?.defaultMessage;
|
|
102
|
+
if (result === undefined) {
|
|
103
|
+
// Fires ONLY when a key is missing from every source including the
|
|
104
|
+
// shipped `en` catalog — a real bug (typo, stale catalog, deleted key).
|
|
105
|
+
// Fallback to `en` from a non-en locale is expected and stays silent,
|
|
106
|
+
// matching the FormatJS / i18next default.
|
|
107
|
+
warnOnce(`astryx-i18n:${locale}::${key}`, 'astryx-i18n', `missing key: ${key} (locale: ${locale})`);
|
|
108
|
+
return key;
|
|
109
|
+
}
|
|
110
|
+
if (values === undefined) {
|
|
111
|
+
// Static string — skip the parser entirely for the common case
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
const formatted = getFormatter(result, locale).format(values);
|
|
115
|
+
// IntlMessageFormat.format returns string | (string | React elements) — we
|
|
116
|
+
// only ever pass string values so it will be a string; assert for the type
|
|
117
|
+
// system.
|
|
118
|
+
return formatted;
|
|
119
|
+
};
|
|
121
120
|
}
|
|
122
121
|
|
|
123
122
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTranslator.d.ts","sourceRoot":"","sources":["../../src/i18n/useTranslator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useTranslator.d.ts","sourceRoot":"","sources":["../../src/i18n/useTranslator.ts"],"names":[],"mappings":"AAwBA,MAAM,MAAM,YAAY,GAAG,CACzB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,MAAM,CAAC;AAEZ;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,IAAI,YAAY,CAG5C"}
|
|
@@ -18,9 +18,8 @@
|
|
|
18
18
|
* - /packages/core/src/i18n/index.ts
|
|
19
19
|
* - /packages/core/src/i18n/t.client.ts
|
|
20
20
|
*/
|
|
21
|
-
import { use
|
|
21
|
+
import { use } from 'react';
|
|
22
22
|
import { InternationalizationContext } from "./InternationalizationContext.js";
|
|
23
|
-
import { resolve } from "./resolve.js";
|
|
24
23
|
/**
|
|
25
24
|
* Returns a translator function bound to the current provider's locale.
|
|
26
25
|
* Safe to call from event handlers and effects.
|
|
@@ -35,5 +34,5 @@ import { resolve } from "./resolve.js";
|
|
|
35
34
|
*/
|
|
36
35
|
export function useTranslator() {
|
|
37
36
|
const ctx = use(InternationalizationContext);
|
|
38
|
-
return
|
|
37
|
+
return ctx.translate;
|
|
39
38
|
}
|
package/locales/af-ZA.json
CHANGED
|
@@ -623,10 +623,6 @@
|
|
|
623
623
|
"defaultMessage": "Kies 'n datum",
|
|
624
624
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
625
625
|
},
|
|
626
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
627
|
-
"defaultMessage": "Kies datum",
|
|
628
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
629
|
-
},
|
|
630
626
|
"@astryx.link.newTab": {
|
|
631
627
|
"defaultMessage": "(maak in nuwe oortjie oop)",
|
|
632
628
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/ar-SA.json
CHANGED
|
@@ -651,10 +651,6 @@
|
|
|
651
651
|
"defaultMessage": "حدّد تاريخًا",
|
|
652
652
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
653
653
|
},
|
|
654
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
655
|
-
"defaultMessage": "اختر التاريخ",
|
|
656
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
657
|
-
},
|
|
658
654
|
"@astryx.link.newTab": {
|
|
659
655
|
"defaultMessage": "(يُفتح في علامة تبويب جديدة)",
|
|
660
656
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/ca-ES.json
CHANGED
|
@@ -643,10 +643,6 @@
|
|
|
643
643
|
"defaultMessage": "Selecciona una data",
|
|
644
644
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
645
645
|
},
|
|
646
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
647
|
-
"defaultMessage": "Tria una data",
|
|
648
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
649
|
-
},
|
|
650
646
|
"@astryx.link.newTab": {
|
|
651
647
|
"defaultMessage": "(s’obre en una pestanya nova)",
|
|
652
648
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/cs-CZ.json
CHANGED
|
@@ -647,10 +647,6 @@
|
|
|
647
647
|
"defaultMessage": "Vyberte datum",
|
|
648
648
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
649
649
|
},
|
|
650
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
651
|
-
"defaultMessage": "Zvolit datum",
|
|
652
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
653
|
-
},
|
|
654
650
|
"@astryx.link.newTab": {
|
|
655
651
|
"defaultMessage": "(otevře se na nové kartě)",
|
|
656
652
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/da-DK.json
CHANGED
|
@@ -639,10 +639,6 @@
|
|
|
639
639
|
"defaultMessage": "Vælg en dato",
|
|
640
640
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
641
641
|
},
|
|
642
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
643
|
-
"defaultMessage": "Vælg dato",
|
|
644
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
645
|
-
},
|
|
646
642
|
"@astryx.link.newTab": {
|
|
647
643
|
"defaultMessage": "(åbner i ny fane)",
|
|
648
644
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/de-DE.json
CHANGED
|
@@ -639,10 +639,6 @@
|
|
|
639
639
|
"defaultMessage": "Datum auswählen",
|
|
640
640
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
641
641
|
},
|
|
642
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
643
|
-
"defaultMessage": "Datum auswählen",
|
|
644
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
645
|
-
},
|
|
646
642
|
"@astryx.link.newTab": {
|
|
647
643
|
"defaultMessage": "(wird in neuem Tab geöffnet)",
|
|
648
644
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/el-GR.json
CHANGED
|
@@ -647,10 +647,6 @@
|
|
|
647
647
|
"defaultMessage": "Επιλέξτε ημερομηνία",
|
|
648
648
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
649
649
|
},
|
|
650
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
651
|
-
"defaultMessage": "Επιλογή ημερομηνίας",
|
|
652
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
653
|
-
},
|
|
654
650
|
"@astryx.link.newTab": {
|
|
655
651
|
"defaultMessage": "(ανοίγει σε νέα καρτέλα)",
|
|
656
652
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/es-ES.json
CHANGED
|
@@ -647,10 +647,6 @@
|
|
|
647
647
|
"defaultMessage": "Selecciona una fecha",
|
|
648
648
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
649
649
|
},
|
|
650
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
651
|
-
"defaultMessage": "Elige una fecha",
|
|
652
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
653
|
-
},
|
|
654
650
|
"@astryx.link.newTab": {
|
|
655
651
|
"defaultMessage": "(se abre en una pestaña nueva)",
|
|
656
652
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/fi-FI.json
CHANGED
|
@@ -647,10 +647,6 @@
|
|
|
647
647
|
"defaultMessage": "Valitse päivämäärä",
|
|
648
648
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
649
649
|
},
|
|
650
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
651
|
-
"defaultMessage": "Valitse päivämäärä",
|
|
652
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
653
|
-
},
|
|
654
650
|
"@astryx.link.newTab": {
|
|
655
651
|
"defaultMessage": "(avautuu uuteen välilehteen)",
|
|
656
652
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/fr-FR.json
CHANGED
|
@@ -615,10 +615,6 @@
|
|
|
615
615
|
"defaultMessage": "Sélectionner une date",
|
|
616
616
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
617
617
|
},
|
|
618
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
619
|
-
"defaultMessage": "Choisir une date",
|
|
620
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
621
|
-
},
|
|
622
618
|
"@astryx.link.newTab": {
|
|
623
619
|
"defaultMessage": "(ouvre un nouvel onglet)",
|
|
624
620
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/he-IL.json
CHANGED
|
@@ -647,10 +647,6 @@
|
|
|
647
647
|
"defaultMessage": "בחירת תאריך",
|
|
648
648
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
649
649
|
},
|
|
650
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
651
|
-
"defaultMessage": "בחירת תאריך",
|
|
652
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
653
|
-
},
|
|
654
650
|
"@astryx.link.newTab": {
|
|
655
651
|
"defaultMessage": "(נפתח בכרטיסייה חדשה)",
|
|
656
652
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/hu-HU.json
CHANGED
|
@@ -647,10 +647,6 @@
|
|
|
647
647
|
"defaultMessage": "Válasszon dátumot",
|
|
648
648
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
649
649
|
},
|
|
650
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
651
|
-
"defaultMessage": "Dátum kiválasztása",
|
|
652
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
653
|
-
},
|
|
654
650
|
"@astryx.link.newTab": {
|
|
655
651
|
"defaultMessage": "(új lapon nyílik meg)",
|
|
656
652
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/it-IT.json
CHANGED
|
@@ -639,10 +639,6 @@
|
|
|
639
639
|
"defaultMessage": "Seleziona una data",
|
|
640
640
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
641
641
|
},
|
|
642
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
643
|
-
"defaultMessage": "Scegli una data",
|
|
644
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
645
|
-
},
|
|
646
642
|
"@astryx.link.newTab": {
|
|
647
643
|
"defaultMessage": "(si apre in una nuova scheda)",
|
|
648
644
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/ja-JP.json
CHANGED
|
@@ -651,10 +651,6 @@
|
|
|
651
651
|
"defaultMessage": "日付を選択",
|
|
652
652
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
653
653
|
},
|
|
654
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
655
|
-
"defaultMessage": "日付を選択",
|
|
656
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
657
|
-
},
|
|
658
654
|
"@astryx.link.newTab": {
|
|
659
655
|
"defaultMessage": "(新しいタブで開く)",
|
|
660
656
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/ko-KR.json
CHANGED
|
@@ -647,10 +647,6 @@
|
|
|
647
647
|
"defaultMessage": "날짜 선택",
|
|
648
648
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
649
649
|
},
|
|
650
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
651
|
-
"defaultMessage": "날짜 선택",
|
|
652
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
653
|
-
},
|
|
654
650
|
"@astryx.link.newTab": {
|
|
655
651
|
"defaultMessage": "(새 탭에서 열림)",
|
|
656
652
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/nl-NL.json
CHANGED
|
@@ -615,10 +615,6 @@
|
|
|
615
615
|
"defaultMessage": "Selecteer een datum",
|
|
616
616
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
617
617
|
},
|
|
618
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
619
|
-
"defaultMessage": "Datum kiezen",
|
|
620
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
621
|
-
},
|
|
622
618
|
"@astryx.link.newTab": {
|
|
623
619
|
"defaultMessage": "(opent in nieuw tabblad)",
|
|
624
620
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/no-NO.json
CHANGED
|
@@ -643,10 +643,6 @@
|
|
|
643
643
|
"defaultMessage": "Velg en dato",
|
|
644
644
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
645
645
|
},
|
|
646
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
647
|
-
"defaultMessage": "Velg dato",
|
|
648
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
649
|
-
},
|
|
650
646
|
"@astryx.link.newTab": {
|
|
651
647
|
"defaultMessage": "(åpnes i ny fane)",
|
|
652
648
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/pl-PL.json
CHANGED
|
@@ -639,10 +639,6 @@
|
|
|
639
639
|
"defaultMessage": "Wybierz datę",
|
|
640
640
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
641
641
|
},
|
|
642
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
643
|
-
"defaultMessage": "Wybierz datę",
|
|
644
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
645
|
-
},
|
|
646
642
|
"@astryx.link.newTab": {
|
|
647
643
|
"defaultMessage": "(otwiera się w nowej karcie)",
|
|
648
644
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/pt-BR.json
CHANGED
|
@@ -643,10 +643,6 @@
|
|
|
643
643
|
"defaultMessage": "Selecione uma data",
|
|
644
644
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
645
645
|
},
|
|
646
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
647
|
-
"defaultMessage": "Escolha uma data",
|
|
648
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
649
|
-
},
|
|
650
646
|
"@astryx.link.newTab": {
|
|
651
647
|
"defaultMessage": "(abre em uma nova guia)",
|
|
652
648
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/pt-PT.json
CHANGED
|
@@ -643,10 +643,6 @@
|
|
|
643
643
|
"defaultMessage": "Selecione uma data",
|
|
644
644
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
645
645
|
},
|
|
646
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
647
|
-
"defaultMessage": "Escolha uma data",
|
|
648
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
649
|
-
},
|
|
650
646
|
"@astryx.link.newTab": {
|
|
651
647
|
"defaultMessage": "(abre num novo separador)",
|
|
652
648
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|
package/locales/ro-RO.json
CHANGED
|
@@ -643,10 +643,6 @@
|
|
|
643
643
|
"defaultMessage": "Selectează o dată",
|
|
644
644
|
"description": "Grey placeholder inside an empty DateTimeInput field. Note: the English says only \"date\" though the field is date+time — do not add \"and time\" unless natural."
|
|
645
645
|
},
|
|
646
|
-
"@astryx.dateTimeInput.dialogLabel": {
|
|
647
|
-
"defaultMessage": "Alege data",
|
|
648
|
-
"description": "Screen-reader-only accessible name for the DateTimeInput picker dialog. Same English-only \"date\" phrasing as the placeholder — don't add \"and time\" unless natural."
|
|
649
|
-
},
|
|
650
646
|
"@astryx.link.newTab": {
|
|
651
647
|
"defaultMessage": "(se deschide într-o filă nouă)",
|
|
652
648
|
"description": "Visually-hidden (screen-reader-only) suffix appended to a Link's accessible name when it opens in a new tab. Example: `Documentation (opens in new tab)`."
|