From 2e5346a38700965352179deb507a5e43e47ad610 Mon Sep 17 00:00:00 2001
From: yoosangwook
Date: Mon, 5 Aug 2024 17:58:22 +0900
Subject: [PATCH] feat: add i18n settings
---
package.json | 1 +
src/app/[locale]/LocaleProvider.js | 11 +++
.../changelog copy}/changelog.module.css | 0
.../changelog copy}/page.jsx | 0
.../[locale]/changelog/changelog.module.css | 4 +
src/app/[locale]/changelog/page.jsx | 73 +++++++++++++++++++
.../{ => [locale]}/community/archive/page.jsx | 0
src/app/{ => [locale]}/community/faq/page.jsx | 0
.../{ => [locale]}/community/notice/page.jsx | 0
src/app/[locale]/error.jsx | 15 ++++
src/app/{ => [locale]}/intro/page.jsx | 1 -
src/app/[locale]/layout.js | 13 ++++
src/app/{ => [locale]}/login/page.jsx | 0
.../{ => [locale]}/management/plan/page.jsx | 0
.../{ => [locale]}/management/stuff/page.jsx | 0
.../{ => [locale]}/master/company/page.jsx | 0
src/app/{ => [locale]}/master/price/page.jsx | 0
src/app/[locale]/not-found.jsx | 25 +++++++
src/app/[locale]/page.js | 19 +++++
src/app/{ => [locale]}/roof/page.jsx | 0
src/app/{ => [locale]}/roof2/page.jsx | 0
src/components/Headers.jsx | 2 +-
src/components/Main.jsx | 28 ++++++-
src/locales/client.js | 18 +++++
src/locales/ja.js | 7 ++
src/locales/ko.js | 7 ++
src/locales/server.js | 14 ++++
src/middleware.js | 33 ++++++---
yarn.lock | 21 +++++-
29 files changed, 277 insertions(+), 15 deletions(-)
create mode 100644 src/app/[locale]/LocaleProvider.js
rename src/app/{changelog => [locale]/changelog copy}/changelog.module.css (100%)
rename src/app/{changelog => [locale]/changelog copy}/page.jsx (100%)
create mode 100644 src/app/[locale]/changelog/changelog.module.css
create mode 100644 src/app/[locale]/changelog/page.jsx
rename src/app/{ => [locale]}/community/archive/page.jsx (100%)
rename src/app/{ => [locale]}/community/faq/page.jsx (100%)
rename src/app/{ => [locale]}/community/notice/page.jsx (100%)
create mode 100644 src/app/[locale]/error.jsx
rename src/app/{ => [locale]}/intro/page.jsx (82%)
create mode 100644 src/app/[locale]/layout.js
rename src/app/{ => [locale]}/login/page.jsx (100%)
rename src/app/{ => [locale]}/management/plan/page.jsx (100%)
rename src/app/{ => [locale]}/management/stuff/page.jsx (100%)
rename src/app/{ => [locale]}/master/company/page.jsx (100%)
rename src/app/{ => [locale]}/master/price/page.jsx (100%)
create mode 100644 src/app/[locale]/not-found.jsx
create mode 100644 src/app/[locale]/page.js
rename src/app/{ => [locale]}/roof/page.jsx (100%)
rename src/app/{ => [locale]}/roof2/page.jsx (100%)
create mode 100644 src/locales/client.js
create mode 100644 src/locales/ja.js
create mode 100644 src/locales/ko.js
create mode 100644 src/locales/server.js
diff --git a/package.json b/package.json
index 07d7828e..b4af1ba6 100644
--- a/package.json
+++ b/package.json
@@ -17,6 +17,7 @@
"mathjs": "^13.0.2",
"mongodb": "^6.8.0",
"next": "14.2.3",
+ "next-international": "^1.2.4",
"react": "^18",
"react-datepicker": "^7.3.0",
"react-dom": "^18",
diff --git a/src/app/[locale]/LocaleProvider.js b/src/app/[locale]/LocaleProvider.js
new file mode 100644
index 00000000..b4649135
--- /dev/null
+++ b/src/app/[locale]/LocaleProvider.js
@@ -0,0 +1,11 @@
+'use client'
+
+import { I18nProviderClient } from '@/locales/client'
+
+export function LocaleProvider({ locale, children }) {
+ return (
+ Loading...
}>
+ {children}
+
+ )
+}
diff --git a/src/app/changelog/changelog.module.css b/src/app/[locale]/changelog copy/changelog.module.css
similarity index 100%
rename from src/app/changelog/changelog.module.css
rename to src/app/[locale]/changelog copy/changelog.module.css
diff --git a/src/app/changelog/page.jsx b/src/app/[locale]/changelog copy/page.jsx
similarity index 100%
rename from src/app/changelog/page.jsx
rename to src/app/[locale]/changelog copy/page.jsx
diff --git a/src/app/[locale]/changelog/changelog.module.css b/src/app/[locale]/changelog/changelog.module.css
new file mode 100644
index 00000000..273a4a34
--- /dev/null
+++ b/src/app/[locale]/changelog/changelog.module.css
@@ -0,0 +1,4 @@
+.test {
+ @apply bg-red-500;
+ @apply text-2xl;
+}
diff --git a/src/app/[locale]/changelog/page.jsx b/src/app/[locale]/changelog/page.jsx
new file mode 100644
index 00000000..ad626beb
--- /dev/null
+++ b/src/app/[locale]/changelog/page.jsx
@@ -0,0 +1,73 @@
+'use client'
+
+import { Button, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow } from '@nextui-org/react'
+import Hero from '@/components/Hero'
+import QSelect from '@/components/ui/QSelect'
+import styles from './changelog.module.css'
+import { get } from '@/lib/Axios'
+
+export default function changelogPage() {
+ const testVar = process.env.NEXT_PUBLIC_TEST
+
+ const handleUsers = async () => {
+ const users = await get('/api/user/find-all')
+ console.log(users)
+ }
+
+ const data = [
+ {
+ id: 1,
+ author: 'SWYOO',
+ contents: '버튼 정리(템플릿 적용)',
+ date: '2024.07.16',
+ },
+ {
+ id: 2,
+ author: 'SWYOO',
+ contents: 'README.md 파일 이미지 경로 수정',
+ date: '2024.07.17',
+ },
+ {
+ id: 3,
+ author: 'SWYOO',
+ contents: '',
+ date: '',
+ },
+ ]
+ return (
+ <>
+
+ 이 영역은 테스트입니다.
+
+
+
+ DATE
+ NAME
+ CONTENTS
+
+
+ {data.map((item) => (
+
+ {item.date}
+ {item.author}
+ {item.contents}
+
+ ))}
+
+
+
+
+
+
+ {testVar}
+
+
+ >
+ )
+}
diff --git a/src/app/community/archive/page.jsx b/src/app/[locale]/community/archive/page.jsx
similarity index 100%
rename from src/app/community/archive/page.jsx
rename to src/app/[locale]/community/archive/page.jsx
diff --git a/src/app/community/faq/page.jsx b/src/app/[locale]/community/faq/page.jsx
similarity index 100%
rename from src/app/community/faq/page.jsx
rename to src/app/[locale]/community/faq/page.jsx
diff --git a/src/app/community/notice/page.jsx b/src/app/[locale]/community/notice/page.jsx
similarity index 100%
rename from src/app/community/notice/page.jsx
rename to src/app/[locale]/community/notice/page.jsx
diff --git a/src/app/[locale]/error.jsx b/src/app/[locale]/error.jsx
new file mode 100644
index 00000000..07d75e7e
--- /dev/null
+++ b/src/app/[locale]/error.jsx
@@ -0,0 +1,15 @@
+'use client'
+
+export default function ServerError() {
+ return (
+
+
+
+
500
+
Internal Server Error.
+
We are already working to solve the problem.
+
+
+
+ )
+}
diff --git a/src/app/intro/page.jsx b/src/app/[locale]/intro/page.jsx
similarity index 82%
rename from src/app/intro/page.jsx
rename to src/app/[locale]/intro/page.jsx
index 840b1f93..64a7c6ab 100644
--- a/src/app/intro/page.jsx
+++ b/src/app/[locale]/intro/page.jsx
@@ -6,7 +6,6 @@ import Intro from '@/components/Intro'
export default function IntroPage() {
return (
<>
-
diff --git a/src/app/[locale]/layout.js b/src/app/[locale]/layout.js
new file mode 100644
index 00000000..00f84991
--- /dev/null
+++ b/src/app/[locale]/layout.js
@@ -0,0 +1,13 @@
+'use client'
+
+import { useCurrentLocale } from '@/locales/client'
+import { LocaleProvider } from './LocaleProvider'
+
+export default function LocaleLayout({ children }) {
+ const locale = useCurrentLocale()
+ return (
+ <>
+ {children}
+ >
+ )
+}
diff --git a/src/app/login/page.jsx b/src/app/[locale]/login/page.jsx
similarity index 100%
rename from src/app/login/page.jsx
rename to src/app/[locale]/login/page.jsx
diff --git a/src/app/management/plan/page.jsx b/src/app/[locale]/management/plan/page.jsx
similarity index 100%
rename from src/app/management/plan/page.jsx
rename to src/app/[locale]/management/plan/page.jsx
diff --git a/src/app/management/stuff/page.jsx b/src/app/[locale]/management/stuff/page.jsx
similarity index 100%
rename from src/app/management/stuff/page.jsx
rename to src/app/[locale]/management/stuff/page.jsx
diff --git a/src/app/master/company/page.jsx b/src/app/[locale]/master/company/page.jsx
similarity index 100%
rename from src/app/master/company/page.jsx
rename to src/app/[locale]/master/company/page.jsx
diff --git a/src/app/master/price/page.jsx b/src/app/[locale]/master/price/page.jsx
similarity index 100%
rename from src/app/master/price/page.jsx
rename to src/app/[locale]/master/price/page.jsx
diff --git a/src/app/[locale]/not-found.jsx b/src/app/[locale]/not-found.jsx
new file mode 100644
index 00000000..8127943b
--- /dev/null
+++ b/src/app/[locale]/not-found.jsx
@@ -0,0 +1,25 @@
+'use client'
+
+import Link from 'next/link'
+
+export default function NotFound() {
+ return (
+
+
+
+
404
+
Something's missing.
+
+ Sorry, we can't find that page. You'll find lots to explore on the home page.{' '}
+
+
+ Back to Homepage
+
+
+
+
+ )
+}
diff --git a/src/app/[locale]/page.js b/src/app/[locale]/page.js
new file mode 100644
index 00000000..ab223428
--- /dev/null
+++ b/src/app/[locale]/page.js
@@ -0,0 +1,19 @@
+import MainPage from '@/components/Main'
+import { getCurrentLocale } from '@/locales/server'
+
+export default function page() {
+ const currentLocale = getCurrentLocale()
+
+ const mainPageProps = {
+ currentLocale,
+ }
+
+ return (
+ <>
+
+
Main
+
+
+ >
+ )
+}
diff --git a/src/app/roof/page.jsx b/src/app/[locale]/roof/page.jsx
similarity index 100%
rename from src/app/roof/page.jsx
rename to src/app/[locale]/roof/page.jsx
diff --git a/src/app/roof2/page.jsx b/src/app/[locale]/roof2/page.jsx
similarity index 100%
rename from src/app/roof2/page.jsx
rename to src/app/[locale]/roof2/page.jsx
diff --git a/src/components/Headers.jsx b/src/components/Headers.jsx
index 12d36144..a5503b8c 100644
--- a/src/components/Headers.jsx
+++ b/src/components/Headers.jsx
@@ -2,7 +2,7 @@ import Link from 'next/link'
export default function Headers() {
return (
-
+