2016-08-22 190 views
2

我試圖在django國際化/本地化。 我得到,而我試圖使用命令Django 1.10翻譯

./manage.py makemessages

從settings.py

import os 

from django.utils.translation import ugettext_lazy as _ 

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 

DEBUG = True 

ALLOWED_HOSTS = [] 

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'polls.apps.PollsConfig' 
] 

MIDDLEWARE = [ 
    'django.middleware.security.SecurityMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.locale.LocaleMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
] 

ROOT_URLCONF = 'sampleproject.urls' 

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
       'django.template.context_processors.i18n' 
      ], 
     }, 
    }, 
] 

WSGI_APPLICATION = 'sampleproject.wsgi.application' 

LANGUAGE_CODE = 'en-us' 

TIME_ZONE = 'UTC' 

USE_I18N = True 

USE_L10N = True 

USE_TZ = True 

LANGUAGES = [ 
    ('fi-FI', _('Finnish')), 
    ('en', _('English')), 
] 

LOCALE_PATHS = [ 
    os.path.join(BASE_DIR, 'locale'), 
] 
相關部分做出 '的.po' 文件錯誤

相關部件從urls.py

urlpatterns += i18n_patterns(
    url(r'^$', home, name='home'), 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^polls/', include('polls.urls')), 
) 

這裏是 追溯。

Traceback (most recent call last): 
    File "./manage.py", line 22, in <module> 
    execute_from_command_line(sys.argv) 
    File "/project/Myapps/for_sample/lib/python3.4/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line 
    utility.execute() 
    File "/project/Myapps/for_sample/lib/python3.4/site-packages/django/core/management/__init__.py", line 359, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/project/Myapps/for_sample/lib/python3.4/site-packages/django/core/management/base.py", line 305, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/project/Myapps/for_sample/lib/python3.4/site-packages/django/core/management/base.py", line 356, in execute 
    output = self.handle(*args, **options) 
    File "/project/Myapps/for_sample/lib/python3.4/site-packages/django/core/management/commands/makemessages.py", line 361, in handle 
    potfiles = self.build_potfiles() 
    File "/project/Myapps/for_sample/lib/python3.4/site-packages/django/core/management/commands/makemessages.py", line 393, in build_potfiles 
    self.process_files(file_list) 
    File "/project/Myapps/for_sample/lib/python3.4/site-packages/django/core/management/commands/makemessages.py", line 488, in process_files 
    self.process_locale_dir(locale_dir, files) 
    File "/project/Myapps/for_sample/lib/python3.4/site-packages/django/core/management/commands/makemessages.py", line 507, in process_locale_dir 
    build_file.preprocess() 
    File "/project/Myapps/for_sample/lib/python3.4/site-packages/django/core/management/commands/makemessages.py", line 113, in preprocess 
    content = templatize(src_data, self.path[2:]) 
    File "/project/Myapps/for_sample/lib/python3.4/site-packages/django/utils/translation/__init__.py", line 214, in templatize 
    return _trans.templatize(src, origin) 
    File "/project/Myapps/for_sample/lib/python3.4/site-packages/django/utils/translation/trans_real.py", line 670, in templatize 
    "%s (%sline %d)" % (t.contents, filemsg, t.lineno) 
SyntaxError: Translation blocks must not include other block tags: blocktrans count var|length as count (file htmlcov/_project_Myapps_for_sample_lib_python3_4_site-packages_django_templatetags_i18n_py.html, line 1073) 

開發設置: Django的1.10 的Python 3.4.5

由於這是我在SO的第一個問題,原諒我,如果有任何錯誤:) 感謝提前:)

+0

什麼是你的'htmlcov/_project_Myapps_for_sample_lib_python3_4_site-packages_django_templatetags_i18n_py.html' HTML模板是什麼樣子?它說錯誤在那裏。 – akarilimano

+0

是的..我剛剛解決了錯誤。提到的那個文件是在我運行coverage.py腳本時生成的。我刪除了html報告,並且錯誤消失了..但在運行./manage.py makemessages命令時再次生成.po文件。 – glider

+0

使用'--keep-pot'選項運行。它「可以防止在創建.po文件之前刪除生成的臨時.pot文件,這對於調試可能會阻止創建最終語言文件的錯誤很有用。」 https://docs.djangoproject.com/en/1.10/ref/django-admin/#makemessages – akarilimano

回答

1

的由於在運行覆蓋腳本時生成的htmlcov文件夾發生錯誤。

刪除該文件夾並執行以下命令來生成'.po'文件。

./manage.py makemessages -l音響

和下面的命令以生成 '的.mo' 文件。

./manage.py compilemessages