Skip to content

Commit 263bdfd

Browse files
MaximeBajeuxaottr
authored andcommitted
feat(catalog): implement common translations
ref: #MANAGER-19820 Signed-off-by: Maxime Bajeux <[email protected]>
1 parent dc0c5eb commit 263bdfd

23 files changed

+91
-131
lines changed

packages/manager/apps/catalog/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"test:watch": "manager-test watch"
2121
},
2222
"dependencies": {
23+
"@ovh-ux/manager-common-translations": "^0.21.0",
2324
"@ovh-ux/manager-core-api": "^0.19.0",
2425
"@ovh-ux/manager-core-utils": "^0.4.6",
2526
"@ovh-ux/manager-react-components": "^1.48.0",

packages/manager/apps/catalog/src/components/Breadcrumb/Breadcrumb.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import React from 'react';
22

33
import { useTranslation } from 'react-i18next';
4+
import { NAMESPACES } from '@ovh-ux/manager-common-translations';
45

56
import { OsdsBreadcrumb } from '@ovhcloud/ods-components/react';
67

78
import { ShellContext } from '@ovh-ux/manager-react-shell-client';
89

910
function Breadcrumb() {
1011
const { shell } = React.useContext(ShellContext);
11-
const { t } = useTranslation('catalog');
12+
const { t } = useTranslation(NAMESPACES.NAVIGATION);
1213
const [href, setHref] = React.useState('');
1314

1415
React.useEffect(() => {
@@ -28,7 +29,10 @@ function Breadcrumb() {
2829
href: String(href),
2930
};
3031

31-
const items = [rootItem, { label: t('title'), href: '#' }];
32+
const items = [
33+
rootItem,
34+
{ label: t('manager_navigation_catalog'), href: '#' },
35+
];
3236
return <OsdsBreadcrumb items={items} />;
3337
}
3438

packages/manager/apps/catalog/src/components/Filters/Filters.tsx

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { useTranslation } from 'react-i18next';
77
import { ODS_THEME_COLOR_INTENT } from '@ovhcloud/ods-common-theming';
88
import { ODS_TEXT_LEVEL, ODS_TEXT_SIZE } from '@ovhcloud/ods-components';
99
import { OsdsButton, OsdsLink, OsdsText } from '@ovhcloud/ods-components/react';
10+
import { NAMESPACES } from '@ovh-ux/manager-common-translations';
1011

1112
import { Product } from '@/api';
1213
import {
@@ -82,7 +83,8 @@ const Filters: React.FC<FiltersProps> = ({
8283
setParentSelectedUniverses([]);
8384
};
8485

85-
const { t } = useTranslation('catalog/filters');
86+
const { t: tNavigation } = useTranslation(NAMESPACES.NAVIGATION);
87+
const { t: tActions } = useTranslation(NAMESPACES.ACTIONS);
8688

8789
const handleCheckboxChange = (
8890
type: 'category' | 'universe',
@@ -105,14 +107,14 @@ const Filters: React.FC<FiltersProps> = ({
105107
return (
106108
<>
107109
<span className="filters-container filters-container grid grid-cols-1 md:flex text-left">
108-
<span className="filters-universes flex-[2]">
110+
<span className="filters-universes flex-2">
109111
<OsdsText
110112
level={ODS_TEXT_LEVEL.heading}
111113
size={ODS_TEXT_SIZE._400}
112114
color={ODS_THEME_COLOR_INTENT.text}
113115
className="inline-block"
114116
>
115-
{t('manager_catalog_filters_universes')}
117+
{tNavigation('manager_navigation_universes')}
116118
</OsdsText>
117119
<span className="grid grid-cols-1">
118120
{universes.length ? (
@@ -124,7 +126,9 @@ const Filters: React.FC<FiltersProps> = ({
124126
label={data.universe}
125127
count={data.count}
126128
type="universe"
127-
isChecked={selectedUniverses.includes(toFilterValue(data.universe))}
129+
isChecked={selectedUniverses.includes(
130+
toFilterValue(data.universe),
131+
)}
128132
onCheckboxChange={handleCheckboxChange}
129133
/>
130134
);
@@ -134,14 +138,14 @@ const Filters: React.FC<FiltersProps> = ({
134138
)}
135139
</span>
136140
</span>
137-
<span className="filters-categories grid flex-[4]">
141+
<span className="filters-categories grid flex-4">
138142
<OsdsText
139143
level={ODS_TEXT_LEVEL.heading}
140144
size={ODS_TEXT_SIZE._400}
141145
color={ODS_THEME_COLOR_INTENT.text}
142146
className="title"
143147
>
144-
{t('manager_catalog_filters_categories')}
148+
{tNavigation('manager_navigation_categories')}
145149
</OsdsText>
146150
<span className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3">
147151
{categories.length ? (
@@ -152,7 +156,9 @@ const Filters: React.FC<FiltersProps> = ({
152156
label={item.category}
153157
count={item.count}
154158
type="category"
155-
isChecked={selectedCategories.includes(toFilterValue(item.category))}
159+
isChecked={selectedCategories.includes(
160+
toFilterValue(item.category),
161+
)}
156162
onCheckboxChange={handleCheckboxChange}
157163
/>
158164
);
@@ -168,19 +174,23 @@ const Filters: React.FC<FiltersProps> = ({
168174
<OsdsLink
169175
color={ODS_THEME_COLOR_INTENT.primary}
170176
onClick={() => resetFilters()}
171-
onKeyDown={(event: React.KeyboardEvent) => event.key === 'Enter' && resetFilters()}
177+
onKeyDown={(event: React.KeyboardEvent) =>
178+
event.key === 'Enter' && resetFilters()
179+
}
172180
data-tracking="filter::reset"
173181
>
174-
{t('manager_catalog_filters_reset')}
182+
{tActions('reset')}
175183
</OsdsLink>
176184
<OsdsButton
177185
disabled={!hasInteracted || undefined}
178186
color={ODS_THEME_COLOR_INTENT.primary}
179187
onClick={() => setFilters()}
180-
onKeyDown={(event: React.KeyboardEvent) => event.key === 'Enter' && setFilters()}
188+
onKeyDown={(event: React.KeyboardEvent) =>
189+
event.key === 'Enter' && setFilters()
190+
}
181191
data-tracking="filter::apply"
182192
>
183-
{t('manager_catalog_filters_button_apply')}
193+
{tActions('filters_apply')}
184194
</OsdsButton>
185195
</span>
186196
</span>

packages/manager/apps/catalog/src/components/SearchBar/SearchBar.tsx

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,15 @@ import {
1414
OdsInputValueChangeEventDetail,
1515
OsdsSearchBarCustomEvent,
1616
} from '@ovhcloud/ods-components';
17-
import { OsdsButton, OsdsIcon, OsdsSearchBar } from '@ovhcloud/ods-components/react';
17+
import {
18+
OsdsButton,
19+
OsdsIcon,
20+
OsdsSearchBar,
21+
} from '@ovhcloud/ods-components/react';
1822

23+
import { NAMESPACES } from '@ovh-ux/manager-common-translations';
1924
import { Product } from '@/api';
2025
import Filters from '@/components/Filters/Filters';
21-
2226
import FilterChip from '../Filters/FilterChip';
2327

2428
interface SearchbarProps {
@@ -41,6 +45,7 @@ const SearchBar: React.FC<SearchbarProps> = ({
4145
setIsRouterInitialized,
4246
}) => {
4347
const { t } = useTranslation('catalog/search');
48+
const { t: tActions } = useTranslation(NAMESPACES.ACTIONS);
4449

4550
const [showFilters, setShowFilters] = useState(false);
4651
const [localSearchValue, setLocalSearchValue] = useState('');
@@ -56,11 +61,15 @@ const SearchBar: React.FC<SearchbarProps> = ({
5661
}
5762
}, [location.search]);
5863

59-
const onSearchSubmit = (event: CustomEvent<{ optionValue: string; inputValue: string }>) => {
64+
const onSearchSubmit = (
65+
event: CustomEvent<{ optionValue: string; inputValue: string }>,
66+
) => {
6067
setSearchValue(event.detail.inputValue.trim());
6168
};
6269

63-
const onSearchChanged = (event: OsdsSearchBarCustomEvent<OdsInputValueChangeEventDetail>) => {
70+
const onSearchChanged = (
71+
event: OsdsSearchBarCustomEvent<OdsInputValueChangeEventDetail>,
72+
) => {
6473
setLocalSearchValue(event.detail.value);
6574
setSearchValue(event.detail.value);
6675
};
@@ -96,18 +105,21 @@ const SearchBar: React.FC<SearchbarProps> = ({
96105
variant={ODS_BUTTON_VARIANT.stroked}
97106
color={ODS_THEME_COLOR_INTENT.primary}
98107
onKeyDown={(event: KeyboardEvent) =>
99-
event.key === 'Enter' && setShowFilters((filterState) => !filterState)
108+
event.key === 'Enter' &&
109+
setShowFilters((filterState) => !filterState)
100110
}
101111
onClick={() => setShowFilters((filterState) => !filterState)}
102-
data-tracking={`filter::${showFilters ? 'show-filter' : 'hide-filter'}`}
112+
data-tracking={`filter::${
113+
showFilters ? 'show-filter' : 'hide-filter'
114+
}`}
103115
>
104116
<OsdsIcon
105117
name={ODS_ICON_NAME.FILTER}
106118
size={ODS_ICON_SIZE.xs}
107119
color={ODS_THEME_COLOR_INTENT.primary}
108120
className="mr-2"
109121
/>
110-
{t('manager_catalog_search_filter_button')}
122+
{tActions('show_hide_filters')}
111123
</OsdsButton>
112124
</span>
113125
</div>

packages/manager/apps/catalog/src/pages/index.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import {
1010
ODS_THEME_TYPOGRAPHY_SIZE,
1111
} from '@ovhcloud/ods-common-theming';
1212
import { OsdsDivider, OsdsText } from '@ovhcloud/ods-components/react';
13-
1413
import { Card } from '@ovh-ux/manager-react-components';
14+
import { NAMESPACES } from '@ovh-ux/manager-common-translations';
1515

1616
import { Product } from '@/api';
1717
import Breadcrumb from '@/components/Breadcrumb/Breadcrumb';
@@ -23,7 +23,8 @@ import { getSearchUrlFromFilterParams } from '@/utils/utils';
2323
import Loading from '../components/Loading/Loading';
2424

2525
export default function Catalog() {
26-
const { t } = useTranslation('catalog');
26+
const { t: tNavigation } = useTranslation(NAMESPACES.NAVIGATION);
27+
const { t: tDashboard } = useTranslation(NAMESPACES.DASHBOARD);
2728
const [, setSearchParams] = useSearchParams();
2829
const [searchText, setSearchText] = React.useState('');
2930
const [categories, setCategories] = React.useState<string[]>([]);
@@ -56,7 +57,7 @@ export default function Catalog() {
5657
color={ODS_THEME_COLOR_INTENT.text}
5758
className="mb-3"
5859
>
59-
{t('title')}
60+
{tNavigation('manager_navigation_catalog')}
6061
{isLoading ? '' : ` (${results.length})`}
6162
</OsdsText>
6263
<SearchBar
@@ -92,7 +93,9 @@ export default function Catalog() {
9293
)}
9394
</div>
9495
{!isLoading && results.length === 0 && (
95-
<OsdsText className="text-center grid w-full">{t('no_result')}</OsdsText>
96+
<OsdsText className="text-center grid w-full">
97+
{tDashboard('no_result_found')}
98+
</OsdsText>
9699
)}
97100
</div>
98101
);

packages/manager/apps/catalog/src/public/translations/catalog/Messages_de_DE.json

Lines changed: 0 additions & 4 deletions
This file was deleted.

packages/manager/apps/catalog/src/public/translations/catalog/Messages_en_GB.json

Lines changed: 0 additions & 4 deletions
This file was deleted.

packages/manager/apps/catalog/src/public/translations/catalog/Messages_es_ES.json

Lines changed: 0 additions & 4 deletions
This file was deleted.

packages/manager/apps/catalog/src/public/translations/catalog/Messages_fr_CA.json

Lines changed: 0 additions & 4 deletions
This file was deleted.

packages/manager/apps/catalog/src/public/translations/catalog/Messages_fr_FR.json

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)