El objetivo es ofrecer un botón / seleccionar desplegable o similar para cambiar la interfaz pública 1) idioma sobre la marcha.
Lo que estoy buscando
- Plugin o código de tema ...
- ... o ideas
load_textdomain()
Se agradecería usar una solución alternativa para dejar la traducción a archivos .po / .mo- Ideas sobre cómo analizar las cadenas en la interfaz (por ejemplo, archivos ajax / plain php / ini, json, xml) cuando no confía en alguna función de dominio de texto
Nota:
1) No se trata de publicar en diferentes idiomas.
2) No necesito código para hacer el menú desplegable / botón / lo que sea. Solo se trata del código / sistema que entrega las cadenas para la interfaz de usuario.
¡Gracias!
multi-language
translation
language
emperador
fuente
fuente
WPLANG
constante podría ser una opción. Lo estoy haciendo en dos sitios con contenido multilingüe donde el complemento multilingüismo no puede activar la traducción de la interfaz de usuario. Si tiene que ser una solución AJAX / JSON, no sabría cómo ayudar.Respuestas:
Con mucho, la mejor manera (más fácil) es usar el filtro de configuración regional (dentro
get_locale()
).Primero configure una función rápida para recuperar un idioma diferente para usar en el
locale
filtro.He dejado esto como una función global, ¿podría ser útil ...? El resto del complemento lo he incluido dentro de una clase.
Crea un menú desplegable de posibles idiomas entre los que puede seleccionar.
Inconvenientes
wp-content/languages
archivos del formularioxx_xx.mo
. Si no es de esa forma (no todos los archivos .mo son), ¡el complemento no lo detectará!$locale
algo más que el idioma? Si es así, todavía es posible obtener la configuración regional igual, pero proporcionar traducciones alternativas. Aunque es mucho más desordenado ...El código
fuente
'wp-admin/includes/ms.php'
activa un aviso de administrador para actualizar sus sitios de red (¡cuando es un solo sitio!). Es posible queformat_code_lang()
deba duplicarse dentro de una función personalizada.Si puede conformarse con una actualización de la página, redefinir la
WPLANG
constante podría ser una opción. Lo estoy haciendo en dos sitios con contenido multilingüe donde el complemento multilingüismo no puede activar la traducción de la interfaz de usuario.fuente
http://example.com/language/whatever/
, ¿verdad?$_SESSION
variable para activar la redefiniciónWPLANG
en la próxima carga de página. Si desea replicar esto en un sitio multilingüe, tenga en cuenta que, como dice el comentario con el pastebin, el código en él funciona con WPML, la última versión gratuita. No se puede replicar 1 a 1 con qTranslate, porque esos URI no son físicos, sino que se reescriben a través delmod_rewrite
módulo apache. Estoy seguro de que se puede ajustar, pero no funcionará "como está".$_SESSION
) Mi problema es que afaik son bastante difíciles de manejar y las cosas entre los globales y la matriz se pueden mezclar fácilmente. Entonces, si trato de encontrar una manera de cambiarWPLANG
, entonces necesito encontrar una forma sólida de darlo de una solicitud a otra. Quizásadd_query_arg/get_query_var
haga el truco ...http://www.qianqin.de/qtranslate/
es lo que necesitas ...
Editar I - después del comentario. Primero, gracias por todos los que contribuyeron en el torrente de votos negativos. (esto es lo que sucede cuando uno no visita con suficiente frecuencia: -))
ahora: la función que maneja el conmutador está en qtranslate-core. (comienza en la línea 80 más o menos, depende de la versión que desee).
Como no puede buscar un código NOT OOP, y ahora no tengo nada más que hacer, me tomé 10 minutos para sintetizar, parafrasear compilar ese no OOp con otro código no OOP para usted.
(lo siento, primitivo viejo skool aquí)
Suponiendo que entendí la pregunta && Suponiendo que desea que el código sea para el administrador && suponiendo que sabrá cómo portarlo al front-end si lo desea && asumiendo que comprende que el código no es óptimo:
OBSERVACIONES
1 - Esto fue construido en 10 min. en la máquina local, mientras que en el aeropuerto. La razón por la que digo esto es que la única instalación de WordPress disponible que tengo aquí es bastante antigua. (2.9 creo).
Esto significa que probablemente el menú de idioma aparecerá BAJO el div de ayuda contextual, debido al hecho de que recientemente se introdujo una nueva estructura div (con pestañas), pero aún así debería funcionar. (Prometo volver a esto más tarde si tengo tiempo)
Si tuviera más tiempo (y un nuevo código de WordPress aquí) probablemente integraría esto en la nueva barra de administración con
add_action( 'admin_bar_menu', 'k99_add_language_menu_2', 1000 );
(ya prometí volver a esto)2 - debe tener los archivos de idiomas enumerados dentro de la carpeta "idiomas" en wp-content (mejor ??) o wp-include. con respecto a este punto, el código es solo una prueba de concepto, y, por supuesto, si uno tiene más tiempo, el menú debe construirse de forma dinámica y no como se hace aquí.
3 - tu WPLANG en la configuración debe estar vacío. No estoy seguro de que funcionará en las nuevas versiones de wp si ya se ha configurado un idioma.
4 - es una simple prueba de concepto sintetizada y parafraseada construida sobre lo que se vio en el código qtranslate (también versión anterior) - por lo que la mayoría de las cosas se hacen de la manera "rápida", no necesariamente de la manera "correcta" (como agregar JS , sin dominio de texto dedicado, etc.).
EDITAR II
Alguien tiene suerte hoy! (Vuelo demorado )
Como estaba buscando "ideas" para enfoques, aquí hay otra famosa.
No cabrá en un complemento, o en cualquier otro entorno no exclusivo, pero podría darle otra dirección sobre cómo manejar el "material del navegador".
Esto permitirá obtener el idioma con un GET como:
<a href="index.php?lang=de">German</a>
o<a href="whatever.php?lang=ml">my Language</a>
Para usar, puede crear un código (vamos a llamarlo wp-langswitch.php)
ahora, en wp-config, justo antes de la constante WPLANG, necesitamos incluir nuestro código.
Ahora, obviamente, sería mejor agregar algunas cookies a la mezcla para almacenar los idiomas.
EDITAR III
Prometí volver a esto más tarde: así es cómo (de una manera muy incorrecta y primitiva) podría integrarse dentro de la barra de administración (en lugar del menú de ayuda contextual)
Simplemente reemplace esta función (o agregue) al código anterior (el no plugin original NO - OOP).
Como dije, no tengo una nueva instalación de WordPress aquí en local que incluya la barra de administración, pero debería funcionar.
(y de nuevo, puede que no funcione ... pero estoy seguro de que podría solucionarlo si realmente lo desea, incluso aunque no sea POO) :-)
Tengo que correr ahora. Espero que ayude de alguna manera.
EDITAR IV : cambió la edición III a la versión de trabajo para la barra de menú de administración (al menos en mi wp 3.4)
Como no tenía una instalación funcional de 3.4, y ahora regresé y lo hago, he editado la solución Edit III, y funciona para mí.
Sobre los votos a favor, no podría importarme menos. Y no necesito ninguna "recompensa" (sean las que sean). Fue solo por el ejercicio que tal vez deberías dárselo al autor de qTranslate. :-) a pesar del hecho de que no es OOP, es un plugin genial con mucho que aprender en muchas áreas. considerando el "cuándo" de este lanzamiento de plugin, es incluso sorprendente. Vale la pena el esfuerzo indescriptible de leer un código NO OOP, incluso si no lo es, OOP. E incluso si no está correctamente sangrado (¡Dios mío!).
fuente
require()
. No se puede usardefine()
en la misma cadena dos veces. Edit III tiene algunos problemas con los idiomas. Seleccionaren_US
no haría nada (?), Perode_DE
lo establecería enEnglish
;). Para resumir: otorgo recompensas y se las doy (por ejemplo, StephenHarris) para obtener una respuesta completa y funcional. Si tiene algo así, actualice su respuesta (enfoque de cookie interesante) y puedo agregarle y recompensarle una recompensa.