Skip to content

Commit 9c74925

Browse files
✨ feat(i18n): remove translation on tab keys
1 parent cbca2e4 commit 9c74925

File tree

51 files changed

+156
-112
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+156
-112
lines changed

.gitignore

+3-1
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,6 @@ dist/
4141

4242
*.sqlite
4343

44-
src/translations/locales/*.js
44+
src/translations/locales/*.js
45+
46+
.swc

src/__tests__/roles/create.spec.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ describe("pages/roles/create", () => {
3232
await userEvent.click(screen.getByRole("button", { name: "Create Role" }));
3333

3434
expect(await screen.findByRole("status")).toHaveTextContent(
35-
"Role Created SuccessfullyClick here to view role"
35+
"Role Created SuccessfullyClick here to view details"
3636
);
3737

3838
await userEvent.click(
39-
screen.getByRole("button", { name: "Click here to view role" })
39+
screen.getByRole("button", { name: "Click here to view details" })
4040
);
4141

4242
expect(pushMock).toHaveBeenCalledWith("/roles/some-new-role");

src/__tests__/users/create.spec.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ describe("pages/users/create", () => {
3838
await userEvent.click(screen.getByRole("button", { name: "Create User" }));
3939

4040
expect(await screen.findByRole("status")).toHaveTextContent(
41-
"User Created SuccessfullyClick here to view user"
41+
"User Created SuccessfullyClick here to view details"
4242
);
4343

4444
await userEvent.click(
45-
screen.getByRole("button", { name: "Click here to view user" })
45+
screen.getByRole("button", { name: "Click here to view details" })
4646
);
4747

4848
expect(pushMock).toHaveBeenCalledWith("/users/someusername");

src/frontend/components/ApplicationRoot/index.tsx

+3-6
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ import { Toaster } from "react-hot-toast";
33
import { QueryProvider } from "frontend/lib/data/QueryClient";
44
import { ThemeContextProvider } from "frontend/design-system/theme/Context";
55
import { GlobalStyles } from "frontend/design-system/globals";
6-
import { useLinguiInit } from "translations/utils";
7-
import { I18nProvider } from "@lingui/react";
6+
import { LinguiProvider } from "translations/utils";
87
import { Messages } from "@lingui/core";
98

109
export function ApplicationRoot({
@@ -14,15 +13,13 @@ export function ApplicationRoot({
1413
children: ReactNode;
1514
translation?: Messages;
1615
}) {
17-
const initializedI18n = useLinguiInit(translation);
18-
1916
return (
20-
<I18nProvider i18n={initializedI18n}>
17+
<LinguiProvider translation={translation}>
2118
<QueryProvider>
2219
<Toaster />
2320
<GlobalStyles />
2421
<ThemeContextProvider>{children}</ThemeContextProvider>
2522
</QueryProvider>
26-
</I18nProvider>
23+
</LinguiProvider>
2724
);
2825
}

src/frontend/design-system/components/ConfirmAlert/index.tsx

+40-33
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { Typo } from "frontend/design-system/primitives/Typo";
55
import { Spacer } from "frontend/design-system/primitives/Spacer";
66
import { Stack } from "frontend/design-system/primitives/Stack";
77
import { msg, t } from "@lingui/macro";
8+
import { LinguiProvider } from "translations/utils";
89
import { Z_INDEXES } from "../../constants/zIndex";
910
import { SoftButton } from "../Button/SoftButton";
1011
import { SHADOW_CSS } from "../Card";
@@ -57,40 +58,46 @@ export interface IPresentationProps extends IProps {
5758

5859
export function Presentation({ action, title, onClose }: IPresentationProps) {
5960
return (
60-
<Overlay
61-
role="alertdialog"
62-
aria-modal="true"
63-
aria-labelledby="confirm_delete_label"
64-
aria-describedby="confirm_delete_description"
65-
tabIndex={-1}
66-
>
67-
<Body>
68-
<Typo.MD $weight="bold">
69-
<span id="confirm_delete_label"> {title} </span>
70-
</Typo.MD>
71-
<Spacer size="xl" />
72-
<Typo.XS>
73-
<span id="confirm_delete_description">
74-
{t`Are you sure you want to do this?`}
75-
</span>
76-
</Typo.XS>
77-
<Spacer size="xxl" />
78-
<Stack $justify="center" $spacing={8}>
79-
<SoftButton action={onClose} label={msg`Cancel`} systemIcon={null} />
61+
<LinguiProvider>
62+
<Overlay
63+
role="alertdialog"
64+
aria-modal="true"
65+
aria-labelledby="confirm_delete_label"
66+
aria-describedby="confirm_delete_description"
67+
tabIndex={-1}
68+
>
69+
<Body>
70+
<Typo.MD $weight="bold">
71+
<span id="confirm_delete_label"> {title} </span>
72+
</Typo.MD>
73+
<Spacer size="xl" />
74+
<Typo.XS>
75+
<span id="confirm_delete_description">
76+
{t`Are you sure you want to do this?`}
77+
</span>
78+
</Typo.XS>
79+
<Spacer size="xxl" />
80+
<Stack $justify="center" $spacing={8}>
81+
<SoftButton
82+
action={onClose}
83+
label={msg`Cancel`}
84+
systemIcon={null}
85+
/>
8086

81-
<SoftButton
82-
color="danger"
83-
size="sm"
84-
systemIcon={null}
85-
label={msg`Confirm`}
86-
action={() => {
87-
action();
88-
onClose();
89-
}}
90-
/>
91-
</Stack>
92-
</Body>
93-
</Overlay>
87+
<SoftButton
88+
color="danger"
89+
size="sm"
90+
systemIcon={null}
91+
label={msg`Confirm`}
92+
action={() => {
93+
action();
94+
onClose();
95+
}}
96+
/>
97+
</Stack>
98+
</Body>
99+
</Overlay>
100+
</LinguiProvider>
94101
);
95102
}
96103

src/frontend/design-system/components/Table/filters/__tests__/index.spec.tsx

+15-12
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
IColumnFilterBag,
77
TableFilterType,
88
} from "shared/types/data";
9+
import { ApplicationRoot } from "frontend/components/ApplicationRoot";
910
import { TableFilter } from "..";
1011

1112
const setFilterValueJestFn = jest.fn();
@@ -19,18 +20,20 @@ function TestComponent({
1920
}) {
2021
const [state, setState] = useState(defaultValue);
2122
return (
22-
<TableFilter
23-
type={type}
24-
column={{
25-
setFilterValue: (value) => {
26-
setState(value);
27-
setFilterValueJestFn(value);
28-
},
29-
getFilterValue: () => state,
30-
}}
31-
view="Test Column"
32-
debounceWait={100}
33-
/>
23+
<ApplicationRoot>
24+
<TableFilter
25+
type={type}
26+
column={{
27+
setFilterValue: (value) => {
28+
setState(value);
29+
setFilterValueJestFn(value);
30+
},
31+
getFilterValue: () => state,
32+
}}
33+
view="Test Column"
34+
debounceWait={100}
35+
/>
36+
</ApplicationRoot>
3437
);
3538
}
3639

src/frontend/design-system/components/Tabs/Tabs.spec.tsx

+3
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,17 @@ import { Tabs } from ".";
44
const TAB_CONTENT = [
55
{
66
label: { message: `Foo Label`, id: "foo-label" },
7+
id: "foo",
78
content: <>Foo Content</>,
89
},
910
{
1011
label: { message: `Bar Label`, id: "bar-label" },
12+
id: "bar",
1113
content: <>Bar Content</>,
1214
},
1315
{
1416
label: { message: `Baz Label`, id: "baz-label" },
17+
id: "baz",
1518
content: <>Baz Content</>,
1619
},
1720
];

src/frontend/design-system/components/Tabs/index.tsx

+15-15
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ const Root = styled.div<{ $padContent: boolean }>`
6262
export interface IProps {
6363
contents: {
6464
label: MessageDescriptor;
65-
overrideLabel?: MessageDescriptor;
65+
id: string;
6666
disabled?: boolean;
6767
content: ReactNode;
6868
}[];
@@ -82,28 +82,28 @@ export function Tabs({
8282
const { _ } = useLingui();
8383

8484
const [activeTab, setActiveTab$1] = useState<string>(
85-
sluggify(currentTab || _(contents[0].label))
85+
sluggify(currentTab || _(contents[0].id))
8686
);
8787

88-
const setActiveTab = (label: string) => {
89-
setActiveTab$1(sluggify(label));
88+
const setActiveTab = (id: string) => {
89+
setActiveTab$1(id);
9090
};
9191

9292
useEffect(() => {
9393
if (currentTab) {
9494
setActiveTab(currentTab);
9595
} else {
96-
setActiveTab(_(contents[0].label));
96+
setActiveTab(_(contents[0].id));
9797
}
98-
}, [currentTab, JSON.stringify(contents.map((content) => content.label))]);
98+
}, [currentTab, JSON.stringify(contents.map((content) => content.id))]);
9999

100-
const changeTab = (tabLabel: string | null) => {
101-
if (!tabLabel) {
100+
const changeTab = (tabId: string | null) => {
101+
if (!tabId) {
102102
return;
103103
}
104-
if (activeTab !== tabLabel) {
105-
setActiveTab(tabLabel);
106-
onChange?.(tabLabel);
104+
if (activeTab !== tabId) {
105+
setActiveTab(tabId);
106+
onChange?.(tabId);
107107
}
108108
};
109109

@@ -115,11 +115,11 @@ export function Tabs({
115115
onSelect={changeTab}
116116
mountOnEnter={lazy}
117117
>
118-
{contents.map(({ label, overrideLabel, disabled, content }) => (
118+
{contents.map(({ label, id, disabled, content }) => (
119119
<RBTab
120-
eventKey={sluggify(_(label))}
121-
key={sluggify(_(label))}
122-
title={_(overrideLabel || label)}
120+
eventKey={id}
121+
key={id}
122+
title={_(label)}
123123
tabClassName={disabled ? "disabled" : ""}
124124
>
125125
{content}

src/frontend/lib/crud-config/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export const MAKE_CRUD_CONFIG = ({
2929
DELETE: msg`${singular} Deleted Successfully`,
3030
SAVED: msg`${singular} Saved Successfully`,
3131
CUSTOM: (action: string) => msg`${singular} ${action} Successfully`,
32-
VIEW_DETAILS: msg`Click here to view ${singular}`,
32+
VIEW_DETAILS: msg`Click here to view details`,
3333
},
3434
FORM_LANG: {
3535
UPSERT: (submitting: boolean) =>

src/frontend/views/Dashboard/Widget/_manage/Form.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ export function DashboardWidgetForm({
263263
contents={[
264264
{
265265
label: msg`Preview`,
266+
id: "preview",
266267
content: (
267268
<DashboardWidgetPresentation
268269
config={values}
@@ -273,6 +274,7 @@ export function DashboardWidgetForm({
273274
},
274275
{
275276
label: msg`Data`,
277+
id: "data",
276278
content: (
277279
<RenderCode input={runWidgetScript.data} />
278280
),

src/frontend/views/data/Table/_WholeEntityTable/index.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ export function WholeEntityTable({
8383
defaultTableState={dataState}
8484
/>
8585
),
86-
label: msg`${title.trim()}`,
87-
overrideLabel: msg`${title}(${currentCount})`,
86+
id: title.trim(),
87+
label: msg`${title}(${currentCount})`,
8888
};
8989
})}
9090
/>

src/frontend/views/entity/Crud/index.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ export function EntityCrudSettings() {
197197
contents={typescriptSafeObjectDotEntries(entityCrudView).map(
198198
([key, { disabled, render }]) => ({
199199
label: ENTITY_CRUD_LABELS[key],
200+
id: key,
200201
content: render,
201202
disabled,
202203
})

src/frontend/views/entity/Fields/index.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ export function EntityFieldsSettings() {
126126
</ViewStateMachine>
127127
),
128128
label: ENTITY_FIELD_SETTINGS_TAB_LABELS.LABELS,
129+
id: `labels`,
129130
},
130131
{
131132
content: (
@@ -175,6 +176,7 @@ export function EntityFieldsSettings() {
175176
</ViewStateMachine>
176177
),
177178
label: ENTITY_FIELD_SETTINGS_TAB_LABELS.FORM,
179+
id: `form`,
178180
},
179181
]}
180182
/>

src/frontend/views/entity/Form/index.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ export function EntityFormExtensionSettings() {
129129
<Tabs
130130
contents={typescriptSafeObjectDotEntries(entityFormView).map(
131131
([key, value]) => ({
132+
id: key,
132133
label: msg`${key}`,
133134
content: (
134135
<>

src/frontend/views/entity/Relations/index.tsx

+3
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ export function EntityRelationsSettings() {
150150
/>
151151
</ViewStateMachine>
152152
),
153+
id: "template",
153154
label: msg`Reference Template`,
154155
},
155156
{
@@ -176,6 +177,7 @@ export function EntityRelationsSettings() {
176177
/>
177178
</ViewStateMachine>
178179
),
180+
id: "selection",
179181
label: msg`Selection`,
180182
},
181183
{
@@ -196,6 +198,7 @@ export function EntityRelationsSettings() {
196198
/>
197199
</ViewStateMachine>
198200
),
201+
id: "labels",
199202
label: msg`Labels`,
200203
},
201204
]}

0 commit comments

Comments
 (0)