Estoy traduciendo una plantilla de Wordpress de propia creación y estoy teniendo problemas en un código Javascript. En la mayoría de sitios (incluso wordpress.org) dan el ejemplo de este tipo:
Código Javascript:
Ver original
alert('El texto a traducir aquí');
Y luego en PHP:
Código PHP:
Ver original
'alert' => __( 'El texto a traducir aquí', 'my-text-domain' ),
El problema es que yo no tengo el texto dentro de un 'alert' ni nada parecido, sino un $(this).parent().append... Este es mi Javascript:
Código Javascript:
Ver original
$(document).ready(function() { $('form#contactForm').submit(function() { $('form#contactForm .error').remove(); var hasError = false; $('.requiredField').each(function() { if(jQuery.trim($(this).val()) == '') { var labelText = $(this).prev('label').text().toLowerCase(); $(this).parent().append('<span class="error">You forgot to enter your '+labelText+'.</span>'); hasError = true; } else if($(this).hasClass('email')) { var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; if(!emailReg.test(jQuery.trim($(this).val()))) { var labelText = $(this).prev('label').text(); $(this).parent().append('<span class="error">You entered an invalid email.</span>'); hasError = true; } } }); if(!hasError) { var formInput = $(this).serialize(); $.post($(this).attr('action'),formInput, function(data){ $('form#contactForm').slideUp("fast", function() { $(this).before('<p class="thanks"><strong>Thanks!</strong> Your message was successfully sent.</p>'); }); }); } return false; }); });
Así que en functions.php de mi plantilla de wordpress pongo lo siguiente:
Código PHP:
Ver original
function szt_load_scripts(){ if(is_page_template('tpl-contact.php')) { wp_enqueue_script('contact-form', get_stylesheet_directory_uri() . '/jquery/contact-form/scripts/contact-form.js'); 'texto' => __('<span class="error">You forgot to enter your ', 'seozeta'), 'email' => __('<span class="error">You entered an invalid email.</span>', 'seozeta'), 'form#contactForm' => __('<p class="thanks"><strong>Thanks!</strong> Your message was successfully sent.</p>', 'seozeta') ) ); } } add_action('wp_enqueue_scripts', 'szt_load_scripts');
En los campos 'email' => no sé qué debo poner. Mirando mi Javascript (que no lo hice yo, no entiendo nada de Javascript) no se me ocurre cómo vincular cada una de las tres frases del js con el php.
Notas:
1. La dirección del js está bien, lo cargo con esa función y funciona.
2. La variable del js labelText me la traduce bien, supongo que es porque la traduzco en tpl-contact.php, entonces en el js la toma ya traducida.
3. Tampoco sé si tengo bien este campo: wp_localize_script('contact-form', 'form#contactForm',...
Llevo dos días buscando información y haciendo múltiples intentos pero no consigo dar con la solución.
Saludos y gracias de antemano.
PD: Me olvidé de aportar un dato. En la cabecera del código aparece esto, que contiene la traducción del archivo .po:
Código Javascript:
Ver original
<script type='text/javascript'> /* <![CDATA[ */ var form#contactForm = {"OtherText":"<span class=\"error\">Te has olvidado de introducir tu ","email":"<span class=\"error\">Has introducido un correo electr\u00f3nico no v\u00e1lido.<\/span>","form#contactForm":"<p class=\"thanks\"><strong>\u00a1Gracias!<\/strong> Tu mensaje ha sido enviado con \u00e9xito.<\/p>"}; /* ]]> */ </script>
Deduzco que el PHP funciona, por eso lo pregunto en Javascript. Necesito entenderlo para poner bien las variables del js en el PHP.