__İ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.