jalil.arfaoui.net/src/components/LanguageSwitcher.astro
Jalil Arfaoui dc3fb4f3d8 Ajout de la section galerie photo et nettoyage du template
Galerie photo :
- Ajout du layout photo avec slideshow plein écran
- Navigation par catégories (portraits, paysages, nature, etc.)
- Section "Fil Photo" avec posts illustrés (photoBlogPosts)
- Lightbox pour les albums de catégories
- Composants : Slideshow, CategoryNav, CategoryGrid, Lightbox, MasonryGallery

Nettoyage :
- Suppression du contenu démo du template (posts, images, about)
- Consolidation src/collections/ dans src/data/
- Suppression du config.js dupliqué (garde config.ts)
- Nettoyage des assets inutilisés (posts/, experiences/)

Corrections :
- Favicon récupéré du site actuel
- Chemins favicon corrigés dans les layouts

UI :
- Page d'accueil mise à jour
- Header/Footer simplifiés
- Nouvelle page À propos
2026-01-07 01:45:40 +01:00

75 lines
No EOL
1.7 KiB
Text

---
// Mapping des URLs entre langues
const translations: Record<string, Record<string, string>> = {
'/a-propos': {
fr: '/a-propos',
en: '/en/about',
ar: '/ar/نبذة-عني'
},
'/en/about': {
fr: '/a-propos',
en: '/en/about',
ar: '/ar/نبذة-عني'
},
'/ar/نبذة-عني': {
fr: '/a-propos',
en: '/en/about',
ar: '/ar/نبذة-عني'
},
// Page d'accueil
'/': {
fr: '/',
en: '/en',
ar: '/ar'
},
'/en': {
fr: '/',
en: '/en',
ar: '/ar'
},
'/ar': {
fr: '/',
en: '/en',
ar: '/ar'
}
};
// Détection de la langue courante
const pathname = Astro.url.pathname.replace(/\/$/, '') || '/';
const currentLang = pathname.startsWith('/en') ? 'en' : pathname.startsWith('/ar') ? 'ar' : 'fr';
// Récupération des liens traduits ou fallback vers les pages d'accueil
const links = translations[pathname] || {
fr: '/',
en: '/en',
ar: '/ar'
};
const languages = [
{ code: 'fr', label: 'FR', name: 'Français' },
{ code: 'en', label: 'EN', name: 'English' },
{ code: 'ar', label: 'ع', name: 'العربية' }
];
---
<div class="language-switcher flex items-center gap-1 text-sm">
{languages.map((lang, index) => (
<>
{index > 0 && <span class="text-gray-400 dark:text-neutral-600">·</span>}
{lang.code === currentLang ? (
<span class="font-semibold text-gray-800 dark:text-neutral-200" title={lang.name}>
{lang.label}
</span>
) : (
<a
href={links[lang.code]}
class="text-gray-500 dark:text-neutral-400 hover:text-gray-800 dark:hover:text-neutral-200 transition-colors"
title={lang.name}
hreflang={lang.code}
>
{lang.label}
</a>
)}
</>
))}
</div>