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}
+
+
+ +
+
+
+

Sass 테스트입니다.

+
+ + ) +} 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 ( -
+