__İnit__.py dosyası için çevirileri depolamak için bir yerel ayar yolu bulunamadı


106

Bir Django uygulamasını çevirmeye çalışıyorum. {% trans %}Şablonlarımda bazı dizeler oluşturdum . Ancak uygulama klasörümde aşağıdaki komutu çalıştırdığımda bir hata mesajı alıyorum:

$ django-admin.py makemessages -l fr 
CommandError: Unable to find a locale path to store translations for file __init__.py`

Neyi yanlış yaptım?

Yanıtlar:


157

localeÖnce kullanarak bir klasör oluşturmanız gerektiği ortaya çıktı mkdir locale. Komutu bir uygulama klasöründen çalıştırıyorsanız, localeo uygulama klasörü içinde bir klasöre ihtiyacınız vardır .


Teşekkürler yardım ettim. Zaten mevcutsa makemessageskomutu o dizinden çalıştırın locale.
SaeX

4
Django 1.9'da tanımlamanız LOCALE_PATHSgerekir, localeaksi halde derlenen metin keşfedilemez.
Wtower

Bu klasör olmadığını Not değil herhangi bir 's' var ve (yolu hiç yok o uygulama klasöründe olması gerektiğini LOCALE_PATHSconfigure)
tobiasBora

28

Aslında yerel klasörün nerede olduğunu yapılandırabilirsiniz. Settings.py içinde şunu ekleyin:

LOCALE_PATHS = (
    PROJECT_ROOT + '/website/locale', )

Ardından, çevirmek istediğiniz her dil için bir klasör oluşturun:

mkdir -p website/locale/de

2
aslında her dil için bir klasör oluşturmanız gerekmez. django-admin makemessages bunu sizin için yapacak
MagicLAMP

Bu kafa karıştırıcı, her uygulama için bir giriş oluşturmamız mı gerekiyor? Veya tüm uygulamalar için tüm yerel ayarları aynı yerel klasörde depolamak mı?
Vadorequest

12

Sorun, komutun uygulama dizininden değil proje dizininden çalıştırılmasıdır. Dokümanlardaki bu pasaj bunu açıklıyor:

localeİlk olarak kullanarak bir klasör oluşturmanız gerektiği ortaya çıktı mkdir locale.

./manage.py makemessages[…] Geçerli dizinin tüm kaynak ağacını çalıştırır ve çeviri için işaretlenmiş tüm dizeleri çıkarır. Conf / locale (Django ağacında) veya locale (proje ve uygulama için) dizininde bir mesaj dosyası oluşturur (veya günceller).

Yani, komutu uygulama dizininden çalıştırırsınız:

$ cd app
$ django-admin makemessages -l <locale>

… Veya kullanarak proje çapında bir yerel dizin tanımlarsınız LOCALE_PATHSve makemessagesburadan sonra ana dizinden çalıştırabilirsiniz .

Her iki durumda da ./locale/dizinin mevcut olup olmadığını kontrol etmeli ve bunu kullanarak oluşturmalısınız.

$ mkdir locale

olmaması durumunda.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.