Django

2014-09-29 15 views
5

Benim kurulum

settings.py JS dosyaları için çalışmıyor makemessagesDjango

INSTALLED_APPS = (
    ... 
    'myprojectname', 
    ... 
) 

STATIC_ROOT = '/var/www/a_valid_path/' 

LOCALE_PATHS = (
    os.path.join(BASE_DIR, "locale"), 
) 

urls.py aşağıdaki

js_info_dict = { 
    'domain': 'djangojs', 
    'packages': ('myprojectname',), 
} 

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

Projem yapısı gibi:

|- projectname 
|--- app1 
|--- app2 
|--- manage.py 
|- virtualenv 
|- static 
|--- js 
|--- css 

Ayrıca, manage.py adresinin yer aldığı projemin kök klasöründe locale klasörüne sahibim. Ben Basitçe çalışan

yapıyorum ne

: İşe yaramıyor

./manage.py -l ro -d djangojs 

Sorunum. .po dosyası oluşturulmamaktadır. Ancak sunucu tarafı çevirisi çalışır (görünümler + şablonlar). Tüm tavsiyeleri izledim ve hala hiçbir şey. Hatta, Django'nun onu silmesinin ya da onunla bir şey yapıp yapmadığını görmek için djangojs.po dosyasını kendim oluşturmaya çalıştım - hayır.

Hiçbir hata üretilmiyor, sadece processing locale ro gösteriliyor (gerçekten kısa bir süre için - eğer bana sorarsanız çok kısa) ve işte bu kadar. Herhangi bir yardım?

Düzenleme: JS dosyalarını içeren klasörüm her bir Django uygulamasında değil, ayrı bir konumda bulunduğundan bahsetmeyi unutmayınız. Yine de Django, STATICFILES_DIRS'un içine bakmamalı mı?

+0

Tercüme etmek istediğiniz '.js' dosyaları nerede bulunur? –

+0

Her ikisi de varsayılan django kurulumu tarafından sağlanan statik/js klasöründe ve "STATIC_ROOT" değişkeninde ("collectstatic" aracılığıyla) bildirilen klasörde. –

cevap

1

Django'nun makemessage'ları, yalnızca TEMPLATE_DIRS'unuzdan birinde bulunan dosyalardan iletiler alır. Yani çevirmek istediğiniz herhangi bir dosyanın bu dizinlerden birinde olması gerekir.

tek bir birkaç yolla yapabilirsiniz: olduğu gibi

  • Yeri * senin TEMPLATE_DIRS birinde .js dosyaları In-astar html dosyalarında sizin JS
  • Yeri bütün dom veri özniteliklerde çevrilmesi gereken ve JS
  • aracılığıyla dom gelen
+0

Evet, şablonlar çalışıyor, ancak çözümünüz bir seçenek değil, çünkü uygulamada bu noktada büyük bir yük oluşturur. –

+0

Başka bir (messier) seçeneği, html dosyalarındaki JS'yi satır içi tutmaktır. –

+0

Sadece çeviri dosyasında yalnızca TEMPLATE_DIRS dosyasında görünen çeviri olduğunu düşünüyorum. Yani js dosyalarınızın çevrilmesini istiyorsanız, TEMPLATE_DIRS dosyanızın birinde bir dosyada olması gerekir. –

0
  1. onları yakala dizeleriçalıştırıyor musunuz JavaScript dosyalarınızı içerenlerin bir dizininden?
  2. JavaScript dosya adlarınız .js ile bitti mi?
  3. Çevirileri gerektiren dizeleri işaretlemek için django.gettext('string') veya _('string') kullanıyor musunuz?
+0

1. Hayır. Görebildiğim kadarıyla, Django sadece geçerli dizinde ("django-admin.py" veya "manage.py" komutunu çalıştırdığınız her yerde) görünür, bu da ideal değildir. Komutu bir seviye daha yüksekte çalıştıramam, çünkü sanalenv'im ve diğer pek çok şeyim var. 2. Evet. 3. 'gettext' kullanıyorum, çünkü dokümanlardaki örneklerin kullanımı bu. JS dir'imden 'manage.py' çalıştırırsam çalışır. –

+0

Örneğini dizin yapınız ile güncelleyebilir misiniz? –

+0

Sadece soru güncellendi. –