web-dev-qa-db-fra.com

Séparer la page "Widgets" principale pour chaque langue

J'essaie actuellement de faire fonctionner mon backend avec plusieurs langues. J'utilise qTranslate comme plugin de traduction.

Jusqu'à présent, j'ai créé une page d'options personnalisée avec prise en charge multilingue. Lorsque vous cliquez sur une autre langue (dans qTranslate dans l'encadré) , vous obtiendrez une nouvelle page d'options avec des variables d'option préparées.

show(option_textarea) -> 'english backend' -> show(option_textarea_en)
(saving under the same variable possible)

Donc, si j’utilise l’une des options de mon modèle, j’accède simplement à l’option avec la langue active actuelle

give(option_logo) -> 'german page viewing' -> return option_logo_de

Cela fonctionne aussi du côté de la page de widget. SAUF, lorsque je change de langue dans le backend, chaque widget se voit attribuer le statut 'utilisé' et je dois à nouveau insérer manuellement les widgets. Ils n'existent pas pour la langue active actuelle et ne sont pas favorisés. Donc, en général, je ne peux configurer des widgets que pour une langue à la fois. Les widgets de l'autre langue que j'ai définie sont alors supprimés. Comment puis-je désactiver ce comportement?

Ce dont j'ai besoin, c'est d'un système d'édition de widgets fixe qui fonctionne de la même manière que mes options. Peut-être qu'il existe une solution de contournement pour ce problème?

Merci d'avance.

2
Tom Siwik

Je ne sais pas comment fonctionne qTraslate, mais vous pouvez passer les filtres à Logique du widget , vous dupliquez en gros chaque widget, un pour chaque langue. J'ai utilisé cette technique avec WPML pour afficher des widgets dans des langages distincts qui peuvent parfois s'avérer difficiles (par exemple, lorsqu'ils effectuent des requêtes directes dans la base de données).

1
Wyck

Comme le souligne Wyck, c'est le moyen le plus simple.

J'ai la fonction suivante dans mon functions.php et je l'utilise pour filtrer un ensemble de widgets dupliqués, un pour chaque langue, par exemple: is_lingo('en'), is_lingo('pt'), etc ...

function is_lingo( $what ) 
{
    if ( !function_exists('qtrans_getLanguage') )
        return false;

    $lingo = qtrans_getLanguage(); 

    if( $what == $lingo ) 
        return true;

    return false;
}
2
brasofilo