Estado de la Internacionalización (i18n) en Sakai Raúl E. Mengod López Universidad Politécnica de Valencia Pamplona, 18 Noviembre de 2009
Índice Introducción a la UPV Un poco de Historia de Sakai WG: i18n Traducción de Sakai ¿Cómo construir herramientas i18n? Best Practices Estado actual de la i18n en Sakai Problemas de i18n Mejoras conseguidas en las últimas versiones I18n en 3akai
Introducción a la UPV Introducción a la UPV
Introducción a la UPV Universidad Politécnica Valencia (UPV) Universidad pública creada en 1971 Estudios principalmente técnicos Misión y visión La UPV es una universidad innovadora al servicio de la sociedad y de su progreso. Excelente en la formación de profesionales y en la investigación. 4
Introducción a la UPV La Universidad Politécnica de Valencia en cifras: Centros Docentes 15 Departamentos 44 Titulaciones 1er Ciclo 31 Titulaciones de 2º Ciclo 12 Titulaciones 1er y 2º Ciclo 13 Alumnos de 1er y 2º Ciclo 36.525 Programas de Doctorado 66 Alumnos de 3er Ciclo 1933 P. Docente e Investigador 2.497 P. Administración y Servicios 1.471 Institutos de Investigación 40 Contratación I+D+I 35 M. € Presupuesto anual 218 M. € Programas Máster 40 Cursos de Especialización 66 Empresas colaboradoras PCE 2.718 5
Introducción a la UPV
Sakai en la UPV 7 Piloto durante 2006 Sistema con funcionalidad completa Sólo usuarios seleccionados Sistema en Producción en 2006/2007 4 servidores Base de Datos Oracle Integrado con nuestro propio SSO Integrado con Matrícula 4.000 sites 40.000 alumnos Basado en la versión 2.1.2 Traducida a Castellano Una personalización muy alta Con parches de i18n 7
Sakai en la UPV Migración a 2.4.x en 2007/2008 Re-personalización de los cambios de la 2.1.2 Más parches de i18n Avanzadilla de funcionalidades de la 2.6 Migración a 2.6 en Octubre 2009 Problemática de los parches Problemática de la adaptación Menos parches de i18n que en versiones anteriores
Sakai en la UPV
Un poco de Historia de Sakai
Un poco de Historia de Sakai Universidad de Lleida empezó el trabajo Creación de los ficheros de properties Traducción a Catalán Sakai 2.1 Corriendo sólo en monolingue pero con el idioma por defecto Versión española no disponible Sakai 2.1.1 Versión multilingüe introducida por la Nagoya University Clase especifica para tratar los bundle. Resourcebundle.java Almacenamiento del idioma en las preferencias personales Sakai 2.1.2 Primera versión en Castellano Había muchos problemas básicos por solucionar
Un poco de Historia de Sakai Se añadieron más Idiomas Sakai 2.4 Solucionadas 29 incidencias Tool revisar traducciones Sakai 2.5 Solucionadas 22 incidencias Tool migración de traducciones Sakai 2.6 Solucionadas 12 incidencias Sakai 2.7 Solucionadas 83 incidencias (muchas en 2.6.1)
WG: i18n
WG: i18n Espacio de i18n en sakai ¿Que encontramos en el Confluence? Working Group de Sakai http://bugs.sakaiproject.org/confluence/display/I18N/Home Controlado por Beth Kirshner ¿Que encontramos en el Confluence? Configuración i18n de sakai Guia traducción de sakai Guia para el desarrollo Herramientas traducción Herramieta control de las traducciones
WG: i18n http://bugs.sakaiproject.org/confluence/display/I18N/Home
Configuración de la i18n
Configuración de Sakai Windows: set JAVA_OPTS=%JAVA_OPTS% -Duser.language=es -Duser.region=ES Linux or Unix JAVA_OPTS="$JAVA_OPTS -Duser.language=es -Duser.region=ES
Traducción de Sakai
Traducción de Sakai El primer paso para avanzar en la Internacionalización Traducciones disponibles actualmente:
Traducción de Sakai Cada idioma tiene un responsable Catalán : Lleida Castellano: Valencia Euskera: Navarra Gallego: ¿Santiago? Permisos de commit sobre los Ficheros en svn Es necesaria una revisión y actualización constante Cambios constantes en los programas La traducción se suele realizar fuera de contexto Falta un mecanismo para verificar la validez de una traduccíón
Herramientas ayuda traducción Traducción de Sakai Herramientas ayuda traducción Editores de Ficheros de Recursos ResourceProperties Editor http://sourceforge.net/projects/i18nedit XLIFF Translation Editor https://open-language-tools.dev.java.net/ Utilidad de Transferencia de Traducciones Por la Universiad de Smolny (San Petersburgo) Estado de las Traducciones Utilidad en Universidad de Amsterdam http://qa1-nl.sakaiproject.org/international/index.html Se actualiza diariamente contra el trunk OJO con los ficheros excluidos http://qa1-nl.sakaiproject.org/international/trunk/de.html#excludedfiles
Traducción de Sakai
Traducción de Sakai
Traducción de Sakai
Traducción de Sakai Proceso de Revisión de un Idioma Traducción en local y actualización en el trunk Cada Responsible sube sus ficheros Última revisión después de congelar el código de una versión No se permiten cambios una vez generadas las Betas Se suele generar ya la rama de mantenimiento No siempre se mergean cambios posteriores OJO: Está a punto de congelarse el código v. 2.7
¿Cómo construir Herramientas i18n?
Estándares i18n Sakai http://bugs.sakaiproject.org/confluence/display/I18N/How+to+write+Internationalized+Tools+in+Sakai Por Beth Kirschner Se basa todo en el uso de la clase ResourceLoader Es una clase envolvente de la clase Loadbundle Obtiene el idioma de la preferencia del usuario Mira también el idioma del Browser Si no busca el idioma por defecto del Servidor
Estándares i18n Sakai http://bugs.sakaiproject.org/confluence/display/I18N/How+to+write+Internationalized+Tools+in+Sakai Herramientas construidas con JSF Crear un backing bean para mensajes messages en el fichero faces-config file o en la página JSP Actualizar el Bean con el fichero de properties adecuado Usarlo de la misma forma que se usa la clase LoadBundle Herramientas construidas con Velocity Crear una instancia de la clase ResourceLoader Poner esta instancia en el contexto Referenciarla como cualquier otra variable
Estándares i18n Sakai http://bugs.sakaiproject.org/confluence/display/I18N/How+to+write+Internationalized+Tools+in+Sakai Herramientas construidas con RSF Definir el mensaje en la plantilla <span rsf:id="msg=page.user.message.key">This is an internationalized message.</span> Usar la clase UIMessage <span rsf:id="my-rsf-id">This will be an internationalized message.</span> UIMessage.make(tofill, "my-rsf-id", "page.user.message.key"); Dejar el fichero de propiedades en el lugar por defecto tool/src/webapp/WEB-INF/messages Más Información en: http://www2.caret.cam.ac.uk/rsfwiki/Wiki.jsp?page=I18N
I18n Best Practices
I18n Best Practices Nunca Olvides el Estándar Definir todas las herramientas de la misma forma Los ficheros de Propiedades son nuestros amigos La implementación es independiente del lenguaje Seperar los ficheros de propiedades que dependen del idioma de los que dependen de la configuración. Separar los nombres de los códigos Ej: Caso codificacion de estados
I18n Best Practices No debe existir texto literal en los ficheros .java o .jsp Es más duro de desarrollar pero es necesario El código es más difícil de entender Sólo los datos introducidos por el usuario deberían guardarse en la BD. Evitar el almacenamiento de información necesaria para la lógica de la aplicación, estados, dispatchers. Sólo el usurio debe insertar datos en la Bd y no la aplicación No usar String internacionalizados en la lógica de la aplicación Realizar pruebas en más de un idioma
I18n Best Practices Literales sensibles a idioma almacenados en la BD Gradebook GB_GRADABLE_OBJECT_T.EXTERNAL_APP_NAME
I18n Best Practices Samigo: Datos de la Herramienta almacenados en la BD SAM_TYPE_T.KEYWORD
I18n Best Practices Separar valores y nombres en las Opciones msgcntr\messageforums-app\src\java\org\sakaiproject\tool\messageforums\DiscussionForumTool.java public List getPostingOptions() { List postingOptions = new ArrayList(); postingOptions.add(new SelectItem(PermissionBean.NONE,PermissionBean.NONE)); postingOptions.add(new SelectItem(PermissionBean.OWN,PermissionBean.OWN)); postingOptions.add(new SelectItem(PermissionBean.ALL,PermissionBean.ALL)); return postingOptions; }
Estado Actual de la Internacionalización
Estado de la Internacionalización Internationalization Status At the time of this writing, the following languages/locales are supported: English (US & UK), Japanese, Korean, Dutch, Simplified Chinese, Spanish, French (France & Canada), Catalan, Swedish, Arabic, Russian, Portuguese (Portugal & Brazil). Additionally, there are several aspects of internationalizing Sakai: 1) Ability to type international (unicode) characters into any Sakai tool Status: Currently supported 2) Ability for any tool interface to dynamically reflect a user's preferred international locale Status: Supported pending translation 3) Ability to create worksites whose page titles will statically reflect to a defined international locale Status: Supported pending translation 4) Ability to create worksites whose page titles will dynamically reflect a user's preferred international locale Status: Not supported yet (pending development) 5) Ability to create worksites whose page titles and tool interface will statically reflect a site's preferred international locale Status: Not supported yet (pending development) 6) Ability to support right-to-left languages Status: Supported pending customized skins or CSS (see Sakai-RTL-skin.jpg) Solucionado
Problemas en el JIRA
Problemas en el JIRA
Problemas en el JIRA
Problemas en el JIRA 86 incidencias reportadas en el JIRA
Problemas i18n
Problemas i18n Globales a Sakai
El problema de las Fechas Localization El problema de las Fechas Diferentes formatos según Zona. Poca uniformidad en sakai. No se usa siempre el mismo código para solicitar fecha y para mostrar fecha.
Localization
Problemas i18n De Codificación
Problemas i18n Problemas con solución
Problemas i18n Textos incluidos en las imágenes Solución: Usar una imágen anónima
Problemas i18n Reorganización
Problemas i18n Mejoras
Mejoras conseguidas en las últimas versiones
Mejoras i18n Nombres de Páginas y Herramientas Basado en el fichero de los nombres de las tools Excepción con tools que se pueden repetir Si se personaliza el nombre se pierte la traducción
Mejoras i18n Primer día de la semana
Mejoras i18n Uso de Strings i18n en la lógica de la aplicación El nombre de las carpetas se crea en inglés pero luego las búsquedas se hacían en el idioma de navegación
Herramienta Ayuda Herramienta Especial No usa Ficheros de Propiedades Difícil de mantener sincronizada con la original Traducido a castellano
Conclusiones
Se ha trabajado mucho en la i18n Conclusiones Se ha trabajado mucho en la i18n Nuevos Idiomas Nuevas funcionalidades Nuevos Parches Aún queda mucho por hacer (entre todos) Siguen habiendo muchos Bugs No es un tema prioritario para la comunidad Sólo interesa a algunos europes Aún más interesadas las zonas bilingües
Falta una política clara de control de la i18n Conclusiones Falta una política clara de control de la i18n Similar a la que se ha hecho con QA Certificación de Idiomas Control de las traducciones en el QA Requisito para pasar una contrib a provisional Creación de un comité de seguimiento
I18n en 3akai
I18n en 3akai Sakai 3 está en un estado temprano de desarrollo Buena oportunidad para solucionar los problemas de i18n Posibilidad de ‘hacer bien las cosas’ Las traducciones siguen estando en properties ¿Traducción en Sling? Falta documentación
Propuestas del grupo Spanish Sakai
Propuestas Crear grupo conjuto revisar problemas Repartirse las incidencias Hacer más presión a Sakai
Gracias rmengod@upv.es
EuroSakai 2010 VALENCIA 1-3 Marzo 2010