diff --git a/astro.config.mjs b/astro.config.mjs
index 0409e02..bae7e44 100755
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -7,26 +7,12 @@ import { defineConfig, squooshImageService } from "astro/config";
import remarkCollapse from "remark-collapse";
import remarkToc from "remark-toc";
import config from "./src/config/config.json";
-import languagesJSON from "./src/config/language.json";
-const { default_language } = config.settings;
-
-const supportedLang = [...languagesJSON.map((lang) => lang.languageCode)];
-const disabledLanguages = config.settings.disable_languages;
-
-// Filter out disabled languages from supportedLang
-const filteredSupportedLang = supportedLang.filter(
- (lang) => !disabledLanguages.includes(lang),
-);
// https://astro.build/config
export default defineConfig({
site: config.site.base_url ? config.site.base_url : "http://examplesite.com",
base: config.site.base_path ? config.site.base_path : "/",
- trailingSlash: config.site.trailing_slash ? "always" : "ignore",
- i18n: {
- locales: filteredSupportedLang,
- defaultLocale: default_language,
- },
+ trailingSlash: config.site.trailing_slash ? "always" : "never",
image: {
service: squooshImageService(),
},
diff --git a/package.json b/package.json
index b2a7539..795bbbc 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "astroplate",
- "version": "4.0.1",
+ "version": "4.1.0",
"description": "Astro and Tailwindcss boilerplate",
"author": "zeon.studio",
"license": "MIT",
@@ -10,10 +10,8 @@
"build": "yarn generate-json && astro build",
"preview": "astro preview",
"format": "prettier -w ./src",
- "check": "astro check",
"generate-json": "node scripts/jsonGenerator.js",
- "remove-darkmode": "node scripts/removeDarkmode.js && yarn format",
- "remove-multilang": "node scripts/removeMultilang.js && yarn format"
+ "remove-darkmode": "node scripts/removeDarkmode.js && yarn format"
},
"dependencies": {
"@astrojs/check": "^0.9.3",
diff --git a/scripts/jsonGenerator.js b/scripts/jsonGenerator.js
index 5881da2..8aee1ac 100644
--- a/scripts/jsonGenerator.js
+++ b/scripts/jsonGenerator.js
@@ -1,66 +1,49 @@
const fs = require("fs");
const path = require("path");
const matter = require("gray-matter");
-const languages = require("../src/config/language.json");
+const CONTENT_DEPTH = 2;
const JSON_FOLDER = "./.json";
-const CONTENT_ROOT = "src/content";
-const CONTENT_DEPTH = 3;
-const BLOG_FOLDER = "blog";
+const BLOG_FOLDER = "src/content/blog";
// get data from markdown
-const getData = (folder, groupDepth, langIndex = 0) => {
- const getPaths = languages
- .map((lang, index) => {
- const langFolder = lang.contentDir ? lang.contentDir : lang.languageCode;
- const dir = path.join(CONTENT_ROOT, folder, langFolder);
- return fs
- .readdirSync(dir)
- .filter(
- (filename) =>
- !filename.startsWith("-") &&
- (filename.endsWith(".md") || filename.endsWith(".mdx")),
- )
- .flatMap((filename) => {
- const filepath = path.join(dir, filename);
- const stats = fs.statSync(filepath);
- const isFolder = stats.isDirectory();
+const getData = (folder, groupDepth) => {
+ const getPath = fs.readdirSync(folder);
+ const removeIndex = getPath.filter((item) => !item.startsWith("-"));
- if (isFolder) {
- return getData(filepath, groupDepth, index);
- } else {
- const file = fs.readFileSync(filepath, "utf-8");
- const { data, content } = matter(file);
- const pathParts = filepath.split(path.sep);
+ const getPaths = removeIndex.flatMap((filename) => {
+ const filepath = path.join(folder, filename);
+ const stats = fs.statSync(filepath);
+ const isFolder = stats.isDirectory();
- let slug;
- if (data.slug) {
- const slugParts = data.slug.split("/");
- slugParts[0] = BLOG_FOLDER;
- slug = slugParts.join("/");
- } else {
- slug = pathParts
- .slice(CONTENT_DEPTH)
- .join("/")
- .replace(/\.[^/.]+$/, "");
- slug = `${BLOG_FOLDER}/${slug.split("/").slice(1).join("/")}`;
- }
- data.slug = slug;
- const group = "blog";
+ if (isFolder) {
+ return getData(filepath, groupDepth);
+ } else if (filename.endsWith(".md") || filename.endsWith(".mdx")) {
+ const file = fs.readFileSync(filepath, "utf-8");
+ const { data, content } = matter(file);
+ const pathParts = filepath.split(path.sep);
+ const slug =
+ data.slug ||
+ pathParts
+ .slice(CONTENT_DEPTH)
+ .join("/")
+ .replace(/\.[^/.]+$/, "");
+ const group = pathParts[groupDepth];
- return {
- lang: languages[index].languageCode, // Set the correct language code dynamically
- group: group,
- slug: data.slug,
- frontmatter: data,
- content: content,
- };
- }
- });
- })
- .flat();
+ return {
+ group: group,
+ slug: slug,
+ frontmatter: data,
+ content: content,
+ };
+ } else {
+ return [];
+ }
+ });
- const publishedPages = getPaths.filter((page) => !page.frontmatter?.draft);
+ const publishedPages = getPaths.filter(
+ (page) => !page.frontmatter?.draft && page,
+ );
return publishedPages;
};
@@ -73,10 +56,10 @@ try {
// create json files
fs.writeFileSync(
`${JSON_FOLDER}/posts.json`,
- JSON.stringify(getData(BLOG_FOLDER, 3)),
+ JSON.stringify(getData(BLOG_FOLDER, 2)),
);
- // merge json files for search
+ // merger json files for search
const posts = require(`../${JSON_FOLDER}/posts.json`);
const search = [...posts];
fs.writeFileSync(`${JSON_FOLDER}/search.json`, JSON.stringify(search));
diff --git a/scripts/removeMultilang.js b/scripts/removeMultilang.js
deleted file mode 100644
index d885069..0000000
--- a/scripts/removeMultilang.js
+++ /dev/null
@@ -1,72 +0,0 @@
-const fs = require("fs");
-const path = require("path");
-const languages = require("../src/config/language.json");
-
-// Filter out the English language
-const englishLang = languages.filter((item) => item.languageCode === "en");
-const filterLangs = languages.filter((item) => item.languageCode !== "en");
-const contentDir = "src/content";
-const configDir = "src/config";
-const i18nDir = "src/i18n";
-
-// Update language.json to only include the English language
-fs.writeFileSync(
- path.join(configDir, "language.json"),
- JSON.stringify(englishLang, null, 2),
-);
-
-// Remove content directories for languages other than English
-filterLangs.forEach((lang) => {
- const langContentDir = path.join(contentDir, lang.contentDir);
- fs.rm(langContentDir, { recursive: true, force: true }, (err) => {
- if (err) {
- console.error(`Error deleting folder ${langContentDir}:`, err);
- return;
- }
- console.log(`Folder ${langContentDir} deleted successfully`);
- });
-});
-
-// Remove other menu.{lang}.json files except menu.en.json
-fs.readdir(configDir, (err, files) => {
- if (err) {
- console.error("Error reading config directory:", err);
- return;
- }
-
- files.forEach((file) => {
- if (file.startsWith("menu.") && file !== "menu.en.json") {
- const filePath = path.join(configDir, file);
- fs.unlink(filePath, (err) => {
- if (err) {
- console.error(`Error deleting file ${filePath}:`, err);
- return;
- }
- console.log(`File ${filePath} deleted successfully`);
- });
- }
- });
-});
-
-// Remove other language files from i18n folder except en.json
-fs.readdir(i18nDir, (err, files) => {
- if (err) {
- console.error("Error reading i18n directory:", err);
- return;
- }
-
- files.forEach((file) => {
- if (file !== "en.json") {
- const filePath = path.join(i18nDir, file);
- fs.unlink(filePath, (err) => {
- if (err) {
- console.error(`Error deleting file ${filePath}:`, err);
- return;
- }
- console.log(`File ${filePath} deleted successfully`);
- });
- }
- });
-});
-
-console.log("Cleanup completed.");
diff --git a/src/config/config.json b/src/config/config.json
index 3b3d910..683fe50 100755
--- a/src/config/config.json
+++ b/src/config/config.json
@@ -19,10 +19,7 @@
"default_theme": "system",
"pagination": 2,
"summary_length": 200,
- "blog_folder": "blog",
- "default_language": "en",
- "disable_languages": [],
- "default_language_in_subdir": false
+ "blog_folder": "blog"
},
"params": {
diff --git a/src/config/language.json b/src/config/language.json
deleted file mode 100644
index 706b137..0000000
--- a/src/config/language.json
+++ /dev/null
@@ -1,14 +0,0 @@
-[
- {
- "languageName": "En",
- "languageCode": "en",
- "contentDir": "english",
- "weight": 1
- },
- {
- "languageName": "Fr",
- "languageCode": "fr",
- "contentDir": "french",
- "weight": 2
- }
-]
diff --git a/src/config/menu.en.json b/src/config/menu.en.json
deleted file mode 100644
index 9f52c3a..0000000
--- a/src/config/menu.en.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "main": [
- { "name": "Home", "url": "/" },
- { "name": "About", "url": "/about" },
- { "name": "Elements", "url": "/elements" },
- {
- "name": "Pages",
- "url": "",
- "hasChildren": true,
- "children": [
- { "name": "Contact", "url": "/contact" },
- { "name": "Blog", "url": "/blog" },
- { "name": "Authors", "url": "/authors" },
- { "name": "Categories", "url": "/categories" },
- { "name": "Tags", "url": "/tags" },
- { "name": "404 Page", "url": "/404" }
- ]
- }
- ],
- "footer": [
- { "name": "Elements", "url": "/elements" },
- { "name": "Privacy Policy", "url": "/privacy-policy" }
- ]
-}
diff --git a/src/config/menu.fr.json b/src/config/menu.fr.json
deleted file mode 100644
index 495c883..0000000
--- a/src/config/menu.fr.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "main": [
- { "name": "Accueil", "url": "/" },
- { "name": "À propos", "url": "/about" },
- { "name": "Éléments", "url": "/elements" },
- {
- "name": "Pages",
- "url": "",
- "hasChildren": true,
- "children": [
- { "name": "Contact", "url": "/contact" },
- { "name": "Blog", "url": "/blog" },
- { "name": "Auteurs", "url": "/authors" },
- { "name": "Catégories", "url": "/categories" },
- { "name": "Étiquettes", "url": "/tags" },
- { "name": "Page 404", "url": "/404" }
- ]
- }
- ],
- "footer": [
- { "name": "Éléments", "url": "/elements" },
- { "name": "Politique de confidentialité", "url": "/privacy-policy" }
- ]
-}
diff --git a/src/config/menu.json b/src/config/menu.json
new file mode 100755
index 0000000..3502218
--- /dev/null
+++ b/src/config/menu.json
@@ -0,0 +1,57 @@
+{
+ "main": [
+ {
+ "name": "Home",
+ "url": "/"
+ },
+ {
+ "name": "About",
+ "url": "/about"
+ },
+ {
+ "name": "Elements",
+ "url": "/elements"
+ },
+ {
+ "name": "Pages",
+ "url": "",
+ "hasChildren": true,
+ "children": [
+ {
+ "name": "Contact",
+ "url": "/contact"
+ },
+ {
+ "name": "Blog",
+ "url": "/blog"
+ },
+ {
+ "name": "Authors",
+ "url": "/authors"
+ },
+ {
+ "name": "Categories",
+ "url": "/categories"
+ },
+ {
+ "name": "Tags",
+ "url": "/tags"
+ },
+ {
+ "name": "404 Page",
+ "url": "/404"
+ }
+ ]
+ }
+ ],
+ "footer": [
+ {
+ "name": "Elements",
+ "url": "/elements"
+ },
+ {
+ "name": "Privacy Policy",
+ "url": "/privacy-policy"
+ }
+ ]
+}
diff --git a/src/content/about/english/-index.md b/src/content/about/-index.md
similarity index 100%
rename from src/content/about/english/-index.md
rename to src/content/about/-index.md
diff --git a/src/content/about/french/-index.md b/src/content/about/french/-index.md
deleted file mode 100644
index 041c6ad..0000000
--- a/src/content/about/french/-index.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: "Hé, je suis John Doe !"
-meta_title: "About"
-description: "this is meta description"
-image: "/images/avatar.png"
-draft: false
----
-
-L'entreprise elle-même est une entreprise très prospère. Ils ne connaissent pas les bienfaits du corps, ou sauf qu'ils le recevront à d'autres moments, le tout, les temps de travail, qu'il déteste à partir de ce moment mais. Il fuit les plaisirs perçus pour être supposés n'être rien, tout ou, et la douleur est ce qui est la plus grande option, car cela lui est facile, et avec ce que cela s'ensuit, ils lui procurent de la douleur et ainsi de suite ! Car ledit expédient de la vérité repousse le plaisir et empêche la douleur, ils fournissent comme si
diff --git a/src/content/authors/english/-index.md b/src/content/authors/-index.md
similarity index 100%
rename from src/content/authors/english/-index.md
rename to src/content/authors/-index.md
diff --git a/src/content/authors/french/-index.md b/src/content/authors/french/-index.md
deleted file mode 100644
index 517a9bf..0000000
--- a/src/content/authors/french/-index.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: "Auteurs"
-meta_title: ""
-description: "this is meta description"
----
diff --git a/src/content/authors/french/john-doe.md b/src/content/authors/french/john-doe.md
deleted file mode 100644
index 857f439..0000000
--- a/src/content/authors/french/john-doe.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: John Doe
-email: johndoe@email.com
-image: "/images/avatar.png"
-description: this is meta description
-social:
- - name: github
- icon: FaGithub
- link: https://github.com
-
- - name: twitter
- icon: FaTwitter
- link: https://twitter.com
-
- - name: linkedin
- icon: FaLinkedin
- link: https://linkedin.com
----
-
-lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr navigation et dolore magna aliqua.
diff --git a/src/content/authors/french/sam-wilson.md b/src/content/authors/french/sam-wilson.md
deleted file mode 100644
index d3ab0e5..0000000
--- a/src/content/authors/french/sam-wilson.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Sam Wilson
-email: samwilson@email.com
-image: "/images/avatar.png"
-description: this is meta description
-social:
- - name: github
- icon: FaGithub
- link: https://github.com
-
- - name: twitter
- icon: FaTwitter
- link: https://twitter.com
-
- - name: linkedin
- icon: FaLinkedin
- link: https://linkedin.com
----
-
-lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr navigation et dolore magna aliqua.
diff --git a/src/content/authors/french/william-jacob.md b/src/content/authors/french/william-jacob.md
deleted file mode 100644
index 193589a..0000000
--- a/src/content/authors/french/william-jacob.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Guillaume Jacob
-email: williamjacob@email.com
-image: "/images/avatar.png"
-description: this is meta description
-social:
- - name: github
- icon: FaGithub
- link: https://github.com
-
- - name: twitter
- icon: FaTwitter
- link: https://twitter.com
-
- - name: linkedin
- icon: FaLinkedin
- link: https://linkedin.com
----
-
-lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr navigation et dolore magna aliqua.
diff --git a/src/content/authors/english/john-doe.md b/src/content/authors/john-doe.md
similarity index 100%
rename from src/content/authors/english/john-doe.md
rename to src/content/authors/john-doe.md
diff --git a/src/content/authors/english/sam-wilson.md b/src/content/authors/sam-wilson.md
similarity index 100%
rename from src/content/authors/english/sam-wilson.md
rename to src/content/authors/sam-wilson.md
diff --git a/src/content/authors/english/william-jacob.md b/src/content/authors/william-jacob.md
similarity index 100%
rename from src/content/authors/english/william-jacob.md
rename to src/content/authors/william-jacob.md
diff --git a/src/content/blog/english/-index.md b/src/content/blog/-index.md
similarity index 100%
rename from src/content/blog/english/-index.md
rename to src/content/blog/-index.md
diff --git a/src/content/blog/french/-index.md b/src/content/blog/french/-index.md
deleted file mode 100755
index eac3331..0000000
--- a/src/content/blog/french/-index.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: "Articles de blog"
-meta_title: ""
-description: "Ceci est une méta-description"
----
diff --git a/src/content/blog/french/post-1.md b/src/content/blog/french/post-1.md
deleted file mode 100755
index 8d1a370..0000000
--- a/src/content/blog/french/post-1.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: "Comment créer une application avec des technologies modernes"
-meta_title: ""
-description: "Ceci est une méta-description"
-date: 2022-04-04T05:00:00Z
-image: "/images/image-placeholder.png"
-categories: ["french","Application", "Data"]
-author: "John Doe"
-tags: ["nextjs", "tailwind", "react"]
-draft: false
----
-
-Personne ne veut même sortir un maquillage de l'urne des soins empoisonnés. C'était un week-end. Je suis un footballeur complet. Pour boire, le lac occupe le plus grand porche. Chacune des cibles de la vie ne flatte pas Euismod.
-
-L'entreprise elle-même est une entreprise très prospère. Personne ne prend même la peine de l'ouvrir. Alors je vais ouvrir la naissance pour choisir ? Être rejeté par certaines personnes est un choix commode du présent pour ressentir une douleur comme la sienne !
-
-## Design Créatif
-
-Car en guise de maquillage, l'urne du poison C'était un week-end. Je suis un footballeur complet. Pour boire, le lac occupe le plus grand porche. Chacune des cibles de la vie ne flatte pas Euismod.
-
-> Le client lui-même doit pouvoir poursuivre l'adipisicing. Personne ne prend même la peine de l'ouvrir. Alors je vais ouvrir la naissance pour choisir ? Être rejeté par certaines personnes est un choix commode du présent pour ressentir une douleur comme la sienne !
-
-L'entreprise elle-même est une entreprise très prospère. Personne ne prend même la peine de l'ouvrir. Alors je vais ouvrir la naissance pour choisir ? Être rejeté par certaines personnes est un choix commode du présent pour ressentir une douleur comme la sienne !
diff --git a/src/content/blog/french/post-2.md b/src/content/blog/french/post-2.md
deleted file mode 100755
index 38a17df..0000000
--- a/src/content/blog/french/post-2.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: "Comment créer une application avec des technologies modernes"
-meta_title: ""
-description: "Ceci est une méta-description"
-date: 2022-04-04T05:00:00Z
-image: "/images/image-placeholder.png"
-categories: ["Technology", "Data"]
-author: "Sam Wilson"
-tags: ["technology", "tailwind"]
-draft: false
----
-
-Personne ne veut même sortir un maquillage de l'urne des soins empoisonnés. C'était un week-end. Je suis un footballeur complet. Pour boire, le lac occupe le plus grand porche. Chacune des cibles de la vie ne flatte pas Euismod.
-
-L'entreprise elle-même est une entreprise très prospère. Personne ne prend même la peine de l'ouvrir. Alors je vais ouvrir la naissance pour choisir ? Être rejeté par certaines personnes est un choix commode du présent pour ressentir une douleur comme la sienne !
-
-## Design Créatif
-
-Car en guise de maquillage, l'urne du poison C'était un week-end. Je suis un footballeur complet. Pour boire, le lac occupe le plus grand porche. Chacune des cibles de la vie ne flatte pas Euismod.
-
-> Le client lui-même doit pouvoir poursuivre l'adipisicing. Personne ne prend même la peine de l'ouvrir. Alors je vais ouvrir la naissance pour choisir ? Être rejeté par certaines personnes est un choix commode du présent pour ressentir une douleur comme la sienne !
-
-L'entreprise elle-même est une entreprise très prospère. Personne ne prend même la peine de l'ouvrir. Alors je vais ouvrir la naissance pour choisir ? Être rejeté par certaines personnes est un choix commode du présent pour ressentir une douleur comme la sienne !
diff --git a/src/content/blog/french/post-3.md b/src/content/blog/french/post-3.md
deleted file mode 100755
index 7c1fb81..0000000
--- a/src/content/blog/french/post-3.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: "Comment créer une application avec des technologies modernes"
-meta_title: ""
-description: "Ceci est une méta-description"
-date: 2022-04-04T05:00:00Z
-image: "/images/image-placeholder.png"
-categories: ["Software"]
-author: "John Doe"
-tags: ["software", "tailwind"]
-draft: false
----
-
-Personne ne veut même sortir un maquillage de l'urne des soins empoisonnés. C'était un week-end. Je suis un footballeur complet. Pour boire, le lac occupe le plus grand porche. Chacune des cibles de la vie ne flatte pas Euismod.
-
-L'entreprise elle-même est une entreprise très prospère. Personne ne prend même la peine de l'ouvrir. Alors je vais ouvrir la naissance pour choisir ? Être rejeté par certaines personnes est un choix commode du présent pour ressentir une douleur comme la sienne !
-
-## Design Créatif
-
-Car en guise de maquillage, l'urne du poison C'était un week-end. Je suis un footballeur complet. Pour boire, le lac occupe le plus grand porche. Chacune des cibles de la vie ne flatte pas Euismod.
-
-> Le client lui-même doit pouvoir poursuivre l'adipisicing. Personne ne prend même la peine de l'ouvrir. Alors je vais ouvrir la naissance pour choisir ? Être rejeté par certaines personnes est un choix commode du présent pour ressentir une douleur comme la sienne !
-
-L'entreprise elle-même est une entreprise très prospère. Personne ne prend même la peine de l'ouvrir. Alors je vais ouvrir la naissance pour choisir ? Être rejeté par certaines personnes est un choix commode du présent pour ressentir une douleur comme la sienne !
diff --git a/src/content/blog/french/post-4.md b/src/content/blog/french/post-4.md
deleted file mode 100755
index d489e36..0000000
--- a/src/content/blog/french/post-4.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: "Comment créer une application avec des technologies modernes"
-meta_title: ""
-description: "Ceci est une méta-description"
-date: 2022-04-04T05:00:00Z
-image: "/images/image-placeholder.png"
-categories: ["Architecture"]
-author: "John Doe"
-tags: ["silicon", "technology"]
-draft: false
----
-
-Personne ne veut même sortir un maquillage de l'urne des soins empoisonnés. C'était un week-end. Je suis un footballeur complet. Pour boire, le lac occupe le plus grand porche. Chacune des cibles de la vie ne flatte pas Euismod.
-
-L'entreprise elle-même est une entreprise très prospère. Personne ne prend même la peine de l'ouvrir. Alors je vais ouvrir la naissance pour choisir ? Être rejeté par certaines personnes est un choix commode du présent pour ressentir une douleur comme la sienne !
-
-## Design Créatif
-
-Car en guise de maquillage, l'urne du poison C'était un week-end. Je suis un footballeur complet. Pour boire, le lac occupe le plus grand porche. Chacune des cibles de la vie ne flatte pas Euismod.
-
-> Le client lui-même doit pouvoir poursuivre l'adipisicing. Personne ne prend même la peine de l'ouvrir. Alors je vais ouvrir la naissance pour choisir ? Être rejeté par certaines personnes est un choix commode du présent pour ressentir une douleur comme la sienne !
-
-L'entreprise elle-même est une entreprise très prospère. Personne ne prend même la peine de l'ouvrir. Alors je vais ouvrir la naissance pour choisir ? Être rejeté par certaines personnes est un choix commode du présent pour ressentir une douleur comme la sienne !
diff --git a/src/content/blog/english/post-1.md b/src/content/blog/post-1.md
similarity index 100%
rename from src/content/blog/english/post-1.md
rename to src/content/blog/post-1.md
diff --git a/src/content/blog/english/post-2.md b/src/content/blog/post-2.md
similarity index 100%
rename from src/content/blog/english/post-2.md
rename to src/content/blog/post-2.md
diff --git a/src/content/blog/english/post-3.md b/src/content/blog/post-3.md
similarity index 100%
rename from src/content/blog/english/post-3.md
rename to src/content/blog/post-3.md
diff --git a/src/content/blog/english/post-4.md b/src/content/blog/post-4.md
similarity index 100%
rename from src/content/blog/english/post-4.md
rename to src/content/blog/post-4.md
diff --git a/src/content/config.ts b/src/content/config.ts
index c690a41..6b926a5 100755
--- a/src/content/config.ts
+++ b/src/content/config.ts
@@ -1,6 +1,6 @@
import { defineCollection, z } from "astro:content";
-// Blog collection schema
+// Post collection schema
const blogCollection = defineCollection({
schema: z.object({
title: z.string(),
@@ -49,96 +49,9 @@ const pagesCollection = defineCollection({
}),
});
-// Contact collection schema
-const contactCollection = defineCollection({
- schema: z.object({
- title: z.string(),
- meta_title: z.string().optional(),
- description: z.string(),
- image: z.string().optional(),
- draft: z.boolean().optional(),
- }),
-});
-
-// About collection schema
-const aboutCollection = defineCollection({
- schema: z.object({
- title: z.string(),
- meta_title: z.string().optional(),
- description: z.string().optional(),
- image: z.string(),
- draft: z.boolean().optional(),
- }),
-});
-
-// Banner schema
-const bannerSchema = z.object({
- title: z.string(),
- content: z.string(),
- image: z.string(),
- button: z.object({
- enable: z.boolean(),
- label: z.string(),
- link: z.string(),
- }),
-});
-
-// Features schema
-const featureSchema = z.object({
- title: z.string(),
- image: z.string(),
- content: z.string(),
- bulletpoints: z.array(z.string()),
- button: z.object({
- enable: z.boolean(),
- label: z.string().optional(),
- link: z.string().optional(),
- }),
-});
-
-// Content schema (for the main content structure with banner and features)
-const contentSchema = z.object({
- banner: bannerSchema,
- features: z.array(featureSchema),
-});
-
-// Content collection schema
-const contentCollection = defineCollection({
- schema: contentSchema,
-});
-
-// Testimonial schema
-const testimonialSchema = z.object({
- name: z.string(),
- designation: z.string(),
- avatar: z.string(),
- content: z.string(),
-});
-
-// Testimonials schema
-const testimonialsSchema = z.array(testimonialSchema);
-
-// Call to Action schema
-const callToActionSchema = z.object({
- enable: z.boolean(),
- title: z.string(),
- image: z.string(),
- description: z.string(),
- button: z.object({
- enable: z.boolean(),
- label: z.string(),
- link: z.string().url(),
- }),
-});
-
// Export collections
export const collections = {
blog: blogCollection,
authors: authorsCollection,
pages: pagesCollection,
- contact: contactCollection,
- about: aboutCollection,
- content: contentCollection,
- testimonials: testimonialsSchema,
- callToAction: callToActionSchema,
};
diff --git a/src/content/contact/english/-index.md b/src/content/contact/-index.md
similarity index 100%
rename from src/content/contact/english/-index.md
rename to src/content/contact/-index.md
diff --git a/src/content/contact/french/-index.md b/src/content/contact/french/-index.md
deleted file mode 100644
index bd6b9f6..0000000
--- a/src/content/contact/french/-index.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Contact"
-meta_title: ""
-description: "this is meta description"
-draft: false
----
diff --git a/src/content/homepage/english/-index.md b/src/content/homepage/-index.md
similarity index 100%
rename from src/content/homepage/english/-index.md
rename to src/content/homepage/-index.md
diff --git a/src/content/homepage/french/-index.md b/src/content/homepage/french/-index.md
deleted file mode 100755
index be96b3f..0000000
--- a/src/content/homepage/french/-index.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-# Banner
-banner:
- title: "Le modèle de démarrage ultime dont vous avez besoin pour démarrer votre projet Astro"
- content: "Astroplate est un modèle de démarrage gratuit construit avec Astro et TailwindCSS, fournissant tout ce dont vous avez besoin pour démarrer votre projet Astro et gagner un temps précieux."
- image: "/images/banner.png"
- button:
- enable: true
- label: "Commencer gratuitement"
- link: "https://github.com/zeon-studio/astroplate"
-
-# Features
-features:
- - title: "Ce qui est inclus dans Astroplate"
- image: "/images/service-1.png"
- content: "Astroplate est un modèle de démarrage complet qui inclut tout ce dont vous avez besoin pour démarrer votre projet Astro. Ce qui est inclus dans Astroplate"
- bulletpoints:
- - "10+ pages pré-construites"
- - "Score Google Pagespeed de 95+"
- - "Construit avec Astro et TailwindCSS pour un style facile et personnalisable"
- - "Entièrement responsive sur tous les appareils"
- - "Optimisé pour le référencement pour de meilleurs classements dans les moteurs de recherche"
- - "**Open-source et gratuit** pour une utilisation personnelle et commerciale"
- button:
- enable: false
- label: "Commencer maintenant"
- link: "#"
-
- - title: "Découvrez les fonctionnalités clés d'Astro"
- image: "/images/service-2.png"
- content: "Astro est un framework web tout-en-un pour construire des sites web rapides et centrés sur le contenu. Il offre une gamme de fonctionnalités excitantes pour les développeurs et les créateurs de sites web. Certaines des fonctionnalités clés sont :"
- bulletpoints:
- - "Zéro JS, par défaut : Aucun surcoût d'exécution JavaScript pour vous ralentir."
- - "Personnalisable : Tailwind, MDX et plus de 100 autres intégrations au choix."
- - "Agnostique à l'UI : Supporte React, Preact, Svelte, Vue, Solid, Lit et plus encore."
- button:
- enable: true
- label: "Commencer maintenant"
- link: "https://github.com/zeon-studio/astroplate"
-
- - title: "Les principales raisons de choisir Astro pour votre prochain projet"
- image: "/images/service-3.png"
- content: "Avec Astro, vous pouvez construire des sites web modernes et centrés sur le contenu sans sacrifier la performance ou la facilité d'utilisation."
- bulletpoints:
- - "Charge instantanée des sites statiques pour une meilleure expérience utilisateur et SEO."
- - "Syntaxe intuitive et support pour les frameworks populaires rendent l'apprentissage et l'utilisation d'Astro un jeu d'enfant."
- - "Utilisez n'importe quelle bibliothèque ou framework front-end, ou construisez des composants personnalisés, pour tout type de projet."
- - "Construit sur une technologie de pointe pour garder vos projets à jour avec les dernières normes web."
- button:
- enable: false
- label: ""
- link: ""
----
diff --git a/src/content/pages/english/elements.mdx b/src/content/pages/elements.mdx
similarity index 100%
rename from src/content/pages/english/elements.mdx
rename to src/content/pages/elements.mdx
diff --git a/src/content/pages/french/elements.mdx b/src/content/pages/french/elements.mdx
deleted file mode 100755
index c0301a3..0000000
--- a/src/content/pages/french/elements.mdx
+++ /dev/null
@@ -1,255 +0,0 @@
----
-title: "Éléments"
-meta_title: ""
-description: "Ceci est une méta-description"
-draft: false
----
-
-# Titre 1
-
-## Titre 2
-
-### Titre 3
-
-#### Titre 4
-
-##### Titre 5
-
-###### Titre 6
-
----
-
-### Paragraphe
-
-Êtes-vous venu ici pour quelque chose en particulier ou juste pour critiquer Riker? Et en entrant à vitesse maximale, vous êtes apparu pour un instant être à deux endroits à la fois. Nous avons un saboteur à bord. Nous savons que vous vous occupez de minerai volé. Mais je veux parler de la tentative d'assassinat sur le Lieutenant Worf. Quelqu'un pourrait-il survivre dans un tampon de téléporteur pendant 75 ans? Le destin. Il protège les fous, les petits enfants et les navires.
-
-Êtes-vous venu ici pour quelque chose en particulier ou juste pour critiquer Riker? Et en entrant à vitesse maximale, vous êtes apparu pour un instant être à deux endroits à la fois. Nous avons un saboteur à bord. Nous savons que vous vous occupez de minerai volé. Mais je veux parler de la tentative d'assassinat sur le Lieutenant Worf. Quelqu'un pourrait-il survivre dans un tampon de téléporteur pendant 75 ans? Le destin. Il protège les fous, les petits enfants et les navires.
-
----
-
-### Emphase
-
-1. Êtes-vous venu ici pour quelque chose en **particulier** ou juste en général
-
-2. Êtes-vous venu ici pour quelque chose en particulier
-
-3. _Êtes-vous venu ici_
-
-4. Êtes-vous venu ici pour **quelque chose** en particulier
-
-5. Êtes-vous venu ici pour quelque chose en particulier
-
-6. Êtes-vous venu ici pour quelque chose en particulier
-
-7. Les URLs et les URLs entre crochets seront automatiquement transformées en liens. [http://www.example.com](http://www.example.com) ou
-
-8. [http://www.example.com](http://www.example.com) et parfois example.com (mais pas sur Github, par exemple).
-
----
-
-### Lien
-
-[Je suis un lien en ligne](https://www.google.com)
-
-[Je suis un lien en ligne avec titre](https://www.google.com "Page d'accueil de Google")
-
-[Je suis un lien de référence][texte de référence insensible à la casse]
-
-[Je suis une référence relative à un fichier de dépôt](../blob/master/LICENSE)
-
-[Vous pouvez utiliser des chiffres pour les définitions de liens de référence][1]
-
-Ou laissez-le vide et utilisez [le texte du lien lui-même].
-
-example.com (mais pas sur Github, par exemple).
-
-Du texte pour montrer que les liens de référence peuvent suivre plus tard.
-
-[texte de référence insensible à la casse]: https://www.themefisher.com
-[1]: https://gethugothemes.com
-[le texte du lien lui-même]: https://www.getjekyllthemes.com
-
----
-
-### Liste Ordonnée
-
-1. Élément de liste
-2. Élément de liste
-3. Élément de liste
-4. Élément de liste
-5. Élément de liste
-
----
-
-### Liste Non Ordonnée
-
-- Élément de liste
-- Élément de liste
-- Élément de liste
-- Élément de liste
-- Élément de liste
-
----
-
-### Code and Syntax Highlighting
-
-#### HTML
-
-```html
-
-```
-
----
-
-#### CSS
-
-```css
-img {
- vertical-align: middle;
- border: 0;
- max-width: 100%;
- height: auto;
-}
-```
-
----
-
-#### JavaScript
-
-```javascript
-window.addEventListener("load", (e) => {
- document.querySelector(".preloader").style.display = "none";
-});
-```
-
----
-
-### Button
-
-
-
----
-
-### Quote
-
-> Êtes-vous venu ici pour quelque chose en particulier ou simplement pour dénigrer Riker en général ? Et en soufflant à la vitesse de distorsion maximale, vous avez semblé pendant un instant être à deux endroits à la fois.
-
----
-
-### Notice
-
-Ceci est une simple remarque.
-
-Ceci est une simple remarque.
-
-Ceci est une simple remarque.
-
-Ceci est une simple remarque.
-
----
-
-### Tab
-
-
-
-
-
-#### Did you come here for something in particular?
-
-Êtes-vous venu ici pour quelque chose en particulier ou simplement pour dénigrer Riker en général ? Et en soufflant à la vitesse de distorsion maximale, vous avez semblé pendant un instant être à deux endroits à la fois. Nous avons un saboteur à bord. Nous savons que vous faites du trafic de minerai volé. Mais je veux parler de la tentative d'assassinat du lieutenant Worf.
-
-
-
-
-
-#### I wanna talk about the assassination attempt
-
-La douleur elle-même est grande, l'élitr sadipscing est réglé, mais les diam nonumy eirmo pendant un temps ils envient qu'avec le travail et la douleur c'était quelque chose de grand, mais le diam voluptiva. Mais en effet, je les accuserai et seulement deux douleurs et je les reprendrai. Stet clita kasd gubergren, aucun takimata de mer n'est sacré.
-
-La douleur elle-même est grande, l'élitr sadipscing est réglé, mais les diam nonumy eirmo pendant un temps ils envient qu'avec le travail et la douleur c'était quelque chose de grand, mais le diam voluptiva. Mais en effet, je les accuserai et seulement deux douleurs et je les reprendrai. Stet clita kasd gubergren, aucun takimata de mer n'est sacré.
-
-
-
-
-
-#### We know you’re dealing in stolen ore
-
-La douleur elle-même est grande, l'élitr sadipscing est réglé, mais les diam nonumy eirmo pendant un temps ils envient qu'avec le travail et la douleur c'était quelque chose de grand, mais le diam voluptiva. Mais en effet, je les accuserai et seulement deux douleurs et je les reprendrai. Stet clita kasd gubergren, aucun takimata de mer n'est sacré.
-
-La douleur elle-même est grande, l'élitr sadipscing est réglé, mais les diam nonumy eirmo pendant un temps ils envient qu'avec le travail et la douleur c'était quelque chose de grand, mais le diam voluptiva. Mais en effet, je les accuserai et seulement deux douleurs et je les reprendrai. Stet clita kasd gubergren, aucun takimata de mer n'est sacré.
-
-
-
-
-
----
-
-### Table
-
-| # | First | Last | Handle |
-| :-- | :----------: | :----------: | -----------: |
-| 1 | Row:1 Cell:1 | Row:1 Cell:2 | Row:1 Cell:3 |
-| 2 | Row:2 Cell:1 | Row:2 Cell:2 | Row:2 Cell:3 |
-| 3 | Row:3 Cell:1 | Row:3 Cell:2 | Row:3 Cell:3 |
-
----
-
-### Accordion
-
-
-
-- C'est une chose.
-- C'est une chose.
-- C'est une chose.
-- C'est une chose.
-- C'est une chose.
-
-
-
-
-
-- C'est une chose.
-- C'est une chose.
-- C'est une chose.
-- C'est une chose.
-- C'est une chose.
-
-
-
-
-
-- C'est une chose.
-- C'est une chose.
-- C'est une chose.
-- C'est une chose.
-- C'est une chose.
-
-
-
----
-
-### Image
-
-
-
----
-
-### Youtube video
-
-
-
----
-
-### Custom video
-
-
diff --git a/src/content/pages/french/privacy-policy.md b/src/content/pages/french/privacy-policy.md
deleted file mode 100644
index 8077b19..0000000
--- a/src/content/pages/french/privacy-policy.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: "Confidentialité"
-meta_title: ""
-description: "this is meta description"
-draft: false
----
-
-#### Responsabilité des contributeurs
-
-Le client est très important, le client sera suivi par le client. Purus, jusqu'à présent tu es eros, ullamcorper id feugiat chaque personne avec quelques flèches. J'étais laide, mais la masse des dessins animés était grosse d'un frémissement. Je ne veux pas de la douleur d’un footballeur puissant. Ultrices amoat, dans sera traité de l'arc du lit de la maladie. Il a été touché par des flèches lors d'un cours de torture. Le problème avec la fondue, c'est qu'il avait besoin de chocolat. Maintenant le bureau mais parfois le lac. Mais qui se soucie des dessins animés
-
-le prix peut être certain. C'est un élément très important, tincidunt eros, nibh en lion. Malesuada est un lac pur, mais suspendu pendant un certain temps. Qui se soucie du temps, veut naître. Mais il faut en prendre soin. Eu veut naître du souci erhdfvssfvrgss a besoin de dessins animés et d'éléments. Un lac dans lequel il est facile de se baigner.
-
-#### Collecte d'informations personnelles
-
-Le client est très important, le client sera suivi par le client. Purus, jusqu'à présent tu es eros, ullamcorper id feugiat chaque personne avec quelques flèches. J'étais laide, mais la masse des dessins animés était grosse d'un frémissement. Ne me donne pas la douleur d'un joueur de football puissant. Les ultrices vont être guéries par l'arc du lit de la maladie. Il a été touché par des flèches lors d'un cours de torture. Le problème avec la fondue, c'est qu'il avait besoin de chocolat. Maintenant le bureau mais parfois le lac. Mais qui se soucie des dessins animés ?
-
-#### Protection des informations personnelles
-
-Le client est très important, le client sera suivi par le client. Purus, jusqu'à présent tu es eros, ullamcorper id feugiat chaque personne avec quelques flèches. J'étais laide, mais la masse des dessins animés était grosse d'un frémissement. Je ne veux pas de la douleur d’un footballeur puissant. Les ultrices vont être guéries par l'arc du lit de la maladie. Il a été touché par des flèches lors d'un cours de macro.
-
-Le problème avec la marmite, c'était qu'il avait besoin de chocolat. Maintenant le bureau mais parfois le lac. Mais qui se soucie des dessins animés ?
-Le client est très important, le client sera suivi par le client. Purus, jusqu'à maintenant tu es eros, ullamcorper id feugiat
-
-#### Modifications de la politique de confidentialité
-
-1. Tous les articles Themefisher sont conçus pour être les plus récents, nous vérifions tous
-2. commentaires qui menacent ou nuisent à la réputation de toute personne ou organisation
-3. informations personnelles, y compris, sans toutefois s'y limiter, les adresses e-mail et les numéros de téléphone
-4. Toute mise à jour arrive. Le client technologique recevra une notification automatique.
\ No newline at end of file
diff --git a/src/content/pages/english/privacy-policy.md b/src/content/pages/privacy-policy.md
similarity index 100%
rename from src/content/pages/english/privacy-policy.md
rename to src/content/pages/privacy-policy.md
diff --git a/src/content/sections/english/call-to-action.md b/src/content/sections/call-to-action.md
similarity index 100%
rename from src/content/sections/english/call-to-action.md
rename to src/content/sections/call-to-action.md
diff --git a/src/content/sections/french/call-to-action.md b/src/content/sections/french/call-to-action.md
deleted file mode 100644
index c7a241b..0000000
--- a/src/content/sections/french/call-to-action.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-enable: true
-title: "Prêt à construire votre prochain projet avec Astro ?"
-image: "/images/call-to-action.png"
-description: "Expérimente le futur du développement web avec Astroplate et Astro. Créez des sites statiques à charge rapide et personnalisables en toute facilité."
-button:
- enable: true
- label: "Commencez maintenant"
- link: "https://github.com/zeon-studio/astroplate"
----
diff --git a/src/content/sections/french/testimonial.md b/src/content/sections/french/testimonial.md
deleted file mode 100644
index 0f62df6..0000000
--- a/src/content/sections/french/testimonial.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-enable: true
-title: "Ce que disent les utilisateurs d'Astroplate"
-description: "Ne vous contentez pas de nous croire sur parole - écoutez certains de nos utilisateurs satisfaits ! Consultez quelques-uns de nos témoignages ci-dessous pour voir ce que les autres disent à propos d'Astroplate."
-
-# Testimonials
-testimonials:
- - name: "Marvin McKinney"
- designation: "Concepteur Web"
- avatar: "/images/avatar-sm.png"
- content: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Qui iusto illo molestias, assumenda expedita commodi inventore non itaque molestiae voluptatum dolore, facilis sapiente, repellat veniam."
-
- - name: "Marvin McKinney"
- designation: "Concepteur Web"
- avatar: "/images/avatar-sm.png"
- content: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Qui iusto illo molestias, assumenda expedita commodi inventore non itaque molestiae voluptatum dolore, facilis sapiente, repellat veniam."
-
- - name: "Marvin McKinney"
- designation: "Concepteur Web"
- avatar: "/images/avatar-sm.png"
- content: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Qui iusto illo molestias, assumenda expedita commodi inventore non itaque molestiae voluptatum dolore, facilis sapiente, repellat veniam."
-
- - name: "Marvin McKinney"
- designation: "Concepteur Web"
- avatar: "/images/avatar-sm.png"
- content: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Qui iusto illo molestias, assumenda expedita commodi inventore non itaque molestiae voluptatum dolore, facilis sapiente, repellat veniam."
----
diff --git a/src/content/sections/english/testimonial.md b/src/content/sections/testimonial.md
similarity index 100%
rename from src/content/sections/english/testimonial.md
rename to src/content/sections/testimonial.md
diff --git a/src/i18n/en.json b/src/i18n/en.json
deleted file mode 100644
index 64f04bf..0000000
--- a/src/i18n/en.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "full_name": "Full Name",
- "full_name_placeholder": "Enter your full name",
- "mail_placeholder": "john.doe@email.com",
- "message": "Anything else?",
- "message_placeholder": "Your message here...",
- "submit": "Submit",
- "read_more": "Read More",
- "page_not_found": "Page Not Found",
- "working_mail": "Work Email",
- "anything_else": "Anything else?",
- "contact_message_placeholder": "Your message here...",
- "page_not_found_content": "The page you are looking for may have been removed, renamed, or is temporarily unavailable.",
- "back_to_home": "Back to Home",
- "get_started": "Get Started"
-}
diff --git a/src/i18n/fr.json b/src/i18n/fr.json
deleted file mode 100644
index 62f4e06..0000000
--- a/src/i18n/fr.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "full_name": "Nom complet",
- "full_name_placeholder": "Entrez votre nom complet",
- "mail_placeholder": "john.doe@email.com",
- "message": "Autre chose?",
- "message_placeholder": "Votre message ici...",
- "submit": "Soumettre",
- "read_more": "Lire la suite",
- "page_not_found": "Page non trouvée",
- "working_mail": "Courrier de travail",
- "anything_else": "Autre chose ?",
- "contact_message_placeholder": "Votre message ici...",
- "page_not_found_content": "La page que vous recherchez a peut-être été supprimée, changée de nom ou temporairement inaccessible.",
- "back_to_home": "Retour à l'accueil",
- "get_started": "Commencez à utiliser"
-}
diff --git a/src/layouts/Base.astro b/src/layouts/Base.astro
index b07a8e9..5c189eb 100755
--- a/src/layouts/Base.astro
+++ b/src/layouts/Base.astro
@@ -9,7 +9,6 @@ import "@/styles/main.scss";
import { AstroFont } from "astro-font";
import { ViewTransitions } from "astro:transitions";
import SearchModal from "./helpers/SearchModal";
-import { getLangFromUrl } from "@/lib/utils/languageParser";
// font families
const pf = theme.fonts.font_family.primary;
@@ -19,12 +18,12 @@ let fontPrimary, fontSecondary;
if (theme.fonts.font_family.primary) {
fontPrimary = theme.fonts.font_family.primary
.replace(/\+/g, " ")
- .replace(/:[ital,]*[ital@]*[wght@]*[0-9,;]+/gi, "");
+ .replace(/:[ital,]*[ital@]*[wght@]*[0-9,;.]+/gi, "");
}
if (theme.fonts.font_family.secondary) {
fontSecondary = theme.fonts.font_family.secondary
.replace(/\+/g, " ")
- .replace(/:[ital,]*[ital@]*[wght@]*[0-9,;]+/gi, "");
+ .replace(/:[ital,]*[ital@]*[wght@]*[0-9,;.]+/gi, "");
}
// types for frontmatters
@@ -35,18 +34,15 @@ export interface Props {
image?: string;
noindex?: boolean;
canonical?: string;
- lang?: string;
}
-// distructure frontmatters
-const { title, meta_title, description, image, noindex, canonical, lang } =
+// destructure frontmatter
+const { title, meta_title, description, image, noindex, canonical } =
Astro.props;
-
-const language = lang || getLangFromUrl(Astro.url);
---
-
+
@@ -111,7 +107,7 @@ const language = lang || getLangFromUrl(Astro.url);
@@ -124,7 +120,7 @@ const language = lang || getLangFromUrl(Astro.url);
@@ -132,7 +128,7 @@ const language = lang || getLangFromUrl(Astro.url);
@@ -145,7 +141,7 @@ const language = lang || getLangFromUrl(Astro.url);
@@ -153,7 +149,7 @@ const language = lang || getLangFromUrl(Astro.url);
@@ -177,7 +173,7 @@ const language = lang || getLangFromUrl(Astro.url);
-
+
diff --git a/src/layouts/PostSingle.astro b/src/layouts/PostSingle.astro
index 66d66bf..5f59a02 100755
--- a/src/layouts/PostSingle.astro
+++ b/src/layouts/PostSingle.astro
@@ -1,30 +1,18 @@
---
import BlogCard from "@/components/BlogCard.astro";
import Share from "@/components/Share.astro";
-import config from "@/config/config.json";
import Disqus from "@/helpers/Disqus";
import { getSinglePage } from "@/lib/contentParser.astro";
import dateFormat from "@/lib/utils/dateFormat";
-import { slugSelector } from "@/lib/utils/languageParser";
import similarItems from "@/lib/utils/similarItems";
import { humanize, markdownify, slugify } from "@/lib/utils/textConverter";
-import type { ContentEntryMap } from "astro:content";
import { FaRegClock, FaRegFolder, FaRegUserCircle } from "react-icons/fa";
import ImageMod from "./components/ImageMod.astro";
-const { default_language } = config.settings;
const COLLECTION_FOLDER = "blog";
const { post } = Astro.props;
-let { lang } = Astro.params;
-if (!lang) {
- lang = default_language;
-}
-
-const posts = await getSinglePage(
- COLLECTION_FOLDER,
- lang as keyof ContentEntryMap
-);
+const posts = await getSinglePage(COLLECTION_FOLDER);
const similarPosts = similarItems(post, posts);
const { Content } = await post.render();
const { title, description, author, categories, image, date, tags } = post.data;
@@ -51,7 +39,7 @@ const { title, description, author, categories, image, date, tags } = post.data;