web-dev-qa-db-fra.com

Quelle est la bonne manière pour les sites Web multi-domaines et multi-langues?

J'ai une demande très intéressante d'un client:

Ils veulent avoir un site Web en deux langues pour différents pays et demandent également s'il est possible d'avoir des domaines pour chaque langue.

L’objectif est de faire en sorte que les deux pays pensent que leurs affaires locales (il est dans les deux cas).

Ils ont une base de données de produits assez complexe, il serait donc préférable d’avoir une seule base de données. Est-il possible d'avoir quelque chose comme ça:

coolproduct.co.uk/category/bicycle coolproduct.dk/kategori/cykle

Avoir une base de données (techniquement, un site Web?). Si non, quelle serait la meilleure pratique, tout en prenant en compte des éléments complexes avec parfois des pages spéciales qui changent?

1
nerijusgood

Pour la configuration multilingue, je vous recommande d’utiliser WordPress Multisite. Vous pouvez attribuer à chaque site son propre domaine de premier niveau ou l'héberger dans des sous-domaines ou des sous-répertoires.

Tous les sites du réseau partageront la même base de données (même s’ils disposeront de tables distinctes). Pour interroger les produits, vous avez quelques options:

  1. Utilisez switch_to_blog pour interroger la table de l'autre blog
  2. Créez un site distinct pour les produits uniquement et utilisez le flux RSS en tant que service XML (importez ce flux dans vos deux sites).
  3. Utiliser une base de données externe?

Ce ne sont que quelques idées, il y a probablement plus de moyens de le faire.

1
Mattvic

Vous pouvez remplacer le langage par programme basé sur le domaine. Quelque chose comme ça me vient à l’esprit.

function change_textdomain ($domain) {
    switch($domain){
        case 'domain1.com':
            $poFile = 'filename';
            break;
        case 'domain2.com':
            $poFile = 'filename2';
            break;
    }
        load_textdomain('text_domain', $poFile);
}

add_filter('override_load_textdomain', 'my_load_textdomain');
0
Christopher Lamm