Tous les articles par Michel

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.

xili-language version 2.11.1 disponible

La dernière version (2.11.1) de xili-language est dispo ce lundi soir.

Mise à jour 2.11.1

Cette version contient les premières adaptations pour WP 3.9-beta1, notamment les nouveaux JS pour trouver des posts lors de l’établissement des liens entre traductions.
Si le mode permalien intégrant la langue courante en préfixe est actif, on dispose maintenant la sous-sélection par date, post_format (une taxinomie spéciale).
Le code vieux de plus de 5 ans continue d’être nettoyé 😉

Quelques nouveautés pour les développeurs de thème :

Une nouvelle fonction conditionnelle – is_xili_curlang():
/**
* Test the current language of displayed page.
*
* @since 2.11
* use for other function elsewhere
* @param "" for undefined, slug of tested language alone or an array list
* @return true or false
*/
function is_xili_curlang( $lang = false ) {

Cett fonction est aussi utilisable dans l’extension xili-postinpost widget.

La plus ancienne fonction de xili-language – the_curlang() – est enrichie et en sus du code (slug), elle est capable de retourner d’autres qualités de la langue courante affichée. Très utile pour choisir des éléments à afficher selon la langue courante (div, img,…). La langue courante est connue juste avant l’affichage du header.
/**
* Return the current language of theme.
*
* @since 0.9.7
* @updated 2.11.0
* use by other function elsewhere
* @param slug, iso, full name, alias, charset, hidden, count
*
* @return by default the slug of language (used in query).
*/
function the_curlang( $by = 'slug' ) { // soon obsolete
return xili_curlang( $by );
}
function xili_curlang( $by = 'slug' ) {

Quasi toute la liste des langues disponibles pour choisir les langages du site multilingues :

Pour éviter les redondances et assurer une maintenance aisée, xili-language utilise maintenant la classe GP_locale fournie par JetPack. Cela permet d’avoir la liste de plus de 150 langues avec de multiples propriétés comme le code ISO, le nom en anglais et le nom dans la langue originelle (avec les caractères etc..) et plus…
Si dans le pop-up menu ou dans la liste, le nom natif de quelque uns est suivi d’une *, cela indique que le code WP n’est pas suivi par WP (pas de wp_locale).

Autres améliorations

Les pointeurs de nouveautés ont été nettoyés (plus d’offset qui ont été supprimés dans le js).
La mise à jour des règles de permaliens (wp_rewrite) se fait à chaque modification de la liste des langues.

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.

xili-dictionary version 2.6 disponible

L’extension WP xili-dictionary est mise à jour (2.6) et incorpore maintenant les possibilités de gérer les fichiers langues des extensions.
Il est donc possible d’importer dans le dictionnaire un fichier po d’une extension et d’en adapter la traduction. Grâce à la taxinomie ‘Origine’, un msgid et les traductions msgstr sont affectés à l’extension en cause et facilite ainsi la création, et la mise à jour du fichier po au bon endroit dans le dossier langage de celle-ci. La taxinomie ‘Origine’ contient le nom unique (Name ou sous-url) de l’extension avec dossier et fichier php principal.

xili-dictionary analyse les entêtes des extensions et notamment des champs ‘Text Domain’ et ‘Domain Path’. Si l’auteur de l’extension les a omis, xili-dictionary va chercher ces informations par l’analyse des fichiers langages s’il existe.

Comme cela est possible depuis la version précédente (2.5) pour les thèmes, il n’est pas encore possible de récupérer les fichiers mo po sur votre ordinateur sans passer par la voie FTP.

WordCamp Paris 2014 : WordPness est bien né !

Déjà 2014, le 6e Word(bar)Camp à Paris !

Non, non, c’est bien WordPness, que j’ai écrit avec n comme le n de business. Le business est bien là sans complexe et les story tellings des retours d’expérience présentés par les conférenciers indiquent bien que les geeks contributeurs gratuits laissent une place aux affaires. Hormis quelques blogueurs motivés, c’est bien des webmestres, développeurs, chefs de projet, directeur d’agence internet, (auto-)entrepreneurs qui constituent l’assistance de ces deux jours. Automattic a envoyé un porte parole (en anglais) et nous évangélisent sur la part de WordPress dans les affaires des agences dans les 10 ans.
Alors que nous avions vu Matt Mullenweg en février 2009, lors de mon premier BarCamp parisien, peu avant, en ce 16 janvier 2014, nous apprenions qu’il devenait C.E.O d’Automattic. En même temps, on apprend aussi qu’iMath qui travaille à La Poste ici devenait un leader du développement de BuddyPress. iMath comme d’autres conférenciers contribuent gracieusement au noyau de WordPress ou BuddyPress.
Business, c’est aussi des entrepreneurs créateurs enthousiastes ( nodamin ) et d’autres qui ont fermé boutique après deux ans et qui expliquent leur pourquoi du comment face à la forte concurrence… thème de réflexion 😉

Conférences et Ateliers

Sur ces deux jours, pas possible d’assister simultanément à une conférence et à un atelier, aussi voici quelques notes partielles et partiales sur ces heures bien remplies avec des professionnels intervenants très motivés :

 
VENDREDI 17

Industrialiser son ou ses projets WordPress par Amaury Balmer

Une entrée en matière précise avec des tas de recommandations très pratique… Je retiendrais entr’autre la nécessité de désactiver l’éditeur php interne, le passage de SVN à Github et l’outil DBSR pour déplacer les 4 bases des 4 phases du développement à la livraison.

Etude de cas : Bus Open Tour, un multisite e-commerce et multilingue par Emilie Lebrun

L’amour d’Emilie pour son projet et pour WordPress nous a emporté pour un tour autour de la complexité des projets des entreprises multisites multilingues. Mérite un prix plus élevé.

Combien coûte un site WordPress ? par Thierry Pigot

Enfin, il met les pieds dans le plat et donne des prix, des coûts. Des arguments de plus lors des échanges avec les demandeurs de projet… Oui, WordPress est gratuit mais pas le temps consacré à sa mise en place… Oui, des extensions sont gratuites et il faut inclure dans les budgets les contributions, les donations.

Vivre d’une extension ? L’exemple de MailPoet par Kim Gjerstad

Alors lui il est très fort en marketing, on devine ce que fait le produit, mais on a vu tout de l’énorme boulot qu’il faut pour exister dans ce monde des produits et extensions, le faire vivre, le maintenir… une présentation à revoir…

 
SAMEDI 18

ATELIER : Publier une extension, pourquoi et comment ? Bastien Ho

Ce partage d’expérience est encourageant pour les développeurs isolés devant leur écran; Bien sûr il y a les réseaux mais rien de vaut la chaleur d’une salle de cours avec des tables, des chaises, des écrans, un tableau. J’ai retenu son éditeur Sublime Text, sa volonté de toujours publier ses travaux et quelques trucs très techniques. Allez les verts…

Le dilemme du site multilingue, l’expérience de MultiPress par Inpsyde d’Allemagne

L’équipe de Inpsyde était là, quel plaisir de partager avec eux le difficile chemin des développeurs dans ce contexte multilingue.
Pour ceux qui souhaitent avoir une vue d’ensemble de l’offre des extensions (plugiciels comme disent nos amis du Québec) multilingues, avec un an de retard à la suite du topo fait au cours du WordCamp 2013, voici deux comparatifs en cours de gestation permanente :
– les plugins pour installation mono-site de WordPress
comparatif pour installation multisite (network) de WordPress

ATELIER : Premiers pas dans les API de BuddyPress par Mathieu Viet

Avec 1500 do_actions et 1600 apply_filters, je ne sais pas si je vais plonger dans Buddy Press, mais quel encouragement de voir un artiste du code et du projet et du prototype qui non seulement fait des développements pour son employeur mais aussi respecte l’esprit contributif intrinsèque de WordPress BuddyPress…

Le design d’interface : la cas d’Happytables (en anglais) par Noel Tock

Le couteau suisse de l’expérience utilisateur (UX) par http://hmn.md/is/ pour WP (et VIP)… En tout cas, si on peut, on est invité à faire le ménage dans le tableau de bord pour faciliter les tâches des auteurs ou secrétariat de rédaction.

Sans contenu, WordPress n’est rien par Cédric Motte

Pneu, pneumatique, la diapo sur la couverture du 1er guide Michelin des restaurants nous rappelle que le contenu, ce n’est pas du vent et que pour vendre des contenants d’air sous-pression, il faut susciter le voyage, le récit, the story telling,… en somme, il n’y pas que le hard, le code, l’extension , il a le contexte et le contenu… et surtout leur devenir au fil des jours… quel défi pour la stratégie éditoriale !

Prototypez vos applications avec WordPress par Mathieu Viet

A la suite du couteau suisse, voici notre Opinel ou le Nogent, du prototype pour bousculer le ronron des directions des système d’information. Non ce n’est pas une bloague, WordPress est un véritable outil pour réaliser des applications au service de l’expérience utilisateur (UX) et non les diktats des technologies.
Et, cerise sur le gâteau, iMath contribue au noyau du code BuddyPress et WordPress…

Accessibilité & WordPress : créer des sites pour tous les utilisateurs par Tony Archambeau

Eh oui, on pense dans les budgets d’architecture, aux plans inclinés, aux touches avec relief braille mais pas à ce travail sur les balises html et css pour faciliter la navigation des sites…
Bien sûr, il y a la menace (consécutive aux lois) d’une amende pour site internet inaccessible, mais on a bon espoir de voir des outils qui automatisent ces ajouts (type plugiciels) spécifiques pour les lecteurs d’écran (qui les transforment en braille ou les lisent à haute voix). Mais pour le sens, la progression, la hiérarchie des contenus, titres, et paragraphes, c’est toujours le travail du rédacteur, du directeur éditorial, du data-designer…

TABLE RONDE : Je thème moi non plus

par Francis Chouquet, Olivier Gobet, Aurélien Denis, Grégoire Noyelle, Alexandre Bortolotti, Mathieu Viet

Ici, la table a vibré des opinions de chacun, des réussites et échecs… Je retiens une chose, pour que cela tourne bien rond, rester le plus près possible du code et des règles de WP et ses templates tags (balises). Attention aux thèmes commerciaux qui reposent sur un code mystérieux (un framework). Danger pour ceux qui incluent des fonctionnalités qui doivent être dans une extension (un plugiciel, un plugin). Encore hier, j’ai essayé de dépanner un ami sur son thème, eh bien croyez le, dans un modèle de page (page.php), pas un template tag du codex… quel galère !

La contribution c’est pas automattique !

C’est bien de la contribution d’intelligence que je veux évoquer ici (pas la financière comme les donations). Combien de fois, en développant, on trouve des choses, des astuces, des bouts de code…

Sans aller jusqu’à participer au Tracs du noyau WP et si chaque agence participait en publiant des parties de code avec deux avantages – c’est une réponse à la nécessité de documenter et c’est participer à cet esprit de contribution sur lequel repose (pour le moment) WordPress.

Un souhait pour le prochain WordCamp !

Bravo pour le bistrot du bonheur avec ses experts!
Comme cela se pratique dans les congrès scientifiques ou les conventions, ouvrir un espace contributif avec tableau, posters (affiches) et post-it (petites annonces). Une façon d’élargir les couloirs et temps inter-conférences ou ateliers afin de favoriser les rencontres, les présentations de contributeurs isolés, les demandeurs, les chercheurs de solutions ou contacts… qui ne sont pas tous dans le b2b…

Donation et business faut-il rêver ?

Les interventions de Thierry Pigot, Bastien Ho et Mathieu Viet (iMath) sont encourageantes quand ils évoquent que les responsables budgets sont invités à ajouter une ligne de quelques % pour les donations. Comme je peux le constater depuis 5 ans, les pays latins suivront-ils la spontanéité des autres où les demandes sont précédées de virement pour donation ou facturation de service payant ?

Quelques lectures et podcasts ?

De l’excellente émission “Place de la Toile

Discussion avec Evgeny Morozov : pour en finir avec la Silicon Valley
Réflexions sur les discours sur les “vertus” de l’internet…

Des Cisterciens à Google : le regard d’un médiéviste sur le numérique
Décryptage d’un historien sur les transformations et l’impact social du numérique.

De la revue Paris Tech Review
Au revoir, Dilbert! L’émergence de l’économie nue

Remerciements

Les trois petits hommes jaunes, c’est le staff : Benjamin, Benoît, Xavier,…

Michel
data-designer
dev.xiligroup

Les précédents compte-rendus :

2009
2010
2011
2012
2013

WordCamp Paris 2014

xiligroup et l’auteur de la trilogie xili-language sera comme en 2013 présent au WordCamp Paris les 16 et 17 janvier.

Michel (avec son badge xiligroup) sera heureux de répondre à vos questions et attentif à vos suggestions.

A cette occasion, le thème enfant 2014-xili est maintenant disponible avec tous ses atouts visibles ou cachés… Ce thème 2014 très innovant ici permet de créer un site type ‘magazine’ dans une version multilingue avec de nombreux éléments qui peuvent varier en function de la langue.

A bientôt,

Logo WordCamp Paris 2014