From 5667f30a923d23296df35b53dc9417f8a0fc620f Mon Sep 17 00:00:00 2001 From: filantrop Date: Tue, 18 Oct 2022 17:34:10 +0300 Subject: [PATCH] add translate --- public/locales/ru/translation.json | 11 ++++++++++- src/components/Filters/AppiledFilters.tsx | 9 +++++++-- src/components/Filters/Filter.tsx | 15 ++++++++++----- src/components/Filters/SearchFilterBar.tsx | 5 ++++- 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/public/locales/ru/translation.json b/public/locales/ru/translation.json index 961208e..b568527 100755 --- a/public/locales/ru/translation.json +++ b/public/locales/ru/translation.json @@ -123,6 +123,15 @@ "title": "Результаты поиска", "totalResults":"Всего найдено", "nothingFound": "Ничего не найдено" + }, + "filters": { + "authors":"Авторы", + "publicationsType": "Публикации", + "publisher":"Издатель", + "publicationTopic":"Тема публикации", + "appliedFitlers":"Фильтры", + "clearAll":"Очистить всё", + "enterAuthorsName":"Введите имя автора", + "showAll":"Показать все" } - } diff --git a/src/components/Filters/AppiledFilters.tsx b/src/components/Filters/AppiledFilters.tsx index 570382f..e4562ff 100644 --- a/src/components/Filters/AppiledFilters.tsx +++ b/src/components/Filters/AppiledFilters.tsx @@ -5,6 +5,8 @@ import React from "react"; import Badge from "components/Badge"; import { IProduct } from "./IProdutct"; import classNames from "classnames"; +import { useTranslation } from "react-i18next"; + /* -------------------------------------------------------------------------- */ /* Component props */ /* -------------------------------------------------------------------------- */ @@ -23,6 +25,9 @@ export default function AppiledFilters({ clearAll, className, }: Props) { + + const [t, i18next] = useTranslation() + return ( <>
-
Фильтры
+
{t("filters.appliedFitlers")}
diff --git a/src/components/Filters/Filter.tsx b/src/components/Filters/Filter.tsx index 384b37d..43f1e0f 100644 --- a/src/components/Filters/Filter.tsx +++ b/src/components/Filters/Filter.tsx @@ -5,6 +5,8 @@ import SearchFilterBar from "./SearchFilterBar"; import axios from "axios"; import { useDebounce } from "./functions/debounce"; import { IProduct } from "./IProdutct"; +import { useTranslation } from "react-i18next"; + type Props = { className?: string; @@ -26,6 +28,9 @@ export default function Fiter({ className }: Props) { }; const debounced = useDebounce(query); + const [t, i18next] = useTranslation() + + async function fetchProducts() { const response = await axios.get( `https://dummyjson.com/products/search?q=${debounced}` @@ -83,23 +88,23 @@ export default function Fiter({ className }: Props) { delFilter={DelFilter} clearAll={clearAll} > - + - +

контент...

- +

контент...

- +

контент...

diff --git a/src/components/Filters/SearchFilterBar.tsx b/src/components/Filters/SearchFilterBar.tsx index 2d9216c..0314ac1 100644 --- a/src/components/Filters/SearchFilterBar.tsx +++ b/src/components/Filters/SearchFilterBar.tsx @@ -4,6 +4,8 @@ import { IProduct } from "./IProdutct"; import Checkbox from "components/Checkbox"; import { ReactComponent as SearchIcon } from "assets/svg/search.svg"; import classNames from "classnames"; +import { useTranslation } from "react-i18next"; + type Props = { hints: IProduct[]; @@ -26,6 +28,7 @@ export default function SearchFilterBar({ }: Props): JSX.Element { const [checkList, setCheckList] = useState(hints); const [showFilters, SetShowFilters] = useState(false); + const [t, i18next] = useTranslation() const ShowAllFilters = useCallback(() => { SetShowFilters((prev) => !prev); @@ -84,7 +87,7 @@ export default function SearchFilterBar({ onClick={ShowAllFilters} className="text-right text-blue-500 pl-2 text-sm font-medium" > - Показать всё({hints.length}) + {t("filters.showAll")}({hints.length}) )}