php - sirve - template string javascript
Cómo traducir cadenas en JS (7)
http://plugins.jquery.com/project/jquery-localize encontró esto, que es usado por y para letmegooglethatforyou.com también encontró este http://plugins.jquery.com/project/l10n ¿ cuál es mejor?
Tengo un proyecto que quiero traducir a varios idiomas para la parte de PHP. Uso Zend Frameworks Zend_Translate con GetText. Ahora quiero traducir la parte JS también.
Estoy usando jQuery JS Framework y me encantaría escuchar sus opiniones sobre la traducción de archivos JS
Bien, podría extender cadenas para darles una función traducida, que busca el receptor en una localidad.
Lo usarías así:
alerta ("¡Tu idioma favorito es el inglés!", traducido ());
Y se te daría una alerta con "tu idioma prefiero es español", o algo
niko
Esto también podría ser de su interés: un complemento gettext para jQuery .
Tengo una página web PHP que también existe en varios idiomas. Escribí mi propia clase de idioma en PHP y cuando se trataba de localizar los archivos JavaScript simplemente configuré el servidor para ejecutar archivos .js también como PHP, y usé mi clase PHP para traducir cadenas de JavaScript.
Algo como esto:
alert ( ''<?php echo $l->Get ( ''MyString'' ); ?>'' );
Solo incluyo un archivo que inicializa el "$ l" al comienzo de cada archivo JavaScript. No tengo problemas con esto
He utilizado con éxito GetText para la traducción de archivos JavaScript en tres proyectos.
Por supuesto, GetText de forma nativa no es compatible con JavaScript y JavaScript tampoco es compatible con GetText. Mi solución ha sido la siguiente.
- En JavaScript, rodeo cadenas traducibles con
gettext("your text here")
. - Luego tengo una secuencia de comandos que extrae las cadenas de los archivos JavaScript y crea un archivo C, porque C es compatible con gettext.
- Luego utilizo
xgettext
en los archivos C generados y en cualquier otro archivo en mi proyecto para producir archivos POT y PO.
Después de traducir los archivos PO, tengo que volver a traducir las traducciones a JavaScript ...
- Analizo los archivos JavaScript de nuevo, recordando la lista de cadenas traducibles, luego para cada configuración regional:
- Usando un lenguaje con soporte GetText (en mi caso, PHP) traduzco todas las cadenas y el archivo de salida de JavaScript.
Por ejemplo, un archivo de configuración regional para estonio (por ejemplo, et_EE.js
) podría verse así:
var LOCALE = {
"Hello": "Tere",
"My name is %s": "Minu nimi on %s",
"Enter your credit card number": "Sisesta oma krediitkaardi number"
};
function gettext(string) {
return LOCALE[string] ? LOCALE[string] : string;
}
Según la configuración regional seleccionada, puede incluir et_EE.js
o en_US.js
o ...
en_US.js
probablemente contenga solo lo siguiente:
function gettext(string) {
return string;
}
Un poco más complicado para ngettext()
, pero debes tener una idea general.
Lo mejor es que puedo usar todas las herramientas gettext ya disponibles. Especialmente cuando tengo textos traducibles en PHP y JavaScript, puedo usar la misma herramienta para traducirlos y también asegurarme de que la misma cadena se traduce de la misma manera tanto en JavaScript como en PHP.
NOTA: Si no tiene que lidiar con una aplicación web con uso intensivo de JavaScript, debe pensar dos veces antes de tener contenido de página creado por JavaScript en primer lugar.
// just for some idea
//var language ="fr_FR";
var language ="sp_SP";
var FRLOCALE = {
"Hello": "bonjure ",
"My name is %s": "mo nome oc ",
"what": "some french thing"
};
var SPLOCALE = {
"Hello": "Spanish for hello",
"My name is %s": "spanish for my name is ",
"what": "qu"
};
function translated(language, string){
if (language.indexOf("fr") > -1) {
return FRLOCALE[string] ? FRLOCALE[string] : string;
}
if (language.indexOf("sp") > -1) {
return SPLOCALE[string] ? SPLOCALE[string] : string;
}
return string;
}
alert(translated(language,"Hello"));
alert(translated(language,"some thing not translated "));