javascript - que - Implementación Simple Dojo i18n
onclick void 0 (1)
Aquí hay un ejemplo de cómo he creado algunos diálogos con localización.
estructura de directorios
myApp/
dialog/
myDialog.js
nls/
dialog.js
fr-ca/
dialog.js
myDialog.js
define("myApp/dialog/myDialog", [
"dojo", "dijit/Dialog", "dojo/i18n",
"dojo/i18n!./nls/dialog" // this is a relative path to the
// dialog.js from myDialog.js
], function(dojo, Dialog) {
var i18n = dojo.i18n.getLocalization(
"myApp.dialog", // this is the directory path to the nls folder
"dialog" // this is the file
);
return declare(Dialog, {
title: i18n.title,
content: i18n.content
});
});
Recientemente comencé a aprender dojo para uso personal y para la experiencia. Hasta ahora, he estado haciendo los tutoriales sobre varias cosas dojo (en su sitio web y en la web) y he estado "luchando" con la implementación de una infraestructura concreta para aplicaciones más complejas (o buenas prácticas). He encontrado un proyecto interesante ( https://github.com/csnover/dojo-boilerplate ) y artículo ( http://www.sitepen.com/blog/2011/05/04/what-is-the-best- way-to-start-a-dojo-project / ). Con eso, creo que mi primer problema está resuelto. Corrígeme si estoy equivocado.
Siento que el tutorial sobre i18n no tiene una implementación concreta. Por ejemplo, me gustaría agregar i18n en el cuadro de diálogo del proyecto repetitivo.
define([ ''dojo/_base/declare'', ''dijit/Dialog'' ], function (declare, Dialog) {
return declare(Dialog, {
title: ''Hello World'',
content: ''Loaded successfully!''
});
});
Aquí, la jerarquía de mi proyecto es:
Como puede ver, creo mi propia carpeta nls para mi aplicación y almaceno para diferentes (lang-locale) mis "cadenas". Ahora, ¿cómo especifico el contenido de la configuración regional en el título o contenido para mi código de diálogo de arriba? Recientemente hice i18n en ruby on rails (con el concepto de MVC) y, según mi opinión, tuve que crear para esta vista específica un archivo para localización (.yml). Sé que RoR y Dojo realmente no son lo mismo, pero tiene un widget (podría ser comparado con mi vista) y cada widget necesita tener su propia localización ... He encontrado 2 tutoriales, el primero y el segundo . Tal vez, estoy leyendo todo mal.
Tengo algo así en este momento, pero no funciona ... ¿Qué me estoy perdiendo?
dojo.requireLocalization("app", "dialog");
define([ ''dojo/_base/declare'', ''dijit/i18n'' ''dijit/Dialog'' ], function (declare, Dialog) {
i18n: dojo.i18n.getLocalization("app", "dialog"),
return declare(Dialog, {
title: i18n.title,
content: i18n.content
});
});
Gracias.
EDITAR:
define([ ''dojo/_base/declare'', ''dojo/i18n!app/nls/labels'', ''dijit/Dialog'' ], function (declare, labels, Dialog) {
return declare(Dialog, {
title: labels.title,
content: labels.content
});
});
No tengo ningún error ahora, pero mi etiqueta.título está vacío ...?
EDITAR (1): Olvidé agregar la raíz en la carpeta nls predeterminada.