Jump to content

Manuel:LocalisationCache.php

From mediawiki.org
This page is a translated version of the page Manual:LocalisationCache.php and the translation is 100% complete.

La classe LocalisationCache gère le cache des messages du code source PHP (comme mentionné ci-dessus, seule la couche MessageCache gère les messages de la base de données redéfinis). Cette classe n'est pas appelée directement; ou plutôt la classe MessageCache appelle Language::getMessage(), qui appelle ensuite cette classe pour obtenir le message. Cette couche traite la logique suivante :

  • Chargement partiel des messages à partir du cache du serveur
  • Remise en cache des messages
  • Résolution de la séquence de repli de la langue

Fichiers JSON

Avant MediaWiki 1.23, on utilisait un tableau associatif PHP pour stocker les messages. Une configuration globale dans $wgExtensionMessagesFiles contient la correspondance entre le nom de l'extension et le nom du fichier où se trouvent les messages.

Depuis MediaWiki 1.23, l'utilisation de cette variable pour définir les messages n'est pas recommandée; remplacez-la par le stockage des messages au format JSON et utilisez $wgMessagesDirs . Pour déclarer d'autres variables que $messages, $wgExtensionMessagesFiles doit encore être utilisé.

$wgMessagesDirs est un tableau associatif établissant le lien entre le nom des extensions et le chemin du répertoire où se trouvent les fichiers de messages. Il est attendu que les fichiers de messages soient des fichiers JSON nommés en fonction du code de langue comme en.json, de.json, etc. Les extensions qui ont leur messages à plusieurs endroits peuvent spécifier un tableau de répertoires de messages.

LocalisationCache lit les messages de localisation dans les fichiers selon la configuration ci-dessus pour la remise en cache.

Résoudre le repli des langues

La manière dont cette classe résout le repli de la langue tient dans le fait que lors de la recherche d'une clé particulière de message, celui-ci sera cherché dans toutes les langues et la valeur sera stockée dans le cache comme si c'était celle de la langue originale. La raison pour cela est que chaque langue possède son propre cache sur le serveur. Pour une séquence de repli, si un message n'existe pas, cela signifierait normalement qu'il faut charger et consulter chaque cache individuellement chaque fois que le message est demandé. Pour éviter cela, la chaîne de repli est résolue une fois que les messages sont remis en cache à partir des fichiers PHP originaux, et la valeur finale est stockée dans le cache pour la langue principale.

Elle utilise par défaut la table l10n_cache de la base de données. Initialisez $wgCacheDirectory dans LocalSettings.php avec un chemin valide pour utiliser à la place, un cache local.

Liens externes