• No se han encontrado resultados

InternacionalizaciónInternacionalización

In document Odoo10 -Construccion Modulo (página 36-38)

Internacionalización

Cada módulo puede proporcionar a sus propias traducciones en el directorio i18n, por tener archivos con el nombre Cada módulo puede proporcionar a sus propias traducciones en el directorio i18n, por tener archivos con el nombre LANG.po donde idioma es el código de región para el idioma o el idioma y el país combinación cuando difieren (por LANG.po donde idioma es el código de región para el idioma o el idioma y el país combinación cuando difieren (por ejemplo pt.po o pt_BR.po).

ejemplo pt.po o pt_BR.po). Las traducciones serán cargados automLas traducciones serán cargados autom áticamente por Odoo para todáticamente por Odoo para tod os los idiomasos los idiomas habilitados. Los desarrolladores utilizan siempre Inglés al crear un módulo, a continuación, exportar los términos del habilitados. Los desarrolladores utilizan siempre Inglés al crear un módulo, a continuación, exportar los términos del módulo utilizando característica de exportación gettext POT de Odoo (

módulo utilizando característica de exportación gettext POT de Odoo ( Ajustes Ajustes Las Las traducciones traducciones Importar //Importar Exportar

Exportar exportación exportación de de traduccióntraducción sin especificar un idioma), para crear el archivo POT plantilla de módulo, y sin especificar un idioma), para crear el archivo POT plantilla de módulo, y luego se derivan del traducidos archivos PO. Muchos de IDE tienen plugins o modos de edición y combinación de luego se derivan del traducidos archivos PO. Muchos de IDE tienen plugins o modos de edición y combinación de archivos / PO POT.

archivos / PO POT.

Tip Tip

Los archivos generados por objeto portátil Odoo se publican en

Los archivos generados por objeto portátil Odoo se publican en TransifexTransifex, por lo que es fácil de traducir el software., por lo que es fácil de traducir el software.

|- idea/ # The module directory |- idea/ # The module directory |- i18n/ # Translation files |- i18n/ # Translation files

| -

| - idea.pot # Translation Template (exported from Odoo)idea.pot # Translation Template (exported from Odoo) | - fr.po #

| - fr.po # French translationFrench translation | -

| - pt_BR.po # Brazilian Portuguese translationpt_BR.po # Brazilian Portuguese translation | (...)

Tip

Tip

Por defecto exportación POT de Odoo sólo extrae las etiquetas dentro de archivos XML o definiciones de campo en Por defecto exportación POT de Odoo sólo extrae las etiquetas dentro de archivos XML o definiciones de campo en el interior en el código Python, pero cualquier cadena de Python se puede traducir de esta manera por lo rodea con el interior en el código Python, pero cualquier cadena de Python se puede traducir de esta manera por lo rodea con la función

la funciónodoo._()odoo._() (por ejemplo (por ejemplo _("Label")_("Label")))

Ejercicio

Ejercicio

Traducir un módulo Traducir un módulo

Elegir un segundo idioma para la instalación de Odoo. Traducir el módulo utilizando las facilidades proporcionadas Elegir un segundo idioma para la instalación de Odoo. Traducir el módulo utilizando las facilidades proporcionadas por Odoo.

por Odoo. 1.

1. Crear Crear un un directoriodirectorio openacademy/i18n/openacademy/i18n/

2.

2. Instalar Instalar el el idioma idioma que que desee desee (( AdministracióAdministración n Las Las traducciones traducciones cargar cargar una una traducción traducción oficialoficial ) ) 3.

3. Sincronizar Sincronizar los los términos trtérminos traducibles aducibles (( Administración Administración Traducciones Traducciones Términos Términos de de AplicacionesAplicaciones Sincronizar Traducciones

Sincronizar Traducciones ) ) 4.

4. Crear una Crear una plantilla de plantilla de archivo de archivo de traducción mediante traducción mediante la exportación la exportación (( AdministracióAdministración n Traducciones Traducciones ->-> Importar

Importar / / Exportar Exportar exportación exportación traduccióntraducción ) sin especificar un idioma, salvo en ) sin especificar un idioma, salvo en openacademy/i18n/openacademy/i18n/

5.

5. Crear un Crear un archivo de archivo de traducción mediante traducción mediante la exportación la exportación (( Las Las traducciones traducciones Importar Importar / / ExportarExportar exportación Traducción Administración

exportación Traducción Administración ) ) y y la la especificación especificación de de un un idioma. idioma. GuardarloGuardarlo en

enopenacademy/i18n/openacademy/i18n/

6.

6. Abra el archivo Abra el archivo de traducción exportado de traducción exportado (con un editor (con un editor de texto de texto básico o un básico o un dedicado PO-editor de archivosdedicado PO-editor de archivos por ejemplo

por ejemplo PoeditPoedity traducir los términos que faltany traducir los términos que faltan 7. En

7. Enmodels.pymodels.py, añadir una instrucción de importación para la función, añadir una instrucción de importación para la función odoo._ odoo._ y marcar las cadenas faltantesy marcar las cadenas faltantes como traducible

como traducible 8.

8. Repita Repita los los pasos pasos 3-63-6

openacademy/models.py 

openacademy/models.py 

# -*- coding: utf-8 -*-

# -*- coding: utf-8 -*-

from

from datetimedatetime importimport timedeltatimedelta from

from odooodoo importimport models,models, fields,fields, api,api, exceptions,exceptions, __ class

class CourseCourse(models(models..Model):Model): _name

_name == 'openacademy.course''openacademy.course'

default

default == dict(defaultdict(default oror {}){}) copied_count

copied_count == selfself..search_count(search_count( [(

[('name''name',, '=like''=like',, _(_(u"Copy of {}%"u"Copy of {}%"))..format(selfformat(self..name))])name))]) if

if notnot copied_count:copied_count: new_name

new_name == _(_(u"Copy of {}"u"Copy of {}"))..format(selfformat(self..name)name) else

else::

new_name

new_name == _(_(u"Copy of {} ({})"u"Copy of {} ({})"))..format(selfformat(self..name,name, copied_count)copied_count) default[

default['name''name']] == new_namenew_name return

return super(Course,super(Course, self)self)..copy(default)copy(default) if

if selfself..seatsseats << 00:: return

return {{ 'warning'

'warning':: {{ 'title'

'title':: _(_("Incorrect 'seats' value""Incorrect 'seats' value"),), 'message'

'message':: _(_("The number of available seats may not be negative""The number of available seats may not be negative"),), },

}, } } if

if selfself..seatsseats << len(selflen(self..attendee_ids):attendee_ids): return

return {{ 'warning'

'warning':: {{ 'title'

'title':: _(_("Too many attendees""Too many attendees"),), 'message'

'message':: _(_("Increase seats or remove excess attendees""Increase seats or remove excess attendees"),), },

}, } } def

def _check_instructor_not_in_attendees_check_instructor_not_in_attendees (self):(self): for

for rr inin self:self: if

if rr..instructor_idinstructor_id andand rr..instructor_idinstructor_id inin rr..attendee_ids:attendee_ids: raise

Reporting (informes)

Reporting (informes)

In document Odoo10 -Construccion Modulo (página 36-38)

Documento similar