Cómo cambiar el idioma solo para el front-end en WordPress

8 feb 2014, 13:50:40
Vistas: 18.1K
Votos: 14

He instalado un tema de WordPress, puedo ver los archivos .mo y .po en /public_html/wp-content/themes/nombredeltema/lang, el idioma que quiero usar está disponible.

¿Podrías aconsejarme sobre cómo usar un idioma específico? No quiero cambiar el idioma del administrador, solo el idioma del tema.

1
Comentarios

Posible duplicado de ¿Cambiar locale en tiempo de ejecución?

T.Todua T.Todua
4 nov 2018 18:34:41
Todas las respuestas a la pregunta 7
0

En realidad, no necesitas nada especial para tener dos idiomas diferentes en el backend y en el frontend. Acabo de probarlo nuevamente en WordPress 5.1:

  1. Ve a Ajustes y configura el Idioma del sitio al idioma del frontend, por ejemplo, alemán, luego guarda.

  2. Dirígete a Usuarios y haz clic en editar en tu cuenta de administrador. Allí puedes configurar el Idioma a inglés y guardar. Eso es todo. Tu frontend usará alemán como base y el backend estará en inglés.

24 feb 2019 23:20:38
0

Si alguien aún está buscando esto, aquí está lo que deberías hacer desde la versión 4.7

function wp_noshor_redefine_locale($locale) {
    if( is_admin() ):
        switch_to_locale('en_US');
    endif;
}
add_filter('init','wp_noshor_redefine_locale');

Esto fuerza que el panel de control se cargue en inglés, luego puedes ir a ajustes y establecer el idioma que desees.

7 abr 2018 04:24:39
8

Puedes filtrar la cadena para locale, que contiene el idioma actual. Y puedes excluir el administrador de ese filtro:

is_admin() or add_filter( 'locale', function() {
    return 'ar'; // Cambia el idioma a árabe
});
8 feb 2014 13:54:08
Comentarios

En realidad, me refiero a ¿cómo puedo activar un idioma específico para el tema?

Hicham Hicham
8 feb 2014 13:56:12

Esto sucede automáticamente cuando locale coincide con un archivo de traducción existente.

fuxia fuxia
8 feb 2014 13:57:11

Disculpa la molestia ya que soy nuevo en WP, pero ¿cómo puedo hacer que locale coincida con el archivo de traducción?

Hicham Hicham
8 feb 2014 13:57:49

Al agregar el código anterior a un plugin o al archivo functions.php de tu tema.

fuxia fuxia
8 feb 2014 13:58:17

¿tengo que ingresar ar-AR para que mi tema esté en árabe?

Hicham Hicham
8 feb 2014 14:01:09

Eso depende del nombre de tus archivos mo. Pruébalo si no estás seguro.

fuxia fuxia
8 feb 2014 14:04:06

Solo quiero cambiar el idioma del front-end a árabe, no el back-end (mi panel de administración de WordPress), es decir, solo el idioma de mi tema. Entonces, si entendí bien: debo modificar el functions.php de mi tema y agregar lo siguiente:is_admin() or add_filter( 'locale', function() { return 'ar-AR'; });

Hicham Hicham
8 feb 2014 14:06:41

Sí, exactamente. Solo inténtalo.

fuxia fuxia
8 feb 2014 14:27:05
Mostrar los 3 comentarios restantes
0

Creo que tu opción más sencilla sería actualizar tu instalación utilizando la versión localizada de WordPress para tu idioma nativo (y asegurándote de que WPLANG permanezca configurado correctamente), y luego usar un plugin como:

... para cambiar únicamente la interfaz de administración al inglés.

15 ago 2014 17:55:17
0

Aquí está la solución completa y mejorada para cambiar solo el idioma del tema (front-end) o del plugin. Incluso funciona para cambiar el idioma de una página/entrada específica, etc.

Resumen rápido; Existe un filtro llamado locale que determina qué idioma cargar. Puedes cambiarlo al idioma específico que prefieras basándote en las condiciones que establezcas.

Cambiar solo el idioma del Tema, o basado en otras condiciones, sin afectar el idioma del escritorio de administración.

add_filter('locale', function($locale) {

    if( is_admin() ) {
        return $locale; // Mantener el idioma por defecto si es el área de administración.
    }

    // Puedes cargar el idioma basado en cualquier condicional aquí, como is_page(), is_singular(), is_archive() etc.
    // En este ejemplo particular, quiero cambiar el idioma para todo el front-end.

    $locale = 'es_ES'; // Cambia al idioma que necesites. El idioma debe estar instalado y cargado.

    return $locale; // Devuelve el idioma a utilizar.

});

Antes de cambiar el idioma, quizás necesites cargar ese idioma primero.

En tu tema o tema hijo, carga el idioma personalizado usando este fragmento de código.

add_action( 'after_setup_theme', function() {

    // Asumiendo que tus archivos de idioma están en /wp-content/themes/tu-tema/languages
    // No olvides cambiar 'text-domain' por el text-domain de tu tema.

    // Para el Tema.
    load_theme_textdomain( 'text-domain', get_template_directory() . '/languages' );

    // Para el Tema Hijo
    load_child_theme_textdomain( 'text-domain', get_stylesheet_directory() . '/languages' );

    // Elimina load_child_theme_textdomain si lo estás usando para el tema principal,
    // O elimina load_theme_textdomain si estás cargando el idioma del tema hijo.

});

De manera similar, puedes cambiar el idioma basado en la URL, o para la página de tu plugin, etc.

Espero que ayude. O déjame saber si me faltó algo.

1 ago 2020 07:20:43
0

Aquí tienes un fragmento de código de ejemplo que puedes usar para cambiar el idioma dinámicamente en WordPress:

add_filter('locale', 'change_user_lang');
function change_user_lang($locale)
{
    if (is_admin()) return 'en_US'; // establece el idioma del administrador en inglés
    // tu lógica personalizada de idioma aquí, por ejemplo:
    // if (alguna condición) return 'fr_FR'; // establece el idioma en francés
    // if (alguna otra condición) return 'de_DE'; // establece el idioma en alemán

    return $locale; // devuelve el idioma original si no se cumplen las condiciones
}
15 abr 2023 08:04:02
2

También puedes probar esto:

1. Descarga el script de traducción jQuery desde este enlace

2. Cómo funciona ( documentación, prueba en vivo )

<?php
function ravs_frontend_translate_script() {
    wp_enqueue_script( 'translate', get_template_directory_uri() . '/js/jquery.translate.js', array( 'jquery' ), '0.0.1', true );
}
add_action( 'wp_enqueue_scripts', 'ravs_frontend_translate_script' );


function ravs_translate_webpage_fx(){
?>
<script>
    // ejecutar script después de cargar ambos scripts para traducir la página web
        jQuery(document).ready(function(){
          //de inglés a alemán:
          jQuery('body').translate( 'ar' );
        });
</script>
<?php
add_action('wp_footer','ravs_translate_webpage_fx', 999 ); // asegurarse de que este hook se ejecute después de incluir jquery-translate en la página web
12 feb 2014 15:31:04
Comentarios

¿Pero eso no es usar Google para traducir la página, en lugar de usar los archivos .po que ya tiene?

Rup Rup
12 feb 2014 20:26:46

@Rup Sí, está usando el traductor de Google, no el archivo .po. Tal vez es posible que el archivo .po no contenga la traducción de una palabra aleatoria, entonces _e() simplemente la muestra mientras que el traductor de Google convierte toda la página web.

Ravinder Kumar Ravinder Kumar
12 feb 2014 20:52:06