+
+
+class SPIP_Traductions_Description {
+ /** @var string code de langue (hors module) */
+ public $code;
+ /** @var string nom du module de langue */
+ public $module;
+ /** @var string langue de la traduction */
+ public $langue;
+ /** @var string traduction */
+ public $texte;
+ /** @var string var mode particulier appliqué ? */
+ public $mode;
+ /** @var bool Corrections des textes appliqué ? */
+ public $corrections = false;
+}
+
+
+/**
+ * Traduire une chaine internationalisée
+ *
+ * Lorsque la langue demandée n'a pas de traduction pour la clé de langue
+ * transmise, la fonction cherche alors la traduction dans la langue
+ * principale du site (défini par la meta `langue_site`), puis, à défaut
+ * dans la langue française.
+ *
+ * Les traductions sont cherchées dans les modules de langue indiqués.
+ * Par exemple le module `mots` dans la clé `mots:titre_mot`, pour une
+ * traduction `es` (espagnol) provoquera une recherche dans tous les fichiers
+ * `lang\mots_es.php`.
+ *
+ * Des surcharges locales peuvent être présentes également
+ * dans les fichiers `lang/local_es.php` ou `lang/local.php`
+ *
+ * @note
+ * Les couples clé/traductions déjà connus sont sauvés en interne
+ * dans les globales `i18n_${module}_${lang}` tel que `i18n_mots_es`
+ * et sont également sauvés dans la variable statique `deja_vu`
+ * de cette fonction.
+ *
+ * @uses charger_langue()
+ * @uses chercher_module_lang()
+ * @uses surcharger_langue()
+ *
+ * @param string $ori
+ * Clé de traduction, tel que `bouton_enregistrer` ou `mots:titre_mot`
+ * @param string $lang
+ * Code de langue, la traduction doit se faire si possible dans cette langue
+ * @param bool $raw
+ * - false : retourne le texte (par défaut)
+ * - true : retourne une description de la chaine de langue (module, texte, langue)
+ * @return string|array
+ * - string : Traduction demandée. Chaîne vide si aucune traduction trouvée.
+ * - SPIP_Traductions_Description : traduction et description (texte, module, langue)
+ **/
+function inc_traduire_dist($ori, $lang, $raw = false) {