फ़ाइल __init__.py के अनुवादों को संग्रहीत करने के लिए एक स्थानीय रास्ता खोजने में असमर्थ


106

मैं एक Django ऐप का अनुवाद करने की कोशिश कर रहा हूं। मैंने {% trans %}अपने टेम्प्लेट में कुछ स्ट्रिंग्स बनाईं। हालाँकि, जब मैं अपने ऐप फ़ोल्डर में निम्न कमांड निष्पादित करता हूं, मुझे एक त्रुटि संदेश प्राप्त होता है:

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

मैंने गलत क्या किया?

जवाबों:


157

बाहर मुड़ता है आपको localeपहले एक फ़ोल्डर बनाने की आवश्यकता है mkdir locale। यदि आप किसी ऐप फ़ोल्डर के भीतर से कमांड चला रहे हैं, तो आपको localeउस ऐप फ़ोल्डर के भीतर एक फ़ोल्डर चाहिए ।


धन्यवाद, मेरी मदद की। यदि यह पहले से उपलब्ध है तो बस makemessagesउस localeनिर्देशिका से कमांड निष्पादित करें ।
SaeX

4
Django 1.9 में आपको परिभाषित LOCALE_PATHSकरने की आवश्यकता है भले ही यह localeअन्यथा संकलित पाठ खोज योग्य न हो।
Wtower

ध्यान दें कि यह फ़ोल्डर करता नहीं किसी भी 'एस' है, और है कि यह एप्लिकेशन फ़ोल्डर में होना चाहिए (यदि आप किसी भी नहीं है कि जिस तरह से LOCALE_PATHSकॉन्फ़िगर करने के लिए)
tobiasBora

28

वास्तव में आप कॉन्फ़िगर कर सकते हैं जहां लोकेल फ़ोल्डर है। अपनी सेटिंग्स में जोड़ें:

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

फिर आप जिन भाषाओं का अनुवाद करना चाहते हैं, उनमें से प्रत्येक के लिए एक फ़ोल्डर बनाएँ:

mkdir -p website/locale/de

2
आपको वास्तव में प्रत्येक भाषा के लिए एक फ़ोल्डर बनाने की आवश्यकता नहीं है। django-admin makemessages आपके लिए ऐसा करेगा
MagicLAMP

यह भ्रामक है, क्या हम हर ऐप के लिए एक प्रविष्टि बनाने वाले हैं? या एक ही स्थानीय फ़ोल्डर में सभी ऐप्स के लिए सभी स्थान संग्रहीत करें?
वडोरेक्वेस्ट

12

समस्या यह है कि कमांड ऐप डायरेक्टरी से नहीं बल्कि प्रोजेक्ट डायरेक्टरी से चलाया जाता है। डॉक्स से यह स्निपेट समझाता है:

बाहर मुड़ता है आपको localeपहले एक फ़ोल्डर बनाने की आवश्यकता है mkdir locale

./manage.py makemessages[…] वर्तमान निर्देशिका के पूरे स्रोत पेड़ पर चलता है और अनुवाद के लिए चिह्नित सभी तारों को बाहर निकालता है। यह कन्फ़ेक्शन / लोकेल (Django ट्री में) या लोकेल (प्रोजेक्ट और एप्लिकेशन के लिए) डायरेक्टरी में एक संदेश फ़ाइल (या अपडेट) बनाता है।

तो, आप या तो ऐप डायरेक्टरी से कमांड चलाते हैं:

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

... या आप एक प्रोजेक्ट वाइड लोकल डायरेक्टरी का उपयोग करते हुए परिभाषित करते हैं LOCALE_PATHSऔर आप makemessagesवहां से मुख्य डायरेक्टरी को चला सकते हैं ।

किसी भी तरह से, आपको यह देखना चाहिए कि ./locale/निर्देशिका मौजूद है और इसका उपयोग करके बनाएं

$ mkdir locale

अगर ऐसा नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.