Création d’une extension de traduction : Ajouter la langue après le domaine (Créer un compte)

  • WordPress :6.2
  • Statut : non résolu
2 sujets de 1 à 2 (sur un total de 2)
  • Auteur
    Messages
  • #2459408
    artenis
    Participant
    Chevalier WordPress
    224 contributions

     

    Bonjour,

    Ma configuration WP actuelle

    • Version de PHP/MySQL : 8.0.30/5.7.41
    • Thème utilisé : Création personnelle
    • Extensions en place : créations personnelles , Advanced Editor Tools, Classic editor
    • Nom de l’hébergeur : Ionos
    • Adresse du site : secrète pour l’instant

    Problème(s) rencontré(s) : Je requiert des conseils ou des suggestions ou des liens vers des exemples qui pourrait me guider sur l’utilisation des fonctions WordPress pour :

    1. Ajouter n’importe quelle langue après le nom de domaine et ses sous-domaines ex: https://ssdomain.domain.com/langue. La langue doit s’afficher automatiquement au chargement de n’importe quel page lors de la localisation du navigateur, serveur client ou timestamp ou l’adresse IP. Si la localisation ne peut être défini utiliser la langue par défaut de WordPress (WPLANG = fr). Pour le test je force la langue en « fr » ou « en ».
    2. Ces langues seront générées en php et le contenu des pages sera traduit lorsque le tag « lang » de <html> contiendra le code ISO de langage (fr_FR, en_GB, de_DE, es_ES, etc). Au clic de boutons (français, anglais, allemand, espagnol, etc) la langue changera.
    3. L’extension de traduction est créée : une page spécifique a été créée pour récupérer les contenus d’un article, des boutons avec drapeaux ont été placés dans la page spécifique et dans une nouvelle colonie de la liste des articles wordpress et ajouter des champs de traduction. Les traductions sont ajoutés avec add_post_meta() et sérialisés pour savoir qu’un post meta de traduction par article.
    • Actuellement j’essaie de comprendre si je dois utiliser le .HTACCESS ou les fonctions dédiées de réécriture de WordPress : le HTACCES est normalement utile pour des catégories permanente hors les langues sont générés en PHP.
    add_permastruct(); add_rewrite_tag(); add_rewrite_rule(); add_rewrite_endpoint();

    Je n’arrive pas à savoir si une redirection est nécessaire « wp_redirect(); » après l’utilisation des fonctions de réécriture pour justement forcer le site WordPress à se charger automatiquement avec la langue détecter (ou inscrite dans le code).

    J’ai trois sous domaines (sd1, sd2, sd3) pour l’instant, au click de la page d’accueil (domain.com) on est redirigé automatiquement sur sd1.

    • Je suis en train d’apprendre le regex mais je n’arrive pas à savoir si j’en ai besoin au regard de la ou des fonctions de réécritures nécessaires. Un exemple : (?:https://)?(?:([^.]+).)?domain.com/ que j’ai récupérer mais je ne sais pas comment l’utiliser .

    Le code suivant fonctionne partiellement en ajoutant uniquement « https://domain.com/langue » en ignorant les sous domaines :

    • Si je fais un test de langue avec une autre fonction, la version « https://domain.com/en » affiche bien la traduction anglaise pour la page d’accueil.
    • Mon site est entièrement conçu avec l’utilisation des sous-domaines !
    • Je ne sais pas si je peux utiliser le regex précédent (pour inclure n’importe quel sous domain et ajouter $_SERVER[‘HTTP_HOST’] au début de  add_rewrite_endpoint() avant $lang.
    function lang_support() {
    return array('fr','en');
    }
    function rewrite_lang(){
        $langs = lang_support();
        foreach($langs as $lang) {
           add_rewrite_endpoint($lang,EP_PERMALINK|EP_PAGES|EP_ROOT|EP_CATEGORIES);
        }
    }
    add_action('init','rewrite_lang');

    J’avais songé à utiliser ces fonctions à la place de « add_rewrite_endpoint » mais elles ne marchent pas en l’état même pour le nom de domaine uniquement :

    add_permastruct( 'atvlang', $lang.'/%my_slug%', [ 'ep_mask' => EP_PERMALINK ] );
    add_rewrite_tag( '%my_slug%', '([^/]+)', "post_type=page&name=" );

    Merci par avance.

    • Ce sujet a été modifié il y a 1 année par Flobogo. Raison : déplacé en rubrique "Traductions"
    • Ce sujet a été modifié le il y a 1 année par Flobogo.
    • Ce sujet a été modifié le il y a 11 mois et 3 semaines par Creation Site Internet.
    #2461151
    Creation Site Internet
    Participant
    Padawan WordPress
    71 contributions

    Bonjour,

    Ce que vous souhaitez réaliser est relativement complexe, surtout si l’on prend en compte les sous-domaines en plus de la traduction basée sur l’URL. Comme vous l’avez probablement compris, WordPress vous permet d’utiliser les fonctions de réécriture pour manipuler l’URL, mais la configuration doit être précise pour que tout fonctionne correctement.

    Voici quelques étapes et réflexions pour vous guider:

    1. Détection de la langue du navigateur/serveur client ou IP:
      • Vous pouvez utiliser la variable globale $_SERVER['HTTP_ACCEPT_LANGUAGE'] pour détecter la langue du navigateur. Pour une détection basée sur l’IP, vous pourriez utiliser une API externe comme ipinfo.io ou d’autres services similaires.
    2. Redirection selon la langue:
      • Une fois la langue détectée, vous pouvez utiliser wp_redirect() pour rediriger l’utilisateur vers le sous-domaine ou l’URL appropriée. Cette redirection doit être faite avant que tout contenu ne soit envoyé au navigateur, idéalement dans le hook template_redirect.
    3. Réécriture des URLs:
      • Pour la réécriture des URLs, vous pourriez utiliser add_rewrite_rule(). Cette fonction est probablement plus adaptée à votre besoin que add_rewrite_endpoint(), car elle vous permet de définir des regex pour vos URLs.
      • Vous pouvez utiliser une regex pour matcher votre domaine et potentiellement un sous-domaine, puis ajouter la langue. Votre regex semble être sur la bonne voie, mais vous pourriez avoir besoin de l’ajuster pour mieux correspondre à vos besoins.
    4. Utilisation de .htaccess:
      • Si vous avez du mal à obtenir le comportement souhaité uniquement avec les fonctions de réécriture de WordPress, vous pourriez avoir besoin de règles .htaccess personnalisées. Cependant, cela pourrait compliquer la maintenance du site à l’avenir, donc utilisez cette option avec prudence.
    5. Flux de travail:
      • Lorsque vous travaillez avec des fonctions de réécriture, assurez-vous toujours de rafraîchir les règles de réécriture après avoir apporté des modifications. Vous pouvez le faire en allant dans « Réglages » > « Permaliens » et en cliquant simplement sur « Enregistrer les modifications », même si vous n’apportez aucun changement.
    6. Tests:
      • Testez toujours les modifications dans un environnement de développement ou de staging avant de les appliquer à votre site en production.
    7. Plugins de traduction:
      • Même si vous avez choisi d’implémenter une solution personnalisée, il pourrait être intéressant de jeter un œil à des plugins populaires de multilinguisme comme Polylang ou WPML, ne serait-ce que pour s’inspirer de leurs méthodes.

    Enfin, n’hésitez pas à faire appel à un développeur WordPress expérimenté si vous trouvez cela trop complexe. La manipulation des URLs et la mise en œuvre de fonctionnalités multilingues peuvent être délicates, et un professionnel pourrait vous aider à éviter des erreurs potentielles.

    J’espère que ces conseils vous seront utiles. Bon courage dans la réalisation de votre projet !

2 sujets de 1 à 2 (sur un total de 2)
  • Vous devez être connecté pour répondre à ce sujet.