diff --git a/app/[locale]/page.tsx b/app/[locale]/page.tsx
index e6c410b..b9fbf56 100644
--- a/app/[locale]/page.tsx
+++ b/app/[locale]/page.tsx
@@ -13,7 +13,7 @@ type props = {
export default async function Home({ params }: props) {
const { locale } = await params;
- const projects = getAllProjects().filter((item) => item.ready);
+ const projects = getAllProjects(locale).filter((item) => item.ready);
return (
@@ -25,4 +25,4 @@ export default async function Home({ params }: props) {
);
-}
+}
\ No newline at end of file
diff --git a/app/[locale]/works/[slug]/page.tsx b/app/[locale]/works/[slug]/page.tsx
index 5890829..acb361b 100644
--- a/app/[locale]/works/[slug]/page.tsx
+++ b/app/[locale]/works/[slug]/page.tsx
@@ -14,22 +14,31 @@ type props = {
}>;
};
+const LOCALES = ["fr", "en"];
+
export function generateStaticParams() {
- return getProjectSlugs().flatMap((slug: any) => [
- { locale: "fr", slug },
- { locale: "en", slug },
- ]);
+ const paths: { locale: string; slug: string }[] = [];
+
+ LOCALES.forEach((locale) => {
+ const slugs = getProjectSlugs(locale);
+ slugs.forEach((slug) => {
+ paths.push({ locale, slug });
+ });
+ });
+
+ return paths;
}
export default async function ProjectPage({ params }: props) {
const { locale, slug } = await params;
- const project = getProjectBySlug(slug);
+
+ const project = getProjectBySlug(slug, locale);
if (!project) {
notFound();
}
- const otherProjects = getAllProjects()
+ const otherProjects = getAllProjects(locale)
.filter((item: any) => item.slug !== slug && item.ready)
.slice(0, 2)
.map((item: any) => ({
@@ -48,7 +57,6 @@ export default async function ProjectPage({ params }: props) {
dateLabel={project.dateLabel}
cover={project.cover}
/>
-
);
-}
+}
\ No newline at end of file
diff --git a/lib/projects/get-projects.ts b/lib/projects/get-projects.ts
index c06ea3e..ce94ec4 100644
--- a/lib/projects/get-projects.ts
+++ b/lib/projects/get-projects.ts
@@ -3,22 +3,24 @@ import path from "node:path";
import matter from "gray-matter";
import { Project, ProjectFrontmatter } from "./types";
-const projectsDirectory = path.join(process.cwd(), "content/projects");
+const CONTENT_DIR = path.join(process.cwd(), "content/projects");
-function fileNameToSlug(fileName: string) {
- return fileName.replace(/\.mdx$/, "");
-}
+export function getProjectSlugs(locale: string) {
+ const localeDirectory = path.join(CONTENT_DIR, locale);
+
+ if (!fs.existsSync(localeDirectory)) {
+ return [];
+ }
-export function getProjectSlugs() {
return fs
- .readdirSync(projectsDirectory)
+ .readdirSync(localeDirectory)
.filter((file) => file.endsWith(".mdx"))
- .map(fileNameToSlug);
+ .map((fileName) => fileName.replace(/\.mdx$/, ""));
}
-export function getProjectBySlug(slug: string): Project | null {
+export function getProjectBySlug(slug: string, locale: string): Project | null {
const realSlug = slug.replace(/\.mdx$/, "");
- const fullPath = path.join(projectsDirectory, `${realSlug}.mdx`);
+ const fullPath = path.join(CONTENT_DIR, locale, `${realSlug}.mdx`);
if (!fs.existsSync(fullPath)) {
return null;
@@ -34,9 +36,9 @@ export function getProjectBySlug(slug: string): Project | null {
};
}
-export function getAllProjects(): Project[] {
- return getProjectSlugs()
- .map((slug) => getProjectBySlug(slug))
+export function getAllProjects(locale: string): Project[] {
+ return getProjectSlugs(locale)
+ .map((slug) => getProjectBySlug(slug, locale))
.filter((project): project is Project => project !== null)
.sort((a, b) => a.priority - b.priority);
-}
+}
\ No newline at end of file