diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index aa5497841..b7c312c67 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,9 @@ # Contributing to IntLayer +## Understanding the project + +To understand the project, you can read the [documentation named "How Intlayer Works"](https://github.com/aypineau/intlayer/blob/main/docs/docs/how_works_intlayer_en.md). + ## Development setup IntLayer is developed as a mono-repo using pmpm. diff --git a/apps/website/src/Routes.ts b/apps/website/src/Routes.ts index 78d4849fa..c04f4629c 100644 --- a/apps/website/src/Routes.ts +++ b/apps/website/src/Routes.ts @@ -3,6 +3,7 @@ export enum PagesRoutes { Demo = '/demo', Doc = '/doc', Doc_GetStarted = '/doc/get_started', + Doc_HowWorksIntlayer = '/doc/concept/how_works_intlayer', Doc_Configuration = '/doc/concept/configuration', Doc_Interest = '/doc/concept/interest_of_intlayer', Doc_IntlayerEditor = '/doc/concept/intlayer_editor', diff --git a/apps/website/src/app/[locale]/doc/concept/how_works_intlayer/metadata.ts b/apps/website/src/app/[locale]/doc/concept/how_works_intlayer/metadata.ts new file mode 100644 index 000000000..c8f8eb87e --- /dev/null +++ b/apps/website/src/app/[locale]/doc/concept/how_works_intlayer/metadata.ts @@ -0,0 +1,56 @@ +import { type IConfigLocales, getTranslationContent } from 'intlayer'; +import type { Metadata } from 'next'; +import type { LocalParams } from 'next-intlayer'; + +export const generateMetadata = ({ + params: { locale }, +}: LocalParams): Metadata => { + const t = (content: IConfigLocales) => + getTranslationContent(content, locale); + + return { + title: t({ + en: 'Intlayer | How works Intlayer', + fr: 'Intlayer | Comment Intlayer fonctionne', + es: 'Intlayer | Cómo funciona Intlayer', + }), + description: t({ + en: 'Discover how Intlayer works. See the steps used by Intlayer in your application. See what does the different packages do.', + fr: 'Découvrez comment Intlayer fonctionne. Voir les étapes utilisées par Intlayer dans votre application. Voir ce qui fait les différents packages.', + es: 'Descubra cómo Intlayer funciona. Vea las pasos utilizados por Intlayer en su aplicación. Vea lo que hace los diferentes paquetes.', + }), + + keywords: t({ + en: [ + 'Package', + 'Functioning', + 'Internationalization', + 'Documentation', + 'Intlayer', + 'Next.js', + 'JavaScript', + 'React', + ], + fr: [ + 'Package', + 'Fonctionnement', + 'Internationalisation', + 'Documentación', + 'Intlayer', + 'Next.js', + 'JavaScript', + 'React', + ], + es: [ + 'Package', + 'Funcionamiento', + 'Internacionalización', + 'Documentación', + 'Intlayer', + 'Next.js', + 'JavaScript', + 'React', + ], + }), + }; +}; diff --git a/apps/website/src/app/[locale]/doc/concept/how_works_intlayer/page.tsx b/apps/website/src/app/[locale]/doc/concept/how_works_intlayer/page.tsx new file mode 100644 index 000000000..dbb5901ca --- /dev/null +++ b/apps/website/src/app/[locale]/doc/concept/how_works_intlayer/page.tsx @@ -0,0 +1,16 @@ +import { DocPageLayout } from '@components/DocPage/DocPageLayout'; +import { DocumentationRender } from '@components/DocPage/DocumentationRender'; +import { PageLayout } from '@layouts/PageLayout'; +import type { NextPageIntlayer } from 'next-intlayer'; +import { generateMetadata } from './metadata'; + +export { generateMetadata }; + +const Page: NextPageIntlayer = ({ params: { locale } }) => ( + + + + + +); +export default Page; diff --git a/apps/website/src/components/DocPage/doc-page.content.ts b/apps/website/src/components/DocPage/doc-page.content.ts index dae3df773..c4c0142a9 100644 --- a/apps/website/src/components/DocPage/doc-page.content.ts +++ b/apps/website/src/components/DocPage/doc-page.content.ts @@ -25,6 +25,15 @@ export const navbarContent: DeclarationContent = { key: 'concept', title: t({ fr: 'Concept', en: 'Concept', es: 'Concepto' }), subSections: [ + { + key: 'how_works_intlayer', + title: t({ + en: 'How Intlayer Works', + fr: 'Comment Intlayer fonctionne', + es: 'Cómo funciona Intlayer', + }), + url: PagesRoutes.Doc_HowWorksIntlayer, + }, { key: 'configuration', title: t({ diff --git a/apps/website/src/components/LandingPage/AvailableTechnoSection/index.tsx b/apps/website/src/components/LandingPage/AvailableTechnoSection/index.tsx index b1ec56772..ba0fd1645 100644 --- a/apps/website/src/components/LandingPage/AvailableTechnoSection/index.tsx +++ b/apps/website/src/components/LandingPage/AvailableTechnoSection/index.tsx @@ -4,7 +4,7 @@ import type { FC } from 'react'; import Nextjs from './nextjs.svg'; import React from './reactjs.svg'; import Vite from './vitejs.svg'; -import { ExternalLinks } from '@/Routes'; +import { PagesRoutes } from '@/Routes'; export const AvailableTechnoSection: FC = () => { const { text, react, vite, nextjs } = useIntlayer('available-techno-section'); @@ -14,21 +14,21 @@ export const AvailableTechnoSection: FC = () => { {text}
diff --git a/apps/website/src/components/LandingPage/LandingSection/ActionButtons.tsx b/apps/website/src/components/LandingPage/LandingSection/ActionButtons.tsx index f2818cb37..5b5f8442f 100644 --- a/apps/website/src/components/LandingPage/LandingSection/ActionButtons.tsx +++ b/apps/website/src/components/LandingPage/LandingSection/ActionButtons.tsx @@ -4,7 +4,7 @@ import { Button } from '@intlayer/design-system'; import { useRouter } from 'next/navigation'; import { useIntlayer } from 'next-intlayer'; import type { FC } from 'react'; -import { ExternalLinks } from '@/Routes'; +import { ExternalLinks, PagesRoutes } from '@/Routes'; export const ActionButtons: FC = () => { const { @@ -18,7 +18,7 @@ export const ActionButtons: FC = () => {