Pyramid documentation nos muestra cómo usar i18n dentro de las vistas (y templates as well). Pero, ¿cómo se puede utilizar uno fuera de las vistas y las plantillas en las que no tenemos acceso a la actual request
(por ejemplo, en forms
y models
)?¿Cómo usar Pyramid i18n fuera de vistas y plantillas?
@Michael dice que pase request
a modelos y formularios. Pero es correcto? Me refiero a si los campos de formulario definen antes de las llamadas al método __init__()
, lo mismo con los modelos. Ellos no ven ningún parámetro de vistas ...
En los pilones podríamos simplemente utilizar get_lang()
y set_lang()
y definir el lenguaje preferible en controlador de matriz y luego usar ugettext()
y ungettext()
en cualquier lugar que queramos sin que calificó de request
directamente cada tiempo posible (en puntos de vista).
¿Cómo hacer eso en Pyramid? Tenga en cuenta que el idioma debe configurarse a partir de la configuración del usuario (sesión, cookies, db, etc.).
'get_localizer() 'require parametr' request', así que esto significa que puedo usarlo solo dentro de la función de vista (o clase). Pero, ¿cómo usarlo fuera de las vistas? –
Bueno, usted accede a la 'solicitud' pasándola a sus formularios/modelos, o usa' get_current_request() 'o crea su propio localizador como dice ese enlace a través de' make_localizer'. La 'solicitud' determina qué localidad debe usar el localizador, y si desea mantener ese comportamiento, obviamente necesita una' solicitud'. –
Parece que acaba de cambiar la pregunta de "cómo hacer la traducción fuera de vistas/plantillas" a "cómo hacer la traducción". Siento que respondí tu pregunta original en la respuesta y los comentarios con respecto a cómo Pyramid hace esto. Para saber cómo hace Pyramid la traducción, debe leer toda la página que he vinculado, porque realmente parece abarcar la mayor parte de esta "práctica". –