CINXE.COM
Voir la source de Module:Langue — Wikipédia
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-disabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-not-available" lang="fr" dir="ltr"> <head> <meta charset="UTF-8"> <title>Voir la source de Module:Langue — Wikipédia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-disabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-not-available";var cookie=document.cookie.match(/(?:^|; )frwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":true,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat": "dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"08a9301b-871b-4c94-81e8-9fe7b6175d65","wgCanonicalNamespace":"Module","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":828,"wgPageName":"Module:Langue","wgTitle":"Langue","wgCurRevisionId":219073793,"wgRevisionId":0,"wgArticleId":7290362,"wgIsArticle":false,"wgIsRedirect":false,"wgAction":"edit","wgUserName":null,"wgUserGroups":["*"],"wgCategories":[],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"Scribunto","wgRelevantPageName":"Module:Langue","wgRelevantArticleId":7290362,"wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":["sysop"],"wgRestrictionMove":["sysop"],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":true,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en", "pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":20000,"wgCodeEditorCurrentLanguage":"lua","wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.codeEditor.styles":"ready" ,"skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","jquery.tablesorter.styles":"ready","ext.charinsert.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.codeEditor","ext.scribunto.edit","mediawiki.action.edit.collapsibleFooter","site","mediawiki.page.ready","jquery.tablesorter","skins.vector.js","ext.centralNotice.geoIP","ext.charinsert","ext.gadget.ArchiveLinks","ext.gadget.MonobookToolbarStandard","ext.gadget.Wdsearch","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.checkUser.clientHints","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=fr&modules=ext.charinsert.styles%7Cext.codeEditor.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cext.wikimediamessages.styles%7Cjquery.tablesorter.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=fr&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=fr&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="noindex,nofollow,max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Voir la source de Module:Langue — Wikipédia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//fr.m.wikipedia.org/wiki/Module:Langue"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipédia (fr)"> <link rel="EditURI" type="application/rsd+xml" href="//fr.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://fr.wikipedia.org/wiki/Module:Langue"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr"> <link rel="alternate" type="application/atom+xml" title="Flux Atom de Wikipédia" href="/w/index.php?title=Sp%C3%A9cial:Modifications_r%C3%A9centes&feed=atom"> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="codeeditor-loading skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-828 ns-subject page-Module_Langue rootpage-Module_Langue skin-vector-2022 action-edit"><a class="mw-jump-link" href="#bodyContent">Aller au contenu</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Menu principal" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Menu principal</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Menu principal</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">déplacer vers la barre latérale</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">masquer</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:Accueil_principal" title="Accueil général [z]" accesskey="z"><span>Accueil</span></a></li><li id="n-thema" class="mw-list-item"><a href="/wiki/Portail:Accueil"><span>Portails thématiques</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Sp%C3%A9cial:Page_au_hasard" title="Affiche un article au hasard [x]" accesskey="x"><span>Article au hasard</span></a></li><li id="n-contact" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:Contact"><span>Contact</span></a></li> </ul> </div> </div> <div id="p-Contribuer" class="vector-menu mw-portlet mw-portlet-Contribuer" > <div class="vector-menu-heading"> Contribuer </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-aboutwp" class="mw-list-item"><a href="/wiki/Aide:D%C3%A9buter"><span>Débuter sur Wikipédia</span></a></li><li id="n-help" class="mw-list-item"><a href="/wiki/Aide:Accueil" title="Accès à l’aide"><span>Aide</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:Accueil_de_la_communaut%C3%A9" title="À propos du projet, ce que vous pouvez faire, où trouver les informations"><span>Communauté</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Sp%C3%A9cial:Modifications_r%C3%A9centes" title="Liste des modifications récentes sur le wiki [r]" accesskey="r"><span>Modifications récentes</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Wikip%C3%A9dia:Accueil_principal" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipédia" src="/static/images/mobile/copyright/wikipedia-wordmark-fr.svg" style="width: 7.4375em; height: 1.125em;"> <img class="mw-logo-tagline" alt="l'encyclopédie libre" src="/static/images/mobile/copyright/wikipedia-tagline-fr.svg" width="120" height="13" style="width: 7.5em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Sp%C3%A9cial:Recherche" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Rechercher sur Wikipédia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Rechercher</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Rechercher sur Wikipédia" aria-label="Rechercher sur Wikipédia" autocapitalize="sentences" title="Rechercher sur Wikipédia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Spécial:Recherche"> </div> <button class="cdx-button cdx-search-input__end-button">Rechercher</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Outils personnels"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Apparence"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Modifier l'apparence de la taille, de la largeur et de la couleur de la police de la page" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Apparence" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Apparence</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_fr.wikipedia.org&uselang=fr" class=""><span>Faire un don</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Sp%C3%A9cial:Cr%C3%A9er_un_compte&returnto=Module%3ALangue&returntoquery=action%3Dedit" title="Nous vous encourageons à créer un compte utilisateur et vous connecter ; ce n’est cependant pas obligatoire." class=""><span>Créer un compte</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Sp%C3%A9cial:Connexion&returnto=Module%3ALangue&returntoquery=action%3Dedit" title="Nous vous encourageons à vous connecter ; ce n’est cependant pas obligatoire. [o]" accesskey="o" class=""><span>Se connecter</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Plus d’options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Outils personnels" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Outils personnels</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="Menu utilisateur" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_fr.wikipedia.org&uselang=fr"><span>Faire un don</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Sp%C3%A9cial:Cr%C3%A9er_un_compte&returnto=Module%3ALangue&returntoquery=action%3Dedit" title="Nous vous encourageons à créer un compte utilisateur et vous connecter ; ce n’est cependant pas obligatoire."><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Créer un compte</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Sp%C3%A9cial:Connexion&returnto=Module%3ALangue&returntoquery=action%3Dedit" title="Nous vous encourageons à vous connecter ; ce n’est cependant pas obligatoire. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Se connecter</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages pour les contributeurs déconnectés <a href="/wiki/Aide:Premiers_pas" aria-label="En savoir plus sur la contribution"><span>en savoir plus</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Sp%C3%A9cial:Mes_contributions" title="Une liste des modifications effectuées depuis cette adresse IP [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Sp%C3%A9cial:Mes_discussions" title="La page de discussion pour les contributions depuis cette adresse IP [n]" accesskey="n"><span>Discussion</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <h1 id="firstHeading" class="firstHeading mw-first-heading">Voir la source de Module:Langue</h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Cet article n’existe que dans cette langue. Ajouter l’article pour d’autres langues." > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-0" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">Ajouter des langues</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> <div class="after-portlet after-portlet-lang"><span class="uls-after-portlet-link"></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Espaces de noms"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-module" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Module:Langue" title="Afficher la page du module [c]" accesskey="c"><span>Module</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Discussion_module:Langue" rel="discussion" title="Discussion au sujet de cette page de contenu [t]" accesskey="t"><span>Discussion</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Modifier la variante de langue" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Affichages"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="vector-tab-noicon mw-list-item"><a href="/wiki/Module:Langue"><span>Lire</span></a></li><li id="ca-viewsource" class="selected vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Module:Langue&action=edit" title="Cette page est protégée. Vous pouvez toutefois en visualiser la source. [e]" accesskey="e"><span>Voir le texte source</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Module:Langue&action=history" title="Historique des versions de cette page [h]" accesskey="h"><span>Voir l’historique</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Outils de la page"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Outils" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Outils</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Outils</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">déplacer vers la barre latérale</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">masquer</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="Plus d’options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="vector-more-collapsible-item mw-list-item"><a href="/wiki/Module:Langue"><span>Lire</span></a></li><li id="ca-more-viewsource" class="selected vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Module:Langue&action=edit"><span>Voir le texte source</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Module:Langue&action=history"><span>Voir l’historique</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> Général </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Sp%C3%A9cial:Pages_li%C3%A9es/Module:Langue" title="Liste des pages liées qui pointent sur celle-ci [j]" accesskey="j"><span>Pages liées</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Sp%C3%A9cial:Suivi_des_liens/Module:Langue" rel="nofollow" title="Liste des modifications récentes des pages appelées par celle-ci [k]" accesskey="k"><span>Suivi des pages liées</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Aide:Importer_un_fichier" title="Téléverser des fichiers [u]" accesskey="u"><span>Téléverser un fichier</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Sp%C3%A9cial:Pages_sp%C3%A9ciales" title="Liste de toutes les pages spéciales [q]" accesskey="q"><span>Pages spéciales</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Module:Langue&action=info" title="Davantage d’informations sur cette page"><span>Informations sur la page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Sp%C3%A9cial:UrlShortener&url=https%3A%2F%2Ffr.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DModule%3ALangue%26action%3Dedit"><span>Obtenir l'URL raccourcie</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Sp%C3%A9cial:QrCode&url=https%3A%2F%2Ffr.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DModule%3ALangue%26action%3Dedit"><span>Télécharger le code QR</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> Dans d’autres projets </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q99869985" title="Lien vers l’élément dans le dépôt de données connecté [g]" accesskey="g"><span>Élément Wikidata</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Outils de la page"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Apparence"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Apparence</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">déplacer vers la barre latérale</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">masquer</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> </div> <div id="contentSub"><div id="mw-content-subtitle">← <a href="/wiki/Module:Langue" title="Module:Langue">Module:Langue</a></div></div> <div id="mw-content-text" class="mw-body-content"><p>Vous n’avez pas la permission de modifier cette page, pour les raisons suivantes : </p> <ul class="permissions-errors"><li class="mw-permissionerror-protectedpagetext"><table cellspacing="0" cellpadding="2" class="mw-alerte plainlinks protect-niv-editprotected"> <tbody><tr> <td rowspan="2" align="center" width="64px"><span typeof="mw:File"><a href="/wiki/Wikip%C3%A9dia:Protection" title="Page protégée"><img alt="Page protégée" src="//upload.wikimedia.org/wikipedia/commons/thumb/9/97/Full-protection-shackle-frwiki.svg/42px-Full-protection-shackle-frwiki.svg.png" decoding="async" width="42" height="60" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/9/97/Full-protection-shackle-frwiki.svg/63px-Full-protection-shackle-frwiki.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/9/97/Full-protection-shackle-frwiki.svg/85px-Full-protection-shackle-frwiki.svg.png 2x" data-file-width="512" data-file-height="725" /></a></span></td> <td style="line-height:1.3em; padding-top:9px; vertical-align:top; font-size:100%;"><div style="font-size:120%; font-weight:bold; align:center; width:100%; text-align:center;"><a href="/wiki/Wikip%C3%A9dia:Protection" title="Wikipédia:Protection">Cette page est protégée</a>.</div><br />Cela veut dire que seuls les <a href="/wiki/Wikip%C3%A9dia:Administrateur" title="Wikipédia:Administrateur">administrateurs</a> peuvent la modifier.<br /><br />Cette page a été protégée pour la ou l'une des raison(s) suivante(s) : <ul><li>Ce module est très utilisé ou est présent sur la page d'accueil, il a été protégé pour éviter les abus.</li></ul> </td> </tr> <tr> <td style="text-align: center;"> <hr /> <p><small style="line-height:1.6em">Vous pouvez proposer une modification en <a href="/wiki/Discussion_module:Langue" title="Discussion module:Langue">page de discussion</a> ou <a class="external text" href="https://fr.wikipedia.org/w/index.php?title=Wikip%C3%A9dia:Demande_d%27intervention_sur_une_page_prot%C3%A9g%C3%A9e&action=edit&section=new&preload=Modèle:Préchargement_pour_requête_d'intervention_sur_une_page_protégée&preloadtitle=%7B%7Ba%27%7CModule:Langue%7D%7D">à un administrateur</a> • Consulter le <a class="external text" href="https://fr.wikipedia.org/w/index.php?title=Sp%C3%A9cial:Log&type=protect&page=Module:Langue">journal des protections de cette page</a> pour les raisons et la durée de la protection.</small> </p> </td></tr></tbody></table></li><li class="mw-permissionerror-globalblocking-blockedtext-range"><b>Votre adresse IP fait partie d’une plage qui a été <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/Global_blocks" class="extiw" title="m:Special:MyLanguage/Global blocks">bloquée sur tous les wikis de la Fondation Wikimédia</a>.</b> <p>Le blocage a été effectué par <a href="/wiki/Utilisateur:Jon_Kolbert" title="Utilisateur:Jon Kolbert">Jon Kolbert</a>. Le motif invoqué est <i><a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/NOP" class="extiw" title="m:Special:MyLanguage/NOP">Open proxy/Webhost</a>: See the <a href="https://meta.wikimedia.org/wiki/WM:OP/H" class="extiw" title="m:WM:OP/H">help page</a> if you are affected </i>. </p> <ul><li>Début du blocage : 27 août 2023 à 16:12</li> <li>Expiration du blocage : 27 août 2028 à 16:12</li></ul> <p>Votre adresse IP actuelle est 8.222.208.146. La plage bloquée est 8.222.128.0/17. </p><p>Veuillez inclure tous les détails ci-dessus dans toutes les demandes que vous effectuerez. Si vous pensez avoir été bloqué(e) par erreur, vous pouvez trouver plus d’informations et d’instructions dans la politique globale <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/No_open_proxies" class="extiw" title="m:Special:MyLanguage/No open proxies">Pas de serveurs mandataires ouverts</a>. </p> Sinon, pour discuter du blocage, veuillez <a href="https://meta.wikimedia.org/wiki/Steward_requests/Global" class="extiw" title="m:Steward requests/Global">publier une demande de révision sur Méta-Wiki</a>. Vous pouvez également envoyer un courriel à la file des <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/Stewards" class="extiw" title="m:Special:MyLanguage/Stewards">coordinateurs</a> <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/VRT" class="extiw" title="m:Special:MyLanguage/VRT">VRT</a> à <kbd>stewards@wikimedia.org</kbd>, en incluant tous les détails ci-dessus.</li></ul><hr /> <p>Vous pouvez voir et copier le contenu de cette page. </p><textarea readonly="" accesskey="," id="wpTextbox1" cols="80" rows="25" style="" class="mw-editfont-monospace" lang="en" dir="ltr" name="wpTextbox1">-- luacheck: globals mw, no max line length local Langue = { } local dataLangue = mw.loadData( 'Module:Langue/Data' ) -- attention, plusieurs modules cherchent « class="error" » pour détecter si ce module a retourné une erreur -- pour trouver ces codes, on peut rechercher dans le namespace Module : insource:Langue insource:/(find|match)\([^)]+error/ local langErrorMess = '<span class="error">langue non reconnue : %s</span>' -- premierParametre renvoie le premier paramètre de Frame, que celui-ci ait été passé au module par invoke, directement au modèle, -- ou à l'intérieur d'un module sous forme de string dans un tableau ou directement de string. -- Si aucun de ces arguments ne contient de chaine, la fonction renvoie nil. -- Si le deuxième paramètre est true, la chaine est renvoyée trimée et en minuscules. local function premierParametre( frame, lowerCase ) local arg if type( frame ) == 'table' then arg = ( frame.getParent and ( frame.args[1] or frame:getParent().args[1] ) ) or frame[1] elseif type( frame ) == 'string' then arg = frame end if type( arg ) ~= 'string' then arg = nil end if arg and lowerCase then arg = mw.ustring.lower( mw.text.trim( arg ) ) end return arg end -- determinationCode retourne une table contenant le code de langue principal et la liste des subcodes -- si le code de langue principal n'est pas reconnu, retourne nil. function Langue.determinationCode( langue ) if type( langue ) == 'string' and langue ~= '' then local tabCode = mw.text.split( langue, '-' ) local tabLangue = dataLangue[ mw.ustring.lower( tabCode[1] ) ] if tabLangue and tabLangue.code then tabCode[1] = tabLangue.code if tabLangue.invalide then tabCode.invalide=true end return tabCode end end end -- Voir Modèle:Code langue -- Paramètre : -- 1 : nom de langue. function Langue.codeLangue( frame ) local arg = premierParametre( frame, true ) local tabCode = Langue.determinationCode( arg ) return ( tabCode and table.concat( tabCode, '-' ) ) or arg or '' end -- Voir Modèle:Code langue 2 -- Paramètre : -- 1 : nom de langue. function Langue.codeLangue2( frame ) local arg = premierParametre( frame, true ) local tabCode = Langue.determinationCode( arg ) return ( tabCode and table.concat( tabCode, '-' ) ) or '' end -- Voir Modèle:Direction langue -- Paramètre : -- 1 : nom de langue ou code IETF. function Langue.directionLangue( frame ) local arg = premierParametre( frame, true ) if type( arg ) ~= 'string' or arg == '' then return 'ltr' end -- séparation du code de langue en code principal et les différents subcodes. local tabCode = Langue.determinationCode( arg ) if tabCode then -- on essaye de savoir si la direction est de droite à gauche local codeScript = tabCode[2] if codeScript and string.len( codeScript ) == 4 and dataLangue[ 'rtl script' ] then -- il y a un subcode d'écriture, c'est lui qui est pris en compte codeScript = string.upper( string.sub( codeScript, 1, 1 ) ) .. string.sub( codeScript, 2 ) if dataLangue[ 'rtl script' ][ codeScript ] then return 'rtl' end else -- il n'y a pas de subcode d'écriture, on prend en compte le code de langue principal. local tabLangue = dataLangue[ tabCode[1] ] if tabLangue and tabLangue.rtl then return 'rtl' end end end -- la langue n'est pas écrite de droite à gauche, donc ltr. return 'ltr' end local function getDataLangue( frame ) -- Obtenir le code de la langue local codeLangue = premierParametre( frame, true ) -- Si le paramètre est incorrect, retourner un message d'erreur if type( codeLangue ) ~= 'string' or codeLangue == '' then return nil, '<span class="error">langue non précisée</span>' end -- Obtenir le tableau contenant les informations sur la langue local tabLangue = dataLangue[ codeLangue ] -- Si le code étendu n'est pas trouvé, chercher à nouveau avec le code racine if not tabLangue then tabLangue = dataLangue[ mw.ustring.match( codeLangue, '^(%a-)%-' ) ] end -- Si on n'a toujours rien trouvé, retourner un message d'erreur if not tabLangue then return nil, langErrorMess:format( codeLangue ) end return tabLangue end -- Fonction fournissant un wikilien vers l'article -- traitant d'une langue à partir de son code. -- Voir Modèle:Lien langue -- Paramètre : -- 1 : code IETF de langue. function Langue.lienLangue( frame ) local tabLangue, erreur = getDataLangue( frame ) if not tabLangue then return erreur end -- Créer un lien pour la langue depuis le tableau if type( tabLangue.page ) == 'string' then if tabLangue.page ~= '' then return '[[' .. tabLangue.page .. '|' .. tabLangue.nom .. ']]' else return tabLangue.nom end else return '[[' .. tabLangue.nom .. ']]' end end -- Fonction permettant de récupérer le nom d'une langue à partir de son code. -- Voir Modèle:Nom langue -- Paramètre : -- 1 : code IETF de langue. -- Retourne : -- Le nom de la langue, un message d'erreur sinon. function Langue.nomLangue( frame ) local tabLangue, erreur = getDataLangue( frame ) if not tabLangue then return erreur end -- Extraire le nom de la langue depuis le tableau return tabLangue.nom end -- Fonction permettant de récupérer le nom de l'article -- portant sur une langue à partir de son code. -- Voir Modèle:Article langue -- Paramètre : -- 1 : code IETF de langue. -- Retourne : -- Le nom de l'article portant sur la langue -- si le code est trouvé, un message d'erreur sinon. function Langue.articleLangue( frame ) local tabLangue, erreur = getDataLangue( frame ) if not tabLangue then return erreur end -- Extraire le titre de l'article depuis le tableau if type( tabLangue.page ) == 'string' and tabLangue.page ~= '' then return tabLangue.page else return tabLangue.nom end end -- Voir Modèle:Langue -- Paramètres : -- 1 : code IETF de langue ; -- texte ou 2 : texte dans cette langue ; -- trans : translittération du texte ; -- dir : direction de la langue (obsolète : peut être en paramètre 1, avec code en 2 et texte en 3). function Langue.langue( frame ) local args = ( frame.getParent and frame:getParent().args ) or frame -- préparation pour appel par modèle ou direct. local code = mw.ustring.lower( mw.text.trim( args[1] or '' ) ) local texte = args.texte or '' if texte == '' then texte = args[2] or '' end local dir = args.dir local namespaceCategorisation = { [0] = true, [4] = true, [10] = true, [12] = true, [14] = true, [100] = true } local categorisation = namespaceCategorisation[ mw.title.getCurrentTitle().namespace ] and not args.nocat -- Décalage des paramètres si code contient la direction du texte (obsolète mais toujours possible). if code == 'ltr' or code == 'rtl' then dir = code code = mw.ustring.lower( mw.text.trim( args[2] ) or '' ) texte = args[3] or '' end local codeArg = code -- sortie immédiate s'il n'y a pas de texte if texte == '' then if categorisation then return '<span class="error">erreur du modèle [[modèle:Langue|{{langue}}]] : texte absent</span>[[Catégorie:Page utilisant un modèle avec une syntaxe erronée|Langue]]' else return '' end end -- récursion si texte contient des blocs if texte:match('\n *\n') or texte:match('\n[*#:]') then -- les parenthèses permettent d'éliminer la seconde valeur retournée par gsub (nombre de remplacements) return ( texte:gsub( '(\n?[*#:]?%s*)([^\n]+)', function ( init, ligne ) return init .. Langue.langue{ code, ligne } end ) ) end -- Si la langue est reconnue, la valeur de la table est prise en compte (permet de corriger les noms de langue en toutes lettres). local tabCode = Langue.determinationCode( code ) local tabLangue if tabCode then code = table.concat( tabCode, '-' ) tabLangue = dataLangue[ tabCode[1] ] local codeScript = tabCode[2] -- Si codeScript est bien un style d'écriture (len = 4) on applique sa direction if codeScript and string.len( codeScript ) == 4 and dataLangue[ 'rtl script' ] then -- formatage type Latn correspondant au fromat dans dataLangue[ 'rtl script' ] codeScript = string.upper( string.sub( codeScript, 1, 1 ) ) .. string.sub( codeScript, 2 ) tabLangue = { code = tabLangue.code, rtl = dataLangue[ 'rtl script' ][ codeScript ], invalide = tabLangue.invalide } end end -- Préparation du rendu de direction du texte. dir = dir and dir:lower() if dir ~= 'ltr' and dir ~= 'rtl' then dir = ( tabLangue and tabLangue.rtl and 'rtl' ) end -- Compilation du texte à retourner. local html = mw.html.create( '' ) if code == '' then html:wikitext( texte ) else local span = mw.html.create( 'span' ) :addClass( 'lang-' .. code ) :attr( 'lang', code ) :attr( 'dir', dir ) :wikitext( texte ) if args.class and args.class ~= '' then span:addClass( args.class ) end html:node( span ) -- Translittération. if ( args.trans or '' ) ~= '' then local trans = args.trans:gsub( "^''%f[^'](.+)%f[']''$", "%1" ) html:wikitext( " (''" ) :tag( 'span' ) :addClass( 'transcription lang-' .. code ) :attr( 'lang', code .. '-Latn' ) :attr( 'dir', 'ltr' ) :wikitext( trans ) :done() :wikitext( "'')" ) end end -- Ajout de la catégorie Page avec code de langue invalide si le code langue non reconnu ou invalide. if categorisation and ( type( tabLangue ) ~= 'table' or tabCode.invalide ) then local erreur = string.format( langErrorMess, codeArg ) if codeArg == '' then erreur = '<span class="error">langue non précisée</span>' end html:wikitext( '[[Catégorie:Page avec code de langue invalide|Langue]] ' .. erreur ) end return tostring( html ) end -- Alias nom de fonction Langue.lang = Langue.langue -- Voir Modèle:Indication de langue -- Paramètres : -- 1 : nom de langue ; -- 2 : code IETF ; -- texte : texte dans cette langue ; -- dir : direction de la langue. function Langue.indicationDeLangue( frame ) local args = ( frame.getParent and frame:getParent().args ) or frame local nomLangue = mw.text.trim( args[1] or '' ) local code = mw.text.trim( args[2] or '' ) local texte = args.texte local dir = args.dir -- Cas où le premier et/ou le deuxième paramètre est vide. if code == '' and nomLangue == '' then return texte elseif nomLangue == '' then nomLangue = dataLangue[ mw.ustring.lower( code ) ] nomLangue = (nomLangue and nomLangue.nom or '???') elseif code == '' then code = dataLangue[ nomLangue ] code = ( code and code.code or '' ) if code == '' then return texte end end -- Gestion du texte. if texte and texte ~= '' then texte = '\194\160' .. Langue.lang{ code, dir = dir, texte = texte } else texte = '' end -- Compilation de l'indicateur de langue et du texte. local html = mw.html.create() html:tag( 'abbr' ) :addClass( 'abbr' ) :addClass( 'indicateur-langue' ) :attr( 'title', 'Langue : ' .. nomLangue ) :wikitext( '(' .. code .. ')' ) :done() :wikitext( texte ) return tostring( html ) end -- Voir Modèle:Mul -- Paramètres : codes IETF ou noms de langue, en nombre indéfini (string ou nil uniquement). function Langue.indicationMultilingue( frame ) local args = (frame.getParent and frame:getParent().args) or frame local listeNom = { } local listeCode = { } -- Valeur par défaut du premier paramètre = 'mul'. local code = mw.text.trim( args[1] or '' ) if code == '' then code = 'mul' end local maxLang = tonumber(args.maxLang) or nil if not args[2] and not dataLangue[ mw.ustring.lower( code ) ] then local split = mw.text.split( code, '[+,;:/ .]+' ) if #split > 1 then split.maxLang = maxLang return Langue.indicationMultilingue( split ) end end -- Ajout des noms et codes de langue de chaque paramètre dans listeNom et ListeCode. local i = 1 repeat code = mw.ustring.lower( code ) local tabLangue = dataLangue[ code ] if not tabLangue then code = mw.text.split( code, '-' )[1] tabLangue = dataLangue[ code ] end if type( tabLangue ) == 'table' then table.insert( listeNom, tabLangue.nom ) table.insert( listeCode, tabLangue.code ) else table.insert( listeNom, '???' ) local erreur = string.format( langErrorMess, code ) table.insert( listeCode, erreur ) end i = i + 1 code = mw.text.trim( args[i] or '' ) until code == '' -- Préparation et renvoi du texte. local n = #listeCode if n == 0 then return '' end if maxLang and n > maxLang then listeCode = {'mul'} end local plusieurs = ( n > 1 ) local html = mw.html.create( 'abbr' ) :addClass( 'abbr' ) :addClass( 'indicateur-langue' ) :attr( 'title', 'Langue' .. ( plusieurs and 's' or '' ) .. ' : ' .. mw.text.listToText( listeNom ) ) :wikitext( '(' .. table.concat( listeCode, '\194\160+\194\160' ) .. ')' ) return tostring( html ) end -- Voir Modèle:Langue avec nom -- Paramètres : -- 1 : code IETF de langue ; -- texte ou 2 : texte dans cette langue ; -- trans : translittération du texte ; -- dir : direction de la langue. function Langue.langueAvecNom( frame ) local args = ( frame.getParent and frame:getParent().args ) or frame local code = mw.ustring.lower( mw.text.trim( args [1] or '') ) local texte = args.texte or args[2] or '' local trans = args.trans local dir = args.dir -- Détection de la direction du texte. if code == 'ltr' or code == 'rtl' then dir = code code = mw.ustring.lower( mw.text.trim( args[2] ) ) texte = args[3] or '' end -- Définition du nom de la langue en français. local nom = Langue.lienLangue{ code } if texte ~= '' then texte = ' ' .. Langue.lang{ code, dir = dir, texte = texte, trans = trans } end return nom .. ' :' .. texte end -- nonLatin détermine si la chaine fournie contient des caractères qui ne sont pas latins (étendu, unicode < U+0370) function Langue.nonLatin( frame ) local texte = premierParametre( frame ) -- pour convertir les code points Unicode en UTF-8 : https://r12a.github.io/app-conversion/ -- (dans le dropdown "Treat bare numbers as", penser à sélectionner "Hex code points" ou "Dec code points") -- voir [[mw:Extension:Scribunto/Lua reference manual#Patterns]] : -- les fonctions string.* ne permettent pas le caractère \0 dans les patterns, il faudrait donc faire [%z\001-\127], par exemple -- les fonctions mw.ustring.* semblent ne pas avoir cette limitation, mais par précaution faisons comme si elles l'avaient aussi -- avec Lua 5.2, on pourrait saisir les octets en format hexadécimal : [^%z\x01-\xCD\xAF...] -- avec Lua 5.3, on pourrait saisir directement les code points Unicode, que Lua convertirait en UTF-8 : [^%z\u{1}-\u{36F}...] -- la concaténation du pattern est effectuée à chaque appel de la fonction, -- mais elle est extrêmement performante (c'est optimisé en faisant une seule opcode concat, et il y a le string interning) -- on pourrait mettre en variable locale dans le module et réutiliser, mais il n'y a même pas de différence mesurable local pattern = '[^' .. '%z' -- U+0000 (UTF-8 00), cas particulier qu'il faut représenter avec %z .. '\001-\205\175' -- U+0001 (UTF-8 01) à U+036F (UTF-8 CDAF) .. '\225\180\128-\225\187\191' -- suppléments phonétique, diacritiques et latin : U+1D00 (UTF-8 E1B480) à U+1EFF (UTF-8 E1BBBF) .. '\226\128\128-\226\177\191' -- espace, indices, monnaies et symboles divers : U+2000 (UTF-8 E28080) à U+2C7F (UTF-8 E2B1BF) .. '\234\156\160-\234\159\191' -- latin étendu D : U+A720 (UTF-8 EA9CA0) à U+A7FF (UTF-8 EA9FBF) .. ']' -- après essais, mw.ustring.match() est *très légèrement* plus performant que mw.ustring.find(), mais ça reste le même ordre de grandeur return mw.ustring.match( texte, pattern ) and true or false end -- erreurModuleData affiche un message d'erreur si le Module:Langue/Data n'a pas été chargé correctement, -- pour la page de discussion de la base de données et ceux qui veulent surveiller cette page. function Langue.erreurModuleData() if type( dataLangue ) ~= 'table' then local message = [[<strong class="error">Le chargement du module Langue/Data génère une erreur.</strong> <br> <span class="error">Cette erreur doit être corrigée au plus vite car des milliers de pages ne s'affichent pas correctement.</span> ]] return message end end -- tableauLangues génère un tableau triable de la liste des langues disponible dans Module:langue/Data. function Langue.tableauLangues() local tableau = { } local entete = [[{| class="wikitable alternance sortable" |- !scope=col|Alias !scope=col|Code IETF !scope=col|Nom principal !scope=col|Titre de l'article<br>(si différent du nom) !scope=col|Lien vers l'article !scope=col|RTL !scope=col|Invalide]] local ligneTab, ligneSrt for k, v in pairs( dataLangue ) do if v.code then ligneTab = { k, v.code, v.nom, v.page or '', Langue.lienLangue(v.code), v.rtl and '[[Fichier:Yes check.svg|15px|oui|lien=]]' or '', v.invalide and '[[Fichier:Yes check.svg|15px|oui|lien=]]' or '', } ligneSrt = table.concat( ligneTab, '\n|' ) table.insert( tableau, ligneSrt ) end end table.sort( tableau ) table.insert( tableau, 1, entete ) table.insert( tableau, '}' ) return table.concat( tableau, '\n|-\n|' ) end -- listeCodeAlias génère une liste ; les langues sont de la forme : * code : alias1, alias2 function Langue.listeCodeAlias() local languesTab, listeCodesAlias = { }, { } local code, alias, codeAlias for k, v in pairs( dataLangue ) do -- on construit un table avec pour indices les codes de langue, et pour valeurs une table avec la liste des alias code = v.code if code and not v.invalide then languesTab[code] = languesTab[code] or { } if k ~= mw.ustring.lower( code ) then table.insert( languesTab[code], k ) end end end for k, v in pairs( languesTab ) do -- transformation en un table séquence, avec pour valeur une chaine correspondant à une ligne de la liste alias = table.concat( v, ', ' ) if alias == '' then codeAlias = '* <code>' .. k .. '</code>' else codeAlias = '* <code>' .. k .. '</code> : ' .. alias end table.insert( listeCodesAlias, codeAlias ) end table.sort( listeCodesAlias ) return table.concat( listeCodesAlias, '\n' ) end -- listeAliasCode génère une liste ; les langues sont de la forme : * alias : code function Langue.listeAliasCode() local languesTab = { } local code for k, v in pairs( dataLangue ) do -- on construit un table avec pour indices les codes de langue, et pour valeurs une table avec la liste des alias code = v.code if code and k ~= code and not v.invalide then table.insert( languesTab, '* ' .. k .. ' = ' .. code ) end end table.sort( languesTab ) return table.concat( languesTab, '\n' ) end return Langue </textarea><div id="mw-scribunto-console"></div><div class="templatesUsed"><div class="mw-templatesUsedExplanation"><p>Modèles utilisés par cette page : </p></div><ul> <li><a href="/wiki/Mod%C3%A8le:Abr%C3%A9viation_discr%C3%A8te" title="Modèle:Abréviation discrète">Modèle:Abréviation discrète</a> (<a href="/w/index.php?title=Mod%C3%A8le:Abr%C3%A9viation_discr%C3%A8te&action=edit" title="Modèle:Abréviation discrète">voir la source</a>) (protégé)</li><li><a href="/wiki/Mod%C3%A8le:Cf." title="Modèle:Cf.">Modèle:Cf.</a> (<a href="/w/index.php?title=Mod%C3%A8le:Cf.&action=edit" title="Modèle:Cf.">voir la source</a>) (semi-protection étendue)</li><li><a href="/wiki/Mod%C3%A8le:Date" title="Modèle:Date">Modèle:Date</a> (<a href="/w/index.php?title=Mod%C3%A8le:Date&action=edit" title="Modèle:Date">voir la source</a>) (protégé)</li><li><a href="/wiki/Mod%C3%A8le:De" title="Modèle:De">Modèle:De</a> (<a href="/w/index.php?title=Mod%C3%A8le:De&action=edit" title="Modèle:De">voir la source</a>) (protégé)</li><li><a href="/wiki/Mod%C3%A8le:Documentation_module" title="Modèle:Documentation module">Modèle:Documentation module</a> (<a href="/w/index.php?title=Mod%C3%A8le:Documentation_module&action=edit" title="Modèle:Documentation module">voir la source</a>) (protégé)</li><li><a href="/wiki/Mod%C3%A8le:Etc." title="Modèle:Etc.">Modèle:Etc.</a> (<a href="/w/index.php?title=Mod%C3%A8le:Etc.&action=edit" title="Modèle:Etc.">voir la source</a>) (protégé)</li><li><a href="/wiki/Mod%C3%A8le:Fr" title="Modèle:Fr">Modèle:Fr</a> (<a href="/w/index.php?title=Mod%C3%A8le:Fr&action=edit" title="Modèle:Fr">voir la source</a>) (protégé)</li><li><a href="/wiki/Mod%C3%A8le:Ic%C3%B4ne_de_titre" title="Modèle:Icône de titre">Modèle:Icône de titre</a> (<a href="/w/index.php?title=Mod%C3%A8le:Ic%C3%B4ne_de_titre&action=edit" title="Modèle:Icône de titre">voir la source</a>) (protégé)</li><li><a href="/wiki/Mod%C3%A8le:Indication_de_langue" title="Modèle:Indication de langue">Modèle:Indication de langue</a> (<a href="/w/index.php?title=Mod%C3%A8le:Indication_de_langue&action=edit" title="Modèle:Indication de langue">voir la source</a>) (protégé)</li><li><a href="/wiki/Mod%C3%A8le:Liste_horizontale" title="Modèle:Liste horizontale">Modèle:Liste horizontale</a> (<a href="/w/index.php?title=Mod%C3%A8le:Liste_horizontale&action=edit" title="Modèle:Liste horizontale">voir la source</a>) (semi-protection étendue)</li><li><a href="/wiki/Mod%C3%A8le:M" title="Modèle:M">Modèle:M</a> (<a href="/w/index.php?title=Mod%C3%A8le:M&action=edit" title="Modèle:M">voir la source</a>) (protégé)</li><li><a href="/wiki/Mod%C3%A8le:Mul" title="Modèle:Mul">Modèle:Mul</a> (<a href="/w/index.php?title=Mod%C3%A8le:Mul&action=edit" title="Modèle:Mul">voir la source</a>) (protégé)</li><li><a href="/wiki/Mod%C3%A8le:M%C3%A9ta_bandeau_d%27avertissement" title="Modèle:Méta bandeau d'avertissement">Modèle:Méta bandeau d'avertissement</a> (<a href="/w/index.php?title=Mod%C3%A8le:M%C3%A9ta_bandeau_d%27avertissement&action=edit" title="Modèle:Méta bandeau d'avertissement">voir la source</a>) (protégé)</li><li><a href="/wiki/Mod%C3%A8le:M%C3%A9ta_documentation_de_mod%C3%A8le" title="Modèle:Méta documentation de modèle">Modèle:Méta documentation de modèle</a> (<a href="/w/index.php?title=Mod%C3%A8le:M%C3%A9ta_documentation_de_mod%C3%A8le&action=edit" title="Modèle:Méta documentation de modèle">voir la source</a>) (protégé)</li><li><a href="/wiki/Mod%C3%A8le:M%C3%A9ta_documentation_de_mod%C3%A8le/styles.css" title="Modèle:Méta documentation de modèle/styles.css">Modèle:Méta documentation de modèle/styles.css</a> (<a href="/w/index.php?title=Mod%C3%A8le:M%C3%A9ta_documentation_de_mod%C3%A8le/styles.css&action=edit" title="Modèle:Méta documentation de modèle/styles.css">voir la source</a>) (semi-protection étendue)</li><li><a href="/wiki/Mod%C3%A8le:M%C3%A9ta_lien_vers_projet" title="Modèle:Méta lien vers projet">Modèle:Méta lien vers projet</a> (<a href="/w/index.php?title=Mod%C3%A8le:M%C3%A9ta_lien_vers_projet&action=edit" title="Modèle:Méta lien vers projet">voir la source</a>) (protégé)</li><li><a href="/wiki/Mod%C3%A8le:Projet_Scribunto" title="Modèle:Projet Scribunto">Modèle:Projet Scribunto</a> (<a href="/w/index.php?title=Mod%C3%A8le:Projet_Scribunto&action=edit" title="Modèle:Projet Scribunto">voir la source</a>) (protégé)</li><li><a href="/wiki/Mod%C3%A8le:Protection" title="Modèle:Protection">Modèle:Protection</a> (<a href="/w/index.php?title=Mod%C3%A8le:Protection&action=edit" title="Modèle:Protection">voir la source</a>) (protégé)</li><li><a href="/wiki/Mod%C3%A8le:Taille_px_pour_image" title="Modèle:Taille px pour image">Modèle:Taille px pour image</a> (<a href="/w/index.php?title=Mod%C3%A8le:Taille_px_pour_image&action=edit" title="Modèle:Taille px pour image">voir la source</a>) (protégé)</li><li><a href="/wiki/Mod%C3%A8le:Test_sous-page_documentation" title="Modèle:Test sous-page documentation">Modèle:Test sous-page documentation</a> (<a href="/w/index.php?title=Mod%C3%A8le:Test_sous-page_documentation&action=edit" title="Modèle:Test sous-page documentation">voir la source</a>) (semi-protection étendue)</li><li><a href="/wiki/Mod%C3%A8le:Test_sous-page_documentation,_etc." title="Modèle:Test sous-page documentation, etc.">Modèle:Test sous-page documentation, etc.</a> (<a href="/w/index.php?title=Mod%C3%A8le:Test_sous-page_documentation,_etc.&action=edit" title="Modèle:Test sous-page documentation, etc.">voir la source</a>) (semi-protégé)</li><li><a href="/wiki/Module:Bandeau" title="Module:Bandeau">Module:Bandeau</a> (<a href="/w/index.php?title=Module:Bandeau&action=edit" title="Module:Bandeau">voir la source</a>) (protégé)</li><li><a href="/wiki/Module:Bandeau/Class" title="Module:Bandeau/Class">Module:Bandeau/Class</a> (<a href="/w/index.php?title=Module:Bandeau/Class&action=edit" title="Module:Bandeau/Class">voir la source</a>) (protégé)</li><li><a href="/wiki/Module:Date" title="Module:Date">Module:Date</a> (<a href="/w/index.php?title=Module:Date&action=edit" title="Module:Date">voir la source</a>) (protégé)</li><li><a href="/wiki/Module:Date/Data" title="Module:Date/Data">Module:Date/Data</a> (<a href="/w/index.php?title=Module:Date/Data&action=edit" title="Module:Date/Data">voir la source</a>) (semi-protection étendue)</li><li><a href="/wiki/Module:Documentation" title="Module:Documentation">Module:Documentation</a> (<a href="/w/index.php?title=Module:Documentation&action=edit" title="Module:Documentation">voir la source</a>) (semi-protection étendue)</li><li><a href="/wiki/Module:Langue" title="Module:Langue">Module:Langue</a> (<a href="/w/index.php?title=Module:Langue&action=edit" title="Module:Langue">voir la source</a>) (protégé)</li><li><a href="/wiki/Module:Langue/Data" title="Module:Langue/Data">Module:Langue/Data</a> (<a href="/w/index.php?title=Module:Langue/Data&action=edit" title="Module:Langue/Data">voir la source</a>) (semi-protection étendue)</li><li><a href="/wiki/Module:Langue/Documentation" title="Module:Langue/Documentation">Module:Langue/Documentation</a> (<a href="/w/index.php?title=Module:Langue/Documentation&action=edit" title="Module:Langue/Documentation">modifier</a>) </li><li><a href="/wiki/Module:Outils" title="Module:Outils">Module:Outils</a> (<a href="/w/index.php?title=Module:Outils&action=edit" title="Module:Outils">voir la source</a>) (protégé)</li><li><a href="/wiki/Module:Taille_px_pour_image" title="Module:Taille px pour image">Module:Taille px pour image</a> (<a href="/w/index.php?title=Module:Taille_px_pour_image&action=edit" title="Module:Taille px pour image">voir la source</a>) (protégé)</li><li><a href="/wiki/Module:Yesno" title="Module:Yesno">Module:Yesno</a> (<a href="/w/index.php?title=Module:Yesno&action=edit" title="Module:Yesno">voir la source</a>) (protégé)</li></ul></div><p id="mw-returnto">Revenir à la page <a href="/wiki/Module:Langue" title="Module:Langue">Module:Langue</a>.</p> <!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Ce document provient de « <a dir="ltr" href="https://fr.wikipedia.org/wiki/Module:Langue">https://fr.wikipedia.org/wiki/Module:Langue</a> ».</div></div> <div id="catlinks" class="catlinks catlinks-allhidden" data-mw="interface"></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy/fr">Politique de confidentialité</a></li> <li id="footer-places-about"><a href="/wiki/Wikip%C3%A9dia:%C3%80_propos_de_Wikip%C3%A9dia">À propos de Wikipédia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikip%C3%A9dia:Avertissements_g%C3%A9n%C3%A9raux">Avertissements</a></li> <li id="footer-places-contact"><a href="//fr.wikipedia.org/wiki/Wikipédia:Contact">Contact</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code de conduite</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Développeurs</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/fr.wikipedia.org">Statistiques</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Déclaration sur les témoins (cookies)</a></li> <li id="footer-places-mobileview"><a href="//fr.m.wikipedia.org/w/index.php?title=Module:Langue&action=edit&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Version mobile</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-57488d5c7d-fhzf5","wgBackendResponseTime":260,"wgPageParseReport":{"limitreport":{"cputime":"0.013","walltime":"0.017","ppvisitednodes":{"value":59,"limit":1000000},"postexpandincludesize":{"value":3519,"limit":2097152},"templateargumentsize":{"value":0,"limit":2097152},"expansiondepth":{"value":6,"limit":100},"expensivefunctioncount":{"value":0,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":0,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 0.000 1 -total"]},"cachereport":{"origin":"mw-web.codfw.main-57488d5c7d-fhzf5","timestamp":"20241128022320","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>