<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://cosmocatz.com/wiki/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js</id>
	<title>MediaWiki:Common.js - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://cosmocatz.com/wiki/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js"/>
	<link rel="alternate" type="text/html" href="https://cosmocatz.com/wiki/index.php?title=MediaWiki:Common.js&amp;action=history"/>
	<updated>2026-04-20T09:52:14Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://cosmocatz.com/wiki/index.php?title=MediaWiki:Common.js&amp;diff=73&amp;oldid=prev</id>
		<title>SpermG0rk : Page créée avec « // COSMOCATZ Translation System - À ajouter au Common.js  $(document).ready(function() {     // Initialiser le système de traduction COSMOCATZ     initCosmocatzTranslation(); });  function initCosmocatzTranslation() {     // Créer le sélecteur de langue     createLanguageSelector();          // Charger la langue sauvegardée     const savedLang = localStorage.getItem(&#039;cosmocatz-lang&#039;) || &#039;fr&#039;;     switchCosmocatzLanguage(savedLang);          // Auto-détecter... »</title>
		<link rel="alternate" type="text/html" href="https://cosmocatz.com/wiki/index.php?title=MediaWiki:Common.js&amp;diff=73&amp;oldid=prev"/>
		<updated>2025-06-17T03:45:03Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « // COSMOCATZ Translation System - À ajouter au Common.js  $(document).ready(function() {     // Initialiser le système de traduction COSMOCATZ     initCosmocatzTranslation(); });  function initCosmocatzTranslation() {     // Créer le sélecteur de langue     createLanguageSelector();          // Charger la langue sauvegardée     const savedLang = localStorage.getItem(&amp;#039;cosmocatz-lang&amp;#039;) || &amp;#039;fr&amp;#039;;     switchCosmocatzLanguage(savedLang);          // Auto-détecter... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;// COSMOCATZ Translation System - À ajouter au Common.js&lt;br /&gt;
&lt;br /&gt;
$(document).ready(function() {&lt;br /&gt;
    // Initialiser le système de traduction COSMOCATZ&lt;br /&gt;
    initCosmocatzTranslation();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
function initCosmocatzTranslation() {&lt;br /&gt;
    // Créer le sélecteur de langue&lt;br /&gt;
    createLanguageSelector();&lt;br /&gt;
    &lt;br /&gt;
    // Charger la langue sauvegardée&lt;br /&gt;
    const savedLang = localStorage.getItem(&amp;#039;cosmocatz-lang&amp;#039;) || &amp;#039;fr&amp;#039;;&lt;br /&gt;
    switchCosmocatzLanguage(savedLang);&lt;br /&gt;
    &lt;br /&gt;
    // Auto-détecter les sections traduisibles&lt;br /&gt;
    detectTranslatableSections();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createLanguageSelector() {&lt;br /&gt;
    // Vérifier si le sélecteur existe déjà&lt;br /&gt;
    if ($(&amp;#039;#cosmocatz-lang-selector&amp;#039;).length &amp;gt; 0) return;&lt;br /&gt;
    &lt;br /&gt;
    const langSelector = $(`&lt;br /&gt;
        &amp;lt;div id=&amp;quot;cosmocatz-lang-selector&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;#&amp;quot; class=&amp;quot;cosmocatz-lang-button&amp;quot; data-lang=&amp;quot;fr&amp;quot;&amp;gt;&lt;br /&gt;
                🇫🇷 FR&lt;br /&gt;
            &amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;#&amp;quot; class=&amp;quot;cosmocatz-lang-button&amp;quot; data-lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
                🇺🇸 EN&lt;br /&gt;
            &amp;lt;/a&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    `);&lt;br /&gt;
    &lt;br /&gt;
    // Ajouter au body&lt;br /&gt;
    $(&amp;#039;body&amp;#039;).append(langSelector);&lt;br /&gt;
    &lt;br /&gt;
    // Gestionnaire d&amp;#039;événements&lt;br /&gt;
    $(&amp;#039;.cosmocatz-lang-button&amp;#039;).click(function(e) {&lt;br /&gt;
        e.preventDefault();&lt;br /&gt;
        const lang = $(this).data(&amp;#039;lang&amp;#039;);&lt;br /&gt;
        switchCosmocatzLanguage(lang);&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function switchCosmocatzLanguage(lang) {&lt;br /&gt;
    // Mettre à jour la classe du body&lt;br /&gt;
    $(&amp;#039;body&amp;#039;).removeClass(&amp;#039;cosmocatz-lang-fr cosmocatz-lang-en&amp;#039;);&lt;br /&gt;
    $(&amp;#039;body&amp;#039;).addClass(`cosmocatz-lang-${lang}`);&lt;br /&gt;
    &lt;br /&gt;
    // Mettre à jour les boutons&lt;br /&gt;
    $(&amp;#039;.cosmocatz-lang-button&amp;#039;).removeClass(&amp;#039;active inactive&amp;#039;);&lt;br /&gt;
    $(`.cosmocatz-lang-button[data-lang=&amp;quot;${lang}&amp;quot;]`).addClass(&amp;#039;active&amp;#039;);&lt;br /&gt;
    $(`.cosmocatz-lang-button[data-lang!=&amp;quot;${lang}&amp;quot;]`).addClass(&amp;#039;inactive&amp;#039;);&lt;br /&gt;
    &lt;br /&gt;
    // Sauvegarder le choix&lt;br /&gt;
    localStorage.setItem(&amp;#039;cosmocatz-lang&amp;#039;, lang);&lt;br /&gt;
    &lt;br /&gt;
    // Effet de transition&lt;br /&gt;
    $(&amp;#039;.lang-fr, .lang-en&amp;#039;).css(&amp;#039;opacity&amp;#039;, &amp;#039;0.5&amp;#039;);&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
        $(&amp;#039;.lang-fr, .lang-en&amp;#039;).css(&amp;#039;opacity&amp;#039;, &amp;#039;1&amp;#039;);&lt;br /&gt;
    }, 200);&lt;br /&gt;
    &lt;br /&gt;
    // Déclencher un événement personnalisé&lt;br /&gt;
    $(document).trigger(&amp;#039;cosmocatzLanguageChanged&amp;#039;, [lang]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function detectTranslatableSections() {&lt;br /&gt;
    // Marquer les titres qui ont des traductions&lt;br /&gt;
    $(&amp;#039;h1, h2, h3, h4, h5, h6&amp;#039;).each(function() {&lt;br /&gt;
        const $heading = $(this);&lt;br /&gt;
        const text = $heading.text().trim();&lt;br /&gt;
        &lt;br /&gt;
        // Chercher des traductions potentielles&lt;br /&gt;
        const $nextElements = $heading.nextAll().slice(0, 3);&lt;br /&gt;
        let hasTranslation = false;&lt;br /&gt;
        &lt;br /&gt;
        $nextElements.each(function() {&lt;br /&gt;
            if ($(this).hasClass(&amp;#039;lang-fr&amp;#039;) || $(this).hasClass(&amp;#039;lang-en&amp;#039;)) {&lt;br /&gt;
                hasTranslation = true;&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        if (hasTranslation) {&lt;br /&gt;
            $heading.addClass(&amp;#039;translation-available&amp;#039;);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Fonctions utilitaires pour les développeurs&lt;br /&gt;
window.CosmocatzTranslation = {&lt;br /&gt;
    // Obtenir la langue actuelle&lt;br /&gt;
    getCurrentLanguage: function() {&lt;br /&gt;
        return localStorage.getItem(&amp;#039;cosmocatz-lang&amp;#039;) || &amp;#039;fr&amp;#039;;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    // Changer de langue programmatiquement&lt;br /&gt;
    setLanguage: function(lang) {&lt;br /&gt;
        switchCosmocatzLanguage(lang);&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    // Créer un contenu traduisible&lt;br /&gt;
    createTranslatable: function(frContent, enContent, tag = &amp;#039;div&amp;#039;) {&lt;br /&gt;
        return `&lt;br /&gt;
            &amp;lt;${tag} class=&amp;quot;lang-fr&amp;quot;&amp;gt;${frContent}&amp;lt;/${tag}&amp;gt;&lt;br /&gt;
            &amp;lt;${tag} class=&amp;quot;lang-en&amp;quot;&amp;gt;${enContent}&amp;lt;/${tag}&amp;gt;&lt;br /&gt;
        `;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    // Ajouter une traduction à un élément existant&lt;br /&gt;
    addTranslation: function(selector, lang, content) {&lt;br /&gt;
        const $element = $(selector);&lt;br /&gt;
        if ($element.length &amp;gt; 0) {&lt;br /&gt;
            const $translation = $(`&amp;lt;div class=&amp;quot;lang-${lang}&amp;quot;&amp;gt;${content}&amp;lt;/div&amp;gt;`);&lt;br /&gt;
            $element.after($translation);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Auto-traduction simple pour certains termes (optionnel)&lt;br /&gt;
const translations = {&lt;br /&gt;
    &amp;#039;fr&amp;#039;: {&lt;br /&gt;
        &amp;#039;Edit&amp;#039;: &amp;#039;Modifier&amp;#039;,&lt;br /&gt;
        &amp;#039;Discussion&amp;#039;: &amp;#039;Discussion&amp;#039;,&lt;br /&gt;
        &amp;#039;History&amp;#039;: &amp;#039;Historique&amp;#039;,&lt;br /&gt;
        &amp;#039;Search&amp;#039;: &amp;#039;Rechercher&amp;#039;,&lt;br /&gt;
        &amp;#039;Main Page&amp;#039;: &amp;#039;Accueil&amp;#039;,&lt;br /&gt;
        &amp;#039;Special pages&amp;#039;: &amp;#039;Pages spéciales&amp;#039;,&lt;br /&gt;
        &amp;#039;Navigation&amp;#039;: &amp;#039;Navigation&amp;#039;,&lt;br /&gt;
        &amp;#039;Tools&amp;#039;: &amp;#039;Outils&amp;#039;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;#039;en&amp;#039;: {&lt;br /&gt;
        &amp;#039;Modifier&amp;#039;: &amp;#039;Edit&amp;#039;,&lt;br /&gt;
        &amp;#039;Discussion&amp;#039;: &amp;#039;Discussion&amp;#039;,&lt;br /&gt;
        &amp;#039;Historique&amp;#039;: &amp;#039;History&amp;#039;,&lt;br /&gt;
        &amp;#039;Rechercher&amp;#039;: &amp;#039;Search&amp;#039;,&lt;br /&gt;
        &amp;#039;Accueil&amp;#039;: &amp;#039;Main Page&amp;#039;,&lt;br /&gt;
        &amp;#039;Pages spéciales&amp;#039;: &amp;#039;Special pages&amp;#039;,&lt;br /&gt;
        &amp;#039;Navigation&amp;#039;: &amp;#039;Navigation&amp;#039;,&lt;br /&gt;
        &amp;#039;Outils&amp;#039;: &amp;#039;Tools&amp;#039;&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function autoTranslateInterface() {&lt;br /&gt;
    const currentLang = window.CosmocatzTranslation.getCurrentLanguage();&lt;br /&gt;
    const translationMap = translations[currentLang];&lt;br /&gt;
    &lt;br /&gt;
    if (!translationMap) return;&lt;br /&gt;
    &lt;br /&gt;
    // Traduire les éléments de navigation&lt;br /&gt;
    $(&amp;#039;#mw-panel a, .vector-menu-tabs a&amp;#039;).each(function() {&lt;br /&gt;
        const $link = $(this);&lt;br /&gt;
        const text = $link.text().trim();&lt;br /&gt;
        &lt;br /&gt;
        if (translationMap[text]) {&lt;br /&gt;
            $link.text(translationMap[text]);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Écouter les changements de langue&lt;br /&gt;
$(document).on(&amp;#039;cosmocatzLanguageChanged&amp;#039;, function(event, lang) {&lt;br /&gt;
    console.log(`COSMOCATZ: Language switched to ${lang}`);&lt;br /&gt;
    autoTranslateInterface();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// Auto-détection de la langue du navigateur (première visite)&lt;br /&gt;
function detectBrowserLanguage() {&lt;br /&gt;
    if (!localStorage.getItem(&amp;#039;cosmocatz-lang&amp;#039;)) {&lt;br /&gt;
        const browserLang = navigator.language || navigator.languages[0];&lt;br /&gt;
        if (browserLang.startsWith(&amp;#039;en&amp;#039;)) {&lt;br /&gt;
            switchCosmocatzLanguage(&amp;#039;en&amp;#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            switchCosmocatzLanguage(&amp;#039;fr&amp;#039;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Initialiser la détection de langue&lt;br /&gt;
detectBrowserLanguage();&lt;/div&gt;</summary>
		<author><name>SpermG0rk</name></author>
	</entry>
</feed>