Archives de catégorie : Mode d'emploi

Comment mettre en place et faire les réglages d'un thème enfant multilingue.

xili-language: découverte d’un nouveau shortcode !

La dernière version de xili-language apporte un nouveau shortcode dénommé xili18n.

Comme tout shortcode, il est insérable dans le contenu d’un article.

Le but de shorcode nommé xili18n : insertion d’un texte qui sera traduit dans la langue du post. (la traduction doit bien sûr existe dans les fichiers .mo de chaque langue.

Pourquoi ?

Un contenu peut parfois être très complexe et riche (exemple: des tables) et quasi identiques pour quelques termes (mais à traduire). Par exemple, on va insérer les shortcodes aux entêtes de colonnes, le contenu sera simplement cloné dans chacun des posts des langues cibles… et les traductions des shortcodes se feront automatiquement.

<strong>[xili18n msgid="Edit"]</strong>

Le résultat pour cette article en français est Modifier !

Autre effet bien sûr sur l’article en anglais 😉

xili-language v 2.13: Les réglages d’édition, traduction

Lors de la mise en place des contenus et notamment des traductions d’une page ou d’un article, il est intéressant de recopier des propriétés et contenus lors de la création comme par exemple le format, le statut des commentaires voir le contenu que l’on traduira alors ligne par ligne. Ces possibilités existaient auparavant la classe “theme-multilingual-classes” utilisées par les thèmes enfant exemple comme Twentyfourteen-xili. Elles sont maintenant disponibles pour tous les thèmes et la page de réglages est dans le 5e onglet.

5e onglet, Réglages édition / traduction
5e onglet, Réglages édition / traduction

Avant de cocher, il vaut mieux faire un choix en tenant compte de la politique éditoriale et de la façon avec laquelle sont définis les articles et pages. Par exemple, si une page peut utiliser le même template dans toutes les langues, son ordre logique peut être différent. Pour les articles, c’est par contre facile de dire que la traduction doit avoir les mêmes facultés pour être commenté ou ‘pingé’.

Informations pour les webmestres ou développeurs de thème

  • Noter que comme pour les menus, les réglages sont affectés/sauvegardés au thème courant. Pensez-y quand vous changez de thème
  • Par défaut, tous les éléments copiables ne sont pas disponibles. La fonction add_theme_support('xiliml-authoring-rules', $params); ajoutée dans le functions.php du thème permet de personnaliser à la fois les textes et d’ajouter des éléments comme le contenu tel quel ou avec un avertissement par exemple.
  • Lors de la création d’un post à partir de celui en langue d’origine, les éléments sont recopiés tel quel. Des filtres sont disponibles (xiliml_propagate_post_columns), il est donc possible de définir des règles plus ciblés, par exemple, changer le format selon la langue cible.
  • Cette page de réglages a été construite sur la base des nouveaux composants disponibles dans le noyau de WP.

Mode d’emploi : Créer le menu de navigation multilingue

En guise de préambule

Les éléments de création et de personnalisation de “menu de navigation” ont été introduits avec la version 3.0 de WordPress. Au fil des versions, l’interface, pour les créer, s’est améliorée et permet une personnalisation sans codage.
Du côté visiteur du site internet, le menu de navigation apparaît à un emplacement souvent situé près de l’entête en haut de la page Web. Ce menu a une structure remplie d’éléments qui pointent vers d’autres pages web du site contenant (selon le langage WP) des pages, des listes d’articles associés à une catégorie, à une date ou une période ou résultant d’une requête spécifique…
Du côté “tableau de bord”, on trouve dans la page “Apparence/Menu”, la possibilité de régler des emplacements et les menus (structure) qui y seront attachés. (Noter qu’une structure de menu peut être attaché à un widget et donc son contenu peut apparaître dans la zone widget).

Dans un contexte multilingue d’une installation simple de WordPress, pour un développeur, il est possible de créer des emplacements associés à chaque langue. Dans les exemples des thèmes de base livrés avec WordPress (tel que c’est proposé avec le thème enfant Twentyfourteen-xili), cette option est réglable via le menu xili-options. Elle utilise une classe mise à disposition des développeurs.

Un emplacement menu contient
   un seul menu et sa structure qui est constitué
      de divers éléments menus.

Pour un site WordPress, il existe un choix inimaginable de thème qui se compte par centaines de milliers. Ces thèmes libres, gratuits ou commerciaux intègrent ou ne suivent pas les règles de conception définies dans le codex.

Depuis 5 ans, sur le long chemin de travail au sein des milliers de lignes des sources WP, ce n’est que récemment que l’on peut disposer de composants réutilisables de codes pour créer des éléments menus comme des points d’insertion qui seront automatiquement remplacés (en temps réel) par des éléments de navigation.

Un menu de navigation multilingue avec xili-language et la méthode du point d’insertion de menus.

Selon la ligne éditoriale du site exemple, il est décidé ici que les menus auront un contenu différent dans chacune des langues cibles (des pages n’ont pas de miroir dans l’autre langue).
Première étape : un menu (et sa structure) créé pour chaque langue. Pour être disponible pour l’étape 3, ces menus ne sont pas affectés à un emplacement.
2e étape : un menu noyau attaché à l’emplacement. Ce menu noyau va contenir le point d’insertion menus.
3e étape : insertion dans le menu noyau du point d’insertion avec affection des menus (créés en étape 1) à chacune des langues. S’il n’y a pas d’autres emplacements ou si on ne veut pas utiliser les widgets, on peut aussi choisir d’ajouter un point d’insertion des listes de langues.

Limite: un menu qui est lié à un point d’insertion ne peut pas contenir un autre point d’insertion.

Quelques copies d’écran :

English menu w/o location
Le menu anglais non lié à un emplacement
Menus Insertion item
L’élément d’insertion de menus avant son insertion dans la structure du menu core
Core menu after insertion
Le Core menu après sa mise en place.

L’extension JetPack pas très “classe” avec la classe Featured_Content du thème TwentyFourteen

L’extension JetPack a un comportement inattendu avec la classe Featured_content du thème TwentyFourteen et des thèmes enfant.

Retour d’expérience

Dans le thème TwentyFourteen, il y a dans le sous-dossier inc le fichier featured-content.php qui contient la classe Featured_Content. Il est possible de la copier et modifier dans un thème enfant (ce qui se passe avec TwentyFourteen-xili pour intégrer la sélection – et le cache associé – selon la langue). Les articles (et images) en une correspondent donc au langage. Comme les fonctions du fichier functions.php du thème enfant sont actives avant celles du thème parent : pas de souci, la classe modifiée dans le thème enfant a priorité !

Tout fonctionne correctement jusqu’à ce que soit installée la récente version de JetPack qui, après de longues recherches pour localiser la cause, intègre maintenant la fameuse classe (semble-t-il utile à d’autres thèmes par exemple). Comment donc ne pas charger cette classe fournie par JetPack et garder celle du thème enfant ? Pas d’option prévue dans les réglages de JetPack qui en prévoit de nombreuses pour les modules proposés.
Dans le code idem (theme-tools.php – extrait ci-dessous) : pas de filtre spécifique à l’endroit où JetPack charge la classe.

// Featured Content has an internal check for theme support in the constructor.
// This could already be defined by Twenty Fourteen if it's loaded first.
// Be sure to not load this on the plugin page in case another plugin is activating
// with the same class name in an attempt to override Jetpack's Featured_Content
if ( ! class_exists( 'Featured_Content' ) && 'plugins.php' !== $GLOBALS['pagenow'] ) { 
    require_once( JETPACK__PLUGIN_DIR . 'modules/theme-tools/featured-content.php' );
}

Donc seule solution, créer une extension pour agir avant que JetPack activé via un filtre “init” lancent ses modules (plugins_loaded – priority 100).

En effet, on ne peut pas ajouter des filtres “plugins_loaded” dans functions.php d’un thème, c’est trop tard sur la ligne des temps de wp_settings.
L’objet du filtre est, en priorité inférieure à 100, d’installer la classe Featured_Content du thème courant. Ainsi, les tentatives suivantes seront repoussées car la classe choisie existe.

function xili_jetpack_disable_featured () {

    if ( ! class_exists( 'Featured_Content' ) && 'plugins.php' !== $GLOBALS['pagenow'] ) {
        if ( file_exists( get_stylesheet_directory() . '/inc/featured-content.php' ) ) {
            require get_stylesheet_directory() . '/inc/featured-content.php'; // this one will disable others
        }
    }
}

if ( class_exists ( 'jetpack' ) ) { // inited by init filter but without modules (priority 100 in jetpack)
    
    add_action( 'plugins_loaded', 'xili_jetpack_disable_featured', 17 ); // after XL and XTT

}

Cette partie de code est utilisable dans un plugin très simple à créer, mais, pour l’environnement multilingue, elle est insérée enrichie dans l’extension xili-language (v 2.11.1+) et il est donc possible d’avoir le thème comme ici et des fonctions JetPack comme ici.

M.

Prise en main de ce thème enfant multilingue

2014-xili est le thème enfant de twenty fourteen (2014) qui vient juste de sortir avec la dernière version de WordPress (3.8). 2014 est un thème vraiment nouveau surtout livré de base avec WP. Il est présenté comme un thème “magazine“. Comme pour les précédents (2012, 2013), ici, on présente un exemple de thème enfant qui apporte l’ensemble des (petits) ajouts pour en faire un thème multilingue avec l’extension xili-language née avec WordPress 2.3 ;-).
Chaque thème contient des éléments particuliers qu’il faut adapter pour intégrer la sous-sélection par langue. Ici, dans 2014, il faut adapter notamment la une (featured posts) qui peut s’afficher en grille ou en diaporama et l’éphémère (ephemera) qui est un widget spécifique qui fait une jolie liste dans la barre latérale sur la base d’une sous-sélection par format.
Ce thème enfant sort au moment où l’extension xili-language incorpore des nouvelles fonctionnalités notamment les fameux points d’insertions dans les menus.
Ce thème enfant hérite des possibilités de réglages du thème parent, voici deux liens :

http://codex.wordpress.org/Twenty_Fourteen

http://theme.wordpress.com/themes/twentyfourteen/

On retrouve beaucoup des autres éléments disponibles déjà dans 2013-xili comme notamment la bannière variable selon la langue.

Les grandes étapes de l’installation :

  1. Télécharger le fichier .zip du thème enfant, et, après décompression, le placer dans le fichier thème (il sera à côté du dossier de twentyfourteen, le thème parent)
    theme folders in wp-content/themes
    dossiers des thèmes dans wp-content/themes
  2. Avant d’activer le thème enfant (twentyfourteen-xili), vérifier que l’extension xili-language est active avec notamment sa liste des langues et quelques articles en différentes langues.
  3. Les options  xili dans le menu apparence (lié au thème) vont permettre de définir comment vous souhaitez gérer les espaces latéraux (widget) et les menus.
    Options pour 2014-xili
    Options pour 2014-xili

… en cours…