< Initiation au Lua avec Scribunto
fin de la boite de navigation du chapitre

Présentation

Les codes des langues sont décrits dans Language code. Bon nombre des codes de langue de MediaWiki sont similaires aux codes de langue IETF, mais tous les codes de langue de MediaWiki ne sont pas des codes langue IETF valides ou vice-versa.

Les fonctions documentées comme mw.language.name sont disponibles dans la table globale mw.language. Les fonctions documentées comme mw.language:name sont des méthodes d'un objet Language (voir mw.language.new).

Fonctions de la librairie language

Les exemples de ce chapitre se trouveront dans le Module:Language


Nous commencerons par visualiser le contenu de la librairie language grâce au programme suivant :

local p = {}

function p.visualisation(frame)
	reponse = ""
	for index, objet in pairs(mw.langage) do
		reponse = reponse.."</br>À la clé "..index..", on trouve un objet de type : "..type(objet)
	end
	return reponse
end

return p


{{#invoke:Language|visualisation}} nous donne :
À la clé isValidCode, on trouve un objet de type : function
À la clé getFallbacksFor, on trouve un objet de type : function
À la clé isSupportedLanguage, on trouve un objet de type : function
À la clé new, on trouve un objet de type : function
À la clé fetchLanguageNames, on trouve un objet de type : function
À la clé isValidBuiltInCode, on trouve un objet de type : function
À la clé fetchLanguageName, on trouve un objet de type : function
À la clé isKnownLanguageTag, on trouve un objet de type : function
À la clé getContentLanguage, on trouve un objet de type : function


Nous voyons que nous avons 9 fonctions.


Étudions ces fonctions dans l’ordre où elles sont sorties :


mw.language.isValidCode

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

mw.language.isValidCode( code )

Retourne vrai si une chaîne de code langue est d'une forme valide, qu’il existe ou pas. Ceci inclut les codes qui sont utilisés pour la personnalisation par les espaces de noms MediaWiki.

Le code peut ne correspondre à aucun langage connu.

Un code de langue est valide si il ne contient pas certains caractères (deux-point, apostrophe simple ou double, barre oblique renversée ou non, crochet, esperluette, ou le caractère NULL de l'ASCII) et est dans ce cas-là autorisé dans un titre de page.


mw.language.getFallbacksFor

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

mw.language.getFallbacksFor( code )

Renvoie une liste des codes de langue de MediaWiki pour le code spécifié.


mw.language.isSupportedLanguage

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

mw.language.isSupportedLanguage( code )

Vérifie si la localisation est disponible dans MediaWiki pour le code de langue indiqué.

Un code de langue est « supporté » si c’est un code « valide » (qui renvoie true via mw.language.isValidCode), ne contient pas de lettres en majuscule, et a un fichier dans la version courante de MediaWiki.

Il est possible pour un code de langue d’être « supporté » mais pas « reconnu » (càd renvoyant true via mw.language.isKnownLanguageTag). Veuillez noter aussi que certains codes sont « supportés » malgré que mw.language.isValidBuiltInCode renvoie false.


mw.language.new

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

mw.language.new( code )
mw.getLanguage( code )

Crée un nouvel objet Language. Les objets Language n'ont aucune propriété accessible, mais possèdent de nombreuses méthodes qui sont documentées ci-dessous.


mw.language.fetchLanguageNames

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

mw.language.fetchLanguageNames()
mw.language.fetchLanguageNames( inLanguage )
mw.language.fetchLanguageNames( inLanguage, include )

Cherche la liste des langues reconnues par MediaWiki, et retourne une table de correspondance nom de langue ↔ code de langue.

Par défaut, le nom de langue retourné est celui dans la langue en question ; renseigner un code de langue pour inLanguage permet de renvoyer tous les noms dans cette langue.

Par défaut, seules les noms de langue connus par MediaWiki sont renvoyés ; renseigner 'all' pour include permet le renvoi de toutes les langues disponibles (e.g. depuis mw:Extension:CLDR), tandis que renseigner 'mwfile' permet de renvoyer seulement les langues qui ont des traductions incluses dans le cœur de MediaWiki ou dans des extensions activées. Pour sélectionner explicitement le défaut, il faut renseigner 'mw'.


mw.language.isValidBuiltInCode

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

mw.language.isValidBuiltInCode( code )

Retourne vrai si le code de langue est ou pourrait être disponible dans MediaWiki.

Le code peut en effet ne correspondre à aucun langage connu.

Un code de langue est un "valid built-in code" si c’est un code « valide » (càd qu'on obtient true via mw.language.isValidCode) ; il est constitué dans ce cas-là seulement de lettres du jeu de codage ASCII, de nombres, de traits d'union, et comporte au moins deux caractères.

Notez que certains codes sont « supportés » (càd qu'on obtient true via mw.language.isSupportedLanguage) même si la présente fonction renvoie false.


mw.language.fetchLanguageName

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

mw.language.fetchLanguageName( code, inLanguage )

Le nom complet de la langue du code indiqué : par défaut dans la langue du wiki (autonyme), ou traduit dans la langue indiquée dans inLanguage.


mw.language.isKnownLanguageTag

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

mw.language.isKnownLanguageTag( code )

Retourne vrai si le code indiqué est un code reconnu par MediaWiki.

Un code de langue est « connu » si c’est un « valid built-in code » (càd qui renvoie true via mw.language.isValidBuiltInCode) et renvoie une chaîne non vide via mw.language.fetchLanguageName.


mw.language.getContentLanguage

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

mw.language.getContentLanguage()
mw.getContentLanguage()

Retourne un nouvel objet Language correspondant à la langue du wiki sur lequel on se trouve.


Méthode de la librairie Langage

Nous commencerons par visualiser le contenu d'un objet Langage grâce au programme suivant :

local p = {}

function p.visualise(frame)
	reponse = ""
	langage = mw.language.new("essai")
	for index, objet in pairs(langage) do
		reponse = reponse.."</br>À la clé "..index..", on trouve un objet de type : "..type(objet)
	end
	return reponse
end

return p


{{#invoke:Language|visualise}} nous donne :
À la clé convertGrammar, on trouve un objet de type : function
À la clé code, on trouve un objet de type : string
À la clé isRTL, on trouve un objet de type : function
À la clé getArrow, on trouve un objet de type : function
À la clé parseFormattedNumber, on trouve un objet de type : function
À la clé getDirMarkEntity, on trouve un objet de type : function
À la clé getDirMark, on trouve un objet de type : function
À la clé getFallbackLanguages, on trouve un objet de type : function
À la clé ucfirst, on trouve un objet de type : function
À la clé getDir, on trouve un objet de type : function
À la clé caseFold, on trouve un objet de type : function
À la clé grammar, on trouve un objet de type : function
À la clé lc, on trouve un objet de type : function
À la clé plural, on trouve un objet de type : function
À la clé gender, on trouve un objet de type : function
À la clé lcfirst, on trouve un objet de type : function
À la clé formatNum, on trouve un objet de type : function
À la clé formatDate, on trouve un objet de type : function
À la clé getCode, on trouve un objet de type : function
À la clé formatDuration, on trouve un objet de type : function
À la clé uc, on trouve un objet de type : function
À la clé convertPlural, on trouve un objet de type : function
À la clé getDurationIntervals, on trouve un objet de type : function


Nous voyons qu’il y a 22 méthodes et une chaîne de caractère.


Débarrassons nous de la chaîne de caractères

langage.code

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !



Étudions maintenant les 22 méthodes dans l’ordre où elles sont sorties :

mw.language:convertGrammar

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:convertGrammar( word, case )
lang:grammar( case, word )

Notez l’ordre différent des paramètres dans les deux versions. convertGrammar utilise le même ordre des paramètres que la méthode de même nom dans l’objet Language alors que grammar utilise le même ordre des paramètres que la parser-function de même nom (voir mw:Help:Magic words#Localisation).

Permet de choisir la forme correcte de word pour l'inflexion case.

Les valeurs possibles pour word et case dépendent de la langue, voir m:Help:Magic words#Language-dependent word conversions et translatewiki:Grammar pour plus de détails.


mw.language:isRTL

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:isRTL()

Retourne vrai si la langue est écrite de droite à gauche, faux si elle est écrite de gauche à droite.


mw.language:getArrow

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:getArrow( direction )

Retourne un caractère Unicode correspondant à la direction direction:

  • forwards: "→" ou "←" selon l'orientation de la langue
  • backwards: "←" ou "→" selon l'orientation de la langue
  • left: "←"
  • right: "→"
  • up: "↑"
  • down: "↓"


mw.language:parseFormattedNumber

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:parseFormattedNumber( s )

Prend un nombre formaté par lang:formatNum() et retourne le nombre correspondant. C'est une version « compatible avec les conventions de la langue » de tonumber().


mw.language:getDirMarkEntity

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:getDirMarkEntity( opposite )

Retourne "&lrm;" ou "&rlm;", selon la direction de la langue et selon que opposite est vrai ou faux (si vrai retourne la direction opposée à celle de la langue).


mw.language:getDirMark

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:getDirMark( opposite )

Retourne une chaîne contenant soit U+200E (le symbole d'écriture de gauche à droite) soit U+200F (le symbole de l'écriture de droite à gauche), selon la direction de la langue et selon que opposite est vrai ou faux (si vrai retourne la direction opposée à celle de la langue).


mw.language:getFallbackLanguages

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:getFallbackLanguages()

Renvoie une liste de codes de langue de MediaWiki pour cet objet langue. Équivalent à mw.language.getFallbacksFor( lang:getCode() ).


mw.language:ucfirst

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:ucfirst( s )

Convertit le premier caractère de la chaîne en majuscule, comme le fait lang:uc().


mw.language:getDir

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:getDir()

Retourne "ltr" (left-to-right → de gauche à droite) ou "rtl" (right-to-left → de droite à gauche), selon la direction de la langue.


mw.language:caseFold

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:caseFold( s )

Convertit la chaîne en une forme appropriée pour une comparaison non sensible à la casse. Notez que le résultat peut ne pas avoir de sens s'il est affiché.


mw.language:grammar

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !


mw.language:lc

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:lc( s )

Convertit la chaîne en minuscules, en respectant les règles particulières de la langue correspondante.

Quand la librairie Ustring est chargée, la fonction mw.ustring.lower() est codée en appelant mw.language.getContentLanguage():lc( s ).


mw.language:plural

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !


mw.language:gender

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:gender( what, masculine, feminine, neutral )
lang:gender( what, { masculine, feminine, neutral } )

Permet de choisir la chaîne correspondante au genre indiqué par what, qui peut être "male", "female" ou un nom d'utilisateur.


mw.language:lcfirst

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:lcfirst( s )

Convertit le premier caractère de la chaîne en minuscule, comme le fait lang:lc().


mw.language:formatNum

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:formatNum( n )

Formate un nombre en respectant le groupement des chiffres et le séparateur décimal de la langue correspondante. Par exemple, « 123456.78 » produira « 123,456.78 », « 123.456,78 », ou même « ١٢٣٬٤٥٦٫٧٨ » selon la langue du wiki.


mw.language:formatDate

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:formatDate( format, timestamp, local )

Formate une date selon le format indiqué dans la chaîne format. Si timestamp est omis, l’heure actuelle est utilisée. La valeur local doit être un booléen ou nil. Si local est vrai, l’heure est formatée à partir de l’heure locale du wiki plutôt qu’à partir de l’heure UTC.

La chaîne de formatage et les valeurs supportées pour timestamp sont identiques à celles du parser function #time. Notez que les antislash ("\") peuvent nécessiter d’être doublés en Lua alors que ce n’est pas nécessaire en wikitexte (car ce caractère a un sens particulier en Lua et non en wikitexte) :

-- ceci génère un retour à la ligne alors que {{#time:\n}} affiche un "n" (n)
lang:formatDate( '\n' )

-- ceci affiche un "n" alors que {{#time:\\n}} affiche un "\"
-- suivi du numéro du mois. (\12)
lang:formatDate( '\\n' )

-- ceci affiche un "\" suivi du numéro du mois, alors que {{#time:\\\\n}}
-- affiche deux "\" suivi du numéro du mois. (\\12)
lang:formatDate( '\\\\n' )


mw.language:getCode

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:getCode()

Retourne le code de langue correspondant à cet objet.


mw.language:formatDuration

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:formatDuration( seconds )
lang:formatDuration( seconds, allowedIntervals )

Découpe une durée (exprimée en secondes) dans des unités utilisables par l'homme, par exemple : 12345 en 3 heures, 25 minutes et 45 secondes, retournant le résultat dans une chaîne.

allowedIntervals, si indiqué, est une table avec des valeurs nommant les unités d'intervalle à utiliser dans la réponse. Cela comprend : 'millennia', 'centuries', 'decades', 'years', 'weeks', 'days', 'hours', 'minutes', et 'seconds'.


mw.language:uc

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:uc( s )

Convertit la chaîne en majuscules, en respectant les règles particulières de la langue correspondante.

Quand la librairie Ustring est chargée, la fonction mw.ustring.upper() est codée en appelant mw.language.getContentLanguage():uc( s ).


mw.language:convertPlural

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:convertPlural( n, ... )
lang:convertPlural( n, forms )
lang:plural( n, ... )
lang:plural( n, forms )

Permet de choisir la forme gramaticale adaptée depuis forms (qui doit être une séquence) ou ... en se basant sur le nombre n. Par exemple en anglais, vous pouvez utiliser n .. ' ' .. lang:plural( n, 'sock', 'socks' ) ou n .. ' ' .. lang:plural( n, { 'sock', 'socks' } ) pour générer un texte grammaticalement correct qu’il y ait 1 ou 200 "socks".

Le nombre de valeurs nécessaires pour la séquence dépend de la langue ; voir m:Help:Magic words#Language-dependent word conversions et translatewiki:FAQ#PLURAL pour plus de détails.


mw.language:getDurationIntervals

Image logo indiquant un demande d'attention particulièreCette section est vide, pas assez détaillée ou incomplète. Votre aide est la bienvenue !

lang:getDurationIntervals( seconds )
lang:getDurationIntervals( seconds, allowedIntervals )

Découpe une durée exprimée en secondes en unités lisibles par l'homme, et retourne le résultat dans une table dont les éléments sont classés par unité. Par exemple 12345 retournera les éléments 3 heures, 25 minutes et 45 secondes.

allowedIntervals, si précisé, est une table avec comme valeurs les noms des unités à utiliser : 'millennia', 'centuries', 'decades', 'years', 'days', 'hours', 'minutes', and 'seconds'.


Cet article est issu de Wikiversity. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.