programing

__init_.py 파일에 대한 변환을 저장할 로케일 경로를 찾을 수 없습니다.

css3 2023. 8. 13. 09:56

__init_.py 파일에 대한 변환을 저장할 로케일 경로를 찾을 수 없습니다.

저는 장고 앱을 번역하려고 합니다.몇 개의 문자열을 만들었습니다.{% trans %}내 템플릿에서.그러나 앱 폴더에서 다음 명령을 실행하면 오류 메시지가 표시됩니다.

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

제가 무엇을 잘못했나요?

알고 보니 당신은 다음을 만들어야 합니다.locale처음 폴더 사용mkdir locale앱 폴더 내에서 명령을 실행하는 경우에는locale해당 앱 폴더 내의 폴더.

실제로 로케일 폴더의 위치를 구성할 수 있습니다.settings.py 에 다음을 추가합니다.

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

그런 다음 번역할 각 언어에 대한 폴더를 만듭니다.

mkdir -p website/locale/de

문제는 명령이 앱 디렉터리에서 실행되는 것이 아니라 프로젝트 디렉터리에서 실행된다는 것입니다.이 문서의 내용은 다음과 같습니다.

알고 보니 당신은 다음을 만들어야 합니다.locale처음 폴더 사용mkdir locale.

./manage.py makemessages[…] 현재 디렉터리의 전체 원본 트리에서 실행되고 변환을 위해 표시된 모든 문자열을 꺼냅니다.메시지 파일을 Conf/locale(Django 트리) 또는 locale(프로젝트 및 응용 프로그램용) 디렉토리에 생성(또는 업데이트)합니다.

따라서 앱 디렉터리에서 다음 명령을 실행합니다.

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

또는 를 사용하여 프로젝트 전체 로케일 디렉토리를 정의합니다.LOCALE_PATHS그리고 당신은 달릴 수 있습니다.makemessages그 이후로 메인 디렉토리에서.

어느 쪽이든, 당신은 확인해야 합니다../locale/디렉토리가 있으며 다음을 사용하여 디렉토리를 만듭니다.

$ mkdir locale

그렇지 않을 경우에 대비해서요

앱별로 원하는 경우localedirs, 실행하기 전에 번역 문자열(번역 문자열이 있는 파일)이 있는 모든 앱 dir에서 생성하기만 하면 됩니다.makemessages.그리고.django 그들을 찾을 겁니다그럴 필요 없어요.cd.

프로젝트 전체에 걸쳐 하나를 원하는 경우localedir, 실행하기 전에 프로젝트 dir에서 생성합니다.makemessages.

저 같은 경우에는.LOCALE_PATHS올바르게 설정되었지만 환경 변수가 설정되지 않았습니다.환경 변수를 설정했을 때, 저는 실행했습니다.python manage.py makemessages -l de제대로 작동했습니다.

생성해야 합니다.locale바로 아래에 있는 폴더django-project폴더를 아래와 같이 표시합니다.*폴더 이름은 다음과 같아야 합니다.locale내 실험에 따르면:

django-project
 |-core
 |  └-settings.py
 |-app1
 |  |-models.py
 |  └-admin.py
 |-app2
 |  |-models.py
 |  └-admin.py
 └-locale # Here

그런 다음 을 생성할 수 있습니다.django.po각각의locale/<...>/LC_MESSAGES/아래 명령을 사용합니다.*아래 명령은 하나 이상을 만들거나 업데이트할 수 있습니다.django.po:

django-admin makemessages --locale=en --locale=fr --locale=ja

또는:

django-admin.py makemessages -l en -l fr -l ja

그리고나서,django.po각각에서 생성됩니다.locale/<...>/LC_MESSAGES/아래와 같이:

django-project
 |-core
 |  └-settings.py
 |-app1
 |  |-models.py
 |  └-admin.py
 |-app2
 |  |-models.py
 |  └-admin.py
 └-locale
    |-en
    |  └-LC_MESSAGES
    |     └-django.po # Here
    |-fr
    |  └-LC_MESSAGES
    |     └-django.po # Here
    └-ja
       └-LC_MESSAGES
          └-django.po # Here

모두 업데이트할 수 있습니다.django.polocale아래 명령을 사용하는 폴더입니다.*아래 명령을 사용하여 업데이트만 가능합니다.django.po할 수 없습니다.django.po:

django-admin makemessages --all

또는:

django-admin makemessages -a

그리고, 당신은 컴파일할 수 있습니다.django.podjango.mo의 각의에locale/<...>/LC_MESSAGES/다음 명령을 사용합니다.

django-admin compilemessages

그리고나서,django.po는 로컴됩니다일로 됩니다.django.mo의 각의에locale/<...>/LC_MESSAGES/아래와 같이:

django-project
 |-core
 |  └-settings.py
 |-app1
 |  |-models.py
 |  └-admin.py
 |-app2
 |  |-models.py
 |  └-admin.py
 └-locale
    |-en
    |  └-LC_MESSAGES
    |     |-django.po
    |     └-django.mo # Here
    |-fr
    |  └-LC_MESSAGES
    |     |-django.po
    |     └-django.mo # Here
    └-ja
       └-LC_MESSAGES
          |-django.po
          └-django.mo # Here

가로추를 , 이만것도이라든.locale 바로 에 있는 폴더core,app1그리고.app2아래와 같은 폴더:

django-project
 |-core
 |  |-settings.py
 |  └-locale # Here
 |-app1
 |  |-models.py
 |  |-admin.py
 |  └-locale # Here
 └-app2
    |-models.py
    |-admin.py
    └-locale # Here

그런 다음 아래 명령을 실행합니다.

django-admin.py makemessages -l en -l fr -l ja

그러면, 당신은 여전히 아래의 오류를 얻을 것이고 Django가 번역을 검색하는 방법에 반대하여 당신이 만들어야 합니다.locale바로아있폴 바로 에 있는 django-project폴더:

명령 오류:manage.py 파일에 대한 변환을 저장할 로케일 경로를 찾을 수 없습니다.앱에 'locale' 디렉터리가 있는지 확인하거나 LOCAL_PATHs 설정이 설정되어 있는지 확인합니다.

언급URL : https://stackoverflow.com/questions/24937133/unable-to-find-a-locale-path-to-store-translations-for-file-init-py