Skip to content

Commit c307297

Browse files
authored
feat: add localization for the companies list (feature-sliced#774)
1 parent a1985ee commit c307297

File tree

4 files changed

+60
-6
lines changed

4 files changed

+60
-6
lines changed

src/pages/_home/companies/_config.tsx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
type Company = {
1+
export type Company = {
22
/* URL to your company website */
33
url: string;
44
/* Image path to your company logo */
@@ -113,3 +113,20 @@ export const companies: Company[] = [
113113
alt: "Blindtyping",
114114
},
115115
];
116+
117+
const japaneseCompanies: Company[] = [
118+
{
119+
url: "https://hapins.net/",
120+
src: "ja/hapins.png",
121+
alt: "HapInS",
122+
},
123+
];
124+
125+
const koreanCompanies: Company[] = [];
126+
127+
export const localeToCompaniesMap: Record<string, Company[]> = {
128+
ru: companies,
129+
en: companies,
130+
ja: japaneseCompanies,
131+
ko: koreanCompanies,
132+
};

src/pages/_home/companies/index.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
import React, { useMemo } from "react";
1+
import React from "react";
22
// It's utility, not hook =)
33
import getBaseUrl from "@docusaurus/useBaseUrl";
44
import { translate } from "@docusaurus/Translate";
55
import Marquee from "react-fast-marquee";
6-
import { shuffle } from "lodash-es";
76
import { Section } from "@site/src/shared/ui";
87

9-
import { companies } from "./_config";
108
import styles from "./styles.module.scss";
9+
import { useCompanies } from "./use-companies";
1110

1211
export const Companies = () => {
13-
const companiesShuffled = useMemo(() => shuffle(companies), []);
12+
const companies = useCompanies();
1413

1514
return (
1615
<Section
@@ -19,7 +18,7 @@ export const Companies = () => {
1918
containerClass={styles.rootContainer}
2019
>
2120
<Marquee pauseOnHover>
22-
{companiesShuffled.map(({ url, src, alt }) => (
21+
{companies.map(({ url, src, alt }) => (
2322
<a
2423
key={src}
2524
className={styles.item}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
2+
import { useMemo } from "react";
3+
import { shuffle } from "lodash-es";
4+
import { DEFAULT_LOCALE } from "@site/config/docusaurus/consts";
5+
import { companies, localeToCompaniesMap } from "./_config";
6+
7+
const MIN_COMPANIES_AMOUNT = 8;
8+
9+
export const useCompanies = () => {
10+
const { i18n } = useDocusaurusContext();
11+
12+
const shuffledLocaleCompanies = useMemo(() => {
13+
const localeCompanies =
14+
localeToCompaniesMap[i18n.currentLocale] || companies;
15+
16+
const isEnoughLocaleCompanies =
17+
localeCompanies.length >= MIN_COMPANIES_AMOUNT;
18+
19+
const isDefaultLocale = i18n.currentLocale === DEFAULT_LOCALE;
20+
21+
const isNeedAddDefaultLocaleCompanies =
22+
!isEnoughLocaleCompanies && !isDefaultLocale;
23+
24+
const fullLocaleCompanies = isNeedAddDefaultLocaleCompanies
25+
? [
26+
...localeCompanies,
27+
...companies.slice(
28+
0,
29+
MIN_COMPANIES_AMOUNT - localeCompanies.length,
30+
),
31+
]
32+
: localeCompanies;
33+
34+
return shuffle(fullLocaleCompanies);
35+
}, [i18n.currentLocale]);
36+
37+
return shuffledLocaleCompanies;
38+
};

static/img/companies/ja/hapins.png

35.3 KB
Loading

0 commit comments

Comments
 (0)