Javier
¿Hay alguna manera como switch_to_blog()
para cambiar el idioma en WordPress.
Algo como
global $locale
$currentLanguage = $locale;
switch_to_language('de_DE');
//do some action with german localisation
switch_to_language($currentLanguage);
¿Es esto posible en general con WordPress?
Javier
Así que finalmente encontré la solución. La función se llama load_textdomain()
Así es como se hace de mi lado. Tener en cuenta para definir LANGUAGE_PATH
y el idioma al que le gustaría cambiar en $new_language
. $your_domain
es el dominio de texto de su plugin/tema
//will output "Good Morning"
_e('Good Morning', $your_domain);
global $locale;
//save the current language for later
$current_language = $locale;
$new_language="DE_de";
//load the new text domain
load_textdomain( $your_language_domain, LANGUAGE_PATH."https://stackoverflow.com/".$your_domain.'-'.$new_language.'.mo' );
//do some action with the new localisation
//will output "Guten Morgen"
_e('Good Morning', $your_domain);
//go back to the previous language
load_textdomain( $your_language_domain , LANGUAGE_PATH."https://stackoverflow.com/".$your_domain.'-'.$current_language.'.mo' );
Tomó un tiempo encontrar este método en el núcleo. Lea más sobre esa función en el sitio del códice
-
¿Sabes si esto todavía funciona? No puedo hacer que funcione yo mismo. Tengo un sitio en sueco donde cada cadena de texto se ejecuta a través de _e() o __() en inglés. En ciertas publicaciones/páginas, me gustaría mostrar todo el texto en inglés en lugar de en sueco, así que solo intento hacer lo que hiciste arriba, pero el resultado no cambia. ¿Estoy usando un tema infantil si eso cambia las cosas?
– boya de energía
12/09/2017 a las 10:52
-
Parece que no funciona si vuelves a cambiar a
en_US
. podrías cambiar$your_domain
a una cadena aleatoria para que la traducción no se registre y use el respaldo – Inglés– Javier
13 de septiembre de 2017 a las 12:13
-
De hecho, así es como terminé resolviéndolo: P. No es perfecto, y obviamente solo funciona para inglés, pero al menos funciona por ahora.
– boya de energía
13/09/2017 a las 14:40
Me temo que vas a necesitar un complemento para eso. WordPress no hace eso fuera de la caja. WPML suele ser el complemento multilingüe para WordPress, debería comprobarlo 🙂
-
Pero, ¿cómo lo hace un complemento? en realidad no necesito el
switch_to_language()
función. Si solo cambio el global $ local, no funciona– Javier
21 de junio de 2013 a las 8:52
-
No puede cambiar una constante definida; eso no va a funcionar Puede cambiar la variable de configuración regional después de eso con el filtro ‘configuración regional’. Mira aquí: wordpress.stackexchange.com/questions/52419/…
– LucP
24/06/2013 a las 21:20
-
revisa mi respuesta final. Así es como lo hice y cómo funciona. Solo tengo que cambiar el idioma temporalmente y no para toda la solicitud.
– Javier
27 de junio de 2013 a las 13:59
-
Puede usar add_filter para cambiar el idioma y luego remove_filter para volver al predeterminado…
– LucP
27 de junio de 2013 a las 20:18
-
no cuando ya se aplicó el filtro, que es en mi caso
– Javier
28 de junio de 2013 a las 8:20