Skip to content

Commit 614beaf

Browse files
committed
feat: read user default language from browser
Signed-off-by: yqrashawn <namy.19@gmail.com>
1 parent 50eca3a commit 614beaf

File tree

5 files changed

+29
-24
lines changed

5 files changed

+29
-24
lines changed

package.json

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "scroll.io",
3-
"version": "5.2.0",
3+
"version": "5.3.0",
44
"private": false,
55
"license": "MIT",
66
"scripts": {
@@ -14,22 +14,11 @@
1414
"test": "npx lint-staged"
1515
},
1616
"lint-staged": {
17-
"**/*.{ts,tsx}": [
18-
"npm run lint",
19-
"prettier --write"
20-
]
17+
"**/*.{ts,tsx}": ["npm run lint", "prettier --write"]
2118
},
2219
"browserslist": {
23-
"production": [
24-
">0.5%",
25-
"not dead",
26-
"not op_mini all"
27-
],
28-
"development": [
29-
"last 1 chrome version",
30-
"last 1 firefox version",
31-
"last 1 safari version"
32-
]
20+
"production": [">0.5%", "not dead", "not op_mini all"],
21+
"development": ["last 1 chrome version", "last 1 firefox version", "last 1 safari version"]
3322
},
3423
"resolutions": {
3524
"@sentry/webpack-plugin/**/node-fetch": "^2.6.11",

src/components/LanguageSelect/index.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { useMemo, useState } from "react"
2-
import useStorage from "squirrel-gill"
32
import { makeStyles } from "tss-react/mui"
43

54
import { ButtonBase, Fade, ListItemIcon, ListItemText, Menu, MenuItem, SvgIcon, Typography } from "@mui/material"
@@ -8,7 +7,7 @@ import { ReactComponent as GlobalSvg } from "@/assets/svgs/common/global.svg"
87
import { ReactComponent as LanguageCheckedSvg } from "@/assets/svgs/common/language-checked.svg"
98
import { ReactComponent as LanguageUncheckSvg } from "@/assets/svgs/common/language-uncheck.svg"
109
import { BLOG_LANGUAGE_LIST } from "@/constants"
11-
import { BLOG_LANGUAGE } from "@/constants/storageKey"
10+
import useUserLanguage from "@/hooks/useUserLanguage"
1211

1312
const useStyles = makeStyles<any>()((theme, { dark }) => ({
1413
button: {
@@ -51,7 +50,7 @@ const LanguageSelect = props => {
5150

5251
const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)
5352

54-
const [language, setLanguage] = useStorage(localStorage, BLOG_LANGUAGE, "en")
53+
const [language, setLanguage] = useUserLanguage()
5554

5655
const currentLanguage = useMemo(() => {
5756
return BLOG_LANGUAGE_LIST.find(item => item.key === language)?.label

src/hooks/useUserLanguage.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import useStorage from "squirrel-gill"
2+
3+
import { BLOG_LANGUAGE } from "@/constants/storageKey"
4+
5+
function getUserLanguage() {
6+
// Get the user's primary language preference
7+
const userLanguage = navigator.language || "en"
8+
9+
// Check if the language is Turkish
10+
if (userLanguage.startsWith("tr")) {
11+
return "tr" // Return 'tr' for Turkish
12+
} else {
13+
return "en" // Return 'en' for any other language
14+
}
15+
}
16+
17+
export default function useUserLanguage() {
18+
return useStorage(localStorage, BLOG_LANGUAGE, getUserLanguage())
19+
}

src/pages/blog/detail.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,14 @@ import rehypeKatex from "rehype-katex"
77
import rehypeRaw from "rehype-raw"
88
import remarkGfm from "remark-gfm"
99
import remarkMath from "remark-math"
10-
import useStorage from "squirrel-gill"
1110

1211
import { Box, Typography } from "@mui/material"
1312
import { styled } from "@mui/system"
1413

1514
import LoadingPage from "@/components/LoadingPage"
1615
import { LANGUAGE_MAP } from "@/constants"
17-
import { BLOG_LANGUAGE } from "@/constants/storageKey"
1816
import useCheckViewport from "@/hooks/useCheckViewport"
17+
import useUserLanguage from "@/hooks/useUserLanguage"
1918
import { filterBlogsByLanguage } from "@/utils"
2019

2120
import Articles from "./articles"
@@ -47,7 +46,7 @@ const BlogNavbar = styled(Box)(({ theme }) => ({
4746

4847
const BlogDetail = () => {
4948
const navigate = useNavigate()
50-
const [language] = useStorage(localStorage, BLOG_LANGUAGE, "en")
49+
const [language] = useUserLanguage()
5150
const [blogContent, setBlogContent] = useState<null | string>(null)
5251
const [moreBlog, setMoreBlog] = useState<any>([])
5352
const [currentBlog, setCurrentBlog] = useState<any>({

src/pages/blog/index.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { orderBy } from "lodash"
22
import { useEffect, useMemo, useState } from "react"
33
import { useLocation } from "react-router-dom"
4-
import useStorage from "squirrel-gill"
54

65
import { Tune as TuneIcon } from "@mui/icons-material"
76
import { Box, Modal, Typography } from "@mui/material"
@@ -10,8 +9,8 @@ import { styled } from "@mui/system"
109
import ArticleCard from "@/components/ArticleCard"
1110
import SectionWrapper from "@/components/SectionWrapper"
1211
import { LANGUAGE_MAP, getBlogCategoryList, getBlogSortList } from "@/constants"
13-
import { BLOG_LANGUAGE } from "@/constants/storageKey"
1412
import useCheckViewport from "@/hooks/useCheckViewport"
13+
import useUserLanguage from "@/hooks/useUserLanguage"
1514
import { filterBlogsByLanguage } from "@/utils"
1615

1716
import blogSource from "./data.json"
@@ -165,7 +164,7 @@ const BlogList = styled("ul")(({ theme }) => ({
165164
const Blog = () => {
166165
const location = useLocation()
167166
const { isDesktop } = useCheckViewport()
168-
const [language] = useStorage(localStorage, BLOG_LANGUAGE, "en")
167+
const [language] = useUserLanguage()
169168
const BLOG_CATEGORY_LIST = useMemo(() => getBlogCategoryList(language), [language])
170169
const BLOG_SORT_LIST = useMemo(() => getBlogSortList(language), [language])
171170
const BLOG_COPY = useMemo(() => LANGUAGE_MAP[language], [language])

0 commit comments

Comments
 (0)