2012-09-10 11 views
5

He leído y seguido las instrucciones en here, pero no puedo ver la cadena en el javascript en el archivo po.Soporte de Django para traducciones en archivos Javascript

structure of my project is: 
cb/  
    cb_app  
    cb  
    static_files  
    templates 

En primer lugar he copiado estos en mi url.py:

js_info_dict = { 
    'packages': ('cb_app',), 
} 

urlpatterns = patterns('', 
    (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict), 
) 

Luego he añadido este script para mi html:

<script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script> 

El guión real donde me gustaría obtener la traducción, es tan simple como eso:

$(document).ready(function() { 
    $('#id_sales_item').chosen({no_results_text: gettext('No results match')}); 
}); 

... y se utiliza en el mismo html.

Entonces, ¿hay algo más que deba hacer?

Todo lo que hice entonces fue ejecutar la línea debajo tanto de cb/cb como de cb/cb_app.

django-admin.py makemessages -l en_GB 

Pero todavía no hay señal de 'Ningún resultado coincide' en ambos cb/cb/locale ni en cb/cb_app/locale

Algún consejo?

Respuesta

4

Finalmente he encontrado el problema.

La documentación sugiere crear los mensajes una vez desde el proyecto Django y una vez desde la aplicación Django. De esa forma terminarás con dos directorios locale. Y en ninguno de esos casos, las traducciones de javascript serían recogidas de todos modos. Esto es un desastre.

La solución más limpia que he encontrado es ir a settings.py e insertar esta línea (véase también mi jerarquía del proyecto anterior):

LOCALE_PATHS = ('/home/kave/projects/cb/locale',) 

A continuación, cree un directorio llamado locale en la raíz-directorio del proyecto (ver el camino anterior)

No olvide aplicar las entradas en url.py y html también (vea arriba).

Por último, ahora que los de locales se unifican en un solo lugar, ir a proyecto-root-directorio: /home/kave/projects/cb y ejecutar estos dos comandos:

django-admin.py makemessages -l en_GB 
django-admin.py makemessages -d djangojs -l en_GB 

El primer comando Get los textos de traducción de las dos subcarpetas de proyecto y de aplicaciones . El segundo obtiene la traducción de javascript en un segundo archivo po.

Eso es todo.

+1

¡Eres mi salvador !, es triste que no haya encontrado esto en django docs :( –

Cuestiones relacionadas