Start i18n && l10n.

portnov [2008-06-17 07:57:04]
Start i18n && l10n.
Filename
locale/en/LC_MESSAGES/django.mo
locale/en/LC_MESSAGES/django.po
locale/ru/LC_MESSAGES/django.mo
locale/ru/LC_MESSAGES/django.po
locale/ru/LC_MESSAGES/messages.mo
mgmt/forms.py
mgmt/hms/modules/test1.py
mgmt/locale
mgmt/models.py
mgmt/views.py
run-fastcgi
settings.py
diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..02b8da0
Binary files /dev/null and b/locale/en/LC_MESSAGES/django.mo differ
diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po
new file mode 100644
index 0000000..bebc667
--- /dev/null
+++ b/locale/en/LC_MESSAGES/django.po
@@ -0,0 +1,226 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-06-17 12:19+0600\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: mgmt/models.py:9
+msgid "Name"
+msgstr ""
+
+#: mgmt/models.py:10
+msgid "Text"
+msgstr ""
+
+#: mgmt/models.py:11
+msgid "Created"
+msgstr ""
+
+#: mgmt/models.py:18
+msgid "Repository"
+msgstr ""
+
+#: mgmt/models.py:19
+msgid "Link to Git repo"
+msgstr ""
+
+#: mgmt/models.py:20
+msgid "Admins"
+msgstr ""
+
+#: mgmt/models.py:21
+msgid "Team"
+msgstr ""
+
+#: mgmt/models.py:22
+msgid "Is open"
+msgstr ""
+
+#: mgmt/models.py:26 mgmt/models.py:44
+msgid "Project"
+msgstr ""
+
+#: mgmt/models.py:27
+msgid "Projects"
+msgstr ""
+
+#: mgmt/models.py:37
+msgid "Bug state"
+msgstr ""
+
+#: mgmt/models.py:38
+msgid "Bug states"
+msgstr ""
+
+#: mgmt/models.py:45
+msgid "Author"
+msgstr ""
+
+#: mgmt/models.py:46
+msgid "Confirmed"
+msgstr ""
+
+#: mgmt/models.py:47
+msgid "Responsible"
+msgstr ""
+
+#: mgmt/models.py:56
+msgid "Bug"
+msgstr ""
+
+#: mgmt/models.py:57
+msgid "Bugs"
+msgstr ""
+
+#: mgmt/models.py:105
+msgid "Document"
+msgstr ""
+
+#: mgmt/models.py:106
+msgid "Documents"
+msgstr ""
+
+#: mgmt/models.py:123
+msgid "Comment"
+msgstr ""
+
+#: mgmt/models.py:124
+msgid "Comments"
+msgstr ""
+
+#: mgmt/models.py:133
+msgid "Private message"
+msgstr ""
+
+#: mgmt/models.py:134
+msgid "Private messages"
+msgstr ""
+
+#: templates/registration/logged_out.html:4
+#: templates/registration/password_change_done.html:3
+#: templates/registration/password_change_form.html:3
+#: templates/registration/password_reset_done.html:4
+#: templates/registration/password_reset_form.html:4
+msgid "Home"
+msgstr ""
+
+#: templates/registration/logged_out.html:8
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr ""
+
+#: templates/registration/logged_out.html:10
+msgid "Log in again"
+msgstr ""
+
+#: templates/registration/password_change_done.html:3
+#: templates/registration/password_change_form.html:3
+#: templates/registration/password_change_form.html:5
+#: templates/registration/password_change_form.html:9
+msgid "Password change"
+msgstr ""
+
+#: templates/registration/password_change_done.html:5
+#: templates/registration/password_change_done.html:9
+msgid "Password change successful"
+msgstr ""
+
+#: templates/registration/password_change_done.html:11
+msgid "Your password was changed."
+msgstr ""
+
+#: templates/registration/password_change_form.html:11
+msgid ""
+"Please enter your old password, for security's sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+
+#: templates/registration/password_change_form.html:16
+msgid "Old password:"
+msgstr ""
+
+#: templates/registration/password_change_form.html:18
+msgid "New password:"
+msgstr ""
+
+#: templates/registration/password_change_form.html:20
+msgid "Confirm password:"
+msgstr ""
+
+#: templates/registration/password_change_form.html:22
+msgid "Change my password"
+msgstr ""
+
+#: templates/registration/password_reset_done.html:4
+#: templates/registration/password_reset_form.html:4
+#: templates/registration/password_reset_form.html:6
+#: templates/registration/password_reset_form.html:10
+msgid "Password reset"
+msgstr ""
+
+#: templates/registration/password_reset_done.html:6
+#: templates/registration/password_reset_done.html:10
+msgid "Password reset successful"
+msgstr ""
+
+#: templates/registration/password_reset_done.html:12
+msgid ""
+"We've e-mailed a new password to the e-mail address you submitted. You "
+"should be receiving it shortly."
+msgstr ""
+
+#: templates/registration/password_reset_email.html:2
+msgid "You're receiving this e-mail because you requested a password reset"
+msgstr ""
+
+#: templates/registration/password_reset_email.html:3
+#, python-format
+msgid "for your user account at %(site_name)s"
+msgstr ""
+
+#: templates/registration/password_reset_email.html:5
+#, python-format
+msgid "Your new password is: %(new_password)s"
+msgstr ""
+
+#: templates/registration/password_reset_email.html:7
+msgid "Feel free to change this password by going to this page:"
+msgstr ""
+
+#: templates/registration/password_reset_email.html:11
+msgid "Your username, in case you've forgotten:"
+msgstr ""
+
+#: templates/registration/password_reset_email.html:13
+msgid "Thanks for using our site!"
+msgstr ""
+
+#: templates/registration/password_reset_email.html:15
+#, python-format
+msgid "The %(site_name)s team"
+msgstr ""
+
+#: templates/registration/password_reset_form.html:12
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll reset "
+"your password and e-mail the new one to you."
+msgstr ""
+
+#: templates/registration/password_reset_form.html:16
+msgid "E-mail address:"
+msgstr ""
+
+#: templates/registration/password_reset_form.html:16
+msgid "Reset my password"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/django.mo b/locale/ru/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..ed9da2b
Binary files /dev/null and b/locale/ru/LC_MESSAGES/django.mo differ
diff --git a/locale/ru/LC_MESSAGES/django.po b/locale/ru/LC_MESSAGES/django.po
new file mode 100644
index 0000000..6c7cd70
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/django.po
@@ -0,0 +1,298 @@
+# Translation of django.po to russian.
+# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-06-17 13:53+0600\n"
+"PO-Revision-Date: 2006-09-07 15:28+0300\n"
+"Last-Translator: Vasiliy Stavenko <stavenko@gmail.com>\n"
+"Language-Team: Dialcom Services <greg@dial.com.ru>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Poedit-Language: Russian\n"
+"X-Poedit-Country: RUSSIAN FEDERATION\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: mgmt/models.py:12
+msgid "Name"
+msgstr "Название"
+
+#: mgmt/models.py:13
+msgid "Text"
+msgstr "Текст"
+
+#: mgmt/models.py:14
+msgid "Created"
+msgstr "Создано"
+
+#: mgmt/models.py:21
+msgid "Repository"
+msgstr "Репозиторий"
+
+#: mgmt/models.py:22
+msgid "Link to Git repo"
+msgstr "Ссылка на репозиторий"
+
+#: mgmt/models.py:23
+msgid "Admins"
+msgstr "Администраторы"
+
+#: mgmt/models.py:24
+msgid "Team"
+msgstr "Команда"
+
+#: mgmt/models.py:25
+msgid "Is open"
+msgstr "Открытый"
+
+#: mgmt/models.py:29 mgmt/models.py:47 mgmt/models.py:66
+msgid "Project"
+msgstr "Проект"
+
+#: mgmt/models.py:30
+msgid "Projects"
+msgstr "Проекты"
+
+#: mgmt/models.py:40
+msgid "Bug state"
+msgstr "Состояние бага"
+
+#: mgmt/models.py:41
+msgid "Bug states"
+msgstr "Состояния багов"
+
+#: mgmt/models.py:48 mgmt/models.py:76
+msgid "Author"
+msgstr "Автор"
+
+#: mgmt/models.py:49
+msgid "Confirmed"
+msgstr "Подтвердил"
+
+#: mgmt/models.py:50
+msgid "Responsible"
+msgstr "Ответственный"
+
+#: mgmt/models.py:51 mgmt/models.py:67
+msgid "Status"
+msgstr "Состояние"
+
+#: mgmt/models.py:52
+#, fuzzy
+msgid "Component"
+msgstr "Комментарий"
+
+#: mgmt/models.py:53
+msgid "Your actions"
+msgstr "Ваши действия"
+
+#: mgmt/models.py:54
+msgid "Expected behaivour"
+msgstr "Что вы ожидали"
+
+#: mgmt/models.py:55
+msgid "Unexpected behaivour"
+msgstr "Что вы получили"
+
+#: mgmt/models.py:56
+msgid "Priority"
+msgstr "Приоритет"
+
+#: mgmt/models.py:57
+msgid "Complexity"
+msgstr "Сложность"
+
+#: mgmt/models.py:59
+msgid "Bug"
+msgstr "Баг"
+
+#: mgmt/models.py:60
+msgid "Bugs"
+msgstr "Баги"
+
+#: mgmt/models.py:69
+msgid "Feature request"
+msgstr "Запрос функционала"
+
+#: mgmt/models.py:70
+msgid "Feature requests"
+msgstr "Запросы функционала"
+
+#: mgmt/models.py:77
+msgid "To"
+msgstr "Кому"
+
+#: mgmt/models.py:83
+msgid "Task"
+msgstr "Задание"
+
+#: mgmt/models.py:84
+msgid "Tasks"
+msgstr "Задания"
+
+#: mgmt/models.py:93
+msgid "Report"
+msgstr "Отчет"
+
+#: mgmt/models.py:94
+msgid "Reports"
+msgstr "Отчеты"
+
+#: mgmt/models.py:101
+msgid "Description"
+msgstr "Описание"
+
+#: mgmt/models.py:105
+msgid "Category"
+msgstr "Категория"
+
+#: mgmt/models.py:106
+msgid "Categories"
+msgstr "Категории"
+
+#: mgmt/models.py:116
+msgid "Document"
+msgstr "Документ"
+
+#: mgmt/models.py:117
+msgid "Documents"
+msgstr "Документы"
+
+#: mgmt/models.py:134
+msgid "Comment"
+msgstr "Комментарий"
+
+#: mgmt/models.py:135
+msgid "Comments"
+msgstr "Комментарии"
+
+#: mgmt/models.py:144
+msgid "Private message"
+msgstr "Личное сообщение"
+
+#: mgmt/models.py:145
+msgid "Private messages"
+msgstr "Личные сообщения"
+
+#: templates/registration/logged_out.html:4
+#: templates/registration/password_change_done.html:3
+#: templates/registration/password_change_form.html:3
+#: templates/registration/password_reset_done.html:4
+#: templates/registration/password_reset_form.html:4
+msgid "Home"
+msgstr "Главная"
+
+#: templates/registration/logged_out.html:8
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr ""
+
+#: templates/registration/logged_out.html:10
+msgid "Log in again"
+msgstr "Войти заново"
+
+#: templates/registration/password_change_done.html:3
+#: templates/registration/password_change_form.html:3
+#: templates/registration/password_change_form.html:5
+#: templates/registration/password_change_form.html:9
+msgid "Password change"
+msgstr "Сменить пароль"
+
+#: templates/registration/password_change_done.html:5
+#: templates/registration/password_change_done.html:9
+msgid "Password change successful"
+msgstr ""
+
+#: templates/registration/password_change_done.html:11
+msgid "Your password was changed."
+msgstr ""
+
+#: templates/registration/password_change_form.html:11
+msgid ""
+"Please enter your old password, for security's sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+
+#: templates/registration/password_change_form.html:16
+msgid "Old password:"
+msgstr ""
+
+#: templates/registration/password_change_form.html:18
+msgid "New password:"
+msgstr ""
+
+#: templates/registration/password_change_form.html:20
+msgid "Confirm password:"
+msgstr ""
+
+#: templates/registration/password_change_form.html:22
+msgid "Change my password"
+msgstr ""
+
+#: templates/registration/password_reset_done.html:4
+#: templates/registration/password_reset_form.html:4
+#: templates/registration/password_reset_form.html:6
+#: templates/registration/password_reset_form.html:10
+msgid "Password reset"
+msgstr ""
+
+#: templates/registration/password_reset_done.html:6
+#: templates/registration/password_reset_done.html:10
+msgid "Password reset successful"
+msgstr ""
+
+#: templates/registration/password_reset_done.html:12
+msgid ""
+"We've e-mailed a new password to the e-mail address you submitted. You "
+"should be receiving it shortly."
+msgstr ""
+
+#: templates/registration/password_reset_email.html:2
+msgid "You're receiving this e-mail because you requested a password reset"
+msgstr ""
+
+#: templates/registration/password_reset_email.html:3
+#, python-format
+msgid "for your user account at %(site_name)s"
+msgstr ""
+
+#: templates/registration/password_reset_email.html:5
+#, python-format
+msgid "Your new password is: %(new_password)s"
+msgstr ""
+
+#: templates/registration/password_reset_email.html:7
+msgid "Feel free to change this password by going to this page:"
+msgstr ""
+
+#: templates/registration/password_reset_email.html:11
+msgid "Your username, in case you've forgotten:"
+msgstr ""
+
+#: templates/registration/password_reset_email.html:13
+msgid "Thanks for using our site!"
+msgstr ""
+
+#: templates/registration/password_reset_email.html:15
+#, python-format
+msgid "The %(site_name)s team"
+msgstr ""
+
+#: templates/registration/password_reset_form.html:12
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll reset "
+"your password and e-mail the new one to you."
+msgstr ""
+
+#: templates/registration/password_reset_form.html:16
+msgid "E-mail address:"
+msgstr ""
+
+#: templates/registration/password_reset_form.html:16
+msgid "Reset my password"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/messages.mo b/locale/ru/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..d11b95d
Binary files /dev/null and b/locale/ru/LC_MESSAGES/messages.mo differ
diff --git a/mgmt/forms.py b/mgmt/forms.py
index 78f4411..d94fa50 100644
--- a/mgmt/forms.py
+++ b/mgmt/forms.py
@@ -10,19 +10,19 @@ from models import *
 ############

 class CommentForm(forms.Form):
-  title = forms.CharField(required=False,label=u'Тема')
-  text = forms.CharField(widget=forms.Textarea(),label=u'Текст')
+  title = forms.CharField(required=False)
+  text = forms.CharField(widget=forms.Textarea())

 class BugForm(forms.ModelForm):
-  name = forms.CharField(label=u'Название')
-  component = forms.CharField(required=False,label=u'Компонент')
-  actions = forms.CharField(widget=forms.Textarea(),label=u'Ваши действия')
-  expected = forms.CharField(widget=forms.Textarea(),label=u'Что ожидали получить')
-  unexpected = forms.CharField(widget=forms.Textarea(),label=u'Что получили')
-  text = forms.CharField(widget=forms.Textarea(),label=u'Дополнения')
+  name = forms.CharField()
+  component = forms.CharField(required=False)
+  actions = forms.CharField(widget=forms.Textarea())
+  expected = forms.CharField(widget=forms.Textarea())
+  unexpected = forms.CharField(widget=forms.Textarea())
+  text = forms.CharField(widget=forms.Textarea())
   class Meta:
     model = Bug
-    exclude = ("created","author",'project','confirmed','responsible','status','fixed')
+    exclude = ("created","author",'project','confirmed','responsible','status','fixed','complexity','priority')

 class BugPriorityForm(forms.Form):
   priority = forms.ChoiceField(settings.PRIORITY_CHOICES,required=False)
@@ -31,8 +31,8 @@ class BugComplexityForm(forms.Form):
   complexity = forms.ChoiceField(settings.COMPLEXITY_CHOICES,required=False)

 class RequestForm(forms.Form):
-  title = forms.CharField(label=u'Название')
-  text  = forms.CharField(widget=forms.Textarea(),label=u'Текст')
+  title = forms.CharField()
+  text  = forms.CharField(widget=forms.Textarea())

 class RequestStateForm(forms.Form):
   state = forms.ChoiceField(settings.REQUEST_STATES)
diff --git a/mgmt/hms/modules/test1.py b/mgmt/hms/modules/test1.py
index dccef22..caecc35 100644
--- a/mgmt/hms/modules/test1.py
+++ b/mgmt/hms/modules/test1.py
@@ -1,6 +1,5 @@

 def init():
-  print "Module <Test> imported."

   @intercept('do_something')
   def func(s):
diff --git a/mgmt/locale b/mgmt/locale
new file mode 120000
index 0000000..4b9e6ce
--- /dev/null
+++ b/mgmt/locale
@@ -0,0 +1 @@
+/home/portnov/www/projects/locale
\ No newline at end of file
diff --git a/mgmt/models.py b/mgmt/models.py
index d431936..d6bb129 100644
--- a/mgmt/models.py
+++ b/mgmt/models.py
@@ -1,25 +1,28 @@
 from os.path import dirname

 from django.db import models
+from django.conf import settings
 from django.contrib.auth.models import User
-# from django.utils.translation import gettext as _
-_ = lambda s: s
+from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import activate
+activate(settings.LANGUAGE_CODE)
+# _ = lambda s: s

 class Object(models.Model):
-  name = models.CharField(max_length=64)
-  text = models.TextField()
-  created = models.DateTimeField()
+  name = models.CharField(_("Name"),max_length=64)
+  text = models.TextField(_("Text"))
+  created = models.DateTimeField(_("Created"))
   class Meta:
     abstract = True
   def __unicode__(self):
     return self.name

 class Project(Object):
-  repo = models.CharField(max_length=64)
-  git_link = models.CharField(max_length=32,null=True)
-  admins = models.ManyToManyField(User,related_name='admin_projects')
-  team = models.ManyToManyField(User,related_name='in_projects')
-  open = models.BooleanField()
+  repo = models.CharField(_("Repository"),max_length=64)
+  git_link = models.CharField(_("Link to Git repo"), max_length=32,null=True)
+  admins = models.ManyToManyField(User,related_name='admin_projects',verbose_name=_("Admins"))
+  team = models.ManyToManyField(User,related_name='in_projects',verbose_name=_("Team"))
+  open = models.BooleanField(_("Is open"))
   def __unicode__(self):
     return self.name
   class Meta:
@@ -34,47 +37,51 @@ class BugState(models.Model):
   def __unicode__(self):
     return self.name
   class Meta:
-    verbose_name = _("Bug state")
-    verbose_name_plural = _("Bug states")
+    verbose_name = _(u"Bug state")
+    verbose_name_plural = _(u"Bug states")
   class Admin:
     pass

 class Bug(Object):
   fixed = models.DateTimeField(null=True)
-  project = models.ForeignKey(Project)
-  author = models.ForeignKey(User,related_name='created_bugs')
-  confirmed = models.ForeignKey(User,related_name='confirmed_bugs',null=True)
-  responsible = models.ForeignKey(User,related_name='resp_bugs',null=True)
-  status = models.ForeignKey(BugState)
-  component = models.CharField(max_length=64,null=True)
-  actions = models.TextField()
-  expected = models.TextField()
-  unexpected = models.TextField()
-  priority = models.SmallIntegerField(null=True)
-  complexity = models.SmallIntegerField(null=True)
+  project = models.ForeignKey(Project,verbose_name=_("Project"))
+  author = models.ForeignKey(User,related_name='created_bugs',verbose_name=_("Author"))
+  confirmed = models.ForeignKey(User,related_name='confirmed_bugs',null=True,verbose_name=_("Confirmed"))
+  responsible = models.ForeignKey(User,related_name='resp_bugs',null=True,verbose_name=_("Responsible"))
+  status = models.ForeignKey(BugState,verbose_name=_("Status"))
+  component = models.CharField(_("Component"),max_length=64,null=True)
+  actions = models.TextField(_("Your actions"))
+  expected = models.TextField(_("Expected behaivour"))
+  unexpected = models.TextField(_("Unexpected behaivour"))
+  priority = models.SmallIntegerField(_("Priority"),null=True)
+  complexity = models.SmallIntegerField(_("Complexity"),null=True)
   class Meta:
-    verbose_name = _("Bug")
-    verbose_name_plural = _("Bugs")
+    verbose_name = _(u"Bug")
+    verbose_name_plural = _(u"Bugs")
     ordering = ("-priority","complexity","-created")
   class Admin:
     pass

 class Request(Object):
-  project = models.ForeignKey(Project)
-  status = models.SmallIntegerField()
+  project = models.ForeignKey(Project,verbose_name=_("Project"))
+  status = models.SmallIntegerField(_("Status"))
   class Meta:
+    verbose_name = _("Feature request")
+    verbose_name_plural = _("Feature requests")
     ordering = ("-created",)
   class Admin:
     pass

 class Task(Object):
-  author = models.ForeignKey(User,related_name='created_tasks')
-  to = models.ForeignKey(User)
+  author = models.ForeignKey(User,related_name='created_tasks',verbose_name=_("Author"))
+  to = models.ForeignKey(User,verbose_name=_("To"))
   project = models.ForeignKey(Project)
   bug = models.ForeignKey(Bug,null=True)
   request = models.ForeignKey(Request,null=True)
   status = models.SmallIntegerField()
   class Meta:
+    verbose_name = _("Task")
+    verbose_name_plural = _("Tasks")
     ordering = ("-created",)
   class Admin:
     pass
@@ -83,16 +90,20 @@ class Report(Object):
   author = models.ForeignKey(User)
   task = models.ForeignKey(Task)
   class Meta:
+    verbose_name = _("Report")
+    verbose_name_plural = _("Reports")
     ordering = ("-created",)
   class Admin:
     pass

 class Category(models.Model):
   title = models.CharField(max_length=64)
-  description = models.TextField()
+  description = models.TextField(_("Description"))
   def __unicode__(self):
     return self.title
   class Meta:
+    verbose_name = _("Category")
+    verbose_name_plural = _("Categories")
     ordering = ("title",)
   class Admin:
     pass
diff --git a/mgmt/views.py b/mgmt/views.py
index 4e67684..0693843 100644
--- a/mgmt/views.py
+++ b/mgmt/views.py
@@ -8,6 +8,8 @@ from django.contrib.auth.models import User
 from django.core.urlresolvers import reverse

 from django.conf import settings
+from django.utils.translation import activate
+activate(settings.LANGUAGE_CODE)

 import debug
 from models import *
diff --git a/run-fastcgi b/run-fastcgi
index 885bce2..3b7e148 100755
--- a/run-fastcgi
+++ b/run-fastcgi
@@ -11,7 +11,6 @@ if [ -f $PIDFILE ]; then
     rm -f -- $PIDFILE
 fi

-exec /usr/bin/env - \
-  PYTHONPATH="../python:.." \
-  ./manage.py runfcgi outlog="$PROJDIR/fcgi-out.log" errlog="$PROJDIR/fcgi-err.log" method=prefork socket=$SOCKET pidfile=$PIDFILE
+export PYTHONPATH="/home/portnov/www:/home/portnov/www/projects"
+exec ./manage.py runfcgi outlog="$PROJDIR/fcgi-out.log" errlog="$PROJDIR/fcgi-err.log" socket=$SOCKET pidfile=$PIDFILE

diff --git a/settings.py b/settings.py
index a672f31..b813db6 100644
--- a/settings.py
+++ b/settings.py
@@ -3,7 +3,6 @@

 DEBUG = True
 TEMPLATE_DEBUG = DEBUG
-USE_I18N = True

 ADMINS = (
     # ('Your Name', 'your_email@domain.com'),
@@ -27,8 +26,9 @@ TIME_ZONE = 'Asia/Yekaterinburg'
 # Language code for this installation. All choices can be found here:
 # http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes
 # http://blogs.law.harvard.edu/tech/stories/storyReader$15
-LANGUAGE_CODE = 'ru'
-LANGUAGES = ('ru','Russian')
+LANGUAGE_CODE = 'ru-ru'
+LANGUAGES = (('ru','Russian'),)
+USE_I18N = True

 SITE_ID = 1

@@ -40,6 +40,8 @@ MEDIA_ROOT = ''
 # Example: "http://media.lawrence.com"
 MEDIA_URL = ''

+LOCALE_PATHS = ()
+
 # URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
 # trailing slash.
 # Examples: "http://foo.com/media/", "/media/".
@@ -60,6 +62,7 @@ MIDDLEWARE_CLASSES = (
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.middleware.doc.XViewMiddleware',
+    'django.middleware.locale.LocaleMiddleware',
 )

 ROOT_URLCONF = 'projects.urls'
@@ -69,7 +72,6 @@ TEMPLATE_CONTEXT_PROCESSORS = (
   "django.core.context_processors.debug",
   "django.core.context_processors.i18n",
   "django.core.context_processors.media",
-  'mgmt.context.add_blocks',
 )

 TEMPLATE_DIRS = (
@@ -84,7 +86,7 @@ INSTALLED_APPS = (
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.sites',
-    'projects.mgmt',
+    'mgmt',
 )

 SHOW_BLOCKS = dict(
ViewGit