Tengo una aplicación de wordpress y generalmente uso la función PHP <?php _e('foo', 'bar') ?>
cuando necesito hacer eco de algo que necesita ser traducido. Pero, en este momento estoy implementando una nueva función y en mi archivo .js
tengo algo como
var confirmation = confirm("Are you sure you want to quit"); if(confirmation){ ... }
El problema con el código anterior es que no puedo usar la función PHP _e()
para traducirlo, ya que es un script JS.
¿Hay alguna forma de habilitar la traducción de textos repetidos en JS?
Estoy poniendo una recompensa ya que las preguntas dadas son genéricas, mientras que estoy buscando una solución que pueda resolver mi problema.
Estoy trabajando en un proyecto WP que fue creado por alguien antes. Se supone que solo debo agregar una traducción a los códigos que existen en el archivo js llamado functions.js
ruta: C:\Users\meskerem\foo.com\wp-content\themes\foo\assets\scripts\functions.js
supongamos que El siguiente código existe dentro de la función.
var confirmation = confirm("Are you sure you want to quit"); if(confirmation){ ... }
Ahora el objetivo es hacer que esa oración en inglés sea traducible. El código js anterior se ejecuta cuando se hace clic en un botón dentro de este archivo. C:\Users\meskerem\foo.com\wp-content\plugins\wp-jobhunt\templates\dashboards\candidate\templates_ajax_functions.php
El código html que desencadena la traducción es tan simple como:
<h1> <?= _e('good morning', 'jobhunt') ?> </h1> <div> <i class='icon-trash' onclick="askConfirmation()"> x </i> </div>
Entonces, el guión es simple, pero la traducción es donde tengo algunos problemas.
En Word Press, debe pasar la matriz de traducción al script java respectivo.
por ejemplo,
si está en la secuencia de comandos de la cola como se muestra a continuación desde el archivo function.php,
wp_enqueue_script( $handle, $src, $deps,$ver,$in_footer );
debe agregar la traducción del archivo de función a js particular usando su identificador dentro de wp_localize_script ();
eg wp_enqueue_script( 'your-handle', $src, $deps,$ver,$in_footer ); $translation_array = array('messagekey' => __('Are you sure you want to quit', foo'); ); wp_localize_script('your-handle', 'langvars', $translation_array);
En tu caso
wp_enqueue_script( 'cs_functions_js', plugins_url('/assets/scripts/functions.js', __FILE__ ), '', '', true ); just add below code after above code. $translation_array = array('messagekey' => __('Are you sure you want to quit', foo'); ); wp_localize_script('cs_functions_js', 'langvars', $translation_array);
Luego puede acceder a la traducción en js como,
var confirmboxmessage = langvars.messagekey; var confirmation = confirm(langvars.messagekey);
Debe usar la función wp_localize_script , que se agregó a WordPress por este mismo motivo.
Prueba con algo como esto:
wp_localize_script( $handle, $name, $data );
Ejemplo
<?php // Register the script wp_register_script( 'some_handle', '<ENTER YOUR SCRIPT PATH HERE>' ); // Localize the script with new data $translation_array = array( 'some_string' => __( 'Some string to translate', 'plugin-domain' ), 'a_value' => '10' ); wp_localize_script( 'some_handle', 'object_name', $translation_array ); // Enqueued script with localized data. wp_enqueue_script( 'some_handle' );
Puede acceder a las variables en JavaScript de la siguiente manera:
<script> // alerts 'Some string to translate' alert( object_name.some_string); </script>
Nota: Los datos de la llamada de JavaScript resultante se pasarán como texto. Si está tratando de pasar números enteros, deberá llamar a la función parseInt() de JavaScript.
<script> // Call a function that needs an int. FinalZoom = map.getBoundsZoomLevel( bounds ) - parseInt( object_name.a_value, 10 ); </script>
tal vez esto podría ayudar
function addScript() { wp_enqueue_script( 'functions', get_template_directory_uri() . 'foo\assets\scripts\functions.js', array(), '1.0.0', true ); } add_action( 'wp_enqueue_scripts', 'addScript' );