web-dev-qa-db-fra.com

Le méta-champ personnalisé ne fonctionne pas avec qTranslate

J'utilise les derniers WordPress et qTranslate. J'ai créé une page qui active certains champs personnalisés qui fonctionnent correctement.

qTranslate active les langues telles que les onglets lors de l'édition d'une page. Mais cela ne se produit pas dans mes champs de méta personnalisés. Un moyen de faire le contrôle de la langue sur ces champs?

Ce serait génial s'il y avait un auditeur d'événement Javascript qui me dirait que l'utilisateur a changé l'onglet de langue ou quelque chose du genre.

Je lis à propos de mettre comme

<!--:ca-->CA<!--:--><!--:es-->ES<!--:--><!--:en-->EN<!--:-->

à l’intérieur du champ méta, mais comme cela va être utilisé par un utilisateur final, et je suis sûr qu’ils ne comprendront pas ce que cela signifie et comment l’utiliser. J'ai besoin de différents méta-champs pour différentes langues. Des idées?

Deuxièmement, j'essaie ceci:

<?php _e('Published ', 'iris'); ?>

Mais lorsque je change la langue de la page (qTranslate? Lang = dk /? Lang = en), il ne traduit jamais le mot. Il reste toujours en anglais quelque part. J'ai essayé ceci et cela fonctionne:

<?php echo _e("<!--:dk-->Udgivet<!--:en-->Published"); ?>

Mais il n’utilise pas vraiment la bibliothèque de langues et j’espérais y trouver un moyen :)

2
Ronnie Jespersen

Le moins compliqué consiste à utiliser le Quicktags du plugin et à utiliser les fonctions Gettext pour imprimer le contenu du site.
[:en]English[:pt]Português Documents Quicktags


Une autre option est de faire comme l'interface qTranslate avec les titres de publication:
qtrans titles


Créez un champ personnalisé pour chaque langue dans votre méta-boîte:
custom meta box with custom fields


la documentation qTrans n'est pas consolidée, il est donc utile d'analyser le code:
http://plugins.svn.wordpress.org/qtranslate/trunk/qtranslate_utils.php
La fonction qtrans_getSortedLanguages renvoie un tableau avec les langues du site:

array(
  [0] => 'es'
  [1] => 'en'
  [2] => 'nl'
  [3] => 'fr'
  [4] => 'de'
)

Ceci peut être utilisé pour insérer des éléments jQuery qui contrôleront la visibilité des éléments existants. Ce qui suit est juste un prof de concept et doit être adapté comme vous le souhaitez.

Le résultat est une case à cocher à l'intérieur de la boîte méta Page Attributes qui affichera/cachera le bouton Preview à l'intérieur de la métaboxe Publish.
jquery wp manipulation

Code pour l'instantané précédent:

/**
 * Inject jQuery Button to Control Some Element(s) Visibility
 */
add_action( 'admin_footer-post.php', 'wpse_59056_inject_visibility_checkbox' );

function wpse_59056_inject_visibility_checkbox() 
{
    global $current_screen;

    // If not a Page, do nothing
    if ( 
        'page' != $current_screen->id 
        ) 
        return; 

    ?>
    <script type="text/javascript">
    jQuery(document).ready( function($) 
    {
            // Define the Checkbox
            var radioBtn = $('<input type="checkbox" name="rbtnCount" id="rbtnCount" /><label for="rbtnCount"> My Box Visibility</label>');

            // Append to the Page Attributes meta box
            radioBtn.appendTo('#pageparentdiv .inside');

            // Mark it as checked
            $('#rbtnCount').attr('checked', true);

            // Watch its behavior
            $('#rbtnCount').change( function () 
            {       
                // Show/Hide the "Preview" button inside the Publish meta box   
                if( $(this).is(':checked') )
                {
                    $('#preview-action').show();
                }
                else
                {
                    $('#preview-action').hide();
                }
            });
        });
    </script>
    <?php
}

* Avec l’aide de StackOverflow Créer un bouton radio de manière dynamique dans jQuery

2
brasofilo