Merci pour les explications, Fil!
J’ai enfin réussi à installer le squelette multilingue de spip.net – tout en y apportant certains ajustements personnalisés que j’aimerais valider avec vous.
Je comprends que cette structure sous-entends que je ne chercherai pas à faire des liens directs entre les différentes versions d’un même document, seulement proposer deux points d’entrée au site.
Ajustement #1 : Le squelette de spip.net semble utiliser une fonction personnalisée pour extraire le nom de la langue du titre du secteur. Puisque j’avais déjà créé des mots clés pour identifier les langues de mes secteurs, j’ai décidé d’adapter le squelette à cette méthode.
Ajustement #2 : le squelette multilingue ne reconnaissait pas mes squelettes alternatifs (ex. article-imprimer.php) – à moins que je l’aie mal utilisé. En fait, on dirait qu’il ne reconnaissait qu’un seul squelette pour les articles et un seul pour les rubriques. J’ai donc ajouté une variable $skel pour spécifier le nom du squelette désiré lors du renvoi au squelette langue.php. (Spéculation : si cette méthode s’avère réellement efficace et utile, j’imagine que l’appel au squelette langue pourrait être inclus par défaut et on pourra alors revenir à la seule valeur de $fond…)
Voici donc, pour ceux que ça intéresse, la version " mots-clés " du squelette multilingue tel que je l’ai implémenté :
-
Créer un groupe de mot clef appelé " Langue ".
-
Créer dans ce groupe un mot clef pour chacune des langues utilisées. Nommer le mot clef en n’utilisant que l’abréviation de la langue, tel que listée dans le fichier /ecrire/inc_langue.php (en l’occurrence, dans mon cas, " fr " pour français et " en " pour anglais.)
-
Appliquer le mot clef approprié à chacun des secteurs du site (les rubriques à la base du site). Dans mon cas, j’ai créé un secteur pour les textes en anglais et un pour les textes en français. Toutes autres les rubriques sont à l’intérieur d’un de ces deux secteurs.
-
Créer un squelette " langue.php " contenant le code suivant :
<BOUCLE_lang(RUBRIQUES){id_secteur}{id_parent=0}>
<BOUCLE_mot_langue(MOTS){id_rubrique} {type=“Langue”}>
<?php include_ecrire('inc_lang.php'); changer_langue('[(#TITRE*)]'); ?></BOUCLE_mot_langue>
</BOUCLE_lang>
<BOUCLE_article(ARTICLES){id_article}>
<BOUCLE_l(BOUCLE_lang)>
</BOUCLE_l>
<?php $fond = $skel; ?><INCLURE(inc-public.php){id_article}>
</BOUCLE_article>
<BOUCLE_rubrique(RUBRIQUES){id_rubrique}>
<BOUCLE_l2(BOUCLE_lang)>
</BOUCLE_l2>
<?php $fond = $skel; ?><INCLURE(inc-public.php){id_rubrique}>
</BOUCLE_rubrique>
- Dans les fichiers article.php et rubrique.php (ainsi que tout autre fichier squelette .php pertinent), ajouter la variable $fond contenant le nom du squelette à utiliser (même valeur que $fond d’ordinaire) puis remplacer la valeur de la variable $fond par " langue " .
Voici un exemple pour le squelette article :
- Ça devrait être tout. Avec ce système, les formulaires et les dates devraient s’ajuster à la langue choisie. Youpi! Merci Spip!
Quelques questions :
-
Je n’ai pas encore mis en place de squelette pour les brèves, auteurs et etc. J’imagine que le squelette langues devra être alors modifié. Fil : comment spip.net s’en sort-il?
-
Autre idée : si ce principe est valable, serait-il plus pratique d’inclure le squelette langue dans inc-public.php et de ne spécifier que la valeur $fond dans les squelettes? Si oui, comment pourrions-nous faire cela?
-
Quel serait le moyen le plus simple de désactiver le filtre |typo (ou de l’adapter) pour les langues qui n’ont pas les mêmes règles typographiques que le français?
-
Quel est le moyen le plus simple d’afficher des contenus (ou des valeurs) différentes selon la langue dans un squelette? La solution proposée par mon confrère québécois André Vincent me paraît très intéressante mais je réussi pas à la mettre en exécution. Est-ce moi qui ne l’utilise pas correctement ou est-elle réellement inutilisable?
Cordialement,
Thierry Gagnon