From ad33d51489baf5408b814517240d9ec7c0ea8dad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Carlos=20Manzanero=20Dom=C3=ADnguez?= Date: Mon, 7 Oct 2024 16:42:47 -0600 Subject: [PATCH] reestructure content lang --- src/components/post-item.tsx | 12 +- .../a-better-way-for-consuming-content.mdx | 0 .../blog/{ => en}/how-computers-works.mdx | 0 .../i-participated-in-a-hackathon.mdx | 0 ...ting-content-in-spanish-for-my-website.mdx | 0 src/content/blog/{ => en}/peddler-app.mdx | 0 .../{ => en}/rewind-2023-and-future-plans.mdx | 0 .../{ => en}/the-monotony-of-social-media.mdx | 0 src/content/blog/{ => en}/website-2.0.mdx | 0 ...una-mejor-forma-de-consumir-contenido.mdx} | 2 +- .../build-a-fullstack-app copy.mdx} | 0 .../portfolio/{ => en}/human-to-js.mdx | 0 .../{ => en}/next-intl-blog-template.mdx | 0 .../{ => en}/website-migrated-to-astro.mdx | 0 src/content/portfolio/{ => en}/workarise.mdx | 0 src/pages/blog/[...slug].astro | 49 ++++-- src/pages/blog/index.astro | 59 ++++--- src/pages/es/blog/[...slug].astro | 51 ++++++ src/pages/es/blog/index.astro | 52 ++++++ src/pages/es/index.astro | 124 ++++++++++++-- src/pages/es/portfolio/[...slug].astro | 51 ++++++ src/pages/es/portfolio/index.astro | 55 +++++++ src/pages/index.astro | 154 +++++++++++------- src/pages/portfolio/[...slug].astro | 49 ++++-- src/pages/portfolio/index.astro | 63 ++++--- src/utils/format-date.ts | 21 ++- 26 files changed, 579 insertions(+), 163 deletions(-) rename src/content/blog/{ => en}/a-better-way-for-consuming-content.mdx (100%) rename src/content/blog/{ => en}/how-computers-works.mdx (100%) rename src/content/blog/{ => en}/i-participated-in-a-hackathon.mdx (100%) rename src/content/blog/{ => en}/i-will-not-continue-creating-content-in-spanish-for-my-website.mdx (100%) rename src/content/blog/{ => en}/peddler-app.mdx (100%) rename src/content/blog/{ => en}/rewind-2023-and-future-plans.mdx (100%) rename src/content/blog/{ => en}/the-monotony-of-social-media.mdx (100%) rename src/content/blog/{ => en}/website-2.0.mdx (100%) rename src/content/blog/es/{a-better-way-for-consuming-content.mdx => una-mejor-forma-de-consumir-contenido.mdx} (87%) rename src/content/portfolio/{build-a-fullstack-app.mdx => en/build-a-fullstack-app copy.mdx} (100%) rename src/content/portfolio/{ => en}/human-to-js.mdx (100%) rename src/content/portfolio/{ => en}/next-intl-blog-template.mdx (100%) rename src/content/portfolio/{ => en}/website-migrated-to-astro.mdx (100%) rename src/content/portfolio/{ => en}/workarise.mdx (100%) create mode 100644 src/pages/es/blog/[...slug].astro create mode 100644 src/pages/es/blog/index.astro create mode 100644 src/pages/es/portfolio/[...slug].astro create mode 100644 src/pages/es/portfolio/index.astro diff --git a/src/components/post-item.tsx b/src/components/post-item.tsx index cec5525..53fda11 100644 --- a/src/components/post-item.tsx +++ b/src/components/post-item.tsx @@ -6,6 +6,7 @@ type Props = { date: Date | string; title: string; type: "blog" | "portfolio" | "es/videos"; + lang: string; }; export default function PostItem(props: Props) { @@ -16,9 +17,16 @@ export default function PostItem(props: Props) { variant="link" className="px-4 whitespace-normal py-2 hover:no-underline focus:no-underline flex flex-col items-start italic border border-secondary hover:border-foreground focus:border-foreground transition-colors rounded-md" > - + - {formatDate(props.date)} + {formatDate(props.date, props.lang)} {props.title} diff --git a/src/content/blog/a-better-way-for-consuming-content.mdx b/src/content/blog/en/a-better-way-for-consuming-content.mdx similarity index 100% rename from src/content/blog/a-better-way-for-consuming-content.mdx rename to src/content/blog/en/a-better-way-for-consuming-content.mdx diff --git a/src/content/blog/how-computers-works.mdx b/src/content/blog/en/how-computers-works.mdx similarity index 100% rename from src/content/blog/how-computers-works.mdx rename to src/content/blog/en/how-computers-works.mdx diff --git a/src/content/blog/i-participated-in-a-hackathon.mdx b/src/content/blog/en/i-participated-in-a-hackathon.mdx similarity index 100% rename from src/content/blog/i-participated-in-a-hackathon.mdx rename to src/content/blog/en/i-participated-in-a-hackathon.mdx diff --git a/src/content/blog/i-will-not-continue-creating-content-in-spanish-for-my-website.mdx b/src/content/blog/en/i-will-not-continue-creating-content-in-spanish-for-my-website.mdx similarity index 100% rename from src/content/blog/i-will-not-continue-creating-content-in-spanish-for-my-website.mdx rename to src/content/blog/en/i-will-not-continue-creating-content-in-spanish-for-my-website.mdx diff --git a/src/content/blog/peddler-app.mdx b/src/content/blog/en/peddler-app.mdx similarity index 100% rename from src/content/blog/peddler-app.mdx rename to src/content/blog/en/peddler-app.mdx diff --git a/src/content/blog/rewind-2023-and-future-plans.mdx b/src/content/blog/en/rewind-2023-and-future-plans.mdx similarity index 100% rename from src/content/blog/rewind-2023-and-future-plans.mdx rename to src/content/blog/en/rewind-2023-and-future-plans.mdx diff --git a/src/content/blog/the-monotony-of-social-media.mdx b/src/content/blog/en/the-monotony-of-social-media.mdx similarity index 100% rename from src/content/blog/the-monotony-of-social-media.mdx rename to src/content/blog/en/the-monotony-of-social-media.mdx diff --git a/src/content/blog/website-2.0.mdx b/src/content/blog/en/website-2.0.mdx similarity index 100% rename from src/content/blog/website-2.0.mdx rename to src/content/blog/en/website-2.0.mdx diff --git a/src/content/blog/es/a-better-way-for-consuming-content.mdx b/src/content/blog/es/una-mejor-forma-de-consumir-contenido.mdx similarity index 87% rename from src/content/blog/es/a-better-way-for-consuming-content.mdx rename to src/content/blog/es/una-mejor-forma-de-consumir-contenido.mdx index 49175d3..3432226 100644 --- a/src/content/blog/es/a-better-way-for-consuming-content.mdx +++ b/src/content/blog/es/una-mejor-forma-de-consumir-contenido.mdx @@ -1,5 +1,5 @@ --- -title: A Better Way for Consuming Content +title: Una Mejor Forma de Consumir Contenido description: Get your news without visiting websites with algorithms that shows content that you don't want to see. diff --git a/src/content/portfolio/build-a-fullstack-app.mdx b/src/content/portfolio/en/build-a-fullstack-app copy.mdx similarity index 100% rename from src/content/portfolio/build-a-fullstack-app.mdx rename to src/content/portfolio/en/build-a-fullstack-app copy.mdx diff --git a/src/content/portfolio/human-to-js.mdx b/src/content/portfolio/en/human-to-js.mdx similarity index 100% rename from src/content/portfolio/human-to-js.mdx rename to src/content/portfolio/en/human-to-js.mdx diff --git a/src/content/portfolio/next-intl-blog-template.mdx b/src/content/portfolio/en/next-intl-blog-template.mdx similarity index 100% rename from src/content/portfolio/next-intl-blog-template.mdx rename to src/content/portfolio/en/next-intl-blog-template.mdx diff --git a/src/content/portfolio/website-migrated-to-astro.mdx b/src/content/portfolio/en/website-migrated-to-astro.mdx similarity index 100% rename from src/content/portfolio/website-migrated-to-astro.mdx rename to src/content/portfolio/en/website-migrated-to-astro.mdx diff --git a/src/content/portfolio/workarise.mdx b/src/content/portfolio/en/workarise.mdx similarity index 100% rename from src/content/portfolio/workarise.mdx rename to src/content/portfolio/en/workarise.mdx diff --git a/src/pages/blog/[...slug].astro b/src/pages/blog/[...slug].astro index 3b47ec4..616ad08 100644 --- a/src/pages/blog/[...slug].astro +++ b/src/pages/blog/[...slug].astro @@ -4,35 +4,48 @@ import { getCollection } from "astro:content"; import components from "@/components/mdx/wrapper"; import formatDate from "@/utils/format-date"; import type { CollectionEntry } from "astro:content"; +import { getLangFromUrl } from "@/i18n/utils"; interface Props { - post: CollectionEntry<"blog">; + post: CollectionEntry<"blog">; } export async function getStaticPaths() { - const allBlogPosts = await getCollection( - "blog", - ({ data }) => data.draft !== true - ); + const allBlogPosts = await getCollection( + "blog", + ({ data }) => data.draft !== true, + ); + const filterEnPosts = allBlogPosts.map((post) => { + const [lang, ...slug] = post.slug.split("/"); - return allBlogPosts.map((post) => ({ - params: { slug: post.slug }, - props: { post }, - })); + if (lang === "en") + return { + ...post, + slug: slug.toString(), + }; + else null; + }); + + return filterEnPosts.map((post) => ({ + params: { slug: post?.slug }, + props: { post }, + })); } const { post } = Astro.props; const { Content } = await post.render(); + +const lang = getLangFromUrl(Astro.url); --- -
-

{post.data.title}

- -
-

- Posted: - {post.data.date && formatDate(new Date(post.data.date))} -

-
+
+

{post.data.title}

+ +
+

+ Posted: + {post.data.date && formatDate(new Date(post.data.date), lang)} +

+
diff --git a/src/pages/blog/index.astro b/src/pages/blog/index.astro index 4edb269..ce03a41 100644 --- a/src/pages/blog/index.astro +++ b/src/pages/blog/index.astro @@ -1,35 +1,52 @@ --- import PostItem from "@/components/post-item"; +import { getLangFromUrl } from "@/i18n/utils"; import Layout from "@/layouts/Layout.astro"; import { sortContentByDate } from "@/utils/sorts"; import { getCollection } from "astro:content"; const pageData = { - title: "Blog", - description: "Long format about thoughts and other topics.", + title: "Blog", + description: "Long format about thoughts and other topics.", }; const allPosts = await getCollection("blog", ({ data }) => data.draft !== true); -sortContentByDate(allPosts); +const filterEnPosts = allPosts.map((post) => { + const [lang, ...slug] = post.slug.split("/"); + + if (lang === "en") + return { + ...post, + slug: slug.toString(), + }; + else null; +}); +sortContentByDate(filterEnPosts); + +const lang = getLangFromUrl(Astro.url); --- -
-

{pageData.title}

-

{pageData.description}

-
-
    - { - allPosts.map((blogpost: any) => ( -
  • - -
  • - )) - } -
+
+

{pageData.title}

+

{pageData.description}

+
+
    + { + filterEnPosts.map( + (blogpost) => + blogpost && ( +
  • + +
  • + ), + ) + } +
diff --git a/src/pages/es/blog/[...slug].astro b/src/pages/es/blog/[...slug].astro new file mode 100644 index 0000000..83aa48d --- /dev/null +++ b/src/pages/es/blog/[...slug].astro @@ -0,0 +1,51 @@ +--- +import Layout from "@/layouts/Layout.astro"; +import { getCollection } from "astro:content"; +import components from "@/components/mdx/wrapper"; +import formatDate from "@/utils/format-date"; +import type { CollectionEntry } from "astro:content"; +import { getLangFromUrl } from "@/i18n/utils"; + +interface Props { + post: CollectionEntry<"blog">; +} + +export async function getStaticPaths() { + const allBlogPosts = await getCollection( + "blog", + ({ data }) => data.draft !== true, + ); + const filterEsPosts = allBlogPosts.map((post) => { + const [lang, ...slug] = post.slug.split("/"); + + if (lang === "es") + return { + ...post, + slug: slug.toString(), + }; + else null; + }); + + return filterEsPosts.map((post) => ({ + params: { slug: post?.slug }, + props: { post }, + })); +} + +const { post } = Astro.props; +const { Content } = await post.render(); + +const lang = getLangFromUrl(Astro.url); +--- + + +
+

{post.data.title}

+ +
+

+ Publicado: + {post.data.date && formatDate(new Date(post.data.date), lang)} +

+
+
diff --git a/src/pages/es/blog/index.astro b/src/pages/es/blog/index.astro new file mode 100644 index 0000000..659902f --- /dev/null +++ b/src/pages/es/blog/index.astro @@ -0,0 +1,52 @@ +--- +import PostItem from "@/components/post-item"; +import { getLangFromUrl } from "@/i18n/utils"; +import Layout from "@/layouts/Layout.astro"; +import { sortContentByDate } from "@/utils/sorts"; +import { getCollection } from "astro:content"; + +const pageData = { + title: "Blog", + description: "Formato largo sobre pensamientos y otros temas.", +}; + +const allPosts = await getCollection("blog", ({ data }) => data.draft !== true); +const filterEsPosts = allPosts.map((post) => { + const [lang, ...slug] = post.slug.split("/"); + + if (lang === "es") + return { + ...post, + slug: slug.toString(), + }; + else null; +}); +sortContentByDate(filterEsPosts); + +const lang = getLangFromUrl(Astro.url); +--- + + +
+

{pageData.title}

+

{pageData.description}

+
+
    + { + filterEsPosts.map( + (post) => + post && ( +
  • + +
  • + ), + ) + } +
+
diff --git a/src/pages/es/index.astro b/src/pages/es/index.astro index 40a0a29..f1b953d 100644 --- a/src/pages/es/index.astro +++ b/src/pages/es/index.astro @@ -1,24 +1,114 @@ --- +import LinkButton from "@/components/link-button"; +import PostItem from "@/components/post-item"; +import { getLangFromUrl } from "@/i18n/utils"; import Layout from "@/layouts/Layout.astro"; +import { sortContentByDate } from "@/utils/sorts"; +import { getCollection } from "astro:content"; + +const allPosts = await getCollection("blog", ({ data }) => data.draft !== true); +const allEsPosts = allPosts.map((post) => { + const [lang, ...slug] = post.slug.split("/"); + + if (lang === "es") + return { + ...post, + slug: slug.toString(), + }; + else null; +}); +sortContentByDate(allEsPosts); +const last3Blogs = allEsPosts.slice(0, 3); + +const allProjects = await getCollection( + "portfolio", + ({ data }) => data.draft !== true, +); +const allEnProjects = allProjects.map((project) => { + const [lang, ...slug] = project.slug.split("/"); + + if (lang === "es") + return { + ...project, + slug: slug.toString(), + }; + else null; +}); +sortContentByDate(allEnProjects); +const last3Projects = allEnProjects.slice(0, 3); + +const lang = getLangFromUrl(Astro.url); --- -
-

Bienvenido a mi dominio, extraño.

-

- Soy juancmandev; Desarrollador Web, entusiasta de Linux y defensor de la privacidad. -

-

- Este es mi website, un pedazo de Internet al que puedo - llamar hogar. Aquí comparto mi pasión por proyectos open - source y otros temas. -

-
+
+

Bienvenido a mi dominio, extraño.

+

+ Soy juancmandev; Desarrollador Web, entusiasta de Linux y defensor de la privacidad. +

+

+ Este es mi website, un pedazo de Internet al que + puedo llamar hogar. Aquí comparto mi pasión por + proyectos open source y otros temas. +

+
+

Últimos posts

+
    + { + last3Blogs.map( + (blogpost) => + blogpost && ( +
  • + +
  • + ), + ) + } +
+ Más posts +
+
+

Últimos proyectos

+
    + { + last3Projects.map( + (project) => + project && ( +
  • + +
  • + ), + ) + } +
+ More projects +
+
diff --git a/src/pages/es/portfolio/[...slug].astro b/src/pages/es/portfolio/[...slug].astro new file mode 100644 index 0000000..f94a5a5 --- /dev/null +++ b/src/pages/es/portfolio/[...slug].astro @@ -0,0 +1,51 @@ +--- +import Layout from "@/layouts/Layout.astro"; +import { getCollection } from "astro:content"; +import components from "@/components/mdx/wrapper"; +import formatDate from "@/utils/format-date"; +import type { CollectionEntry } from "astro:content"; +import { getLangFromUrl } from "@/i18n/utils"; + +interface Props { + project: CollectionEntry<"portfolio">; +} + +export async function getStaticPaths() { + const allProjects = await getCollection( + "portfolio", + ({ data }) => data.draft !== true, + ); + const filterEnProjects = allProjects.map((project) => { + const [lang, ...slug] = project.slug.split("/"); + + if (lang === "es") + return { + ...project, + slug: slug.toString(), + }; + else null; + }); + + return filterEnProjects.map((project) => ({ + params: { slug: project?.slug }, + props: { project }, + })); +} + +const { project } = Astro.props; +const { Content } = await project.render(); + +const lang = getLangFromUrl(Astro.url); +--- + + +
+

{project.data.title}

+ +
+

+ Publicado: + {project.data.date && formatDate(new Date(project.data.date), lang)} +

+
+
diff --git a/src/pages/es/portfolio/index.astro b/src/pages/es/portfolio/index.astro new file mode 100644 index 0000000..190c8c0 --- /dev/null +++ b/src/pages/es/portfolio/index.astro @@ -0,0 +1,55 @@ +--- +import PostItem from "@/components/post-item"; +import { getLangFromUrl } from "@/i18n/utils"; +import Layout from "@/layouts/Layout.astro"; +import { sortContentByDate } from "@/utils/sorts"; +import { getCollection } from "astro:content"; + +const pageData = { + title: "Portfolio", + description: "Revisa mis proyectos.", +}; + +const allProjects = await getCollection( + "portfolio", + ({ data }) => data.draft !== true, +); +const allEsProjects = allProjects.map((project) => { + const [lang, ...slug] = project.slug.split("/"); + + if (lang === "es") + return { + ...project, + slug: slug.toString(), + }; + else null; +}); +sortContentByDate(allEsProjects); + +const lang = getLangFromUrl(Astro.url); +--- + + +
+

{pageData.title}

+

{pageData.description}

+
+
    + { + allEsProjects.map( + (project) => + project && ( +
  • + +
  • + ), + ) + } +
+
diff --git a/src/pages/index.astro b/src/pages/index.astro index d36a6e8..f40dd22 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -4,74 +4,106 @@ import LinkButton from "@/components/link-button"; import { getCollection } from "astro:content"; import PostItem from "@/components/post-item"; import { sortContentByDate } from "@/utils/sorts"; +import { getLangFromUrl } from "@/i18n/utils"; const allPosts = await getCollection("blog", ({ data }) => data.draft !== true); -sortContentByDate(allPosts); -const last3Blogs = allPosts.slice(0, 3); +const allEnPosts = allPosts.map((post) => { + const [lang, ...slug] = post.slug.split("/"); + + if (lang !== "es") + return { + ...post, + slug: slug.toString(), + }; + else null; +}); +sortContentByDate(allEnPosts); +const last3Blogs = allEnPosts.slice(0, 3); const allProjects = await getCollection( - "portfolio", - ({ data }) => data.draft !== true + "portfolio", + ({ data }) => data.draft !== true, ); -sortContentByDate(allProjects); -const last3Projects = allProjects.slice(0, 3); +const allEnProjects = allProjects.map((project) => { + const [lang, ...slug] = project.slug.split("/"); + + if (lang !== "es") + return { + ...project, + slug: slug.toString(), + }; + else null; +}); +sortContentByDate(allEnProjects); +const last3Projects = allEnProjects.slice(0, 3); + +const lang = getLangFromUrl(Astro.url); --- -
-

Welcome to my domain, stranger.

-

- I am juancmandev; Web Developer, Linux enthusiast, and privacy defender. -

-

- This is my website, a piece of the Internet that I could - call my home base. Here, I share my passion about open - source projects and other topics. -

-
-

Latest posts

-
    - { - last3Blogs.map((blogpost: any) => ( -
  • - -
  • - )) - } -
- More posts -
-
-

Latest projects

-
    - { - last3Projects.map((project: any) => ( -
  • - -
  • - )) - } -
- More projects -
-
+
+

Welcome to my domain, stranger.

+

+ I am juancmandev; Web Developer, Linux enthusiast, and privacy defender. +

+

+ This is my website, a piece of the Internet that I + could call my home base. Here, I share my passion + about open source projects and other topics. +

+
+

Latest posts

+
    + { + last3Blogs.map((blogpost: any) => ( +
  • + +
  • + )) + } +
+ More posts +
+
+

Latest projects

+
    + { + last3Projects.map( + (project) => + project && ( +
  • + +
  • + ), + ) + } +
+ More projects +
+
diff --git a/src/pages/portfolio/[...slug].astro b/src/pages/portfolio/[...slug].astro index aab911e..1017b7a 100644 --- a/src/pages/portfolio/[...slug].astro +++ b/src/pages/portfolio/[...slug].astro @@ -4,35 +4,48 @@ import { getCollection } from "astro:content"; import components from "@/components/mdx/wrapper"; import formatDate from "@/utils/format-date"; import type { CollectionEntry } from "astro:content"; +import { getLangFromUrl } from "@/i18n/utils"; interface Props { - project: CollectionEntry<"portfolio">; + project: CollectionEntry<"portfolio">; } export async function getStaticPaths() { - const allProjects = await getCollection( - "portfolio", - ({ data }) => data.draft !== true - ); + const allProjects = await getCollection( + "portfolio", + ({ data }) => data.draft !== true, + ); + const filterEnProjects = allProjects.map((project) => { + const [lang, ...slug] = project.slug.split("/"); - return allProjects.map((project) => ({ - params: { slug: project.slug }, - props: { project }, - })); + if (lang === "en") + return { + ...project, + slug: slug.toString(), + }; + else null; + }); + + return filterEnProjects.map((project) => ({ + params: { slug: project?.slug }, + props: { project }, + })); } const { project } = Astro.props; const { Content } = await project.render(); + +const lang = getLangFromUrl(Astro.url); --- -
-

{project.data.title}

- -
-

- Posted: - {project.data.date && formatDate(new Date(project.data.date))} -

-
+
+

{project.data.title}

+ +
+

+ Posted: + {project.data.date && formatDate(new Date(project.data.date), lang)} +

+
diff --git a/src/pages/portfolio/index.astro b/src/pages/portfolio/index.astro index 5ce723e..6ca966e 100644 --- a/src/pages/portfolio/index.astro +++ b/src/pages/portfolio/index.astro @@ -1,38 +1,55 @@ --- import PostItem from "@/components/post-item"; +import { getLangFromUrl } from "@/i18n/utils"; import Layout from "@/layouts/Layout.astro"; import { sortContentByDate } from "@/utils/sorts"; import { getCollection } from "astro:content"; const pageData = { - title: "Portfolio", - description: "Check my projects.", + title: "Portfolio", + description: "Check my projects.", }; const allProjects = await getCollection( - "portfolio", - ({ data }) => data.draft !== true + "portfolio", + ({ data }) => data.draft !== true, ); -sortContentByDate(allProjects); +const allEnProjects = allProjects.map((project) => { + const [lang, ...slug] = project.slug.split("/"); + + if (lang === "en") + return { + ...project, + slug: slug, + }; + else null; +}); +sortContentByDate(allEnProjects); + +const lang = getLangFromUrl(Astro.url); --- -
-

{pageData.title}

-

{pageData.description}

-
-
    - { - allProjects.map((project: any) => ( -
  • - -
  • - )) - } -
+
+

{pageData.title}

+

{pageData.description}

+
+
    + { + allEnProjects.map( + (project) => + project && ( +
  • + +
  • + ), + ) + } +
diff --git a/src/utils/format-date.ts b/src/utils/format-date.ts index defa5c8..7458ad7 100644 --- a/src/utils/format-date.ts +++ b/src/utils/format-date.ts @@ -12,12 +12,29 @@ const months = [ "November", "December", ]; +const meses = [ + "Enero", + "Febrero", + "Marzo", + "Abril", + "Mayo", + "Junio", + "Julio", + "Agosto", + "Septiembre", + "Octubre", + "Noviembre", + "Diciembre", +]; -export default function formatDate(date: Date | string) { +export default function formatDate(date: Date | string, lang: string) { const newDate = new Date(date); const month = months[newDate.getMonth()]; + const mes = meses[newDate.getMonth()]; const day = newDate.getDate(); const year = newDate.getFullYear(); - return `${month} ${day}, ${year}`; + return lang !== "es" + ? `${month} ${day}, ${year}` + : `${day} de ${mes} del ${year}`; }