WooCommerce: Cómo traducir/renombrar cualquier cadena

Hay ocasiones en las que no desea traducir toda la instalación de WooCommerce solo por cambiar el nombre de una cadena corta. Hay ocasiones en las que necesita cambiar el nombre de una etiqueta o una pequeña cosa y no tiene ganas de instalar un complemento de traducción inflado .

No importa si desea cambiar el nombre de una cadena en el idioma original (generalmente inglés) o cambiar la cadena traducida predeterminada en un idioma diferente . De cualquier manera, y afortunadamente, hay un pequeño fragmento de PHP que funcionará para usted al instante. ¡Disfrutar!

Traducir una sola cadena en WooCommerce/WordPress

Fragmento de PHP: Cómo traducir o cambiar el nombre de una sola cadena de texto (complemento de WooCommerce)

Tenga en cuenta que la parte 'woocommerce' === $domain en el siguiente fragmento le brinda acceso exclusivo a las cadenas de complementos de WooCommerce. Con esa línea, no puede traducir cadenas generadas por su tema u otros complementos. Siéntase libre de eliminarlo, pero tenga cuidado porque puede terminar traduciendo muchas cosas adicionales que tal vez realmente no quería .

Además, el ! La comprobación de is_admin() se asegura de que la traducción solo se ejecute en la interfaz, por lo que se excluirá el panel de control de WordPress. Este es un buen truco de rendimiento, también.

Finalmente, tenga en cuenta la diferencia entre $translated y $untranslated: si tiene una tienda en inglés, puede usar cualquiera de los dos porque $translated = $untranslated.

/**
 * @snippet       Translate a String in WooCommerce (English to English)
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 4.5
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
  
add_filter( 'gettext', 'bbloomer_translate_woocommerce_strings', 999, 3 );
  
function bbloomer_translate_woocommerce_strings( $translated, $untranslated, $domain ) {
 
   if ( ! is_admin() && 'woocommerce' === $domain ) {
 
      switch ( $translated ) {
 
         case 'Sale!':
 
            $translated = 'On Offer';
            break;
 
         case 'Product Description':
 
            $translated = 'Product Specifications';
            break;
 
         // ETC
       
      }
 
   }  
  
   return $translated;
 
}

Por otro lado, si ejecuta una tienda monolingüe en un idioma que no es inglés, $translated debe ser la cadena en su idioma, mientras que $untranslated es la cadena original en inglés , lo que significa que si desea cambiar el nombre de español a español, debe usar $untranslated. Un poco complejo de explicar, así que recomiendo ensayo/error.

/**
 * @snippet       Translate a String in WooCommerce (English to Spanish)
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 4.6
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
  
add_filter( 'gettext', 'bbloomer_translate_woocommerce_strings', 999, 3 );
  
function bbloomer_translate_woocommerce_strings( $translated, $untranslated, $domain ) {
 
   if ( ! is_admin() && 'woocommerce' === $domain ) {
 
      switch ( $untranslated ) {
 
         case 'Sale!' :
 
            $translated = 'Rebaja!';
            break;
 
         case 'Product Description' :
 
            $translated = 'Descripción del producto';
            break;
 
         // ETC
       
      }
 
   }  
  
   return $translated;
 
}

Cómo encontrar la cadena correcta de WooCommerce

A veces, el código anterior no funciona porque seleccionó la cadena de texto incorrecta. No es tan sencillo como parece, porque las cadenas " frontend " (las que ve en el sitio web como usuario) pueden diferir de las " backend " (las que están dentro del código).

Por esta razón, siempre debe estar familiarizado con los archivos PHP de WooCommerce y buscar la cadena antes de aplicar el fragmento anterior. Estos son algunos ejemplos de las cadenas CORRECTAS que debe traducir:

// an easy one to translate
'Pay for order'
 
// a weird one, note the %s placeholder for product name
// on the frontend you would see the product name...
// ...but on the backend you see this:
'Sorry, "%s" is no longer in stock so this order cannot be paid for. We apologize for any inconvenience caused.'

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir